
/* This file was automatically generated by pclu.*/

#include "pclu_err.h"
#include "pclu_sys.h"


/**** BEGIN CLUSTER file_name ****/

extern errcode intOPgt();
extern errcode stringOPindexc();
extern errcode intOPadd();
extern errcode boolOPnot();
extern errcode charOPequal();
extern errcode stringOPfetch();
extern errcode intOPequal();
extern errcode _fixup_dir_part();
extern errcode _last_indexc();
extern errcode stringOPsubstr();
extern errcode intOPsub();
extern errcode stringOPrest();
extern errcode _split_name_part();
extern errcode recordOPget_1();
extern errcode stringOPempty();
extern errcode stringOPequal();
extern errcode stringOPappend();
extern errcode stringOPconcat();
extern errcode recordOPget_2();
extern errcode recordOPget_4();
extern errcode recordOPget_3();
extern errcode recordOPcopy1();
extern errcode recordOPset_4();
extern errcode recordOPset_2();
extern errcode intOPunparse();
extern errcode _get_pid();
extern errcode file_nameOPcreate();
extern errcode _dir_ent_size();
extern errcode stringOPsize();
extern errcode recordOPsimilar();
extern errcode pstreamOPtext();
extern errcode pstreamOPtextc();
extern errcode stringOPencode();
extern errcode file_nameOPunparse();
extern errcode file_nameOPparse();
extern errcode stringOPdecode();
extern errcode recordOP_gcd();
extern struct OPS *string_ops;
struct OPS  *record_dir_name_other_suffix_ops;
CLUREF STR_;
CLUREF STR__057;
CLUREF STR_output;
CLUREF STR__137;
CLUREF STR_bad_040format;
static int file_name_own_init = 0;
OWN_req file_name_ownreqs = {0,0};
errcode file_name_own_init_proc()
{
    errcode err;
    enter_own_init_proc();
        if (file_name_own_init == 0) {
        add_selector_info("dir", 0, string_ops); 
        add_selector_info("name", 1, string_ops); 
        add_selector_info("other", 2, string_ops); 
        add_selector_info("suffix", 3, string_ops); 
        find_selector_ops("record", 4, &(record_dir_name_other_suffix_ops));
        stringOPcons("", CLU_1, CLU_0, &STR_);
        stringOPcons("/", CLU_1, CLU_1, &STR__057);
        stringOPcons("output", CLU_1, CLU_6, &STR_output);
        stringOPcons("_", CLU_1, CLU_1, &STR__137);
        stringOPcons("bad format", CLU_1, CLU_10, &STR_bad_040format);
        file_name_own_init = 1;
        {signal(ERR_ok);}
    ex_0: pclu_unhandled(err); {signal(ERR_failure);}
        }
    }


/**** BEGIN PROCEDURE create ****/

