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

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


/**** BEGIN CLUSTER g_const ****/

extern errcode arrayOPnew();
extern errcode intOPequal();
extern errcode arrayOPsize();
extern errcode g_constOPfind_consts2();
extern errcode g_constOPconst_uniq();
extern errcode g_constOPg_consts();
extern errcode sequenceOPelements();
extern errcode stmtOPget_abs();
extern errcode g_constOPfind_const_exprs();
extern errcode recordOPget_3();
extern errcode g_constOPfind_const_exprlist();
extern errcode recordOPget_1();
extern errcode recordOPget_2();
extern errcode sequenceOPfill();
extern errcode g_constOPfind_const_field();
extern errcode exprOPget_abs();
extern errcode typespecOPget_abs();
extern errcode parmd_op();
extern errcode oneofOPis_7();
extern errcode oneofOPvalue_7();
extern errcode parmd_dus();
extern errcode arrayOPaddh();
extern errcode oneofOPmake_2();
extern errcode intOPgt();
extern errcode sequenceOPsize();
extern errcode g_constOPfind_const_fieldspeclist();
extern errcode arrayOPlow();
extern errcode intOPle();
extern errcode arrayOPfetch();
extern errcode intOPfrom_to();
extern errcode intOPadd();
extern errcode arrayOPelements();
extern errcode boolOPnot();
extern errcode oneofOPis_2();
extern errcode stringOPequal();
extern errcode oneofOPvalue_2();
extern errcode g_constOPg_str_decl();
extern errcode g_constOPg_str_cons();
extern errcode g_envOPadd_str();
extern errcode g_envOPputl();
extern errcode stringOPconcat();
extern errcode s_string_embed();
extern errcode stringOPsize();
extern errcode int_constOPexists();
extern errcode g_envOPputs();
extern errcode g_string();
extern errcode intOPunparse();
extern errcode s_string_name();
CLUREF STR_CLUREF_040STR_137;
CLUREF STR__073;
CLUREF STR_stringOPcons_050;
CLUREF STR__054_040CLU_1371_054_040CLU_137;
CLUREF STR__054_040_046;
CLUREF STR__051_073;
CLUREF STR_CLU_137string_137size_056num_040_075_040;
CLUREF STR__054_040CLU_1371_054_040CLU_137string_137size;
static int g_const_own_init = 0;
OWN_req g_const_ownreqs = {0,0};
CLUREF g_constOPcum_const;
errcode g_const_own_init_proc()
{
    errcode err;
    enter_own_init_proc();
        if (g_const_own_init == 0) {
        stringOPcons("CLUREF STR_", CLU_1, CLU_11, &STR_CLUREF_040STR_137);
        stringOPcons(";", CLU_1, CLU_1, &STR__073);
        stringOPcons("stringOPcons(", CLU_1, CLU_13, &STR_stringOPcons_050);
        stringOPcons(", CLU_1, CLU_", CLU_1, CLU_13, &STR__054_040CLU_1371_054_040CLU_137);
        stringOPcons(", &", CLU_1, CLU_3, &STR__054_040_046);
        stringOPcons(");", CLU_1, CLU_2, &STR__051_073);
        stringOPcons("CLU_string_size.num = ", CLU_1, CLU_22, &STR_CLU_137string_137size_056num_040_075_040);
        stringOPcons(", CLU_1, CLU_string_size", CLU_1, CLU_24, &STR__054_040CLU_1371_054_040CLU_137string_137size);
        g_const_own_init = 1;
        {
            {CLUREF T_0_1;
            err = arrayOPnew(&T_0_1);
            if (err != ERR_ok) goto ex_0;
            g_constOPcum_const.num = T_0_1.num;
            }
            }
        {signal(ERR_ok);}
    ex_0: pclu_unhandled(err); {signal(ERR_failure);}
        }
    }


/**** BEGIN PROCEDURE exist ****/

errcode g_constOPexist(ret_1)
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
        if (g_const_own_init == 0) {
            err = g_const_own_init_proc();
            if (err != ERR_ok) goto ex_0;
            }
    enter_proc(13);

  LINE(14);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    T_1_1.num = g_constOPcum_const.array->ext_size;
    T_1_2.num = (T_1_1.num == 0)? true : false;
    if (T_1_2.num == true) {

  LINE(16);
        {
        {
        ret_1->tf = false;
        }
        {signal (ERR_ok);}}
        }
    else {

  LINE(18);
        {
        {
        ret_1->tf = true;
        }
        {signal (ERR_ok);}}
        }}/* end if */
    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 exist ****/


/**** BEGIN PROCEDURE find_consts ****/

