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

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


extern errcode sequenceOPelements();
extern errcode stmtOPget_abs();
extern errcode g_proc_exprs();
extern errcode recordOPget_3();
extern errcode recordOPget_1();
extern errcode g_proc_exprlist();
extern errcode recordOPget_2();
extern errcode g_expr_proc_names();
extern errcode exprOPget_typespec();
extern errcode oneofOPis_3();
extern errcode typespecOPget_abs();
extern errcode duOPget_common();
extern errcode oneofOPvalue_3();
extern errcode boolOPnot();
extern errcode stringOPempty();
extern errcode addh_if_new();
extern errcode stringOPconcat();
extern errcode sequenceOPfill();
extern struct REQS *addh_if_new_of_ty_reqs;
extern struct OPS *string_ops;
extern OWN_req addh_if_new_ownreqs;
struct OPS *addh_if_new_of_string_table;
struct OPS *addh_if_new_of_string_ops;
struct OPS *addh_if_new_of_string_ops;
OWNPTR addh_if_new_of_string_owns;
CLUREF STR_;
CLUREF STR_OP;
CLUREF STR_is_137;
static int g_expr_proc_names_own_init = 0;

/**** BEGIN PROCEDURE g_expr_proc_names ****/

errcode g_expr_proc_names(a, bod)
CLUREF a;
CLUREF bod;
    {
    errcode err;
    errcode ecode2;
    CLUREF s;
    CLUREF di;
    CLUREF inv;
    CLUREF as;
    CLUREF w;
    CLUREF f;
    CLUREF i;
    CLUREF arm;
    CLUREF b;
    CLUREF t;
    CLUREF ty;
    CLUREF nm;
    CLUREF each_nm;
    CLUREF el;
    CLUREF c;
    CLUREF e;
    CLUREF ah;
    CLUREF o;
    CLUREF r;
        if (g_expr_proc_names_own_init == 0) {
        add_parm_info_type(0, string_ops, addh_if_new_of_ty_reqs);
        find_prociter_instance(addh_if_new, 1, &addh_if_new_ownreqs, &(addh_if_new_of_string_ops));
        stringOPcons("", CLU_1, CLU_0, &STR_);
        stringOPcons("OP", CLU_1, CLU_2, &STR_OP);
        stringOPcons("is_", CLU_1, CLU_3, &STR_is_137);
        g_expr_proc_names_own_init = 1;
    }
    enter_proc(11);

  LINE(13);
    {
    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(14);
            {
            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(16);
                    {
                    CLUREF T_3_1;
                    T_3_1.num = di.vec->data[2];
                    err = g_proc_exprs(a, T_3_1);
                    if (err != ERR_ok) goto ex_0;
                    }
                    break;
                    }
            case 13: 
                 {CLUREF T_2_3;
                T_2_3.num = T_2_1.cell->value;
                inv.num = T_2_3.num;

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

  LINE(19);
                    {
                    CLUREF T_3_1;
                    T_3_1.num = inv.vec->data[1];
                    err = g_proc_exprlist(a, T_3_1);
                    if (err != ERR_ok) goto ex_0;
                    }
                    break;
                    }
            case 1: 
                 {CLUREF T_2_4;
                T_2_4.num = T_2_1.cell->value;
                as.num = T_2_4.num;

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

  LINE(23);
                    {
                    CLUREF T_3_1;
                    T_3_1.num = as.vec->data[1];
                    err = g_proc_exprs(a, T_3_1);
                    if (err != ERR_ok) goto ex_0;
                    }

  LINE(24);
                    {
                    CLUREF T_3_1;
                    T_3_1.num = as.vec->data[0];
                    err = g_proc_exprs(a, T_3_1);
                    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(26);
                    {
                    CLUREF T_3_1;
                    T_3_1.num = w.vec->data[1];
                    err = g_proc_exprs(a, T_3_1);
                    if (err != ERR_ok) goto ex_0;
                    }

  LINE(27);
                    {
                    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_expr_proc_names(a, T_3_2);
                    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(29);
                    {
                    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_proc_exprs(a, T_3_2);
                    if (err != ERR_ok) goto ex_0;
                    }

  LINE(30);
                    {
                    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_proc_exprlist(a, T_3_2);
                    if (err != ERR_ok) goto ex_0;
                    }

  LINE(31);
                    {
                    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_expr_proc_names(a, T_3_2);
                    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(33);
                    {
                    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(34);
                            {
                            CLUREF T_4_1;
                            T_4_1.num = arm.vec->data[2];
                            err = g_proc_exprs(a, T_4_1);
                            if (err != ERR_ok) goto ex_0;
                            }

  LINE(35);
                            {
                            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_expr_proc_names(a, T_4_2);
                            if (err != ERR_ok) goto ex_0;
                            }
                        }
                    }
                    end_inline_for_2:;

  LINE(37);
                    {
                    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(39);
                            {
                            CLUREF T_4_1;
                            T_4_1.num = b.vec->data[1];
                            err = g_expr_proc_names(a, T_4_1);
                            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(43);
                    {
                    CLUREF T_3_1;
                    T_3_1.num = t.vec->data[1];
                    err = g_proc_exprs(a, T_3_1);
                    if (err != ERR_ok) goto ex_0;
                    }

  LINE(46);
                    {
                        {CLUREF T_3_1;
                        CLUREF T_3_2;
                        T_3_1.num = t.vec->data[1];
                        err = exprOPget_typespec(T_3_1, &T_3_2);
                        if (err != ERR_ok) goto ex_0;
                        ty.num = T_3_2.num;
                        }
                        }

  LINE(47);
                    {
                        {nm = STR_;
                        }
                        }

  LINE(48);
                    {
                    CLUREF T_3_1;
                    CLUREF T_3_2;
                    err = typespecOPget_abs(ty, &T_3_1);
                    if (err != ERR_ok) goto ex_0;
                    if (T_3_1.cell->tag == 3) T_3_2.num = true; else T_3_2.num = false;
                    if (T_3_2.num == true) {

  LINE(49);
                        {
                        CLUREF T_4_1;
                        CLUREF T_4_2;
                        CLUREF T_4_3;
                        CLUREF T_4_4;
                        err = typespecOPget_abs(ty, &T_4_1);
                        if (err != ERR_ok) goto ex_0;
                        if (T_4_1.cell->tag != 3) {err = ERR_wrong_tag; goto ex_0;}
                        T_4_2.num = T_4_1.cell->value;
                        T_4_3.num = T_4_2.vec->data[0];
                        err = duOPget_common(T_4_3, &T_4_4);
                        if (err != ERR_ok) goto ex_0;
                        nm.num = T_4_4.num;
                        }
                        }
                        }/* end if */

  LINE(51);
                    {
                    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(54);
                            {
                            CLUREF T_4_1;
                            CLUREF T_4_2;
                            err = stringOPempty(nm, &T_4_1);
                            if (err != ERR_ok) goto ex_0;
                            T_4_2.num = T_4_1.num ^ 1;
                            if (T_4_2.num == true) {

  LINE(55);
                                {
                                CLUREF T_5_1;
                                CLUREF T_5_2;
                                CLUREF T_5_3;
                                CLUREF T_5_4;
                                    T_5_1.num = arm.vec->data[2];
                                    T_5_3.num = T_5_1.vec->size; 
                                    T_5_4 = T_5_1;
                                    for (T_5_2.num = 1; T_5_2.num <= T_5_3.num; T_5_2.num++) {
                                        each_nm.num = T_5_4.vec->data[T_5_2.num - 1];

  LINE(56);
                                        {
                                        CLUREF T_6_1;
                                        CLUREF T_6_2;
                                        CLUREF T_6_3;
                                        err = stringOPconcat(nm, STR_OP, &T_6_1);
                                        if (err != ERR_ok) goto ex_0;
                                        err = stringOPconcat(T_6_1, STR_is_137, &T_6_2);
                                        if (err != ERR_ok) goto ex_0;
                                        err = stringOPconcat(T_6_2, each_nm, &T_6_3);
                                        if (err != ERR_ok) goto ex_0;
                                        generic_CLU_proc.type_owns = 0;
                                        generic_CLU_proc.op_owns = (int)addh_if_new_of_string_ops->op_owns;
                                        generic_CLU_proc.proc = addh_if_new;
                                        CUR_PROC_VAR.proc = &generic_CLU_proc;
                                        err = addh_if_new(a, T_6_3);
                                        if (err != ERR_ok) goto ex_0;
                                        }
                                    }
                                }
                                end_inline_for_4:;
                                }
                                }/* end if */

  LINE(59);
                            {
                            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_expr_proc_names(a, T_4_2);
                            if (err != ERR_ok) goto ex_0;
                            }
                        }
                    }
                    end_inline_for_3:;

  LINE(61);
                    {
                    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(63);
                            {
                            CLUREF T_4_1;
                            T_4_1.num = b.vec->data[1];
                            err = g_expr_proc_names(a, T_4_1);
                            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(67);
                    {
                    err = g_proc_exprlist(a, el);
                    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(69);
                    {
                    err = g_proc_exprlist(a, el);
                    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(71);
                    {
                    CLUREF T_3_1;
                    T_3_1.num = c.vec->data[0];
                    err = g_proc_exprlist(a, T_3_1);
                    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(73);
                    {
                    CLUREF T_3_1;
                    T_3_1.num = c.vec->data[0];
                    err = g_proc_exprlist(a, T_3_1);
                    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(75);
                    {
                    CLUREF T_3_1;
                    T_3_1.num = b.vec->data[1];
                    err = g_expr_proc_names(a, T_3_1);
                    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(77);
                    {
                    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_expr_proc_names(a, T_3_2);
                    if (err != ERR_ok) goto ex_0;
                    }

  LINE(78);
                    {
                    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++) {
                            ah.num = T_3_4.vec->data[T_3_2.num - 1];

  LINE(79);
                            {
                            CLUREF T_4_1;
                            CLUREF T_4_2;
                            T_4_1.num = ah.vec->data[0];
                            T_4_2.num = T_4_1.vec->data[1];
                            err = g_expr_proc_names(a, T_4_2);
                            if (err != ERR_ok) goto ex_0;
                            }
                        }
                    }
                    end_inline_for_5:;

  LINE(81);
                    {
                    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;
                        o.num = T_3_2.num;

  LINE(83);
                            {
                            CLUREF T_4_1;
                            CLUREF T_4_2;
                            T_4_1.num = o.vec->data[0];
                            T_4_2.num = T_4_1.vec->data[1];
                            err = g_expr_proc_names(a, T_4_2);
                            if (err != ERR_ok) goto ex_0;
                            }
                            break;
                            }
                    default: {
                    }
                    }
                    }
                    break;
                    }
            case 11: 
                 {CLUREF T_2_16;
                T_2_16.num = T_2_1.cell->value;
                f.num = T_2_16.num;

  LINE(87);
                    {
                    CLUREF T_3_1;
                    T_3_1.num = f.vec->data[0];
                    err = g_proc_exprs(a, T_3_1);
                    if (err != ERR_ok) goto ex_0;
                    }
                    break;
                    }
            case 14: 
                 {CLUREF T_2_17;
                T_2_17.num = T_2_1.cell->value;
                r.num = T_2_17.num;

  LINE(89);
                    {
                    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_expr_proc_names(a, T_3_2);
                    if (err != ERR_ok) goto ex_0;
                    }
                    break;
                    }
            case 6: 
            case 4: 
            case 5: 
            case 2: 
                 {
                    break;
                    }
            }
            }
        }
    }
    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_expr_proc_names ****/



/**** BEGIN PROCEDURE g_proc_exprlist ****/

errcode g_proc_exprlist(a, el)
CLUREF a;
CLUREF el;
    {
    errcode err;
    errcode ecode2;
    CLUREF each_expr;
    enter_proc(95);

  LINE(96);
    {
    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_expr.num = T_1_3.vec->data[T_1_1.num - 1];

  LINE(97);
            {
            err = g_proc_exprs(a, each_expr);
            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 g_proc_exprlist ****/


extern errcode exprOPget_abs();
extern errcode oneofOPis_2();
extern errcode oneofOPvalue_2();
extern errcode charOPequal();
extern errcode stringOPfetch();
extern errcode stringOPsubstr();
extern errcode intOPsub();
extern errcode stringOPsize();
extern errcode oneofOPis_7();
extern errcode oneofOPvalue_7();
extern errcode field_index();
extern errcode intOPequal();
extern errcode intOPunparse();
extern errcode stringOPequal();
struct OPS *addh_if_new_of_string_table;
struct OPS *addh_if_new_of_string_ops;
struct OPS *addh_if_new_of_string_ops;
OWNPTR addh_if_new_of_string_owns;
static int g_proc_exprs_own_init = 0;

/**** BEGIN PROCEDURE g_proc_exprs ****/

errcode g_proc_exprs(a, ex)
CLUREF a;
CLUREF ex;
    {
    errcode err;
    errcode ecode2;
    CLUREF e;
    CLUREF c;
    CLUREF inv;
    CLUREF ar;
    CLUREF each_elt;
    CLUREF xa;
    CLUREF each_field;
    CLUREF ct;
    CLUREF cop;
    CLUREF nm;
    CLUREF ta;
    CLUREF op;
    CLUREF ind;
    CLUREF indstr;
    CLUREF prefix;
    CLUREF at;
        if (g_proc_exprs_own_init == 0) {
        add_parm_info_type(0, string_ops, addh_if_new_of_ty_reqs);
        find_prociter_instance(addh_if_new, 1, &addh_if_new_ownreqs, &(addh_if_new_of_string_ops));
        stringOPcons("OP", CLU_1, CLU_2, &STR_OP);
        stringOPcons("", CLU_1, CLU_0, &STR_);
        g_proc_exprs_own_init = 1;
    }
    enter_proc(101);

  LINE(102);
    {
    CLUREF T_1_1;
    err = exprOPget_abs(ex, &T_1_1);
    if (err != ERR_ok) goto ex_0;
    switch (T_1_1.cell->tag) {
    case 2: 
         {CLUREF T_1_2;
        T_1_2.num = T_1_1.cell->value;
        e.num = T_1_2.num;

  LINE(104);
            {
            err = g_proc_exprs(a, e);
            if (err != ERR_ok) goto ex_0;
            }
            break;
            }
    case 6: 
    case 8: 
         {CLUREF T_1_3;
        T_1_3.num = T_1_1.cell->value;
        c.num = T_1_3.num;

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

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

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

  LINE(110);
            {
            CLUREF T_2_1;
            T_2_1.num = inv.vec->data[1];
            err = g_proc_exprlist(a, T_2_1);
            if (err != ERR_ok) goto ex_0;
            }
            break;
            }
    case 1: 
         {CLUREF T_1_5;
        T_1_5.num = T_1_1.cell->value;
        ar.num = T_1_5.num;

  LINE(112);
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            T_2_1.num = ar.vec->data[1];
            if (T_2_1.cell->tag == 2) T_2_2.num = true; else T_2_2.num = false;
            if (T_2_2.num == true) {

  LINE(113);
                {
                CLUREF T_3_1;
                CLUREF T_3_2;
                T_3_1.num = ar.vec->data[1];
                if (T_3_1.cell->tag != 2) {err = ERR_wrong_tag; goto ex_0;}
                T_3_2.num = T_3_1.cell->value;
                err = g_proc_exprs(a, T_3_2);
                if (err != ERR_ok) goto ex_0;
                }
                }
                }/* end if */

  LINE(114);
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            CLUREF T_2_3;
            CLUREF T_2_4;
                T_2_1.num = ar.vec->data[0];
                T_2_3.num = T_2_1.vec->size; 
                T_2_4 = T_2_1;
                for (T_2_2.num = 1; T_2_2.num <= T_2_3.num; T_2_2.num++) {
                    each_elt.num = T_2_4.vec->data[T_2_2.num - 1];

  LINE(115);
                    {
                    err = g_proc_exprs(a, each_elt);
                    if (err != ERR_ok) goto ex_0;
                    }
                }
            }
            end_inline_for_1:;
            break;
            }
    case 23: 
         {CLUREF T_1_6;
        T_1_6.num = T_1_1.cell->value;
        xa.num = T_1_6.num;

  LINE(118);
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            CLUREF T_2_3;
            CLUREF T_2_4;
                T_2_1.num = xa.vec->data[0];
                T_2_3.num = T_2_1.vec->size; 
                T_2_4 = T_2_1;
                for (T_2_2.num = 1; T_2_2.num <= T_2_3.num; T_2_2.num++) {
                    each_field.num = T_2_4.vec->data[T_2_2.num - 1];

  LINE(119);
                    {
                    CLUREF T_3_1;
                    T_3_1.num = each_field.vec->data[2];
                    err = g_proc_exprs(a, T_3_1);
                    if (err != ERR_ok) goto ex_0;
                    }
                }
            }
            end_inline_for_2:;
            break;
            }
    case 3: 
         {CLUREF T_1_7;
        T_1_7.num = T_1_1.cell->value;
        ct.num = T_1_7.num;

  LINE(122);
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            T_2_1.num = ct.vec->data[0];
            err = duOPget_common(T_2_1, &T_2_2);
            if (err != ERR_ok) goto ex_0;
            generic_CLU_proc.type_owns = 0;
            generic_CLU_proc.op_owns = (int)addh_if_new_of_string_ops->op_owns;
            generic_CLU_proc.proc = addh_if_new;
            CUR_PROC_VAR.proc = &generic_CLU_proc;
            err = addh_if_new(a, T_2_2);
            if (err != ERR_ok) goto ex_0;
            }
            break;
            }
    case 20: 
         {CLUREF T_1_8;
        T_1_8.num = T_1_1.cell->value;
        cop.num = T_1_8.num;

  LINE(124);
            {
                {CLUREF T_2_1;
                T_2_1.num = cop.vec->data[0];
                nm.num = T_2_1.num;
                }
                }

  LINE(125);
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            CLUREF T_2_3;
            err = stringOPfetch(nm, CLU_1, &T_2_1);
            if (err != ERR_ok) goto ex_0;
            T_2_2.ch = '%';
            T_2_3.num = (T_2_1.ch == T_2_2.ch)? true : false;
            if (T_2_3.num == true) {

  LINE(126);
                {
                CLUREF T_3_1;
                CLUREF T_3_2;
                CLUREF T_3_3;
                err = stringOPsize(nm, &T_3_1);
                if (err != ERR_ok) goto ex_0;
                T_3_2.num = T_3_1.num - 1;
                 if ((T_3_2.num >= 0 && T_3_1.num < 0 && (-1) < 0) || 
                     (T_3_2.num <= 0 && T_3_1.num > 0 && (-1) > 0)) {
                    err = ERR_overflow;
                    goto ex_0;}
                err = stringOPsubstr(nm, CLU_2, T_3_2, &T_3_3);
                if (err != ERR_ok) goto ex_0;
                nm.num = T_3_3.num;
                }
                }
                }/* end if */

  LINE(128);
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            CLUREF T_2_3;
            T_2_1.num = cop.vec->data[2];
            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(129);
                {
                    {CLUREF T_3_1;
                    CLUREF T_3_2;
                    CLUREF T_3_3;
                    T_3_1.num = cop.vec->data[2];
                    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;
                    ta.num = T_3_3.num;
                    }
                    }

  LINE(130);
                {
                    {CLUREF T_3_1;
                    CLUREF T_3_2;
                    CLUREF T_3_3;
                    T_3_1.num = ta.vec->data[1];
                    err = field_index(nm, T_3_1, &T_3_2, &T_3_3);
                    if (err != ERR_ok) goto ex_0;
                    op.num = T_3_2.num;
                    ind.num = T_3_3.num;
                    }
                    }

  LINE(131);
                {
                CLUREF T_3_1;
                CLUREF T_3_2;
                T_3_1.num = (ind.num == 0)? true : false;
                T_3_2.num = T_3_1.num ^ 1;
                if (T_3_2.num == true) {

  LINE(132);
                    {
                        {CLUREF T_4_1;
                        err = intOPunparse(ind, &T_4_1);
                        if (err != ERR_ok) goto ex_0;
                        indstr.num = T_4_1.num;
                        }
                        }

  LINE(133);
                    {
                    CLUREF T_4_1;
                    CLUREF T_4_2;
                    CLUREF T_4_3;
                    CLUREF T_4_4;
                    CLUREF T_4_5;
                    T_4_1.num = ta.vec->data[0];
                    err = duOPget_common(T_4_1, &T_4_2);
                    if (err != ERR_ok) goto ex_0;
                    err = stringOPconcat(T_4_2, STR_OP, &T_4_3);
                    if (err != ERR_ok) goto ex_0;
                    err = stringOPconcat(T_4_3, op, &T_4_4);
                    if (err != ERR_ok) goto ex_0;
                    err = stringOPconcat(T_4_4, indstr, &T_4_5);
                    if (err != ERR_ok) goto ex_0;
                    generic_CLU_proc.type_owns = 0;
                    generic_CLU_proc.op_owns = (int)addh_if_new_of_string_ops->op_owns;
                    generic_CLU_proc.proc = addh_if_new;
                    CUR_PROC_VAR.proc = &generic_CLU_proc;
                    err = addh_if_new(a, T_4_5);
                    if (err != ERR_ok) goto ex_0;
                    }

  LINE(134);
                    {
                    {signal (ERR_ok);}}
                    }
                else {

  LINE(136);
                    {
                    CLUREF T_4_1;
                    CLUREF T_4_2;
                    CLUREF T_4_3;
                    CLUREF T_4_4;
                    T_4_1.num = ta.vec->data[0];
                    err = duOPget_common(T_4_1, &T_4_2);
                    if (err != ERR_ok) goto ex_0;
                    err = stringOPconcat(T_4_2, STR_OP, &T_4_3);
                    if (err != ERR_ok) goto ex_0;
                    err = stringOPconcat(T_4_3, op, &T_4_4);
                    if (err != ERR_ok) goto ex_0;
                    generic_CLU_proc.type_owns = 0;
                    generic_CLU_proc.op_owns = (int)addh_if_new_of_string_ops->op_owns;
                    generic_CLU_proc.proc = addh_if_new;
                    CUR_PROC_VAR.proc = &generic_CLU_proc;
                    err = addh_if_new(a, T_4_4);
                    if (err != ERR_ok) goto ex_0;
                    }

  LINE(137);
                    {
                    {signal (ERR_ok);}}
                    }}/* end if */
                }
                }/* end if */

  LINE(140);
            {
                {prefix = STR_;
                }
                }

  LINE(141);
            {
            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 3: 
                 {CLUREF T_2_3;
                T_2_3.num = T_2_2.cell->value;
                ct.num = T_2_3.num;

  LINE(143);
                    {
                    CLUREF T_3_1;
                    CLUREF T_3_2;
                    T_3_1.num = ct.vec->data[0];
                    err = duOPget_common(T_3_1, &T_3_2);
                    if (err != ERR_ok) goto ex_0;
                    prefix.num = T_3_2.num;
                    }
                    break;
                    }
            case 2: 
                 {CLUREF T_2_4;
                T_2_4.num = T_2_2.cell->value;
                at.num = T_2_4.num;

  LINE(145);
                    {
                    CLUREF T_3_1;
                    CLUREF T_3_2;
                    T_3_1.num = at.vec->data[1];
                    err = duOPget_common(T_3_1, &T_3_2);
                    if (err != ERR_ok) goto ex_0;
                    prefix.num = T_3_2.num;
                    }
                    break;
                    }
            default: {
            }
            }
            }

  LINE(148);
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            T_2_1.num = ((prefix.str->size != STR_.str->size)? false :
                !(bcmp(prefix.str->data, STR_.str->data, prefix.str->size)));
            T_2_2.num = T_2_1.num ^ 1;
            if (T_2_2.num == true) {

  LINE(149);
                {
                CLUREF T_3_1;
                CLUREF T_3_2;
                err = stringOPconcat(prefix, STR_OP, &T_3_1);
                if (err != ERR_ok) goto ex_0;
                err = stringOPconcat(T_3_1, nm, &T_3_2);
                if (err != ERR_ok) goto ex_0;
                generic_CLU_proc.type_owns = 0;
                generic_CLU_proc.op_owns = (int)addh_if_new_of_string_ops->op_owns;
                generic_CLU_proc.proc = addh_if_new;
                CUR_PROC_VAR.proc = &generic_CLU_proc;
                err = addh_if_new(a, T_3_2);
                if (err != ERR_ok) goto ex_0;
                }
                }
            else {

  LINE(151);
                {
                generic_CLU_proc.type_owns = 0;
                generic_CLU_proc.op_owns = (int)addh_if_new_of_string_ops->op_owns;
                generic_CLU_proc.proc = addh_if_new;
                CUR_PROC_VAR.proc = &generic_CLU_proc;
                err = addh_if_new(a, nm);
                if (err != ERR_ok) goto ex_0;
                }
                }}/* end if */
            break;
            }
    case 26: 
         {CLUREF T_1_9;
        T_1_9.num = T_1_1.cell->value;
        e.num = T_1_9.num;

  LINE(154);
            {
            err = g_proc_exprs(a, e);
            if (err != ERR_ok) goto ex_0;
            }
            break;
            }
    case 27: 
         {CLUREF T_1_10;
        T_1_10.num = T_1_1.cell->value;
        e.num = T_1_10.num;

  LINE(156);
            {
            err = g_proc_exprs(a, e);
            if (err != ERR_ok) goto ex_0;
            }
            break;
            }
    case 9: 
         {CLUREF T_1_11;
        T_1_11.num = T_1_1.cell->value;
        e.num = T_1_11.num;

  LINE(158);
            {
            err = g_proc_exprs(a, e);
            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 g_proc_exprs ****/



typedef struct {
int count;
    char *equal_name;
} addh_if_new_of_ty_REQS;

addh_if_new_of_ty_REQS addh_if_new_of_ty_reqs_actual = {1,
    "equal"};

struct REQS * addh_if_new_of_ty_reqs = (struct REQS *)&addh_if_new_of_ty_reqs_actual;

typedef struct {
    int count;
    OWNPTR type_owns;
    OWNPTR op_owns;
    struct OP_ENTRY equal;
} addh_if_new_of_ty_OPS;
extern errcode arrayOPelements();
extern errcode equal();
extern errcode arrayOPaddh();

typedef struct {
    int addh_if_new_own_init;
    addh_if_new_of_ty_OPS *ty_ops;
    } addh_if_new_OWN_DEFN;
OWN_req addh_if_new_ownreqs = {sizeof(addh_if_new_OWN_DEFN), 1};


/**** BEGIN PROCEDURE addh_if_new ****/

errcode addh_if_new(a, elt)
CLUREF a;
CLUREF elt;
    {
    errcode err;
    errcode ecode2;
    addh_if_new_OWN_DEFN *op_own_ptr;
    CLUREF each_elt;
    op_own_ptr = (addh_if_new_OWN_DEFN*) CUR_PROC_VAR.proc->op_owns;
        if (op_own_ptr->addh_if_new_own_init == 0) {
        op_own_ptr->addh_if_new_own_init = 1;
    }
    enter_proc(163);

  LINE(165);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    CLUREF T_1_3;
        T_1_2.num = a.array->ext_high; 
        T_1_3 = a;
        for (T_1_1.num = a.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_elt.num = T_1_3.array->store->data[T_1_1.num - T_1_3.array->ext_low + T_1_3.array->int_low];

  LINE(166);
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            T_2_2.proc = op_own_ptr->ty_ops->equal.fcn;
            CUR_PROC_VAR = T_2_2;
            err = T_2_2.proc->proc(each_elt, elt, &T_2_1);
            if (err != ERR_ok) goto ex_0;
            if (T_2_1.num == true) {

  LINE(167);
                {
                {signal (ERR_ok);}}
                }
                }/* end if */
        }
    }
    end_inline_for_1:;

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

  LINE(171);
    {
    {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 addh_if_new ****/


extern errcode array_extend();
extern errcode recordOPget_4();
extern errcode g_lvs_stmts();
extern struct REQS *sequence_of_t_reqs;
extern struct OPS *idn_ops;
extern OWN_req sequence_ownreqs;
extern struct OPS *sequence_ops;
struct OPS *sequence_of_idn_table;
struct OPS *sequence_of_idn_ops;
struct OPS *sequence_of_idn_ops;
OWNPTR sequence_of_idn_owns;
extern struct OPS *sequence_of_idn_ops;
extern struct OPS *typespec_ops;
struct OPS  *record_idns_type__ops;
extern struct REQS *array_extend_of_t_reqs;
extern struct OPS *record_idns_type__ops;
extern OWN_req array_extend_ownreqs;
struct OPS *array_extend_of_record_idns_type__table;
struct OPS *array_extend_of_record_idns_type__ops;
struct OPS *array_extend_of_record_idns_type__ops;
OWNPTR array_extend_of_record_idns_type__owns;
static int g_lvs_stmts_own_init = 0;

/**** BEGIN PROCEDURE g_lvs_stmts ****/

errcode g_lvs_stmts(dl, bod)
CLUREF dl;
CLUREF bod;
    {
    errcode err;
    errcode ecode2;
    CLUREF s;
    CLUREF d;
    CLUREF di;
    CLUREF f;
    CLUREF n;
    CLUREF b;
    CLUREF w;
    CLUREF rs;
    CLUREF i;
    CLUREF arm;
    CLUREF t;
    CLUREF e;
    CLUREF a;
        if (g_lvs_stmts_own_init == 0) {
        add_parm_info_type(0, idn_ops, sequence_of_t_reqs);
        find_type_instance(sequence_ops, 1, &sequence_ownreqs, &(sequence_of_idn_ops));
        add_selector_info("idns", 0, sequence_of_idn_ops); 
        add_selector_info("type_", 1, typespec_ops); 
        find_selector_ops("record", 2, &(record_idns_type__ops));
        add_parm_info_type(0, record_idns_type__ops, array_extend_of_t_reqs);
        find_prociter_instance(array_extend, 1, &array_extend_ownreqs, &(array_extend_of_record_idns_type__ops));
        g_lvs_stmts_own_init = 1;
    }
    enter_proc(178);

  LINE(180);
    {
    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(181);
            {
            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 6: 
                 {CLUREF T_2_2;
                T_2_2.num = T_2_1.cell->value;
                d.num = T_2_2.num;

  LINE(183);
                    {
                    {
                    if ((dl.array->int_low + dl.array->ext_size + 1) < dl.array->int_size) {
                        dl.array->store->data[dl.array->int_low + dl.array->ext_size] = d.num;
                        dl.array->ext_size++; dl.array->ext_high++;}
                    else {
                        err = arrayOPaddh(dl, d);
                        if (err != ERR_ok) goto ex_0;}
                    }
                    }
                    break;
                    }
            case 7: 
                 {CLUREF T_2_3;
                T_2_3.num = T_2_1.cell->value;
                di.num = T_2_3.num;

  LINE(185);
                    {
                    CLUREF T_3_1;
                    T_3_1.num = di.vec->data[1];
                    generic_CLU_proc.type_owns = 0;
                    generic_CLU_proc.op_owns = (int)array_extend_of_record_idns_type__ops->op_owns;
                    generic_CLU_proc.proc = array_extend;
                    CUR_PROC_VAR.proc = &generic_CLU_proc;
                    err = array_extend(dl, T_3_1);
                    if (err != ERR_ok) goto ex_0;
                    }
                    break;
                    }
            case 10: 
                 {CLUREF T_2_4;
                T_2_4.num = T_2_1.cell->value;
                f.num = T_2_4.num;

  LINE(187);
                    {
                    CLUREF T_3_1;
                    T_3_1.num = f.vec->data[3];
                    switch (T_3_1.cell->tag) {
                    case 1: 
                         {CLUREF T_3_2;
                        T_3_2.num = T_3_1.cell->value;
                        n.num = T_3_2.num;

  LINE(189);
                            {
                            generic_CLU_proc.type_owns = 0;
                            generic_CLU_proc.op_owns = (int)array_extend_of_record_idns_type__ops->op_owns;
                            generic_CLU_proc.proc = array_extend;
                            CUR_PROC_VAR.proc = &generic_CLU_proc;
                            err = array_extend(dl, n);
                            if (err != ERR_ok) goto ex_0;
                            }
                            break;
                            }
                    default: {
                    }
                    }
                    }

  LINE(192);
                    {
                    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_lvs_stmts(dl, T_3_2);
                    if (err != ERR_ok) goto ex_0;
                    }
                    break;
                    }
            case 3: 
                 {CLUREF T_2_5;
                T_2_5.num = T_2_1.cell->value;
                b.num = T_2_5.num;

  LINE(194);
                    {
                    CLUREF T_3_1;
                    T_3_1.num = b.vec->data[1];
                    err = g_lvs_stmts(dl, T_3_1);
                    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(196);
                    {
                    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_lvs_stmts(dl, T_3_2);
                    if (err != ERR_ok) goto ex_0;
                    }
                    break;
                    }
            case 14: 
                 {CLUREF T_2_7;
                T_2_7.num = T_2_1.cell->value;
                rs.num = T_2_7.num;

  LINE(198);
                    {
                    CLUREF T_3_1;
                    CLUREF T_3_2;
                    T_3_1.num = rs.vec->data[1];
                    err = sequenceOPfill(CLU_1, T_3_1, &T_3_2);
                    if (err != ERR_ok) goto ex_0;
                    err = g_lvs_stmts(dl, T_3_2);
                    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(200);
                    {
                    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(201);
                            {
                            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_lvs_stmts(dl, T_4_2);
                            if (err != ERR_ok) goto ex_0;
                            }
                        }
                    }
                    end_inline_for_2:;

  LINE(203);
                    {
                    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(205);
                            {
                            CLUREF T_4_1;
                            T_4_1.num = b.vec->data[1];
                            err = g_lvs_stmts(dl, T_4_1);
                            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(209);
                    {
                    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(210);
                            {
                            CLUREF T_4_1;
                            T_4_1.num = arm.vec->data[3];
                            switch (T_4_1.cell->tag) {
                            case 1: 
                                 {CLUREF T_4_2;
                                T_4_2.num = T_4_1.cell->value;
                                d.num = T_4_2.num;

  LINE(212);
                                    {
                                    {
                                    if ((dl.array->int_low + dl.array->ext_size + 1) < dl.array->int_size) {
                                        dl.array->store->data[dl.array->int_low + dl.array->ext_size] = d.num;
                                        dl.array->ext_size++; dl.array->ext_high++;}
                                    else {
                                        err = arrayOPaddh(dl, d);
                                        if (err != ERR_ok) goto ex_0;}
                                    }
                                    }
                                    break;
                                    }
                            default: {
                            }
                            }
                            }

  LINE(215);
                            {
                            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_lvs_stmts(dl, T_4_2);
                            if (err != ERR_ok) goto ex_0;
                            }
                        }
                    }
                    end_inline_for_3:;

  LINE(217);
                    {
                    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(219);
                            {
                            CLUREF T_4_1;
                            T_4_1.num = b.vec->data[1];
                            err = g_lvs_stmts(dl, T_4_1);
                            if (err != ERR_ok) goto ex_0;
                            }
                            break;
                            }
                    default: {
                    }
                    }
                    }
                    break;
                    }
            case 8: 
                 {CLUREF T_2_10;
                T_2_10.num = T_2_1.cell->value;
                e.num = T_2_10.num;

  LINE(223);
                    {
                    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_lvs_stmts(dl, T_3_2);
                    if (err != ERR_ok) goto ex_0;
                    }

  LINE(224);
                    {
                    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(225);
                            {
                            CLUREF T_4_1;
                            T_4_1.num = a.vec->data[3];
                            switch (T_4_1.cell->tag) {
                            case 1: 
                                 {CLUREF T_4_2;
                                T_4_2.num = T_4_1.cell->value;
                                di.num = T_4_2.num;

  LINE(227);
                                    {
                                    generic_CLU_proc.type_owns = 0;
                                    generic_CLU_proc.op_owns = (int)array_extend_of_record_idns_type__ops->op_owns;
                                    generic_CLU_proc.proc = array_extend;
                                    CUR_PROC_VAR.proc = &generic_CLU_proc;
                                    err = array_extend(dl, di);
                                    if (err != ERR_ok) goto ex_0;
                                    }
                                    break;
                                    }
                            default: {
                            }
                            }
                            }

  LINE(230);
                            {
                            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_lvs_stmts(dl, T_4_2);
                            if (err != ERR_ok) goto ex_0;
                            }
                        }
                    }
                    end_inline_for_4:;

  LINE(232);
                    {
                    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(234);
                            {
                            CLUREF T_4_1;
                            T_4_1.num = a.vec->data[1];
                            switch (T_4_1.cell->tag) {
                            case 1: 
                                 {CLUREF T_4_2;
                                T_4_2.num = T_4_1.cell->value;
                                d.num = T_4_2.num;

  LINE(236);
                                    {
                                    {
                                    if ((dl.array->int_low + dl.array->ext_size + 1) < dl.array->int_size) {
                                        dl.array->store->data[dl.array->int_low + dl.array->ext_size] = d.num;
                                        dl.array->ext_size++; dl.array->ext_high++;}
                                    else {
                                        err = arrayOPaddh(dl, d);
                                        if (err != ERR_ok) goto ex_0;}
                                    }
                                    }
                                    break;
                                    }
                            default: {
                            }
                            }
                            }

  LINE(239);
                            {
                            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_lvs_stmts(dl, T_4_2);
                            if (err != ERR_ok) goto ex_0;
                            }
                            break;
                            }
                    default: {
                    }
                    }
                    }
                    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 g_lvs_stmts ****/


extern errcode intOPlt();
extern errcode arrayOPsize();
extern errcode arrayOPnew();
extern errcode idnOPget_str();
extern errcode intOPadd();
extern errcode sequenceOPnew();
extern errcode sequenceOPaddh();

/**** BEGIN PROCEDURE g_lvs_uniq ****/

errcode g_lvs_uniq(old, ret_1)
CLUREF old;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
    CLUREF new;
    CLUREF this_decl;
    CLUREF dupe_count;
    CLUREF this_idn;
    CLUREF that_decl;
    CLUREF that_idn;
    CLUREF new_idns;
    CLUREF addit;
    CLUREF new_decl;
    enter_proc(251);

  LINE(253);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    T_1_1.num = old.array->ext_size;
    T_1_2.num = (T_1_1.num < 2)? true : false;
    if (T_1_2.num == true) {
        {
        {
        ret_1->num = old.num;
        }
        {signal (ERR_ok);}}
        }
        }/* end if */

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

  LINE(255);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    CLUREF T_1_3;
        T_1_2.num = old.array->ext_high; 
        T_1_3 = old;
        for (T_1_1.num = old.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;}
            this_decl.num = T_1_3.array->store->data[T_1_1.num - T_1_3.array->ext_low + T_1_3.array->int_low];

  LINE(256);
            {
                {dupe_count.num = 0;
                }
                }

  LINE(257);
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            CLUREF T_2_3;
            CLUREF T_2_4;
                T_2_1.num = this_decl.vec->data[0];
                T_2_3.num = T_2_1.vec->size; 
                T_2_4 = T_2_1;
                for (T_2_2.num = 1; T_2_2.num <= T_2_3.num; T_2_2.num++) {
                    this_idn.num = T_2_4.vec->data[T_2_2.num - 1];

  LINE(258);
                    {
                    CLUREF T_3_1;
                    CLUREF T_3_2;
                    CLUREF T_3_3;
                        T_3_2.num = new.array->ext_high; 
                        T_3_3 = new;
                        for (T_3_1.num = new.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_0;}
                            that_decl.num = T_3_3.array->store->data[T_3_1.num - T_3_3.array->ext_low + T_3_3.array->int_low];

  LINE(259);
                            {
                            CLUREF T_4_1;
                            CLUREF T_4_2;
                            CLUREF T_4_3;
                            CLUREF T_4_4;
                                T_4_1.num = that_decl.vec->data[0];
                                T_4_3.num = T_4_1.vec->size; 
                                T_4_4 = T_4_1;
                                for (T_4_2.num = 1; T_4_2.num <= T_4_3.num; T_4_2.num++) {
                                    that_idn.num = T_4_4.vec->data[T_4_2.num - 1];

  LINE(260);
                                    {
                                    CLUREF T_5_1;
                                    CLUREF T_5_2;
                                    CLUREF T_5_3;
                                    err = idnOPget_str(this_idn, &T_5_1);
                                    if (err != ERR_ok) goto ex_0;
                                    err = idnOPget_str(that_idn, &T_5_2);
                                    if (err != ERR_ok) goto ex_0;
                                    T_5_3.num = ((T_5_1.str->size != T_5_2.str->size)? false :
                                        !(bcmp(T_5_1.str->data, T_5_2.str->data, T_5_1.str->size)));
                                    if (T_5_3.num == true) {

  LINE(262);
                                        {
                                        CLUREF T_6_1;
                                        T_6_1.num = dupe_count.num + 1;
                                         if ((T_6_1.num > 0 && dupe_count.num < 0 && 1 < 0) || 
                                             (T_6_1.num < 0 && dupe_count.num > 0 && 1 > 0)) {
                                            err = ERR_overflow;
                                            goto ex_0;}
                                        dupe_count.num = T_6_1.num;
                                        }
                                        }
                                        }/* end if */
                                }
                            }
                            end_inline_for_4:;
                        }
                    }
                    end_inline_for_3:;
                }
            }
            end_inline_for_2:;

  LINE(267);
            {
            CLUREF T_2_1;
            T_2_1.num = (dupe_count.num == 0)? true : false;
            if (T_2_1.num == true) {
                {
                {
                if ((new.array->int_low + new.array->ext_size + 1) < new.array->int_size) {
                    new.array->store->data[new.array->int_low + new.array->ext_size] = this_decl.num;
                    new.array->ext_size++; new.array->ext_high++;}
                else {
                    err = arrayOPaddh(new, this_decl);
                    if (err != ERR_ok) goto ex_0;}
                }
                }
                }
            else {

  LINE(269);
                {
                    {CLUREF T_3_1;
                    err = sequenceOPnew(&T_3_1);
                    if (err != ERR_ok) goto ex_0;
                    new_idns.num = T_3_1.num;
                    }
                    }

  LINE(270);
                {
                CLUREF T_3_1;
                CLUREF T_3_2;
                CLUREF T_3_3;
                CLUREF T_3_4;
                    T_3_1.num = this_decl.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_idn.num = T_3_4.vec->data[T_3_2.num - 1];

  LINE(271);
                        {
                            {addit.tf = true;
                            }
                            }

  LINE(272);
                        {
                        CLUREF T_4_1;
                        CLUREF T_4_2;
                        CLUREF T_4_3;
                            T_4_2.num = new.array->ext_high; 
                            T_4_3 = new;
                            for (T_4_1.num = new.array->ext_low; T_4_1.num <= T_4_2.num; T_4_1.num++) {
                                if (T_4_1.num > T_4_3.array->ext_high || T_4_1.num < T_4_3.array->ext_low) {
                                    err = ERR_failure;
                                    elist[0].str = array_bounds_exception_STRING;
                                    goto ex_0;}
                                that_decl.num = T_4_3.array->store->data[T_4_1.num - T_4_3.array->ext_low + T_4_3.array->int_low];

  LINE(273);
                                {
                                CLUREF T_5_1;
                                CLUREF T_5_2;
                                CLUREF T_5_3;
                                CLUREF T_5_4;
                                    T_5_1.num = that_decl.vec->data[0];
                                    T_5_3.num = T_5_1.vec->size; 
                                    T_5_4 = T_5_1;
                                    for (T_5_2.num = 1; T_5_2.num <= T_5_3.num; T_5_2.num++) {
                                        that_idn.num = T_5_4.vec->data[T_5_2.num - 1];

  LINE(274);
                                        {
                                        CLUREF T_6_1;
                                        CLUREF T_6_2;
                                        CLUREF T_6_3;
                                        err = idnOPget_str(this_idn, &T_6_1);
                                        if (err != ERR_ok) goto ex_0;
                                        err = idnOPget_str(that_idn, &T_6_2);
                                        if (err != ERR_ok) goto ex_0;
                                        T_6_3.num = ((T_6_1.str->size != T_6_2.str->size)? false :
                                            !(bcmp(T_6_1.str->data, T_6_2.str->data, T_6_1.str->size)));
                                        if (T_6_3.num == true) {

  LINE(275);
                                            {
                                            addit.tf = false;
                                            }

  LINE(276);
                                            goto end_inline_for_7;
                                            }
                                            }/* end if */
                                    }
                                }
                                end_inline_for_7:;

  LINE(279);
                                {
                                CLUREF T_5_1;
                                T_5_1.num = addit.num ^ 1;
                                if (T_5_1.num == true) {
                                    goto end_inline_for_6;
                                    }
                                    }/* end if */
                            }
                        }
                        end_inline_for_6:;

  LINE(281);
                        {
                        if (addit.num == true) {
                            {
                            CLUREF T_5_1;
                            err = sequenceOPaddh(new_idns, this_idn, &T_5_1);
                            if (err != ERR_ok) goto ex_0;
                            new_idns.num = T_5_1.num;
                            }
                            }
                            }/* end if */
                    }
                }
                end_inline_for_5:;

  LINE(283);
                {
                    {CLUREF T_3_1;
                    CLUREF T_3_2;
                    RecordAlloc(2, T_3_1);
                    T_3_2.num = this_decl.vec->data[1];
                    T_3_1.vec->data[1]  = T_3_2.num;
                    T_3_1.vec->data[0]  = new_idns.num;
                    new_decl.num = T_3_1.num;
                    }
                    }

  LINE(284);
                {
                {
                if ((new.array->int_low + new.array->ext_size + 1) < new.array->int_size) {
                    new.array->store->data[new.array->int_low + new.array->ext_size] = new_decl.num;
                    new.array->ext_size++; new.array->ext_high++;}
                else {
                    err = arrayOPaddh(new, new_decl);
                    if (err != ERR_ok) goto ex_0;}
                }
                }
                }}/* end if */
        }
    }
    end_inline_for_1:;

  LINE(287);
    {
    {
    ret_1->num = new.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 g_lvs_uniq ****/


/**** BEGIN CLUSTER fid ****/

CLUREF STR_ret_137;
static int fid_own_init = 0;
OWN_req fid_ownreqs = {0,0};
CLUREF fidOPcur_fid;
CLUREF fidOPold_fid;
errcode fid_own_init_proc()
{
    errcode err;
    enter_own_init_proc();
        if (fid_own_init == 0) {
        stringOPcons("ret_", CLU_1, CLU_4, &STR_ret_137);
        fid_own_init = 1;
        {
            {fidOPcur_fid.num = 0;
            }
            }
        {signal(ERR_ok);}
    ex_0: pclu_unhandled(err); {signal(ERR_failure);}
        }
    }


/**** BEGIN PROCEDURE g_fidn_save ****/

errcode fidOPg_fidn_save()
    {
    errcode err;
    errcode ecode2;
        if (fid_own_init == 0) {
            err = fid_own_init_proc();
            if (err != ERR_ok) goto ex_0;
            }
    enter_proc(299);

  LINE(300);
    {
    fidOPold_fid.num = fidOPcur_fid.num;
    }
    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_fidn_save ****/


/**** BEGIN PROCEDURE g_fidn_restore ****/

errcode fidOPg_fidn_restore()
    {
    errcode err;
    errcode ecode2;
        if (fid_own_init == 0) {
            err = fid_own_init_proc();
            if (err != ERR_ok) goto ex_0;
            }
    enter_proc(303);

  LINE(304);
    {
    fidOPcur_fid.num = fidOPold_fid.num;
    }
    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_fidn_restore ****/

static int fidOPg_fid_own_init = 0;

/**** BEGIN PROCEDURE g_fid ****/

errcode fidOPg_fid(ret, ret_1)
CLUREF ret;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
        if (fidOPg_fid_own_init == 0) {
        if (fid_own_init == 0) {
            err = fid_own_init_proc();
            if (err != ERR_ok) goto ex_0;
            }
        fidOPg_fid_own_init = 1;
    }
    enter_proc(307);

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

  LINE(309);
    {
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    err = intOPunparse(fidOPcur_fid, &T_1_1);
    if (err != ERR_ok) goto ex_0;
    err = stringOPconcat(STR_ret_137, T_1_1, &T_1_2);
    if (err != ERR_ok) goto ex_0;
    ret_1->num = T_1_2.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 g_fid ****/

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

CLU_proc fid_oe_g_fid = {{0,0,0,0}, fidOPg_fid, 0};
CLU_proc fid_oe_g_fidn_restore = {{0,0,0,0}, fidOPg_fidn_restore, 0};
CLU_proc fid_oe_g_fidn_save = {{0,0,0,0}, fidOPg_fidn_save, 0};

fid_OPS fid_ops_actual = {3, (OWNPTR)&fid_own_init, (OWNPTR)&fid_own_init, {
    {&fid_oe_g_fid, "g_fid"},
    {&fid_oe_g_fidn_restore, "g_fidn_restore"},
    {&fid_oe_g_fidn_save, "g_fidn_save"}}};

struct OPS *fid_ops = (struct OPS *)&fid_ops_actual;

/**** END CLUSTER fid ****/

/**** BEGIN CLUSTER ex ****/

extern errcode arrayOPremh();
CLUREF STR_ex_137;
CLUREF STR_end_137;
static int ex_own_init = 0;
OWN_req ex_ownreqs = {0,0};
CLUREF exOPcurrent;
CLUREF exOPnext;
CLUREF exOPsave;
errcode ex_own_init_proc()
{
    errcode err;
    enter_own_init_proc();
        if (ex_own_init == 0) {
        stringOPcons("ex_", CLU_1, CLU_3, &STR_ex_137);
        stringOPcons("end_", CLU_1, CLU_4, &STR_end_137);
        ex_own_init = 1;
        {
            {exOPcurrent.num = 0;
            }
            }
        {
            {exOPnext.num = 1;
            }
            }
        {
            {CLUREF T_0_1;
            err = arrayOPnew(&T_0_1);
            if (err != ERR_ok) goto ex_0;
            exOPsave.num = T_0_1.num;
            }
            }
        {signal(ERR_ok);}
    ex_0: pclu_unhandled(err); {signal(ERR_failure);}
        }
    }


/**** BEGIN PROCEDURE init ****/

errcode exOPinit()
    {
    errcode err;
    errcode ecode2;
        if (ex_own_init == 0) {
            err = ex_own_init_proc();
            if (err != ERR_ok) goto ex_0;
            }
    enter_proc(325);

  LINE(326);
    {
    exOPcurrent.num = 0;
    }

  LINE(327);
    {
    exOPnext.num = 1;
    }

  LINE(328);
    {
    CLUREF T_1_1;
    err = arrayOPnew(&T_1_1);
    if (err != ERR_ok) goto ex_0;
    exOPsave.num = T_1_1.num;
    }
    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 init ****/


/**** BEGIN PROCEDURE enter ****/

errcode exOPenter()
    {
    errcode err;
    errcode ecode2;
        if (ex_own_init == 0) {
            err = ex_own_init_proc();
            if (err != ERR_ok) goto ex_0;
            }
    enter_proc(331);

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

  LINE(333);
    {
    exOPcurrent.num = exOPnext.num;
    }

  LINE(334);
    {
    CLUREF T_1_1;
    T_1_1.num = exOPnext.num + 1;
     if ((T_1_1.num > 0 && exOPnext.num < 0 && 1 < 0) || 
         (T_1_1.num < 0 && exOPnext.num > 0 && 1 > 0)) {
        err = ERR_overflow;
        goto ex_0;}
    exOPnext.num = T_1_1.num;
    }
    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 enter ****/


/**** BEGIN PROCEDURE leave ****/

errcode exOPleave()
    {
    errcode err;
    errcode ecode2;
        if (ex_own_init == 0) {
            err = ex_own_init_proc();
            if (err != ERR_ok) goto ex_0;
            }
    enter_proc(337);

  LINE(338);
    {
    CLUREF T_1_1;
    err = arrayOPremh(exOPsave, &T_1_1);
    if (err != ERR_ok) goto ex_0;
    exOPcurrent.num = T_1_1.num;
    }
    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 leave ****/

static int exOPget_current_ex_label_own_init = 0;

/**** BEGIN PROCEDURE get_current_ex_label ****/

errcode exOPget_current_ex_label(ret_1)
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
        if (exOPget_current_ex_label_own_init == 0) {
        if (ex_own_init == 0) {
            err = ex_own_init_proc();
            if (err != ERR_ok) goto ex_0;
            }
        exOPget_current_ex_label_own_init = 1;
    }
    enter_proc(341);

  LINE(342);
    {
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    err = intOPunparse(exOPcurrent, &T_1_1);
    if (err != ERR_ok) goto ex_0;
    err = stringOPconcat(STR_ex_137, T_1_1, &T_1_2);
    if (err != ERR_ok) goto ex_0;
    ret_1->num = T_1_2.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_current_ex_label ****/

static int exOPget_current_end_label_own_init = 0;

/**** BEGIN PROCEDURE get_current_end_label ****/

errcode exOPget_current_end_label(ret_1)
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
        if (exOPget_current_end_label_own_init == 0) {
        if (ex_own_init == 0) {
            err = ex_own_init_proc();
            if (err != ERR_ok) goto ex_0;
            }
        exOPget_current_end_label_own_init = 1;
    }
    enter_proc(345);

  LINE(346);
    {
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    err = intOPunparse(exOPcurrent, &T_1_1);
    if (err != ERR_ok) goto ex_0;
    err = stringOPconcat(STR_end_137, T_1_1, &T_1_2);
    if (err != ERR_ok) goto ex_0;
    ret_1->num = T_1_2.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_current_end_label ****/

typedef struct{
    int count;
    OWNPTR type_owns;
    OWNPTR op_owns;
    struct OP_ENTRY entry[5];
} ex_OPS;

CLU_proc ex_oe_enter = {{0,0,0,0}, exOPenter, 0};
CLU_proc ex_oe_get_current_end_label = {{0,0,0,0}, exOPget_current_end_label, 0};
CLU_proc ex_oe_get_current_ex_label = {{0,0,0,0}, exOPget_current_ex_label, 0};
CLU_proc ex_oe_init = {{0,0,0,0}, exOPinit, 0};
CLU_proc ex_oe_leave = {{0,0,0,0}, exOPleave, 0};

ex_OPS ex_ops_actual = {5, (OWNPTR)&ex_own_init, (OWNPTR)&ex_own_init, {
    {&ex_oe_enter, "enter"},
    {&ex_oe_get_current_end_label, "get_current_end_label"},
    {&ex_oe_get_current_ex_label, "get_current_ex_label"},
    {&ex_oe_init, "init"},
    {&ex_oe_leave, "leave"}}};

struct OPS *ex_ops = (struct OPS *)&ex_ops_actual;

/**** END CLUSTER ex ****/

/**** BEGIN CLUSTER tv ****/

extern errcode idnOPcreate();
extern errcode oneofOPmake_9();
extern errcode g_decl();
extern errcode g_envOPputl();
extern errcode exprOPcreate();
extern errcode oneofOPmake_13();
CLUREF STR_T_137;
CLUREF STR__137;
CLUREF STR_CLUREF_040T_137;
CLUREF STR__073;
static int tv_own_init = 0;
OWN_req tv_ownreqs = {0,0};
CLUREF tvOPenviron;
CLUREF tvOPdcounter;
CLUREF tvOPicounter;
CLUREF tvOPold_environs;
CLUREF tvOPold_dcounters;
CLUREF tvOPold_icounters;
CLUREF tvOPsave_icounter;
errcode tv_own_init_proc()
{
    errcode err;
    enter_own_init_proc();
        if (tv_own_init == 0) {
        stringOPcons("T_", CLU_1, CLU_2, &STR_T_137);
        stringOPcons("_", CLU_1, CLU_1, &STR__137);
        stringOPcons("CLUREF T_", CLU_1, CLU_9, &STR_CLUREF_040T_137);
        stringOPcons(";", CLU_1, CLU_1, &STR__073);
        tv_own_init = 1;
        {
            {tvOPenviron.num = 0;
            }
            }
        {
            {tvOPdcounter.num = 0;
            }
            }
        {
            {tvOPicounter.num = 0;
            }
            }
        {
            {CLUREF T_0_1;
            err = arrayOPnew(&T_0_1);
            if (err != ERR_ok) goto ex_0;
            tvOPold_environs.num = T_0_1.num;
            }
            }
        {
            {CLUREF T_0_2;
            err = arrayOPnew(&T_0_2);
            if (err != ERR_ok) goto ex_0;
            tvOPold_dcounters.num = T_0_2.num;
            }
            }
        {
            {CLUREF T_0_3;
            err = arrayOPnew(&T_0_3);
            if (err != ERR_ok) goto ex_0;
            tvOPold_icounters.num = T_0_3.num;
            }
            }
        {
            {tvOPsave_icounter.num = 0;
            }
            }
        {signal(ERR_ok);}
    ex_0: pclu_unhandled(err); {signal(ERR_failure);}
        }
    }


/**** BEGIN PROCEDURE enter ****/

errcode tvOPenter()
    {
    errcode err;
    errcode ecode2;
        if (tv_own_init == 0) {
            err = tv_own_init_proc();
            if (err != ERR_ok) goto ex_0;
            }
    enter_proc(368);

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

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

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

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

  LINE(374);
    {
    tvOPdcounter.num = 0;
    }

  LINE(375);
    {
    tvOPicounter.num = 0;
    }
    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 enter ****/


/**** BEGIN PROCEDURE leave ****/

errcode tvOPleave()
    {
    errcode err;
    errcode ecode2;
        if (tv_own_init == 0) {
            err = tv_own_init_proc();
            if (err != ERR_ok) goto ex_0;
            }
    enter_proc(379);

  LINE(381);
    {
    CLUREF T_1_1;
    err = arrayOPremh(tvOPold_environs, &T_1_1);
    if (err != ERR_ok) goto ex_0;
    tvOPenviron.num = T_1_1.num;
    }

  LINE(382);
    {
    CLUREF T_1_1;
    err = arrayOPremh(tvOPold_dcounters, &T_1_1);
    if (err != ERR_ok) goto ex_0;
    tvOPdcounter.num = T_1_1.num;
    }

  LINE(383);
    {
    CLUREF T_1_1;
    err = arrayOPremh(tvOPold_icounters, &T_1_1);
    if (err != ERR_ok) goto ex_0;
    tvOPicounter.num = T_1_1.num;
    }
    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 leave ****/


/**** BEGIN PROCEDURE reset ****/

errcode tvOPreset()
    {
    errcode err;
    errcode ecode2;
        if (tv_own_init == 0) {
            err = tv_own_init_proc();
            if (err != ERR_ok) goto ex_0;
            }
    enter_proc(387);

  LINE(389);
    {
    tvOPenviron.num = 0;
    }

  LINE(390);
    {
    tvOPdcounter.num = 0;
    }

  LINE(391);
    {
    tvOPicounter.num = 0;
    }

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

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

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

  LINE(395);
    {
    tvOPsave_icounter.num = 0;
    }
    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 reset ****/

static int tvOPdecl_next_own_init = 0;

/**** BEGIN PROCEDURE decl_next ****/

errcode tvOPdecl_next(e, t)
CLUREF e;
CLUREF t;
    {
    errcode err;
    errcode ecode2;
    CLUREF newidn;
        if (tvOPdecl_next_own_init == 0) {
        if (tv_own_init == 0) {
            err = tv_own_init_proc();
            if (err != ERR_ok) goto ex_0;
            }
        tvOPdecl_next_own_init = 1;
    }
    enter_proc(399);

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

  LINE(404);
    {
        {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;
        err = intOPunparse(tvOPenviron, &T_1_1);
        if (err != ERR_ok) goto ex_0;
        err = stringOPconcat(STR_T_137, T_1_1, &T_1_2);
        if (err != ERR_ok) goto ex_0;
        err = stringOPconcat(T_1_2, STR__137, &T_1_3);
        if (err != ERR_ok) goto ex_0;
        err = intOPunparse(tvOPdcounter, &T_1_4);
        if (err != ERR_ok) goto ex_0;
        err = stringOPconcat(T_1_3, T_1_4, &T_1_5);
        if (err != ERR_ok) goto ex_0;
        CellAlloc(9, t.num, T_1_6);
        err = idnOPcreate(T_1_5, T_1_6, &T_1_7);
        if (err != ERR_ok) goto ex_0;
        newidn.num = T_1_7.num;
        }
        }

  LINE(408);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    RecordAlloc(2, T_1_1);
    err = sequenceOPfill(CLU_1, newidn, &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]  = t.num;
    err = g_decl(e, T_1_1);
    if (err != ERR_ok) goto ex_0;
    }
    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 decl_next ****/

static int tvOPblind_decl_next_own_init = 0;

/**** BEGIN PROCEDURE blind_decl_next ****/

errcode tvOPblind_decl_next(e)
CLUREF e;
    {
    errcode err;
    errcode ecode2;
        if (tvOPblind_decl_next_own_init == 0) {
        if (tv_own_init == 0) {
            err = tv_own_init_proc();
            if (err != ERR_ok) goto ex_0;
            }
        tvOPblind_decl_next_own_init = 1;
    }
    enter_proc(413);

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

  LINE(418);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    CLUREF T_1_3;
    CLUREF T_1_4;
    CLUREF T_1_5;
    CLUREF T_1_6;
    err = intOPunparse(tvOPenviron, &T_1_1);
    if (err != ERR_ok) goto ex_0;
    err = stringOPconcat(STR_CLUREF_040T_137, T_1_1, &T_1_2);
    if (err != ERR_ok) goto ex_0;
    err = stringOPconcat(T_1_2, STR__137, &T_1_3);
    if (err != ERR_ok) goto ex_0;
    err = intOPunparse(tvOPdcounter, &T_1_4);
    if (err != ERR_ok) goto ex_0;
    err = stringOPconcat(T_1_3, T_1_4, &T_1_5);
    if (err != ERR_ok) goto ex_0;
    err = stringOPconcat(T_1_5, STR__073, &T_1_6);
    if (err != ERR_ok) goto ex_0;
    err = g_envOPputl(e, T_1_6);
    if (err != ERR_ok) goto ex_0;
    }
    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 blind_decl_next ****/

static int tvOPidn_next_own_init = 0;

/**** BEGIN PROCEDURE idn_next ****/

errcode tvOPidn_next(ty, ret_1)
CLUREF ty;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
    CLUREF newidn;
        if (tvOPidn_next_own_init == 0) {
        if (tv_own_init == 0) {
            err = tv_own_init_proc();
            if (err != ERR_ok) goto ex_0;
            }
        tvOPidn_next_own_init = 1;
    }
    enter_proc(423);

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

  LINE(428);
    {
        {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;
        err = intOPunparse(tvOPenviron, &T_1_1);
        if (err != ERR_ok) goto ex_0;
        err = stringOPconcat(STR_T_137, T_1_1, &T_1_2);
        if (err != ERR_ok) goto ex_0;
        err = stringOPconcat(T_1_2, STR__137, &T_1_3);
        if (err != ERR_ok) goto ex_0;
        err = intOPunparse(tvOPicounter, &T_1_4);
        if (err != ERR_ok) goto ex_0;
        err = stringOPconcat(T_1_3, T_1_4, &T_1_5);
        if (err != ERR_ok) goto ex_0;
        CellAlloc(9, ty.num, T_1_6);
        err = idnOPcreate(T_1_5, T_1_6, &T_1_7);
        if (err != ERR_ok) goto ex_0;
        newidn.num = T_1_7.num;
        }
        }

  LINE(432);
    {
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    CellAlloc(13, newidn.num, T_1_1);
    err = exprOPcreate(T_1_1, ty, &T_1_2);
    if (err != ERR_ok) goto ex_0;
    ret_1->num = T_1_2.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 idn_next ****/


/**** BEGIN PROCEDURE save ****/

errcode tvOPsave()
    {
    errcode err;
    errcode ecode2;
        if (tv_own_init == 0) {
            err = tv_own_init_proc();
            if (err != ERR_ok) goto ex_0;
            }
    enter_proc(436);

  LINE(437);
    {
    tvOPsave_icounter.num = tvOPicounter.num;
    }
    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 save ****/


/**** BEGIN PROCEDURE restore ****/

errcode tvOPrestore()
    {
    errcode err;
    errcode ecode2;
        if (tv_own_init == 0) {
            err = tv_own_init_proc();
            if (err != ERR_ok) goto ex_0;
            }
    enter_proc(440);

  LINE(441);
    {
    tvOPicounter.num = tvOPsave_icounter.num;
    }
    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 restore ****/

typedef struct{
    int count;
    OWNPTR type_owns;
    OWNPTR op_owns;
    struct OP_ENTRY entry[8];
} tv_OPS;

CLU_proc tv_oe_blind_decl_next = {{0,0,0,0}, tvOPblind_decl_next, 0};
CLU_proc tv_oe_decl_next = {{0,0,0,0}, tvOPdecl_next, 0};
CLU_proc tv_oe_enter = {{0,0,0,0}, tvOPenter, 0};
CLU_proc tv_oe_idn_next = {{0,0,0,0}, tvOPidn_next, 0};
CLU_proc tv_oe_leave = {{0,0,0,0}, tvOPleave, 0};
CLU_proc tv_oe_reset = {{0,0,0,0}, tvOPreset, 0};
CLU_proc tv_oe_restore = {{0,0,0,0}, tvOPrestore, 0};
CLU_proc tv_oe_save = {{0,0,0,0}, tvOPsave, 0};

tv_OPS tv_ops_actual = {8, (OWNPTR)&tv_own_init, (OWNPTR)&tv_own_init, {
    {&tv_oe_blind_decl_next, "blind_decl_next"},
    {&tv_oe_decl_next, "decl_next"},
    {&tv_oe_enter, "enter"},
    {&tv_oe_idn_next, "idn_next"},
    {&tv_oe_leave, "leave"},
    {&tv_oe_reset, "reset"},
    {&tv_oe_restore, "restore"},
    {&tv_oe_save, "save"}}};

struct OPS *tv_ops = (struct OPS *)&tv_ops_actual;

/**** END CLUSTER tv ****/