errcode file_nameOPcreate(dir, name, suffix, other, ret_1)
CLUREF dir;
CLUREF name;
CLUREF suffix;
CLUREF other;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
    CLUREF i;
        if (file_name_own_init == 0) {
            err = file_name_own_init_proc();
            if (err != ERR_ok) goto ex_0;
            }
    enter_proc(28);

  LINE(30);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    CLUREF T_1_3;
    CLUREF T_1_4;
    CLUREF T_1_5;
    CLUREF T_1_6;
    CLUREF T_1_7;
    CLUREF T_1_8;
    CLUREF T_1_9;
    CLUREF T_1_10;
    CLUREF T_1_11;
    CLUREF T_1_12;
    CLUREF T_1_13;
    CLUREF T_1_14;
    CLUREF T_1_15;
    CLUREF T_1_16;
    CLUREF T_1_17;
    CLUREF T_1_18;
    CLUREF T_1_19;
    CLUREF T_1_20;
    CLUREF T_1_21;
    CLUREF T_1_22;
    CLUREF T_1_23;
    CLUREF T_1_24;
    CLUREF T_1_25;
    CLUREF T_1_26;
    CLUREF T_1_27;
    T_1_7.ch = '\000';
    err = stringOPindexc(T_1_7, dir, &T_1_8);
    if (err != ERR_ok) goto ex_0;
    T_1_9.num = (T_1_8.num > 0)? true : false;
    T_1_6.num = T_1_9.num;
    if (!T_1_9.num) {
        T_1_10.ch = '/';
        err = stringOPindexc(T_1_10, name, &T_1_11);
        if (err != ERR_ok) goto ex_0;
        T_1_12.num = (T_1_11.num > 0)? true : false;
        T_1_6.num = T_1_12.num;
    }
    T_1_5.num = T_1_6.num;
    if (!T_1_6.num) {
        T_1_13.ch = '\000';
        err = stringOPindexc(T_1_13, name, &T_1_14);
        if (err != ERR_ok) goto ex_0;
        T_1_15.num = (T_1_14.num > 0)? true : false;
        T_1_5.num = T_1_15.num;
    }
    T_1_4.num = T_1_5.num;
    if (!T_1_5.num) {
        T_1_16.ch = '/';
        err = stringOPindexc(T_1_16, suffix, &T_1_17);
        if (err != ERR_ok) goto ex_0;
        T_1_18.num = (T_1_17.num > 0)? true : false;
        T_1_4.num = T_1_18.num;
    }
    T_1_3.num = T_1_4.num;
    if (!T_1_4.num) {
        T_1_19.ch = '\000';
        err = stringOPindexc(T_1_19, suffix, &T_1_20);
        if (err != ERR_ok) goto ex_0;
        T_1_21.num = (T_1_20.num > 0)? true : false;
        T_1_3.num = T_1_21.num;
    }
    T_1_2.num = T_1_3.num;
    if (!T_1_3.num) {
        T_1_22.ch = '/';
        err = stringOPindexc(T_1_22, other, &T_1_23);
        if (err != ERR_ok) goto ex_0;
        T_1_24.num = (T_1_23.num > 0)? true : false;
        T_1_2.num = T_1_24.num;
    }
    T_1_1.num = T_1_2.num;
    if (!T_1_2.num) {
        T_1_25.ch = '\000';
        err = stringOPindexc(T_1_25, other, &T_1_26);
        if (err != ERR_ok) goto ex_0;
        T_1_27.num = (T_1_26.num > 0)? true : false;
        T_1_1.num = T_1_27.num;
    }
    if (T_1_1.num == true) {

  LINE(37);
        {
        {signal (ERR_bad_format);}}
        }
        }/* end if */

  LINE(38);
    {
        {CLUREF T_1_1;
        CLUREF T_1_2;
        T_1_1.ch = '.';
        err = stringOPindexc(T_1_1, name, &T_1_2);
        if (err != ERR_ok) goto ex_0;
        i.num = T_1_2.num;
        }
        }

  LINE(39);
    {
    CLUREF T_2_1;
    T_2_1.num = (i.num > 0)? true : false;
    if (T_2_1.num == true) {

  LINE(40);
        for (;;) {
            if (true != true) { break; }

  LINE(41);
            {
            CLUREF T_4_1;
            T_4_1.num = i.num + 1;
             if ((T_4_1.num > 0 && i.num < 0 && 1 < 0) || 
                 (T_4_1.num < 0 && i.num > 0 && 1 > 0)) {
                err = ERR_overflow;
                goto ex_1;}
            i.num = T_4_1.num;
            }

  LINE(42);
            {
            CLUREF T_4_1;
            CLUREF T_4_2;
            CLUREF T_4_3;
            CLUREF T_4_4;
            err = stringOPfetch(name, i, &T_4_1);
            if (err != ERR_ok) goto ex_1;
            T_4_2.ch = '.';
            T_4_3.num = (T_4_1.ch == T_4_2.ch)? true : false;
            T_4_4.num = T_4_3.num ^ 1;
            if (T_4_4.num == true) {

  LINE(43);
                {
                {signal (ERR_bad_format);}}
                }
                }/* end if */
            }
            end_while_1:;
        }
        }/* end if */
        goto end_1;
        ex_1:
            if ((err == ERR_bounds)) {
            }
            else {
                goto ex_0;
            }
        end_1:;

  LINE(46);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    T_1_1.ch = '.';
    err = stringOPindexc(T_1_1, suffix, &T_1_2);
    if (err != ERR_ok) goto ex_0;
    i.num = T_1_2.num;
    }

  LINE(47);
    {
    CLUREF T_2_1;
    T_2_1.num = (i.num > 0)? true : false;
    if (T_2_1.num == true) {

  LINE(48);
        {
        CLUREF T_3_1;
        T_3_1.num = (i.num == 1)? true : false;
        if (T_3_1.num == true) {

  LINE(49);
            {
            {signal (ERR_bad_format);}}
            }
            }/* end if */

  LINE(50);
        for (;;) {
            if (true != true) { break; }

  LINE(51);
            {
            CLUREF T_4_1;
            T_4_1.num = i.num + 1;
             if ((T_4_1.num > 0 && i.num < 0 && 1 < 0) || 
                 (T_4_1.num < 0 && i.num > 0 && 1 > 0)) {
                err = ERR_overflow;
                goto ex_2;}
            i.num = T_4_1.num;
            }

  LINE(52);
            {
            CLUREF T_4_1;
            CLUREF T_4_2;
            CLUREF T_4_3;
            CLUREF T_4_4;
            err = stringOPfetch(suffix, i, &T_4_1);
            if (err != ERR_ok) goto ex_2;
            T_4_2.ch = '.';
            T_4_3.num = (T_4_1.ch == T_4_2.ch)? true : false;
            T_4_4.num = T_4_3.num ^ 1;
            if (T_4_4.num == true) {

  LINE(53);
                {
                {signal (ERR_bad_format);}}
                }
                }/* end if */
            }
            end_while_2:;
        }
        }/* end if */
        goto end_2;
        ex_2:
            if ((err == ERR_bounds)) {
            }
            else {
                goto ex_0;
            }
        end_2:;

  LINE(63);
    {
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    RecordAlloc(4, T_1_1);
    err = _fixup_dir_part(dir, &T_1_2);
    if (err != ERR_ok) goto ex_0;
    T_1_1.vec->data[0]  = T_1_2.num;
    T_1_1.vec->data[1]  = name.num;
    T_1_1.vec->data[3]  = suffix.num;
    T_1_1.vec->data[2]  = other.num;
    ret_1->num = T_1_1.num;
    }
    {signal (ERR_ok);}}
    goto end_0;
    ex_0:
        {
            if (err == ERR_failure) {signal(ERR_failure);}
            elist[0] = _pclu_erstr(err);
            {signal(ERR_failure);}
        }
    end_0: elist[0].str = no_return_values_STRING;
        {signal(ERR_failure);}
    }

/**** END PROCEDURE create ****/

static int file_nameOPparse_own_init = 0;

/**** BEGIN PROCEDURE parse ****/