errcode g_constOPfind_consts(e, bod)
CLUREF e;
CLUREF bod;
    {
    errcode err;
    errcode ecode2;
    CLUREF const_UNIQ;
        if (g_const_own_init == 0) {
            err = g_const_own_init_proc();
            if (err != ERR_ok) goto ex_0;
            }
    enter_proc(24);

  LINE(25);
    {
        {CLUREF T_1_1;
        err = arrayOPnew(&T_1_1);
        if (err != ERR_ok) goto ex_0;
        const_UNIQ.num = T_1_1.num;
        }
        }

  LINE(26);
    {
    err = g_constOPfind_consts2(bod, const_UNIQ);
    if (err != ERR_ok) goto ex_0;
    }

  LINE(27);
    {
    CLUREF T_1_1;
    err = g_constOPconst_uniq(const_UNIQ, &T_1_1);
    if (err != ERR_ok) goto ex_0;
    const_UNIQ.num = T_1_1.num;
    }

  LINE(28);
    {
    g_constOPcum_const.num = const_UNIQ.num;
    }

  LINE(30);
    {
    err = g_constOPg_consts(e, CLU_1);
    if (err != ERR_ok) goto ex_0;
    }

  LINE(31);
    {
    {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: {signal(ERR_ok);}
    }

/**** END PROCEDURE find_consts ****/


/**** BEGIN PROCEDURE find_consts2 ****/

errcode g_constOPfind_consts2(bod, const_UNIQ)
CLUREF bod;
CLUREF const_UNIQ;
    {
    errcode err;
    errcode ecode2;
    CLUREF s;
    CLUREF di;
    CLUREF as;
    CLUREF inv;
    CLUREF w;
    CLUREF f;
    CLUREF i;
    CLUREF arm;
    CLUREF b;
    CLUREF t;
    CLUREF el;
    CLUREF c;
    CLUREF e;
    CLUREF a;
    CLUREF r;
        if (g_const_own_init == 0) {
            err = g_const_own_init_proc();
            if (err != ERR_ok) goto ex_0;
            }
    enter_proc(36);

  LINE(37);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    CLUREF T_1_3;
        T_1_2.num = bod.vec->size; 
        T_1_3 = bod;
        for (T_1_1.num = 1; T_1_1.num <= T_1_2.num; T_1_1.num++) {
            s.num = T_1_3.vec->data[T_1_1.num - 1];

  LINE(40);
            {
            CLUREF T_2_1;
            err = stmtOPget_abs(s, &T_2_1);
            if (err != ERR_ok) goto ex_0;
            switch (T_2_1.cell->tag) {
            case 7: 
                 {CLUREF T_2_2;
                T_2_2.num = T_2_1.cell->value;
                di.num = T_2_2.num;

  LINE(42);
                    {
                    CLUREF T_3_1;
                    T_3_1.num = di.vec->data[2];
                    err = g_constOPfind_const_exprs(T_3_1, const_UNIQ);
                    if (err != ERR_ok) goto ex_0;
                    }
                    break;
                    }
            case 1: 
                 {CLUREF T_2_3;
                T_2_3.num = T_2_1.cell->value;
                as.num = T_2_3.num;

  LINE(44);
                    {
                    CLUREF T_3_1;
                    T_3_1.num = as.vec->data[2];
                    err = g_constOPfind_const_exprlist(T_3_1, const_UNIQ);
                    if (err != ERR_ok) goto ex_0;
                    }
                    break;
                    }
            case 17: 
                 {CLUREF T_2_4;
                T_2_4.num = T_2_1.cell->value;
                as.num = T_2_4.num;

  LINE(46);
                    {
                    CLUREF T_3_1;
                    T_3_1.num = as.vec->data[0];
                    err = g_constOPfind_const_exprs(T_3_1, const_UNIQ);
                    if (err != ERR_ok) goto ex_0;
                    }

  LINE(47);
                    {
                    CLUREF T_3_1;
                    T_3_1.num = as.vec->data[1];
                    err = g_constOPfind_const_exprs(T_3_1, const_UNIQ);
                    if (err != ERR_ok) goto ex_0;
                    }
                    break;
                    }
            case 13: 
                 {CLUREF T_2_5;
                T_2_5.num = T_2_1.cell->value;
                inv.num = T_2_5.num;

  LINE(49);
                    {
                    CLUREF T_3_1;
                    T_3_1.num = inv.vec->data[0];
                    err = g_constOPfind_const_exprs(T_3_1, const_UNIQ);
                    if (err != ERR_ok) goto ex_0;
                    }

  LINE(50);
                    {
                    CLUREF T_3_1;
                    T_3_1.num = inv.vec->data[1];
                    err = g_constOPfind_const_exprlist(T_3_1, const_UNIQ);
                    if (err != ERR_ok) goto ex_0;
                    }
                    break;
                    }
            case 19: 
                 {CLUREF T_2_6;
                T_2_6.num = T_2_1.cell->value;
                w.num = T_2_6.num;

  LINE(52);
                    {
                    CLUREF T_3_1;
                    T_3_1.num = w.vec->data[1];
                    err = g_constOPfind_const_exprs(T_3_1, const_UNIQ);
                    if (err != ERR_ok) goto ex_0;
                    }

  LINE(53);
                    {
                    CLUREF T_3_1;
                    CLUREF T_3_2;
                    T_3_1.num = w.vec->data[0];
                    T_3_2.num = T_3_1.vec->data[1];
                    err = g_constOPfind_consts2(T_3_2, const_UNIQ);
                    if (err != ERR_ok) goto ex_0;
                    }
                    break;
                    }
            case 10: 
                 {CLUREF T_2_7;
                T_2_7.num = T_2_1.cell->value;
                f.num = T_2_7.num;

  LINE(55);
                    {
                    CLUREF T_3_1;
                    CLUREF T_3_2;
                    T_3_1.num = f.vec->data[2];
                    T_3_2.num = T_3_1.vec->data[0];
                    err = g_constOPfind_const_exprs(T_3_2, const_UNIQ);
                    if (err != ERR_ok) goto ex_0;
                    }

  LINE(56);
                    {
                    CLUREF T_3_1;
                    CLUREF T_3_2;
                    T_3_1.num = f.vec->data[2];
                    T_3_2.num = T_3_1.vec->data[1];
                    err = g_constOPfind_const_exprlist(T_3_2, const_UNIQ);
                    if (err != ERR_ok) goto ex_0;
                    }

  LINE(57);
                    {
                    CLUREF T_3_1;
                    CLUREF T_3_2;
                    T_3_1.num = f.vec->data[1];
                    T_3_2.num = T_3_1.vec->data[1];
                    err = g_constOPfind_consts2(T_3_2, const_UNIQ);
                    if (err != ERR_ok) goto ex_0;
                    }
                    break;
                    }
            case 12: 
                 {CLUREF T_2_8;
                T_2_8.num = T_2_1.cell->value;
                i.num = T_2_8.num;

  LINE(59);
                    {
                    CLUREF T_3_1;
                    CLUREF T_3_2;
                    CLUREF T_3_3;
                    CLUREF T_3_4;
                        T_3_1.num = i.vec->data[0];
                        T_3_3.num = T_3_1.vec->size; 
                        T_3_4 = T_3_1;
                        for (T_3_2.num = 1; T_3_2.num <= T_3_3.num; T_3_2.num++) {
                            arm.num = T_3_4.vec->data[T_3_2.num - 1];

  LINE(60);
                            {
                            CLUREF T_4_1;
                            T_4_1.num = arm.vec->data[2];
                            err = g_constOPfind_const_exprs(T_4_1, const_UNIQ);
                            if (err != ERR_ok) goto ex_0;
                            }

  LINE(61);
                            {
                            CLUREF T_4_1;
                            CLUREF T_4_2;
                            T_4_1.num = arm.vec->data[0];
                            T_4_2.num = T_4_1.vec->data[1];
                            err = g_constOPfind_consts2(T_4_2, const_UNIQ);
                            if (err != ERR_ok) goto ex_0;
                            }
                        }
                    }
                    end_inline_for_2:;

  LINE(63);
                    {
                    CLUREF T_3_1;
                    T_3_1.num = i.vec->data[1];
                    switch (T_3_1.cell->tag) {
                    case 1: 
                         {CLUREF T_3_2;
                        T_3_2.num = T_3_1.cell->value;
                        b.num = T_3_2.num;

  LINE(65);
                            {
                            CLUREF T_4_1;
                            T_4_1.num = b.vec->data[1];
                            err = g_constOPfind_consts2(T_4_1, const_UNIQ);
                            if (err != ERR_ok) goto ex_0;
                            }
                            break;
                            }
                    default: {
                    }
                    }
                    }
                    break;
                    }
            case 18: 
                 {CLUREF T_2_9;
                T_2_9.num = T_2_1.cell->value;
                t.num = T_2_9.num;

  LINE(69);
                    {
                    CLUREF T_3_1;
                    T_3_1.num = t.vec->data[1];
                    err = g_constOPfind_const_exprs(T_3_1, const_UNIQ);
                    if (err != ERR_ok) goto ex_0;
                    }

  LINE(70);
                    {
                    CLUREF T_3_1;
                    CLUREF T_3_2;
                    CLUREF T_3_3;
                    CLUREF T_3_4;
                        T_3_1.num = t.vec->data[0];
                        T_3_3.num = T_3_1.vec->size; 
                        T_3_4 = T_3_1;
                        for (T_3_2.num = 1; T_3_2.num <= T_3_3.num; T_3_2.num++) {
                            arm.num = T_3_4.vec->data[T_3_2.num - 1];

  LINE(71);
                            {
                            CLUREF T_4_1;
                            CLUREF T_4_2;
                            T_4_1.num = arm.vec->data[0];
                            T_4_2.num = T_4_1.vec->data[1];
                            err = g_constOPfind_consts2(T_4_2, const_UNIQ);
                            if (err != ERR_ok) goto ex_0;
                            }
                        }
                    }
                    end_inline_for_3:;

  LINE(73);
                    {
                    CLUREF T_3_1;
                    T_3_1.num = t.vec->data[2];
                    switch (T_3_1.cell->tag) {
                    case 1: 
                         {CLUREF T_3_2;
                        T_3_2.num = T_3_1.cell->value;
                        b.num = T_3_2.num;

  LINE(75);
                            {
                            CLUREF T_4_1;
                            T_4_1.num = b.vec->data[1];
                            err = g_constOPfind_consts2(T_4_1, const_UNIQ);
                            if (err != ERR_ok) goto ex_0;
                            }
                            break;
                            }
                    default: {
                    }
                    }
                    }
                    break;
                    }
            case 15: 
                 {CLUREF T_2_10;
                T_2_10.num = T_2_1.cell->value;
                el.num = T_2_10.num;

  LINE(79);
                    {
                    err = g_constOPfind_const_exprlist(el, const_UNIQ);
                    if (err != ERR_ok) goto ex_0;
                    }
                    break;
                    }
            case 20: 
                 {CLUREF T_2_11;
                T_2_11.num = T_2_1.cell->value;
                el.num = T_2_11.num;

  LINE(81);
                    {
                    err = g_constOPfind_const_exprlist(el, const_UNIQ);
                    if (err != ERR_ok) goto ex_0;
                    }
                    break;
                    }
            case 16: 
                 {CLUREF T_2_12;
                T_2_12.num = T_2_1.cell->value;
                c.num = T_2_12.num;

  LINE(83);
                    {
                    CLUREF T_3_1;
                    T_3_1.num = c.vec->data[0];
                    err = g_constOPfind_const_exprlist(T_3_1, const_UNIQ);
                    if (err != ERR_ok) goto ex_0;
                    }
                    break;
                    }
            case 9: 
                 {CLUREF T_2_13;
                T_2_13.num = T_2_1.cell->value;
                c.num = T_2_13.num;

  LINE(85);
                    {
                    CLUREF T_3_1;
                    T_3_1.num = c.vec->data[0];
                    err = g_constOPfind_const_exprlist(T_3_1, const_UNIQ);
                    if (err != ERR_ok) goto ex_0;
                    }
                    break;
                    }
            case 3: 
                 {CLUREF T_2_14;
                T_2_14.num = T_2_1.cell->value;
                b.num = T_2_14.num;

  LINE(87);
                    {
                    CLUREF T_3_1;
                    T_3_1.num = b.vec->data[1];
                    err = g_constOPfind_consts2(T_3_1, const_UNIQ);
                    if (err != ERR_ok) goto ex_0;
                    }
                    break;
                    }
            case 8: 
                 {CLUREF T_2_15;
                T_2_15.num = T_2_1.cell->value;
                e.num = T_2_15.num;

  LINE(89);
                    {
                    CLUREF T_3_1;
                    CLUREF T_3_2;
                    T_3_1.num = e.vec->data[2];
                    err = sequenceOPfill(CLU_1, T_3_1, &T_3_2);
                    if (err != ERR_ok) goto ex_0;
                    err = g_constOPfind_consts2(T_3_2, const_UNIQ);
                    if (err != ERR_ok) goto ex_0;
                    }

  LINE(90);
                    {
                    CLUREF T_3_1;
                    CLUREF T_3_2;
                    CLUREF T_3_3;
                    CLUREF T_3_4;
                        T_3_1.num = e.vec->data[0];
                        T_3_3.num = T_3_1.vec->size; 
                        T_3_4 = T_3_1;
                        for (T_3_2.num = 1; T_3_2.num <= T_3_3.num; T_3_2.num++) {
                            a.num = T_3_4.vec->data[T_3_2.num - 1];

  LINE(91);
                            {
                            CLUREF T_4_1;
                            CLUREF T_4_2;
                            T_4_1.num = a.vec->data[0];
                            T_4_2.num = T_4_1.vec->data[1];
                            err = g_constOPfind_consts2(T_4_2, const_UNIQ);
                            if (err != ERR_ok) goto ex_0;
                            }
                        }
                    }
                    end_inline_for_4:;

  LINE(93);
                    {
                    CLUREF T_3_1;
                    T_3_1.num = e.vec->data[1];
                    switch (T_3_1.cell->tag) {
                    case 1: 
                         {CLUREF T_3_2;
                        T_3_2.num = T_3_1.cell->value;
                        a.num = T_3_2.num;

  LINE(95);
                            {
                            CLUREF T_4_1;
                            CLUREF T_4_2;
                            T_4_1.num = a.vec->data[0];
                            T_4_2.num = T_4_1.vec->data[1];
                            err = g_constOPfind_consts2(T_4_2, const_UNIQ);
                            if (err != ERR_ok) goto ex_0;
                            }
                            break;
                            }
                    default: {
                    }
                    }
                    }
                    break;
                    }
            case 14: 
                 {CLUREF T_2_16;
                T_2_16.num = T_2_1.cell->value;
                r.num = T_2_16.num;

  LINE(99);
                    {
                    CLUREF T_3_1;
                    CLUREF T_3_2;
                    T_3_1.num = r.vec->data[1];
                    err = sequenceOPfill(CLU_1, T_3_1, &T_3_2);
                    if (err != ERR_ok) goto ex_0;
                    err = g_constOPfind_consts2(T_3_2, const_UNIQ);
                    if (err != ERR_ok) goto ex_0;
                    }
                    break;
                    }
            case 11: 
                 {CLUREF T_2_17;
                T_2_17.num = T_2_1.cell->value;
                f.num = T_2_17.num;

  LINE(101);
                    {
                    CLUREF T_3_1;
                    T_3_1.num = f.vec->data[0];
                    err = g_constOPfind_const_exprs(T_3_1, const_UNIQ);
                    if (err != ERR_ok) goto ex_0;
                    }
                    break;
                    }
            default: {
            }
            }
            }
        }
    }
    end_inline_for_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 find_consts2 ****/


/**** BEGIN PROCEDURE find_const_exprlist ****/

errcode g_constOPfind_const_exprlist(el, const_UNIQ)
CLUREF el;
CLUREF const_UNIQ;
    {
    errcode err;
    errcode ecode2;
    CLUREF each_e;
        if (g_const_own_init == 0) {
            err = g_const_own_init_proc();
            if (err != ERR_ok) goto ex_0;
            }
    enter_proc(109);

  LINE(110);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    CLUREF T_1_3;
        T_1_2.num = el.vec->size; 
        T_1_3 = el;
        for (T_1_1.num = 1; T_1_1.num <= T_1_2.num; T_1_1.num++) {
            each_e.num = T_1_3.vec->data[T_1_1.num - 1];

  LINE(111);
            {
            err = g_constOPfind_const_exprs(each_e, const_UNIQ);
            if (err != ERR_ok) goto ex_0;
            }
        }
    }
    end_inline_for_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 find_const_exprlist ****/


/**** BEGIN PROCEDURE find_const_fieldspeclist ****/

errcode g_constOPfind_const_fieldspeclist(fl, const_UNIQ)
CLUREF fl;
CLUREF const_UNIQ;
    {
    errcode err;
    errcode ecode2;
    CLUREF each_f;
        if (g_const_own_init == 0) {
            err = g_const_own_init_proc();
            if (err != ERR_ok) goto ex_0;
            }
    enter_proc(117);

  LINE(118);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    CLUREF T_1_3;
        T_1_2.num = fl.vec->size; 
        T_1_3 = fl;
        for (T_1_1.num = 1; T_1_1.num <= T_1_2.num; T_1_1.num++) {
            each_f.num = T_1_3.vec->data[T_1_1.num - 1];

  LINE(119);
            {
            err = g_constOPfind_const_field(each_f, const_UNIQ);
            if (err != ERR_ok) goto ex_0;
            }
        }
    }
    end_inline_for_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 find_const_fieldspeclist ****/


/**** BEGIN PROCEDURE find_const_exprs ****/

errcode g_constOPfind_const_exprs(exp, const_UNIQ)
CLUREF exp;
CLUREF const_UNIQ;
    {
    errcode err;
    errcode ecode2;
    CLUREF ct;
    CLUREF cop;
    CLUREF sel;
    CLUREF a;
    CLUREF s;
    CLUREF this_field;
    CLUREF c;
    CLUREF inv;
    CLUREF e;
    CLUREF t;
    CLUREF ex;
        if (g_const_own_init == 0) {
            err = g_const_own_init_proc();
            if (err != ERR_ok) goto ex_0;
            }
    enter_proc(125);

  LINE(130);
    {
    CLUREF T_1_1;
    err = exprOPget_abs(exp, &T_1_1);
    if (err != ERR_ok) goto ex_0;
    switch (T_1_1.cell->tag) {
    case 3: 
         {CLUREF T_1_2;
        T_1_2.num = T_1_1.cell->value;
        ct.num = T_1_2.num;
            break;
            }
    case 20: 
         {CLUREF T_1_3;
        T_1_3.num = T_1_1.cell->value;
        cop.num = T_1_3.num;

  LINE(145);
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            T_2_1.num = cop.vec->data[2];
            err = typespecOPget_abs(T_2_1, &T_2_2);
            if (err != ERR_ok) goto ex_0;
            switch (T_2_2.cell->tag) {
            case 7: 
                 {CLUREF T_2_3;
                T_2_3.num = T_2_2.cell->value;
                sel.num = T_2_3.num;

  LINE(147);
                    {
                    CLUREF T_3_1;
                    CLUREF T_3_2;
                    CLUREF T_3_3;
                    T_3_1.num = sel.vec->data[0];
                    T_3_2.num = cop.vec->data[0];
                    err = parmd_op(T_3_1, T_3_2, &T_3_3);
                    if (err != ERR_ok) goto ex_0;
                    if (T_3_3.num == true) {
                        }
                        }/* end if */
                    break;
                    }
            case 2: 
                 {CLUREF T_2_4;
                T_2_4.num = T_2_2.cell->value;
                a.num = T_2_4.num;
                    break;
                    }
            case 3: 
            case 8: 
                 {CLUREF T_2_5;
                T_2_5.num = T_2_2.cell->value;
                ct.num = T_2_5.num;

  LINE(161);
                    {
                    CLUREF T_3_1;
                    T_3_1.num = cop.vec->data[1];
                    err = g_constOPfind_const_exprlist(T_3_1, const_UNIQ);
                    if (err != ERR_ok) goto ex_0;
                    }

  LINE(162);
                    {
                    CLUREF T_3_1;
                    T_3_1.num = ct.vec->data[1];
                    err = g_constOPfind_const_exprlist(T_3_1, const_UNIQ);
                    if (err != ERR_ok) goto ex_0;
                    }
                    break;
                    }
            case 5: 
                 {
                    break;
                    }
            default: {
            }
            }
            }
            break;
            }
    case 23: 
         {CLUREF T_1_4;
        T_1_4.num = T_1_1.cell->value;
        s.num = T_1_4.num;

  LINE(172);
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            CLUREF T_2_3;
            T_2_1.num = s.vec->data[1];
            err = typespecOPget_abs(T_2_1, &T_2_2);
            if (err != ERR_ok) goto ex_0;
            if (T_2_2.cell->tag == 7) T_2_3.num = true; else T_2_3.num = false;
            if (T_2_3.num == true) {

  LINE(173);
                {
                    {CLUREF T_3_1;
                    CLUREF T_3_2;
                    CLUREF T_3_3;
                    T_3_1.num = s.vec->data[1];
                    err = typespecOPget_abs(T_3_1, &T_3_2);
                    if (err != ERR_ok) goto ex_0;
                    if (T_3_2.cell->tag != 7) {err = ERR_wrong_tag; goto ex_0;}
                    T_3_3.num = T_3_2.cell->value;
                    sel.num = T_3_3.num;
                    }
                    }

  LINE(174);
                {
                CLUREF T_3_1;
                CLUREF T_3_2;
                CLUREF T_3_3;
                CLUREF T_3_4;
                    T_3_1.num = s.vec->data[0];
                    T_3_3.num = T_3_1.vec->size; 
                    T_3_4 = T_3_1;
                    for (T_3_2.num = 1; T_3_2.num <= T_3_3.num; T_3_2.num++) {
                        this_field.num = T_3_4.vec->data[T_3_2.num - 1];

  LINE(175);
                        {
                        CLUREF T_4_1;
                        T_4_1.num = this_field.vec->data[2];
                        err = g_constOPfind_const_exprs(T_4_1, const_UNIQ);
                        if (err != ERR_ok) goto ex_0;
                        }
                    }
                }
                end_inline_for_1:;
                }
                }/* end if */
            break;
            }
    case 1: 
         {CLUREF T_1_5;
        T_1_5.num = T_1_1.cell->value;
        a.num = T_1_5.num;

  LINE(182);
            {
            CLUREF T_2_1;
            T_2_1.num = a.vec->data[0];
            err = g_constOPfind_const_exprlist(T_2_1, const_UNIQ);
            if (err != ERR_ok) goto ex_0;
            }
            break;
            }
    case 6: 
         {CLUREF T_1_6;
        T_1_6.num = T_1_1.cell->value;
        c.num = T_1_6.num;

  LINE(185);
            {
            CLUREF T_2_1;
            T_2_1.num = c.vec->data[0];
            err = g_constOPfind_const_exprs(T_2_1, const_UNIQ);
            if (err != ERR_ok) goto ex_0;
            }

  LINE(186);
            {
            CLUREF T_2_1;
            T_2_1.num = c.vec->data[1];
            err = g_constOPfind_const_exprs(T_2_1, const_UNIQ);
            if (err != ERR_ok) goto ex_0;
            }
            break;
            }
    case 8: 
         {CLUREF T_1_7;
        T_1_7.num = T_1_1.cell->value;
        c.num = T_1_7.num;

  LINE(188);
            {
            CLUREF T_2_1;
            T_2_1.num = c.vec->data[0];
            err = g_constOPfind_const_exprs(T_2_1, const_UNIQ);
            if (err != ERR_ok) goto ex_0;
            }

  LINE(189);
            {
            CLUREF T_2_1;
            T_2_1.num = c.vec->data[1];
            err = g_constOPfind_const_exprs(T_2_1, const_UNIQ);
            if (err != ERR_ok) goto ex_0;
            }
            break;
            }
    case 16: 
         {CLUREF T_1_8;
        T_1_8.num = T_1_1.cell->value;
        inv.num = T_1_8.num;

  LINE(191);
            {
            CLUREF T_2_1;
            T_2_1.num = inv.vec->data[0];
            err = g_constOPfind_const_exprs(T_2_1, const_UNIQ);
            if (err != ERR_ok) goto ex_0;
            }

  LINE(192);
            {
            CLUREF T_2_1;
            T_2_1.num = inv.vec->data[1];
            err = g_constOPfind_const_exprlist(T_2_1, const_UNIQ);
            if (err != ERR_ok) goto ex_0;
            }
            break;
            }
    case 27: 
         {CLUREF T_1_9;
        T_1_9.num = T_1_1.cell->value;
        e.num = T_1_9.num;

  LINE(194);
            {
            err = g_constOPfind_const_exprs(e, const_UNIQ);
            if (err != ERR_ok) goto ex_0;
            }
            break;
            }
    case 9: 
         {CLUREF T_1_10;
        T_1_10.num = T_1_1.cell->value;
        e.num = T_1_10.num;

  LINE(196);
            {
            err = g_constOPfind_const_exprs(e, const_UNIQ);
            if (err != ERR_ok) goto ex_0;
            }
            break;
            }
    case 25: 
         {CLUREF T_1_11;
        T_1_11.num = T_1_1.cell->value;
        t.num = T_1_11.num;

  LINE(198);
            {
            CLUREF T_2_1;
            err = typespecOPget_abs(t, &T_2_1);
            if (err != ERR_ok) goto ex_0;
            switch (T_2_1.cell->tag) {
            case 7: 
                 {CLUREF T_2_2;
                T_2_2.num = T_2_1.cell->value;
                sel.num = T_2_2.num;
                    break;
                    }
            case 2: 
                 {CLUREF T_2_3;
                T_2_3.num = T_2_1.cell->value;
                a.num = T_2_3.num;

  LINE(206);
                    {
                    CLUREF T_3_1;
                    CLUREF T_3_2;
                    T_3_1.num = a.vec->data[1];
                    err = parmd_dus(T_3_1, &T_3_2);
                    if (err != ERR_ok) goto ex_0;
                    if (T_3_2.num == true) {
                        }
                        }/* end if */
                    break;
                    }
            case 3: 
            case 8: 
                 {CLUREF T_2_4;
                T_2_4.num = T_2_1.cell->value;
                ct.num = T_2_4.num;

  LINE(214);
                    {
                    CLUREF T_3_1;
                    CLUREF T_3_2;
                    T_3_1.num = ct.vec->data[0];
                    err = parmd_dus(T_3_1, &T_3_2);
                    if (err != ERR_ok) goto ex_0;
                    if (T_3_2.num == true) {
                        }
                        }/* end if */
                    break;
                    }
            case 5: 
                 {
                    break;
                    }
            case 1: 
                 {
                    break;
                    }
            default: {
            }
            }
            }
            break;
            }
    case 24: 
         {CLUREF T_1_12;
        T_1_12.num = T_1_1.cell->value;
        s.num = T_1_12.num;

  LINE(226);
            {
            CLUREF T_2_1;
            CellAlloc(2, s.num, T_2_1);
            {
            if ((const_UNIQ.array->int_low + const_UNIQ.array->ext_size + 1) < const_UNIQ.array->int_size) {
                const_UNIQ.array->store->data[const_UNIQ.array->int_low + const_UNIQ.array->ext_size] = T_2_1.num;
                const_UNIQ.array->ext_size++; const_UNIQ.array->ext_high++;}
            else {
                err = arrayOPaddh(const_UNIQ, T_2_1);
                if (err != ERR_ok) goto ex_0;}
            }
            }
            break;
            }
    case 26: 
         {CLUREF T_1_13;
        T_1_13.num = T_1_1.cell->value;
        ex.num = T_1_13.num;
            break;
            }
    case 2: 
         {CLUREF T_1_14;
        T_1_14.num = T_1_1.cell->value;
        ex.num = T_1_14.num;

  LINE(231);
            {
            err = g_constOPfind_const_exprs(ex, const_UNIQ);
            if (err != ERR_ok) goto ex_0;
            }
            break;
            }
    default: {
    }
    }
    }
    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 find_const_exprs ****/


/**** BEGIN PROCEDURE find_const_field ****/

errcode g_constOPfind_const_field(f, const_UNIQ)
CLUREF f;
CLUREF const_UNIQ;
    {
    errcode err;
    errcode ecode2;
    CLUREF ct;
    CLUREF sel;
    CLUREF a;
        if (g_const_own_init == 0) {
            err = g_const_own_init_proc();
            if (err != ERR_ok) goto ex_0;
            }
    enter_proc(239);

  LINE(242);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    T_1_1.num = f.vec->data[1];
    err = typespecOPget_abs(T_1_1, &T_1_2);
    if (err != ERR_ok) goto ex_0;
    switch (T_1_2.cell->tag) {
    case 3: 
    case 8: 
         {CLUREF T_1_3;
        T_1_3.num = T_1_2.cell->value;
        ct.num = T_1_3.num;

  LINE(245);
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            CLUREF T_2_3;
            T_2_1.num = ct.vec->data[1];
            T_2_2.num = T_2_1.vec->size;
            T_2_3.num = (T_2_2.num > 0)? true : false;
            if (T_2_3.num == true) {
                }
            else {

  LINE(250);
                {
                CLUREF T_3_1;
                CLUREF T_3_2;
                T_3_1.num = ct.vec->data[0];
                err = parmd_dus(T_3_1, &T_3_2);
                if (err != ERR_ok) goto ex_0;
                if (T_3_2.num == true) {
                    }
                    }/* end if */
                }}/* end if */
            break;
            }
    case 7: 
         {CLUREF T_1_4;
        T_1_4.num = T_1_2.cell->value;
        sel.num = T_1_4.num;

  LINE(258);
            {
            CLUREF T_2_1;
            T_2_1.num = sel.vec->data[1];
            err = g_constOPfind_const_fieldspeclist(T_2_1, const_UNIQ);
            if (err != ERR_ok) goto ex_0;
            }
            break;
            }
    case 2: 
         {CLUREF T_1_5;
        T_1_5.num = T_1_2.cell->value;
        a.num = T_1_5.num;
            break;
            }
    case 5: 
    case 4: 
    case 9: 
    case 1: 
    case 11: 
    case 10: 
    case 6: 
         {
            break;
            }
    }
    }
    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 find_const_field ****/


