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

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


/**** BEGIN CLUSTER g_tbl ****/

extern errcode arrayOPnew();
extern errcode intOPequal();
extern errcode arrayOPsize();
extern errcode dbg_infoOPactive();
extern errcode oneofOPis_1();
extern errcode g_tblOPfind_tbls_in_signature();
extern errcode oneofOPvalue_1();
extern errcode sequenceOPelements();
extern errcode recordOPget_1();
extern errcode oneofOPvalue_3();
extern errcode g_tblOPfind_tbls();
extern errcode g_tblOPtbl_uniq();
extern errcode g_tblOPg_field_tables();
extern errcode g_tblOPfind_tbl_decllist();
extern errcode stmtOPget_abs();
extern errcode g_tblOPfind_tbl_exprs();
extern errcode recordOPget_3();
extern errcode g_tblOPfind_tbl_exprlist();
extern errcode recordOPget_2();
extern errcode recordOPget_4();
extern errcode sequenceOPfill();
extern errcode g_tblOPfind_tbl_decl();
extern errcode g_tblOPfind_tbl_type_();
extern errcode typespecOPget_abs();
extern errcode intOPgt();
extern errcode sequenceOPsize();
extern errcode arrayOPaddh();
extern errcode oneofOPmake_4();
extern errcode parmd_dus();
extern errcode g_tblOPfind_tbl_fieldspeclist();
extern errcode oneofOPmake_7();
extern errcode duOPget_common();
extern errcode compiler_logit();
extern errcode typespec_print();
extern errcode g_tblOPfind_tbl_field();
extern errcode exprOPget_abs();
extern errcode boolOPnot();
extern errcode g_tblOPbase_apply_test();
extern errcode parmd_op();
extern errcode oneofOPmake_6();
extern errcode g_tblOPbase_cluster_test();
extern errcode oneofOPis_7();
extern errcode oneofOPvalue_7();
extern errcode oneofOPmake_1();
extern errcode exprOPget_typespec();
extern errcode oneofOPmake_3();
extern errcode oneofOPmake_5();
extern errcode expr_print();
extern errcode arrayOPlow();
extern errcode intOPle();
extern errcode arrayOPfetch();
extern errcode intOPfrom_to();
extern errcode intOPadd();
extern errcode oneofOPvalue_5();
extern errcode pb_formals();
extern errcode pb_actuals();
extern errcode arrayOPelements();
extern errcode oneofOPis_3();
extern errcode oneofOPis_5();
extern errcode sequenceOPsimilar();
extern errcode stringOPequal();
extern errcode typespecOPsimilar();
extern errcode g_tblOPg_sel_extern();
extern errcode g_parm_extern();
extern errcode g_tblOPtest_pb();
extern errcode g_tblOPg_sel_table();
extern errcode g_parm_table();
extern errcode make_sel_name();
extern errcode stringOPconcat();
extern errcode own_defnOPtest();
extern errcode dbg_infoOPadd_own();
extern errcode g_envOPputl();
extern errcode s_name_typespec();
extern errcode g_envOPadd_extern();
extern errcode g_parm_table_inst_info();
extern errcode g_tblOPbuild_one_selector_table();
extern errcode g_own_build_one();
extern errcode g_parm_build_one();
extern errcode g_tblOPtest_pb_exprs_asst();
extern errcode g_tblOPtest_pb_fields_asst();
extern errcode pb_print();
extern errcode g_tblOPtest_pb_exprs_type_asst();
extern errcode idnOPget_kind();
extern errcode g_envOPputs();
extern errcode intOPunparse();
extern errcode g_ref_name_typespec();
extern errcode s_owns_prefix_fieldlist();
extern errcode fl_cont_op_parm();
extern errcode type_cont_op_parm();
extern errcode el_cont_op_parm();
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 *expr_ops;
struct OPS *sequence_of_expr_table;
struct OPS *sequence_of_expr_ops;
struct OPS *sequence_of_expr_ops;
OWNPTR sequence_of_expr_owns;
extern struct OPS *string_ops;
extern struct OPS *typespec_ops;
struct OPS  *record_sel_type__ops;
extern struct OPS *record_sel_type__ops;
struct OPS *sequence_of_record_sel_type__table;
struct OPS *sequence_of_record_sel_type__ops;
struct OPS *sequence_of_record_sel_type__ops;
OWNPTR sequence_of_record_sel_type__owns;
CLUREF STR_find_137tbl_137type_137_072_040others;
CLUREF STR_;
CLUREF STR_find_137tbl_137exprs_072_040s_137cons_040not_040select;
CLUREF STR_type_137_072_040unhandled_040typespec;
CLUREF STR_type_137of_137;
CLUREF STR__137;
CLUREF STR__137ops;
CLUREF STR_struct_040OPS_040_040_052;
CLUREF STR__073;
CLUREF STR_extern_040struct_040OPS_040_052;
CLUREF STR_test_137pb_072_040others;
CLUREF STR_test_137pb_072_040force_072_040others;
CLUREF STR_test_137pb_137expr_137asst_072_040exprabs_040not_040type_137_040or_040constant;
CLUREF STR_array;
CLUREF STR_sequence;
CLUREF STR__137vec;
CLUREF STR__137cvt;
CLUREF STR_test_137pb_137fields_137asst_072_040unexpected_040typespec;
CLUREF STR_add_137selector_137info_050;
CLUREF STR__042;
CLUREF STR__042_054_040;
CLUREF STR__054_040;
CLUREF STR__137ops_051_073_040;
CLUREF STR_find_137selector_137ops_050_042;
CLUREF STR__054_040_046_050;
CLUREF STR__137ops_051_051_073;
static int g_tbl_own_init = 0;
OWN_req g_tbl_ownreqs = {0,0};
CLUREF g_tblOPcum_pbl;
errcode g_tbl_own_init_proc()
{
    errcode err;
    enter_own_init_proc();
        if (g_tbl_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_parm_info_type(0, expr_ops, sequence_of_t_reqs);
        find_type_instance(sequence_ops, 1, &sequence_ownreqs, &(sequence_of_expr_ops));
        add_selector_info("sel", 0, string_ops); 
        add_selector_info("type_", 1, typespec_ops); 
        find_selector_ops("record", 2, &(record_sel_type__ops));
        add_parm_info_type(0, record_sel_type__ops, sequence_of_t_reqs);
        find_type_instance(sequence_ops, 1, &sequence_ownreqs, &(sequence_of_record_sel_type__ops));
        stringOPcons("find_tbl_type_: others", CLU_1, CLU_22, &STR_find_137tbl_137type_137_072_040others);
        stringOPcons("", CLU_1, CLU_0, &STR_);
        stringOPcons("find_tbl_exprs: s_cons not select", CLU_1, CLU_33, &STR_find_137tbl_137exprs_072_040s_137cons_040not_040select);
        stringOPcons("type_: unhandled typespec", CLU_1, CLU_25, &STR_type_137_072_040unhandled_040typespec);
        stringOPcons("type_of_", CLU_1, CLU_8, &STR_type_137of_137);
        stringOPcons("_", CLU_1, CLU_1, &STR__137);
        stringOPcons("_ops", CLU_1, CLU_4, &STR__137ops);
        stringOPcons("struct OPS  *", CLU_1, CLU_13, &STR_struct_040OPS_040_040_052);
        stringOPcons(";", CLU_1, CLU_1, &STR__073);
        stringOPcons("extern struct OPS *", CLU_1, CLU_19, &STR_extern_040struct_040OPS_040_052);
        stringOPcons("test_pb: others", CLU_1, CLU_15, &STR_test_137pb_072_040others);
        stringOPcons("test_pb: force: others", CLU_1, CLU_22, &STR_test_137pb_072_040force_072_040others);
        stringOPcons("test_pb_expr_asst: exprabs not type_ or constant", CLU_1, CLU_48, &STR_test_137pb_137expr_137asst_072_040exprabs_040not_040type_137_040or_040constant);
        stringOPcons("array", CLU_1, CLU_5, &STR_array);
        stringOPcons("sequence", CLU_1, CLU_8, &STR_sequence);
        stringOPcons("_vec", CLU_1, CLU_4, &STR__137vec);
        stringOPcons("_cvt", CLU_1, CLU_4, &STR__137cvt);
        stringOPcons("test_pb_fields_asst: unexpected typespec", CLU_1, CLU_40, &STR_test_137pb_137fields_137asst_072_040unexpected_040typespec);
        stringOPcons("add_selector_info(", CLU_1, CLU_18, &STR_add_137selector_137info_050);
        stringOPcons("\"", CLU_1, CLU_1, &STR__042);
        stringOPcons("\", ", CLU_1, CLU_3, &STR__042_054_040);
        stringOPcons(", ", CLU_1, CLU_2, &STR__054_040);
        stringOPcons("_ops); ", CLU_1, CLU_7, &STR__137ops_051_073_040);
        stringOPcons("find_selector_ops(\"", CLU_1, CLU_19, &STR_find_137selector_137ops_050_042);
        stringOPcons(", &(", CLU_1, CLU_4, &STR__054_040_046_050);
        stringOPcons("_ops));", CLU_1, CLU_7, &STR__137ops_051_051_073);
        g_tbl_own_init = 1;
        {
            {CLUREF T_0_1;
            err = arrayOPnew(&T_0_1);
            if (err != ERR_ok) goto ex_0;
            g_tblOPcum_pbl.num = T_0_1.num;
            }
            }
        {signal(ERR_ok);}
    ex_0: pclu_unhandled(err); {signal(ERR_failure);}
        }
    }


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