errcode file_nameOPparse(s, ret_1)
CLUREF s;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
    CLUREF i;
    CLUREF dir;
    CLUREF name;
    CLUREF suffix;
        if (file_nameOPparse_own_init == 0) {
        if (file_name_own_init == 0) {
            err = file_name_own_init_proc();
            if (err != ERR_ok) goto ex_0;
            }
        file_nameOPparse_own_init = 1;
    }
    enter_proc(69);

  LINE(70);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    CLUREF T_1_3;
    T_1_1.ch = '\000';
    err = stringOPindexc(T_1_1, s, &T_1_2);
    if (err != ERR_ok) goto ex_0;
    T_1_3.num = (T_1_2.num > 0)? true : false;
    if (T_1_3.num == true) {

  LINE(71);
        {
        {signal (ERR_bad_format);}}
        }
        }/* end if */

  LINE(72);
    {
        {CLUREF T_1_1;
        CLUREF T_1_2;
        T_1_1.ch = '/';
        err = _last_indexc(T_1_1, s, &T_1_2);
        if (err != ERR_ok) goto ex_0;
        i.num = T_1_2.num;
        }
        }

  LINE(74);
    {
    CLUREF T_1_1;
    T_1_1.num = (i.num == 0)? true : false;
    if (T_1_1.num == true) {

  LINE(75);
        {
        dir = STR_;
        }
        }
    else {

  LINE(76);
        {
        CLUREF T_2_1;
        T_2_1.num = (i.num == 1)? true : false;
        if (T_2_1.num == true) {

  LINE(77);
            {
            dir = STR__057;
            }
            }
        else {

  LINE(78);
            {
            CLUREF T_3_1;
            CLUREF T_3_2;
            CLUREF T_3_3;
            T_3_1.num = i.num - 1;
             if ((T_3_1.num >= 0 && i.num < 0 && (-1) < 0) || 
                 (T_3_1.num <= 0 && i.num > 0 && (-1) > 0)) {
                err = ERR_overflow;
                goto ex_0;}
            err = stringOPsubstr(s, CLU_1, T_3_1, &T_3_2);
            if (err != ERR_ok) goto ex_0;
            err = _fixup_dir_part(T_3_2, &T_3_3);
            if (err != ERR_ok) goto ex_0;
            dir.num = T_3_3.num;
            }
            }}/* end if */

  LINE(80);
        {
        CLUREF T_2_1;
        CLUREF T_2_2;
        T_2_1.num = i.num + 1;
         if ((T_2_1.num > 0 && i.num < 0 && 1 < 0) || 
             (T_2_1.num < 0 && i.num > 0 && 1 > 0)) {
            err = ERR_overflow;
            goto ex_0;}
        err = stringOPrest(s, T_2_1, &T_2_2);
        if (err != ERR_ok) goto ex_0;
        s.num = T_2_2.num;
        }
        }}/* end if */

  LINE(82);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    CLUREF T_1_3;
    err = _split_name_part(s, &T_1_1, &T_1_2, &T_1_3);
    if (err != ERR_ok) goto ex_0;
    name.num = T_1_1.num;
    suffix.num = T_1_2.num;
    s.num = T_1_3.num;
    }

  LINE(83);
    {
    {
    CLUREF T_1_1;
    RecordAlloc(4, T_1_1);
    T_1_1.vec->data[0]  = dir.num;
    T_1_1.vec->data[1]  = name.num;
    T_1_1.vec->data[3]  = suffix.num;
    T_1_1.vec->data[2]  = s.num;
    ret_1->num = T_1_1.num;
    }
    {signal (ERR_ok);}}
    goto end_0;
    ex_0:
        {
            if (err == ERR_failure) {signal(ERR_failure);}
            elist[0] = _pclu_erstr(err);
            {signal(ERR_failure);}
        }
    end_0: elist[0].str = no_return_values_STRING;
        {signal(ERR_failure);}
    }

/**** END PROCEDURE parse ****/

static int file_nameOPunparse_own_init = 0;

/**** BEGIN PROCEDURE unparse ****/