/**** BEGIN PROCEDURE const_uniq ****/

errcode g_constOPconst_uniq(const_UNIQ, ret_1)
CLUREF const_UNIQ;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
    CLUREF low;
    CLUREF size;
    CLUREF newconst;
    CLUREF index;
    CLUREF possible_cst;
    CLUREF each_cst;
    CLUREF each_s;
        if (g_const_own_init == 0) {
            err = g_const_own_init_proc();
            if (err != ERR_ok) goto ex_0;
            }
    enter_proc(269);

  LINE(270);
    {
        {CLUREF T_1_1;
        T_1_1.num = const_UNIQ.array->ext_low;
        low.num = T_1_1.num;
        }
        }

  LINE(271);
    {
        {CLUREF T_1_1;
        T_1_1.num = const_UNIQ.array->ext_size;
        size.num = T_1_1.num;
        }
        }

  LINE(272);
    {
    CLUREF T_1_1;
    T_1_1.num = (size.num <= 1)? true : false;
    if (T_1_1.num == true) {
        {
        {
        ret_1->num = const_UNIQ.num;
        }
        {signal (ERR_ok);}}
        }
        }/* end if */

  LINE(273);
    {
        {CLUREF T_1_1;
        err = arrayOPnew(&T_1_1);
        if (err != ERR_ok) goto ex_0;
        newconst.num = T_1_1.num;
        }
        }

  LINE(274);
    {
    CLUREF T_1_1;
    if (low.num < const_UNIQ.array->ext_low || low.num > const_UNIQ.array->ext_high ) {
        err = ERR_bounds;
        goto ex_0;}
    T_1_1.num = const_UNIQ.array->store->data[low.num - const_UNIQ.array->ext_low + const_UNIQ.array->int_low];
    {
    if ((newconst.array->int_low + newconst.array->ext_size + 1) < newconst.array->int_size) {
        newconst.array->store->data[newconst.array->int_low + newconst.array->ext_size] = T_1_1.num;
        newconst.array->ext_size++; newconst.array->ext_high++;}
    else {
        err = arrayOPaddh(newconst, T_1_1);
        if (err != ERR_ok) goto ex_0;}
    }
    }

  LINE(277);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    CLUREF T_1_3;
        T_1_1.num = low.num + 1;
         if ((T_1_1.num > 0 && low.num < 0 && 1 < 0) || 
             (T_1_1.num < 0 && low.num > 0 && 1 > 0)) {
            err = ERR_overflow;
            goto ex_0;}
        T_1_3.num = size.num;
        for (T_1_2.num = T_1_1.num; T_1_2.num <= T_1_3.num; T_1_2.num++) {
            index.num = T_1_2.num;

  LINE(279);
            {
                {CLUREF T_2_1;
                if (index.num < const_UNIQ.array->ext_low || index.num > const_UNIQ.array->ext_high ) {
                    err = ERR_bounds;
                    goto ex_0;}
                T_2_1.num = const_UNIQ.array->store->data[index.num - const_UNIQ.array->ext_low + const_UNIQ.array->int_low];
                possible_cst.num = T_2_1.num;
                }
                }

  LINE(280);
            {
            CLUREF T_3_1;
            CLUREF T_3_2;
            CLUREF T_3_3;
                T_3_2.num = newconst.array->ext_high; 
                T_3_3 = newconst;
                for (T_3_1.num = newconst.array->ext_low; T_3_1.num <= T_3_2.num; T_3_1.num++) {
                    if (T_3_1.num > T_3_3.array->ext_high || T_3_1.num < T_3_3.array->ext_low) {
                        err = ERR_failure;
                        elist[0].str = array_bounds_exception_STRING;
                        goto ex_1;}
                    each_cst.num = T_3_3.array->store->data[T_3_1.num - T_3_3.array->ext_low + T_3_3.array->int_low];

  LINE(281);
                    {
                    switch (each_cst.cell->tag) {
                    case 2: 
                         {CLUREF T_4_1;
                        T_4_1.num = each_cst.cell->value;
                        each_s.num = T_4_1.num;

  LINE(283);
                            {
                            CLUREF T_5_1;
                            CLUREF T_5_2;
                            if (possible_cst.cell->tag == 2) T_5_1.num = true; else T_5_1.num = false;
                            T_5_2.num = T_5_1.num ^ 1;
                            if (T_5_2.num == true) {
                                continue;
                                }
                                }/* end if */

  LINE(284);
                            {
                            CLUREF T_5_1;
                            CLUREF T_5_2;
                            if (possible_cst.cell->tag != 2) {err = ERR_wrong_tag; goto ex_1;}
                            T_5_1.num = possible_cst.cell->value;
                            T_5_2.num = ((each_s.str->size != T_5_1.str->size)? false :
                                !(bcmp(each_s.str->data, T_5_1.str->data, each_s.str->size)));
                            if (T_5_2.num == true) {

  LINE(285);
                                {
                                    err = ERR_cont;
                                    goto ex_1;
                                    }
                                }
                                }/* end if */
                            break;
                            }
                    default: {
                    }
                    }
                    }
                }
            }
            end_inline_for_2:;
                goto end_1;
                ex_1:
                    if ((err == ERR_cont)) {

  LINE(289);
                        continue;
                    }
                    else {
                        goto ex_0;
                    }
                end_1:;

  LINE(290);
            {
            {
            if ((newconst.array->int_low + newconst.array->ext_size + 1) < newconst.array->int_size) {
                newconst.array->store->data[newconst.array->int_low + newconst.array->ext_size] = possible_cst.num;
                newconst.array->ext_size++; newconst.array->ext_high++;}
            else {
                err = arrayOPaddh(newconst, possible_cst);
                if (err != ERR_ok) goto ex_0;}
            }
            }
        }
    }
    end_inline_for_1:;

  LINE(292);
    {
    {
    ret_1->num = newconst.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 const_uniq ****/


/**** BEGIN PROCEDURE g_consts ****/

errcode g_constOPg_consts(e, pass)
CLUREF e;
CLUREF pass;
    {
    errcode err;
    errcode ecode2;
    CLUREF each_cst;
    CLUREF s;
        if (g_const_own_init == 0) {
            err = g_const_own_init_proc();
            if (err != ERR_ok) goto ex_0;
            }
    enter_proc(298);

  LINE(301);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    CLUREF T_1_3;
        T_1_2.num = g_constOPcum_const.array->ext_high; 
        T_1_3 = g_constOPcum_const;
        for (T_1_1.num = g_constOPcum_const.array->ext_low; T_1_1.num <= T_1_2.num; T_1_1.num++) {
            if (T_1_1.num > T_1_3.array->ext_high || T_1_1.num < T_1_3.array->ext_low) {
                err = ERR_failure;
                elist[0].str = array_bounds_exception_STRING;
                goto ex_0;}
            each_cst.num = T_1_3.array->store->data[T_1_1.num - T_1_3.array->ext_low + T_1_3.array->int_low];

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

  LINE(305);
                {
                switch (each_cst.cell->tag) {
                case 2: 
                     {CLUREF T_3_1;
                    T_3_1.num = each_cst.cell->value;
                    s.num = T_3_1.num;

  LINE(307);
                        {
                        err = g_constOPg_str_decl(e, s);
                        if (err != ERR_ok) goto ex_0;
                        }
                        break;
                        }
                default: {
                }
                }
                }
                }
            else {

  LINE(321);
                {
                switch (each_cst.cell->tag) {
                case 2: 
                     {CLUREF T_3_1;
                    T_3_1.num = each_cst.cell->value;
                    s.num = T_3_1.num;

  LINE(323);
                        {
                        err = g_constOPg_str_cons(e, s);
                        if (err != ERR_ok) goto ex_0;
                        }
                        break;
                        }
                default: {
                }
                }
                }
                }}/* end if */
        }
    }
    end_inline_for_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 g_consts ****/