errcode g_tblOPexist(ret_1)
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
        if (g_tbl_own_init == 0) {
            err = g_tbl_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_tblOPcum_pbl.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_tables ****/

errcode g_tblOPfind_tables(e, bod, d)
CLUREF e;
CLUREF bod;
CLUREF d;
    {
    errcode err;
    errcode ecode2;
    CLUREF pbl;
    CLUREF each_ap;
        if (g_tbl_own_init == 0) {
            err = g_tbl_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;
        pbl.num = T_1_1.num;
        }
        }

  LINE(26);
    {
    CLUREF T_1_1;
    err = dbg_infoOPactive(&T_1_1);
    if (err != ERR_ok) goto ex_0;
    if (T_1_1.num == true) {

  LINE(27);
        {
        CLUREF T_2_1;
        if (d.cell->tag == 1) T_2_1.num = true; else T_2_1.num = false;
        if (T_2_1.num == true) {

  LINE(28);
            {
            CLUREF T_3_1;
            if (d.cell->tag != 1) {err = ERR_wrong_tag; goto ex_0;}
            T_3_1.num = d.cell->value;
            err = g_tblOPfind_tbls_in_signature(T_3_1, pbl);
            if (err != ERR_ok) goto ex_0;
            }
            }
        else {

  LINE(30);
            {
            CLUREF T_3_1;
            CLUREF T_3_2;
            CLUREF T_3_3;
            CLUREF T_3_4;
            CLUREF T_3_5;
                if (d.cell->tag != 3) {err = ERR_wrong_tag; goto ex_0;}
                T_3_1.num = d.cell->value;
                T_3_2.num = T_3_1.vec->data[0];
                T_3_4.num = T_3_2.vec->size; 
                T_3_5 = T_3_2;
                for (T_3_3.num = 1; T_3_3.num <= T_3_4.num; T_3_3.num++) {
                    each_ap.num = T_3_5.vec->data[T_3_3.num - 1];

  LINE(32);
                    {
                    err = g_tblOPfind_tbls_in_signature(each_ap, pbl);
                    if (err != ERR_ok) goto ex_0;
                    }
                }
            }
            end_inline_for_1:;
            }}/* end if */
        }
        }/* end if */

  LINE(36);
    {
    err = g_tblOPfind_tbls(bod, pbl);
    if (err != ERR_ok) goto ex_0;
    }

  LINE(37);
    {
    CLUREF T_1_1;
    err = g_tblOPtbl_uniq(pbl, &T_1_1);
    if (err != ERR_ok) goto ex_0;
    pbl.num = T_1_1.num;
    }

  LINE(38);
    {
    g_tblOPcum_pbl.num = pbl.num;
    }

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

  LINE(41);
    {
    {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_tables ****/


/**** BEGIN PROCEDURE find_tbls_in_signature ****/

errcode g_tblOPfind_tbls_in_signature(ap, pbl)
CLUREF ap;
CLUREF pbl;
    {
    errcode err;
    errcode ecode2;
        if (g_tbl_own_init == 0) {
            err = g_tbl_own_init_proc();
            if (err != ERR_ok) goto ex_0;
            }
    enter_proc(44);

  LINE(45);
    {
    CLUREF T_1_1;
    T_1_1.num = ap.vec->data[0];
    err = g_tblOPfind_tbl_decllist(T_1_1, pbl);
    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 find_tbls_in_signature ****/


/**** BEGIN PROCEDURE find_tbls ****/

errcode g_tblOPfind_tbls(bod, pbl)
CLUREF bod;
CLUREF pbl;
    {
    errcode err;
    errcode ecode2;
    CLUREF s;
    CLUREF di;
    CLUREF as;
    CLUREF inv;
    CLUREF w;
    CLUREF f;
    CLUREF dl;
    CLUREF i;
    CLUREF arm;
    CLUREF b;
    CLUREF t;
    CLUREF el;
    CLUREF c;
    CLUREF e;
    CLUREF a;
    CLUREF r;
    CLUREF d;
        if (g_tbl_own_init == 0) {
            err = g_tbl_own_init_proc();
            if (err != ERR_ok) goto ex_0;
            }
    enter_proc(58);

  LINE(59);
    {
    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(62);
            {
            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(64);
                    {
                    CLUREF T_3_1;
                    T_3_1.num = di.vec->data[2];
                    err = g_tblOPfind_tbl_exprs(T_3_1, pbl);
                    if (err != ERR_ok) goto ex_0;
                    }

  LINE(65);
                    {
                    CLUREF T_3_1;
                    T_3_1.num = di.vec->data[0];
                    err = g_tblOPfind_tbl_decllist(T_3_1, pbl);
                    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(67);
                    {
                    CLUREF T_3_1;
                    T_3_1.num = as.vec->data[2];
                    err = g_tblOPfind_tbl_exprlist(T_3_1, pbl);
                    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(69);
                    {
                    CLUREF T_3_1;
                    T_3_1.num = as.vec->data[0];
                    err = g_tblOPfind_tbl_exprs(T_3_1, pbl);
                    if (err != ERR_ok) goto ex_0;
                    }

  LINE(70);
                    {
                    CLUREF T_3_1;
                    T_3_1.num = as.vec->data[1];
                    err = g_tblOPfind_tbl_exprs(T_3_1, pbl);
                    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(72);
                    {
                    CLUREF T_3_1;
                    T_3_1.num = inv.vec->data[0];
                    err = g_tblOPfind_tbl_exprs(T_3_1, pbl);
                    if (err != ERR_ok) goto ex_0;
                    }

  LINE(73);
                    {
                    CLUREF T_3_1;
                    T_3_1.num = inv.vec->data[1];
                    err = g_tblOPfind_tbl_exprlist(T_3_1, pbl);
                    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(75);
                    {
                    CLUREF T_3_1;
                    T_3_1.num = w.vec->data[1];
                    err = g_tblOPfind_tbl_exprs(T_3_1, pbl);
                    if (err != ERR_ok) goto ex_0;
                    }

  LINE(76);
                    {
                    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_tblOPfind_tbls(T_3_2, pbl);
                    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(78);
                    {
                    CLUREF T_3_1;
                    err = dbg_infoOPactive(&T_3_1);
                    if (err != ERR_ok) goto ex_0;
                    if (T_3_1.num == true) {

  LINE(79);
                        {
                        CLUREF T_4_1;
                        T_4_1.num = f.vec->data[3];
                        switch (T_4_1.cell->tag) {
                        case 1: 
                             {CLUREF T_4_2;
                            T_4_2.num = T_4_1.cell->value;
                            dl.num = T_4_2.num;

  LINE(81);
                                {
                                err = g_tblOPfind_tbl_decllist(dl, pbl);
                                if (err != ERR_ok) goto ex_0;
                                }
                                break;
                                }
                        case 2: 
                             {
                                break;
                                }
                        }
                        }
                        }
                        }/* end if */

  LINE(85);
                    {
                    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_tblOPfind_tbl_exprs(T_3_2, pbl);
                    if (err != ERR_ok) goto ex_0;
                    }

  LINE(86);
                    {
                    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_tblOPfind_tbl_exprlist(T_3_2, pbl);
                    if (err != ERR_ok) goto ex_0;
                    }

  LINE(87);
                    {
                    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_tblOPfind_tbls(T_3_2, pbl);
                    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(89);
                    {
                    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(90);
                            {
                            CLUREF T_4_1;
                            T_4_1.num = arm.vec->data[2];
                            err = g_tblOPfind_tbl_exprs(T_4_1, pbl);
                            if (err != ERR_ok) goto ex_0;
                            }

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

  LINE(93);
                    {
                    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(95);
                            {
                            CLUREF T_4_1;
                            T_4_1.num = b.vec->data[1];
                            err = g_tblOPfind_tbls(T_4_1, pbl);
                            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(99);
                    {
                    CLUREF T_3_1;
                    T_3_1.num = t.vec->data[1];
                    err = g_tblOPfind_tbl_exprs(T_3_1, pbl);
                    if (err != ERR_ok) goto ex_0;
                    }

  LINE(100);
                    {
                    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(101);
                            {
                            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_tblOPfind_tbls(T_4_2, pbl);
                            if (err != ERR_ok) goto ex_0;
                            }
                        }
                    }
                    end_inline_for_3:;

  LINE(103);
                    {
                    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(105);
                            {
                            CLUREF T_4_1;
                            T_4_1.num = b.vec->data[1];
                            err = g_tblOPfind_tbls(T_4_1, pbl);
                            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(109);
                    {
                    err = g_tblOPfind_tbl_exprlist(el, pbl);
                    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(111);
                    {
                    err = g_tblOPfind_tbl_exprlist(el, pbl);
                    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(113);
                    {
                    CLUREF T_3_1;
                    T_3_1.num = c.vec->data[0];
                    err = g_tblOPfind_tbl_exprlist(T_3_1, pbl);
                    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(115);
                    {
                    CLUREF T_3_1;
                    T_3_1.num = c.vec->data[0];
                    err = g_tblOPfind_tbl_exprlist(T_3_1, pbl);
                    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(117);
                    {
                    CLUREF T_3_1;
                    T_3_1.num = b.vec->data[1];
                    err = g_tblOPfind_tbls(T_3_1, pbl);
                    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(119);
                    {
                    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_tblOPfind_tbls(T_3_2, pbl);
                    if (err != ERR_ok) goto ex_0;
                    }

  LINE(120);
                    {
                    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(121);
                            {
                            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_tblOPfind_tbls(T_4_2, pbl);
                            if (err != ERR_ok) goto ex_0;
                            }
                        }
                    }
                    end_inline_for_4:;

  LINE(124);
                    {
                    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(126);
                            {
                            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_tblOPfind_tbls(T_4_2, pbl);
                            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(130);
                    {
                    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_tblOPfind_tbls(T_3_2, pbl);
                    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(132);
                    {
                    CLUREF T_3_1;
                    T_3_1.num = f.vec->data[0];
                    err = g_tblOPfind_tbl_exprs(T_3_1, pbl);
                    if (err != ERR_ok) goto ex_0;
                    }
                    break;
                    }
            case 6: 
                 {CLUREF T_2_18;
                T_2_18.num = T_2_1.cell->value;
                d.num = T_2_18.num;

  LINE(134);
                    {
                    CLUREF T_3_1;
                    err = dbg_infoOPactive(&T_3_1);
                    if (err != ERR_ok) goto ex_0;
                    if (T_3_1.num == true) {

  LINE(135);
                        {
                        err = g_tblOPfind_tbl_decl(d, pbl);
                        if (err != ERR_ok) goto ex_0;
                        }
                        }
                        }/* end if */
                    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_tbls ****/


/**** BEGIN PROCEDURE find_tbl_decllist ****/

errcode g_tblOPfind_tbl_decllist(dl, pbl)
CLUREF dl;
CLUREF pbl;
    {
    errcode err;
    errcode ecode2;
    CLUREF each_d;
        if (g_tbl_own_init == 0) {
            err = g_tbl_own_init_proc();
            if (err != ERR_ok) goto ex_0;
            }
    enter_proc(142);

  LINE(143);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    CLUREF T_1_3;
        T_1_2.num = dl.vec->size; 
        T_1_3 = dl;
        for (T_1_1.num = 1; T_1_1.num <= T_1_2.num; T_1_1.num++) {
            each_d.num = T_1_3.vec->data[T_1_1.num - 1];

  LINE(144);
            {
            err = g_tblOPfind_tbl_decl(each_d, pbl);
            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_tbl_decllist ****/


/**** BEGIN PROCEDURE find_tbl_decl ****/

errcode g_tblOPfind_tbl_decl(d, pbl)
CLUREF d;
CLUREF pbl;
    {
    errcode err;
    errcode ecode2;
        if (g_tbl_own_init == 0) {
            err = g_tbl_own_init_proc();
            if (err != ERR_ok) goto ex_0;
            }
    enter_proc(148);

  LINE(149);
    {
    CLUREF T_1_1;
    T_1_1.num = d.vec->data[1];
    err = g_tblOPfind_tbl_type_(T_1_1, pbl);
    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 find_tbl_decl ****/


/**** BEGIN PROCEDURE find_tbl_typelist ****/

errcode g_tblOPfind_tbl_typelist(tys, pbl)
CLUREF tys;
CLUREF pbl;
    {
    errcode err;
    errcode ecode2;
    CLUREF ty;
        if (g_tbl_own_init == 0) {
            err = g_tbl_own_init_proc();
            if (err != ERR_ok) goto ex_0;
            }
    enter_proc(152);

  LINE(153);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    CLUREF T_1_3;
        T_1_2.num = tys.vec->size; 
        T_1_3 = tys;
        for (T_1_1.num = 1; T_1_1.num <= T_1_2.num; T_1_1.num++) {
            ty.num = T_1_3.vec->data[T_1_1.num - 1];

  LINE(154);
            {
            err = g_tblOPfind_tbl_type_(ty, pbl);
            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_tbl_typelist ****/

static int g_tblOPfind_tbl_type__own_init = 0;

/**** BEGIN PROCEDURE find_tbl_type_ ****/

errcode g_tblOPfind_tbl_type_(type_, pbl)
CLUREF type_;
CLUREF pbl;
    {
    errcode err;
    errcode ecode2;
    CLUREF ct;
    CLUREF xt;
    CLUREF ap;
    CLUREF i;
        if (g_tblOPfind_tbl_type__own_init == 0) {
        if (g_tbl_own_init == 0) {
            err = g_tbl_own_init_proc();
            if (err != ERR_ok) goto ex_0;
            }
        g_tblOPfind_tbl_type__own_init = 1;
    }
    enter_proc(158);

  LINE(159);
    {
    CLUREF T_1_1;
    err = typespecOPget_abs(type_, &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;

  LINE(161);
            {
            CLUREF T_2_1;
            T_2_1.num = ct.vec->data[1];
            err = g_tblOPfind_tbl_exprlist(T_2_1, pbl);
            if (err != ERR_ok) goto ex_0;
            }

  LINE(162);
            {
            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) {

  LINE(164);
                {
                CLUREF T_3_1;
                CellAlloc(4, ct.num, T_3_1);
                {
                if ((pbl.array->int_low + pbl.array->ext_size + 1) < pbl.array->int_size) {
                    pbl.array->store->data[pbl.array->int_low + pbl.array->ext_size] = T_3_1.num;
                    pbl.array->ext_size++; pbl.array->ext_high++;}
                else {
                    err = arrayOPaddh(pbl, T_3_1);
                    if (err != ERR_ok) goto ex_0;}
                }
                }
                }
            else {

  LINE(167);
                {
                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) {

  LINE(170);
                    {
                    CLUREF T_4_1;
                    CellAlloc(4, ct.num, T_4_1);
                    {
                    if ((pbl.array->int_low + pbl.array->ext_size + 1) < pbl.array->int_size) {
                        pbl.array->store->data[pbl.array->int_low + pbl.array->ext_size] = T_4_1.num;
                        pbl.array->ext_size++; pbl.array->ext_high++;}
                    else {
                        err = arrayOPaddh(pbl, T_4_1);
                        if (err != ERR_ok) goto ex_0;}
                    }
                    }
                    }
                    }/* end if */
                }}/* end if */
            break;
            }
    case 7: 
         {CLUREF T_1_3;
        T_1_3.num = T_1_1.cell->value;
        xt.num = T_1_3.num;

  LINE(173);
            {
            CLUREF T_2_1;
            T_2_1.num = xt.vec->data[1];
            err = g_tblOPfind_tbl_fieldspeclist(T_2_1, pbl);
            if (err != ERR_ok) goto ex_0;
            }

  LINE(174);
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            CLUREF T_2_3;
            CLUREF T_2_4;
            CLUREF T_2_5;
            RecordAlloc(2, T_2_1);
            T_2_2.num = xt.vec->data[0];
            err = duOPget_common(T_2_2, &T_2_3);
            if (err != ERR_ok) goto ex_0;
            T_2_1.vec->data[1]  = T_2_3.num;
            T_2_4.num = xt.vec->data[1];
            T_2_1.vec->data[0]  = T_2_4.num;
            CellAlloc(7, T_2_1.num, T_2_5);
            {
            if ((pbl.array->int_low + pbl.array->ext_size + 1) < pbl.array->int_size) {
                pbl.array->store->data[pbl.array->int_low + pbl.array->ext_size] = T_2_5.num;
                pbl.array->ext_size++; pbl.array->ext_high++;}
            else {
                err = arrayOPaddh(pbl, T_2_5);
                if (err != ERR_ok) goto ex_0;}
            }
            }
            break;
            }
    case 2: 
         {CLUREF T_1_4;
        T_1_4.num = T_1_1.cell->value;
        ap.num = T_1_4.num;
            break;
            }
    case 5: 
         {CLUREF T_1_5;
        T_1_5.num = T_1_1.cell->value;
        i.num = T_1_5.num;
            break;
            }
    case 8: 
         {CLUREF T_1_6;
        T_1_6.num = T_1_1.cell->value;
        ct.num = T_1_6.num;

  LINE(198);
            {
            CLUREF T_2_1;
            T_2_1.num = ct.vec->data[1];
            err = g_tblOPfind_tbl_exprlist(T_2_1, pbl);
            if (err != ERR_ok) goto ex_0;
            }

  LINE(200);
            {
            CLUREF T_2_1;
            CellAlloc(4, ct.num, T_2_1);
            {
            if ((pbl.array->int_low + pbl.array->ext_size + 1) < pbl.array->int_size) {
                pbl.array->store->data[pbl.array->int_low + pbl.array->ext_size] = T_2_1.num;
                pbl.array->ext_size++; pbl.array->ext_high++;}
            else {
                err = arrayOPaddh(pbl, T_2_1);
                if (err != ERR_ok) goto ex_0;}
            }
            }
            break;
            }
    case 4: 
         {
            break;
            }
    case 1: 
         {
            break;
            }
    default: {

  LINE(214);
        {
        CLUREF T_2_1;
        CLUREF T_2_2;
        T_2_1.num = 700;
        err = compiler_logit(T_2_1, STR_find_137tbl_137type_137_072_040others, &T_2_2);
        if (err != ERR_ok) goto ex_0;
        }

  LINE(215);
        {
        err = typespec_print(type_);
        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 find_tbl_type_ ****/


/**** BEGIN PROCEDURE find_tbl_exprlist ****/

errcode g_tblOPfind_tbl_exprlist(el, pbl)
CLUREF el;
CLUREF pbl;
    {
    errcode err;
    errcode ecode2;
    CLUREF each_e;
        if (g_tbl_own_init == 0) {
            err = g_tbl_own_init_proc();
            if (err != ERR_ok) goto ex_0;
            }
    enter_proc(221);

  LINE(222);
    {
    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(223);
            {
            err = g_tblOPfind_tbl_exprs(each_e, pbl);
            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_tbl_exprlist ****/


/**** BEGIN PROCEDURE find_tbl_fieldspeclist ****/

errcode g_tblOPfind_tbl_fieldspeclist(fl, pbl)
CLUREF fl;
CLUREF pbl;
    {
    errcode err;
    errcode ecode2;
    CLUREF each_f;
        if (g_tbl_own_init == 0) {
            err = g_tbl_own_init_proc();
            if (err != ERR_ok) goto ex_0;
            }
    enter_proc(229);

  LINE(230);
    {
    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(231);
            {
            err = g_tblOPfind_tbl_field(each_f, pbl);
            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_tbl_fieldspeclist ****/

static int g_tblOPfind_tbl_exprs_own_init = 0;

/**** BEGIN PROCEDURE find_tbl_exprs ****/

errcode g_tblOPfind_tbl_exprs(exp, pbl)
CLUREF exp;
CLUREF pbl;
    {
    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;
    CLUREF ty;
        if (g_tblOPfind_tbl_exprs_own_init == 0) {
        if (g_tbl_own_init == 0) {
            err = g_tbl_own_init_proc();
            if (err != ERR_ok) goto ex_0;
            }
        g_tblOPfind_tbl_exprs_own_init = 1;
    }
    enter_proc(238);

  LINE(243);
    {
    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;

  LINE(245);
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            err = g_tblOPbase_apply_test(ct, &T_2_1);
            if (err != ERR_ok) goto ex_0;
            T_2_2.num = T_2_1.num ^ 1;
            if (T_2_2.num == true) {

  LINE(246);
                {
                CLUREF T_3_1;
                T_3_1.num = ct.vec->data[1];
                err = g_tblOPfind_tbl_exprlist(T_3_1, pbl);
                if (err != ERR_ok) goto ex_0;
                }

  LINE(247);
                {
                CLUREF T_3_1;
                CLUREF T_3_2;
                CLUREF T_3_3;
                T_3_1.num = ct.vec->data[1];
                T_3_2.num = T_3_1.vec->size;
                T_3_3.num = (T_3_2.num > 0)? true : false;
                if (T_3_3.num == true) {

  LINE(250);
                    {
                    CLUREF T_4_1;
                    CellAlloc(4, ct.num, T_4_1);
                    {
                    if ((pbl.array->int_low + pbl.array->ext_size + 1) < pbl.array->int_size) {
                        pbl.array->store->data[pbl.array->int_low + pbl.array->ext_size] = T_4_1.num;
                        pbl.array->ext_size++; pbl.array->ext_high++;}
                    else {
                        err = arrayOPaddh(pbl, T_4_1);
                        if (err != ERR_ok) goto ex_0;}
                    }
                    }
                    }
                else {

  LINE(253);
                    {
                    CLUREF T_4_1;
                    CLUREF T_4_2;
                    T_4_1.num = ct.vec->data[0];
                    err = parmd_dus(T_4_1, &T_4_2);
                    if (err != ERR_ok) goto ex_0;
                    if (T_4_2.num == true) {

  LINE(256);
                        {
                        CLUREF T_5_1;
                        CellAlloc(4, ct.num, T_5_1);
                        {
                        if ((pbl.array->int_low + pbl.array->ext_size + 1) < pbl.array->int_size) {
                            pbl.array->store->data[pbl.array->int_low + pbl.array->ext_size] = T_5_1.num;
                            pbl.array->ext_size++; pbl.array->ext_high++;}
                        else {
                            err = arrayOPaddh(pbl, T_5_1);
                            if (err != ERR_ok) goto ex_0;}
                        }
                        }
                        }
                        }/* end if */
                    }}/* end if */
                }
                }/* end if */
            break;
            }
    case 20: 
         {CLUREF T_1_3;
        T_1_3.num = T_1_1.cell->value;
        cop.num = T_1_3.num;

  LINE(260);
            {
            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(262);
                    {
                    CLUREF T_3_1;
                    CLUREF T_3_2;
                    CLUREF T_3_3;
                    CLUREF T_3_4;
                    CLUREF T_3_5;
                    err = dbg_infoOPactive(&T_3_2);
                    if (err != ERR_ok) goto ex_0;
                    T_3_1.num = T_3_2.num;
                    if (!T_3_2.num) {
                        T_3_3.num = sel.vec->data[0];
                        T_3_4.num = cop.vec->data[0];
                        err = parmd_op(T_3_3, T_3_4, &T_3_5);
                        if (err != ERR_ok) goto ex_0;
                        T_3_1.num = T_3_5.num;
                    }
                    if (T_3_1.num == true) {

  LINE(263);
                        {
                        CLUREF T_4_1;
                        T_4_1.num = sel.vec->data[1];
                        err = g_tblOPfind_tbl_fieldspeclist(T_4_1, pbl);
                        if (err != ERR_ok) goto ex_0;
                        }

  LINE(265);
                        {
                        CLUREF T_4_1;
                        CLUREF T_4_2;
                        CLUREF T_4_3;
                        CLUREF T_4_4;
                        CLUREF T_4_5;
                        RecordAlloc(2, T_4_1);
                        T_4_2.num = sel.vec->data[0];
                        err = duOPget_common(T_4_2, &T_4_3);
                        if (err != ERR_ok) goto ex_0;
                        T_4_1.vec->data[1]  = T_4_3.num;
                        T_4_4.num = sel.vec->data[1];
                        T_4_1.vec->data[0]  = T_4_4.num;
                        CellAlloc(7, T_4_1.num, T_4_5);
                        {
                        if ((pbl.array->int_low + pbl.array->ext_size + 1) < pbl.array->int_size) {
                            pbl.array->store->data[pbl.array->int_low + pbl.array->ext_size] = T_4_5.num;
                            pbl.array->ext_size++; pbl.array->ext_high++;}
                        else {
                            err = arrayOPaddh(pbl, T_4_5);
                            if (err != ERR_ok) goto ex_0;}
                        }
                        }
                        }
                        }/* end if */
                    break;
                    }
            case 2: 
                 {CLUREF T_2_4;
                T_2_4.num = T_2_2.cell->value;
                a.num = T_2_4.num;

  LINE(270);
                    {
                    CLUREF T_3_1;
                    CLUREF T_3_2;
                    T_3_1.num = a.vec->data[1];
                    err = parmd_op(T_3_1, STR_, &T_3_2);
                    if (err != ERR_ok) goto ex_0;
                    if (T_3_2.num == true) {

  LINE(271);
                        {
                        CLUREF T_4_1;
                        T_4_1.num = cop.vec->data[1];
                        err = g_tblOPfind_tbl_exprlist(T_4_1, pbl);
                        if (err != ERR_ok) goto ex_0;
                        }

  LINE(273);
                        {
                        CLUREF T_4_1;
                        CellAlloc(6, cop.num, T_4_1);
                        {
                        if ((pbl.array->int_low + pbl.array->ext_size + 1) < pbl.array->int_size) {
                            pbl.array->store->data[pbl.array->int_low + pbl.array->ext_size] = T_4_1.num;
                            pbl.array->ext_size++; pbl.array->ext_high++;}
                        else {
                            err = arrayOPaddh(pbl, T_4_1);
                            if (err != ERR_ok) goto ex_0;}
                        }
                        }
                        }
                        }/* end if */
                    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(275);
                    {
                    CLUREF T_3_1;
                    CLUREF T_3_2;
                    CLUREF T_3_3;
                    CLUREF T_3_4;
                    CLUREF T_3_5;
                    CLUREF T_3_6;
                    CLUREF T_3_7;
                    err = dbg_infoOPactive(&T_3_2);
                    if (err != ERR_ok) goto ex_0;
                    T_3_1.num = T_3_2.num;
                    if (!T_3_2.num) {
                        T_3_4.num = ct.vec->data[0];
                        err = parmd_dus(T_3_4, &T_3_5);
                        if (err != ERR_ok) goto ex_0;
                        T_3_3.num = T_3_5.num;
                        if (T_3_5.num) {
                            err = g_tblOPbase_cluster_test(cop, ct, &T_3_6);
                            if (err != ERR_ok) goto ex_0;
                            T_3_7.num = T_3_6.num ^ 1;
                            T_3_3.num = T_3_7.num;
                        }
                        T_3_1.num = T_3_3.num;
                    }
                    if (T_3_1.num == true) {

  LINE(278);
                        {
                        CLUREF T_4_1;
                        T_4_1.num = cop.vec->data[1];
                        err = g_tblOPfind_tbl_exprlist(T_4_1, pbl);
                        if (err != ERR_ok) goto ex_0;
                        }

  LINE(279);
                        {
                        CLUREF T_4_1;
                        T_4_1.num = ct.vec->data[1];
                        err = g_tblOPfind_tbl_exprlist(T_4_1, pbl);
                        if (err != ERR_ok) goto ex_0;
                        }

  LINE(281);
                        {
                        CLUREF T_4_1;
                        CellAlloc(4, ct.num, T_4_1);
                        {
                        if ((pbl.array->int_low + pbl.array->ext_size + 1) < pbl.array->int_size) {
                            pbl.array->store->data[pbl.array->int_low + pbl.array->ext_size] = T_4_1.num;
                            pbl.array->ext_size++; pbl.array->ext_high++;}
                        else {
                            err = arrayOPaddh(pbl, T_4_1);
                            if (err != ERR_ok) goto ex_0;}
                        }
                        }

  LINE(282);
                        {
                        CLUREF T_4_1;
                        CellAlloc(6, cop.num, T_4_1);
                        {
                        if ((pbl.array->int_low + pbl.array->ext_size + 1) < pbl.array->int_size) {
                            pbl.array->store->data[pbl.array->int_low + pbl.array->ext_size] = T_4_1.num;
                            pbl.array->ext_size++; pbl.array->ext_high++;}
                        else {
                            err = arrayOPaddh(pbl, T_4_1);
                            if (err != ERR_ok) goto ex_0;}
                        }
                        }
                        }
                        }/* end if */
                    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(290);
            {
            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(291);
                {
                CLUREF T_3_1;
                err = dbg_infoOPactive(&T_3_1);
                if (err != ERR_ok) goto ex_0;
                if (T_3_1.num == true) {

  LINE(292);
                    {
                    CLUREF T_4_1;
                    T_4_1.num = s.vec->data[1];
                    err = g_tblOPfind_tbl_type_(T_4_1, pbl);
                    if (err != ERR_ok) goto ex_0;
                    }
                    }
                    }/* end if */

  LINE(293);
                {
                    {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(294);
                {
                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(295);
                        {
                        CLUREF T_4_1;
                        T_4_1.num = this_field.vec->data[2];
                        err = g_tblOPfind_tbl_exprs(T_4_1, pbl);
                        if (err != ERR_ok) goto ex_0;
                        }
                    }
                }
                end_inline_for_1:;

  LINE(300);
                {
                CLUREF T_3_1;
                err = dbg_infoOPactive(&T_3_1);
                if (err != ERR_ok) goto ex_0;
                if (T_3_1.num == true) {

  LINE(301);
                    {
                    CLUREF T_4_1;
                    CLUREF T_4_2;
                    CLUREF T_4_3;
                    CLUREF T_4_4;
                    CLUREF T_4_5;
                    CLUREF T_4_6;
                    CLUREF T_4_7;
                    CLUREF T_4_8;
                    RecordAlloc(2, T_4_1);
                    T_4_2.num = sel.vec->data[0];
                    err = duOPget_common(T_4_2, &T_4_3);
                    if (err != ERR_ok) goto ex_0;
                    T_4_1.vec->data[1]  = T_4_3.num;
                    T_4_4.num = s.vec->data[1];
                    err = typespecOPget_abs(T_4_4, &T_4_5);
                    if (err != ERR_ok) goto ex_0;
                    if (T_4_5.cell->tag != 7) {err = ERR_wrong_tag; goto ex_0;}
                    T_4_6.num = T_4_5.cell->value;
                    T_4_7.num = T_4_6.vec->data[1];
                    T_4_1.vec->data[0]  = T_4_7.num;
                    CellAlloc(7, T_4_1.num, T_4_8);
                    {
                    if ((pbl.array->int_low + pbl.array->ext_size + 1) < pbl.array->int_size) {
                        pbl.array->store->data[pbl.array->int_low + pbl.array->ext_size] = T_4_8.num;
                        pbl.array->ext_size++; pbl.array->ext_high++;}
                    else {
                        err = arrayOPaddh(pbl, T_4_8);
                        if (err != ERR_ok) goto ex_0;}
                    }
                    }
                    }
                    }/* end if */
                }
            else {

  LINE(305);
                {
                CLUREF T_3_1;
                CLUREF T_3_2;
                T_3_1.num = 701;
                err = compiler_logit(T_3_1, STR_find_137tbl_137exprs_072_040s_137cons_040not_040select, &T_3_2);
                if (err != ERR_ok) goto ex_0;
                }

  LINE(306);
                {
                CLUREF T_3_1;
                T_3_1.num = s.vec->data[1];
                err = typespec_print(T_3_1);
                if (err != ERR_ok) goto ex_0;
                }
                }}/* 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(309);
            {
            CLUREF T_2_1;
            err = dbg_infoOPactive(&T_2_1);
            if (err != ERR_ok) goto ex_0;
            if (T_2_1.num == true) {

  LINE(310);
                {
                CLUREF T_3_1;
                T_3_1.num = a.vec->data[2];
                err = g_tblOPfind_tbl_type_(T_3_1, pbl);
                if (err != ERR_ok) goto ex_0;
                }
                }
                }/* end if */

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

  LINE(312);
            {
            CLUREF T_2_1;
            err = dbg_infoOPactive(&T_2_1);
            if (err != ERR_ok) goto ex_0;
            if (T_2_1.num == true) {

  LINE(313);
                {
                CLUREF T_3_1;
                CellAlloc(1, a.num, T_3_1);
                {
                if ((pbl.array->int_low + pbl.array->ext_size + 1) < pbl.array->int_size) {
                    pbl.array->store->data[pbl.array->int_low + pbl.array->ext_size] = T_3_1.num;
                    pbl.array->ext_size++; pbl.array->ext_high++;}
                else {
                    err = arrayOPaddh(pbl, T_3_1);
                    if (err != ERR_ok) goto ex_0;}
                }
                }
                }
                }/* end if */
            break;
            }
    case 6: 
         {CLUREF T_1_6;
        T_1_6.num = T_1_1.cell->value;
        c.num = T_1_6.num;

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

  LINE(316);
            {
            CLUREF T_2_1;
            T_2_1.num = c.vec->data[1];
            err = g_tblOPfind_tbl_exprs(T_2_1, pbl);
            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(318);
            {
            CLUREF T_2_1;
            T_2_1.num = c.vec->data[0];
            err = g_tblOPfind_tbl_exprs(T_2_1, pbl);
            if (err != ERR_ok) goto ex_0;
            }

  LINE(319);
            {
            CLUREF T_2_1;
            T_2_1.num = c.vec->data[1];
            err = g_tblOPfind_tbl_exprs(T_2_1, pbl);
            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(321);
            {
            CLUREF T_2_1;
            T_2_1.num = inv.vec->data[0];
            err = g_tblOPfind_tbl_exprs(T_2_1, pbl);
            if (err != ERR_ok) goto ex_0;
            }

  LINE(322);
            {
            CLUREF T_2_1;
            T_2_1.num = inv.vec->data[1];
            err = g_tblOPfind_tbl_exprlist(T_2_1, pbl);
            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(324);
            {
            err = g_tblOPfind_tbl_exprs(e, pbl);
            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(326);
            {
            err = g_tblOPfind_tbl_exprs(e, pbl);
            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(328);
            {
            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;

  LINE(330);
                    {
                    CLUREF T_3_1;
                    T_3_1.num = sel.vec->data[1];
                    err = g_tblOPfind_tbl_fieldspeclist(T_3_1, pbl);
                    if (err != ERR_ok) goto ex_0;
                    }

  LINE(332);
                    {
                    CLUREF T_3_1;
                    CLUREF T_3_2;
                    CLUREF T_3_3;
                    CLUREF T_3_4;
                    CLUREF T_3_5;
                    RecordAlloc(2, T_3_1);
                    T_3_2.num = sel.vec->data[0];
                    err = duOPget_common(T_3_2, &T_3_3);
                    if (err != ERR_ok) goto ex_0;
                    T_3_1.vec->data[1]  = T_3_3.num;
                    T_3_4.num = sel.vec->data[1];
                    T_3_1.vec->data[0]  = T_3_4.num;
                    CellAlloc(7, T_3_1.num, T_3_5);
                    {
                    if ((pbl.array->int_low + pbl.array->ext_size + 1) < pbl.array->int_size) {
                        pbl.array->store->data[pbl.array->int_low + pbl.array->ext_size] = T_3_5.num;
                        pbl.array->ext_size++; pbl.array->ext_high++;}
                    else {
                        err = arrayOPaddh(pbl, T_3_5);
                        if (err != ERR_ok) goto ex_0;}
                    }
                    }
                    break;
                    }
            case 2: 
                 {CLUREF T_2_3;
                T_2_3.num = T_2_1.cell->value;
                a.num = T_2_3.num;

  LINE(336);
                    {
                    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(344);
                    {
                    CLUREF T_3_1;
                    CLUREF T_3_2;
                    CLUREF T_3_3;
                    CLUREF T_3_4;
                    err = dbg_infoOPactive(&T_3_2);
                    if (err != ERR_ok) goto ex_0;
                    T_3_1.num = T_3_2.num;
                    if (!T_3_2.num) {
                        T_3_3.num = ct.vec->data[0];
                        err = parmd_dus(T_3_3, &T_3_4);
                        if (err != ERR_ok) goto ex_0;
                        T_3_1.num = T_3_4.num;
                    }
                    if (T_3_1.num == true) {

  LINE(345);
                        {
                        CLUREF T_4_1;
                        T_4_1.num = ct.vec->data[1];
                        err = g_tblOPfind_tbl_exprlist(T_4_1, pbl);
                        if (err != ERR_ok) goto ex_0;
                        }

  LINE(348);
                        {
                        CLUREF T_4_1;
                        CellAlloc(4, ct.num, T_4_1);
                        {
                        if ((pbl.array->int_low + pbl.array->ext_size + 1) < pbl.array->int_size) {
                            pbl.array->store->data[pbl.array->int_low + pbl.array->ext_size] = T_4_1.num;
                            pbl.array->ext_size++; pbl.array->ext_high++;}
                        else {
                            err = arrayOPaddh(pbl, T_4_1);
                            if (err != ERR_ok) goto ex_0;}
                        }
                        }
                        }
                        }/* end if */
                    break;
                    }
            case 5: 
                 {
                    break;
                    }
            case 1: 
                 {
                    break;
                    }
            default: {

  LINE(353);
                {
                CLUREF T_3_1;
                CLUREF T_3_2;
                T_3_1.num = 703;
                err = compiler_logit(T_3_1, STR_type_137_072_040unhandled_040typespec, &T_3_2);
                if (err != ERR_ok) goto ex_0;
                }

  LINE(354);
                {
                err = typespec_print(t);
                if (err != ERR_ok) goto ex_0;
                }
            }
            }
            }
            break;
            }
    case 2: 
         {CLUREF T_1_12;
        T_1_12.num = T_1_1.cell->value;
        ex.num = T_1_12.num;

  LINE(357);
            {
            err = g_tblOPfind_tbl_exprs(ex, pbl);
            if (err != ERR_ok) goto ex_0;
            }

  LINE(358);
            {
            CLUREF T_2_1;
            err = exprOPget_typespec(ex, &T_2_1);
            if (err != ERR_ok) goto ex_0;
            err = g_tblOPfind_tbl_type_(T_2_1, pbl);
            if (err != ERR_ok) goto ex_0;
            }

  LINE(359);
            {
            CLUREF T_2_1;
            CellAlloc(3, ex.num, T_2_1);
            {
            if ((pbl.array->int_low + pbl.array->ext_size + 1) < pbl.array->int_size) {
                pbl.array->store->data[pbl.array->int_low + pbl.array->ext_size] = T_2_1.num;
                pbl.array->ext_size++; pbl.array->ext_high++;}
            else {
                err = arrayOPaddh(pbl, T_2_1);
                if (err != ERR_ok) goto ex_0;}
            }
            }
            break;
            }
    case 11: 
         {CLUREF T_1_13;
        T_1_13.num = T_1_1.cell->value;
        ty.num = T_1_13.num;

  LINE(361);
            {
            err = g_tblOPfind_tbl_type_(ty, pbl);
            if (err != ERR_ok) goto ex_0;
            }

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

  LINE(366);
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            T_2_1.num = 705;
            err = compiler_logit(T_2_1, STR_type_137of_137, &T_2_2);
            if (err != ERR_ok) goto ex_0;
            }

  LINE(367);
            {
            err = expr_print(exp, CLU_9);
            if (err != ERR_ok) goto ex_0;
            }
            break;
            }
    case 13: 
         {

  LINE(369);
            {
            CLUREF T_2_1;
            err = dbg_infoOPactive(&T_2_1);
            if (err != ERR_ok) goto ex_0;
            if (T_2_1.num == true) {

  LINE(370);
                {
                CLUREF T_3_1;
                err = exprOPget_typespec(exp, &T_3_1);
                if (err != ERR_ok) goto ex_0;
                err = g_tblOPfind_tbl_type_(T_3_1, pbl);
                if (err != ERR_ok) goto ex_0;
                }
                }
                }/* end if */
            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_tbl_exprs ****/


/**** BEGIN PROCEDURE find_tbl_field ****/

errcode g_tblOPfind_tbl_field(f, pbl)
CLUREF f;
CLUREF pbl;
    {
    errcode err;
    errcode ecode2;
    CLUREF ct;
    CLUREF sel;
    CLUREF a;
        if (g_tbl_own_init == 0) {
            err = g_tbl_own_init_proc();
            if (err != ERR_ok) goto ex_0;
            }
    enter_proc(379);

  LINE(380);
    {
    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(382);
            {
            CLUREF T_2_1;
            T_2_1.num = ct.vec->data[1];
            err = g_tblOPfind_tbl_exprlist(T_2_1, pbl);
            if (err != ERR_ok) goto ex_0;
            }

  LINE(383);
            {
            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) {

  LINE(387);
                {
                CLUREF T_3_1;
                CellAlloc(4, ct.num, T_3_1);
                {
                if ((pbl.array->int_low + pbl.array->ext_size + 1) < pbl.array->int_size) {
                    pbl.array->store->data[pbl.array->int_low + pbl.array->ext_size] = T_3_1.num;
                    pbl.array->ext_size++; pbl.array->ext_high++;}
                else {
                    err = arrayOPaddh(pbl, T_3_1);
                    if (err != ERR_ok) goto ex_0;}
                }
                }
                }
            else {

  LINE(389);
                {
                CLUREF T_3_1;
                CLUREF T_3_2;
                CLUREF T_3_3;
                CLUREF T_3_4;
                T_3_2.num = ct.vec->data[0];
                err = parmd_dus(T_3_2, &T_3_3);
                if (err != ERR_ok) goto ex_0;
                T_3_1.num = T_3_3.num;
                if (!T_3_3.num) {
                    err = dbg_infoOPactive(&T_3_4);
                    if (err != ERR_ok) goto ex_0;
                    T_3_1.num = T_3_4.num;
                }
                if (T_3_1.num == true) {

  LINE(393);
                    {
                    CLUREF T_4_1;
                    CellAlloc(4, ct.num, T_4_1);
                    {
                    if ((pbl.array->int_low + pbl.array->ext_size + 1) < pbl.array->int_size) {
                        pbl.array->store->data[pbl.array->int_low + pbl.array->ext_size] = T_4_1.num;
                        pbl.array->ext_size++; pbl.array->ext_high++;}
                    else {
                        err = arrayOPaddh(pbl, T_4_1);
                        if (err != ERR_ok) goto ex_0;}
                    }
                    }
                    }
                    }/* 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(398);
            {
            CLUREF T_2_1;
            T_2_1.num = sel.vec->data[1];
            err = g_tblOPfind_tbl_fieldspeclist(T_2_1, pbl);
            if (err != ERR_ok) goto ex_0;
            }

  LINE(400);
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            CLUREF T_2_3;
            CLUREF T_2_4;
            CLUREF T_2_5;
            RecordAlloc(2, T_2_1);
            T_2_2.num = sel.vec->data[0];
            err = duOPget_common(T_2_2, &T_2_3);
            if (err != ERR_ok) goto ex_0;
            T_2_1.vec->data[1]  = T_2_3.num;
            T_2_4.num = sel.vec->data[1];
            T_2_1.vec->data[0]  = T_2_4.num;
            CellAlloc(7, T_2_1.num, T_2_5);
            {
            if ((pbl.array->int_low + pbl.array->ext_size + 1) < pbl.array->int_size) {
                pbl.array->store->data[pbl.array->int_low + pbl.array->ext_size] = T_2_5.num;
                pbl.array->ext_size++; pbl.array->ext_high++;}
            else {
                err = arrayOPaddh(pbl, T_2_5);
                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 1: 
    case 4: 
    case 9: 
    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_tbl_field ****/

struct OPS *sequence_of_idn_table;
struct OPS *sequence_of_idn_ops;
struct OPS *sequence_of_idn_ops;
OWNPTR sequence_of_idn_owns;
struct OPS *sequence_of_expr_table;
struct OPS *sequence_of_expr_ops;
struct OPS *sequence_of_expr_ops;
OWNPTR sequence_of_expr_owns;
struct OPS  *record_sel_type__ops;
struct OPS *sequence_of_record_sel_type__table;
struct OPS *sequence_of_record_sel_type__ops;
struct OPS *sequence_of_record_sel_type__ops;
OWNPTR sequence_of_record_sel_type__owns;
static int g_tblOPtbl_uniq_own_init = 0;

/**** BEGIN PROCEDURE tbl_uniq ****/

errcode g_tblOPtbl_uniq(pbl, ret_1)
CLUREF pbl;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
    CLUREF low;
    CLUREF size;
    CLUREF newpbl;
    CLUREF index;
    CLUREF possible_pb;
    CLUREF possible_formals;
    CLUREF possible_actuals;
    CLUREF possible_fl;
    CLUREF possible_name;
    CLUREF possible_type;
    CLUREF each_pb;
    CLUREF formals;
    CLUREF actuals;
    CLUREF s;
    CLUREF each_fl;
    CLUREF ex;
    CLUREF ty;
        if (g_tblOPtbl_uniq_own_init == 0) {
        if (g_tbl_own_init == 0) {
            err = g_tbl_own_init_proc();
            if (err != ERR_ok) goto ex_0;
            }
        g_tblOPtbl_uniq_own_init = 1;
    }
    enter_proc(409);

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

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

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

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

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

  LINE(417);
    {
    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(419);
            {
                {CLUREF T_2_1;
                if (index.num < pbl.array->ext_low || index.num > pbl.array->ext_high ) {
                    err = ERR_bounds;
                    goto ex_0;}
                T_2_1.num = pbl.array->store->data[index.num - pbl.array->ext_low + pbl.array->int_low];
                possible_pb.num = T_2_1.num;
                }
                }

  LINE(425);
            {
            switch (possible_pb.cell->tag) {
            case 7: 
                 {

  LINE(427);
                    {
                    CLUREF T_3_1;
                    CLUREF T_3_2;
                    if (possible_pb.cell->tag != 7) {err = ERR_wrong_tag; goto ex_0;}
                    T_3_1.num = possible_pb.cell->value;
                    T_3_2.num = T_3_1.vec->data[0];
                    possible_fl.num = T_3_2.num;
                    }

  LINE(428);
                    {
                    CLUREF T_3_1;
                    CLUREF T_3_2;
                    if (possible_pb.cell->tag != 7) {err = ERR_wrong_tag; goto ex_0;}
                    T_3_1.num = possible_pb.cell->value;
                    T_3_2.num = T_3_1.vec->data[1];
                    possible_name.num = T_3_2.num;
                    }
                    break;
                    }
            case 3: 
                 {

  LINE(430);
                    {
                    CLUREF T_3_1;
                    CLUREF T_3_2;
                    if (possible_pb.cell->tag != 3) {err = ERR_wrong_tag; goto ex_0;}
                    T_3_1.num = possible_pb.cell->value;
                    err = exprOPget_typespec(T_3_1, &T_3_2);
                    if (err != ERR_ok) goto ex_0;
                    possible_type.num = T_3_2.num;
                    }
                    break;
                    }
            case 5: 
                 {

  LINE(432);
                    {
                    CLUREF T_3_1;
                    if (possible_pb.cell->tag != 5) {err = ERR_wrong_tag; goto ex_0;}
                    T_3_1.num = possible_pb.cell->value;
                    possible_type.num = T_3_1.num;
                    }
                    break;
                    }
            default: {

  LINE(434);
                {
                CLUREF T_3_1;
                err = pb_formals(possible_pb, &T_3_1);
                if (err != ERR_ok) goto ex_0;
                possible_formals.num = T_3_1.num;
                }

  LINE(435);
                {
                CLUREF T_3_1;
                err = pb_actuals(possible_pb, &T_3_1);
                if (err != ERR_ok) goto ex_0;
                possible_actuals.num = T_3_1.num;
                }
            }
            }
            }

  LINE(437);
            {
            CLUREF T_3_1;
            CLUREF T_3_2;
            CLUREF T_3_3;
                T_3_2.num = newpbl.array->ext_high; 
                T_3_3 = newpbl;
                for (T_3_1.num = newpbl.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_pb.num = T_3_3.array->store->data[T_3_1.num - T_3_3.array->ext_low + T_3_3.array->int_low];

  LINE(438);
                    {
                    switch (each_pb.cell->tag) {
                    case 6: 
                    case 1: 
                    case 4: 
                    case 2: 
                    case 8: 
                         {

  LINE(440);
                            {
                            CLUREF T_5_1;
                            if (possible_pb.cell->tag == 7) T_5_1.num = true; else T_5_1.num = false;
                            if (T_5_1.num == true) {
                                continue;
                                }
                                }/* end if */

  LINE(441);
                            {
                            CLUREF T_5_1;
                            if (possible_pb.cell->tag == 3) T_5_1.num = true; else T_5_1.num = false;
                            if (T_5_1.num == true) {
                                continue;
                                }
                                }/* end if */

  LINE(442);
                            {
                            CLUREF T_5_1;
                            if (possible_pb.cell->tag == 5) T_5_1.num = true; else T_5_1.num = false;
                            if (T_5_1.num == true) {
                                continue;
                                }
                                }/* end if */

  LINE(443);
                            {
                                {CLUREF T_5_1;
                                err = pb_formals(each_pb, &T_5_1);
                                if (err != ERR_ok) goto ex_1;
                                formals.num = T_5_1.num;
                                }
                                }

  LINE(444);
                            {
                                {CLUREF T_5_1;
                                err = pb_actuals(each_pb, &T_5_1);
                                if (err != ERR_ok) goto ex_1;
                                actuals.num = T_5_1.num;
                                }
                                }

  LINE(445);
                            {
                            CLUREF T_5_1;
                            CLUREF T_5_2;
                            CLUREF T_5_3;
                            generic_CLU_proc.type_owns = sequence_of_idn_ops->type_owns;
                            generic_CLU_proc.proc = sequenceOPsimilar;
                            CUR_PROC_VAR.proc = &generic_CLU_proc;
                            err = sequenceOPsimilar(possible_formals, formals, &T_5_2);
                            if (err != ERR_ok) goto ex_1;
                            T_5_1.num = T_5_2.num;
                            if (T_5_2.num) {
                                generic_CLU_proc.type_owns = sequence_of_expr_ops->type_owns;
                                generic_CLU_proc.proc = sequenceOPsimilar;
                                CUR_PROC_VAR.proc = &generic_CLU_proc;
                                err = sequenceOPsimilar(possible_actuals, actuals, &T_5_3);
                                if (err != ERR_ok) goto ex_1;
                                T_5_1.num = T_5_3.num;
                            }
                            if (T_5_1.num == true) {

  LINE(447);
                                {
                                    err = ERR_cont;
                                    goto ex_1;
                                    }
                                }
                                }/* end if */
                            break;
                            }
                    case 7: 
                         {CLUREF T_4_1;
                        T_4_1.num = each_pb.cell->value;
                        s.num = T_4_1.num;

  LINE(449);
                            {
                            CLUREF T_5_1;
                            CLUREF T_5_2;
                            if (possible_pb.cell->tag == 7) 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(450);
                            {
                            CLUREF T_5_1;
                            CLUREF T_5_2;
                            CLUREF T_5_3;
                            T_5_1.num = s.vec->data[1];
                            T_5_2.num = ((T_5_1.str->size != possible_name.str->size)? false :
                                !(bcmp(T_5_1.str->data, possible_name.str->data, T_5_1.str->size)));
                            T_5_3.num = T_5_2.num ^ 1;
                            if (T_5_3.num == true) {
                                continue;
                                }
                                }/* end if */

  LINE(451);
                            {
                                {CLUREF T_5_1;
                                T_5_1.num = s.vec->data[0];
                                each_fl.num = T_5_1.num;
                                }
                                }

  LINE(452);
                            {
                            CLUREF T_5_1;
                            generic_CLU_proc.type_owns = sequence_of_record_sel_type__ops->type_owns;
                            generic_CLU_proc.proc = sequenceOPsimilar;
                            CUR_PROC_VAR.proc = &generic_CLU_proc;
                            err = sequenceOPsimilar(possible_fl, each_fl, &T_5_1);
                            if (err != ERR_ok) goto ex_1;
                            if (T_5_1.num == true) {

  LINE(453);
                                {
                                    err = ERR_cont;
                                    goto ex_1;
                                    }
                                }
                                }/* end if */
                            break;
                            }
                    case 3: 
                         {CLUREF T_4_2;
                        T_4_2.num = each_pb.cell->value;
                        ex.num = T_4_2.num;

  LINE(455);
                            {
                            CLUREF T_5_1;
                            CLUREF T_5_2;
                            if (possible_pb.cell->tag == 3) 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(456);
                            {
                            CLUREF T_5_1;
                            CLUREF T_5_2;
                            err = exprOPget_typespec(ex, &T_5_1);
                            if (err != ERR_ok) goto ex_1;
                            err = typespecOPsimilar(T_5_1, possible_type, &T_5_2);
                            if (err != ERR_ok) goto ex_1;
                            if (T_5_2.num == true) {

  LINE(457);
                                {
                                    err = ERR_cont;
                                    goto ex_1;
                                    }
                                }
                                }/* end if */
                            break;
                            }
                    case 5: 
                         {CLUREF T_4_3;
                        T_4_3.num = each_pb.cell->value;
                        ty.num = T_4_3.num;

  LINE(459);
                            {
                            CLUREF T_5_1;
                            CLUREF T_5_2;
                            if (possible_pb.cell->tag == 5) 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(460);
                            {
                            CLUREF T_5_1;
                            err = typespecOPsimilar(ty, possible_type, &T_5_1);
                            if (err != ERR_ok) goto ex_1;
                            if (T_5_1.num == true) {

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

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

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

  LINE(467);
    {
    {
    ret_1->num = newpbl.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 tbl_uniq ****/


/**** BEGIN PROCEDURE g_field_tables ****/

errcode g_tblOPg_field_tables(e, pass)
CLUREF e;
CLUREF pass;
    {
    errcode err;
    errcode ecode2;
    CLUREF each_pb;
    CLUREF s;
    CLUREF test;
        if (g_tbl_own_init == 0) {
            err = g_tbl_own_init_proc();
            if (err != ERR_ok) goto ex_0;
            }
    enter_proc(473);

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

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

  LINE(480);
                {
                switch (each_pb.cell->tag) {
                case 7: 
                     {CLUREF T_3_1;
                    T_3_1.num = each_pb.cell->value;
                    s.num = T_3_1.num;

  LINE(482);
                        {
                        CLUREF T_4_1;
                        T_4_1.num = s.vec->data[0];
                        err = g_tblOPg_sel_extern(e, T_4_1);
                        if (err != ERR_ok) goto ex_0;
                        }
                        break;
                        }
                default: {

  LINE(484);
                    {
                    err = g_parm_extern(e, each_pb);
                    if (err != ERR_ok) goto ex_0;
                    }
                }
                }
                }
                }
                }/* end if */

  LINE(487);
            {
                {CLUREF T_2_1;
                err = g_tblOPtest_pb(each_pb, &T_2_1);
                if (err != ERR_ok) goto ex_0;
                test.num = T_2_1.num;
                }
                }

  LINE(494);
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            T_2_1.num = test.num;
            if (test.num) {
                T_2_2.num = (pass.num == 1)? true : false;
                T_2_1.num = T_2_2.num;
            }
            if (T_2_1.num == true) {
                continue;
                }
                }/* end if */

  LINE(495);
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            CLUREF T_2_3;
            T_2_2.num = test.num ^ 1;
            T_2_1.num = T_2_2.num;
            if (T_2_2.num) {
                T_2_3.num = (pass.num == 2)? true : false;
                T_2_1.num = T_2_3.num;
            }
            if (T_2_1.num == true) {
                continue;
                }
                }/* end if */

  LINE(496);
            {
            switch (each_pb.cell->tag) {
            case 7: 
                 {CLUREF T_2_1;
                T_2_1.num = each_pb.cell->value;
                s.num = T_2_1.num;

  LINE(498);
                    {
                    CLUREF T_3_1;
                    CLUREF T_3_2;
                    T_3_1.num = s.vec->data[1];
                    T_3_2.num = s.vec->data[0];
                    err = g_tblOPg_sel_table(e, T_3_1, T_3_2);
                    if (err != ERR_ok) goto ex_0;
                    }
                    break;
                    }
            default: {

  LINE(500);
                {
                err = g_parm_table(e, each_pb);
                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_field_tables ****/

static int g_tblOPg_sel_table_own_init = 0;

/**** BEGIN PROCEDURE g_sel_table ****/

errcode g_tblOPg_sel_table(e, fn, fl)
CLUREF e;
CLUREF fn;
CLUREF fl;
    {
    errcode err;
    errcode ecode2;
    CLUREF sel_name;
    CLUREF nm;
        if (g_tblOPg_sel_table_own_init == 0) {
        if (g_tbl_own_init == 0) {
            err = g_tbl_own_init_proc();
            if (err != ERR_ok) goto ex_0;
            }
        g_tblOPg_sel_table_own_init = 1;
    }
    enter_proc(505);

  LINE(506);
    {
        {CLUREF T_1_1;
        err = make_sel_name(fl, &T_1_1);
        if (err != ERR_ok) goto ex_0;
        sel_name.num = T_1_1.num;
        }
        }

  LINE(507);
    {
        {CLUREF T_1_1;
        CLUREF T_1_2;
        CLUREF T_1_3;
        err = stringOPconcat(fn, STR__137, &T_1_1);
        if (err != ERR_ok) goto ex_0;
        err = stringOPconcat(T_1_1, sel_name, &T_1_2);
        if (err != ERR_ok) goto ex_0;
        err = stringOPconcat(T_1_2, STR__137ops, &T_1_3);
        if (err != ERR_ok) goto ex_0;
        nm.num = T_1_3.num;
        }
        }

  LINE(508);
    {
    CLUREF T_1_1;
    err = own_defnOPtest(nm, &T_1_1);
    if (err != ERR_ok) goto ex_0;
    if (T_1_1.num == true) {

  LINE(510);
        {
        err = dbg_infoOPadd_own(nm);
        if (err != ERR_ok) goto ex_0;
        }

  LINE(511);
        {
        CLUREF T_2_1;
        CLUREF T_2_2;
        err = stringOPconcat(STR_struct_040OPS_040_040_052, nm, &T_2_1);
        if (err != ERR_ok) goto ex_0;
        err = stringOPconcat(T_2_1, STR__073, &T_2_2);
        if (err != ERR_ok) goto ex_0;
        err = g_envOPputl(e, T_2_2);
        if (err != ERR_ok) goto ex_0;
        }
        }
        }/* end if */
    goto end_0;
    ex_0:
        {
            if (err == ERR_failure) {signal(ERR_failure);}
            elist[0] = _pclu_erstr(err);
            {signal(ERR_failure);}
        }
    end_0: {signal(ERR_ok);}
    }

/**** END PROCEDURE g_sel_table ****/

static int g_tblOPg_sel_extern_own_init = 0;

/**** BEGIN PROCEDURE g_sel_extern ****/

errcode g_tblOPg_sel_extern(e, each_fl)
CLUREF e;
CLUREF each_fl;
    {
    errcode err;
    errcode ecode2;
    CLUREF each_field;
    CLUREF doit;
    CLUREF tname;
        if (g_tblOPg_sel_extern_own_init == 0) {
        if (g_tbl_own_init == 0) {
            err = g_tbl_own_init_proc();
            if (err != ERR_ok) goto ex_0;
            }
        g_tblOPg_sel_extern_own_init = 1;
    }
    enter_proc(517);

  LINE(518);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    CLUREF T_1_3;
        T_1_2.num = each_fl.vec->size; 
        T_1_3 = each_fl;
        for (T_1_1.num = 1; T_1_1.num <= T_1_2.num; T_1_1.num++) {
            each_field.num = T_1_3.vec->data[T_1_1.num - 1];

  LINE(519);
            {
                {doit.tf = true;
                }
                }

  LINE(520);
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            CLUREF T_2_3;
            T_2_1.num = each_field.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 == 5) T_2_3.num = true; else T_2_3.num = false;
            if (T_2_3.num == true) {
                {
                doit.tf = false;
                }
                }
                }/* end if */

  LINE(521);
            {
            if (doit.num == true) {

  LINE(523);
                {
                    {CLUREF T_3_1;
                    CLUREF T_3_2;
                    CLUREF T_3_3;
                    T_3_1.num = each_field.vec->data[1];
                    err = s_name_typespec(T_3_1, &T_3_2);
                    if (err != ERR_ok) goto ex_0;
                    err = stringOPconcat(T_3_2, STR__137ops, &T_3_3);
                    if (err != ERR_ok) goto ex_0;
                    tname.num = T_3_3.num;
                    }
                    }

  LINE(524);
                {
                CLUREF T_3_1;
                err = g_envOPadd_extern(tname, &T_3_1);
                if (err != ERR_ok) goto ex_0;
                if (T_3_1.num == true) {

  LINE(525);
                    {
                    CLUREF T_4_1;
                    CLUREF T_4_2;
                    err = stringOPconcat(STR_extern_040struct_040OPS_040_052, tname, &T_4_1);
                    if (err != ERR_ok) goto ex_0;
                    err = stringOPconcat(T_4_1, STR__073, &T_4_2);
                    if (err != ERR_ok) goto ex_0;
                    err = g_envOPputl(e, T_4_2);
                    if (err != ERR_ok) goto ex_0;
                    }
                    }
                    }/* end if */
                }
                }/* 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_sel_extern ****/


/**** BEGIN PROCEDURE build_tables ****/

errcode g_tblOPbuild_tables(e, pass)
CLUREF e;
CLUREF pass;
    {
    errcode err;
    errcode ecode2;
    CLUREF each_pb;
    CLUREF test;
    CLUREF s;
        if (g_tbl_own_init == 0) {
            err = g_tbl_own_init_proc();
            if (err != ERR_ok) goto ex_0;
            }
    enter_proc(531);

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

  LINE(536);
            {
            CLUREF T_2_1;
            T_2_1.num = (pass.num == 0)? true : false;
            if (T_2_1.num == true) {
                {
                err = g_parm_table_inst_info(e, each_pb);
                if (err != ERR_ok) goto ex_0;
                }
                continue;
                }
                }/* end if */

  LINE(538);
            {
                {CLUREF T_2_1;
                err = g_tblOPtest_pb(each_pb, &T_2_1);
                if (err != ERR_ok) goto ex_0;
                test.num = T_2_1.num;
                }
                }

  LINE(543);
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            T_2_1.num = test.num;
            if (test.num) {
                T_2_2.num = (pass.num == 1)? true : false;
                T_2_1.num = T_2_2.num;
            }
            if (T_2_1.num == true) {
                continue;
                }
                }/* end if */

  LINE(544);
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            CLUREF T_2_3;
            T_2_2.num = test.num ^ 1;
            T_2_1.num = T_2_2.num;
            if (T_2_2.num) {
                T_2_3.num = (pass.num == 2)? true : false;
                T_2_1.num = T_2_3.num;
            }
            if (T_2_1.num == true) {
                continue;
                }
                }/* end if */

  LINE(545);
            {
            switch (each_pb.cell->tag) {
            case 7: 
                 {CLUREF T_2_1;
                T_2_1.num = each_pb.cell->value;
                s.num = T_2_1.num;

  LINE(547);
                    {
                    CLUREF T_3_1;
                    CLUREF T_3_2;
                    T_3_1.num = s.vec->data[1];
                    T_3_2.num = s.vec->data[0];
                    err = g_tblOPbuild_one_selector_table(e, T_3_1, T_3_2);
                    if (err != ERR_ok) goto ex_0;
                    }
                    break;
                    }
            default: {

  LINE(550);
                {
                err = g_own_build_one(e, each_pb);
                if (err != ERR_ok) goto ex_0;
                }

  LINE(551);
                {
                err = g_parm_build_one(e, each_pb);
                if (err != ERR_ok) goto ex_0;
                }
            }
            }
            }
        }
    }
    end_inline_for_1:;

  LINE(554);
    {
    CLUREF T_1_1;
    T_1_1.num = (pass.num == 2)? true : false;
    if (T_1_1.num == true) {
        {
        CLUREF T_2_1;
        err = arrayOPnew(&T_2_1);
        if (err != ERR_ok) goto ex_0;
        g_tblOPcum_pbl.num = T_2_1.num;
        }
        }
        }/* 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 build_tables ****/

static int g_tblOPtest_pb_own_init = 0;

/**** BEGIN PROCEDURE test_pb ****/

errcode g_tblOPtest_pb(p, ret_1)
CLUREF p;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
    CLUREF cop;
    CLUREF ct;
    CLUREF a;
    CLUREF s;
    CLUREF ex;
    CLUREF ty;
        if (g_tblOPtest_pb_own_init == 0) {
        if (g_tbl_own_init == 0) {
            err = g_tbl_own_init_proc();
            if (err != ERR_ok) goto ex_0;
            }
        g_tblOPtest_pb_own_init = 1;
    }
    enter_proc(559);

  LINE(560);
    {
    switch (p.cell->tag) {
    case 6: 
         {CLUREF T_1_1;
        T_1_1.num = p.cell->value;
        cop.num = T_1_1.num;

  LINE(563);
            {
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            T_2_1.num = cop.vec->data[1];
            err = g_tblOPtest_pb_exprs_asst(T_2_1, &T_2_2);
            if (err != ERR_ok) goto ex_0;
            ret_1->num = T_2_2.num;
            }
            {signal (ERR_ok);}}
            break;
            }
    case 4: 
         {CLUREF T_1_2;
        T_1_2.num = p.cell->value;
        ct.num = T_1_2.num;

  LINE(566);
            {
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            T_2_1.num = ct.vec->data[1];
            err = g_tblOPtest_pb_exprs_asst(T_2_1, &T_2_2);
            if (err != ERR_ok) goto ex_0;
            ret_1->num = T_2_2.num;
            }
            {signal (ERR_ok);}}
            break;
            }
    case 1: 
         {CLUREF T_1_3;
        T_1_3.num = p.cell->value;
        a.num = T_1_3.num;

  LINE(569);
            {
            CLUREF T_2_1;
            err = dbg_infoOPactive(&T_2_1);
            if (err != ERR_ok) goto ex_0;
            if (T_2_1.num == true) {

  LINE(570);
                {
                CLUREF T_3_1;
                CLUREF T_3_2;
                T_3_1.num = a.vec->data[2];
                err = typespecOPget_abs(T_3_1, &T_3_2);
                if (err != ERR_ok) goto ex_0;
                switch (T_3_2.cell->tag) {
                case 3: 
                case 8: 
                     {CLUREF T_3_3;
                    T_3_3.num = T_3_2.cell->value;
                    ct.num = T_3_3.num;

  LINE(572);
                        {
                        CLUREF T_4_1;
                        CLUREF T_4_2;
                        T_4_1.num = ct.vec->data[1];
                        err = g_tblOPtest_pb_exprs_asst(T_4_1, &T_4_2);
                        if (err != ERR_ok) goto ex_0;
                        if (T_4_2.num == true) {

  LINE(573);
                            {
                            {
                            ret_1->tf = true;
                            }
                            {signal (ERR_ok);}}
                            }
                            }/* end if */
                        break;
                        }
                default: {

  LINE(575);
                    {
                    CLUREF T_4_1;
                    CLUREF T_4_2;
                    T_4_1.num = 707;
                    err = compiler_logit(T_4_1, STR_test_137pb_072_040others, &T_4_2);
                    if (err != ERR_ok) goto ex_0;
                    }
                }
                }
                }
                }
                }/* end if */

  LINE(578);
            {
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            T_2_1.num = a.vec->data[0];
            err = g_tblOPtest_pb_exprs_asst(T_2_1, &T_2_2);
            if (err != ERR_ok) goto ex_0;
            ret_1->num = T_2_2.num;
            }
            {signal (ERR_ok);}}
            break;
            }
    case 7: 
         {CLUREF T_1_4;
        T_1_4.num = p.cell->value;
        s.num = T_1_4.num;

  LINE(581);
            {
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            T_2_1.num = s.vec->data[0];
            err = g_tblOPtest_pb_fields_asst(T_2_1, &T_2_2);
            if (err != ERR_ok) goto ex_0;
            ret_1->num = T_2_2.num;
            }
            {signal (ERR_ok);}}
            break;
            }
    case 3: 
         {CLUREF T_1_5;
        T_1_5.num = p.cell->value;
        ex.num = T_1_5.num;

  LINE(583);
            {
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            err = sequenceOPfill(CLU_1, ex, &T_2_1);
            if (err != ERR_ok) goto ex_0;
            err = g_tblOPtest_pb_exprs_asst(T_2_1, &T_2_2);
            if (err != ERR_ok) goto ex_0;
            ret_1->num = T_2_2.num;
            }
            {signal (ERR_ok);}}
            break;
            }
    case 5: 
         {CLUREF T_1_6;
        T_1_6.num = p.cell->value;
        ty.num = T_1_6.num;

  LINE(585);
            {
            CLUREF T_2_1;
            err = typespecOPget_abs(ty, &T_2_1);
            if (err != ERR_ok) goto ex_0;
            switch (T_2_1.cell->tag) {
            case 5: 
                 {

  LINE(587);
                    {
                    {
                    ret_1->tf = true;
                    }
                    {signal (ERR_ok);}}
                    break;
                    }
            case 8: 
            case 3: 
                 {CLUREF T_2_2;
                T_2_2.num = T_2_1.cell->value;
                ct.num = T_2_2.num;

  LINE(589);
                    {
                    {
                    CLUREF T_3_1;
                    CLUREF T_3_2;
                    T_3_1.num = ct.vec->data[1];
                    err = g_tblOPtest_pb_exprs_asst(T_3_1, &T_3_2);
                    if (err != ERR_ok) goto ex_0;
                    ret_1->num = T_3_2.num;
                    }
                    {signal (ERR_ok);}}
                    break;
                    }
            case 7: 
                 {CLUREF T_2_3;
                T_2_3.num = T_2_1.cell->value;
                s.num = T_2_3.num;

  LINE(591);
                    {
                    {
                    CLUREF T_3_1;
                    CLUREF T_3_2;
                    T_3_1.num = s.vec->data[1];
                    err = g_tblOPtest_pb_fields_asst(T_3_1, &T_3_2);
                    if (err != ERR_ok) goto ex_0;
                    ret_1->num = T_3_2.num;
                    }
                    {signal (ERR_ok);}}
                    break;
                    }
            default: {

  LINE(593);
                {
                CLUREF T_3_1;
                CLUREF T_3_2;
                T_3_1.num = 708;
                err = compiler_logit(T_3_1, STR_test_137pb_072_040force_072_040others, &T_3_2);
                if (err != ERR_ok) goto ex_0;
                }

  LINE(594);
                {
                err = typespec_print(ty);
                if (err != ERR_ok) goto ex_0;
                }

  LINE(595);
                {
                {
                ret_1->tf = false;
                }
                {signal (ERR_ok);}}
            }
            }
            }
            break;
            }
    default: {

  LINE(598);
        {
        CLUREF T_2_1;
        CLUREF T_2_2;
        T_2_1.num = 709;
        err = compiler_logit(T_2_1, STR_test_137pb_072_040others, &T_2_2);
        if (err != ERR_ok) goto ex_0;
        }

  LINE(599);
        {
        err = pb_print(p);
        if (err != ERR_ok) goto ex_0;
        }

  LINE(600);
        {
        {
        ret_1->tf = false;
        }
        {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_pb ****/

static int g_tblOPtest_pb_exprs_asst_own_init = 0;

/**** BEGIN PROCEDURE test_pb_exprs_asst ****/

errcode g_tblOPtest_pb_exprs_asst(el, ret_1)
CLUREF el;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
    CLUREF each_e;
    CLUREF ty;
    CLUREF i;
    CLUREF sc;
    CLUREF each_field;
    CLUREF new_el;
    CLUREF ex;
    CLUREF inv;
        if (g_tblOPtest_pb_exprs_asst_own_init == 0) {
        if (g_tbl_own_init == 0) {
            err = g_tbl_own_init_proc();
            if (err != ERR_ok) goto ex_0;
            }
        g_tblOPtest_pb_exprs_asst_own_init = 1;
    }
    enter_proc(608);

  LINE(612);
    {
    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(615);
            {
            CLUREF T_2_1;
            err = exprOPget_abs(each_e, &T_2_1);
            if (err != ERR_ok) goto ex_0;
            switch (T_2_1.cell->tag) {
            case 25: 
                 {CLUREF T_2_2;
                T_2_2.num = T_2_1.cell->value;
                ty.num = T_2_2.num;

  LINE(617);
                    {
                    CLUREF T_3_1;
                    err = g_tblOPtest_pb_exprs_type_asst(ty, &T_3_1);
                    if (err != ERR_ok) goto ex_0;
                    if (T_3_1.num == true) {
                        {
                        {
                        ret_1->tf = true;
                        }
                        {signal (ERR_ok);}}
                        }
                        }/* end if */
                    break;
                    }
            case 19: 
                 {
                    break;
                    }
            case 15: 
            case 24: 
            case 5: 
            case 7: 
            case 21: 
                 {
                    break;
                    }
            case 13: 
                 {CLUREF T_2_3;
                T_2_3.num = T_2_1.cell->value;
                i.num = T_2_3.num;

  LINE(625);
                    {
                    CLUREF T_3_1;
                    err = idnOPget_kind(i, &T_3_1);
                    if (err != ERR_ok) goto ex_0;
                    switch (T_3_1.cell->tag) {
                    case 6: 
                    case 10: 
                         {

  LINE(629);
                            {
                            {
                            ret_1->tf = true;
                            }
                            {signal (ERR_ok);}}
                            break;
                            }
                    default: {
                    }
                    }
                    }
                    break;
                    }
            case 23: 
                 {CLUREF T_2_4;
                T_2_4.num = T_2_1.cell->value;
                sc.num = T_2_4.num;

  LINE(633);
                    {
                    CLUREF T_3_1;
                    CLUREF T_3_2;
                    CLUREF T_3_3;
                    CLUREF T_3_4;
                        T_3_1.num = sc.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++) {
                            each_field.num = T_3_4.vec->data[T_3_2.num - 1];

  LINE(634);
                            {
                                {CLUREF T_4_1;
                                CLUREF T_4_2;
                                T_4_1.num = each_field.vec->data[2];
                                err = sequenceOPfill(CLU_1, T_4_1, &T_4_2);
                                if (err != ERR_ok) goto ex_0;
                                new_el.num = T_4_2.num;
                                }
                                }

  LINE(635);
                            {
                            CLUREF T_4_1;
                            err = g_tblOPtest_pb_exprs_asst(new_el, &T_4_1);
                            if (err != ERR_ok) goto ex_0;
                            if (T_4_1.num == true) {

  LINE(637);
                                {
                                {
                                ret_1->tf = true;
                                }
                                {signal (ERR_ok);}}
                                }
                                }/* end if */
                        }
                    }
                    end_inline_for_2:;
                    break;
                    }
            case 27: 
            case 9: 
                 {CLUREF T_2_5;
                T_2_5.num = T_2_1.cell->value;
                ex.num = T_2_5.num;

  LINE(640);
                    {
                    CLUREF T_3_1;
                    CLUREF T_3_2;
                    err = exprOPget_typespec(each_e, &T_3_1);
                    if (err != ERR_ok) goto ex_0;
                    err = g_tblOPtest_pb_exprs_type_asst(T_3_1, &T_3_2);
                    if (err != ERR_ok) goto ex_0;
                    if (T_3_2.num == true) {
                        {
                        {
                        ret_1->tf = true;
                        }
                        {signal (ERR_ok);}}
                        }
                        }/* end if */
                    break;
                    }
            case 16: 
                 {CLUREF T_2_6;
                T_2_6.num = T_2_1.cell->value;
                inv.num = T_2_6.num;

  LINE(643);
                    {
                    CLUREF T_3_1;
                    CLUREF T_3_2;
                    T_3_1.num = inv.vec->data[1];
                    err = g_tblOPtest_pb_exprs_asst(T_3_1, &T_3_2);
                    if (err != ERR_ok) goto ex_0;
                    if (T_3_2.num == true) {
                        {
                        {
                        ret_1->tf = true;
                        }
                        {signal (ERR_ok);}}
                        }
                        }/* end if */

  LINE(644);
                    {
                        {CLUREF T_3_1;
                        CLUREF T_3_2;
                        T_3_1.num = inv.vec->data[0];
                        err = sequenceOPfill(CLU_1, T_3_1, &T_3_2);
                        if (err != ERR_ok) goto ex_0;
                        new_el.num = T_3_2.num;
                        }
                        }

  LINE(645);
                    {
                    {
                    CLUREF T_3_1;
                    CLUREF T_3_2;
                    err = exprOPget_typespec(each_e, &T_3_1);
                    if (err != ERR_ok) goto ex_0;
                    err = g_tblOPtest_pb_exprs_type_asst(T_3_1, &T_3_2);
                    if (err != ERR_ok) goto ex_0;
                    ret_1->num = T_3_2.num;
                    }
                    {signal (ERR_ok);}}
                    break;
                    }
            default: {

  LINE(647);
                {
                CLUREF T_3_1;
                CLUREF T_3_2;
                T_3_1.num = 710;
                err = compiler_logit(T_3_1, STR_test_137pb_137expr_137asst_072_040exprabs_040not_040type_137_040or_040constant, &T_3_2);
                if (err != ERR_ok) goto ex_0;
                }

  LINE(648);
                {
                err = expr_print(each_e, CLU_40);
                if (err != ERR_ok) goto ex_0;
                }

  LINE(650);
                {
                {
                ret_1->tf = false;
                }
                {signal (ERR_ok);}}
            }
            }
            }
        }
    }
    end_inline_for_1:;

  LINE(654);
    {
    {
    ret_1->tf = false;
    }
    {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_pb_exprs_asst ****/


/**** BEGIN PROCEDURE test_pb_exprs_type_asst ****/

errcode g_tblOPtest_pb_exprs_type_asst(ty, ret_1)
CLUREF ty;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
    CLUREF i;
    CLUREF ct;
    CLUREF s;
        if (g_tbl_own_init == 0) {
            err = g_tbl_own_init_proc();
            if (err != ERR_ok) goto ex_0;
            }
    enter_proc(658);

  LINE(659);
    {
    CLUREF T_1_1;
    err = typespecOPget_abs(ty, &T_1_1);
    if (err != ERR_ok) goto ex_0;
    switch (T_1_1.cell->tag) {
    case 5: 
         {CLUREF T_1_2;
        T_1_2.num = T_1_1.cell->value;
        i.num = T_1_2.num;

  LINE(662);
            {
            {
            ret_1->tf = true;
            }
            {signal (ERR_ok);}}
            break;
            }
    case 8: 
    case 3: 
         {CLUREF T_1_3;
        T_1_3.num = T_1_1.cell->value;
        ct.num = T_1_3.num;

  LINE(664);
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            T_2_1.num = ct.vec->data[1];
            err = g_tblOPtest_pb_exprs_asst(T_2_1, &T_2_2);
            if (err != ERR_ok) goto ex_0;
            if (T_2_2.num == true) {

  LINE(666);
                {
                {
                ret_1->tf = true;
                }
                {signal (ERR_ok);}}
                }
                }/* end if */
            break;
            }
    case 7: 
         {CLUREF T_1_4;
        T_1_4.num = T_1_1.cell->value;
        s.num = T_1_4.num;

  LINE(668);
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            T_2_1.num = s.vec->data[1];
            err = g_tblOPtest_pb_fields_asst(T_2_1, &T_2_2);
            if (err != ERR_ok) goto ex_0;
            if (T_2_2.num == true) {

  LINE(670);
                {
                {
                ret_1->tf = true;
                }
                {signal (ERR_ok);}}
                }
                }/* end if */
            break;
            }
    default: {
    }
    }
    }

  LINE(673);
    {
    {
    ret_1->tf = false;
    }
    {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_pb_exprs_type_asst ****/

static int g_tblOPbase_cluster_test_own_init = 0;

/**** BEGIN PROCEDURE base_cluster_test ****/

errcode g_tblOPbase_cluster_test(cop, ct, ret_1)
CLUREF cop;
CLUREF ct;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
        if (g_tblOPbase_cluster_test_own_init == 0) {
        if (g_tbl_own_init == 0) {
            err = g_tbl_own_init_proc();
            if (err != ERR_ok) goto ex_0;
            }
        g_tblOPbase_cluster_test_own_init = 1;
    }
    enter_proc(678);

  LINE(679);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    CLUREF T_1_3;
    CLUREF T_1_4;
    CLUREF T_1_5;
    CLUREF T_1_6;
    CLUREF T_1_7;
    CLUREF T_1_8;
    CLUREF T_1_9;
    CLUREF T_1_10;
    CLUREF T_1_11;
    CLUREF T_1_12;
    CLUREF T_1_13;
    CLUREF T_1_14;
    CLUREF T_1_15;
    CLUREF T_1_16;
    T_1_4.num = ct.vec->data[0];
    err = duOPget_common(T_1_4, &T_1_5);
    if (err != ERR_ok) goto ex_0;
    T_1_6.num = ((T_1_5.str->size != STR_array.str->size)? false :
        !(bcmp(T_1_5.str->data, STR_array.str->data, T_1_5.str->size)));
    T_1_3.num = T_1_6.num;
    if (!T_1_6.num) {
        T_1_7.num = ct.vec->data[0];
        err = duOPget_common(T_1_7, &T_1_8);
        if (err != ERR_ok) goto ex_0;
        T_1_9.num = ((T_1_8.str->size != STR_sequence.str->size)? false :
            !(bcmp(T_1_8.str->data, STR_sequence.str->data, T_1_8.str->size)));
        T_1_3.num = T_1_9.num;
    }
    T_1_2.num = T_1_3.num;
    if (!T_1_3.num) {
        T_1_10.num = ct.vec->data[0];
        err = duOPget_common(T_1_10, &T_1_11);
        if (err != ERR_ok) goto ex_0;
        T_1_12.num = ((T_1_11.str->size != STR__137vec.str->size)? false :
            !(bcmp(T_1_11.str->data, STR__137vec.str->data, T_1_11.str->size)));
        T_1_2.num = T_1_12.num;
    }
    T_1_1.num = T_1_2.num;
    if (T_1_2.num) {
        T_1_13.num = ct.vec->data[0];
        T_1_14.num = cop.vec->data[0];
        err = parmd_op(T_1_13, T_1_14, &T_1_15);
        if (err != ERR_ok) goto ex_0;
        T_1_16.num = T_1_15.num ^ 1;
        T_1_1.num = T_1_16.num;
    }
    if (T_1_1.num == true) {

  LINE(683);
        {
        {
        ret_1->tf = true;
        }
        {signal (ERR_ok);}}
        }
        }/* end if */

  LINE(684);
    {
    {
    ret_1->tf = false;
    }
    {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 base_cluster_test ****/

static int g_tblOPbase_apply_test_own_init = 0;

/**** BEGIN PROCEDURE base_apply_test ****/

errcode g_tblOPbase_apply_test(ct, ret_1)
CLUREF ct;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
        if (g_tblOPbase_apply_test_own_init == 0) {
        if (g_tbl_own_init == 0) {
            err = g_tbl_own_init_proc();
            if (err != ERR_ok) goto ex_0;
            }
        g_tblOPbase_apply_test_own_init = 1;
    }
    enter_proc(687);

  LINE(688);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    CLUREF T_1_3;
    T_1_1.num = ct.vec->data[0];
    err = duOPget_common(T_1_1, &T_1_2);
    if (err != ERR_ok) goto ex_0;
    T_1_3.num = ((T_1_2.str->size != STR__137cvt.str->size)? false :
        !(bcmp(T_1_2.str->data, STR__137cvt.str->data, T_1_2.str->size)));
    if (T_1_3.num == true) {

  LINE(689);
        {
        {
        ret_1->tf = true;
        }
        {signal (ERR_ok);}}
        }
        }/* end if */

  LINE(691);
    {
    {
    ret_1->tf = false;
    }
    {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 base_apply_test ****/

static int g_tblOPtest_pb_fields_asst_own_init = 0;

/**** BEGIN PROCEDURE test_pb_fields_asst ****/

errcode g_tblOPtest_pb_fields_asst(fl, ret_1)
CLUREF fl;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
    CLUREF each_f;
    CLUREF ty;
    CLUREF i;
    CLUREF ct;
    CLUREF s;
        if (g_tblOPtest_pb_fields_asst_own_init == 0) {
        if (g_tbl_own_init == 0) {
            err = g_tbl_own_init_proc();
            if (err != ERR_ok) goto ex_0;
            }
        g_tblOPtest_pb_fields_asst_own_init = 1;
    }
    enter_proc(697);

  LINE(699);
    {
    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(700);
            {
                {CLUREF T_2_1;
                T_2_1.num = each_f.vec->data[1];
                ty.num = T_2_1.num;
                }
                }

  LINE(701);
            {
            CLUREF T_2_1;
            err = typespecOPget_abs(ty, &T_2_1);
            if (err != ERR_ok) goto ex_0;
            switch (T_2_1.cell->tag) {
            case 5: 
                 {CLUREF T_2_2;
                T_2_2.num = T_2_1.cell->value;
                i.num = T_2_2.num;

  LINE(704);
                    {
                    {
                    ret_1->tf = true;
                    }
                    {signal (ERR_ok);}}
                    break;
                    }
            case 8: 
            case 3: 
                 {CLUREF T_2_3;
                T_2_3.num = T_2_1.cell->value;
                ct.num = T_2_3.num;

  LINE(707);
                    {
                    CLUREF T_3_1;
                    CLUREF T_3_2;
                    T_3_1.num = ct.vec->data[1];
                    err = g_tblOPtest_pb_exprs_asst(T_3_1, &T_3_2);
                    if (err != ERR_ok) goto ex_0;
                    if (T_3_2.num == true) {
                        {
                        {
                        ret_1->tf = true;
                        }
                        {signal (ERR_ok);}}
                        }
                        }/* end if */
                    break;
                    }
            case 7: 
                 {CLUREF T_2_4;
                T_2_4.num = T_2_1.cell->value;
                s.num = T_2_4.num;

  LINE(710);
                    {
                    CLUREF T_3_1;
                    CLUREF T_3_2;
                    T_3_1.num = s.vec->data[1];
                    err = g_tblOPtest_pb_fields_asst(T_3_1, &T_3_2);
                    if (err != ERR_ok) goto ex_0;
                    if (T_3_2.num == true) {
                        {
                        {
                        ret_1->tf = true;
                        }
                        {signal (ERR_ok);}}
                        }
                        }/* end if */
                    break;
                    }
            case 1: 
                 {
                    break;
                    }
            case 2: 
                 {
                    break;
                    }
            default: {

  LINE(714);
                {
                CLUREF T_3_1;
                CLUREF T_3_2;
                T_3_1.num = 711;
                err = compiler_logit(T_3_1, STR_test_137pb_137fields_137asst_072_040unexpected_040typespec, &T_3_2);
                if (err != ERR_ok) goto ex_0;
                }

  LINE(715);
                {
                CLUREF T_3_1;
                T_3_1.num = each_f.vec->data[1];
                err = typespec_print(T_3_1);
                if (err != ERR_ok) goto ex_0;
                }
            }
            }
            }
        }
    }
    end_inline_for_1:;

  LINE(718);
    {
    {
    ret_1->tf = false;
    }
    {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_pb_fields_asst ****/

static int g_tblOPbuild_one_selector_table_own_init = 0;

/**** BEGIN PROCEDURE build_one_selector_table ****/

errcode g_tblOPbuild_one_selector_table(e, each_fn, each_fl)
CLUREF e;
CLUREF each_fn;
CLUREF each_fl;
    {
    errcode err;
    errcode ecode2;
    CLUREF ind;
    CLUREF each_field;
    CLUREF prefix;
    CLUREF sel_name;
        if (g_tblOPbuild_one_selector_table_own_init == 0) {
        if (g_tbl_own_init == 0) {
            err = g_tbl_own_init_proc();
            if (err != ERR_ok) goto ex_0;
            }
        g_tblOPbuild_one_selector_table_own_init = 1;
    }
    enter_proc(725);

  LINE(726);
    {
        {ind.num = 0;
        }
        }

  LINE(727);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    CLUREF T_1_3;
        T_1_2.num = each_fl.vec->size; 
        T_1_3 = each_fl;
        for (T_1_1.num = 1; T_1_1.num <= T_1_2.num; T_1_1.num++) {
            each_field.num = T_1_3.vec->data[T_1_1.num - 1];

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

  LINE(731);
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            CLUREF T_2_3;
            T_2_1.num = each_field.vec->data[0];
            err = stringOPconcat(STR__042, T_2_1, &T_2_2);
            if (err != ERR_ok) goto ex_0;
            err = stringOPconcat(T_2_2, STR__042_054_040, &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(734);
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            err = intOPunparse(ind, &T_2_1);
            if (err != ERR_ok) goto ex_0;
            err = stringOPconcat(T_2_1, STR__054_040, &T_2_2);
            if (err != ERR_ok) goto ex_0;
            err = g_envOPputs(e, T_2_2);
            if (err != ERR_ok) goto ex_0;
            }

  LINE(737);
            {
            CLUREF T_2_1;
            T_2_1.num = each_field.vec->data[1];
            err = g_ref_name_typespec(e, T_2_1);
            if (err != ERR_ok) goto ex_0;
            }

  LINE(738);
            {
            err = g_envOPputl(e, STR__137ops_051_073_040);
            if (err != ERR_ok) goto ex_0;
            }

  LINE(740);
            {
            CLUREF T_2_1;
            T_2_1.num = ind.num + 1;
             if ((T_2_1.num > 0 && ind.num < 0 && 1 < 0) || 
                 (T_2_1.num < 0 && ind.num > 0 && 1 > 0)) {
                err = ERR_overflow;
                goto ex_0;}
            ind.num = T_2_1.num;
            }
        }
    }
    end_inline_for_1:;

  LINE(742);
    {
        {CLUREF T_1_1;
        err = s_owns_prefix_fieldlist(each_fl, &T_1_1);
        if (err != ERR_ok) goto ex_0;
        prefix.num = T_1_1.num;
        }
        }

  LINE(743);
    {
        {CLUREF T_1_1;
        err = make_sel_name(each_fl, &T_1_1);
        if (err != ERR_ok) goto ex_0;
        sel_name.num = T_1_1.num;
        }
        }

  LINE(744);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    CLUREF T_1_3;
    CLUREF T_1_4;
    CLUREF T_1_5;
    CLUREF T_1_6;
    CLUREF T_1_7;
    CLUREF T_1_8;
    CLUREF T_1_9;
    CLUREF T_1_10;
    CLUREF T_1_11;
    err = stringOPconcat(STR_find_137selector_137ops_050_042, each_fn, &T_1_1);
    if (err != ERR_ok) goto ex_0;
    err = stringOPconcat(T_1_1, STR__042_054_040, &T_1_2);
    if (err != ERR_ok) goto ex_0;
    T_1_3.num = each_fl.vec->size;
    err = intOPunparse(T_1_3, &T_1_4);
    if (err != ERR_ok) goto ex_0;
    err = stringOPconcat(T_1_2, T_1_4, &T_1_5);
    if (err != ERR_ok) goto ex_0;
    err = stringOPconcat(T_1_5, STR__054_040_046_050, &T_1_6);
    if (err != ERR_ok) goto ex_0;
    err = stringOPconcat(T_1_6, prefix, &T_1_7);
    if (err != ERR_ok) goto ex_0;
    err = stringOPconcat(T_1_7, each_fn, &T_1_8);
    if (err != ERR_ok) goto ex_0;
    err = stringOPconcat(T_1_8, STR__137, &T_1_9);
    if (err != ERR_ok) goto ex_0;
    err = stringOPconcat(T_1_9, sel_name, &T_1_10);
    if (err != ERR_ok) goto ex_0;
    err = stringOPconcat(T_1_10, STR__137ops_051_051_073, &T_1_11);
    if (err != ERR_ok) goto ex_0;
    err = g_envOPputl(e, T_1_11);
    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 build_one_selector_table ****/


/**** BEGIN PROCEDURE prune ****/

errcode g_tblOPprune()
    {
    errcode err;
    errcode ecode2;
    CLUREF new;
    CLUREF each_pb;
    CLUREF si;
    CLUREF ac;
    CLUREF cop;
    CLUREF xt;
    CLUREF ap;
    CLUREF ct;
    CLUREF ai;
    CLUREF ti;
    CLUREF ex;
    CLUREF ty;
        if (g_tbl_own_init == 0) {
            err = g_tbl_own_init_proc();
            if (err != ERR_ok) goto ex_0;
            }
    enter_proc(751);

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

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

  LINE(755);
            {
            switch (each_pb.cell->tag) {
            case 7: 
                 {CLUREF T_2_1;
                T_2_1.num = each_pb.cell->value;
                si.num = T_2_1.num;

  LINE(757);
                    {
                    CLUREF T_3_1;
                    CLUREF T_3_2;
                    T_3_1.num = si.vec->data[0];
                    err = fl_cont_op_parm(T_3_1, &T_3_2);
                    if (err != ERR_ok) goto ex_0;
                    if (T_3_2.num == true) {
                        continue;
                        }
                    else {

  LINE(758);
                        {
                        {
                        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] = each_pb.num;
                            new.array->ext_size++; new.array->ext_high++;}
                        else {
                            err = arrayOPaddh(new, each_pb);
                            if (err != ERR_ok) goto ex_0;}
                        }
                        }
                        }}/* end if */
                    break;
                    }
            case 1: 
                 {CLUREF T_2_2;
                T_2_2.num = each_pb.cell->value;
                ac.num = T_2_2.num;

  LINE(760);
                    {
                    CLUREF T_3_1;
                    CLUREF T_3_2;
                    CLUREF T_3_3;
                    CLUREF T_3_4;
                    CLUREF T_3_5;
                    T_3_2.num = ac.vec->data[2];
                    err = type_cont_op_parm(T_3_2, &T_3_3);
                    if (err != ERR_ok) goto ex_0;
                    T_3_1.num = T_3_3.num;
                    if (!T_3_3.num) {
                        T_3_4.num = ac.vec->data[0];
                        err = el_cont_op_parm(T_3_4, &T_3_5);
                        if (err != ERR_ok) goto ex_0;
                        T_3_1.num = T_3_5.num;
                    }
                    if (T_3_1.num == true) {

  LINE(762);
                        continue;
                        }
                    else {

  LINE(763);
                        {
                        {
                        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] = each_pb.num;
                            new.array->ext_size++; new.array->ext_high++;}
                        else {
                            err = arrayOPaddh(new, each_pb);
                            if (err != ERR_ok) goto ex_0;}
                        }
                        }
                        }}/* end if */
                    break;
                    }
            case 6: 
                 {CLUREF T_2_3;
                T_2_3.num = each_pb.cell->value;
                cop.num = T_2_3.num;

  LINE(765);
                    {
                    CLUREF T_3_1;
                    CLUREF T_3_2;
                    T_3_1.num = cop.vec->data[2];
                    err = typespecOPget_abs(T_3_1, &T_3_2);
                    if (err != ERR_ok) goto ex_0;
                    switch (T_3_2.cell->tag) {
                    case 7: 
                         {CLUREF T_3_3;
                        T_3_3.num = T_3_2.cell->value;
                        xt.num = T_3_3.num;

  LINE(767);
                            {
                            CLUREF T_4_1;
                            CLUREF T_4_2;
                            T_4_1.num = xt.vec->data[1];
                            err = fl_cont_op_parm(T_4_1, &T_4_2);
                            if (err != ERR_ok) goto ex_0;
                            if (T_4_2.num == true) {
                                continue;
                                }
                            else {

  LINE(768);
                                {
                                {
                                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] = each_pb.num;
                                    new.array->ext_size++; new.array->ext_high++;}
                                else {
                                    err = arrayOPaddh(new, each_pb);
                                    if (err != ERR_ok) goto ex_0;}
                                }
                                }
                                }}/* end if */
                            break;
                            }
                    case 2: 
                         {CLUREF T_3_4;
                        T_3_4.num = T_3_2.cell->value;
                        ap.num = T_3_4.num;

  LINE(770);
                            {
                            CLUREF T_4_1;
                            CLUREF T_4_2;
                            T_4_1.num = cop.vec->data[1];
                            err = el_cont_op_parm(T_4_1, &T_4_2);
                            if (err != ERR_ok) goto ex_0;
                            if (T_4_2.num == true) {
                                continue;
                                }
                            else {

  LINE(771);
                                {
                                {
                                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] = each_pb.num;
                                    new.array->ext_size++; new.array->ext_high++;}
                                else {
                                    err = arrayOPaddh(new, each_pb);
                                    if (err != ERR_ok) goto ex_0;}
                                }
                                }
                                }}/* end if */
                            break;
                            }
                    case 3: 
                    case 8: 
                         {CLUREF T_3_5;
                        T_3_5.num = T_3_2.cell->value;
                        ct.num = T_3_5.num;

  LINE(773);
                            {
                            CLUREF T_4_1;
                            CLUREF T_4_2;
                            CLUREF T_4_3;
                            CLUREF T_4_4;
                            CLUREF T_4_5;
                            T_4_2.num = cop.vec->data[1];
                            err = el_cont_op_parm(T_4_2, &T_4_3);
                            if (err != ERR_ok) goto ex_0;
                            T_4_1.num = T_4_3.num;
                            if (!T_4_3.num) {
                                T_4_4.num = ct.vec->data[1];
                                err = el_cont_op_parm(T_4_4, &T_4_5);
                                if (err != ERR_ok) goto ex_0;
                                T_4_1.num = T_4_5.num;
                            }
                            if (T_4_1.num == true) {

  LINE(775);
                                continue;
                                }
                            else {

  LINE(776);
                                {
                                {
                                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] = each_pb.num;
                                    new.array->ext_size++; new.array->ext_high++;}
                                else {
                                    err = arrayOPaddh(new, each_pb);
                                    if (err != ERR_ok) goto ex_0;}
                                }
                                }
                                }}/* end if */
                            break;
                            }
                    case 5: 
                         {
                            break;
                            }
                    default: {
                    }
                    }
                    }
                    break;
                    }
            case 4: 
                 {CLUREF T_2_4;
                T_2_4.num = each_pb.cell->value;
                ct.num = T_2_4.num;

  LINE(781);
                    {
                    CLUREF T_3_1;
                    CLUREF T_3_2;
                    T_3_1.num = ct.vec->data[1];
                    err = el_cont_op_parm(T_3_1, &T_3_2);
                    if (err != ERR_ok) goto ex_0;
                    if (T_3_2.num == true) {

  LINE(782);
                        continue;
                        }
                    else {

  LINE(783);
                        {
                        {
                        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] = each_pb.num;
                            new.array->ext_size++; new.array->ext_high++;}
                        else {
                            err = arrayOPaddh(new, each_pb);
                            if (err != ERR_ok) goto ex_0;}
                        }
                        }
                        }}/* end if */
                    break;
                    }
            case 2: 
                 {CLUREF T_2_5;
                T_2_5.num = each_pb.cell->value;
                ai.num = T_2_5.num;
                    break;
                    }
            case 8: 
                 {CLUREF T_2_6;
                T_2_6.num = each_pb.cell->value;
                ti.num = T_2_6.num;
                    break;
                    }
            case 3: 
                 {CLUREF T_2_7;
                T_2_7.num = each_pb.cell->value;
                ex.num = T_2_7.num;

  LINE(789);
                    {
                    CLUREF T_3_1;
                    CLUREF T_3_2;
                    err = sequenceOPfill(CLU_1, ex, &T_3_1);
                    if (err != ERR_ok) goto ex_0;
                    err = el_cont_op_parm(T_3_1, &T_3_2);
                    if (err != ERR_ok) goto ex_0;
                    if (T_3_2.num == true) {
                        continue;
                        }
                    else {

  LINE(790);
                        {
                        {
                        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] = each_pb.num;
                            new.array->ext_size++; new.array->ext_high++;}
                        else {
                            err = arrayOPaddh(new, each_pb);
                            if (err != ERR_ok) goto ex_0;}
                        }
                        }
                        }}/* end if */
                    break;
                    }
            case 5: 
                 {CLUREF T_2_8;
                T_2_8.num = each_pb.cell->value;
                ty.num = T_2_8.num;

  LINE(792);
                    {
                    CLUREF T_3_1;
                    err = type_cont_op_parm(ty, &T_3_1);
                    if (err != ERR_ok) goto ex_0;
                    if (T_3_1.num == true) {
                        continue;
                        }
                    else {

  LINE(793);
                        {
                        {
                        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] = each_pb.num;
                            new.array->ext_size++; new.array->ext_high++;}
                        else {
                            err = arrayOPaddh(new, each_pb);
                            if (err != ERR_ok) goto ex_0;}
                        }
                        }
                        }}/* end if */
                    break;
                    }
            }
            }
        }
    }
    end_inline_for_1:;

  LINE(796);
    {
    g_tblOPcum_pbl.num = new.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 prune ****/

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

CLU_proc g_tbl_oe_build_tables = {{0,0,0,0}, g_tblOPbuild_tables, 0};
CLU_proc g_tbl_oe_exist = {{0,0,0,0}, g_tblOPexist, 0};
CLU_proc g_tbl_oe_find_tables = {{0,0,0,0}, g_tblOPfind_tables, 0};
CLU_proc g_tbl_oe_g_field_tables = {{0,0,0,0}, g_tblOPg_field_tables, 0};
CLU_proc g_tbl_oe_prune = {{0,0,0,0}, g_tblOPprune, 0};

g_tbl_OPS g_tbl_ops_actual = {5, (OWNPTR)&g_tbl_own_init, (OWNPTR)&g_tbl_own_init, {
    {&g_tbl_oe_build_tables, "build_tables"},
    {&g_tbl_oe_exist, "exist"},
    {&g_tbl_oe_find_tables, "find_tables"},
    {&g_tbl_oe_g_field_tables, "g_field_tables"},
    {&g_tbl_oe_prune, "prune"}}};

struct OPS *g_tbl_ops = (struct OPS *)&g_tbl_ops_actual;

/**** END CLUSTER g_tbl ****/

extern errcode arrayOPpredict();
extern errcode sequenceOPindexes();
extern errcode sequenceOPfetch();
struct OPS  *record_sel_type__ops;
struct OPS *sequence_of_record_sel_type__table;
struct OPS *sequence_of_record_sel_type__ops;
struct OPS *sequence_of_record_sel_type__ops;
OWNPTR sequence_of_record_sel_type__owns;
static int make_sel_name_own_init = 0;
CLUREF make_sel_nameOPtable;

/**** BEGIN PROCEDURE make_sel_name ****/

errcode make_sel_name(fl, ret_1)
CLUREF fl;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
    CLUREF nth;
    CLUREF already_here;
    CLUREF ithfl;
    CLUREF i;
    CLUREF nm;
    CLUREF first;
    CLUREF each_field;
        if (make_sel_name_own_init == 0) {
        add_selector_info("sel", 0, string_ops); 
        add_selector_info("type_", 1, typespec_ops); 
        find_selector_ops("record", 2, &(record_sel_type__ops));
        add_parm_info_type(0, record_sel_type__ops, sequence_of_t_reqs);
        find_type_instance(sequence_ops, 1, &sequence_ownreqs, &(sequence_of_record_sel_type__ops));
        stringOPcons("", CLU_1, CLU_0, &STR_);
        stringOPcons("_", CLU_1, CLU_1, &STR__137);
        make_sel_name_own_init = 1;
        {
            {CLUREF T_0_1;
            CLUREF T_0_2;
            T_0_1.num = 100;
            err = arrayOPpredict(CLU_1, T_0_1, &T_0_2);
            if (err != ERR_ok) goto ex_0;
            make_sel_nameOPtable.num = T_0_2.num;
            }
            }
    }
    enter_proc(801);

  LINE(806);
    {
        {nth.num = 0;
        }
        }

  LINE(807);
    {
        {already_here.tf = false;
        }
        }

  LINE(808);
    {
    CLUREF T_2_1;
    CLUREF T_2_2;
    CLUREF T_2_3;
        T_2_2.num = make_sel_nameOPtable.array->ext_high; 
        T_2_3 = make_sel_nameOPtable;
        for (T_2_1.num = make_sel_nameOPtable.array->ext_low; T_2_1.num <= T_2_2.num; T_2_1.num++) {
            if (T_2_1.num > T_2_3.array->ext_high || T_2_1.num < T_2_3.array->ext_low) {
                err = ERR_failure;
                elist[0].str = array_bounds_exception_STRING;
                goto ex_1;}
            ithfl.num = T_2_3.array->store->data[T_2_1.num - T_2_3.array->ext_low + T_2_3.array->int_low];

  LINE(809);
            {
            CLUREF T_3_1;
            CLUREF T_3_2;
            CLUREF T_3_3;
            CLUREF T_3_4;
            T_3_1.num = fl.vec->size;
            T_3_2.num = ithfl.vec->size;
            T_3_3.num = (T_3_1.num == T_3_2.num)? true : false;
            T_3_4.num = T_3_3.num ^ 1;
            if (T_3_4.num == true) {

  LINE(810);
                continue;
                }
                }/* end if */

  LINE(811);
            {
            CLUREF T_3_1;
            generic_CLU_proc.type_owns = sequence_of_record_sel_type__ops->type_owns;
            generic_CLU_proc.proc = sequenceOPsimilar;
            CUR_PROC_VAR.proc = &generic_CLU_proc;
            err = sequenceOPsimilar(ithfl, fl, &T_3_1);
            if (err != ERR_ok) goto ex_1;
            if (T_3_1.num == true) {
                {
                    err = ERR_found;
                    goto ex_1;
                    }
                }
                }/* end if */

  LINE(812);
            {
            CLUREF T_4_1;
            CLUREF T_4_2;
                T_4_2.num = fl.vec->size; 
                for (T_4_1.num = 1; T_4_1.num <= T_4_2.num; T_4_1.num++) {
                    i.num = T_4_1.num;

  LINE(813);
                    {
                    CLUREF T_5_1;
                    CLUREF T_5_2;
                    CLUREF T_5_3;
                    CLUREF T_5_4;
                    CLUREF T_5_5;
                    CLUREF T_5_6;
                    if (i.num < 1 || i.num > fl.vec->size ) {
                        err = ERR_bounds;
                        goto ex_2;}
                    T_5_1.num = fl.vec->data[i.num - 1];
                    T_5_2.num = T_5_1.vec->data[0];
                    if (i.num < 1 || i.num > ithfl.vec->size ) {
                        err = ERR_bounds;
                        goto ex_2;}
                    T_5_3.num = ithfl.vec->data[i.num - 1];
                    T_5_4.num = T_5_3.vec->data[0];
                    T_5_5.num = ((T_5_2.str->size != T_5_4.str->size)? false :
                        !(bcmp(T_5_2.str->data, T_5_4.str->data, T_5_2.str->size)));
                    T_5_6.num = T_5_5.num ^ 1;
                    if (T_5_6.num == true) {

  LINE(814);
                        {
                            err = ERR_cont;
                            goto ex_2;
                            }
                        }
                        }/* end if */
                }
            }
            end_inline_for_2:;
                goto end_2;
                ex_2:
                    if ((err == ERR_cont)) {

  LINE(816);
                        continue;
                    }
                    else {
                        goto ex_1;
                    }
                end_2:;

  LINE(817);
            {
            CLUREF T_3_1;
            T_3_1.num = nth.num + 1;
             if ((T_3_1.num > 0 && nth.num < 0 && 1 < 0) || 
                 (T_3_1.num < 0 && nth.num > 0 && 1 > 0)) {
                err = ERR_overflow;
                goto ex_1;}
            nth.num = T_3_1.num;
            }
        }
    }
    end_inline_for_1:;
        goto end_1;
        ex_1:
            if ((err == ERR_found)) {

  LINE(820);
                {
                already_here.tf = true;
                }
            }
            else {
                goto ex_0;
            }
        end_1:;

  LINE(822);
    {
    CLUREF T_1_1;
    T_1_1.num = already_here.num ^ 1;
    if (T_1_1.num == true) {
        {
        {
        if ((make_sel_nameOPtable.array->int_low + make_sel_nameOPtable.array->ext_size + 1) < make_sel_nameOPtable.array->int_size) {
            make_sel_nameOPtable.array->store->data[make_sel_nameOPtable.array->int_low + make_sel_nameOPtable.array->ext_size] = fl.num;
            make_sel_nameOPtable.array->ext_size++; make_sel_nameOPtable.array->ext_high++;}
        else {
            err = arrayOPaddh(make_sel_nameOPtable, fl);
            if (err != ERR_ok) goto ex_0;}
        }
        }
        }
        }/* end if */

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

  LINE(825);
    {
        {first.tf = true;
        }
        }

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

  LINE(827);
            {
            if (first.num == true) {
                {
                first.tf = false;
                }
                }
            else {

  LINE(828);
                {
                CLUREF T_3_1;
                err = stringOPconcat(nm, STR__137, &T_3_1);
                if (err != ERR_ok) goto ex_0;
                nm.num = T_3_1.num;
                }
                }}/* end if */

  LINE(829);
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            T_2_1.num = each_field.vec->data[0];
            err = stringOPconcat(nm, T_2_1, &T_2_2);
            if (err != ERR_ok) goto ex_0;
            nm.num = T_2_2.num;
            }
        }
    }
    end_inline_for_3:;

  LINE(831);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    T_1_1.num = (nth.num == 0)? true : false;
    T_1_2.num = T_1_1.num ^ 1;
    if (T_1_2.num == true) {
        {
        CLUREF T_2_1;
        CLUREF T_2_2;
        CLUREF T_2_3;
        err = stringOPconcat(nm, STR__137, &T_2_1);
        if (err != ERR_ok) goto ex_0;
        err = intOPunparse(nth, &T_2_2);
        if (err != ERR_ok) goto ex_0;
        err = stringOPconcat(T_2_1, T_2_2, &T_2_3);
        if (err != ERR_ok) goto ex_0;
        nm.num = T_2_3.num;
        }
        }
        }/* end if */

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

/**** END PROCEDURE make_sel_name ****/


extern errcode pb_gen();
extern errcode oneofOPis_6();
extern errcode is_op_parmd();
extern errcode oneofOPvalue_6();
extern errcode charOPequal();
extern errcode stringOPfetch();
extern errcode stringOPrest();
extern errcode s_expr4();
extern errcode intOPsub();
extern errcode s_expr5();
extern errcode cluster_parm_count();
extern errcode g_idnlit();
extern errcode g_expr_arg();
extern errcode g_expr5();
extern errcode g_typespec();
extern errcode g_envOPnewline();
extern errcode s_owns_prefix_type();
extern errcode g_name_typespec();
CLUREF STR__137op_137;
CLUREF STR__137of;
CLUREF STR_add_137parm_137info_137type_050;
CLUREF STR__137ops_054_040;
CLUREF STR__137of_137;
CLUREF STR__137reqs_051_073;
CLUREF STR_add_137parm_137info_137const_050;
CLUREF STR__051_073;
CLUREF STR_add_137parm_137info_072_040probably_040wrong;
CLUREF STR_add_137parm_137info_137type_0500_054_040;
CLUREF STR__137of_137t_137reqs_051_073;
CLUREF STR_g_137parm_137blocks_040array_040type_040unhandled;
CLUREF STR__137anyize_137of_137t_137reqs_051_073;
CLUREF STR_g_137parm_137blocks_072_040t_057ainfo_0404;
static int g_own_build_one_own_init = 0;

/**** BEGIN PROCEDURE g_own_build_one ****/

errcode g_own_build_one(e, each_pb)
CLUREF e;
CLUREF each_pb;
    {
    errcode err;
    errcode ecode2;
    CLUREF index;
    CLUREF formals;
    CLUREF actuals;
    CLUREF gen;
    CLUREF each_parm;
    CLUREF op_name;
    CLUREF tail;
    CLUREF inst_table_name;
    CLUREF each_e;
    CLUREF a;
    CLUREF ct;
    CLUREF ex;
    CLUREF ty;
        if (g_own_build_one_own_init == 0) {
        stringOPcons("", CLU_1, CLU_0, &STR_);
        stringOPcons("_op_", CLU_1, CLU_4, &STR__137op_137);
        stringOPcons("_of", CLU_1, CLU_3, &STR__137of);
        stringOPcons("_", CLU_1, CLU_1, &STR__137);
        stringOPcons("add_parm_info_type(", CLU_1, CLU_19, &STR_add_137parm_137info_137type_050);
        stringOPcons(", ", CLU_1, CLU_2, &STR__054_040);
        stringOPcons("_ops, ", CLU_1, CLU_6, &STR__137ops_054_040);
        stringOPcons("_of_", CLU_1, CLU_4, &STR__137of_137);
        stringOPcons("_reqs);", CLU_1, CLU_7, &STR__137reqs_051_073);
        stringOPcons("add_parm_info_const(", CLU_1, CLU_20, &STR_add_137parm_137info_137const_050);
        stringOPcons(");", CLU_1, CLU_2, &STR__051_073);
        stringOPcons("add_parm_info: probably wrong", CLU_1, CLU_29, &STR_add_137parm_137info_072_040probably_040wrong);
        stringOPcons("add_parm_info_type(0, ", CLU_1, CLU_22, &STR_add_137parm_137info_137type_0500_054_040);
        stringOPcons("_of_t_reqs);", CLU_1, CLU_12, &STR__137of_137t_137reqs_051_073);
        stringOPcons("g_parm_blocks array type unhandled", CLU_1, CLU_34, &STR_g_137parm_137blocks_040array_040type_040unhandled);
        stringOPcons("_anyize_of_t_reqs);", CLU_1, CLU_19, &STR__137anyize_137of_137t_137reqs_051_073);
        stringOPcons("g_parm_blocks: t/ainfo 4", CLU_1, CLU_24, &STR_g_137parm_137blocks_072_040t_057ainfo_0404);
        g_own_build_one_own_init = 1;
    }
    enter_proc(839);

  LINE(842);
    {
    switch (each_pb.cell->tag) {
    case 4: 
    case 6: 
         {

  LINE(844);
            {
                {CLUREF T_2_1;
                err = pb_formals(each_pb, &T_2_1);
                if (err != ERR_ok) goto ex_0;
                formals.num = T_2_1.num;
                }
                }

  LINE(845);
            {
                {CLUREF T_2_1;
                err = pb_actuals(each_pb, &T_2_1);
                if (err != ERR_ok) goto ex_0;
                actuals.num = T_2_1.num;
                }
                }

  LINE(846);
            {
                {CLUREF T_2_1;
                err = pb_gen(each_pb, &T_2_1);
                if (err != ERR_ok) goto ex_0;
                gen.num = T_2_1.num;
                }
                }

  LINE(847);
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            CLUREF T_2_3;
            T_2_1.num = formals.vec->size;
            T_2_2.num = actuals.vec->size;
            T_2_3.num = (T_2_1.num == T_2_2.num)? true : false;
            if (T_2_3.num == true) {

  LINE(848);
                {
                index.num = 1;
                }

  LINE(849);
                {
                CLUREF T_3_1;
                CLUREF T_3_2;
                CLUREF T_3_3;
                    T_3_2.num = formals.vec->size; 
                    T_3_3 = formals;
                    for (T_3_1.num = 1; T_3_1.num <= T_3_2.num; T_3_1.num++) {
                        each_parm.num = T_3_3.vec->data[T_3_1.num - 1];

  LINE(850);
                        {
                            {op_name = STR_;
                            }
                            }

  LINE(851);
                        {
                        CLUREF T_4_1;
                        if (each_pb.cell->tag == 6) T_4_1.num = true; else T_4_1.num = false;
                        if (T_4_1.num == true) {

  LINE(852);
                            {
                            CLUREF T_5_1;
                            err = is_op_parmd(each_pb, &T_5_1);
                            if (err != ERR_ok) goto ex_0;
                            if (T_5_1.num == true) {

  LINE(853);
                                {
                                    {CLUREF T_6_1;
                                    CLUREF T_6_2;
                                    if (each_pb.cell->tag != 6) {err = ERR_wrong_tag; goto ex_0;}
                                    T_6_1.num = each_pb.cell->value;
                                    T_6_2.num = T_6_1.vec->data[0];
                                    tail.num = T_6_2.num;
                                    }
                                    }

  LINE(854);
                                {
                                CLUREF T_6_1;
                                CLUREF T_6_2;
                                CLUREF T_6_3;
                                err = stringOPfetch(tail, CLU_1, &T_6_1);
                                if (err != ERR_ok) goto ex_0;
                                T_6_2.ch = '%';
                                T_6_3.num = (T_6_1.ch == T_6_2.ch)? true : false;
                                if (T_6_3.num == true) {

  LINE(855);
                                    {
                                    CLUREF T_7_1;
                                    err = stringOPrest(tail, CLU_2, &T_7_1);
                                    if (err != ERR_ok) goto ex_0;
                                    tail.num = T_7_1.num;
                                    }
                                    }
                                    }/* end if */

  LINE(856);
                                {
                                CLUREF T_6_1;
                                err = stringOPconcat(STR__137op_137, tail, &T_6_1);
                                if (err != ERR_ok) goto ex_0;
                                op_name.num = T_6_1.num;
                                }
                                }
                                }/* end if */
                            }
                            }/* end if */

  LINE(858);
                        {
                            {CLUREF T_4_1;
                            CLUREF T_4_2;
                            CLUREF T_4_3;
                            err = duOPget_common(gen, &T_4_1);
                            if (err != ERR_ok) goto ex_0;
                            err = stringOPconcat(T_4_1, op_name, &T_4_2);
                            if (err != ERR_ok) goto ex_0;
                            err = stringOPconcat(T_4_2, STR__137of, &T_4_3);
                            if (err != ERR_ok) goto ex_0;
                            inst_table_name.num = T_4_3.num;
                            }
                            }

  LINE(859);
                        {
                        CLUREF T_4_1;
                        CLUREF T_4_2;
                        CLUREF T_4_3;
                            T_4_2.num = actuals.vec->size; 
                            T_4_3 = actuals;
                            for (T_4_1.num = 1; T_4_1.num <= T_4_2.num; T_4_1.num++) {
                                each_e.num = T_4_3.vec->data[T_4_1.num - 1];

  LINE(860);
                                {
                                CLUREF T_5_1;
                                CLUREF T_5_2;
                                CLUREF T_5_3;
                                err = stringOPconcat(inst_table_name, STR__137, &T_5_1);
                                if (err != ERR_ok) goto ex_0;
                                err = s_expr4(each_e, &T_5_2);
                                if (err != ERR_ok) goto ex_0;
                                err = stringOPconcat(T_5_1, T_5_2, &T_5_3);
                                if (err != ERR_ok) goto ex_0;
                                inst_table_name.num = T_5_3.num;
                                }
                            }
                        }
                        end_inline_for_2:;

  LINE(864);
                        {
                        CLUREF T_4_1;
                        CLUREF T_4_2;
                        if (index.num < 1 || index.num > actuals.vec->size ) {
                            err = ERR_bounds;
                            goto ex_0;}
                        T_4_1.num = actuals.vec->data[index.num - 1];
                        err = exprOPget_abs(T_4_1, &T_4_2);
                        if (err != ERR_ok) goto ex_0;
                        switch (T_4_2.cell->tag) {
                        case 25: 
                             {

  LINE(867);
                                {
                                CLUREF T_5_1;
                                CLUREF T_5_2;
                                CLUREF T_5_3;
                                CLUREF T_5_4;
                                T_5_1.num = index.num - 1;
                                 if ((T_5_1.num >= 0 && index.num < 0 && (-1) < 0) || 
                                     (T_5_1.num <= 0 && index.num > 0 && (-1) > 0)) {
                                    err = ERR_overflow;
                                    goto ex_0;}
                                err = intOPunparse(T_5_1, &T_5_2);
                                if (err != ERR_ok) goto ex_0;
                                err = stringOPconcat(STR_add_137parm_137info_137type_050, T_5_2, &T_5_3);
                                if (err != ERR_ok) goto ex_0;
                                err = stringOPconcat(T_5_3, STR__054_040, &T_5_4);
                                if (err != ERR_ok) goto ex_0;
                                err = g_envOPputs(e, T_5_4);
                                if (err != ERR_ok) goto ex_0;
                                }

  LINE(868);
                                {
                                CLUREF T_5_1;
                                CLUREF T_5_2;
                                CLUREF T_5_3;
                                if (index.num < 1 || index.num > actuals.vec->size ) {
                                    err = ERR_bounds;
                                    goto ex_0;}
                                T_5_1.num = actuals.vec->data[index.num - 1];
                                err = s_expr5(T_5_1, &T_5_2);
                                if (err != ERR_ok) goto ex_0;
                                err = stringOPconcat(T_5_2, STR__137ops_054_040, &T_5_3);
                                if (err != ERR_ok) goto ex_0;
                                err = g_envOPputs(e, T_5_3);
                                if (err != ERR_ok) goto ex_0;
                                }

  LINE(869);
                                {
                                CLUREF T_5_1;
                                err = duOPget_common(gen, &T_5_1);
                                if (err != ERR_ok) goto ex_0;
                                err = g_envOPputs(e, T_5_1);
                                if (err != ERR_ok) goto ex_0;
                                }

  LINE(870);
                                {
                                CLUREF T_5_1;
                                CLUREF T_5_2;
                                err = cluster_parm_count(gen, &T_5_1);
                                if (err != ERR_ok) goto ex_0;
                                T_5_2.num = (index.num > T_5_1.num)? true : false;
                                if (T_5_2.num == true) {

  LINE(871);
                                    {
                                    err = g_envOPputs(e, op_name);
                                    if (err != ERR_ok) goto ex_0;
                                    }
                                    }
                                    }/* end if */

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

  LINE(874);
                                {
                                CLUREF T_5_1;
                                if (index.num < 1 || index.num > formals.vec->size ) {
                                    err = ERR_bounds;
                                    goto ex_0;}
                                T_5_1.num = formals.vec->data[index.num - 1];
                                err = g_idnlit(e, T_5_1);
                                if (err != ERR_ok) goto ex_0;
                                }

  LINE(875);
                                {
                                err = g_envOPputl(e, STR__137reqs_051_073);
                                if (err != ERR_ok) goto ex_0;
                                }
                                break;
                                }
                        case 19: 
                        case 15: 
                        case 21: 
                        case 7: 
                        case 5: 
                        case 24: 
                        case 13: 
                             {

  LINE(877);
                                {
                                CLUREF T_5_1;
                                CLUREF T_5_2;
                                CLUREF T_5_3;
                                CLUREF T_5_4;
                                T_5_1.num = index.num - 1;
                                 if ((T_5_1.num >= 0 && index.num < 0 && (-1) < 0) || 
                                     (T_5_1.num <= 0 && index.num > 0 && (-1) > 0)) {
                                    err = ERR_overflow;
                                    goto ex_0;}
                                err = intOPunparse(T_5_1, &T_5_2);
                                if (err != ERR_ok) goto ex_0;
                                err = stringOPconcat(STR_add_137parm_137info_137const_050, T_5_2, &T_5_3);
                                if (err != ERR_ok) goto ex_0;
                                err = stringOPconcat(T_5_3, STR__054_040, &T_5_4);
                                if (err != ERR_ok) goto ex_0;
                                err = g_envOPputs(e, T_5_4);
                                if (err != ERR_ok) goto ex_0;
                                }

  LINE(878);
                                {
                                CLUREF T_5_1;
                                if (index.num < 1 || index.num > actuals.vec->size ) {
                                    err = ERR_bounds;
                                    goto ex_0;}
                                T_5_1.num = actuals.vec->data[index.num - 1];
                                err = g_expr_arg(e, T_5_1);
                                if (err != ERR_ok) goto ex_0;
                                }

  LINE(879);
                                {
                                err = g_envOPputl(e, STR__051_073);
                                if (err != ERR_ok) goto ex_0;
                                }
                                break;
                                }
                        default: {

  LINE(881);
                            {
                            CLUREF T_5_1;
                            CLUREF T_5_2;
                            T_5_1.num = 712;
                            err = compiler_logit(T_5_1, STR_add_137parm_137info_072_040probably_040wrong, &T_5_2);
                            if (err != ERR_ok) goto ex_0;
                            }
                        }
                        }
                        }

  LINE(883);
                        {
                        CLUREF T_4_1;
                        T_4_1.num = index.num + 1;
                         if ((T_4_1.num > 0 && index.num < 0 && 1 < 0) || 
                             (T_4_1.num < 0 && index.num > 0 && 1 > 0)) {
                            err = ERR_overflow;
                            goto ex_0;}
                        index.num = T_4_1.num;
                        }
                    }
                }
                end_inline_for_1:;
                }
                }/* end if */
            break;
            }
    case 1: 
         {CLUREF T_1_1;
        T_1_1.num = each_pb.cell->value;
        a.num = T_1_1.num;

  LINE(887);
            {
            CLUREF T_2_1;
            err = dbg_infoOPactive(&T_2_1);
            if (err != ERR_ok) goto ex_0;
            if (T_2_1.num == true) {

  LINE(888);
                {
                CLUREF T_3_1;
                CLUREF T_3_2;
                T_3_1.num = a.vec->data[2];
                err = typespecOPget_abs(T_3_1, &T_3_2);
                if (err != ERR_ok) goto ex_0;
                switch (T_3_2.cell->tag) {
                case 3: 
                     {CLUREF T_3_3;
                    T_3_3.num = T_3_2.cell->value;
                    ct.num = T_3_3.num;

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

  LINE(895);
                        {
                        CLUREF T_4_1;
                        CLUREF T_4_2;
                        T_4_1.num = ct.vec->data[1];
                        if (1 < 1 || 1 > T_4_1.vec->size ) {
                            err = ERR_bounds;
                            goto ex_0;}
                        T_4_2.num = T_4_1.vec->data[1 - 1];
                        err = g_expr5(e, T_4_2);
                        if (err != ERR_ok) goto ex_0;
                        }

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

  LINE(899);
                        {
                        CLUREF T_4_1;
                        T_4_1.num = a.vec->data[2];
                        err = g_typespec(e, T_4_1);
                        if (err != ERR_ok) goto ex_0;
                        }

  LINE(900);
                        {
                        err = g_envOPputl(e, STR__137of_137t_137reqs_051_073);
                        if (err != ERR_ok) goto ex_0;
                        }

  LINE(902);
                        {
                        err = g_envOPnewline(e);
                        if (err != ERR_ok) goto ex_0;
                        }
                        break;
                        }
                default: {

  LINE(904);
                    {
                    CLUREF T_4_1;
                    CLUREF T_4_2;
                    T_4_1.num = 713;
                    err = compiler_logit(T_4_1, STR_g_137parm_137blocks_040array_040type_040unhandled, &T_4_2);
                    if (err != ERR_ok) goto ex_0;
                    }

  LINE(905);
                    {
                    CLUREF T_4_1;
                    T_4_1.num = a.vec->data[2];
                    err = typespec_print(T_4_1);
                    if (err != ERR_ok) goto ex_0;
                    }
                }
                }
                }
                }
                }/* end if */
            break;
            }
    case 3: 
         {CLUREF T_1_2;
        T_1_2.num = each_pb.cell->value;
        ex.num = T_1_2.num;

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

  LINE(914);
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            err = exprOPget_typespec(ex, &T_2_1);
            if (err != ERR_ok) goto ex_0;
            err = s_owns_prefix_type(T_2_1, &T_2_2);
            if (err != ERR_ok) goto ex_0;
            err = g_envOPputs(e, T_2_2);
            if (err != ERR_ok) goto ex_0;
            }

  LINE(915);
            {
            CLUREF T_2_1;
            err = exprOPget_typespec(ex, &T_2_1);
            if (err != ERR_ok) goto ex_0;
            err = g_name_typespec(e, T_2_1);
            if (err != ERR_ok) goto ex_0;
            }

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

  LINE(919);
            {
            err = g_envOPputl(e, STR__137anyize_137of_137t_137reqs_051_073);
            if (err != ERR_ok) goto ex_0;
            }

  LINE(920);
            {
            err = g_envOPnewline(e);
            if (err != ERR_ok) goto ex_0;
            }
            break;
            }
    case 5: 
         {CLUREF T_1_3;
        T_1_3.num = each_pb.cell->value;
        ty.num = T_1_3.num;

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

  LINE(927);
            {
            CLUREF T_2_1;
            err = s_owns_prefix_type(ty, &T_2_1);
            if (err != ERR_ok) goto ex_0;
            err = g_envOPputs(e, T_2_1);
            if (err != ERR_ok) goto ex_0;
            }

  LINE(928);
            {
            err = g_name_typespec(e, ty);
            if (err != ERR_ok) goto ex_0;
            }

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

  LINE(932);
            {
            err = g_envOPputl(e, STR__137anyize_137of_137t_137reqs_051_073);
            if (err != ERR_ok) goto ex_0;
            }

  LINE(933);
            {
            err = g_envOPnewline(e);
            if (err != ERR_ok) goto ex_0;
            }
            break;
            }
    default: {

  LINE(936);
        {
        CLUREF T_2_1;
        CLUREF T_2_2;
        T_2_1.num = 714;
        err = compiler_logit(T_2_1, STR_g_137parm_137blocks_072_040t_057ainfo_0404, &T_2_2);
        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 g_own_build_one ****/


/**** BEGIN CLUSTER own_defn ****/

static int own_defn_own_init = 0;
OWN_req own_defn_ownreqs = {0,0};
CLUREF own_defnOPold;
CLUREF own_defnOPactive;
errcode own_defn_own_init_proc()
{
    errcode err;
    enter_own_init_proc();
        if (own_defn_own_init == 0) {
        own_defn_own_init = 1;
        {
            {CLUREF T_0_1;
            err = arrayOPnew(&T_0_1);
            if (err != ERR_ok) goto ex_0;
            own_defnOPold.num = T_0_1.num;
            }
            }
        {
            {own_defnOPactive.tf = false;
            }
            }
        {signal(ERR_ok);}
    ex_0: pclu_unhandled(err); {signal(ERR_failure);}
        }
    }


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

errcode own_defnOPstart()
    {
    errcode err;
    errcode ecode2;
        if (own_defn_own_init == 0) {
            err = own_defn_own_init_proc();
            if (err != ERR_ok) goto ex_0;
            }
    enter_proc(947);

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

  LINE(949);
    {
    own_defnOPactive.tf = true;
    }

  LINE(950);
    {
    {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 own_defnOPtest(s, ret_1)
CLUREF s;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
    CLUREF each_s;
        if (own_defn_own_init == 0) {
            err = own_defn_own_init_proc();
            if (err != ERR_ok) goto ex_0;
            }
    enter_proc(953);

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

  LINE(956);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    CLUREF T_1_3;
        T_1_2.num = own_defnOPold.array->ext_high; 
        T_1_3 = own_defnOPold;
        for (T_1_1.num = own_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(957);
            {
            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(959);
    {
    {
    if ((own_defnOPold.array->int_low + own_defnOPold.array->ext_size + 1) < own_defnOPold.array->int_size) {
        own_defnOPold.array->store->data[own_defnOPold.array->int_low + own_defnOPold.array->ext_size] = s.num;
        own_defnOPold.array->ext_size++; own_defnOPold.array->ext_high++;}
    else {
        err = arrayOPaddh(own_defnOPold, s);
        if (err != ERR_ok) goto ex_0;}
    }
    }

  LINE(960);
    {
    {
    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 own_defnOPstop()
    {
    errcode err;
    errcode ecode2;
        if (own_defn_own_init == 0) {
            err = own_defn_own_init_proc();
            if (err != ERR_ok) goto ex_0;
            }
    enter_proc(963);

  LINE(964);
    {
    own_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];
} own_defn_OPS;

CLU_proc own_defn_oe_start = {{0,0,0,0}, own_defnOPstart, 0};
CLU_proc own_defn_oe_stop = {{0,0,0,0}, own_defnOPstop, 0};
CLU_proc own_defn_oe_test = {{0,0,0,0}, own_defnOPtest, 0};

own_defn_OPS own_defn_ops_actual = {3, (OWNPTR)&own_defn_own_init, (OWNPTR)&own_defn_own_init, {
    {&own_defn_oe_start, "start"},
    {&own_defn_oe_stop, "stop"},
    {&own_defn_oe_test, "test"}}};

struct OPS *own_defn_ops = (struct OPS *)&own_defn_ops_actual;

/**** END CLUSTER own_defn ****/

static int base_cluster_test_own_init = 0;

/**** BEGIN PROCEDURE base_cluster_test ****/

errcode base_cluster_test(cop, ct, ret_1)
CLUREF cop;
CLUREF ct;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
        if (base_cluster_test_own_init == 0) {
        stringOPcons("array", CLU_1, CLU_5, &STR_array);
        stringOPcons("sequence", CLU_1, CLU_8, &STR_sequence);
        stringOPcons("_vec", CLU_1, CLU_4, &STR__137vec);
        base_cluster_test_own_init = 1;
    }
    enter_proc(971);

  LINE(972);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    CLUREF T_1_3;
    CLUREF T_1_4;
    CLUREF T_1_5;
    CLUREF T_1_6;
    CLUREF T_1_7;
    CLUREF T_1_8;
    CLUREF T_1_9;
    CLUREF T_1_10;
    CLUREF T_1_11;
    CLUREF T_1_12;
    CLUREF T_1_13;
    CLUREF T_1_14;
    CLUREF T_1_15;
    CLUREF T_1_16;
    T_1_4.num = ct.vec->data[0];
    err = duOPget_common(T_1_4, &T_1_5);
    if (err != ERR_ok) goto ex_0;
    T_1_6.num = ((T_1_5.str->size != STR_array.str->size)? false :
        !(bcmp(T_1_5.str->data, STR_array.str->data, T_1_5.str->size)));
    T_1_3.num = T_1_6.num;
    if (!T_1_6.num) {
        T_1_7.num = ct.vec->data[0];
        err = duOPget_common(T_1_7, &T_1_8);
        if (err != ERR_ok) goto ex_0;
        T_1_9.num = ((T_1_8.str->size != STR_sequence.str->size)? false :
            !(bcmp(T_1_8.str->data, STR_sequence.str->data, T_1_8.str->size)));
        T_1_3.num = T_1_9.num;
    }
    T_1_2.num = T_1_3.num;
    if (!T_1_3.num) {
        T_1_10.num = ct.vec->data[0];
        err = duOPget_common(T_1_10, &T_1_11);
        if (err != ERR_ok) goto ex_0;
        T_1_12.num = ((T_1_11.str->size != STR__137vec.str->size)? false :
            !(bcmp(T_1_11.str->data, STR__137vec.str->data, T_1_11.str->size)));
        T_1_2.num = T_1_12.num;
    }
    T_1_1.num = T_1_2.num;
    if (T_1_2.num) {
        T_1_13.num = ct.vec->data[0];
        T_1_14.num = cop.vec->data[0];
        err = parmd_op(T_1_13, T_1_14, &T_1_15);
        if (err != ERR_ok) goto ex_0;
        T_1_16.num = T_1_15.num ^ 1;
        T_1_1.num = T_1_16.num;
    }
    if (T_1_1.num == true) {

  LINE(976);
        {
        {
        ret_1->tf = true;
        }
        {signal (ERR_ok);}}
        }
        }/* end if */

  LINE(977);
    {
    {
    ret_1->tf = false;
    }
    {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 base_cluster_test ****/


static int base_apply_test_own_init = 0;

/**** BEGIN PROCEDURE base_apply_test ****/

errcode base_apply_test(ct, ret_1)
CLUREF ct;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
        if (base_apply_test_own_init == 0) {
        stringOPcons("_cvt", CLU_1, CLU_4, &STR__137cvt);
        base_apply_test_own_init = 1;
    }
    enter_proc(980);

  LINE(981);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    CLUREF T_1_3;
    T_1_1.num = ct.vec->data[0];
    err = duOPget_common(T_1_1, &T_1_2);
    if (err != ERR_ok) goto ex_0;
    T_1_3.num = ((T_1_2.str->size != STR__137cvt.str->size)? false :
        !(bcmp(T_1_2.str->data, STR__137cvt.str->data, T_1_2.str->size)));
    if (T_1_3.num == true) {

  LINE(982);
        {
        {
        ret_1->tf = true;
        }
        {signal (ERR_ok);}}
        }
        }/* end if */

  LINE(984);
    {
    {
    ret_1->tf = false;
    }
    {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 base_apply_test ****/