errcode file_nameOPunparse(x, ret_1)
CLUREF x;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
    CLUREF s;
        if (file_nameOPunparse_own_init == 0) {
        if (file_name_own_init == 0) {
            err = file_name_own_init_proc();
            if (err != ERR_ok) goto ex_0;
            }
        file_nameOPunparse_own_init = 1;
    }
    enter_proc(89);

  LINE(90);
    {
        {CLUREF T_1_1;
        T_1_1.num = x.vec->data[0];
        s.num = T_1_1.num;
        }
        }

  LINE(91);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    CLUREF T_1_3;
    CLUREF T_1_4;
    CLUREF T_1_5;
    err = stringOPempty(s, &T_1_2);
    if (err != ERR_ok) goto ex_0;
    T_1_3.num = T_1_2.num ^ 1;
    T_1_1.num = T_1_3.num;
    if (T_1_3.num) {
        T_1_4.num = ((s.str->size != STR__057.str->size)? false :
            !(bcmp(s.str->data, STR__057.str->data, s.str->size)));
        T_1_5.num = T_1_4.num ^ 1;
        T_1_1.num = T_1_5.num;
    }
    if (T_1_1.num == true) {

  LINE(92);
        {
        CLUREF T_2_1;
        CLUREF T_2_2;
        T_2_1.ch = '/';
        err = stringOPappend(s, T_2_1, &T_2_2);
        if (err != ERR_ok) goto ex_0;
        s.num = T_2_2.num;
        }
        }
        }/* end if */

  LINE(93);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    T_1_1.num = x.vec->data[1];
    err = stringOPconcat(s, T_1_1, &T_1_2);
    if (err != ERR_ok) goto ex_0;
    s.num = T_1_2.num;
    }

  LINE(94);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    CLUREF T_1_3;
    CLUREF T_1_4;
    CLUREF T_1_5;
    CLUREF T_1_6;
    CLUREF T_1_7;
    T_1_2.num = x.vec->data[3];
    err = stringOPempty(T_1_2, &T_1_3);
    if (err != ERR_ok) goto ex_0;
    T_1_4.num = T_1_3.num ^ 1;
    T_1_1.num = T_1_4.num;
    if (!T_1_4.num) {
        T_1_5.num = x.vec->data[2];
        err = stringOPempty(T_1_5, &T_1_6);
        if (err != ERR_ok) goto ex_0;
        T_1_7.num = T_1_6.num ^ 1;
        T_1_1.num = T_1_7.num;
    }
    if (T_1_1.num == true) {

  LINE(95);
        {
        CLUREF T_2_1;
        CLUREF T_2_2;
        CLUREF T_2_3;
        CLUREF T_2_4;
        T_2_1.ch = '.';
        err = stringOPappend(s, T_2_1, &T_2_2);
        if (err != ERR_ok) goto ex_0;
        T_2_3.num = x.vec->data[3];
        err = stringOPconcat(T_2_2, T_2_3, &T_2_4);
        if (err != ERR_ok) goto ex_0;
        s.num = T_2_4.num;
        }
        }
        }/* end if */

  LINE(96);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    CLUREF T_1_3;
    T_1_1.num = x.vec->data[2];
    err = stringOPempty(T_1_1, &T_1_2);
    if (err != ERR_ok) goto ex_0;
    T_1_3.num = T_1_2.num ^ 1;
    if (T_1_3.num == true) {

  LINE(97);
        {
        CLUREF T_2_1;
        CLUREF T_2_2;
        CLUREF T_2_3;
        CLUREF T_2_4;
        T_2_1.ch = '.';
        err = stringOPappend(s, T_2_1, &T_2_2);
        if (err != ERR_ok) goto ex_0;
        T_2_3.num = x.vec->data[2];
        err = stringOPconcat(T_2_2, T_2_3, &T_2_4);
        if (err != ERR_ok) goto ex_0;
        s.num = T_2_4.num;
        }
        }
        }/* end if */

  LINE(98);
    {
    {
    ret_1->num = s.num;
    }
    {signal (ERR_ok);}}
    goto end_0;
    ex_0:
        {
            if (err == ERR_failure) {signal(ERR_failure);}
            elist[0] = _pclu_erstr(err);
            {signal(ERR_failure);}
        }
    end_0: elist[0].str = no_return_values_STRING;
        {signal(ERR_failure);}
    }

/**** END PROCEDURE unparse ****/


/**** BEGIN PROCEDURE get_dir ****/

errcode file_nameOPget_dir(x, ret_1)
CLUREF x;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
        if (file_name_own_init == 0) {
            err = file_name_own_init_proc();
            if (err != ERR_ok) goto ex_0;
            }
    enter_proc(101);

  LINE(102);
    {
    {
    CLUREF T_1_1;
    T_1_1.num = x.vec->data[0];
    ret_1->num = T_1_1.num;
    }
    {signal (ERR_ok);}}
    goto end_0;
    ex_0:
        {
            if (err == ERR_failure) {signal(ERR_failure);}
            elist[0] = _pclu_erstr(err);
            {signal(ERR_failure);}
        }
    end_0: elist[0].str = no_return_values_STRING;
        {signal(ERR_failure);}
    }

/**** END PROCEDURE get_dir ****/


/**** BEGIN PROCEDURE get_name ****/

errcode file_nameOPget_name(x, ret_1)
CLUREF x;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
        if (file_name_own_init == 0) {
            err = file_name_own_init_proc();
            if (err != ERR_ok) goto ex_0;
            }
    enter_proc(105);

  LINE(106);
    {
    {
    CLUREF T_1_1;
    T_1_1.num = x.vec->data[1];
    ret_1->num = T_1_1.num;
    }
    {signal (ERR_ok);}}
    goto end_0;
    ex_0:
        {
            if (err == ERR_failure) {signal(ERR_failure);}
            elist[0] = _pclu_erstr(err);
            {signal(ERR_failure);}
        }
    end_0: elist[0].str = no_return_values_STRING;
        {signal(ERR_failure);}
    }

/**** END PROCEDURE get_name ****/


/**** BEGIN PROCEDURE get_suffix ****/

errcode file_nameOPget_suffix(x, ret_1)
CLUREF x;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
        if (file_name_own_init == 0) {
            err = file_name_own_init_proc();
            if (err != ERR_ok) goto ex_0;
            }
    enter_proc(109);

  LINE(110);
    {
    {
    CLUREF T_1_1;
    T_1_1.num = x.vec->data[3];
    ret_1->num = T_1_1.num;
    }
    {signal (ERR_ok);}}
    goto end_0;
    ex_0:
        {
            if (err == ERR_failure) {signal(ERR_failure);}
            elist[0] = _pclu_erstr(err);
            {signal(ERR_failure);}
        }
    end_0: elist[0].str = no_return_values_STRING;
        {signal(ERR_failure);}
    }

/**** END PROCEDURE get_suffix ****/


/**** BEGIN PROCEDURE get_other ****/

errcode file_nameOPget_other(x, ret_1)
CLUREF x;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
        if (file_name_own_init == 0) {
            err = file_name_own_init_proc();
            if (err != ERR_ok) goto ex_0;
            }
    enter_proc(113);

  LINE(114);
    {
    {
    CLUREF T_1_1;
    T_1_1.num = x.vec->data[2];
    ret_1->num = T_1_1.num;
    }
    {signal (ERR_ok);}}
    goto end_0;
    ex_0:
        {
            if (err == ERR_failure) {signal(ERR_failure);}
            elist[0] = _pclu_erstr(err);
            {signal(ERR_failure);}
        }
    end_0: elist[0].str = no_return_values_STRING;
        {signal(ERR_failure);}
    }