static int g_constOPg_str_decl_own_init = 0;

/**** BEGIN PROCEDURE g_str_decl ****/

errcode g_constOPg_str_decl(e, s)
CLUREF e;
CLUREF s;
    {
    errcode err;
    errcode ecode2;
        if (g_constOPg_str_decl_own_init == 0) {
        if (g_const_own_init == 0) {
            err = g_const_own_init_proc();
            if (err != ERR_ok) goto ex_0;
            }
        g_constOPg_str_decl_own_init = 1;
    }
    enter_proc(330);

  LINE(331);
    {
    CLUREF T_1_1;
    err = g_envOPadd_str(s, &T_1_1);
    if (err != ERR_ok) goto ex_0;
    if (T_1_1.num == true) {

  LINE(332);
        {
        CLUREF T_2_1;
        CLUREF T_2_2;
        CLUREF T_2_3;
        err = s_string_embed(s, &T_2_1);
        if (err != ERR_ok) goto ex_0;
        err = stringOPconcat(STR_CLUREF_040STR_137, T_2_1, &T_2_2);
        if (err != ERR_ok) goto ex_0;
        err = stringOPconcat(T_2_2, STR__073, &T_2_3);
        if (err != ERR_ok) goto ex_0;
        err = g_envOPputl(e, T_2_3);
        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 g_str_decl ****/

static int g_constOPg_str_cons_own_init = 0;

/**** BEGIN PROCEDURE g_str_cons ****/

errcode g_constOPg_str_cons(e, s)
CLUREF e;
CLUREF s;
    {
    errcode err;
    errcode ecode2;
    CLUREF size;
        if (g_constOPg_str_cons_own_init == 0) {
        if (g_const_own_init == 0) {
            err = g_const_own_init_proc();
            if (err != ERR_ok) goto ex_0;
            }
        g_constOPg_str_cons_own_init = 1;
    }
    enter_proc(336);

  LINE(337);
    {
        {CLUREF T_1_1;
        err = stringOPsize(s, &T_1_1);
        if (err != ERR_ok) goto ex_0;
        size.num = T_1_1.num;
        }
        }

  LINE(338);
    {
    CLUREF T_1_1;
    err = int_constOPexists(size, &T_1_1);
    if (err != ERR_ok) goto ex_0;
    if (T_1_1.num == true) {

  LINE(340);
        {
        err = g_envOPputs(e, STR_stringOPcons_050);
        if (err != ERR_ok) goto ex_0;
        }

  LINE(341);
        {
        err = g_string(e, s);
        if (err != ERR_ok) goto ex_0;
        }

  LINE(342);
        {
        CLUREF T_2_1;
        CLUREF T_2_2;
        CLUREF T_2_3;
        err = stringOPsize(s, &T_2_1);
        if (err != ERR_ok) goto ex_0;
        err = intOPunparse(T_2_1, &T_2_2);
        if (err != ERR_ok) goto ex_0;
        err = stringOPconcat(STR__054_040CLU_1371_054_040CLU_137, T_2_2, &T_2_3);
        if (err != ERR_ok) goto ex_0;
        err = g_envOPputs(e, T_2_3);
        if (err != ERR_ok) goto ex_0;
        }

  LINE(343);
        {
        CLUREF T_2_1;
        CLUREF T_2_2;
        CLUREF T_2_3;
        err = s_string_name(s, &T_2_1);
        if (err != ERR_ok) goto ex_0;
        err = stringOPconcat(STR__054_040_046, T_2_1, &T_2_2);
        if (err != ERR_ok) goto ex_0;
        err = stringOPconcat(T_2_2, STR__051_073, &T_2_3);
        if (err != ERR_ok) goto ex_0;
        err = g_envOPputl(e, T_2_3);
        if (err != ERR_ok) goto ex_0;
        }
        }
    else {

  LINE(345);
        {
        CLUREF T_2_1;
        CLUREF T_2_2;
        CLUREF T_2_3;
        err = intOPunparse(size, &T_2_1);
        if (err != ERR_ok) goto ex_0;
        err = stringOPconcat(STR_CLU_137string_137size_056num_040_075_040, T_2_1, &T_2_2);
        if (err != ERR_ok) goto ex_0;
        err = stringOPconcat(T_2_2, STR__073, &T_2_3);
        if (err != ERR_ok) goto ex_0;
        err = g_envOPputl(e, T_2_3);
        if (err != ERR_ok) goto ex_0;
        }

  LINE(346);
        {
        err = g_envOPputs(e, STR_stringOPcons_050);
        if (err != ERR_ok) goto ex_0;
        }

  LINE(347);
        {
        err = g_string(e, s);
        if (err != ERR_ok) goto ex_0;
        }

  LINE(348);
        {
        err = g_envOPputs(e, STR__054_040CLU_1371_054_040CLU_137string_137size);
        if (err != ERR_ok) goto ex_0;
        }

  LINE(349);
        {
        CLUREF T_2_1;
        CLUREF T_2_2;
        CLUREF T_2_3;
        err = s_string_name(s, &T_2_1);
        if (err != ERR_ok) goto ex_0;
        err = stringOPconcat(STR__054_040_046, T_2_1, &T_2_2);
        if (err != ERR_ok) goto ex_0;
        err = stringOPconcat(T_2_2, STR__051_073, &T_2_3);
        if (err != ERR_ok) goto ex_0;
        err = g_envOPputl(e, T_2_3);
        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 g_str_cons ****/

typedef struct{
    int count;
    OWNPTR type_owns;
    OWNPTR op_owns;
    struct OP_ENTRY entry[3];
} g_const_OPS;

CLU_proc g_const_oe_exist = {{0,0,0,0}, g_constOPexist, 0};
CLU_proc g_const_oe_find_consts = {{0,0,0,0}, g_constOPfind_consts, 0};
CLU_proc g_const_oe_g_consts = {{0,0,0,0}, g_constOPg_consts, 0};

g_const_OPS g_const_ops_actual = {3, (OWNPTR)&g_const_own_init, (OWNPTR)&g_const_own_init, {
    {&g_const_oe_exist, "exist"},
    {&g_const_oe_find_consts, "find_consts"},
    {&g_const_oe_g_consts, "g_consts"}}};

struct OPS *g_const_ops = (struct OPS *)&g_const_ops_actual;

/**** END CLUSTER g_const ****/

/**** BEGIN CLUSTER const_defn ****/

static int const_defn_own_init = 0;
OWN_req const_defn_ownreqs = {0,0};
CLUREF const_defnOPold;
CLUREF const_defnOPactive;
errcode const_defn_own_init_proc()
{
    errcode err;
    enter_own_init_proc();
        if (const_defn_own_init == 0) {
        const_defn_own_init = 1;
        {
            {CLUREF T_0_1;
            err = arrayOPnew(&T_0_1);
            if (err != ERR_ok) goto ex_0;
            const_defnOPold.num = T_0_1.num;
            }
            }
        {
            {const_defnOPactive.tf = false;
            }
            }
        {signal(ERR_ok);}
    ex_0: pclu_unhandled(err); {signal(ERR_failure);}
        }
    }


/**** BEGIN PROCEDURE start ****/

errcode const_defnOPstart()
    {
    errcode err;
    errcode ecode2;
        if (const_defn_own_init == 0) {
            err = const_defn_own_init_proc();
            if (err != ERR_ok) goto ex_0;
            }
    enter_proc(489);

  LINE(490);
    {
    CLUREF T_1_1;
    err = arrayOPnew(&T_1_1);
    if (err != ERR_ok) goto ex_0;
    const_defnOPold.num = T_1_1.num;
    }

  LINE(491);
    {
    const_defnOPactive.tf = true;
    }

  LINE(492);
    {
    {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: {signal(ERR_ok);}
    }

/**** END PROCEDURE start ****/


/**** BEGIN PROCEDURE test ****/

errcode const_defnOPtest(s, ret_1)
CLUREF s;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
    CLUREF each_s;
        if (const_defn_own_init == 0) {
            err = const_defn_own_init_proc();
            if (err != ERR_ok) goto ex_0;
            }
    enter_proc(495);

  LINE(496);
    {
    CLUREF T_1_1;
    T_1_1.num = const_defnOPactive.num ^ 1;
    if (T_1_1.num == true) {
        {
        {
        ret_1->tf = true;
        }
        {signal (ERR_ok);}}
        }
        }/* end if */

  LINE(497);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    CLUREF T_1_3;
        T_1_2.num = const_defnOPold.array->ext_high; 
        T_1_3 = const_defnOPold;
        for (T_1_1.num = const_defnOPold.array->ext_low; T_1_1.num <= T_1_2.num; T_1_1.num++) {
            if (T_1_1.num > T_1_3.array->ext_high || T_1_1.num < T_1_3.array->ext_low) {
                err = ERR_failure;
                elist[0].str = array_bounds_exception_STRING;
                goto ex_0;}
            each_s.num = T_1_3.array->store->data[T_1_1.num - T_1_3.array->ext_low + T_1_3.array->int_low];

  LINE(498);
            {
            CLUREF T_2_1;
            T_2_1.num = ((each_s.str->size != s.str->size)? false :
                !(bcmp(each_s.str->data, s.str->data, each_s.str->size)));
            if (T_2_1.num == true) {
                {
                {
                ret_1->tf = false;
                }
                {signal (ERR_ok);}}
                }
                }/* end if */
        }
    }
    end_inline_for_1:;

  LINE(500);
    {
    {
    if ((const_defnOPold.array->int_low + const_defnOPold.array->ext_size + 1) < const_defnOPold.array->int_size) {
        const_defnOPold.array->store->data[const_defnOPold.array->int_low + const_defnOPold.array->ext_size] = s.num;
        const_defnOPold.array->ext_size++; const_defnOPold.array->ext_high++;}
    else {
        err = arrayOPaddh(const_defnOPold, s);
        if (err != ERR_ok) goto ex_0;}
    }
    }

  LINE(501);
    {
    {
    ret_1->tf = true;
    }
    {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 test ****/


/**** BEGIN PROCEDURE stop ****/

errcode const_defnOPstop()
    {
    errcode err;
    errcode ecode2;
        if (const_defn_own_init == 0) {
            err = const_defn_own_init_proc();
            if (err != ERR_ok) goto ex_0;
            }
    enter_proc(504);

  LINE(505);
    {
    const_defnOPactive.tf = false;
    }
    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 stop ****/

typedef struct{
    int count;
    OWNPTR type_owns;
    OWNPTR op_owns;
    struct OP_ENTRY entry[3];
} const_defn_OPS;

CLU_proc const_defn_oe_start = {{0,0,0,0}, const_defnOPstart, 0};
CLU_proc const_defn_oe_stop = {{0,0,0,0}, const_defnOPstop, 0};
CLU_proc const_defn_oe_test = {{0,0,0,0}, const_defnOPtest, 0};

const_defn_OPS const_defn_ops_actual = {3, (OWNPTR)&const_defn_own_init, (OWNPTR)&const_defn_own_init, {
    {&const_defn_oe_start, "start"},
    {&const_defn_oe_stop, "stop"},
    {&const_defn_oe_test, "test"}}};

struct OPS *const_defn_ops = (struct OPS *)&const_defn_ops_actual;

/**** END CLUSTER const_defn ****/