/**** END PROCEDURE get_other ****/

static int file_nameOPmake_output_own_init = 0;

/**** BEGIN PROCEDURE make_output ****/

errcode file_nameOPmake_output(x, ext, ret_1)
CLUREF x;
CLUREF ext;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
        if (file_nameOPmake_output_own_init == 0) {
        if (file_name_own_init == 0) {
            err = file_name_own_init_proc();
            if (err != ERR_ok) goto ex_0;
            }
        file_nameOPmake_output_own_init = 1;
    }
    enter_proc(117);

  LINE(118);
    {
    CLUREF T_1_1;
    generic_CLU_proc.type_owns = 0;
    generic_CLU_proc.proc = recordOPcopy1;
    CUR_PROC_VAR.proc = &generic_CLU_proc;
    err = recordOPcopy1(x, &T_1_1);
    if (err != ERR_ok) goto ex_0;
    x.num = T_1_1.num;
    }

  LINE(119);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    CLUREF T_1_3;
    CLUREF T_1_4;
    CLUREF T_1_5;
    CLUREF T_1_6;
    CLUREF T_1_7;
    T_1_2.ch = '/';
    err = stringOPindexc(T_1_2, ext, &T_1_3);
    if (err != ERR_ok) goto ex_0;
    T_1_4.num = (T_1_3.num > 0)? true : false;
    T_1_1.num = T_1_4.num;
    if (!T_1_4.num) {
        T_1_5.ch = '.';
        err = stringOPindexc(T_1_5, ext, &T_1_6);
        if (err != ERR_ok) goto ex_0;
        T_1_7.num = (T_1_6.num > 0)? true : false;
        T_1_1.num = T_1_7.num;
    }
    if (T_1_1.num == true) {

  LINE(120);
        {
        {signal (ERR_bad_format);}}
        }
        }/* end if */

  LINE(121);
    {
    x.vec->data[3]  = ext.num;
    }

  LINE(122);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    T_1_1.num = x.vec->data[1];
    err = stringOPempty(T_1_1, &T_1_2);
    if (err != ERR_ok) goto ex_0;
    if (T_1_2.num == true) {

  LINE(123);
        {
        x.vec->data[1]  = STR_output.num;
        }
        }
        }/* end if */

  LINE(124);
    {
    {
    ret_1->num = x.num;
    }
    {signal (ERR_ok);}}
    goto end_0;
    ex_0:
        {
            if (err == ERR_failure) {signal(ERR_failure);}
            elist[0] = _pclu_erstr(err);
            {signal(ERR_failure);}
        }
    end_0: elist[0].str = no_return_values_STRING;
        {signal(ERR_failure);}
    }

/**** END PROCEDURE make_output ****/

static int file_nameOPmake_temp_own_init = 0;
CLUREF file_nameOPmake_tempOPextend_number;

/**** BEGIN PROCEDURE make_temp ****/

errcode file_nameOPmake_temp(tdir, prog, kind, ret_1)
CLUREF tdir;
CLUREF prog;
CLUREF kind;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
        if (file_nameOPmake_temp_own_init == 0) {
        if (file_name_own_init == 0) {
            err = file_name_own_init_proc();
            if (err != ERR_ok) goto ex_0;
            }
        file_nameOPmake_temp_own_init = 1;
        {
            {file_nameOPmake_tempOPextend_number.num = 0;
            }
            }
    }
    enter_proc(127);

  LINE(130);
    {
    CLUREF T_1_1;
    T_1_1.num = file_nameOPmake_tempOPextend_number.num + 1;
     if ((T_1_1.num > 0 && file_nameOPmake_tempOPextend_number.num < 0 && 1 < 0) || 
         (T_1_1.num < 0 && file_nameOPmake_tempOPextend_number.num > 0 && 1 > 0)) {
        err = ERR_overflow;
        goto ex_0;}
    file_nameOPmake_tempOPextend_number.num = T_1_1.num;
    }

  LINE(131);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    CLUREF T_1_3;
    CLUREF T_1_4;
    err = stringOPconcat(STR__137, prog, &T_1_1);
    if (err != ERR_ok) goto ex_0;
    err = intOPunparse(file_nameOPmake_tempOPextend_number, &T_1_2);
    if (err != ERR_ok) goto ex_0;
    err = stringOPconcat(T_1_1, T_1_2, &T_1_3);
    if (err != ERR_ok) goto ex_0;
    err = stringOPconcat(T_1_3, kind, &T_1_4);
    if (err != ERR_ok) goto ex_0;
    prog.num = T_1_4.num;
    }

  LINE(132);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    err = _get_pid(&T_1_1);
    if (err != ERR_ok) goto ex_0;
    err = intOPunparse(T_1_1, &T_1_2);
    if (err != ERR_ok) goto ex_0;
    kind.num = T_1_2.num;
    }

  LINE(133);
    {
    {
    CLUREF T_2_1;
    CLUREF T_2_2;
    CLUREF T_2_3;
    CLUREF T_2_4;
    CLUREF T_2_5;
    CLUREF T_2_6;
    err = _dir_ent_size(&T_2_1);
    if (err != ERR_ok) goto ex_1;
    err = stringOPsize(kind, &T_2_2);
    if (err != ERR_ok) goto ex_1;
    T_2_3.num = T_2_1.num - T_2_2.num;
     if ((T_2_3.num >= 0 && T_2_1.num < 0 && (-T_2_2.num) < 0) || 
         (T_2_3.num <= 0 && T_2_1.num > 0 && (-T_2_2.num) > 0)) {
        err = ERR_overflow;
        goto ex_1;}
    err = stringOPsubstr(prog, CLU_1, T_2_3, &T_2_4);
    if (err != ERR_ok) goto ex_1;
    err = stringOPconcat(T_2_4, kind, &T_2_5);
    if (err != ERR_ok) goto ex_1;
    err = file_nameOPcreate(tdir, T_2_5, STR_, STR_, &T_2_6);
    if (err != ERR_ok) goto ex_1;
    ret_1->num = T_2_6.num;
    }
    {signal (ERR_ok);}}
    goto end_1;
    ex_1:
        if (err == ERR_bad_format) {signal(ERR_bad_format);}
        else {
            goto ex_0;}
    end_1:;
    goto end_0;
    ex_0:
        {
            if (err == ERR_failure) {signal(ERR_failure);}
            elist[0] = _pclu_erstr(err);
            {signal(ERR_failure);}
        }
    end_0: elist[0].str = no_return_values_STRING;
        {signal(ERR_failure);}
    }

/**** END PROCEDURE make_temp ****/

struct OPS  *record_dir_name_other_suffix_ops;
static int file_nameOPequal_own_init = 0;

/**** BEGIN PROCEDURE equal ****/

errcode file_nameOPequal(x, y, ret_1)
CLUREF x;
CLUREF y;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
        if (file_nameOPequal_own_init == 0) {
        if (file_name_own_init == 0) {
            err = file_name_own_init_proc();
            if (err != ERR_ok) goto ex_0;
            }
        file_nameOPequal_own_init = 1;
    }
    enter_proc(141);

  LINE(142);
    {
    {
    CLUREF T_1_1;
    generic_CLU_proc.type_owns = 0;
    generic_CLU_proc.op_owns = record_dir_name_other_suffix_ops->entry[0].fcn->op_owns;
    generic_CLU_proc.proc = recordOPsimilar;
    CUR_PROC_VAR.proc = &generic_CLU_proc;
    err = recordOPsimilar(x, y, &T_1_1);
    if (err != ERR_ok) goto ex_0;
    ret_1->num = T_1_1.num;
    }
    {signal (ERR_ok);}}
    goto end_0;
    ex_0:
        {
            if (err == ERR_failure) {signal(ERR_failure);}
            elist[0] = _pclu_erstr(err);
            {signal(ERR_failure);}
        }
    end_0: elist[0].str = no_return_values_STRING;
        {signal(ERR_failure);}
    }

/**** END PROCEDURE equal ****/

struct OPS  *record_dir_name_other_suffix_ops;
static int file_nameOPsimilar_own_init = 0;

/**** BEGIN PROCEDURE similar ****/

errcode file_nameOPsimilar(x, y, ret_1)
CLUREF x;
CLUREF y;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
        if (file_nameOPsimilar_own_init == 0) {
        if (file_name_own_init == 0) {
            err = file_name_own_init_proc();
            if (err != ERR_ok) goto ex_0;
            }
        file_nameOPsimilar_own_init = 1;
    }
    enter_proc(145);

  LINE(146);
    {
    {
    CLUREF T_1_1;
    generic_CLU_proc.type_owns = 0;
    generic_CLU_proc.op_owns = record_dir_name_other_suffix_ops->entry[0].fcn->op_owns;
    generic_CLU_proc.proc = recordOPsimilar;
    CUR_PROC_VAR.proc = &generic_CLU_proc;
    err = recordOPsimilar(x, y, &T_1_1);
    if (err != ERR_ok) goto ex_0;
    ret_1->num = T_1_1.num;
    }
    {signal (ERR_ok);}}
    goto end_0;
    ex_0:
        {
            if (err == ERR_failure) {signal(ERR_failure);}
            elist[0] = _pclu_erstr(err);
            {signal(ERR_failure);}
        }
    end_0: elist[0].str = no_return_values_STRING;
        {signal(ERR_failure);}
    }

/**** END PROCEDURE similar ****/


/**** BEGIN PROCEDURE copy ****/

errcode file_nameOPcopy(x, ret_1)
CLUREF x;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
        if (file_name_own_init == 0) {
            err = file_name_own_init_proc();
            if (err != ERR_ok) goto ex_0;
            }
    enter_proc(149);

  LINE(150);
    {
    {
    ret_1->num = x.num;
    }
    {signal (ERR_ok);}}
    goto end_0;
    ex_0:
        {
            if (err == ERR_failure) {signal(ERR_failure);}
            elist[0] = _pclu_erstr(err);
            {signal(ERR_failure);}
        }
    end_0: elist[0].str = no_return_values_STRING;
        {signal(ERR_failure);}
    }

/**** END PROCEDURE copy ****/

static int file_nameOPprint_own_init = 0;

/**** BEGIN PROCEDURE print ****/

errcode file_nameOPprint(x, ps)
CLUREF x;
CLUREF ps;
    {
    errcode err;
    errcode ecode2;
        if (file_nameOPprint_own_init == 0) {
        if (file_name_own_init == 0) {
            err = file_name_own_init_proc();
            if (err != ERR_ok) goto ex_0;
            }
        file_nameOPprint_own_init = 1;
    }
    enter_proc(153);

  LINE(154);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    T_1_1.num = x.vec->data[0];
    err = pstreamOPtext(ps, T_1_1, &T_1_2);
    if (err != ERR_ok) goto ex_0;
    }

  LINE(155);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    CLUREF T_1_3;
    CLUREF T_1_4;
    CLUREF T_1_5;
    CLUREF T_1_6;
    CLUREF T_1_7;
    T_1_2.num = x.vec->data[0];
    err = stringOPempty(T_1_2, &T_1_3);
    if (err != ERR_ok) goto ex_0;
    T_1_4.num = T_1_3.num ^ 1;
    T_1_1.num = T_1_4.num;
    if (T_1_4.num) {
        T_1_5.num = x.vec->data[0];
        T_1_6.num = ((T_1_5.str->size != STR__057.str->size)? false :
            !(bcmp(T_1_5.str->data, STR__057.str->data, T_1_5.str->size)));
        T_1_7.num = T_1_6.num ^ 1;
        T_1_1.num = T_1_7.num;
    }
    if (T_1_1.num == true) {

  LINE(156);
        {
        CLUREF T_2_1;
        CLUREF T_2_2;
        T_2_1.ch = '/';
        err = pstreamOPtextc(ps, T_2_1, &T_2_2);
        if (err != ERR_ok) goto ex_0;
        }
        }
        }/* end if */

  LINE(157);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    T_1_1.num = x.vec->data[1];
    err = pstreamOPtext(ps, T_1_1, &T_1_2);
    if (err != ERR_ok) goto ex_0;
    }

  LINE(158);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    CLUREF T_1_3;
    CLUREF T_1_4;
    CLUREF T_1_5;
    CLUREF T_1_6;
    CLUREF T_1_7;
    T_1_2.num = x.vec->data[3];
    err = stringOPempty(T_1_2, &T_1_3);
    if (err != ERR_ok) goto ex_0;
    T_1_4.num = T_1_3.num ^ 1;
    T_1_1.num = T_1_4.num;
    if (!T_1_4.num) {
        T_1_5.num = x.vec->data[2];
        err = stringOPempty(T_1_5, &T_1_6);
        if (err != ERR_ok) goto ex_0;
        T_1_7.num = T_1_6.num ^ 1;
        T_1_1.num = T_1_7.num;
    }
    if (T_1_1.num == true) {

  LINE(159);
        {
        CLUREF T_2_1;
        CLUREF T_2_2;
        T_2_1.ch = '.';
        err = pstreamOPtextc(ps, T_2_1, &T_2_2);
        if (err != ERR_ok) goto ex_0;
        }

  LINE(160);
        {
        CLUREF T_2_1;
        CLUREF T_2_2;
        T_2_1.num = x.vec->data[3];
        err = pstreamOPtext(ps, T_2_1, &T_2_2);
        if (err != ERR_ok) goto ex_0;
        }
        }
        }/* end if */

  LINE(162);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    CLUREF T_1_3;
    T_1_1.num = x.vec->data[2];
    err = stringOPempty(T_1_1, &T_1_2);
    if (err != ERR_ok) goto ex_0;
    T_1_3.num = T_1_2.num ^ 1;
    if (T_1_3.num == true) {

  LINE(163);
        {
        CLUREF T_2_1;
        CLUREF T_2_2;
        T_2_1.ch = '.';
        err = pstreamOPtextc(ps, T_2_1, &T_2_2);
        if (err != ERR_ok) goto ex_0;
        }

  LINE(164);
        {
        CLUREF T_2_1;
        CLUREF T_2_2;
        T_2_1.num = x.vec->data[2];
        err = pstreamOPtext(ps, T_2_1, &T_2_2);
        if (err != ERR_ok) goto ex_0;
        }
        }
        }/* end if */
    goto end_0;
    ex_0:
        {
            if (err == ERR_failure) {signal(ERR_failure);}
            elist[0] = _pclu_erstr(err);
            {signal(ERR_failure);}
        }
    end_0: {signal(ERR_ok);}
    }

/**** END PROCEDURE print ****/


/**** BEGIN PROCEDURE encode ****/

errcode file_nameOPencode(fn, ist)
CLUREF fn;
CLUREF ist;
    {
    errcode err;
    errcode ecode2;
        if (file_name_own_init == 0) {
            err = file_name_own_init_proc();
            if (err != ERR_ok) goto ex_0;
            }
    enter_proc(168);

  LINE(169);
    {
    CLUREF T_2_1;
    err = file_nameOPunparse(fn, &T_2_1);
    if (err != ERR_ok) goto ex_1;
    err = stringOPencode(T_2_1, ist);
    if (err != ERR_ok) goto ex_1;
    }
    goto end_1;
    ex_1:
        if (err == ERR_not_possible) {signal(ERR_not_possible);}
        else {
            goto ex_0;}
    end_1:;
    goto end_0;
    ex_0:
        {
            if (err == ERR_failure) {signal(ERR_failure);}
            elist[0] = _pclu_erstr(err);
            {signal(ERR_failure);}
        }
    end_0: {signal(ERR_ok);}
    }

/**** END PROCEDURE encode ****/

static int file_nameOPdecode_own_init = 0;

/**** BEGIN PROCEDURE decode ****/

errcode file_nameOPdecode(ist, ret_1)
CLUREF ist;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
        if (file_nameOPdecode_own_init == 0) {
        if (file_name_own_init == 0) {
            err = file_name_own_init_proc();
            if (err != ERR_ok) goto ex_0;
            }
        file_nameOPdecode_own_init = 1;
    }
    enter_proc(173);

  LINE(175);
    {
    {
    CLUREF T_3_1;
    CLUREF T_3_2;
    err = stringOPdecode(ist, &T_3_1);
    if (err != ERR_ok) goto ex_2;
    err = file_nameOPparse(T_3_1, &T_3_2);
    if (err != ERR_ok) goto ex_2;
    ret_1->num = T_3_2.num;
    }
    {signal (ERR_ok);}}
    goto end_2;
    ex_2:
        if (err == ERR_end_of_file) {signal(ERR_end_of_file);}
        else if (err == ERR_not_possible) {signal(ERR_not_possible);}
        else {
            goto ex_1;}
    end_2:;
        goto end_1;
        ex_1:
            if ((err == ERR_bad_format)) {

  LINE(177);
                {
                elist[0] = STR_bad_040format;
                {signal (ERR_not_possible);}}
            }
            else {
                goto ex_0;
            }
        end_1:;
    goto end_0;
    ex_0:
        {
            if (err == ERR_failure) {signal(ERR_failure);}
            elist[0] = _pclu_erstr(err);
            {signal(ERR_failure);}
        }
    end_0: elist[0].str = no_return_values_STRING;
        {signal(ERR_failure);}
    }

/**** END PROCEDURE decode ****/

struct OPS  *record_dir_name_other_suffix_ops;
static int file_nameOP_gcd_own_init = 0;

/**** BEGIN PROCEDURE _gcd ****/

errcode file_nameOP_gcd(x, tab, ret_1)
CLUREF x;
CLUREF tab;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
        if (file_nameOP_gcd_own_init == 0) {
        if (file_name_own_init == 0) {
            err = file_name_own_init_proc();
            if (err != ERR_ok) goto ex_0;
            }
        file_nameOP_gcd_own_init = 1;
    }
    enter_proc(180);

  LINE(181);
    {
    {
    CLUREF T_1_1;
    generic_CLU_proc.type_owns = 0;
    generic_CLU_proc.op_owns = record_dir_name_other_suffix_ops->entry[6].fcn->op_owns;
    generic_CLU_proc.proc = recordOP_gcd;
    CUR_PROC_VAR.proc = &generic_CLU_proc;
    err = recordOP_gcd(x, tab, &T_1_1);
    if (err != ERR_ok) goto ex_0;
    ret_1->num = T_1_1.num;
    }
    {signal (ERR_ok);}}
    goto end_0;
    ex_0:
        {
            if (err == ERR_failure) {signal(ERR_failure);}
            elist[0] = _pclu_erstr(err);
            {signal(ERR_failure);}
        }
    end_0: elist[0].str = no_return_values_STRING;
        {signal(ERR_failure);}
    }

/**** END PROCEDURE _gcd ****/

typedef struct{
    int count;
    OWNPTR type_owns;
    OWNPTR op_owns;
    struct OP_ENTRY entry[16];
} file_name_OPS;

CLU_proc file_name_oe__gcd = {{0,0,0,0}, file_nameOP_gcd, 0};
CLU_proc file_name_oe_copy = {{0,0,0,0}, file_nameOPcopy, 0};
CLU_proc file_name_oe_create = {{0,0,0,0}, file_nameOPcreate, 0};
CLU_proc file_name_oe_decode = {{0,0,0,0}, file_nameOPdecode, 0};
CLU_proc file_name_oe_encode = {{0,0,0,0}, file_nameOPencode, 0};
CLU_proc file_name_oe_equal = {{0,0,0,0}, file_nameOPequal, 0};
CLU_proc file_name_oe_get_dir = {{0,0,0,0}, file_nameOPget_dir, 0};
CLU_proc file_name_oe_get_name = {{0,0,0,0}, file_nameOPget_name, 0};
CLU_proc file_name_oe_get_other = {{0,0,0,0}, file_nameOPget_other, 0};
CLU_proc file_name_oe_get_suffix = {{0,0,0,0}, file_nameOPget_suffix, 0};
CLU_proc file_name_oe_make_output = {{0,0,0,0}, file_nameOPmake_output, 0};
CLU_proc file_name_oe_make_temp = {{0,0,0,0}, file_nameOPmake_temp, 0};
CLU_proc file_name_oe_parse = {{0,0,0,0}, file_nameOPparse, 0};
CLU_proc file_name_oe_print = {{0,0,0,0}, file_nameOPprint, 0};
CLU_proc file_name_oe_similar = {{0,0,0,0}, file_nameOPsimilar, 0};
CLU_proc file_name_oe_unparse = {{0,0,0,0}, file_nameOPunparse, 0};

file_name_OPS file_name_ops_actual = {16, (OWNPTR)&file_name_own_init, (OWNPTR)&file_name_own_init, {
    {&file_name_oe__gcd, "_gcd"},
    {&file_name_oe_copy, "copy"},
    {&file_name_oe_create, "create"},
    {&file_name_oe_decode, "decode"},
    {&file_name_oe_encode, "encode"},
    {&file_name_oe_equal, "equal"},
    {&file_name_oe_get_dir, "get_dir"},
    {&file_name_oe_get_name, "get_name"},
    {&file_name_oe_get_other, "get_other"},
    {&file_name_oe_get_suffix, "get_suffix"},
    {&file_name_oe_make_output, "make_output"},
    {&file_name_oe_make_temp, "make_temp"},
    {&file_name_oe_parse, "parse"},
    {&file_name_oe_print, "print"},
    {&file_name_oe_similar, "similar"},
    {&file_name_oe_unparse, "unparse"}}};

struct OPS *file_name_ops = (struct OPS *)&file_name_ops_actual;

/**** END CLUSTER file_name ****/
