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

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


extern errcode g_envOPputs();
CLUREF STR_OLD_040USE_040OF_040G_137EXPR;
static int g_expr_own_init = 0;

/**** BEGIN PROCEDURE g_expr ****/

errcode g_expr(e, exp)
CLUREF e;
CLUREF exp;
    {
    errcode err;
    errcode ecode2;
        if (g_expr_own_init == 0) {
        stringOPcons("OLD USE OF G_EXPR", CLU_1, CLU_17, &STR_OLD_040USE_040OF_040G_137EXPR);
        g_expr_own_init = 1;
    }
    enter_proc(13);

  LINE(14);
    {
    err = g_envOPputs(e, STR_OLD_040USE_040OF_040G_137EXPR);
    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_expr ****/


extern errcode exprOPget_abs();
extern errcode boolOPnot();
extern errcode int_constOPexists();
extern errcode tvOPdecl_next();
extern errcode ceOPget_int_type();
extern errcode g_envOPget_comp();
extern errcode g_expr0();

/**** BEGIN PROCEDURE g_expr_arg0 ****/

errcode g_expr_arg0(e, exp)
CLUREF e;
CLUREF exp;
    {
    errcode err;
    errcode ecode2;
    CLUREF i;
    enter_proc(19);

  LINE(20);
    {
    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 15: 
         {CLUREF T_1_2;
        T_1_2.num = T_1_1.cell->value;
        i.num = T_1_2.num;

  LINE(22);
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            err = int_constOPexists(i, &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(23);
                {
                CLUREF T_3_1;
                CLUREF T_3_2;
                err = g_envOPget_comp(e, &T_3_1);
                if (err != ERR_ok) goto ex_0;
                err = ceOPget_int_type(T_3_1, &T_3_2);
                if (err != ERR_ok) goto ex_0;
                err = tvOPdecl_next(e, T_3_2);
                if (err != ERR_ok) goto ex_0;
                }
                }
                }/* end if */
            break;
            }
    default: {

  LINE(26);
        {
        err = g_expr0(e, exp);
        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_expr_arg0 ****/


extern errcode expr_print();
extern errcode tvOPblind_decl_next();
extern errcode ceOPget_bool_type();
extern errcode recordOPget_1();
extern errcode recordOPget_2();
extern errcode sequenceOPelements();
extern errcode g_expr_arg0();
extern errcode exprOPget_typespec();
extern errcode typespecOPget_abs();
extern errcode recordOPget_4();
extern errcode recordOPget_3();
extern errcode oneofOPis_20();
extern errcode stringOPequal();
extern errcode oneofOPvalue_20();
extern errcode compiler_logit();
extern errcode typespec_print();
extern errcode g_qinv_test();
extern errcode g_inv0();
extern errcode oneofOPis_2();
extern errcode oneofOPvalue_2();
extern errcode sequenceOPsize();
extern errcode specs_exist();
extern errcode g_envOPerror();
extern errcode stringOPconcat();
extern errcode duOPget_common();
extern errcode oneofOPvalue_3();
extern errcode ceOPget_real_type();
extern errcode ceOPget_char_type();
CLUREF STR_debug_137print;
CLUREF STR_g_137expr0_072_040unhandled_040invoke_056apply_056typespec_040XXXX;
CLUREF STR_specifications_040for_040;
CLUREF STR__040missing_056;
CLUREF STR_g_137expr_072_040tag_040type_137_040not_040expected;
CLUREF STR_g_137expr_072_040tag_040type_137of_137_040not_040expected;
CLUREF STR_g_137expr_072_040unexpected_040tag;
static int g_expr0_own_init = 0;

/**** BEGIN PROCEDURE g_expr0 ****/

errcode g_expr0(e, exp)
CLUREF e;
CLUREF exp;
    {
    errcode err;
    errcode ecode2;
    CLUREF id;
    CLUREF xa;
    CLUREF inv;
    CLUREF each_exp;
    CLUREF ty;
    CLUREF a;
    CLUREF val;
    CLUREF o;
    CLUREF clop;
    CLUREF size;
    CLUREF each_elt;
    CLUREF each_field;
    CLUREF sel;
    CLUREF ct;
        if (g_expr0_own_init == 0) {
        stringOPcons("debug_print", CLU_1, CLU_11, &STR_debug_137print);
        stringOPcons("g_expr0: unhandled invoke.apply.typespec XXXX", CLU_1, CLU_45, &STR_g_137expr0_072_040unhandled_040invoke_056apply_056typespec_040XXXX);
        stringOPcons("specifications for ", CLU_1, CLU_19, &STR_specifications_040for_040);
        stringOPcons(" missing.", CLU_1, CLU_9, &STR__040missing_056);
        stringOPcons("g_expr: tag type_ not expected", CLU_1, CLU_30, &STR_g_137expr_072_040tag_040type_137_040not_040expected);
        stringOPcons("g_expr: tag type_of_ not expected", CLU_1, CLU_33, &STR_g_137expr_072_040tag_040type_137of_137_040not_040expected);
        stringOPcons("g_expr: unexpected tag", CLU_1, CLU_22, &STR_g_137expr_072_040unexpected_040tag);
        g_expr0_own_init = 1;
    }
    enter_proc(30);

  LINE(31);
    {
    if (false == true) {
        {
        err = expr_print(exp, CLU_0);
        if (err != ERR_ok) goto ex_0;
        }
        }
        }/* end if */

  LINE(32);
    {
    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 13: 
         {CLUREF T_1_2;
        T_1_2.num = T_1_1.cell->value;
        id.num = T_1_2.num;
            break;
            }
    case 2: 
         {CLUREF T_1_3;
        T_1_3.num = T_1_1.cell->value;
        xa.num = T_1_3.num;

  LINE(35);
            {
            err = tvOPblind_decl_next(e);
            if (err != ERR_ok) goto ex_0;
            }

  LINE(36);
            {
            err = g_expr0(e, xa);
            if (err != ERR_ok) goto ex_0;
            }
            break;
            }
    case 6: 
         {CLUREF T_1_4;
        T_1_4.num = T_1_1.cell->value;
        xa.num = T_1_4.num;

  LINE(38);
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            err = g_envOPget_comp(e, &T_2_1);
            if (err != ERR_ok) goto ex_0;
            err = ceOPget_bool_type(T_2_1, &T_2_2);
            if (err != ERR_ok) goto ex_0;
            err = tvOPdecl_next(e, T_2_2);
            if (err != ERR_ok) goto ex_0;
            }

  LINE(39);
            {
            CLUREF T_2_1;
            T_2_1.num = xa.vec->data[0];
            err = g_expr0(e, T_2_1);
            if (err != ERR_ok) goto ex_0;
            }

  LINE(40);
            {
            CLUREF T_2_1;
            T_2_1.num = xa.vec->data[1];
            err = g_expr0(e, T_2_1);
            if (err != ERR_ok) goto ex_0;
            }
            break;
            }
    case 8: 
         {CLUREF T_1_5;
        T_1_5.num = T_1_1.cell->value;
        xa.num = T_1_5.num;

  LINE(42);
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            err = g_envOPget_comp(e, &T_2_1);
            if (err != ERR_ok) goto ex_0;
            err = ceOPget_bool_type(T_2_1, &T_2_2);
            if (err != ERR_ok) goto ex_0;
            err = tvOPdecl_next(e, T_2_2);
            if (err != ERR_ok) goto ex_0;
            }

  LINE(43);
            {
            CLUREF T_2_1;
            T_2_1.num = xa.vec->data[0];
            err = g_expr0(e, T_2_1);
            if (err != ERR_ok) goto ex_0;
            }

  LINE(44);
            {
            CLUREF T_2_1;
            T_2_1.num = xa.vec->data[1];
            err = g_expr0(e, T_2_1);
            if (err != ERR_ok) goto ex_0;
            }
            break;
            }
    case 16: 
         {CLUREF T_1_6;
        T_1_6.num = T_1_1.cell->value;
        inv.num = T_1_6.num;

  LINE(46);
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            CLUREF T_2_3;
            CLUREF T_2_4;
                T_2_1.num = inv.vec->data[1];
                T_2_3.num = T_2_1.vec->size; 
                T_2_4 = T_2_1;
                for (T_2_2.num = 1; T_2_2.num <= T_2_3.num; T_2_2.num++) {
                    each_exp.num = T_2_4.vec->data[T_2_2.num - 1];

  LINE(47);
                    {
                    err = g_expr_arg0(e, each_exp);
                    if (err != ERR_ok) goto ex_0;
                    }
                }
            }
            end_inline_for_1:;

  LINE(49);
            {
                {CLUREF T_2_1;
                CLUREF T_2_2;
                T_2_1.num = inv.vec->data[0];
                err = exprOPget_typespec(T_2_1, &T_2_2);
                if (err != ERR_ok) goto ex_0;
                ty.num = T_2_2.num;
                }
                }

  LINE(50);
            {
            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 2: 
                 {CLUREF T_2_2;
                T_2_2.num = T_2_1.cell->value;
                a.num = T_2_2.num;

  LINE(52);
                    {
                    CLUREF T_3_1;
                    CLUREF T_3_2;
                    CLUREF T_3_3;
                    CLUREF T_3_4;
                        T_3_1.num = a.vec->data[3];
                        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++) {
                            val.num = T_3_4.vec->data[T_3_2.num - 1];

  LINE(53);
                            {
                            err = tvOPdecl_next(e, val);
                            if (err != ERR_ok) goto ex_0;
                            }
                        }
                    }
                    end_inline_for_2:;
                    break;
                    }
            case 6: 
                 {CLUREF T_2_3;
                T_2_3.num = T_2_1.cell->value;
                o.num = T_2_3.num;

  LINE(56);
                    {
                    switch (o.cell->tag) {
                    case 1: 
                         {

  LINE(58);
                            {
                            err = tvOPblind_decl_next(e);
                            if (err != ERR_ok) goto ex_0;
                            }
                            break;
                            }
                    case 2: 
                         {CLUREF T_3_1;
                        T_3_1.num = o.cell->value;
                        clop.num = T_3_1.num;

  LINE(60);
                            {
                            CLUREF T_4_1;
                            T_4_1.num = clop.vec->data[2];
                            err = tvOPdecl_next(e, T_4_1);
                            if (err != ERR_ok) goto ex_0;
                            }
                            break;
                            }
                    case 3: 
                         {

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

  LINE(65);
                {
                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;
                CLUREF T_3_8;
                CLUREF T_3_9;
                T_3_2.num = inv.vec->data[0];
                err = exprOPget_abs(T_3_2, &T_3_3);
                if (err != ERR_ok) goto ex_0;
                if (T_3_3.cell->tag == 20) T_3_4.num = true; else T_3_4.num = false;
                T_3_1.num = T_3_4.num;
                if (T_3_4.num) {
                    T_3_5.num = inv.vec->data[0];
                    err = exprOPget_abs(T_3_5, &T_3_6);
                    if (err != ERR_ok) goto ex_0;
                    if (T_3_6.cell->tag != 20) {err = ERR_wrong_tag; goto ex_0;}
                    T_3_7.num = T_3_6.cell->value;
                    T_3_8.num = T_3_7.vec->data[0];
                    T_3_9.num = ((T_3_8.str->size != STR_debug_137print.str->size)? false :
                        !(bcmp(T_3_8.str->data, STR_debug_137print.str->data, T_3_8.str->size)));
                    T_3_1.num = T_3_9.num;
                }
                if (T_3_1.num == true) {
                    }
                else {

  LINE(69);
                    {
                    err = tvOPblind_decl_next(e);
                    if (err != ERR_ok) goto ex_0;
                    }

  LINE(70);
                    {
                    CLUREF T_4_1;
                    CLUREF T_4_2;
                    T_4_1.num = 400;
                    err = compiler_logit(T_4_1, STR_g_137expr0_072_040unhandled_040invoke_056apply_056typespec_040XXXX, &T_4_2);
                    if (err != ERR_ok) goto ex_0;
                    }

  LINE(71);
                    {
                    err = typespec_print(ty);
                    if (err != ERR_ok) goto ex_0;
                    }
                    }}/* end if */
            }
            }
            }

  LINE(74);
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            CLUREF T_2_3;
            T_2_1.num = inv.vec->data[0];
            err = g_qinv_test(T_2_1, &T_2_2);
            if (err != ERR_ok) goto ex_0;
            T_2_3.num = T_2_2.num ^ 1;
            if (T_2_3.num == true) {

  LINE(75);
                {
                CLUREF T_3_1;
                T_3_1.num = inv.vec->data[0];
                err = g_inv0(e, T_3_1);
                if (err != ERR_ok) goto ex_0;
                }
                }
                }/* end if */
            break;
            }
    case 1: 
         {CLUREF T_1_7;
        T_1_7.num = T_1_1.cell->value;
        xa.num = T_1_7.num;

  LINE(78);
            {
            CLUREF T_2_1;
            T_2_1.num = xa.vec->data[2];
            err = tvOPdecl_next(e, T_2_1);
            if (err != ERR_ok) goto ex_0;
            }

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

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

  LINE(81);
            {
                {CLUREF T_2_1;
                CLUREF T_2_2;
                T_2_1.num = xa.vec->data[0];
                T_2_2.num = T_2_1.vec->size;
                size.num = T_2_2.num;
                }
                }

  LINE(82);
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            err = int_constOPexists(size, &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(83);
                {
                CLUREF T_3_1;
                CLUREF T_3_2;
                err = g_envOPget_comp(e, &T_3_1);
                if (err != ERR_ok) goto ex_0;
                err = ceOPget_int_type(T_3_1, &T_3_2);
                if (err != ERR_ok) goto ex_0;
                err = tvOPdecl_next(e, T_3_2);
                if (err != ERR_ok) goto ex_0;
                }
                }
                }/* end if */

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

  LINE(85);
                    {
                    err = g_expr_arg0(e, each_elt);
                    if (err != ERR_ok) goto ex_0;
                    }
                }
            }
            end_inline_for_3:;
            break;
            }
    case 23: 
         {CLUREF T_1_8;
        T_1_8.num = T_1_1.cell->value;
        xa.num = T_1_8.num;

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

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

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

  LINE(91);
                            {
                            CLUREF T_4_1;
                            T_4_1.num = each_field.vec->data[2];
                            err = g_expr0(e, T_4_1);
                            if (err != ERR_ok) goto ex_0;
                            }
                        }
                    }
                    end_inline_for_5:;
                }
            }
            end_inline_for_4:;
            break;
            }
    case 3: 
         {CLUREF T_1_9;
        T_1_9.num = T_1_1.cell->value;
        ct.num = T_1_9.num;

  LINE(95);
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            err = specs_exist(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(96);
                {
                CLUREF T_3_1;
                CLUREF T_3_2;
                CLUREF T_3_3;
                CLUREF T_3_4;
                T_3_1.num = ct.vec->data[0];
                err = duOPget_common(T_3_1, &T_3_2);
                if (err != ERR_ok) goto ex_0;
                err = stringOPconcat(STR_specifications_040for_040, T_3_2, &T_3_3);
                if (err != ERR_ok) goto ex_0;
                err = stringOPconcat(T_3_3, STR__040missing_056, &T_3_4);
                if (err != ERR_ok) goto ex_0;
                err = g_envOPerror(e, T_3_4);
                if (err != ERR_ok) goto ex_0;
                }

  LINE(98);
                {
                {signal (ERR_specs_missing);}}
                }
                }/* end if */

  LINE(100);
            {
            err = tvOPblind_decl_next(e);
            if (err != ERR_ok) goto ex_0;
            }
            break;
            }
    case 20: 
         {CLUREF T_1_10;
        T_1_10.num = T_1_1.cell->value;
        xa.num = T_1_10.num;

  LINE(102);
            {

  LINE(103);
                {
                    {CLUREF T_4_1;
                    T_4_1.num = xa.vec->data[2];
                    ty.num = T_4_1.num;
                    }
                    }

  LINE(104);
                {
                    {CLUREF T_4_1;
                    CLUREF T_4_2;
                    err = typespecOPget_abs(ty, &T_4_1);
                    if (err != ERR_ok) goto ex_1;
                    if (T_4_1.cell->tag != 3) {err = ERR_wrong_tag; goto ex_1;}
                    T_4_2.num = T_4_1.cell->value;
                    ct.num = T_4_2.num;
                    }
                    }

  LINE(105);
                {
                CLUREF T_4_1;
                CLUREF T_4_2;
                err = specs_exist(ct, &T_4_1);
                if (err != ERR_ok) goto ex_1;
                T_4_2.num = T_4_1.num ^ 1;
                if (T_4_2.num == true) {

  LINE(106);
                    {
                    CLUREF T_5_1;
                    CLUREF T_5_2;
                    CLUREF T_5_3;
                    CLUREF T_5_4;
                    T_5_1.num = ct.vec->data[0];
                    err = duOPget_common(T_5_1, &T_5_2);
                    if (err != ERR_ok) goto ex_1;
                    err = stringOPconcat(STR_specifications_040for_040, T_5_2, &T_5_3);
                    if (err != ERR_ok) goto ex_1;
                    err = stringOPconcat(T_5_3, STR__040missing_056, &T_5_4);
                    if (err != ERR_ok) goto ex_1;
                    err = g_envOPerror(e, T_5_4);
                    if (err != ERR_ok) goto ex_1;
                    }

  LINE(108);
                    {
                    {signal (ERR_specs_missing);}}
                    }
                    }/* end if */
                }
                goto end_1;
                ex_1:
                    if ((err == ERR_wrong_tag)) {
                    }
                    else {
                        goto ex_0;
                    }
                end_1:;

  LINE(112);
            {
            err = tvOPblind_decl_next(e);
            if (err != ERR_ok) goto ex_0;
            }
            break;
            }
    case 11: 
         {CLUREF T_1_11;
        T_1_11.num = T_1_1.cell->value;
        xa.num = T_1_11.num;

  LINE(114);
            {
            err = tvOPblind_decl_next(e);
            if (err != ERR_ok) goto ex_0;
            }
            break;
            }
    case 27: 
         {CLUREF T_1_12;
        T_1_12.num = T_1_1.cell->value;
        xa.num = T_1_12.num;

  LINE(116);
            {
            err = g_expr0(e, xa);
            if (err != ERR_ok) goto ex_0;
            }
            break;
            }
    case 9: 
         {CLUREF T_1_13;
        T_1_13.num = T_1_1.cell->value;
        xa.num = T_1_13.num;

  LINE(118);
            {
            err = g_expr0(e, xa);
            if (err != ERR_ok) goto ex_0;
            }
            break;
            }
    case 25: 
         {CLUREF T_1_14;
        T_1_14.num = T_1_1.cell->value;
        xa.num = T_1_14.num;

  LINE(120);
            {
            err = g_envOPerror(e, STR_g_137expr_072_040tag_040type_137_040not_040expected);
            if (err != ERR_ok) goto ex_0;
            }
            break;
            }
    case 26: 
         {CLUREF T_1_15;
        T_1_15.num = T_1_1.cell->value;
        xa.num = T_1_15.num;

  LINE(122);
            {
            err = g_envOPerror(e, STR_g_137expr_072_040tag_040type_137of_137_040not_040expected);
            if (err != ERR_ok) goto ex_0;
            }
            break;
            }
    case 24: 
         {
            break;
            }
    case 21: 
         {

  LINE(126);
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            err = g_envOPget_comp(e, &T_2_1);
            if (err != ERR_ok) goto ex_0;
            err = ceOPget_real_type(T_2_1, &T_2_2);
            if (err != ERR_ok) goto ex_0;
            err = tvOPdecl_next(e, T_2_2);
            if (err != ERR_ok) goto ex_0;
            }
            break;
            }
    case 7: 
         {

  LINE(128);
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            err = g_envOPget_comp(e, &T_2_1);
            if (err != ERR_ok) goto ex_0;
            err = ceOPget_char_type(T_2_1, &T_2_2);
            if (err != ERR_ok) goto ex_0;
            err = tvOPdecl_next(e, T_2_2);
            if (err != ERR_ok) goto ex_0;
            }
            break;
            }
    case 19: 
    case 5: 
    case 15: 
         {
            break;
            }
    default: {

  LINE(131);
        {
        err = g_envOPerror(e, STR_g_137expr_072_040unexpected_040tag);
        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_expr0 ****/


extern errcode duOPread_specs();
extern errcode oneofOPis_4();
extern errcode oneofOPis_3();
extern errcode intOPequal();

/**** BEGIN PROCEDURE parmd_cluster ****/

errcode parmd_cluster(xa, ret_1)
CLUREF xa;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
    CLUREF ct;
    CLUREF specs;
    CLUREF b;
    CLUREF ti;
    enter_proc(135);

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

  LINE(138);
            {
                {CLUREF T_2_1;
                CLUREF T_2_2;
                CLUREF T_2_3;
                T_2_1.num = ct.vec->data[0];
                err = duOPread_specs(T_2_1, &T_2_2, &T_2_3);
                if (err != ERR_ok) goto ex_0;
                specs.num = T_2_2.num;
                b.num = T_2_3.num;
                }
                }

  LINE(139);
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            if (specs.cell->tag == 4) T_2_1.num = true; else T_2_1.num = false;
            T_2_2.num = T_2_1.num ^ 1;
            if (T_2_2.num == true) {

  LINE(140);
                {
                CLUREF T_3_1;
                if (specs.cell->tag == 3) T_3_1.num = true; else T_3_1.num = false;
                if (T_3_1.num == true) {

  LINE(141);
                    {
                        {CLUREF T_4_1;
                        if (specs.cell->tag != 3) {err = ERR_wrong_tag; goto ex_0;}
                        T_4_1.num = specs.cell->value;
                        ti.num = T_4_1.num;
                        }
                        }

  LINE(142);
                    {
                    CLUREF T_4_1;
                    CLUREF T_4_2;
                    CLUREF T_4_3;
                    CLUREF T_4_4;
                    T_4_1.num = ti.vec->data[1];
                    T_4_2.num = T_4_1.vec->size;
                    T_4_3.num = (T_4_2.num == 0)? true : false;
                    T_4_4.num = T_4_3.num ^ 1;
                    if (T_4_4.num == true) {

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

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

  LINE(150);
    {
    {
    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 parmd_cluster ****/


extern errcode sequenceOPfill();
extern errcode g_int_const1();
extern errcode g_expr1();

/**** BEGIN PROCEDURE g_expr_arg1 ****/

errcode g_expr_arg1(e, exp, ret_1)
CLUREF e;
CLUREF exp;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
    CLUREF i;
    enter_proc(155);

  LINE(156);
    {
    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 15: 
         {CLUREF T_1_2;
        T_1_2.num = T_1_1.cell->value;
        i.num = T_1_2.num;

  LINE(158);
            {
            CLUREF T_2_1;
            err = int_constOPexists(i, &T_2_1);
            if (err != ERR_ok) goto ex_0;
            if (T_2_1.num == true) {

  LINE(160);
                {
                {
                CLUREF T_3_1;
                err = sequenceOPfill(CLU_1, exp, &T_3_1);
                if (err != ERR_ok) goto ex_0;
                ret_1->num = T_3_1.num;
                }
                {signal (ERR_ok);}}
                }
            else {

  LINE(162);
                {
                {
                CLUREF T_3_1;
                err = g_int_const1(e, i, &T_3_1);
                if (err != ERR_ok) goto ex_0;
                ret_1->num = T_3_1.num;
                }
                {signal (ERR_ok);}}
                }}/* end if */
            break;
            }
    default: {

  LINE(165);
        {
        {
        CLUREF T_2_1;
        err = g_expr1(e, exp, &T_2_1);
        if (err != ERR_ok) goto ex_0;
        ret_1->num = T_2_1.num;
        }
        {signal (ERR_ok);}}
    }
    }
    }
    goto end_0;
    ex_0:
        {
            if (err == ERR_failure) {signal(ERR_failure);}
            elist[0] = _pclu_erstr(err);
            {signal(ERR_failure);}
        }
    end_0: elist[0].str = no_return_values_STRING;
        {signal(ERR_failure);}
    }

/**** END PROCEDURE g_expr_arg1 ****/


extern errcode g_real_const();
extern errcode g_char_const();
extern errcode g_condop();
extern errcode g_einvoke();
extern errcode g_apply1();
extern errcode g_op1();
extern errcode g_force();
extern errcode g_updown();
extern errcode g_typespec();
extern errcode g_arraycons();
extern errcode g_selectcons();
extern errcode g_anyize();
extern errcode sequenceOPnew();
CLUREF STR_cand;
CLUREF STR_cor;
CLUREF STR_up;
CLUREF STR_down;
static int g_expr1_own_init = 0;

/**** BEGIN PROCEDURE g_expr1 ****/

errcode g_expr1(e, exp, ret_1)
CLUREF e;
CLUREF exp;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
    CLUREF id;
    CLUREF s;
    CLUREF r;
    CLUREF c;
    CLUREF xa;
    CLUREF inv;
        if (g_expr1_own_init == 0) {
        stringOPcons("cand", CLU_1, CLU_4, &STR_cand);
        stringOPcons("cor", CLU_1, CLU_3, &STR_cor);
        stringOPcons("up", CLU_1, CLU_2, &STR_up);
        stringOPcons("down", CLU_1, CLU_4, &STR_down);
        stringOPcons("g_expr: tag type_of_ not expected", CLU_1, CLU_33, &STR_g_137expr_072_040tag_040type_137of_137_040not_040expected);
        stringOPcons("g_expr: unexpected tag", CLU_1, CLU_22, &STR_g_137expr_072_040unexpected_040tag);
        g_expr1_own_init = 1;
    }
    enter_proc(170);

  LINE(171);
    {
    if (false == true) {
        {
        err = expr_print(exp, CLU_1);
        if (err != ERR_ok) goto ex_0;
        }
        }
        }/* end if */

  LINE(172);
    {
    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 13: 
         {CLUREF T_1_2;
        T_1_2.num = T_1_1.cell->value;
        id.num = T_1_2.num;

  LINE(174);
            {
            {
            CLUREF T_2_1;
            err = sequenceOPfill(CLU_1, exp, &T_2_1);
            if (err != ERR_ok) goto ex_0;
            ret_1->num = T_2_1.num;
            }
            {signal (ERR_ok);}}
            break;
            }
    case 24: 
         {CLUREF T_1_3;
        T_1_3.num = T_1_1.cell->value;
        s.num = T_1_3.num;

  LINE(177);
            {
            {
            CLUREF T_2_1;
            err = sequenceOPfill(CLU_1, exp, &T_2_1);
            if (err != ERR_ok) goto ex_0;
            ret_1->num = T_2_1.num;
            }
            {signal (ERR_ok);}}
            break;
            }
    case 21: 
         {CLUREF T_1_4;
        T_1_4.num = T_1_1.cell->value;
        r.num = T_1_4.num;

  LINE(179);
            {
            {
            CLUREF T_2_1;
            err = g_real_const(e, r, &T_2_1);
            if (err != ERR_ok) goto ex_0;
            ret_1->num = T_2_1.num;
            }
            {signal (ERR_ok);}}
            break;
            }
    case 7: 
         {CLUREF T_1_5;
        T_1_5.num = T_1_1.cell->value;
        c.num = T_1_5.num;

  LINE(181);
            {
            {
            CLUREF T_2_1;
            err = g_char_const(e, c, &T_2_1);
            if (err != ERR_ok) goto ex_0;
            ret_1->num = T_2_1.num;
            }
            {signal (ERR_ok);}}
            break;
            }
    case 19: 
    case 5: 
    case 15: 
         {

  LINE(183);
            {
            {
            CLUREF T_2_1;
            err = sequenceOPfill(CLU_1, exp, &T_2_1);
            if (err != ERR_ok) goto ex_0;
            ret_1->num = T_2_1.num;
            }
            {signal (ERR_ok);}}
            break;
            }
    case 6: 
         {CLUREF T_1_6;
        T_1_6.num = T_1_1.cell->value;
        xa.num = T_1_6.num;

  LINE(185);
            {
            {
            CLUREF T_2_1;
            err = g_condop(e, xa, STR_cand, &T_2_1);
            if (err != ERR_ok) goto ex_0;
            ret_1->num = T_2_1.num;
            }
            {signal (ERR_ok);}}
            break;
            }
    case 8: 
         {CLUREF T_1_7;
        T_1_7.num = T_1_1.cell->value;
        xa.num = T_1_7.num;

  LINE(187);
            {
            {
            CLUREF T_2_1;
            err = g_condop(e, xa, STR_cor, &T_2_1);
            if (err != ERR_ok) goto ex_0;
            ret_1->num = T_2_1.num;
            }
            {signal (ERR_ok);}}
            break;
            }
    case 16: 
         {CLUREF T_1_8;
        T_1_8.num = T_1_1.cell->value;
        inv.num = T_1_8.num;

  LINE(189);
            {
            {
            CLUREF T_2_1;
            err = g_einvoke(e, inv, &T_2_1);
            if (err != ERR_ok) goto ex_0;
            ret_1->num = T_2_1.num;
            }
            {signal (ERR_ok);}}
            break;
            }
    case 3: 
         {CLUREF T_1_9;
        T_1_9.num = T_1_1.cell->value;
        xa.num = T_1_9.num;

  LINE(191);
            {
            {
            CLUREF T_2_1;
            err = g_apply1(e, exp, xa, &T_2_1);
            if (err != ERR_ok) goto ex_0;
            ret_1->num = T_2_1.num;
            }
            {signal (ERR_ok);}}
            break;
            }
    case 20: 
         {CLUREF T_1_10;
        T_1_10.num = T_1_1.cell->value;
        xa.num = T_1_10.num;

  LINE(193);
            {
            {
            CLUREF T_2_1;
            err = g_op1(e, exp, xa, &T_2_1);
            if (err != ERR_ok) goto ex_0;
            ret_1->num = T_2_1.num;
            }
            {signal (ERR_ok);}}
            break;
            }
    case 11: 
         {CLUREF T_1_11;
        T_1_11.num = T_1_1.cell->value;
        xa.num = T_1_11.num;

  LINE(195);
            {
            {
            CLUREF T_2_1;
            err = g_force(e, exp, xa, &T_2_1);
            if (err != ERR_ok) goto ex_0;
            ret_1->num = T_2_1.num;
            }
            {signal (ERR_ok);}}
            break;
            }
    case 27: 
         {CLUREF T_1_12;
        T_1_12.num = T_1_1.cell->value;
        xa.num = T_1_12.num;

  LINE(197);
            {
            {
            CLUREF T_2_1;
            err = g_updown(e, xa, STR_up, &T_2_1);
            if (err != ERR_ok) goto ex_0;
            ret_1->num = T_2_1.num;
            }
            {signal (ERR_ok);}}
            break;
            }
    case 9: 
         {CLUREF T_1_13;
        T_1_13.num = T_1_1.cell->value;
        xa.num = T_1_13.num;

  LINE(199);
            {
            {
            CLUREF T_2_1;
            err = g_updown(e, xa, STR_down, &T_2_1);
            if (err != ERR_ok) goto ex_0;
            ret_1->num = T_2_1.num;
            }
            {signal (ERR_ok);}}
            break;
            }
    case 25: 
         {CLUREF T_1_14;
        T_1_14.num = T_1_1.cell->value;
        xa.num = T_1_14.num;

  LINE(201);
            {
            err = g_typespec(e, xa);
            if (err != ERR_ok) goto ex_0;
            }
            break;
            }
    case 26: 
         {CLUREF T_1_15;
        T_1_15.num = T_1_1.cell->value;
        xa.num = T_1_15.num;

  LINE(204);
            {
            err = g_envOPerror(e, STR_g_137expr_072_040tag_040type_137of_137_040not_040expected);
            if (err != ERR_ok) goto ex_0;
            }
            break;
            }
    case 1: 
         {CLUREF T_1_16;
        T_1_16.num = T_1_1.cell->value;
        xa.num = T_1_16.num;

  LINE(206);
            {
            {
            CLUREF T_2_1;
            err = g_arraycons(e, xa, &T_2_1);
            if (err != ERR_ok) goto ex_0;
            ret_1->num = T_2_1.num;
            }
            {signal (ERR_ok);}}
            break;
            }
    case 23: 
         {CLUREF T_1_17;
        T_1_17.num = T_1_1.cell->value;
        xa.num = T_1_17.num;

  LINE(208);
            {
            {
            CLUREF T_2_1;
            err = g_selectcons(e, xa, &T_2_1);
            if (err != ERR_ok) goto ex_0;
            ret_1->num = T_2_1.num;
            }
            {signal (ERR_ok);}}
            break;
            }
    case 2: 
         {CLUREF T_1_18;
        T_1_18.num = T_1_1.cell->value;
        xa.num = T_1_18.num;

  LINE(210);
            {
            {
            CLUREF T_2_1;
            err = g_anyize(e, xa, &T_2_1);
            if (err != ERR_ok) goto ex_0;
            ret_1->num = T_2_1.num;
            }
            {signal (ERR_ok);}}
            break;
            }
    default: {

  LINE(212);
        {
        err = g_envOPerror(e, STR_g_137expr_072_040unexpected_040tag);
        if (err != ERR_ok) goto ex_0;
        }
    }
    }
    }

  LINE(214);
    {
    {
    CLUREF T_1_1;
    err = sequenceOPnew(&T_1_1);
    if (err != ERR_ok) goto ex_0;
    ret_1->num = T_1_1.num;
    }
    {signal (ERR_ok);}}
    goto end_0;
    ex_0:
        {
            if (err == ERR_failure) {signal(ERR_failure);}
            elist[0] = _pclu_erstr(err);
            {signal(ERR_failure);}
        }
    end_0: elist[0].str = no_return_values_STRING;
        {signal(ERR_failure);}
    }

/**** END PROCEDURE g_expr1 ****/


extern errcode g_idn();
extern errcode g_apply();
extern errcode g_clusterop();
extern errcode g_term_typespec();
extern errcode g_const_expr();
CLUREF STR_g_137expr2_072_040real_040constant_040unexpected;
CLUREF STR_g_137expr2_072_040char_040constant_040unexpected;
CLUREF STR_g_137expr2_072_040non_055terminal_040tag;
static int g_expr2_own_init = 0;

/**** BEGIN PROCEDURE g_expr2 ****/

errcode g_expr2(e, exp)
CLUREF e;
CLUREF exp;
    {
    errcode err;
    errcode ecode2;
    CLUREF id;
    CLUREF xa;
        if (g_expr2_own_init == 0) {
        stringOPcons("g_expr2: real constant unexpected", CLU_1, CLU_33, &STR_g_137expr2_072_040real_040constant_040unexpected);
        stringOPcons("g_expr2: char constant unexpected", CLU_1, CLU_33, &STR_g_137expr2_072_040char_040constant_040unexpected);
        stringOPcons("g_expr2: non-terminal tag", CLU_1, CLU_25, &STR_g_137expr2_072_040non_055terminal_040tag);
        g_expr2_own_init = 1;
    }
    enter_proc(219);

  LINE(220);
    {
    if (false == true) {
        {
        err = expr_print(exp, CLU_2);
        if (err != ERR_ok) goto ex_0;
        }
        }
        }/* end if */

  LINE(221);
    {
    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 13: 
         {CLUREF T_1_2;
        T_1_2.num = T_1_1.cell->value;
        id.num = T_1_2.num;

  LINE(223);
            {
            err = g_idn(e, id);
            if (err != ERR_ok) goto ex_0;
            }
            break;
            }
    case 3: 
         {CLUREF T_1_3;
        T_1_3.num = T_1_1.cell->value;
        xa.num = T_1_3.num;

  LINE(225);
            {
            err = g_apply(e, xa);
            if (err != ERR_ok) goto ex_0;
            }
            break;
            }
    case 20: 
         {CLUREF T_1_4;
        T_1_4.num = T_1_1.cell->value;
        xa.num = T_1_4.num;

  LINE(227);
            {
            err = g_clusterop(e, xa);
            if (err != ERR_ok) goto ex_0;
            }
            break;
            }
    case 25: 
         {CLUREF T_1_5;
        T_1_5.num = T_1_1.cell->value;
        xa.num = T_1_5.num;

  LINE(229);
            {
            err = g_term_typespec(e, xa);
            if (err != ERR_ok) goto ex_0;
            }
            break;
            }
    case 19: 
    case 5: 
    case 15: 
    case 24: 
         {

  LINE(231);
            {
            err = g_const_expr(e, exp);
            if (err != ERR_ok) goto ex_0;
            }
            break;
            }
    case 21: 
         {

  LINE(233);
            {
            err = g_envOPerror(e, STR_g_137expr2_072_040real_040constant_040unexpected);
            if (err != ERR_ok) goto ex_0;
            }
            break;
            }
    case 7: 
         {

  LINE(235);
            {
            err = g_envOPerror(e, STR_g_137expr2_072_040char_040constant_040unexpected);
            if (err != ERR_ok) goto ex_0;
            }
            break;
            }
    default: {

  LINE(237);
        {
        err = g_envOPerror(e, STR_g_137expr2_072_040non_055terminal_040tag);
        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_expr2 ****/


extern errcode g_idn_no_trailer();
extern errcode g_int_const();
extern errcode g_bool_const();
extern errcode g_string_name();
CLUREF STR_g_137expr_137arg_072_040unexpected_040tag_040apply;
CLUREF STR_g_137expr_137arg_072_040unexpected_040tag_040op;
CLUREF STR_g_137expr_137arg_072_040unexpected_040tag_040type_137;
CLUREF STR_g_137expr_137arg_072_040non_055terminal_040tag;
static int g_expr_arg_own_init = 0;

/**** BEGIN PROCEDURE g_expr_arg ****/

errcode g_expr_arg(e, exp)
CLUREF e;
CLUREF exp;
    {
    errcode err;
    errcode ecode2;
    CLUREF id;
    CLUREF i;
    CLUREF b;
    CLUREF s;
    CLUREF xa;
        if (g_expr_arg_own_init == 0) {
        stringOPcons("g_expr_arg: unexpected tag apply", CLU_1, CLU_32, &STR_g_137expr_137arg_072_040unexpected_040tag_040apply);
        stringOPcons("g_expr_arg: unexpected tag op", CLU_1, CLU_29, &STR_g_137expr_137arg_072_040unexpected_040tag_040op);
        stringOPcons("g_expr_arg: unexpected tag type_", CLU_1, CLU_32, &STR_g_137expr_137arg_072_040unexpected_040tag_040type_137);
        stringOPcons("g_expr_arg: non-terminal tag", CLU_1, CLU_28, &STR_g_137expr_137arg_072_040non_055terminal_040tag);
        g_expr_arg_own_init = 1;
    }
    enter_proc(248);

  LINE(249);
    {
    if (false == true) {
        {
        err = expr_print(exp, CLU_2);
        if (err != ERR_ok) goto ex_0;
        }
        }
        }/* end if */

  LINE(250);
    {
    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 13: 
         {CLUREF T_1_2;
        T_1_2.num = T_1_1.cell->value;
        id.num = T_1_2.num;

  LINE(252);
            {
            err = g_idn_no_trailer(e, id);
            if (err != ERR_ok) goto ex_0;
            }
            break;
            }
    case 15: 
         {CLUREF T_1_3;
        T_1_3.num = T_1_1.cell->value;
        i.num = T_1_3.num;

  LINE(254);
            {
            err = g_int_const(e, i);
            if (err != ERR_ok) goto ex_0;
            }
            break;
            }
    case 5: 
         {CLUREF T_1_4;
        T_1_4.num = T_1_1.cell->value;
        b.num = T_1_4.num;

  LINE(256);
            {
            err = g_bool_const(e, b);
            if (err != ERR_ok) goto ex_0;
            }
            break;
            }
    case 24: 
         {CLUREF T_1_5;
        T_1_5.num = T_1_1.cell->value;
        s.num = T_1_5.num;

  LINE(258);
            {
            err = g_string_name(e, s);
            if (err != ERR_ok) goto ex_0;
            }
            break;
            }
    case 19: 
         {

  LINE(260);
            {
            err = g_int_const(e, CLU_0);
            if (err != ERR_ok) goto ex_0;
            }
            break;
            }
    case 21: 
    case 7: 
         {

  LINE(262);
            {
            err = g_const_expr(e, exp);
            if (err != ERR_ok) goto ex_0;
            }
            break;
            }
    case 3: 
         {CLUREF T_1_6;
        T_1_6.num = T_1_1.cell->value;
        xa.num = T_1_6.num;

  LINE(264);
            {
            err = g_envOPerror(e, STR_g_137expr_137arg_072_040unexpected_040tag_040apply);
            if (err != ERR_ok) goto ex_0;
            }
            break;
            }
    case 20: 
         {CLUREF T_1_7;
        T_1_7.num = T_1_1.cell->value;
        xa.num = T_1_7.num;

  LINE(266);
            {
            err = g_envOPerror(e, STR_g_137expr_137arg_072_040unexpected_040tag_040op);
            if (err != ERR_ok) goto ex_0;
            }
            break;
            }
    case 25: 
         {CLUREF T_1_8;
        T_1_8.num = T_1_1.cell->value;
        xa.num = T_1_8.num;

  LINE(268);
            {
            err = g_envOPerror(e, STR_g_137expr_137arg_072_040unexpected_040tag_040type_137);
            if (err != ERR_ok) goto ex_0;
            }
            break;
            }
    default: {

  LINE(270);
        {
        err = g_envOPerror(e, STR_g_137expr_137arg_072_040non_055terminal_040tag);
        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_expr_arg ****/



/**** BEGIN PROCEDURE g_expr3 ****/

errcode g_expr3(e, exp)
CLUREF e;
CLUREF exp;
    {
    errcode err;
    errcode ecode2;
    CLUREF xa;
    enter_proc(278);

  LINE(279);
    {
    if (false == true) {
        {
        err = expr_print(exp, CLU_2);
        if (err != ERR_ok) goto ex_0;
        }
        }
        }/* end if */

  LINE(280);
    {
    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 20: 
         {CLUREF T_1_2;
        T_1_2.num = T_1_1.cell->value;
        xa.num = T_1_2.num;
            break;
            }
    default: {
    }
    }
    }
    goto end_0;
    ex_0:
        {
            if (err == ERR_failure) {signal(ERR_failure);}
            elist[0] = _pclu_erstr(err);
            {signal(ERR_failure);}
        }
    end_0: {signal(ERR_ok);}
    }

/**** END PROCEDURE g_expr3 ****/


extern errcode g_name_typespec();
extern errcode g_const_expr_embed();
extern errcode idnOPget_str();
CLUREF STR_g_137expr4_040_050parm_040tables_051_072_040actual_040not_040a_040type_137_040expr;
static int g_expr4_own_init = 0;

/**** BEGIN PROCEDURE g_expr4 ****/

errcode g_expr4(e, exp)
CLUREF e;
CLUREF exp;
    {
    errcode err;
    errcode ecode2;
    CLUREF ty;
    CLUREF i;
        if (g_expr4_own_init == 0) {
        stringOPcons("g_expr4 (parm tables): actual not a type_ expr", CLU_1, CLU_46, &STR_g_137expr4_040_050parm_040tables_051_072_040actual_040not_040a_040type_137_040expr);
        g_expr4_own_init = 1;
    }
    enter_proc(291);

  LINE(292);
    {
    if (false == true) {
        {
        err = expr_print(exp, CLU_2);
        if (err != ERR_ok) goto ex_0;
        }
        }
        }/* end if */

  LINE(293);
    {
    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 25: 
         {CLUREF T_1_2;
        T_1_2.num = T_1_1.cell->value;
        ty.num = T_1_2.num;

  LINE(295);
            {
            err = g_name_typespec(e, ty);
            if (err != ERR_ok) goto ex_0;
            }
            break;
            }
    case 19: 
    case 5: 
    case 7: 
    case 15: 
    case 21: 
    case 24: 
         {

  LINE(297);
            {
            err = g_const_expr_embed(e, exp);
            if (err != ERR_ok) goto ex_0;
            }
            break;
            }
    case 13: 
         {CLUREF T_1_3;
        T_1_3.num = T_1_1.cell->value;
        i.num = T_1_3.num;

  LINE(299);
            {
            CLUREF T_2_1;
            err = idnOPget_str(i, &T_2_1);
            if (err != ERR_ok) goto ex_0;
            err = g_envOPputs(e, T_2_1);
            if (err != ERR_ok) goto ex_0;
            }
            break;
            }
    default: {

  LINE(301);
        {
        CLUREF T_2_1;
        CLUREF T_2_2;
        T_2_1.num = 401;
        err = compiler_logit(T_2_1, STR_g_137expr4_040_050parm_040tables_051_072_040actual_040not_040a_040type_137_040expr, &T_2_2);
        if (err != ERR_ok) goto ex_0;
        }

  LINE(302);
        {
        err = expr_print(exp, CLU_4);
        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_expr4 ****/


extern errcode s_name_typespec();
extern errcode s_const_expr_embed();
CLUREF STR_WRONG;
static int s_expr4_own_init = 0;

/**** BEGIN PROCEDURE s_expr4 ****/

errcode s_expr4(exp, ret_1)
CLUREF exp;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
    CLUREF ty;
    CLUREF i;
        if (s_expr4_own_init == 0) {
        stringOPcons("g_expr4 (parm tables): actual not a type_ expr", CLU_1, CLU_46, &STR_g_137expr4_040_050parm_040tables_051_072_040actual_040not_040a_040type_137_040expr);
        stringOPcons("WRONG", CLU_1, CLU_5, &STR_WRONG);
        s_expr4_own_init = 1;
    }
    enter_proc(309);

  LINE(310);
    {
    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 25: 
         {CLUREF T_1_2;
        T_1_2.num = T_1_1.cell->value;
        ty.num = T_1_2.num;

  LINE(312);
            {
            {
            CLUREF T_2_1;
            err = s_name_typespec(ty, &T_2_1);
            if (err != ERR_ok) goto ex_0;
            ret_1->num = T_2_1.num;
            }
            {signal (ERR_ok);}}
            break;
            }
    case 19: 
    case 5: 
    case 7: 
    case 15: 
    case 21: 
    case 24: 
         {

  LINE(314);
            {
            {
            CLUREF T_2_1;
            err = s_const_expr_embed(exp, &T_2_1);
            if (err != ERR_ok) goto ex_0;
            ret_1->num = T_2_1.num;
            }
            {signal (ERR_ok);}}
            break;
            }
    case 13: 
         {CLUREF T_1_3;
        T_1_3.num = T_1_1.cell->value;
        i.num = T_1_3.num;

  LINE(316);
            {
            {
            CLUREF T_2_1;
            err = idnOPget_str(i, &T_2_1);
            if (err != ERR_ok) goto ex_0;
            ret_1->num = T_2_1.num;
            }
            {signal (ERR_ok);}}
            break;
            }
    default: {

  LINE(318);
        {
        CLUREF T_2_1;
        CLUREF T_2_2;
        T_2_1.num = 402;
        err = compiler_logit(T_2_1, STR_g_137expr4_040_050parm_040tables_051_072_040actual_040not_040a_040type_137_040expr, &T_2_2);
        if (err != ERR_ok) goto ex_0;
        }

  LINE(319);
        {
        err = expr_print(exp, CLU_4);
        if (err != ERR_ok) goto ex_0;
        }

  LINE(320);
        {
        {
        ret_1->str = STR_WRONG.str;
        }
        {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 s_expr4 ****/


extern errcode g_ref_name_typespec();
CLUREF STR_g_137expr5_040_050parm_040tables_051_072_040actual_040not_040a_040type_137_040expr;
static int g_expr5_own_init = 0;

/**** BEGIN PROCEDURE g_expr5 ****/

errcode g_expr5(e, exp)
CLUREF e;
CLUREF exp;
    {
    errcode err;
    errcode ecode2;
    CLUREF ty;
    CLUREF i;
        if (g_expr5_own_init == 0) {
        stringOPcons("g_expr5 (parm tables): actual not a type_ expr", CLU_1, CLU_46, &STR_g_137expr5_040_050parm_040tables_051_072_040actual_040not_040a_040type_137_040expr);
        g_expr5_own_init = 1;
    }
    enter_proc(327);

  LINE(328);
    {
    if (false == true) {
        {
        err = expr_print(exp, CLU_2);
        if (err != ERR_ok) goto ex_0;
        }
        }
        }/* end if */

  LINE(329);
    {
    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 25: 
         {CLUREF T_1_2;
        T_1_2.num = T_1_1.cell->value;
        ty.num = T_1_2.num;

  LINE(332);
            {
            err = g_ref_name_typespec(e, ty);
            if (err != ERR_ok) goto ex_0;
            }
            break;
            }
    case 19: 
    case 5: 
    case 7: 
    case 15: 
    case 21: 
    case 24: 
         {

  LINE(335);
            {
            err = g_const_expr_embed(e, exp);
            if (err != ERR_ok) goto ex_0;
            }
            break;
            }
    case 13: 
         {CLUREF T_1_3;
        T_1_3.num = T_1_1.cell->value;
        i.num = T_1_3.num;

  LINE(338);
            {
            CLUREF T_2_1;
            err = idnOPget_str(i, &T_2_1);
            if (err != ERR_ok) goto ex_0;
            err = g_envOPputs(e, T_2_1);
            if (err != ERR_ok) goto ex_0;
            }
            break;
            }
    default: {

  LINE(340);
        {
        CLUREF T_2_1;
        CLUREF T_2_2;
        T_2_1.num = 403;
        err = compiler_logit(T_2_1, STR_g_137expr5_040_050parm_040tables_051_072_040actual_040not_040a_040type_137_040expr, &T_2_2);
        if (err != ERR_ok) goto ex_0;
        }

  LINE(341);
        {
        err = expr_print(exp, CLU_5);
        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_expr5 ****/


extern errcode s_ref_name_typespec();
CLUREF STR_s_137expr5_040_050parm_040tables_051_072_040actual_040not_040a_040type_137_040expr;
static int s_expr5_own_init = 0;

/**** BEGIN PROCEDURE s_expr5 ****/

errcode s_expr5(exp, ret_1)
CLUREF exp;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
    CLUREF ty;
    CLUREF i;
        if (s_expr5_own_init == 0) {
        stringOPcons("s_expr5 (parm tables): actual not a type_ expr", CLU_1, CLU_46, &STR_s_137expr5_040_050parm_040tables_051_072_040actual_040not_040a_040type_137_040expr);
        stringOPcons("WRONG", CLU_1, CLU_5, &STR_WRONG);
        s_expr5_own_init = 1;
    }
    enter_proc(345);

  LINE(346);
    {
    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 25: 
         {CLUREF T_1_2;
        T_1_2.num = T_1_1.cell->value;
        ty.num = T_1_2.num;

  LINE(349);
            {
            {
            CLUREF T_2_1;
            err = s_ref_name_typespec(ty, &T_2_1);
            if (err != ERR_ok) goto ex_0;
            ret_1->num = T_2_1.num;
            }
            {signal (ERR_ok);}}
            break;
            }
    case 19: 
    case 5: 
    case 7: 
    case 15: 
    case 21: 
    case 24: 
         {

  LINE(352);
            {
            {
            CLUREF T_2_1;
            err = s_const_expr_embed(exp, &T_2_1);
            if (err != ERR_ok) goto ex_0;
            ret_1->num = T_2_1.num;
            }
            {signal (ERR_ok);}}
            break;
            }
    case 13: 
         {CLUREF T_1_3;
        T_1_3.num = T_1_1.cell->value;
        i.num = T_1_3.num;

  LINE(355);
            {
            {
            CLUREF T_2_1;
            err = idnOPget_str(i, &T_2_1);
            if (err != ERR_ok) goto ex_0;
            ret_1->num = T_2_1.num;
            }
            {signal (ERR_ok);}}
            break;
            }
    default: {

  LINE(357);
        {
        CLUREF T_2_1;
        CLUREF T_2_2;
        T_2_1.num = 404;
        err = compiler_logit(T_2_1, STR_s_137expr5_040_050parm_040tables_051_072_040actual_040not_040a_040type_137_040expr, &T_2_2);
        if (err != ERR_ok) goto ex_0;
        }

  LINE(358);
        {
        err = expr_print(exp, CLU_5);
        if (err != ERR_ok) goto ex_0;
        }

  LINE(359);
        {
        {
        ret_1->str = STR_WRONG.str;
        }
        {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 s_expr5 ****/


extern errcode g_commalist();
extern struct REQS *sequence_of_t_reqs;
extern struct OPS *string_ops;
extern OWN_req sequence_ownreqs;
extern struct OPS *sequence_ops;
struct OPS *sequence_of_string_table;
struct OPS *sequence_of_string_ops;
struct OPS *sequence_of_string_ops;
OWNPTR sequence_of_string_owns;
extern struct REQS *g_commalist_of_ltype_reqs;
extern struct OPS *sequence_of_string_ops;
extern struct REQS *g_commalist_of_elt_reqs;
extern OWN_req g_commalist_ownreqs;
struct OPS *g_commalist_of_sequence_of_string_table;
struct OPS *g_commalist_of_string_table;
struct OPS *g_commalist_of_sequence_of_string_string_ops;
struct OPS *g_commalist_of_sequence_of_string_string_ops;
OWNPTR g_commalist_of_sequence_of_string_string_owns;
static int g_namelist_own_init = 0;

/**** BEGIN PROCEDURE g_namelist ****/

errcode g_namelist(e, nlist)
CLUREF e;
CLUREF nlist;
    {
    errcode err;
    errcode ecode2;
        if (g_namelist_own_init == 0) {
        add_parm_info_type(0, string_ops, sequence_of_t_reqs);
        find_type_instance(sequence_ops, 1, &sequence_ownreqs, &(sequence_of_string_ops));
        add_parm_info_type(0, sequence_of_string_ops, g_commalist_of_ltype_reqs);
        add_parm_info_type(1, string_ops, g_commalist_of_elt_reqs);
        find_prociter_instance(g_commalist, 2, &g_commalist_ownreqs, &(g_commalist_of_sequence_of_string_string_ops));
        g_namelist_own_init = 1;
    }
    enter_proc(365);

  LINE(369);
    {
    CLUREF T_1_1;
    err = proctypeOPnew(CLU_0, &T_1_1.proc);
    if (err!= ERR_ok) goto ex_0;
    T_1_1.proc->proc = g_envOPputs;
    generic_CLU_proc.type_owns = 0;
    generic_CLU_proc.op_owns = (int)g_commalist_of_sequence_of_string_string_ops->op_owns;
    generic_CLU_proc.proc = g_commalist;
    CUR_PROC_VAR.proc = &generic_CLU_proc;
    err = g_commalist(e, nlist, T_1_1);
    if (err != ERR_ok) goto ex_0;
    }
    goto end_0;
    ex_0:
        {
            if (err == ERR_failure) {signal(ERR_failure);}
            elist[0] = _pclu_erstr(err);
            {signal(ERR_failure);}
        }
    end_0: {signal(ERR_ok);}
    }

/**** END PROCEDURE g_namelist ****/


extern struct OPS *idn_ops;
struct OPS *sequence_of_idn_table;
struct OPS *sequence_of_idn_ops;
struct OPS *sequence_of_idn_ops;
OWNPTR sequence_of_idn_owns;
extern struct OPS *sequence_of_idn_ops;
struct OPS *g_commalist_of_sequence_of_idn_table;
struct OPS *g_commalist_of_idn_table;
struct OPS *g_commalist_of_sequence_of_idn_idn_ops;
struct OPS *g_commalist_of_sequence_of_idn_idn_ops;
OWNPTR g_commalist_of_sequence_of_idn_idn_owns;
static int g_idnlist_own_init = 0;

/**** BEGIN PROCEDURE g_idnlist ****/

errcode g_idnlist(e, ilist)
CLUREF e;
CLUREF ilist;
    {
    errcode err;
    errcode ecode2;
        if (g_idnlist_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, sequence_of_idn_ops, g_commalist_of_ltype_reqs);
        add_parm_info_type(1, idn_ops, g_commalist_of_elt_reqs);
        find_prociter_instance(g_commalist, 2, &g_commalist_ownreqs, &(g_commalist_of_sequence_of_idn_idn_ops));
        g_idnlist_own_init = 1;
    }
    enter_proc(372);

  LINE(376);
    {
    CLUREF T_1_1;
    err = proctypeOPnew(CLU_0, &T_1_1.proc);
    if (err!= ERR_ok) goto ex_0;
    T_1_1.proc->type_owns = 0;
    T_1_1.proc->op_owns = 0;
    T_1_1.proc->proc = g_idn;
    generic_CLU_proc.type_owns = 0;
    generic_CLU_proc.op_owns = (int)g_commalist_of_sequence_of_idn_idn_ops->op_owns;
    generic_CLU_proc.proc = g_commalist;
    CUR_PROC_VAR.proc = &generic_CLU_proc;
    err = g_commalist(e, ilist, T_1_1);
    if (err != ERR_ok) goto ex_0;
    }
    goto end_0;
    ex_0:
        {
            if (err == ERR_failure) {signal(ERR_failure);}
            elist[0] = _pclu_erstr(err);
            {signal(ERR_failure);}
        }
    end_0: {signal(ERR_ok);}
    }

/**** END PROCEDURE g_idnlist ****/


extern errcode g_idnlit();
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 *g_commalist_of_sequence_of_idn_table;
struct OPS *g_commalist_of_idn_table;
struct OPS *g_commalist_of_sequence_of_idn_idn_ops;
struct OPS *g_commalist_of_sequence_of_idn_idn_ops;
OWNPTR g_commalist_of_sequence_of_idn_idn_owns;
static int g_idnlitlist_own_init = 0;

/**** BEGIN PROCEDURE g_idnlitlist ****/

errcode g_idnlitlist(e, ilist)
CLUREF e;
CLUREF ilist;
    {
    errcode err;
    errcode ecode2;
        if (g_idnlitlist_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, sequence_of_idn_ops, g_commalist_of_ltype_reqs);
        add_parm_info_type(1, idn_ops, g_commalist_of_elt_reqs);
        find_prociter_instance(g_commalist, 2, &g_commalist_ownreqs, &(g_commalist_of_sequence_of_idn_idn_ops));
        g_idnlitlist_own_init = 1;
    }
    enter_proc(379);

  LINE(383);
    {
    CLUREF T_1_1;
    err = proctypeOPnew(CLU_0, &T_1_1.proc);
    if (err!= ERR_ok) goto ex_0;
    T_1_1.proc->type_owns = 0;
    T_1_1.proc->op_owns = 0;
    T_1_1.proc->proc = g_idnlit;
    generic_CLU_proc.type_owns = 0;
    generic_CLU_proc.op_owns = (int)g_commalist_of_sequence_of_idn_idn_ops->op_owns;
    generic_CLU_proc.proc = g_commalist;
    CUR_PROC_VAR.proc = &generic_CLU_proc;
    err = g_commalist(e, ilist, T_1_1);
    if (err != ERR_ok) goto ex_0;
    }
    goto end_0;
    ex_0:
        {
            if (err == ERR_failure) {signal(ERR_failure);}
            elist[0] = _pclu_erstr(err);
            {signal(ERR_failure);}
        }
    end_0: {signal(ERR_ok);}
    }

/**** END PROCEDURE g_idnlitlist ****/



/**** BEGIN PROCEDURE g_inv0 ****/

errcode g_inv0(e, exp)
CLUREF e;
CLUREF exp;
    {
    errcode err;
    errcode ecode2;
    CLUREF cop;
    enter_proc(386);

  LINE(387);
    {
    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: 
         {
            break;
            }
    case 20: 
         {CLUREF T_1_2;
        T_1_2.num = T_1_1.cell->value;
        cop.num = T_1_2.num;

  LINE(390);
            {
            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 5: 
                 {

  LINE(392);
                    {
                    err = g_expr0(e, exp);
                    if (err != ERR_ok) goto ex_0;
                    }
                    break;
                    }
            case 2: 
                 {

  LINE(394);
                    {
                    err = g_expr0(e, exp);
                    if (err != ERR_ok) goto ex_0;
                    }
                    break;
                    }
            default: {
            }
            }
            }
            break;
            }
    default: {

  LINE(398);
        {
        err = g_expr0(e, exp);
        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_inv0 ****/


extern errcode idnOPcreate();
extern errcode oneofOPmake_9();
extern errcode exprOPcreate();
extern errcode oneofOPmake_13();
extern errcode g_envOPputl();
extern errcode s_owns_prefix_exprlist();
extern errcode sequenceOPindexes();
extern errcode g_expr4();
extern errcode sequenceOPfetch();
extern errcode g_expr2();
extern errcode charOPequal();
extern errcode stringOPfetch();
extern errcode stringOPrest();
extern errcode seq_extend();
extern errcode tvOPidn_next();
extern errcode s_owns_prefix();
extern errcode intOPadd();
extern errcode s_owns_prefix_fieldlist();
extern errcode intOPfrom_to();
extern errcode g_ops_index();
extern errcode make_sel_name();
extern errcode intOPunparse();
extern struct REQS *seq_extend_of_t_reqs;
extern struct OPS *expr_ops;
extern OWN_req seq_extend_ownreqs;
struct OPS *seq_extend_of_expr_table;
struct OPS *seq_extend_of_expr_ops;
struct OPS *seq_extend_of_expr_ops;
OWNPTR seq_extend_of_expr_owns;
CLUREF STR_generic_137CLU_137proc;
CLUREF STR_generic_137CLU_137proc_056type_137owns_040_075_0400_073;
CLUREF STR_generic_137CLU_137proc_056op_137owns_040_075_040;
CLUREF STR__050int_051;
CLUREF STR__137of_137;
CLUREF STR__137;
CLUREF STR_ops_055_076op_137owns_073;
CLUREF STR_0_073;
CLUREF STR__040_075_040;
CLUREF STR__073;
CLUREF STR__137ops_055_076;
CLUREF STR__056fcn_073;
CLUREF STR_g_137inv1_072_040can_047t_040find_040du;
CLUREF STR_generic_137CLU_137proc_056type_137owns_040_075_040;
CLUREF STR_ops_055_076type_137owns_073;
CLUREF STR__137op_137;
CLUREF STR__137ops_055_076entry_133;
CLUREF STR__135_056fcn_055_076op_137owns_073;
static int g_inv1_own_init = 0;

/**** BEGIN PROCEDURE g_inv1 ****/

errcode g_inv1(e, exp, ret_1)
CLUREF e;
CLUREF exp;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
    CLUREF ct;
    CLUREF parm_count;
    CLUREF parm_list;
    CLUREF gen;
    CLUREF newidn;
    CLUREF proc_id;
    CLUREF ind;
    CLUREF cop;
    CLUREF tparm_list;
    CLUREF flist;
    CLUREF type_parms_ct;
    CLUREF cop_name;
    CLUREF xa;
    CLUREF i;
    CLUREF at;
    CLUREF field_count;
    CLUREF op_name;
    CLUREF ops_index;
    CLUREF sel_name;
        if (g_inv1_own_init == 0) {
        add_parm_info_type(0, expr_ops, seq_extend_of_t_reqs);
        find_prociter_instance(seq_extend, 1, &seq_extend_ownreqs, &(seq_extend_of_expr_ops));
        stringOPcons("specifications for ", CLU_1, CLU_19, &STR_specifications_040for_040);
        stringOPcons(" missing.", CLU_1, CLU_9, &STR__040missing_056);
        stringOPcons("generic_CLU_proc", CLU_1, CLU_16, &STR_generic_137CLU_137proc);
        stringOPcons("generic_CLU_proc.type_owns = 0;", CLU_1, CLU_31, &STR_generic_137CLU_137proc_056type_137owns_040_075_0400_073);
        stringOPcons("generic_CLU_proc.op_owns = ", CLU_1, CLU_27, &STR_generic_137CLU_137proc_056op_137owns_040_075_040);
        stringOPcons("(int)", CLU_1, CLU_5, &STR__050int_051);
        stringOPcons("_of_", CLU_1, CLU_4, &STR__137of_137);
        stringOPcons("_", CLU_1, CLU_1, &STR__137);
        stringOPcons("ops->op_owns;", CLU_1, CLU_13, &STR_ops_055_076op_137owns_073);
        stringOPcons("0;", CLU_1, CLU_2, &STR_0_073);
        stringOPcons(" = ", CLU_1, CLU_3, &STR__040_075_040);
        stringOPcons(";", CLU_1, CLU_1, &STR__073);
        stringOPcons("_ops->", CLU_1, CLU_6, &STR__137ops_055_076);
        stringOPcons(".fcn;", CLU_1, CLU_5, &STR__056fcn_073);
        stringOPcons("g_inv1: can\'t find du", CLU_1, CLU_21, &STR_g_137inv1_072_040can_047t_040find_040du);
        stringOPcons("generic_CLU_proc.type_owns = ", CLU_1, CLU_29, &STR_generic_137CLU_137proc_056type_137owns_040_075_040);
        stringOPcons("ops->type_owns;", CLU_1, CLU_15, &STR_ops_055_076type_137owns_073);
        stringOPcons("_op_", CLU_1, CLU_4, &STR__137op_137);
        stringOPcons("_ops->entry[", CLU_1, CLU_12, &STR__137ops_055_076entry_133);
        stringOPcons("].fcn->op_owns;", CLU_1, CLU_15, &STR__135_056fcn_055_076op_137owns_073);
        g_inv1_own_init = 1;
    }
    enter_proc(402);

  LINE(405);
    {
    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(407);
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            err = specs_exist(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(408);
                {
                CLUREF T_3_1;
                CLUREF T_3_2;
                CLUREF T_3_3;
                CLUREF T_3_4;
                T_3_1.num = ct.vec->data[0];
                err = duOPget_common(T_3_1, &T_3_2);
                if (err != ERR_ok) goto ex_0;
                err = stringOPconcat(STR_specifications_040for_040, T_3_2, &T_3_3);
                if (err != ERR_ok) goto ex_0;
                err = stringOPconcat(T_3_3, STR__040missing_056, &T_3_4);
                if (err != ERR_ok) goto ex_0;
                err = g_envOPerror(e, T_3_4);
                if (err != ERR_ok) goto ex_0;
                }

  LINE(410);
                {
                {signal (ERR_specs_missing);}}
                }
                }/* end if */

  LINE(412);
            {
                {parm_count.num = 0;
                }
                }

  LINE(413);
            {
                {CLUREF T_2_1;
                err = sequenceOPnew(&T_2_1);
                if (err != ERR_ok) goto ex_0;
                parm_list.num = T_2_1.num;
                }
                }

  LINE(415);
            {
            CLUREF T_2_1;
            T_2_1.num = ct.vec->data[1];
            parm_list.num = T_2_1.num;
            }

  LINE(416);
            {
            CLUREF T_2_1;
            T_2_1.num = ct.vec->data[0];
            gen.num = T_2_1.num;
            }

  LINE(417);
            {
            CLUREF T_2_1;
            T_2_1.num = parm_list.vec->size;
            parm_count.num = T_2_1.num;
            }

  LINE(418);
            {
                {CLUREF T_2_1;
                CLUREF T_2_2;
                CLUREF T_2_3;
                err = exprOPget_typespec(exp, &T_2_1);
                if (err != ERR_ok) goto ex_0;
                CellAlloc(9, T_2_1.num, T_2_2);
                err = idnOPcreate(STR_generic_137CLU_137proc, T_2_2, &T_2_3);
                if (err != ERR_ok) goto ex_0;
                newidn.num = T_2_3.num;
                }
                }

  LINE(419);
            {
                {CLUREF T_2_1;
                CLUREF T_2_2;
                CLUREF T_2_3;
                CellAlloc(13, newidn.num, T_2_1);
                err = exprOPget_typespec(exp, &T_2_2);
                if (err != ERR_ok) goto ex_0;
                err = exprOPcreate(T_2_1, T_2_2, &T_2_3);
                if (err != ERR_ok) goto ex_0;
                proc_id.num = T_2_3.num;
                }
                }

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

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

  LINE(424);
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            CLUREF T_2_3;
            T_2_1.num = parm_list.vec->size;
            T_2_2.num = (T_2_1.num == 0)? true : false;
            T_2_3.num = T_2_2.num ^ 1;
            if (T_2_3.num == true) {

  LINE(426);
                {
                CLUREF T_3_1;
                CLUREF T_3_2;
                err = s_owns_prefix_exprlist(parm_list, &T_3_1);
                if (err != ERR_ok) goto ex_0;
                err = stringOPconcat(STR__050int_051, T_3_1, &T_3_2);
                if (err != ERR_ok) goto ex_0;
                err = g_envOPputs(e, T_3_2);
                if (err != ERR_ok) goto ex_0;
                }

  LINE(427);
                {
                CLUREF T_3_1;
                CLUREF T_3_2;
                err = duOPget_common(gen, &T_3_1);
                if (err != ERR_ok) goto ex_0;
                err = stringOPconcat(T_3_1, STR__137of_137, &T_3_2);
                if (err != ERR_ok) goto ex_0;
                err = g_envOPputs(e, T_3_2);
                if (err != ERR_ok) goto ex_0;
                }

  LINE(428);
                {
                CLUREF T_3_1;
                CLUREF T_3_2;
                    T_3_2.num = parm_list.vec->size; 
                    for (T_3_1.num = 1; T_3_1.num <= T_3_2.num; T_3_1.num++) {
                        ind.num = T_3_1.num;

  LINE(429);
                        {
                        CLUREF T_4_1;
                        if (ind.num < 1 || ind.num > parm_list.vec->size ) {
                            err = ERR_bounds;
                            goto ex_0;}
                        T_4_1.num = parm_list.vec->data[ind.num - 1];
                        err = g_expr4(e, T_4_1);
                        if (err != ERR_ok) goto ex_0;
                        }

  LINE(430);
                        {
                        err = g_envOPputs(e, STR__137);
                        if (err != ERR_ok) goto ex_0;
                        }
                    }
                }
                end_inline_for_1:;

  LINE(432);
                {
                err = g_envOPputl(e, STR_ops_055_076op_137owns_073);
                if (err != ERR_ok) goto ex_0;
                }
                }
            else {

  LINE(434);
                {
                err = g_envOPputl(e, STR_0_073);
                if (err != ERR_ok) goto ex_0;
                }
                }}/* end if */

  LINE(437);
            {
            err = g_expr2(e, proc_id);
            if (err != ERR_ok) goto ex_0;
            }

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

  LINE(439);
            {
            err = g_expr2(e, exp);
            if (err != ERR_ok) goto ex_0;
            }

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

  LINE(441);
            {
            {
            CLUREF T_2_1;
            err = sequenceOPfill(CLU_1, proc_id, &T_2_1);
            if (err != ERR_ok) goto ex_0;
            ret_1->num = T_2_1.num;
            }
            {signal (ERR_ok);}}
            break;
            }
    case 20: 
         {CLUREF T_1_3;
        T_1_3.num = T_1_1.cell->value;
        cop.num = T_1_3.num;

  LINE(443);
            {
                {parm_count.num = 0;
                }
                }

  LINE(444);
            {
                {CLUREF T_2_1;
                err = sequenceOPnew(&T_2_1);
                if (err != ERR_ok) goto ex_0;
                tparm_list.num = T_2_1.num;
                }
                }

  LINE(445);
            {
                {CLUREF T_2_1;
                err = sequenceOPnew(&T_2_1);
                if (err != ERR_ok) goto ex_0;
                parm_list.num = T_2_1.num;
                }
                }

  LINE(446);
            {
                {CLUREF T_2_1;
                err = sequenceOPnew(&T_2_1);
                if (err != ERR_ok) goto ex_0;
                flist.num = T_2_1.num;
                }
                }

  LINE(448);
            {
                {type_parms_ct.num = 0;
                }
                }

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

  LINE(450);
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            CLUREF T_2_3;
            err = stringOPfetch(cop_name, CLU_1, &T_2_1);
            if (err != ERR_ok) goto ex_0;
            T_2_2.ch = '%';
            T_2_3.num = (T_2_1.ch == T_2_2.ch)? true : false;
            if (T_2_3.num == true) {
                {
                CLUREF T_3_1;
                err = stringOPrest(cop_name, CLU_2, &T_3_1);
                if (err != ERR_ok) goto ex_0;
                cop_name.num = T_3_1.num;
                }
                }
                }/* end if */

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

  LINE(453);
                    {
                    CLUREF T_3_1;
                    T_3_1.num = ct.vec->data[0];
                    gen.num = T_3_1.num;
                    }

  LINE(454);
                    {
                    CLUREF T_3_1;
                    T_3_1.num = ct.vec->data[1];
                    tparm_list.num = T_3_1.num;
                    }

  LINE(455);
                    {
                    CLUREF T_3_1;
                    CLUREF T_3_2;
                    CLUREF T_3_3;
                    T_3_1.num = ct.vec->data[1];
                    T_3_2.num = cop.vec->data[1];
                    generic_CLU_proc.type_owns = 0;
                    generic_CLU_proc.op_owns = (int)seq_extend_of_expr_ops->op_owns;
                    generic_CLU_proc.proc = seq_extend;
                    CUR_PROC_VAR.proc = &generic_CLU_proc;
                    err = seq_extend(T_3_1, T_3_2, &T_3_3);
                    if (err != ERR_ok) goto ex_0;
                    parm_list.num = T_3_3.num;
                    }

  LINE(456);
                    {
                    CLUREF T_3_1;
                    CLUREF T_3_2;
                    T_3_1.num = ct.vec->data[1];
                    T_3_2.num = T_3_1.vec->size;
                    type_parms_ct.num = T_3_2.num;
                    }
                    break;
                    }
            case 8: 
                 {CLUREF T_2_4;
                T_2_4.num = T_2_2.cell->value;
                ct.num = T_2_4.num;

  LINE(461);
                    {
                    CLUREF T_3_1;
                    T_3_1.num = ct.vec->data[0];
                    gen.num = T_3_1.num;
                    }

  LINE(462);
                    {
                    CLUREF T_3_1;
                    T_3_1.num = ct.vec->data[1];
                    parm_list.num = T_3_1.num;
                    }

  LINE(463);
                    {
                    CLUREF T_3_1;
                    CLUREF T_3_2;
                    T_3_1.num = ct.vec->data[1];
                    T_3_2.num = T_3_1.vec->size;
                    type_parms_ct.num = T_3_2.num;
                    }
                    break;
                    }
            case 7: 
                 {CLUREF T_2_5;
                T_2_5.num = T_2_2.cell->value;
                xa.num = T_2_5.num;

  LINE(465);
                    {
                    CLUREF T_3_1;
                    T_3_1.num = xa.vec->data[0];
                    gen.num = T_3_1.num;
                    }

  LINE(466);
                    {
                    CLUREF T_3_1;
                    T_3_1.num = xa.vec->data[1];
                    flist.num = T_3_1.num;
                    }
                    break;
                    }
            case 5: 
                 {CLUREF T_2_6;
                T_2_6.num = T_2_2.cell->value;
                i.num = T_2_6.num;

  LINE(468);
                    {
                        {CLUREF T_3_1;
                        CLUREF T_3_2;
                        err = exprOPget_typespec(exp, &T_3_1);
                        if (err != ERR_ok) goto ex_0;
                        err = tvOPidn_next(T_3_1, &T_3_2);
                        if (err != ERR_ok) goto ex_0;
                        proc_id.num = T_3_2.num;
                        }
                        }

  LINE(469);
                    {
                    err = g_expr2(e, proc_id);
                    if (err != ERR_ok) goto ex_0;
                    }

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

  LINE(472);
                    {
                    CLUREF T_3_1;
                    err = s_owns_prefix(i, &T_3_1);
                    if (err != ERR_ok) goto ex_0;
                    err = g_envOPputs(e, T_3_1);
                    if (err != ERR_ok) goto ex_0;
                    }

  LINE(473);
                    {
                    err = g_idnlit(e, i);
                    if (err != ERR_ok) goto ex_0;
                    }

  LINE(474);
                    {
                    CLUREF T_3_1;
                    CLUREF T_3_2;
                    err = stringOPconcat(STR__137ops_055_076, cop_name, &T_3_1);
                    if (err != ERR_ok) goto ex_0;
                    err = stringOPconcat(T_3_1, STR__056fcn_073, &T_3_2);
                    if (err != ERR_ok) goto ex_0;
                    err = g_envOPputl(e, T_3_2);
                    if (err != ERR_ok) goto ex_0;
                    }

  LINE(475);
                    {
                    {
                    CLUREF T_3_1;
                    err = sequenceOPfill(CLU_1, proc_id, &T_3_1);
                    if (err != ERR_ok) goto ex_0;
                    ret_1->num = T_3_1.num;
                    }
                    {signal (ERR_ok);}}
                    break;
                    }
            case 2: 
                 {CLUREF T_2_7;
                T_2_7.num = T_2_2.cell->value;
                at.num = T_2_7.num;

  LINE(482);
                    {
                    {
                    CLUREF T_3_1;
                    err = g_expr1(e, exp, &T_3_1);
                    if (err != ERR_ok) goto ex_0;
                    ret_1->num = T_3_1.num;
                    }
                    {signal (ERR_ok);}}
                    break;
                    }
            default: {

  LINE(484);
                {
                CLUREF T_3_1;
                CLUREF T_3_2;
                T_3_1.num = 405;
                err = compiler_logit(T_3_1, STR_g_137inv1_072_040can_047t_040find_040du, &T_3_2);
                if (err != ERR_ok) goto ex_0;
                }

  LINE(485);
                {
                CLUREF T_3_1;
                T_3_1.num = cop.vec->data[2];
                err = typespec_print(T_3_1);
                if (err != ERR_ok) goto ex_0;
                }
            }
            }
            }

  LINE(487);
            {
                {CLUREF T_2_1;
                CLUREF T_2_2;
                CLUREF T_2_3;
                err = exprOPget_typespec(exp, &T_2_1);
                if (err != ERR_ok) goto ex_0;
                CellAlloc(9, T_2_1.num, T_2_2);
                err = idnOPcreate(STR_generic_137CLU_137proc, T_2_2, &T_2_3);
                if (err != ERR_ok) goto ex_0;
                newidn.num = T_2_3.num;
                }
                }

  LINE(488);
            {
                {CLUREF T_2_1;
                CLUREF T_2_2;
                CLUREF T_2_3;
                CellAlloc(13, newidn.num, T_2_1);
                err = exprOPget_typespec(exp, &T_2_2);
                if (err != ERR_ok) goto ex_0;
                err = exprOPcreate(T_2_1, T_2_2, &T_2_3);
                if (err != ERR_ok) goto ex_0;
                proc_id.num = T_2_3.num;
                }
                }

  LINE(489);
            {
                {field_count.num = 0;
                }
                }

  LINE(490);
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            CLUREF T_2_3;
            T_2_1.num = flist.vec->size;
            T_2_2.num = (T_2_1.num == 0)? true : false;
            T_2_3.num = T_2_2.num ^ 1;
            if (T_2_3.num == true) {
                {
                field_count.num = 1;
                }
                }
                }/* end if */

  LINE(491);
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            T_2_1.num = parm_list.vec->size;
            T_2_2.num = T_2_1.num + field_count.num;
             if ((T_2_2.num > 0 && T_2_1.num < 0 && field_count.num < 0) || 
                 (T_2_2.num < 0 && T_2_1.num > 0 && field_count.num > 0)) {
                err = ERR_overflow;
                goto ex_0;}
            parm_count.num = T_2_2.num;
            }

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

  LINE(494);
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            T_2_1.num = (type_parms_ct.num == 0)? true : false;
            T_2_2.num = T_2_1.num ^ 1;
            if (T_2_2.num == true) {

  LINE(496);
                {
                CLUREF T_3_1;
                CLUREF T_3_2;
                T_3_1.num = flist.vec->size;
                T_3_2.num = (T_3_1.num == 0)? true : false;
                if (T_3_2.num == true) {

  LINE(498);
                    {
                    CLUREF T_4_1;
                    err = s_owns_prefix_exprlist(tparm_list, &T_4_1);
                    if (err != ERR_ok) goto ex_0;
                    err = g_envOPputs(e, T_4_1);
                    if (err != ERR_ok) goto ex_0;
                    }
                    }
                else {

  LINE(500);
                    {
                    CLUREF T_4_1;
                    err = s_owns_prefix_fieldlist(flist, &T_4_1);
                    if (err != ERR_ok) goto ex_0;
                    err = g_envOPputs(e, T_4_1);
                    if (err != ERR_ok) goto ex_0;
                    }
                    }}/* end if */

  LINE(502);
                {
                CLUREF T_3_1;
                CLUREF T_3_2;
                err = duOPget_common(gen, &T_3_1);
                if (err != ERR_ok) goto ex_0;
                err = stringOPconcat(T_3_1, STR__137of_137, &T_3_2);
                if (err != ERR_ok) goto ex_0;
                err = g_envOPputs(e, T_3_2);
                if (err != ERR_ok) goto ex_0;
                }

  LINE(503);
                {
                CLUREF T_3_1;
                CLUREF T_3_2;
                    T_3_2.num = type_parms_ct.num;
                    for (T_3_1.num = 1; T_3_1.num <= T_3_2.num; T_3_1.num++) {
                        ind.num = T_3_1.num;

  LINE(504);
                        {
                        CLUREF T_4_1;
                        if (ind.num < 1 || ind.num > parm_list.vec->size ) {
                            err = ERR_bounds;
                            goto ex_0;}
                        T_4_1.num = parm_list.vec->data[ind.num - 1];
                        err = g_expr4(e, T_4_1);
                        if (err != ERR_ok) goto ex_0;
                        }

  LINE(505);
                        {
                        err = g_envOPputs(e, STR__137);
                        if (err != ERR_ok) goto ex_0;
                        }
                    }
                }
                end_inline_for_2:;

  LINE(507);
                {
                err = g_envOPputl(e, STR_ops_055_076type_137owns_073);
                if (err != ERR_ok) goto ex_0;
                }
                }
            else {

  LINE(509);
                {
                err = g_envOPputl(e, STR_0_073);
                if (err != ERR_ok) goto ex_0;
                }
                }}/* end if */

  LINE(511);
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            CLUREF T_2_3;
            T_2_1.num = parm_list.vec->size;
            T_2_2.num = (type_parms_ct.num == T_2_1.num)? true : false;
            T_2_3.num = T_2_2.num ^ 1;
            if (T_2_3.num == true) {

  LINE(513);
                {
                    {CLUREF T_3_1;
                    err = stringOPconcat(STR__137op_137, cop_name, &T_3_1);
                    if (err != ERR_ok) goto ex_0;
                    op_name.num = T_3_1.num;
                    }
                    }

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

  LINE(515);
                {
                CLUREF T_3_1;
                err = s_owns_prefix_exprlist(parm_list, &T_3_1);
                if (err != ERR_ok) goto ex_0;
                err = g_envOPputs(e, T_3_1);
                if (err != ERR_ok) goto ex_0;
                }

  LINE(516);
                {
                CLUREF T_3_1;
                CLUREF T_3_2;
                CLUREF T_3_3;
                err = duOPget_common(gen, &T_3_1);
                if (err != ERR_ok) goto ex_0;
                err = stringOPconcat(T_3_1, op_name, &T_3_2);
                if (err != ERR_ok) goto ex_0;
                err = stringOPconcat(T_3_2, STR__137of_137, &T_3_3);
                if (err != ERR_ok) goto ex_0;
                err = g_envOPputs(e, T_3_3);
                if (err != ERR_ok) goto ex_0;
                }

  LINE(517);
                {
                CLUREF T_3_1;
                CLUREF T_3_2;
                    T_3_2.num = parm_list.vec->size; 
                    for (T_3_1.num = 1; T_3_1.num <= T_3_2.num; T_3_1.num++) {
                        ind.num = T_3_1.num;

  LINE(518);
                        {
                        CLUREF T_4_1;
                        if (ind.num < 1 || ind.num > parm_list.vec->size ) {
                            err = ERR_bounds;
                            goto ex_0;}
                        T_4_1.num = parm_list.vec->data[ind.num - 1];
                        err = g_expr4(e, T_4_1);
                        if (err != ERR_ok) goto ex_0;
                        }

  LINE(519);
                        {
                        err = g_envOPputs(e, STR__137);
                        if (err != ERR_ok) goto ex_0;
                        }
                    }
                }
                end_inline_for_3:;

  LINE(521);
                {
                err = g_envOPputl(e, STR_ops_055_076op_137owns_073);
                if (err != ERR_ok) goto ex_0;
                }
                }
                }/* end if */

  LINE(523);
            {
            CLUREF T_3_1;
            CLUREF T_3_2;
            CLUREF T_3_3;
            T_3_1.num = flist.vec->size;
            T_3_2.num = (T_3_1.num == 0)? true : false;
            T_3_3.num = T_3_2.num ^ 1;
            if (T_3_3.num == true) {

  LINE(524);
                {
                    {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_1;
                    T_4_2.num = cop.vec->data[0];
                    err = g_ops_index(T_4_1, T_4_2, &T_4_3);
                    if (err != ERR_ok) goto ex_1;
                    ops_index.num = T_4_3.num;
                    }
                    }

  LINE(525);
                {
                    {CLUREF T_4_1;
                    err = make_sel_name(flist, &T_4_1);
                    if (err != ERR_ok) goto ex_1;
                    sel_name.num = T_4_1.num;
                    }
                    }

  LINE(526);
                {
                err = g_envOPputs(e, STR_generic_137CLU_137proc_056op_137owns_040_075_040);
                if (err != ERR_ok) goto ex_1;
                }

  LINE(527);
                {
                CLUREF T_4_1;
                err = s_owns_prefix_fieldlist(flist, &T_4_1);
                if (err != ERR_ok) goto ex_1;
                err = g_envOPputs(e, T_4_1);
                if (err != ERR_ok) goto ex_1;
                }

  LINE(528);
                {
                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_1;
                err = stringOPconcat(T_4_1, STR__137, &T_4_2);
                if (err != ERR_ok) goto ex_1;
                err = stringOPconcat(T_4_2, sel_name, &T_4_3);
                if (err != ERR_ok) goto ex_1;
                err = g_envOPputs(e, T_4_3);
                if (err != ERR_ok) goto ex_1;
                }

  LINE(529);
                {
                CLUREF T_4_1;
                CLUREF T_4_2;
                CLUREF T_4_3;
                err = intOPunparse(ops_index, &T_4_1);
                if (err != ERR_ok) goto ex_1;
                err = stringOPconcat(STR__137ops_055_076entry_133, T_4_1, &T_4_2);
                if (err != ERR_ok) goto ex_1;
                err = stringOPconcat(T_4_2, STR__135_056fcn_055_076op_137owns_073, &T_4_3);
                if (err != ERR_ok) goto ex_1;
                err = g_envOPputl(e, T_4_3);
                if (err != ERR_ok) goto ex_1;
                }
                }
                }/* end if */
                goto end_1;
                ex_1:
                    if ((err == ERR_not_found)) {
                    }
                    else {
                        goto ex_0;
                    }
                end_1:;

  LINE(538);
            {
            err = g_expr2(e, proc_id);
            if (err != ERR_ok) goto ex_0;
            }

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

  LINE(540);
            {
            err = g_expr2(e, exp);
            if (err != ERR_ok) goto ex_0;
            }

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

  LINE(542);
            {
            {
            CLUREF T_2_1;
            err = sequenceOPfill(CLU_1, proc_id, &T_2_1);
            if (err != ERR_ok) goto ex_0;
            ret_1->num = T_2_1.num;
            }
            {signal (ERR_ok);}}
            break;
            }
    default: {

  LINE(544);
        {
        {
        CLUREF T_2_1;
        err = g_expr1(e, exp, &T_2_1);
        if (err != ERR_ok) goto ex_0;
        ret_1->num = T_2_1.num;
        }
        {signal (ERR_ok);}}
    }
    }
    }
    goto end_0;
    ex_0:
        {
            if (err == ERR_failure) {signal(ERR_failure);}
            elist[0] = _pclu_erstr(err);
            {signal(ERR_failure);}
        }
    end_0: elist[0].str = no_return_values_STRING;
        {signal(ERR_failure);}
    }

/**** END PROCEDURE g_inv1 ****/



/**** BEGIN PROCEDURE specs_exist ****/

errcode specs_exist(ct, ret_1)
CLUREF ct;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
    CLUREF specs;
    CLUREF b;
    enter_proc(548);

  LINE(549);
    {
        {CLUREF T_1_1;
        CLUREF T_1_2;
        CLUREF T_1_3;
        T_1_1.num = ct.vec->data[0];
        err = duOPread_specs(T_1_1, &T_1_2, &T_1_3);
        if (err != ERR_ok) goto ex_0;
        specs.num = T_1_2.num;
        b.num = T_1_3.num;
        }
        }

  LINE(550);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    if (specs.cell->tag == 4) T_1_1.num = true; else T_1_1.num = false;
    T_1_2.num = T_1_1.num ^ 1;
    if (T_1_2.num == true) {

  LINE(552);
        {
        {
        ret_1->tf = true;
        }
        {signal (ERR_ok);}}
        }
    else {

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


extern errcode is_temp();
extern errcode g_err();
extern errcode idnOPget_kind();
extern errcode g_locals();
extern errcode parmOPmember();
extern errcode parmd_cluster();
CLUREF STR_CUR_137PROC_137VAR_040_075_040;
CLUREF STR_CUR_137PROC_137VAR_056proc_040_075_040_046generic_137CLU_137proc_073;
CLUREF STR__050;
CLUREF STR__055_076proc_050;
CLUREF STR_CUR_137PROC_137VAR_056proc_040_075_040;
CLUREF STR_INV_072_040here;
CLUREF STR_CUR_137PROC_137VAR_040not_040set_072;
static int g_inv_own_init = 0;

/**** BEGIN PROCEDURE g_inv ****/

errcode g_inv(e, exp, gen_clu_proc_val)
CLUREF e;
CLUREF exp;
CLUREF gen_clu_proc_val;
    {
    errcode err;
    errcode ecode2;
    CLUREF i;
    CLUREF nm;
    CLUREF cop;
        if (g_inv_own_init == 0) {
        stringOPcons("CUR_PROC_VAR = ", CLU_1, CLU_15, &STR_CUR_137PROC_137VAR_040_075_040);
        stringOPcons(";", CLU_1, CLU_1, &STR__073);
        stringOPcons("generic_CLU_proc", CLU_1, CLU_16, &STR_generic_137CLU_137proc);
        stringOPcons("CUR_PROC_VAR.proc = &generic_CLU_proc;", CLU_1, CLU_38, &STR_CUR_137PROC_137VAR_056proc_040_075_040_046generic_137CLU_137proc_073);
        stringOPcons(" = ", CLU_1, CLU_3, &STR__040_075_040);
        stringOPcons("(", CLU_1, CLU_1, &STR__050);
        stringOPcons("->proc(", CLU_1, CLU_7, &STR__055_076proc_050);
        stringOPcons("CUR_PROC_VAR.proc = ", CLU_1, CLU_20, &STR_CUR_137PROC_137VAR_056proc_040_075_040);
        stringOPcons("INV: here", CLU_1, CLU_9, &STR_INV_072_040here);
        stringOPcons("CUR_PROC_VAR not set:", CLU_1, CLU_21, &STR_CUR_137PROC_137VAR_040not_040set_072);
        g_inv_own_init = 1;
    }
    enter_proc(558);

  LINE(560);
    {
    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 13: 
         {CLUREF T_1_2;
        T_1_2.num = T_1_1.cell->value;
        i.num = T_1_2.num;

  LINE(562);
            {
                {CLUREF T_2_1;
                err = idnOPget_str(i, &T_2_1);
                if (err != ERR_ok) goto ex_0;
                nm.num = T_2_1.num;
                }
                }

  LINE(563);
            {
            CLUREF T_2_1;
            err = is_temp(i, &T_2_1);
            if (err != ERR_ok) goto ex_0;
            if (T_2_1.num == true) {

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

  LINE(565);
                {
                err = g_idnlit(e, i);
                if (err != ERR_ok) goto ex_0;
                }

  LINE(566);
                {
                err = g_envOPputl(e, STR__073);
                if (err != ERR_ok) goto ex_0;
                }
                }
            else {
            CLUREF T_2_2;
            CLUREF T_2_3;
            err = idnOPget_str(i, &T_2_2);
            if (err != ERR_ok) goto ex_0;
            T_2_3.num = ((T_2_2.str->size != STR_generic_137CLU_137proc.str->size)? false :
                !(bcmp(T_2_2.str->data, STR_generic_137CLU_137proc.str->data, T_2_2.str->size)));
            if (T_2_3.num == true) {

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

  LINE(569);
                {
                err = g_err(e);
                if (err != ERR_ok) goto ex_0;
                }

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

  LINE(571);
                {
                err = g_expr2(e, gen_clu_proc_val);
                if (err != ERR_ok) goto ex_0;
                }

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

  LINE(573);
                {
                {signal (ERR_ok);}}
                }
            else {
            CLUREF T_2_4;
            CLUREF T_2_5;
            err = idnOPget_kind(i, &T_2_4);
            if (err != ERR_ok) goto ex_0;
            if (T_2_4.cell->tag == 4) T_2_5.num = true; else T_2_5.num = false;
            if (T_2_5.num == true) {

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

  LINE(579);
                {
                err = g_idnlit(e, i);
                if (err != ERR_ok) goto ex_0;
                }

  LINE(580);
                {
                err = g_envOPputl(e, STR__073);
                if (err != ERR_ok) goto ex_0;
                }
                }
            else {

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

  LINE(583);
                {
                err = g_locals(e);
                if (err != ERR_ok) goto ex_0;
                }

  LINE(584);
                {
                err = g_idnlit(e, i);
                if (err != ERR_ok) goto ex_0;
                }

  LINE(585);
                {
                err = g_envOPputl(e, STR__073);
                if (err != ERR_ok) goto ex_0;
                }
                }}}}/* end if */

  LINE(587);
            {
            err = g_err(e);
            if (err != ERR_ok) goto ex_0;
            }

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

  LINE(589);
            {
            err = g_expr2(e, exp);
            if (err != ERR_ok) goto ex_0;
            }

  LINE(590);
            {
            err = g_envOPputs(e, STR__055_076proc_050);
            if (err != ERR_ok) goto ex_0;
            }
            break;
            }
    case 20: 
         {CLUREF T_1_3;
        T_1_3.num = T_1_1.cell->value;
        cop.num = T_1_3.num;

  LINE(592);
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            T_2_1.num = cop.vec->data[2];
            err = parmOPmember(T_2_1, &T_2_2);
            if (err != ERR_ok) goto ex_0;
            if (T_2_2.num == true) {

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

  LINE(595);
                {
                err = g_expr2(e, exp);
                if (err != ERR_ok) goto ex_0;
                }

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

  LINE(597);
                {
                err = g_err(e);
                if (err != ERR_ok) goto ex_0;
                }

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

  LINE(599);
                {
                err = g_expr2(e, exp);
                if (err != ERR_ok) goto ex_0;
                }

  LINE(600);
                {
                err = g_envOPputs(e, STR__055_076proc_050);
                if (err != ERR_ok) goto ex_0;
                }
                }
            else {
            CLUREF T_2_3;
            err = parmd_cluster(cop, &T_2_3);
            if (err != ERR_ok) goto ex_0;
            if (T_2_3.num == true) {

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

  LINE(604);
                {
                err = g_expr2(e, exp);
                if (err != ERR_ok) goto ex_0;
                }

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

  LINE(606);
                {
                err = g_err(e);
                if (err != ERR_ok) goto ex_0;
                }

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

  LINE(608);
                {
                err = g_expr2(e, exp);
                if (err != ERR_ok) goto ex_0;
                }

  LINE(609);
                {
                err = g_envOPputs(e, STR__055_076proc_050);
                if (err != ERR_ok) goto ex_0;
                }
                }
            else {

  LINE(611);
                {
                CLUREF T_3_1;
                CLUREF T_3_2;
                T_3_1.num = 406;
                err = compiler_logit(T_3_1, STR_INV_072_040here, &T_3_2);
                if (err != ERR_ok) goto ex_0;
                }

  LINE(612);
                {
                err = g_err(e);
                if (err != ERR_ok) goto ex_0;
                }

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

  LINE(614);
                {
                err = g_expr2(e, exp);
                if (err != ERR_ok) goto ex_0;
                }

  LINE(615);
                {
                err = g_envOPputs(e, STR__050);
                if (err != ERR_ok) goto ex_0;
                }
                }}}/* end if */
            break;
            }
    default: {

  LINE(621);
        {
        CLUREF T_2_1;
        CLUREF T_2_2;
        T_2_1.num = 407;
        err = compiler_logit(T_2_1, STR_CUR_137PROC_137VAR_040not_040set_072, &T_2_2);
        if (err != ERR_ok) goto ex_0;
        }

  LINE(622);
        {
        err = expr_print(exp, CLU_4);
        if (err != ERR_ok) goto ex_0;
        }

  LINE(623);
        {
        err = g_err(e);
        if (err != ERR_ok) goto ex_0;
        }

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

  LINE(625);
        {
        err = g_expr2(e, exp);
        if (err != ERR_ok) goto ex_0;
        }

  LINE(626);
        {
        err = g_envOPputs(e, STR__050);
        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_inv ****/


extern errcode ibOPexist();
extern errcode dbg_infoOPactive();
extern errcode ibOPbodies();
CLUREF STR_locals_055_076;
CLUREF STR_locals_056;
static int g_locals_own_init = 0;

/**** BEGIN PROCEDURE g_locals ****/

errcode g_locals(e)
CLUREF e;
    {
    errcode err;
    errcode ecode2;
        if (g_locals_own_init == 0) {
        stringOPcons("locals->", CLU_1, CLU_8, &STR_locals_055_076);
        stringOPcons("locals.", CLU_1, CLU_7, &STR_locals_056);
        g_locals_own_init = 1;
    }
    enter_proc(631);

  LINE(632);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    CLUREF T_1_3;
    err = ibOPexist(&T_1_2);
    if (err != ERR_ok) goto ex_0;
    T_1_1.num = T_1_2.num;
    if (!T_1_2.num) {
        err = dbg_infoOPactive(&T_1_3);
        if (err != ERR_ok) goto ex_0;
        T_1_1.num = T_1_3.num;
    }
    if (T_1_1.num == true) {

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

  LINE(635);
            {
            err = g_envOPputs(e, STR_locals_055_076);
            if (err != ERR_ok) goto ex_0;
            }
            }
        else {

  LINE(637);
            {
            err = g_envOPputs(e, STR_locals_056);
            if (err != ERR_ok) goto ex_0;
            }
            }}/* end if */
        }
        }/* 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_locals ****/


CLUREF STR_locals_055_076err;
CLUREF STR_locals_056err;
CLUREF STR_err;
static int g_err_own_init = 0;

/**** BEGIN PROCEDURE g_err ****/

errcode g_err(e)
CLUREF e;
    {
    errcode err;
    errcode ecode2;
        if (g_err_own_init == 0) {
        stringOPcons("locals->err", CLU_1, CLU_11, &STR_locals_055_076err);
        stringOPcons("locals.err", CLU_1, CLU_10, &STR_locals_056err);
        stringOPcons("err", CLU_1, CLU_3, &STR_err);
        g_err_own_init = 1;
    }
    enter_proc(642);

  LINE(644);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    CLUREF T_1_3;
    err = ibOPexist(&T_1_2);
    if (err != ERR_ok) goto ex_0;
    T_1_1.num = T_1_2.num;
    if (!T_1_2.num) {
        err = dbg_infoOPactive(&T_1_3);
        if (err != ERR_ok) goto ex_0;
        T_1_1.num = T_1_3.num;
    }
    if (T_1_1.num == true) {

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

  LINE(646);
            {
            err = g_envOPputs(e, STR_locals_055_076err);
            if (err != ERR_ok) goto ex_0;
            }
            }
        else {

  LINE(648);
            {
            err = g_envOPputs(e, STR_locals_056err);
            if (err != ERR_ok) goto ex_0;
            }
            }}/* end if */
        }
    else {

  LINE(651);
        {
        err = g_envOPputs(e, STR_err);
        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_err ****/


CLUREF STR_locals_055_076proc;
CLUREF STR_locals_056proc;
CLUREF STR_proc;
static int g_proc_own_init = 0;

/**** BEGIN PROCEDURE g_proc ****/

errcode g_proc(e)
CLUREF e;
    {
    errcode err;
    errcode ecode2;
        if (g_proc_own_init == 0) {
        stringOPcons("locals->proc", CLU_1, CLU_12, &STR_locals_055_076proc);
        stringOPcons("locals.proc", CLU_1, CLU_11, &STR_locals_056proc);
        stringOPcons("proc", CLU_1, CLU_4, &STR_proc);
        g_proc_own_init = 1;
    }
    enter_proc(655);

  LINE(657);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    CLUREF T_1_3;
    err = ibOPexist(&T_1_2);
    if (err != ERR_ok) goto ex_0;
    T_1_1.num = T_1_2.num;
    if (!T_1_2.num) {
        err = dbg_infoOPactive(&T_1_3);
        if (err != ERR_ok) goto ex_0;
        T_1_1.num = T_1_3.num;
    }
    if (T_1_1.num == true) {

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

  LINE(659);
            {
            err = g_envOPputs(e, STR_locals_055_076proc);
            if (err != ERR_ok) goto ex_0;
            }
            }
        else {

  LINE(661);
            {
            err = g_envOPputs(e, STR_locals_056proc);
            if (err != ERR_ok) goto ex_0;
            }
            }}/* end if */
        }
    else {

  LINE(664);
        {
        err = g_envOPputs(e, STR_proc);
        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_proc ****/


CLUREF STR_locals_055_076user_137locals;
CLUREF STR_locals_056user_137locals;
CLUREF STR_user_137locals;
static int g_user_locals_own_init = 0;

/**** BEGIN PROCEDURE g_user_locals ****/

errcode g_user_locals(e)
CLUREF e;
    {
    errcode err;
    errcode ecode2;
        if (g_user_locals_own_init == 0) {
        stringOPcons("locals->user_locals", CLU_1, CLU_19, &STR_locals_055_076user_137locals);
        stringOPcons("locals.user_locals", CLU_1, CLU_18, &STR_locals_056user_137locals);
        stringOPcons("user_locals", CLU_1, CLU_11, &STR_user_137locals);
        g_user_locals_own_init = 1;
    }
    enter_proc(668);

  LINE(670);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    CLUREF T_1_3;
    err = ibOPexist(&T_1_2);
    if (err != ERR_ok) goto ex_0;
    T_1_1.num = T_1_2.num;
    if (!T_1_2.num) {
        err = dbg_infoOPactive(&T_1_3);
        if (err != ERR_ok) goto ex_0;
        T_1_1.num = T_1_3.num;
    }
    if (T_1_1.num == true) {

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

  LINE(672);
            {
            err = g_envOPputs(e, STR_locals_055_076user_137locals);
            if (err != ERR_ok) goto ex_0;
            }
            }
        else {

  LINE(674);
            {
            err = g_envOPputs(e, STR_locals_056user_137locals);
            if (err != ERR_ok) goto ex_0;
            }
            }}/* end if */
        }
    else {

  LINE(677);
        {
        err = g_envOPputs(e, STR_user_137locals);
        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_user_locals ****/


extern errcode stringOPsubstr();
extern errcode intOPsub();
extern errcode stringOPsize();
extern errcode purify();
extern errcode oneofOPis_9();
extern errcode oneofOPvalue_9();
extern errcode g_ownref();
extern errcode idnkind_print();
CLUREF STR_int;
CLUREF STR__056num;
CLUREF STR_bool;
CLUREF STR_string;
CLUREF STR__056str;
CLUREF STR_char;
CLUREF STR__056ch;
CLUREF STR__056proc;
CLUREF STR_full;
CLUREF STR_g_137idn_072_040others_040arm_072_040;
CLUREF STR__056XXX;
static int g_idn_own_init = 0;

/**** BEGIN PROCEDURE g_idn ****/

errcode g_idn(e, i)
CLUREF e;
CLUREF i;
    {
    errcode err;
    errcode ecode2;
    CLUREF nm;
    CLUREF var;
    CLUREF ct;
    CLUREF ts;
        if (g_idn_own_init == 0) {
        stringOPcons("generic_CLU_proc", CLU_1, CLU_16, &STR_generic_137CLU_137proc);
        stringOPcons("int", CLU_1, CLU_3, &STR_int);
        stringOPcons(".num", CLU_1, CLU_4, &STR__056num);
        stringOPcons("bool", CLU_1, CLU_4, &STR_bool);
        stringOPcons("string", CLU_1, CLU_6, &STR_string);
        stringOPcons(".str", CLU_1, CLU_4, &STR__056str);
        stringOPcons("char", CLU_1, CLU_4, &STR_char);
        stringOPcons(".ch", CLU_1, CLU_3, &STR__056ch);
        stringOPcons(".proc", CLU_1, CLU_5, &STR__056proc);
        stringOPcons("full", CLU_1, CLU_4, &STR_full);
        stringOPcons("g_idn: others arm: ", CLU_1, CLU_19, &STR_g_137idn_072_040others_040arm_072_040);
        stringOPcons(".XXX", CLU_1, CLU_4, &STR__056XXX);
        g_idn_own_init = 1;
    }
    enter_proc(681);

  LINE(685);
    {
        {CLUREF T_1_1;
        err = idnOPget_str(i, &T_1_1);
        if (err != ERR_ok) goto ex_0;
        nm.num = T_1_1.num;
        }
        }

  LINE(686);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    CLUREF T_1_3;
    err = stringOPfetch(nm, CLU_1, &T_1_1);
    if (err != ERR_ok) goto ex_0;
    T_1_2.ch = '%';
    T_1_3.num = (T_1_1.ch == T_1_2.ch)? true : false;
    if (T_1_3.num == true) {

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

  LINE(689);
    {
    CLUREF T_1_1;
    err = purify(nm, &T_1_1);
    if (err != ERR_ok) goto ex_0;
    nm.num = T_1_1.num;
    }

  LINE(690);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    CLUREF T_1_3;
    CLUREF T_1_4;
    err = is_temp(i, &T_1_2);
    if (err != ERR_ok) goto ex_0;
    T_1_1.num = T_1_2.num;
    if (!T_1_2.num) {
        err = idnOPget_str(i, &T_1_3);
        if (err != ERR_ok) goto ex_0;
        T_1_4.num = ((T_1_3.str->size != STR_generic_137CLU_137proc.str->size)? false :
            !(bcmp(T_1_3.str->data, STR_generic_137CLU_137proc.str->data, T_1_3.str->size)));
        T_1_1.num = T_1_4.num;
    }
    if (T_1_1.num == true) {

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

  LINE(693);
        {
        CLUREF T_2_1;
        CLUREF T_2_2;
        err = idnOPget_kind(i, &T_2_1);
        if (err != ERR_ok) goto ex_0;
        if (T_2_1.cell->tag == 9) T_2_2.num = true; else T_2_2.num = false;
        if (T_2_2.num == true) {

  LINE(694);
            {
                {CLUREF T_3_1;
                CLUREF T_3_2;
                err = idnOPget_kind(i, &T_3_1);
                if (err != ERR_ok) goto ex_0;
                if (T_3_1.cell->tag != 9) {err = ERR_wrong_tag; goto ex_0;}
                T_3_2.num = T_3_1.cell->value;
                var.num = T_3_2.num;
                }
                }

  LINE(695);
            {
            CLUREF T_3_1;
            err = typespecOPget_abs(var, &T_3_1);
            if (err != ERR_ok) goto ex_0;
            switch (T_3_1.cell->tag) {
            case 3: 
                 {CLUREF T_3_2;
                T_3_2.num = T_3_1.cell->value;
                ct.num = T_3_2.num;

  LINE(697);
                    {
                    CLUREF T_4_1;
                    CLUREF T_4_2;
                    CLUREF T_4_3;
                    T_4_1.num = ct.vec->data[0];
                    err = duOPget_common(T_4_1, &T_4_2);
                    if (err != ERR_ok) goto ex_0;
                    T_4_3.num = ((T_4_2.str->size != STR_int.str->size)? false :
                        !(bcmp(T_4_2.str->data, STR_int.str->data, T_4_2.str->size)));
                    if (T_4_3.num == true) {

  LINE(698);
                        {
                        err = g_envOPputs(e, STR__056num);
                        if (err != ERR_ok) goto ex_0;
                        }
                        }
                    else {
                    CLUREF T_4_4;
                    CLUREF T_4_5;
                    CLUREF T_4_6;
                    T_4_4.num = ct.vec->data[0];
                    err = duOPget_common(T_4_4, &T_4_5);
                    if (err != ERR_ok) goto ex_0;
                    T_4_6.num = ((T_4_5.str->size != STR_bool.str->size)? false :
                        !(bcmp(T_4_5.str->data, STR_bool.str->data, T_4_5.str->size)));
                    if (T_4_6.num == true) {

  LINE(700);
                        {
                        err = g_envOPputs(e, STR__056num);
                        if (err != ERR_ok) goto ex_0;
                        }
                        }
                    else {
                    CLUREF T_4_7;
                    CLUREF T_4_8;
                    CLUREF T_4_9;
                    T_4_7.num = ct.vec->data[0];
                    err = duOPget_common(T_4_7, &T_4_8);
                    if (err != ERR_ok) goto ex_0;
                    T_4_9.num = ((T_4_8.str->size != STR_string.str->size)? false :
                        !(bcmp(T_4_8.str->data, STR_string.str->data, T_4_8.str->size)));
                    if (T_4_9.num == true) {

  LINE(702);
                        {
                        err = g_envOPputs(e, STR__056str);
                        if (err != ERR_ok) goto ex_0;
                        }
                        }
                    else {
                    CLUREF T_4_10;
                    CLUREF T_4_11;
                    CLUREF T_4_12;
                    T_4_10.num = ct.vec->data[0];
                    err = duOPget_common(T_4_10, &T_4_11);
                    if (err != ERR_ok) goto ex_0;
                    T_4_12.num = ((T_4_11.str->size != STR_char.str->size)? false :
                        !(bcmp(T_4_11.str->data, STR_char.str->data, T_4_11.str->size)));
                    if (T_4_12.num == true) {

  LINE(704);
                        {
                        err = g_envOPputs(e, STR__056ch);
                        if (err != ERR_ok) goto ex_0;
                        }
                        }
                    else {

  LINE(706);
                        {
                        err = g_envOPputs(e, STR__056num);
                        if (err != ERR_ok) goto ex_0;
                        }
                        }}}}}/* end if */
                    break;
                    }
            case 7: 
                 {

  LINE(710);
                    {
                    err = g_envOPputs(e, STR__056num);
                    if (err != ERR_ok) goto ex_0;
                    }
                    break;
                    }
            case 2: 
                 {

  LINE(712);
                    {
                    err = g_envOPputs(e, STR__056proc);
                    if (err != ERR_ok) goto ex_0;
                    }
                    break;
                    }
            default: {

  LINE(714);
                {
                CLUREF T_4_1;
                CLUREF T_4_2;
                err = idnOPget_str(i, &T_4_1);
                if (err != ERR_ok) goto ex_0;
                T_4_2.num = ((T_4_1.str->size != STR_generic_137CLU_137proc.str->size)? false :
                    !(bcmp(T_4_1.str->data, STR_generic_137CLU_137proc.str->data, T_4_1.str->size)));
                if (T_4_2.num == true) {

  LINE(716);
                    {
                    err = g_envOPputs(e, STR__056proc);
                    if (err != ERR_ok) goto ex_0;
                    }
                    }
                else {

  LINE(718);
                    {
                    err = g_envOPputs(e, STR__056num);
                    if (err != ERR_ok) goto ex_0;
                    }
                    }}/* end if */
            }
            }
            }
            }
        else {

  LINE(725);
            {
            err = g_envOPputs(e, STR__056num);
            if (err != ERR_ok) goto ex_0;
            }
            }}/* end if */
        }
    else {
    CLUREF T_1_5;
    CLUREF T_1_6;
    err = idnOPget_kind(i, &T_1_5);
    if (err != ERR_ok) goto ex_0;
    if (T_1_5.cell->tag == 4) T_1_6.num = true; else T_1_6.num = false;
    if (T_1_6.num == true) {

  LINE(728);
        {
        err = g_ownref(e, i, nm, STR_full);
        if (err != ERR_ok) goto ex_0;
        }
        }
    else {

  LINE(730);
        {
        CLUREF T_2_1;
        err = idnOPget_kind(i, &T_2_1);
        if (err != ERR_ok) goto ex_0;
        switch (T_2_1.cell->tag) {
        case 9: 
             {CLUREF T_2_2;
            T_2_2.num = T_2_1.cell->value;
            ts.num = T_2_2.num;

  LINE(732);
                {
                err = g_locals(e);
                if (err != ERR_ok) goto ex_0;
                }

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

  LINE(734);
                {
                CLUREF T_3_1;
                err = typespecOPget_abs(ts, &T_3_1);
                if (err != ERR_ok) goto ex_0;
                switch (T_3_1.cell->tag) {
                case 2: 
                     {

  LINE(736);
                        {
                        err = g_envOPputs(e, STR__056proc);
                        if (err != ERR_ok) goto ex_0;
                        }
                        break;
                        }
                case 7: 
                     {

  LINE(739);
                        {
                        err = g_envOPputs(e, STR__056num);
                        if (err != ERR_ok) goto ex_0;
                        }
                        break;
                        }
                default: {

  LINE(741);
                    {
                    err = g_envOPputs(e, STR__056num);
                    if (err != ERR_ok) goto ex_0;
                    }
                }
                }
                }
                break;
                }
        case 10: 
             {CLUREF T_2_3;
            T_2_3.num = T_2_1.cell->value;
            ts.num = T_2_3.num;

  LINE(744);
                {
                CLUREF T_3_1;
                CLUREF T_3_2;
                CLUREF T_3_3;
                err = s_owns_prefix(i, &T_3_1);
                if (err != ERR_ok) goto ex_0;
                err = stringOPconcat(T_3_1, nm, &T_3_2);
                if (err != ERR_ok) goto ex_0;
                err = stringOPconcat(T_3_2, STR__056num, &T_3_3);
                if (err != ERR_ok) goto ex_0;
                err = g_envOPputs(e, T_3_3);
                if (err != ERR_ok) goto ex_0;
                }
                break;
                }
        default: {

  LINE(746);
            {
            CLUREF T_3_1;
            CLUREF T_3_2;
            CLUREF T_3_3;
            CLUREF T_3_4;
            T_3_1.num = 408;
            err = idnOPget_str(i, &T_3_2);
            if (err != ERR_ok) goto ex_0;
            err = stringOPconcat(STR_g_137idn_072_040others_040arm_072_040, T_3_2, &T_3_3);
            if (err != ERR_ok) goto ex_0;
            err = compiler_logit(T_3_1, T_3_3, &T_3_4);
            if (err != ERR_ok) goto ex_0;
            }

  LINE(747);
            {
            CLUREF T_3_1;
            err = idnOPget_kind(i, &T_3_1);
            if (err != ERR_ok) goto ex_0;
            err = idnkind_print(T_3_1);
            if (err != ERR_ok) goto ex_0;
            }

  LINE(748);
            {
            err = g_envOPputs(e, STR__056XXX);
            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_idn ****/


CLUREF STR_head;
CLUREF STR_g_137idn_137no_137trailer_072_040others_040arm_072_040;
static int g_idn_no_trailer_own_init = 0;

/**** BEGIN PROCEDURE g_idn_no_trailer ****/

errcode g_idn_no_trailer(e, i)
CLUREF e;
CLUREF i;
    {
    errcode err;
    errcode ecode2;
    CLUREF nm;
    CLUREF ts;
        if (g_idn_no_trailer_own_init == 0) {
        stringOPcons("generic_CLU_proc", CLU_1, CLU_16, &STR_generic_137CLU_137proc);
        stringOPcons("head", CLU_1, CLU_4, &STR_head);
        stringOPcons("g_idn_no_trailer: others arm: ", CLU_1, CLU_30, &STR_g_137idn_137no_137trailer_072_040others_040arm_072_040);
        stringOPcons(".XXX", CLU_1, CLU_4, &STR__056XXX);
        g_idn_no_trailer_own_init = 1;
    }
    enter_proc(753);

  LINE(757);
    {
        {CLUREF T_1_1;
        err = idnOPget_str(i, &T_1_1);
        if (err != ERR_ok) goto ex_0;
        nm.num = T_1_1.num;
        }
        }

  LINE(758);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    CLUREF T_1_3;
    err = stringOPfetch(nm, CLU_1, &T_1_1);
    if (err != ERR_ok) goto ex_0;
    T_1_2.ch = '%';
    T_1_3.num = (T_1_1.ch == T_1_2.ch)? true : false;
    if (T_1_3.num == true) {

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

  LINE(761);
    {
    CLUREF T_1_1;
    err = purify(nm, &T_1_1);
    if (err != ERR_ok) goto ex_0;
    nm.num = T_1_1.num;
    }

  LINE(762);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    CLUREF T_1_3;
    CLUREF T_1_4;
    err = is_temp(i, &T_1_2);
    if (err != ERR_ok) goto ex_0;
    T_1_1.num = T_1_2.num;
    if (!T_1_2.num) {
        err = idnOPget_str(i, &T_1_3);
        if (err != ERR_ok) goto ex_0;
        T_1_4.num = ((T_1_3.str->size != STR_generic_137CLU_137proc.str->size)? false :
            !(bcmp(T_1_3.str->data, STR_generic_137CLU_137proc.str->data, T_1_3.str->size)));
        T_1_1.num = T_1_4.num;
    }
    if (T_1_1.num == true) {

  LINE(764);
        {
        err = g_envOPputs(e, nm);
        if (err != ERR_ok) goto ex_0;
        }
        }
    else {
    CLUREF T_1_5;
    CLUREF T_1_6;
    err = idnOPget_kind(i, &T_1_5);
    if (err != ERR_ok) goto ex_0;
    if (T_1_5.cell->tag == 4) T_1_6.num = true; else T_1_6.num = false;
    if (T_1_6.num == true) {

  LINE(766);
        {
        err = g_ownref(e, i, nm, STR_head);
        if (err != ERR_ok) goto ex_0;
        }
        }
    else {

  LINE(768);
        {
        CLUREF T_2_1;
        err = idnOPget_kind(i, &T_2_1);
        if (err != ERR_ok) goto ex_0;
        switch (T_2_1.cell->tag) {
        case 9: 
             {CLUREF T_2_2;
            T_2_2.num = T_2_1.cell->value;
            ts.num = T_2_2.num;

  LINE(770);
                {
                err = g_locals(e);
                if (err != ERR_ok) goto ex_0;
                }

  LINE(771);
                {
                err = g_envOPputs(e, nm);
                if (err != ERR_ok) goto ex_0;
                }
                break;
                }
        case 10: 
             {CLUREF T_2_3;
            T_2_3.num = T_2_1.cell->value;
            ts.num = T_2_3.num;

  LINE(773);
                {
                CLUREF T_3_1;
                CLUREF T_3_2;
                err = s_owns_prefix(i, &T_3_1);
                if (err != ERR_ok) goto ex_0;
                err = stringOPconcat(T_3_1, nm, &T_3_2);
                if (err != ERR_ok) goto ex_0;
                err = g_envOPputs(e, T_3_2);
                if (err != ERR_ok) goto ex_0;
                }
                break;
                }
        default: {

  LINE(775);
            {
            CLUREF T_3_1;
            CLUREF T_3_2;
            CLUREF T_3_3;
            CLUREF T_3_4;
            T_3_1.num = 409;
            err = idnOPget_str(i, &T_3_2);
            if (err != ERR_ok) goto ex_0;
            err = stringOPconcat(STR_g_137idn_137no_137trailer_072_040others_040arm_072_040, T_3_2, &T_3_3);
            if (err != ERR_ok) goto ex_0;
            err = compiler_logit(T_3_1, T_3_3, &T_3_4);
            if (err != ERR_ok) goto ex_0;
            }

  LINE(776);
            {
            CLUREF T_3_1;
            err = idnOPget_kind(i, &T_3_1);
            if (err != ERR_ok) goto ex_0;
            err = idnkind_print(T_3_1);
            if (err != ERR_ok) goto ex_0;
            }

  LINE(777);
            {
            err = g_envOPputs(e, STR__056XXX);
            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_idn_no_trailer ****/


extern errcode ownref();

/**** BEGIN PROCEDURE g_ownref ****/

errcode g_ownref(e, i, nm, trailer)
CLUREF e;
CLUREF i;
CLUREF nm;
CLUREF trailer;
    {
    errcode err;
    errcode ecode2;
    enter_proc(782);

  LINE(783);
    {
    CLUREF T_1_1;
    err = ownref(i, nm, trailer, &T_1_1);
    if (err != ERR_ok) goto ex_0;
    err = g_envOPputs(e, T_1_1);
    if (err != ERR_ok) goto ex_0;
    }
    goto end_0;
    ex_0:
        {
            if (err == ERR_failure) {signal(ERR_failure);}
            elist[0] = _pclu_erstr(err);
            {signal(ERR_failure);}
        }
    end_0: {signal(ERR_ok);}
    }

/**** END PROCEDURE g_ownref ****/


extern errcode s_locals();
extern errcode current_typeOPexists();
extern errcode current_typeOPparmd();
extern errcode current_applyOPparmd();
extern errcode ownsOPmember();
extern errcode current_typeOPget_name();
extern errcode current_applyOPget_name();
extern errcode oneofOPvalue_4();
CLUREF STR_;
CLUREF STR_lit;
CLUREF STR_op_137own_137ptr_055_076;
CLUREF STR_type_137own_137ptr_055_076;
CLUREF STR_OP;
static int ownref_own_init = 0;

/**** BEGIN PROCEDURE ownref ****/

errcode ownref(i, nm, trailer, ret_1)
CLUREF i;
CLUREF nm;
CLUREF trailer;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
    CLUREF result;
    CLUREF ownvar;
        if (ownref_own_init == 0) {
        stringOPcons("", CLU_1, CLU_0, &STR_);
        stringOPcons("full", CLU_1, CLU_4, &STR_full);
        stringOPcons("head", CLU_1, CLU_4, &STR_head);
        stringOPcons("lit", CLU_1, CLU_3, &STR_lit);
        stringOPcons("op_own_ptr->", CLU_1, CLU_12, &STR_op_137own_137ptr_055_076);
        stringOPcons("type_own_ptr->", CLU_1, CLU_14, &STR_type_137own_137ptr_055_076);
        stringOPcons("OP", CLU_1, CLU_2, &STR_OP);
        stringOPcons(".proc", CLU_1, CLU_5, &STR__056proc);
        stringOPcons(".num", CLU_1, CLU_4, &STR__056num);
        ownref_own_init = 1;
    }
    enter_proc(786);

  LINE(788);
    {
        {result = STR_;
        }
        }

  LINE(789);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    CLUREF T_1_3;
    T_1_2.num = ((trailer.str->size != STR_full.str->size)? false :
        !(bcmp(trailer.str->data, STR_full.str->data, trailer.str->size)));
    T_1_1.num = T_1_2.num;
    if (!T_1_2.num) {
        T_1_3.num = ((trailer.str->size != STR_head.str->size)? false :
            !(bcmp(trailer.str->data, STR_head.str->data, trailer.str->size)));
        T_1_1.num = T_1_3.num;
    }
    if (T_1_1.num == true) {

  LINE(790);
        {
        CLUREF T_2_1;
        err = s_locals(&T_2_1);
        if (err != ERR_ok) goto ex_0;
        result.num = T_2_1.num;
        }
        }
        }/* end if */

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

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

  LINE(795);
            {
            CLUREF T_3_1;
            T_3_1.num = ((trailer.str->size != STR_lit.str->size)? false :
                !(bcmp(trailer.str->data, STR_lit.str->data, trailer.str->size)));
            if (T_3_1.num == true) {
                {
                {
                ret_1->num = nm.num;
                }
                {signal (ERR_ok);}}
                }
                }/* end if */

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

  LINE(798);
                {
                CLUREF T_4_1;
                err = ownsOPmember(i, &T_4_1);
                if (err != ERR_ok) goto ex_0;
                if (T_4_1.num == true) {

  LINE(800);
                    {
                    CLUREF T_5_1;
                    CLUREF T_5_2;
                    err = stringOPconcat(result, STR_op_137own_137ptr_055_076, &T_5_1);
                    if (err != ERR_ok) goto ex_0;
                    err = stringOPconcat(T_5_1, nm, &T_5_2);
                    if (err != ERR_ok) goto ex_0;
                    result.num = T_5_2.num;
                    }
                    }
                else {

  LINE(802);
                    {
                    CLUREF T_5_1;
                    CLUREF T_5_2;
                    err = stringOPconcat(result, STR_type_137own_137ptr_055_076, &T_5_1);
                    if (err != ERR_ok) goto ex_0;
                    err = stringOPconcat(T_5_1, nm, &T_5_2);
                    if (err != ERR_ok) goto ex_0;
                    result.num = T_5_2.num;
                    }
                    }}/* end if */
                }
            else {

  LINE(805);
                {
                CLUREF T_4_1;
                CLUREF T_4_2;
                err = stringOPconcat(result, STR_type_137own_137ptr_055_076, &T_4_1);
                if (err != ERR_ok) goto ex_0;
                err = stringOPconcat(T_4_1, nm, &T_4_2);
                if (err != ERR_ok) goto ex_0;
                result.num = T_4_2.num;
                }
                }}/* end if */
            }
        else {

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

  LINE(810);
                {
                CLUREF T_4_1;
                err = ownsOPmember(i, &T_4_1);
                if (err != ERR_ok) goto ex_0;
                if (T_4_1.num == true) {

  LINE(812);
                    {
                    CLUREF T_5_1;
                    T_5_1.num = ((trailer.str->size != STR_lit.str->size)? false :
                        !(bcmp(trailer.str->data, STR_lit.str->data, trailer.str->size)));
                    if (T_5_1.num == true) {
                        {
                        {
                        ret_1->num = nm.num;
                        }
                        {signal (ERR_ok);}}
                        }
                        }/* end if */

  LINE(813);
                    {
                    CLUREF T_5_1;
                    CLUREF T_5_2;
                    err = stringOPconcat(result, STR_op_137own_137ptr_055_076, &T_5_1);
                    if (err != ERR_ok) goto ex_0;
                    err = stringOPconcat(T_5_1, nm, &T_5_2);
                    if (err != ERR_ok) goto ex_0;
                    result.num = T_5_2.num;
                    }
                    }
                else {

  LINE(815);
                    {
                    CLUREF T_5_1;
                    CLUREF T_5_2;
                    CLUREF T_5_3;
                    err = current_typeOPget_name(&T_5_1);
                    if (err != ERR_ok) goto ex_0;
                    err = stringOPconcat(T_5_1, STR_OP, &T_5_2);
                    if (err != ERR_ok) goto ex_0;
                    err = stringOPconcat(T_5_2, nm, &T_5_3);
                    if (err != ERR_ok) goto ex_0;
                    result.num = T_5_3.num;
                    }
                    }}/* end if */
                }
            else {

  LINE(818);
                {
                CLUREF T_4_1;
                err = ownsOPmember(i, &T_4_1);
                if (err != ERR_ok) goto ex_0;
                if (T_4_1.num == true) {

  LINE(820);
                    {
                    CLUREF T_5_1;
                    CLUREF T_5_2;
                    CLUREF T_5_3;
                    err = current_applyOPget_name(&T_5_1);
                    if (err != ERR_ok) goto ex_0;
                    err = stringOPconcat(T_5_1, STR_OP, &T_5_2);
                    if (err != ERR_ok) goto ex_0;
                    err = stringOPconcat(T_5_2, nm, &T_5_3);
                    if (err != ERR_ok) goto ex_0;
                    result.num = T_5_3.num;
                    }
                    }
                else {

  LINE(822);
                    {
                    CLUREF T_5_1;
                    CLUREF T_5_2;
                    CLUREF T_5_3;
                    err = current_typeOPget_name(&T_5_1);
                    if (err != ERR_ok) goto ex_0;
                    err = stringOPconcat(T_5_1, STR_OP, &T_5_2);
                    if (err != ERR_ok) goto ex_0;
                    err = stringOPconcat(T_5_2, nm, &T_5_3);
                    if (err != ERR_ok) goto ex_0;
                    result.num = T_5_3.num;
                    }
                    }}/* end if */
                }}/* end if */
            }}/* end if */
        }
    else {

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

  LINE(830);
            {
            CLUREF T_3_1;
            T_3_1.num = ((trailer.str->size != STR_lit.str->size)? false :
                !(bcmp(trailer.str->data, STR_lit.str->data, trailer.str->size)));
            if (T_3_1.num == true) {
                {
                {
                ret_1->num = nm.num;
                }
                {signal (ERR_ok);}}
                }
                }/* end if */

  LINE(831);
            {
            CLUREF T_3_1;
            CLUREF T_3_2;
            err = stringOPconcat(result, STR_op_137own_137ptr_055_076, &T_3_1);
            if (err != ERR_ok) goto ex_0;
            err = stringOPconcat(T_3_1, nm, &T_3_2);
            if (err != ERR_ok) goto ex_0;
            result.num = T_3_2.num;
            }
            }
        else {

  LINE(833);
            {
            CLUREF T_3_1;
            CLUREF T_3_2;
            CLUREF T_3_3;
            err = current_applyOPget_name(&T_3_1);
            if (err != ERR_ok) goto ex_0;
            err = stringOPconcat(T_3_1, STR_OP, &T_3_2);
            if (err != ERR_ok) goto ex_0;
            err = stringOPconcat(T_3_2, nm, &T_3_3);
            if (err != ERR_ok) goto ex_0;
            result.num = T_3_3.num;
            }
            }}/* end if */
        }}/* end if */

  LINE(837);
    {
    CLUREF T_1_1;
    T_1_1.num = ((trailer.str->size != STR_full.str->size)? false :
        !(bcmp(trailer.str->data, STR_full.str->data, trailer.str->size)));
    if (T_1_1.num == true) {

  LINE(840);
        {
            {CLUREF T_2_1;
            CLUREF T_2_2;
            err = idnOPget_kind(i, &T_2_1);
            if (err != ERR_ok) goto ex_0;
            if (T_2_1.cell->tag != 4) {err = ERR_wrong_tag; goto ex_0;}
            T_2_2.num = T_2_1.cell->value;
            ownvar.num = T_2_2.num;
            }
            }

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

  LINE(843);
                {
                {
                CLUREF T_3_1;
                err = stringOPconcat(result, STR__056proc, &T_3_1);
                if (err != ERR_ok) goto ex_0;
                ret_1->num = T_3_1.num;
                }
                {signal (ERR_ok);}}
                break;
                }
        default: {

  LINE(845);
            {
            {
            CLUREF T_3_1;
            err = stringOPconcat(result, STR__056num, &T_3_1);
            if (err != ERR_ok) goto ex_0;
            ret_1->num = T_3_1.num;
            }
            {signal (ERR_ok);}}
        }
        }
        }
        }
        }/* end if */

  LINE(849);
    {
    {
    ret_1->num = result.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 ownref ****/


static int s_locals_own_init = 0;

/**** BEGIN PROCEDURE s_locals ****/

errcode s_locals(ret_1)
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
        if (s_locals_own_init == 0) {
        stringOPcons("locals->", CLU_1, CLU_8, &STR_locals_055_076);
        stringOPcons("locals.", CLU_1, CLU_7, &STR_locals_056);
        stringOPcons("", CLU_1, CLU_0, &STR_);
        s_locals_own_init = 1;
    }
    enter_proc(853);

  LINE(854);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    CLUREF T_1_3;
    err = ibOPexist(&T_1_2);
    if (err != ERR_ok) goto ex_0;
    T_1_1.num = T_1_2.num;
    if (!T_1_2.num) {
        err = dbg_infoOPactive(&T_1_3);
        if (err != ERR_ok) goto ex_0;
        T_1_1.num = T_1_3.num;
    }
    if (T_1_1.num == true) {

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

  LINE(857);
            {
            {
            ret_1->str = STR_locals_055_076.str;
            }
            {signal (ERR_ok);}}
            }
        else {

  LINE(859);
            {
            {
            ret_1->str = STR_locals_056.str;
            }
            {signal (ERR_ok);}}
            }}/* end if */
        }
    else {

  LINE(862);
        {
        {
        ret_1->str = STR_.str;
        }
        {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 s_locals ****/


CLUREF STR_plain;
static int g_idn_plain_own_init = 0;

/**** BEGIN PROCEDURE g_idn_plain ****/

errcode g_idn_plain(e, i)
CLUREF e;
CLUREF i;
    {
    errcode err;
    errcode ecode2;
    CLUREF nm;
        if (g_idn_plain_own_init == 0) {
        stringOPcons("plain", CLU_1, CLU_5, &STR_plain);
        g_idn_plain_own_init = 1;
    }
    enter_proc(866);

  LINE(870);
    {
        {CLUREF T_1_1;
        err = idnOPget_str(i, &T_1_1);
        if (err != ERR_ok) goto ex_0;
        nm.num = T_1_1.num;
        }
        }

  LINE(871);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    CLUREF T_1_3;
    err = stringOPfetch(nm, CLU_1, &T_1_1);
    if (err != ERR_ok) goto ex_0;
    T_1_2.ch = '%';
    T_1_3.num = (T_1_1.ch == T_1_2.ch)? true : false;
    if (T_1_3.num == true) {

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

  LINE(874);
    {
    CLUREF T_1_1;
    err = purify(nm, &T_1_1);
    if (err != ERR_ok) goto ex_0;
    nm.num = T_1_1.num;
    }

  LINE(875);
    {
    CLUREF T_1_1;
    err = is_temp(i, &T_1_1);
    if (err != ERR_ok) goto ex_0;
    if (T_1_1.num == true) {

  LINE(876);
        {
        err = g_envOPputs(e, nm);
        if (err != ERR_ok) goto ex_0;
        }
        }
    else {
    CLUREF T_1_2;
    CLUREF T_1_3;
    err = idnOPget_kind(i, &T_1_2);
    if (err != ERR_ok) goto ex_0;
    if (T_1_2.cell->tag == 4) T_1_3.num = true; else T_1_3.num = false;
    if (T_1_3.num == true) {

  LINE(880);
        {
        CLUREF T_2_1;
        CLUREF T_2_2;
        CLUREF T_2_3;
        err = current_typeOPexists(&T_2_2);
        if (err != ERR_ok) goto ex_0;
        T_2_1.num = T_2_2.num;
        if (T_2_2.num) {
            err = current_typeOPparmd(&T_2_3);
            if (err != ERR_ok) goto ex_0;
            T_2_1.num = T_2_3.num;
        }
        if (T_2_1.num == true) {

  LINE(884);
            {
            err = g_locals(e);
            if (err != ERR_ok) goto ex_0;
            }
            }
            }/* end if */

  LINE(887);
        {
        CLUREF T_2_1;
        CLUREF T_2_2;
        CLUREF T_2_3;
        CLUREF T_2_4;
        err = current_typeOPexists(&T_2_2);
        if (err != ERR_ok) goto ex_0;
        T_2_3.num = T_2_2.num ^ 1;
        T_2_1.num = T_2_3.num;
        if (T_2_3.num) {
            err = current_applyOPparmd(&T_2_4);
            if (err != ERR_ok) goto ex_0;
            T_2_1.num = T_2_4.num;
        }
        if (T_2_1.num == true) {

  LINE(889);
            {
            err = g_locals(e);
            if (err != ERR_ok) goto ex_0;
            }
            }
            }/* end if */

  LINE(891);
        {
        CLUREF T_2_1;
        CLUREF T_2_2;
        CLUREF T_2_3;
        CLUREF T_2_4;
        CLUREF T_2_5;
        CLUREF T_2_6;
        err = current_typeOPexists(&T_2_3);
        if (err != ERR_ok) goto ex_0;
        T_2_2.num = T_2_3.num;
        if (T_2_3.num) {
            err = current_typeOPparmd(&T_2_4);
            if (err != ERR_ok) goto ex_0;
            T_2_5.num = T_2_4.num ^ 1;
            T_2_2.num = T_2_5.num;
        }
        T_2_1.num = T_2_2.num;
        if (T_2_2.num) {
            err = current_applyOPparmd(&T_2_6);
            if (err != ERR_ok) goto ex_0;
            T_2_1.num = T_2_6.num;
        }
        if (T_2_1.num == true) {

  LINE(893);
            {
            CLUREF T_3_1;
            err = ownsOPmember(i, &T_3_1);
            if (err != ERR_ok) goto ex_0;
            if (T_3_1.num == true) {

  LINE(894);
                {
                err = g_locals(e);
                if (err != ERR_ok) goto ex_0;
                }
                }
                }/* end if */
            }
            }/* end if */

  LINE(898);
        {
        err = g_ownref(e, i, nm, STR_plain);
        if (err != ERR_ok) goto ex_0;
        }
        }
    else {

  LINE(900);
        {
        err = g_locals(e);
        if (err != ERR_ok) goto ex_0;
        }

  LINE(901);
        {
        err = g_envOPputs(e, nm);
        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_idn_plain ****/


extern errcode sequenceOPaddh();
CLUREF STR_auto;
CLUREF STR_case;
CLUREF STR_const;
CLUREF STR_default;
CLUREF STR_double;
CLUREF STR_enum;
CLUREF STR_extern;
CLUREF STR_float;
CLUREF STR_goto;
CLUREF STR_long;
CLUREF STR_register;
CLUREF STR_short;
CLUREF STR_signed;
CLUREF STR_sizeof;
CLUREF STR_static;
CLUREF STR_switch;
CLUREF STR_typedef;
CLUREF STR_union;
CLUREF STR_unsigned;
CLUREF STR_void;
CLUREF STR_volatile;
CLUREF STR_word;
CLUREF STR_locals;
CLUREF STR_elist;
CLUREF STR_ecode;
CLUREF STR_ecode2;
CLUREF STR_errcode;
CLUREF STR__137UNIQ;
static int purify_own_init = 0;
CLUREF purifyOPreserved;

/**** BEGIN PROCEDURE purify ****/

errcode purify(nm, ret_1)
CLUREF nm;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
    CLUREF each_st;
    CLUREF new;
        if (purify_own_init == 0) {
        stringOPcons("auto", CLU_1, CLU_4, &STR_auto);
        stringOPcons("case", CLU_1, CLU_4, &STR_case);
        stringOPcons("const", CLU_1, CLU_5, &STR_const);
        stringOPcons("default", CLU_1, CLU_7, &STR_default);
        stringOPcons("double", CLU_1, CLU_6, &STR_double);
        stringOPcons("enum", CLU_1, CLU_4, &STR_enum);
        stringOPcons("extern", CLU_1, CLU_6, &STR_extern);
        stringOPcons("float", CLU_1, CLU_5, &STR_float);
        stringOPcons("goto", CLU_1, CLU_4, &STR_goto);
        stringOPcons("long", CLU_1, CLU_4, &STR_long);
        stringOPcons("register", CLU_1, CLU_8, &STR_register);
        stringOPcons("short", CLU_1, CLU_5, &STR_short);
        stringOPcons("signed", CLU_1, CLU_6, &STR_signed);
        stringOPcons("sizeof", CLU_1, CLU_6, &STR_sizeof);
        stringOPcons("static", CLU_1, CLU_6, &STR_static);
        stringOPcons("switch", CLU_1, CLU_6, &STR_switch);
        stringOPcons("typedef", CLU_1, CLU_7, &STR_typedef);
        stringOPcons("union", CLU_1, CLU_5, &STR_union);
        stringOPcons("unsigned", CLU_1, CLU_8, &STR_unsigned);
        stringOPcons("void", CLU_1, CLU_4, &STR_void);
        stringOPcons("volatile", CLU_1, CLU_8, &STR_volatile);
        stringOPcons("word", CLU_1, CLU_4, &STR_word);
        stringOPcons("err", CLU_1, CLU_3, &STR_err);
        stringOPcons("locals", CLU_1, CLU_6, &STR_locals);
        stringOPcons("elist", CLU_1, CLU_5, &STR_elist);
        stringOPcons("ecode", CLU_1, CLU_5, &STR_ecode);
        stringOPcons("ecode2", CLU_1, CLU_6, &STR_ecode2);
        stringOPcons("errcode", CLU_1, CLU_7, &STR_errcode);
        stringOPcons("user_locals", CLU_1, CLU_11, &STR_user_137locals);
        stringOPcons("_UNIQ", CLU_1, CLU_5, &STR__137UNIQ);
        purify_own_init = 1;
        {
            {CLUREF T_0_1;
            sequenceOPnew2(CLU_29, &T_0_1);
            T_0_1.vec->data[0] = STR_auto.num;
            T_0_1.vec->data[1] = STR_case.num;
            T_0_1.vec->data[2] = STR_const.num;
            T_0_1.vec->data[3] = STR_default.num;
            T_0_1.vec->data[4] = STR_double.num;
            T_0_1.vec->data[5] = STR_enum.num;
            T_0_1.vec->data[6] = STR_extern.num;
            T_0_1.vec->data[7] = STR_float.num;
            T_0_1.vec->data[8] = STR_goto.num;
            T_0_1.vec->data[9] = STR_long.num;
            T_0_1.vec->data[10] = STR_register.num;
            T_0_1.vec->data[11] = STR_short.num;
            T_0_1.vec->data[12] = STR_signed.num;
            T_0_1.vec->data[13] = STR_sizeof.num;
            T_0_1.vec->data[14] = STR_static.num;
            T_0_1.vec->data[15] = STR_switch.num;
            T_0_1.vec->data[16] = STR_typedef.num;
            T_0_1.vec->data[17] = STR_union.num;
            T_0_1.vec->data[18] = STR_unsigned.num;
            T_0_1.vec->data[19] = STR_void.num;
            T_0_1.vec->data[20] = STR_volatile.num;
            T_0_1.vec->data[21] = STR_word.num;
            T_0_1.vec->data[22] = STR_err.num;
            T_0_1.vec->data[23] = STR_locals.num;
            T_0_1.vec->data[24] = STR_elist.num;
            T_0_1.vec->data[25] = STR_ecode.num;
            T_0_1.vec->data[26] = STR_ecode2.num;
            T_0_1.vec->data[27] = STR_errcode.num;
            T_0_1.vec->data[28] = STR_user_137locals.num;
            purifyOPreserved.num = T_0_1.num;
            }
            }
    }
    enter_proc(905);

  LINE(917);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    CLUREF T_1_3;
        T_1_2.num = purifyOPreserved.vec->size; 
        T_1_3 = purifyOPreserved;
        for (T_1_1.num = 1; T_1_1.num <= T_1_2.num; T_1_1.num++) {
            each_st.num = T_1_3.vec->data[T_1_1.num - 1];

  LINE(918);
            {
            CLUREF T_2_1;
            T_2_1.num = ((nm.str->size != each_st.str->size)? false :
                !(bcmp(nm.str->data, each_st.str->data, nm.str->size)));
            if (T_2_1.num == true) {

  LINE(919);
                {
                    {CLUREF T_3_1;
                    err = stringOPconcat(nm, STR__137UNIQ, &T_3_1);
                    if (err != ERR_ok) goto ex_0;
                    new.num = T_3_1.num;
                    }
                    }

  LINE(920);
                {
                CLUREF T_3_1;
                err = sequenceOPaddh(purifyOPreserved, new, &T_3_1);
                if (err != ERR_ok) goto ex_0;
                purifyOPreserved.num = T_3_1.num;
                }

  LINE(921);
                {
                {
                ret_1->num = new.num;
                }
                {signal (ERR_ok);}}
                }
                }/* end if */
        }
    }
    end_inline_for_1:;

  LINE(924);
    {
    {
    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 purify ****/


static int g_idnlit_own_init = 0;

/**** BEGIN PROCEDURE g_idnlit ****/

errcode g_idnlit(e, i)
CLUREF e;
CLUREF i;
    {
    errcode err;
    errcode ecode2;
    CLUREF nm;
        if (g_idnlit_own_init == 0) {
        stringOPcons("lit", CLU_1, CLU_3, &STR_lit);
        g_idnlit_own_init = 1;
    }
    enter_proc(928);

  LINE(932);
    {
        {CLUREF T_1_1;
        err = idnOPget_str(i, &T_1_1);
        if (err != ERR_ok) goto ex_0;
        nm.num = T_1_1.num;
        }
        }

  LINE(934);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    CLUREF T_1_3;
    err = stringOPfetch(nm, CLU_1, &T_1_1);
    if (err != ERR_ok) goto ex_0;
    T_1_2.ch = '%';
    T_1_3.num = (T_1_1.ch == T_1_2.ch)? true : false;
    if (T_1_3.num == true) {

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

  LINE(937);
    {
    CLUREF T_1_1;
    err = purify(nm, &T_1_1);
    if (err != ERR_ok) goto ex_0;
    nm.num = T_1_1.num;
    }

  LINE(939);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    err = idnOPget_kind(i, &T_1_1);
    if (err != ERR_ok) goto ex_0;
    if (T_1_1.cell->tag == 4) T_1_2.num = true; else T_1_2.num = false;
    if (T_1_2.num == true) {

  LINE(940);
        {
        err = g_ownref(e, i, nm, STR_lit);
        if (err != ERR_ok) goto ex_0;
        }
        }
    else {

  LINE(942);
        {
        err = g_envOPputs(e, nm);
        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_idnlit ****/


static int idnlit_own_init = 0;

/**** BEGIN PROCEDURE idnlit ****/

errcode idnlit(i, ret_1)
CLUREF i;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
    CLUREF nm;
        if (idnlit_own_init == 0) {
        stringOPcons("lit", CLU_1, CLU_3, &STR_lit);
        idnlit_own_init = 1;
    }
    enter_proc(947);

  LINE(951);
    {
        {CLUREF T_1_1;
        err = idnOPget_str(i, &T_1_1);
        if (err != ERR_ok) goto ex_0;
        nm.num = T_1_1.num;
        }
        }

  LINE(952);
    {
    CLUREF T_1_1;
    err = purify(nm, &T_1_1);
    if (err != ERR_ok) goto ex_0;
    nm.num = T_1_1.num;
    }

  LINE(954);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    CLUREF T_1_3;
    err = stringOPfetch(nm, CLU_1, &T_1_1);
    if (err != ERR_ok) goto ex_0;
    T_1_2.ch = '%';
    T_1_3.num = (T_1_1.ch == T_1_2.ch)? true : false;
    if (T_1_3.num == true) {

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

  LINE(957);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    err = idnOPget_kind(i, &T_1_1);
    if (err != ERR_ok) goto ex_0;
    if (T_1_1.cell->tag == 4) T_1_2.num = true; else T_1_2.num = false;
    if (T_1_2.num == true) {

  LINE(959);
        {
        {
        CLUREF T_2_1;
        err = ownref(i, nm, STR_lit, &T_2_1);
        if (err != ERR_ok) goto ex_0;
        ret_1->num = T_2_1.num;
        }
        {signal (ERR_ok);}}
        }
        }/* end if */

  LINE(962);
    {
    {
    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 idnlit ****/


extern errcode g_expr_arg1();
extern errcode g_qinv();
extern errcode sequenceOPbottom();
extern errcode g_inv1();
extern errcode g_inv();
extern errcode g_expr_arg();
extern errcode g_envOPnewline();
extern errcode exOPget_current_ex_label();
struct OPS *seq_extend_of_expr_table;
struct OPS *seq_extend_of_expr_ops;
struct OPS *seq_extend_of_expr_ops;
OWNPTR seq_extend_of_expr_owns;
CLUREF STR__044;
CLUREF STR_g_137einvoke_072_040unhandled_040invoke_056apply_056typespec_056other_040;
CLUREF STR_specifications_040missing;
CLUREF STR_g_137einvoke_072_040unhandled_040invoke_056apply_056typespec_040;
CLUREF STR__054_040;
CLUREF STR__046;
CLUREF STR__051_073;
CLUREF STR_if_040_050;
CLUREF STR__040_041_075_040ERR_137ok_051_040goto_040;
static int g_einvoke_own_init = 0;

/**** BEGIN PROCEDURE g_einvoke ****/

errcode g_einvoke(e, stmt, ret_1)
CLUREF e;
CLUREF stmt;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
    CLUREF ap;
    CLUREF ct;
    CLUREF specs;
    CLUREF b;
    CLUREF el;
    CLUREF each_arg;
    CLUREF new_el;
    CLUREF reslist;
    CLUREF ty;
    CLUREF a;
    CLUREF val;
    CLUREF new_id;
    CLUREF o;
    CLUREF d;
    CLUREF cop;
    CLUREF n;
    CLUREF quick;
    CLUREF proc_id;
    CLUREF gen_proc_id;
    CLUREF first;
    CLUREF each_res;
        if (g_einvoke_own_init == 0) {
        add_parm_info_type(0, expr_ops, seq_extend_of_t_reqs);
        find_prociter_instance(seq_extend, 1, &seq_extend_ownreqs, &(seq_extend_of_expr_ops));
        stringOPcons("specifications for ", CLU_1, CLU_19, &STR_specifications_040for_040);
        stringOPcons(" missing.", CLU_1, CLU_9, &STR__040missing_056);
        stringOPcons("", CLU_1, CLU_0, &STR_);
        stringOPcons("$", CLU_1, CLU_1, &STR__044);
        stringOPcons("g_einvoke: unhandled invoke.apply.typespec.other ", CLU_1, CLU_49, &STR_g_137einvoke_072_040unhandled_040invoke_056apply_056typespec_056other_040);
        stringOPcons("specifications missing", CLU_1, CLU_22, &STR_specifications_040missing);
        stringOPcons("debug_print", CLU_1, CLU_11, &STR_debug_137print);
        stringOPcons("g_einvoke: unhandled invoke.apply.typespec ", CLU_1, CLU_43, &STR_g_137einvoke_072_040unhandled_040invoke_056apply_056typespec_040);
        stringOPcons(", ", CLU_1, CLU_2, &STR__054_040);
        stringOPcons("&", CLU_1, CLU_1, &STR__046);
        stringOPcons(");", CLU_1, CLU_2, &STR__051_073);
        stringOPcons("if (", CLU_1, CLU_4, &STR_if_040_050);
        stringOPcons(" != ERR_ok) goto ", CLU_1, CLU_17, &STR__040_041_075_040ERR_137ok_051_040goto_040);
        stringOPcons(";", CLU_1, CLU_1, &STR__073);
        g_einvoke_own_init = 1;
    }
    enter_proc(965);

  LINE(970);
    {
        {CLUREF T_1_1;
        T_1_1.num = stmt.vec->data[0];
        ap.num = T_1_1.num;
        }
        }

  LINE(971);
    {
    CLUREF T_1_1;
    err = exprOPget_abs(ap, &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(973);
            {
                {CLUREF T_2_1;
                CLUREF T_2_2;
                CLUREF T_2_3;
                T_2_1.num = ct.vec->data[0];
                err = duOPread_specs(T_2_1, &T_2_2, &T_2_3);
                if (err != ERR_ok) goto ex_0;
                specs.num = T_2_2.num;
                b.num = T_2_3.num;
                }
                }

  LINE(974);
            {
            CLUREF T_2_1;
            if (specs.cell->tag == 4) T_2_1.num = true; else T_2_1.num = false;
            if (T_2_1.num == true) {

  LINE(975);
                {
                CLUREF T_3_1;
                CLUREF T_3_2;
                CLUREF T_3_3;
                CLUREF T_3_4;
                T_3_1.num = ct.vec->data[0];
                err = duOPget_common(T_3_1, &T_3_2);
                if (err != ERR_ok) goto ex_0;
                err = stringOPconcat(STR_specifications_040for_040, T_3_2, &T_3_3);
                if (err != ERR_ok) goto ex_0;
                err = stringOPconcat(T_3_3, STR__040missing_056, &T_3_4);
                if (err != ERR_ok) goto ex_0;
                err = g_envOPerror(e, T_3_4);
                if (err != ERR_ok) goto ex_0;
                }

  LINE(977);
                {
                {signal (ERR_specs_missing);}}
                }
                }/* end if */
            break;
            }
    default: {
    }
    }
    }

  LINE(984);
    {
        {CLUREF T_1_1;
        err = sequenceOPnew(&T_1_1);
        if (err != ERR_ok) goto ex_0;
        el.num = T_1_1.num;
        }
        }

  LINE(985);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    CLUREF T_1_3;
    CLUREF T_1_4;
        T_1_1.num = stmt.vec->data[1];
        T_1_3.num = T_1_1.vec->size; 
        T_1_4 = T_1_1;
        for (T_1_2.num = 1; T_1_2.num <= T_1_3.num; T_1_2.num++) {
            each_arg.num = T_1_4.vec->data[T_1_2.num - 1];

  LINE(986);
            {
                {CLUREF T_2_1;
                err = g_expr_arg1(e, each_arg, &T_2_1);
                if (err != ERR_ok) goto ex_0;
                new_el.num = T_2_1.num;
                }
                }

  LINE(987);
            {
            CLUREF T_2_1;
            generic_CLU_proc.type_owns = 0;
            generic_CLU_proc.op_owns = (int)seq_extend_of_expr_ops->op_owns;
            generic_CLU_proc.proc = seq_extend;
            CUR_PROC_VAR.proc = &generic_CLU_proc;
            err = seq_extend(el, new_el, &T_2_1);
            if (err != ERR_ok) goto ex_0;
            el.num = T_2_1.num;
            }
        }
    }
    end_inline_for_1:;

  LINE(989);
    {
        {CLUREF T_1_1;
        err = sequenceOPnew(&T_1_1);
        if (err != ERR_ok) goto ex_0;
        reslist.num = T_1_1.num;
        }
        }

  LINE(993);
    {
        {CLUREF T_1_1;
        CLUREF T_1_2;
        T_1_1.num = stmt.vec->data[0];
        err = exprOPget_typespec(T_1_1, &T_1_2);
        if (err != ERR_ok) goto ex_0;
        ty.num = T_1_2.num;
        }
        }

  LINE(994);
    {
    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 2: 
         {CLUREF T_1_2;
        T_1_2.num = T_1_1.cell->value;
        a.num = T_1_2.num;

  LINE(996);
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            CLUREF T_2_3;
            CLUREF T_2_4;
                T_2_1.num = a.vec->data[3];
                T_2_3.num = T_2_1.vec->size; 
                T_2_4 = T_2_1;
                for (T_2_2.num = 1; T_2_2.num <= T_2_3.num; T_2_2.num++) {
                    val.num = T_2_4.vec->data[T_2_2.num - 1];

  LINE(997);
                    {
                        {CLUREF T_3_1;
                        err = tvOPidn_next(val, &T_3_1);
                        if (err != ERR_ok) goto ex_0;
                        new_id.num = T_3_1.num;
                        }
                        }

  LINE(998);
                    {
                    CLUREF T_3_1;
                    err = sequenceOPaddh(reslist, new_id, &T_3_1);
                    if (err != ERR_ok) goto ex_0;
                    reslist.num = T_3_1.num;
                    }
                }
            }
            end_inline_for_2:;
            break;
            }
    case 6: 
         {CLUREF T_1_3;
        T_1_3.num = T_1_1.cell->value;
        o.num = T_1_3.num;

  LINE(1001);
            {
            switch (o.cell->tag) {
            case 1: 
                 {CLUREF T_2_1;
                T_2_1.num = o.cell->value;
                d.num = T_2_1.num;

  LINE(1003);
                    {
                        {CLUREF T_3_1;
                        err = tvOPidn_next(ty, &T_3_1);
                        if (err != ERR_ok) goto ex_0;
                        new_id.num = T_3_1.num;
                        }
                        }

  LINE(1004);
                    {
                    CLUREF T_3_1;
                    err = sequenceOPaddh(reslist, new_id, &T_3_1);
                    if (err != ERR_ok) goto ex_0;
                    reslist.num = T_3_1.num;
                    }
                    break;
                    }
            case 2: 
                 {CLUREF T_2_2;
                T_2_2.num = o.cell->value;
                cop.num = T_2_2.num;

  LINE(1006);
                    {
                        {n = STR_;
                        }
                        }

  LINE(1007);
                    {
                    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 3: 
                         {CLUREF T_3_3;
                        T_3_3.num = T_3_2.cell->value;
                        ct.num = T_3_3.num;

  LINE(1009);
                            {
                            CLUREF T_4_1;
                            CLUREF T_4_2;
                            CLUREF T_4_3;
                            T_4_1.num = ct.vec->data[0];
                            err = duOPget_common(T_4_1, &T_4_2);
                            if (err != ERR_ok) goto ex_0;
                            err = stringOPconcat(T_4_2, STR__044, &T_4_3);
                            if (err != ERR_ok) goto ex_0;
                            n.num = T_4_3.num;
                            }
                            break;
                            }
                    default: {
                    }
                    }
                    }

  LINE(1012);
                    {
                    CLUREF T_3_1;
                    CLUREF T_3_2;
                    CLUREF T_3_3;
                    CLUREF T_3_4;
                    err = stringOPconcat(STR_specifications_040for_040, n, &T_3_1);
                    if (err != ERR_ok) goto ex_0;
                    T_3_2.num = cop.vec->data[0];
                    err = stringOPconcat(T_3_1, T_3_2, &T_3_3);
                    if (err != ERR_ok) goto ex_0;
                    err = stringOPconcat(T_3_3, STR__040missing_056, &T_3_4);
                    if (err != ERR_ok) goto ex_0;
                    err = g_envOPerror(e, T_3_4);
                    if (err != ERR_ok) goto ex_0;
                    }

  LINE(1014);
                    {
                    {signal (ERR_specs_missing);}}
                    break;
                    }
            default: {

  LINE(1016);
                {
                CLUREF T_3_1;
                CLUREF T_3_2;
                T_3_1.num = 410;
                err = compiler_logit(T_3_1, STR_g_137einvoke_072_040unhandled_040invoke_056apply_056typespec_056other_040, &T_3_2);
                if (err != ERR_ok) goto ex_0;
                }

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

  LINE(1018);
                {
                CLUREF T_3_1;
                CLUREF T_3_2;
                T_3_1.num = stmt.vec->data[0];
                T_3_2.num = -1;
                err = expr_print(T_3_1, T_3_2);
                if (err != ERR_ok) goto ex_0;
                }

  LINE(1019);
                {
                err = g_envOPerror(e, STR_specifications_040missing);
                if (err != ERR_ok) goto ex_0;
                }

  LINE(1020);
                {
                {signal (ERR_specs_missing);}}
            }
            }
            }
            break;
            }
    default: {

  LINE(1023);
        {
        CLUREF T_2_1;
        CLUREF T_2_2;
        CLUREF T_2_3;
        CLUREF T_2_4;
        CLUREF T_2_5;
        CLUREF T_2_6;
        CLUREF T_2_7;
        CLUREF T_2_8;
        CLUREF T_2_9;
        T_2_2.num = stmt.vec->data[0];
        err = exprOPget_abs(T_2_2, &T_2_3);
        if (err != ERR_ok) goto ex_0;
        if (T_2_3.cell->tag == 20) T_2_4.num = true; else T_2_4.num = false;
        T_2_1.num = T_2_4.num;
        if (T_2_4.num) {
            T_2_5.num = stmt.vec->data[0];
            err = exprOPget_abs(T_2_5, &T_2_6);
            if (err != ERR_ok) goto ex_0;
            if (T_2_6.cell->tag != 20) {err = ERR_wrong_tag; goto ex_0;}
            T_2_7.num = T_2_6.cell->value;
            T_2_8.num = T_2_7.vec->data[0];
            T_2_9.num = ((T_2_8.str->size != STR_debug_137print.str->size)? false :
                !(bcmp(T_2_8.str->data, STR_debug_137print.str->data, T_2_8.str->size)));
            T_2_1.num = T_2_9.num;
        }
        if (T_2_1.num == true) {
            }
        else {

  LINE(1027);
            {
            CLUREF T_3_1;
            CLUREF T_3_2;
            T_3_1.num = 411;
            err = compiler_logit(T_3_1, STR_g_137einvoke_072_040unhandled_040invoke_056apply_056typespec_040, &T_3_2);
            if (err != ERR_ok) goto ex_0;
            }

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

  LINE(1029);
            {
            CLUREF T_3_1;
            CLUREF T_3_2;
            T_3_1.num = stmt.vec->data[0];
            T_3_2.num = -2;
            err = expr_print(T_3_1, T_3_2);
            if (err != ERR_ok) goto ex_0;
            }

  LINE(1030);
            {
            err = g_envOPerror(e, STR_specifications_040missing);
            if (err != ERR_ok) goto ex_0;
            }

  LINE(1031);
            {
            {signal (ERR_specs_missing);}}
            }}/* end if */
    }
    }
    }

  LINE(1038);
    {
        {CLUREF T_1_1;
        CLUREF T_1_2;
        T_1_1.num = stmt.vec->data[0];
        err = g_qinv_test(T_1_1, &T_1_2);
        if (err != ERR_ok) goto ex_0;
        quick.num = T_1_2.num;
        }
        }

  LINE(1039);
    {
        {CLUREF T_1_1;
        T_1_1.num = stmt.vec->data[0];
        proc_id.num = T_1_1.num;
        }
        }

  LINE(1044);
    {
    if (quick.num == true) {

  LINE(1046);
        {
        err = g_qinv(e, proc_id, el, reslist);
        if (err != ERR_ok) goto ex_0;
        }
        }
    else {

  LINE(1048);
        {
            {CLUREF T_2_1;
            CLUREF T_2_2;
            CLUREF T_2_3;
            T_2_1.num = stmt.vec->data[0];
            err = g_inv1(e, T_2_1, &T_2_2);
            if (err != ERR_ok) goto ex_0;
            err = sequenceOPbottom(T_2_2, &T_2_3);
            if (err != ERR_ok) goto ex_0;
            gen_proc_id.num = T_2_3.num;
            }
            }

  LINE(1049);
        {
        err = g_inv(e, gen_proc_id, proc_id);
        if (err != ERR_ok) goto ex_0;
        }

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

  LINE(1051);
        {
        CLUREF T_2_1;
        CLUREF T_2_2;
        CLUREF T_2_3;
            T_2_2.num = el.vec->size; 
            T_2_3 = el;
            for (T_2_1.num = 1; T_2_1.num <= T_2_2.num; T_2_1.num++) {
                each_arg.num = T_2_3.vec->data[T_2_1.num - 1];

  LINE(1052);
                {
                CLUREF T_3_1;
                T_3_1.num = first.num ^ 1;
                if (T_3_1.num == true) {
                    {
                    err = g_envOPputs(e, STR__054_040);
                    if (err != ERR_ok) goto ex_0;
                    }
                    }
                else {
                    {
                    first.tf = false;
                    }
                    }}/* end if */

  LINE(1053);
                {
                err = g_expr_arg(e, each_arg);
                if (err != ERR_ok) goto ex_0;
                }
            }
        }
        end_inline_for_3:;

  LINE(1055);
        {
        CLUREF T_2_1;
        CLUREF T_2_2;
        CLUREF T_2_3;
            T_2_2.num = reslist.vec->size; 
            T_2_3 = reslist;
            for (T_2_1.num = 1; T_2_1.num <= T_2_2.num; T_2_1.num++) {
                each_res.num = T_2_3.vec->data[T_2_1.num - 1];

  LINE(1056);
                {
                CLUREF T_3_1;
                T_3_1.num = first.num ^ 1;
                if (T_3_1.num == true) {
                    {
                    err = g_envOPputs(e, STR__054_040);
                    if (err != ERR_ok) goto ex_0;
                    }
                    }
                else {
                    {
                    first.tf = false;
                    }
                    }}/* end if */

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

  LINE(1058);
                {
                err = g_expr_arg(e, each_res);
                if (err != ERR_ok) goto ex_0;
                }
            }
        }
        end_inline_for_4:;

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

  LINE(1061);
        {
        err = g_envOPnewline(e);
        if (err != ERR_ok) goto ex_0;
        }

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

  LINE(1063);
        {
        err = g_err(e);
        if (err != ERR_ok) goto ex_0;
        }

  LINE(1064);
        {
        CLUREF T_2_1;
        CLUREF T_2_2;
        CLUREF T_2_3;
        err = exOPget_current_ex_label(&T_2_1);
        if (err != ERR_ok) goto ex_0;
        err = stringOPconcat(STR__040_041_075_040ERR_137ok_051_040goto_040, T_2_1, &T_2_2);
        if (err != ERR_ok) goto ex_0;
        err = stringOPconcat(T_2_2, STR__073, &T_2_3);
        if (err != ERR_ok) goto ex_0;
        err = g_envOPputl(e, T_2_3);
        if (err != ERR_ok) goto ex_0;
        }
        }}/* end if */

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

/**** END PROCEDURE g_einvoke ****/


extern errcode type_parm_count();
extern errcode oneofOPvalue_13();
CLUREF STR__040_075_040proctypeOPnew_050CLU_137;
CLUREF STR__054_040_046;
CLUREF STR__041_075_040ERR_137ok_051_040goto_040;
CLUREF STR_g_137apply1_072_040wrong_137tag;
CLUREF STR__056proc_055_076type_137owns_040_075_0400_073;
CLUREF STR__056proc_055_076op_137owns_040_075_040;
CLUREF STR__055_076proc_040_075_040;
static int g_apply1_own_init = 0;

/**** BEGIN PROCEDURE g_apply1 ****/

errcode g_apply1(e, exp, ct, ret_1)
CLUREF e;
CLUREF exp;
CLUREF ct;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
    CLUREF parm_count;
    CLUREF parm_list;
    CLUREF gen;
    CLUREF proc_id;
    CLUREF ind;
        if (g_apply1_own_init == 0) {
        stringOPcons(" = proctypeOPnew(CLU_", CLU_1, CLU_21, &STR__040_075_040proctypeOPnew_050CLU_137);
        stringOPcons(", &", CLU_1, CLU_3, &STR__054_040_046);
        stringOPcons(");", CLU_1, CLU_2, &STR__051_073);
        stringOPcons("if (", CLU_1, CLU_4, &STR_if_040_050);
        stringOPcons("!= ERR_ok) goto ", CLU_1, CLU_16, &STR__041_075_040ERR_137ok_051_040goto_040);
        stringOPcons(";", CLU_1, CLU_1, &STR__073);
        stringOPcons("g_apply1: wrong_tag", CLU_1, CLU_19, &STR_g_137apply1_072_040wrong_137tag);
        stringOPcons(".proc->type_owns = 0;", CLU_1, CLU_21, &STR__056proc_055_076type_137owns_040_075_0400_073);
        stringOPcons(".proc->op_owns = ", CLU_1, CLU_17, &STR__056proc_055_076op_137owns_040_075_040);
        stringOPcons("_of_", CLU_1, CLU_4, &STR__137of_137);
        stringOPcons("_", CLU_1, CLU_1, &STR__137);
        stringOPcons("ops->op_owns;", CLU_1, CLU_13, &STR_ops_055_076op_137owns_073);
        stringOPcons("0;", CLU_1, CLU_2, &STR_0_073);
        stringOPcons("->proc = ", CLU_1, CLU_9, &STR__055_076proc_040_075_040);
        g_apply1_own_init = 1;
    }
    enter_proc(1070);

  LINE(1076);
    {
        {parm_count.num = 0;
        }
        }

  LINE(1077);
    {
        {CLUREF T_1_1;
        err = sequenceOPnew(&T_1_1);
        if (err != ERR_ok) goto ex_0;
        parm_list.num = T_1_1.num;
        }
        }

  LINE(1079);
    {
    CLUREF T_1_1;
    T_1_1.num = ct.vec->data[1];
    parm_list.num = T_1_1.num;
    }

  LINE(1080);
    {
    CLUREF T_1_1;
    T_1_1.num = ct.vec->data[0];
    gen.num = T_1_1.num;
    }

  LINE(1081);
    {
    CLUREF T_1_1;
    err = type_parm_count(parm_list, &T_1_1);
    if (err != ERR_ok) goto ex_0;
    parm_count.num = T_1_1.num;
    }

  LINE(1082);
    {
        {CLUREF T_1_1;
        CLUREF T_1_2;
        err = exprOPget_typespec(exp, &T_1_1);
        if (err != ERR_ok) goto ex_0;
        err = tvOPidn_next(T_1_1, &T_1_2);
        if (err != ERR_ok) goto ex_0;
        proc_id.num = T_1_2.num;
        }
        }

  LINE(1083);
    {
    err = g_err(e);
    if (err != ERR_ok) goto ex_0;
    }

  LINE(1084);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    CLUREF T_1_3;
    err = intOPunparse(parm_count, &T_1_1);
    if (err != ERR_ok) goto ex_0;
    err = stringOPconcat(STR__040_075_040proctypeOPnew_050CLU_137, T_1_1, &T_1_2);
    if (err != ERR_ok) goto ex_0;
    err = stringOPconcat(T_1_2, STR__054_040_046, &T_1_3);
    if (err != ERR_ok) goto ex_0;
    err = g_envOPputs(e, T_1_3);
    if (err != ERR_ok) goto ex_0;
    }

  LINE(1085);
    {
    err = g_expr2(e, proc_id);
    if (err != ERR_ok) goto ex_0;
    }

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

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

  LINE(1088);
    {
    err = g_err(e);
    if (err != ERR_ok) goto ex_0;
    }

  LINE(1089);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    CLUREF T_1_3;
    err = exOPget_current_ex_label(&T_1_1);
    if (err != ERR_ok) goto ex_0;
    err = stringOPconcat(STR__041_075_040ERR_137ok_051_040goto_040, T_1_1, &T_1_2);
    if (err != ERR_ok) goto ex_0;
    err = stringOPconcat(T_1_2, STR__073, &T_1_3);
    if (err != ERR_ok) goto ex_0;
    err = g_envOPputl(e, T_1_3);
    if (err != ERR_ok) goto ex_0;
    }

  LINE(1091);
    {
    CLUREF T_2_1;
    CLUREF T_2_2;
    err = exprOPget_abs(proc_id, &T_2_1);
    if (err != ERR_ok) goto ex_1;
    if (T_2_1.cell->tag != 13) {err = ERR_wrong_tag; goto ex_1;}
    T_2_2.num = T_2_1.cell->value;
    err = g_idnlit(e, T_2_2);
    if (err != ERR_ok) goto ex_1;
    }
        goto end_1;
        ex_1:
            if ((err == ERR_wrong_tag)) {

  LINE(1093);
                {
                CLUREF T_2_1;
                CLUREF T_2_2;
                T_2_1.num = 412;
                err = compiler_logit(T_2_1, STR_g_137apply1_072_040wrong_137tag, &T_2_2);
                if (err != ERR_ok) goto ex_0;
                }

  LINE(1094);
                {
                err = expr_print(proc_id, CLU_1);
                if (err != ERR_ok) goto ex_0;
                }
            }
            else {
                goto ex_0;
            }
        end_1:;

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

  LINE(1098);
    {
    CLUREF T_2_1;
    CLUREF T_2_2;
    err = exprOPget_abs(proc_id, &T_2_1);
    if (err != ERR_ok) goto ex_2;
    if (T_2_1.cell->tag != 13) {err = ERR_wrong_tag; goto ex_2;}
    T_2_2.num = T_2_1.cell->value;
    err = g_idnlit(e, T_2_2);
    if (err != ERR_ok) goto ex_2;
    }
        goto end_2;
        ex_2:
            if ((err == ERR_wrong_tag)) {

  LINE(1100);
                {
                CLUREF T_2_1;
                CLUREF T_2_2;
                T_2_1.num = 413;
                err = compiler_logit(T_2_1, STR_g_137apply1_072_040wrong_137tag, &T_2_2);
                if (err != ERR_ok) goto ex_0;
                }

  LINE(1101);
                {
                err = expr_print(proc_id, CLU_1);
                if (err != ERR_ok) goto ex_0;
                }
            }
            else {
                goto ex_0;
            }
        end_2:;

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

  LINE(1104);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    CLUREF T_1_3;
    T_1_1.num = parm_list.vec->size;
    T_1_2.num = (T_1_1.num == 0)? true : false;
    T_1_3.num = T_1_2.num ^ 1;
    if (T_1_3.num == true) {

  LINE(1106);
        {
        CLUREF T_2_1;
        err = s_owns_prefix_exprlist(parm_list, &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(1107);
        {
        CLUREF T_2_1;
        CLUREF T_2_2;
        err = duOPget_common(gen, &T_2_1);
        if (err != ERR_ok) goto ex_0;
        err = stringOPconcat(T_2_1, STR__137of_137, &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(1108);
        {
        CLUREF T_2_1;
        CLUREF T_2_2;
            T_2_2.num = parm_list.vec->size; 
            for (T_2_1.num = 1; T_2_1.num <= T_2_2.num; T_2_1.num++) {
                ind.num = T_2_1.num;

  LINE(1109);
                {
                CLUREF T_3_1;
                if (ind.num < 1 || ind.num > parm_list.vec->size ) {
                    err = ERR_bounds;
                    goto ex_0;}
                T_3_1.num = parm_list.vec->data[ind.num - 1];
                err = g_expr4(e, T_3_1);
                if (err != ERR_ok) goto ex_0;
                }

  LINE(1110);
                {
                err = g_envOPputs(e, STR__137);
                if (err != ERR_ok) goto ex_0;
                }
            }
        }
        end_inline_for_1:;

  LINE(1112);
        {
        err = g_envOPputl(e, STR_ops_055_076op_137owns_073);
        if (err != ERR_ok) goto ex_0;
        }
        }
    else {

  LINE(1114);
        {
        err = g_envOPputl(e, STR_0_073);
        if (err != ERR_ok) goto ex_0;
        }
        }}/* end if */

  LINE(1117);
    {
    err = g_expr2(e, proc_id);
    if (err != ERR_ok) goto ex_0;
    }

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

  LINE(1119);
    {
    err = g_expr2(e, exp);
    if (err != ERR_ok) goto ex_0;
    }

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

  LINE(1121);
    {
    {
    CLUREF T_1_1;
    err = sequenceOPfill(CLU_1, proc_id, &T_1_1);
    if (err != ERR_ok) goto ex_0;
    ret_1->num = T_1_1.num;
    }
    {signal (ERR_ok);}}
    goto end_0;
    ex_0:
        {
            if (err == ERR_failure) {signal(ERR_failure);}
            elist[0] = _pclu_erstr(err);
            {signal(ERR_failure);}
        }
    end_0: elist[0].str = no_return_values_STRING;
        {signal(ERR_failure);}
    }

/**** END PROCEDURE g_apply1 ****/


extern errcode base_cluster_test();
struct OPS *seq_extend_of_expr_table;
struct OPS *seq_extend_of_expr_ops;
struct OPS *seq_extend_of_expr_ops;
OWNPTR seq_extend_of_expr_owns;
CLUREF STR_g_137op1_072_040can_047t_040find_040du;
CLUREF STR_g_137op1_072_040wrong_137tag_0401;
CLUREF STR__056proc_055_076type_137owns_040_075_040;
CLUREF STR_g_137op1_072_040wrong_137tag_0402;
static int g_op1_own_init = 0;

/**** BEGIN PROCEDURE g_op1 ****/

errcode g_op1(e, exp, cop, ret_1)
CLUREF e;
CLUREF exp;
CLUREF cop;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
    CLUREF parm_count;
    CLUREF tparm_list;
    CLUREF parm_list;
    CLUREF flist;
    CLUREF gen;
    CLUREF type_parms_ct;
    CLUREF cop_name;
    CLUREF ct;
    CLUREF xa;
    CLUREF i;
    CLUREF proc_id;
    CLUREF ap;
    CLUREF field_count;
    CLUREF ind;
    CLUREF op_name;
    CLUREF ops_index;
    CLUREF sel_name;
        if (g_op1_own_init == 0) {
        add_parm_info_type(0, expr_ops, seq_extend_of_t_reqs);
        find_prociter_instance(seq_extend, 1, &seq_extend_ownreqs, &(seq_extend_of_expr_ops));
        stringOPcons(" = ", CLU_1, CLU_3, &STR__040_075_040);
        stringOPcons("_ops->", CLU_1, CLU_6, &STR__137ops_055_076);
        stringOPcons(".fcn;", CLU_1, CLU_5, &STR__056fcn_073);
        stringOPcons("g_op1: can\'t find du", CLU_1, CLU_20, &STR_g_137op1_072_040can_047t_040find_040du);
        stringOPcons(" = proctypeOPnew(CLU_", CLU_1, CLU_21, &STR__040_075_040proctypeOPnew_050CLU_137);
        stringOPcons(", &", CLU_1, CLU_3, &STR__054_040_046);
        stringOPcons(");", CLU_1, CLU_2, &STR__051_073);
        stringOPcons("if (", CLU_1, CLU_4, &STR_if_040_050);
        stringOPcons("!= ERR_ok) goto ", CLU_1, CLU_16, &STR__041_075_040ERR_137ok_051_040goto_040);
        stringOPcons(";", CLU_1, CLU_1, &STR__073);
        stringOPcons("g_op1: wrong_tag 1", CLU_1, CLU_18, &STR_g_137op1_072_040wrong_137tag_0401);
        stringOPcons(".proc->type_owns = ", CLU_1, CLU_19, &STR__056proc_055_076type_137owns_040_075_040);
        stringOPcons("_of_", CLU_1, CLU_4, &STR__137of_137);
        stringOPcons("_", CLU_1, CLU_1, &STR__137);
        stringOPcons("ops->type_owns;", CLU_1, CLU_15, &STR_ops_055_076type_137owns_073);
        stringOPcons("0;", CLU_1, CLU_2, &STR_0_073);
        stringOPcons("_op_", CLU_1, CLU_4, &STR__137op_137);
        stringOPcons(".proc->op_owns = ", CLU_1, CLU_17, &STR__056proc_055_076op_137owns_040_075_040);
        stringOPcons("ops->op_owns;", CLU_1, CLU_13, &STR_ops_055_076op_137owns_073);
        stringOPcons("g_op1: wrong_tag 2", CLU_1, CLU_18, &STR_g_137op1_072_040wrong_137tag_0402);
        stringOPcons("_ops->entry[", CLU_1, CLU_12, &STR__137ops_055_076entry_133);
        stringOPcons("].fcn->op_owns;", CLU_1, CLU_15, &STR__135_056fcn_055_076op_137owns_073);
        stringOPcons("->proc = ", CLU_1, CLU_9, &STR__055_076proc_040_075_040);
        g_op1_own_init = 1;
    }
    enter_proc(1124);

  LINE(1132);
    {
        {parm_count.num = 0;
        }
        }

  LINE(1133);
    {
        {CLUREF T_1_1;
        err = sequenceOPnew(&T_1_1);
        if (err != ERR_ok) goto ex_0;
        tparm_list.num = T_1_1.num;
        }
        }

  LINE(1134);
    {
        {CLUREF T_1_1;
        err = sequenceOPnew(&T_1_1);
        if (err != ERR_ok) goto ex_0;
        parm_list.num = T_1_1.num;
        }
        }

  LINE(1135);
    {
        {CLUREF T_1_1;
        err = sequenceOPnew(&T_1_1);
        if (err != ERR_ok) goto ex_0;
        flist.num = T_1_1.num;
        }
        }

  LINE(1137);
    {
        {type_parms_ct.num = 0;
        }
        }

  LINE(1138);
    {
        {CLUREF T_1_1;
        T_1_1.num = cop.vec->data[0];
        cop_name.num = T_1_1.num;
        }
        }

  LINE(1139);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    CLUREF T_1_3;
    err = stringOPfetch(cop_name, CLU_1, &T_1_1);
    if (err != ERR_ok) goto ex_0;
    T_1_2.ch = '%';
    T_1_3.num = (T_1_1.ch == T_1_2.ch)? true : false;
    if (T_1_3.num == true) {
        {
        CLUREF T_2_1;
        err = stringOPrest(cop_name, CLU_2, &T_2_1);
        if (err != ERR_ok) goto ex_0;
        cop_name.num = T_2_1.num;
        }
        }
        }/* end if */

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

  LINE(1142);
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            err = base_cluster_test(cop, 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(1143);
                {
                CLUREF T_3_1;
                T_3_1.num = ct.vec->data[0];
                gen.num = T_3_1.num;
                }

  LINE(1144);
                {
                CLUREF T_3_1;
                T_3_1.num = ct.vec->data[1];
                tparm_list.num = T_3_1.num;
                }

  LINE(1145);
                {
                CLUREF T_3_1;
                CLUREF T_3_2;
                CLUREF T_3_3;
                T_3_1.num = ct.vec->data[1];
                T_3_2.num = cop.vec->data[1];
                generic_CLU_proc.type_owns = 0;
                generic_CLU_proc.op_owns = (int)seq_extend_of_expr_ops->op_owns;
                generic_CLU_proc.proc = seq_extend;
                CUR_PROC_VAR.proc = &generic_CLU_proc;
                err = seq_extend(T_3_1, T_3_2, &T_3_3);
                if (err != ERR_ok) goto ex_0;
                parm_list.num = T_3_3.num;
                }

  LINE(1146);
                {
                CLUREF T_3_1;
                CLUREF T_3_2;
                T_3_1.num = ct.vec->data[1];
                T_3_2.num = T_3_1.vec->size;
                type_parms_ct.num = T_3_2.num;
                }
                }
                }/* end if */
            break;
            }
    case 8: 
         {CLUREF T_1_4;
        T_1_4.num = T_1_2.cell->value;
        ct.num = T_1_4.num;

  LINE(1152);
            {
            CLUREF T_2_1;
            T_2_1.num = ct.vec->data[0];
            gen.num = T_2_1.num;
            }

  LINE(1153);
            {
            CLUREF T_2_1;
            T_2_1.num = ct.vec->data[1];
            parm_list.num = T_2_1.num;
            }

  LINE(1154);
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            T_2_1.num = ct.vec->data[1];
            T_2_2.num = T_2_1.vec->size;
            type_parms_ct.num = T_2_2.num;
            }
            break;
            }
    case 7: 
         {CLUREF T_1_5;
        T_1_5.num = T_1_2.cell->value;
        xa.num = T_1_5.num;

  LINE(1156);
            {
            CLUREF T_2_1;
            T_2_1.num = xa.vec->data[0];
            gen.num = T_2_1.num;
            }

  LINE(1157);
            {
            CLUREF T_2_1;
            T_2_1.num = xa.vec->data[1];
            flist.num = T_2_1.num;
            }
            break;
            }
    case 5: 
         {CLUREF T_1_6;
        T_1_6.num = T_1_2.cell->value;
        i.num = T_1_6.num;

  LINE(1159);
            {
                {CLUREF T_2_1;
                CLUREF T_2_2;
                err = exprOPget_typespec(exp, &T_2_1);
                if (err != ERR_ok) goto ex_0;
                err = tvOPidn_next(T_2_1, &T_2_2);
                if (err != ERR_ok) goto ex_0;
                proc_id.num = T_2_2.num;
                }
                }

  LINE(1160);
            {
            err = g_expr2(e, proc_id);
            if (err != ERR_ok) goto ex_0;
            }

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

  LINE(1163);
            {
            CLUREF T_2_1;
            err = s_owns_prefix(i, &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(1164);
            {
            err = g_idnlit(e, i);
            if (err != ERR_ok) goto ex_0;
            }

  LINE(1165);
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            err = stringOPconcat(STR__137ops_055_076, cop_name, &T_2_1);
            if (err != ERR_ok) goto ex_0;
            err = stringOPconcat(T_2_1, STR__056fcn_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;
            }

  LINE(1166);
            {
            {
            CLUREF T_2_1;
            err = sequenceOPfill(CLU_1, proc_id, &T_2_1);
            if (err != ERR_ok) goto ex_0;
            ret_1->num = T_2_1.num;
            }
            {signal (ERR_ok);}}
            break;
            }
    case 2: 
         {CLUREF T_1_7;
        T_1_7.num = T_1_2.cell->value;
        ap.num = T_1_7.num;

  LINE(1168);
            {
            CLUREF T_2_1;
            T_2_1.num = ap.vec->data[1];
            gen.num = T_2_1.num;
            }
            break;
            }
    default: {

  LINE(1170);
        {
        CLUREF T_2_1;
        CLUREF T_2_2;
        T_2_1.num = 414;
        err = compiler_logit(T_2_1, STR_g_137op1_072_040can_047t_040find_040du, &T_2_2);
        if (err != ERR_ok) goto ex_0;
        }

  LINE(1171);
        {
        CLUREF T_2_1;
        T_2_1.num = cop.vec->data[2];
        err = typespec_print(T_2_1);
        if (err != ERR_ok) goto ex_0;
        }
    }
    }
    }

  LINE(1173);
    {
        {field_count.num = 0;
        }
        }

  LINE(1174);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    CLUREF T_1_3;
    T_1_1.num = flist.vec->size;
    T_1_2.num = (T_1_1.num == 0)? true : false;
    T_1_3.num = T_1_2.num ^ 1;
    if (T_1_3.num == true) {
        {
        field_count.num = 1;
        }
        }
        }/* end if */

  LINE(1175);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    err = type_parm_count(parm_list, &T_1_1);
    if (err != ERR_ok) goto ex_0;
    T_1_2.num = T_1_1.num + field_count.num;
     if ((T_1_2.num > 0 && T_1_1.num < 0 && field_count.num < 0) || 
         (T_1_2.num < 0 && T_1_1.num > 0 && field_count.num > 0)) {
        err = ERR_overflow;
        goto ex_0;}
    parm_count.num = T_1_2.num;
    }

  LINE(1176);
    {
        {CLUREF T_1_1;
        CLUREF T_1_2;
        err = exprOPget_typespec(exp, &T_1_1);
        if (err != ERR_ok) goto ex_0;
        err = tvOPidn_next(T_1_1, &T_1_2);
        if (err != ERR_ok) goto ex_0;
        proc_id.num = T_1_2.num;
        }
        }

  LINE(1177);
    {
    err = g_err(e);
    if (err != ERR_ok) goto ex_0;
    }

  LINE(1178);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    CLUREF T_1_3;
    err = intOPunparse(parm_count, &T_1_1);
    if (err != ERR_ok) goto ex_0;
    err = stringOPconcat(STR__040_075_040proctypeOPnew_050CLU_137, T_1_1, &T_1_2);
    if (err != ERR_ok) goto ex_0;
    err = stringOPconcat(T_1_2, STR__054_040_046, &T_1_3);
    if (err != ERR_ok) goto ex_0;
    err = g_envOPputs(e, T_1_3);
    if (err != ERR_ok) goto ex_0;
    }

  LINE(1179);
    {
    err = g_expr2(e, proc_id);
    if (err != ERR_ok) goto ex_0;
    }

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

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

  LINE(1182);
    {
    err = g_err(e);
    if (err != ERR_ok) goto ex_0;
    }

  LINE(1183);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    CLUREF T_1_3;
    err = exOPget_current_ex_label(&T_1_1);
    if (err != ERR_ok) goto ex_0;
    err = stringOPconcat(STR__041_075_040ERR_137ok_051_040goto_040, T_1_1, &T_1_2);
    if (err != ERR_ok) goto ex_0;
    err = stringOPconcat(T_1_2, STR__073, &T_1_3);
    if (err != ERR_ok) goto ex_0;
    err = g_envOPputl(e, T_1_3);
    if (err != ERR_ok) goto ex_0;
    }

  LINE(1184);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    CLUREF T_1_3;
    T_1_1.num = parm_list.vec->size;
    T_1_2.num = (T_1_1.num == 0)? true : false;
    T_1_3.num = T_1_2.num ^ 1;
    if (T_1_3.num == true) {

  LINE(1185);
        {
        CLUREF T_3_1;
        CLUREF T_3_2;
        err = exprOPget_abs(proc_id, &T_3_1);
        if (err != ERR_ok) goto ex_1;
        if (T_3_1.cell->tag != 13) {err = ERR_wrong_tag; goto ex_1;}
        T_3_2.num = T_3_1.cell->value;
        err = g_idnlit(e, T_3_2);
        if (err != ERR_ok) goto ex_1;
        }
            goto end_1;
            ex_1:
                if ((err == ERR_wrong_tag)) {

  LINE(1187);
                    {
                    CLUREF T_3_1;
                    CLUREF T_3_2;
                    T_3_1.num = 415;
                    err = compiler_logit(T_3_1, STR_g_137op1_072_040wrong_137tag_0401, &T_3_2);
                    if (err != ERR_ok) goto ex_0;
                    }

  LINE(1188);
                    {
                    err = expr_print(proc_id, CLU_1);
                    if (err != ERR_ok) goto ex_0;
                    }
                }
                else {
                    goto ex_0;
                }
            end_1:;

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

  LINE(1191);
        {
        CLUREF T_2_1;
        CLUREF T_2_2;
        T_2_1.num = (type_parms_ct.num == 0)? true : false;
        T_2_2.num = T_2_1.num ^ 1;
        if (T_2_2.num == true) {

  LINE(1193);
            {
            CLUREF T_3_1;
            CLUREF T_3_2;
            T_3_1.num = flist.vec->size;
            T_3_2.num = (T_3_1.num == 0)? true : false;
            if (T_3_2.num == true) {

  LINE(1195);
                {
                CLUREF T_4_1;
                err = s_owns_prefix_exprlist(tparm_list, &T_4_1);
                if (err != ERR_ok) goto ex_0;
                err = g_envOPputs(e, T_4_1);
                if (err != ERR_ok) goto ex_0;
                }
                }
            else {

  LINE(1197);
                {
                CLUREF T_4_1;
                err = s_owns_prefix_fieldlist(flist, &T_4_1);
                if (err != ERR_ok) goto ex_0;
                err = g_envOPputs(e, T_4_1);
                if (err != ERR_ok) goto ex_0;
                }
                }}/* end if */

  LINE(1199);
            {
            CLUREF T_3_1;
            CLUREF T_3_2;
            err = duOPget_common(gen, &T_3_1);
            if (err != ERR_ok) goto ex_0;
            err = stringOPconcat(T_3_1, STR__137of_137, &T_3_2);
            if (err != ERR_ok) goto ex_0;
            err = g_envOPputs(e, T_3_2);
            if (err != ERR_ok) goto ex_0;
            }

  LINE(1200);
            {
            CLUREF T_3_1;
            CLUREF T_3_2;
                T_3_2.num = type_parms_ct.num;
                for (T_3_1.num = 1; T_3_1.num <= T_3_2.num; T_3_1.num++) {
                    ind.num = T_3_1.num;

  LINE(1201);
                    {
                    CLUREF T_4_1;
                    if (ind.num < 1 || ind.num > parm_list.vec->size ) {
                        err = ERR_bounds;
                        goto ex_0;}
                    T_4_1.num = parm_list.vec->data[ind.num - 1];
                    err = g_expr4(e, T_4_1);
                    if (err != ERR_ok) goto ex_0;
                    }

  LINE(1202);
                    {
                    err = g_envOPputs(e, STR__137);
                    if (err != ERR_ok) goto ex_0;
                    }
                }
            }
            end_inline_for_1:;

  LINE(1204);
            {
            err = g_envOPputl(e, STR_ops_055_076type_137owns_073);
            if (err != ERR_ok) goto ex_0;
            }
            }
        else {

  LINE(1206);
            {
            err = g_envOPputl(e, STR_0_073);
            if (err != ERR_ok) goto ex_0;
            }
            }}/* end if */

  LINE(1208);
        {
        CLUREF T_2_1;
        CLUREF T_2_2;
        CLUREF T_2_3;
        T_2_1.num = parm_list.vec->size;
        T_2_2.num = (type_parms_ct.num == T_2_1.num)? true : false;
        T_2_3.num = T_2_2.num ^ 1;
        if (T_2_3.num == true) {

  LINE(1210);
            {
                {CLUREF T_3_1;
                err = stringOPconcat(STR__137op_137, cop_name, &T_3_1);
                if (err != ERR_ok) goto ex_0;
                op_name.num = T_3_1.num;
                }
                }

  LINE(1211);
            {
            CLUREF T_4_1;
            CLUREF T_4_2;
            err = exprOPget_abs(proc_id, &T_4_1);
            if (err != ERR_ok) goto ex_2;
            if (T_4_1.cell->tag != 13) {err = ERR_wrong_tag; goto ex_2;}
            T_4_2.num = T_4_1.cell->value;
            err = g_idnlit(e, T_4_2);
            if (err != ERR_ok) goto ex_2;
            }
                goto end_2;
                ex_2:
                    if ((err == ERR_wrong_tag)) {

  LINE(1213);
                        {
                        CLUREF T_4_1;
                        CLUREF T_4_2;
                        T_4_1.num = 416;
                        err = compiler_logit(T_4_1, STR_g_137op1_072_040wrong_137tag_0401, &T_4_2);
                        if (err != ERR_ok) goto ex_0;
                        }

  LINE(1214);
                        {
                        err = expr_print(proc_id, CLU_1);
                        if (err != ERR_ok) goto ex_0;
                        }
                    }
                    else {
                        goto ex_0;
                    }
                end_2:;

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

  LINE(1217);
            {
            CLUREF T_3_1;
            err = s_owns_prefix_exprlist(parm_list, &T_3_1);
            if (err != ERR_ok) goto ex_0;
            err = g_envOPputs(e, T_3_1);
            if (err != ERR_ok) goto ex_0;
            }

  LINE(1218);
            {
            CLUREF T_3_1;
            CLUREF T_3_2;
            CLUREF T_3_3;
            err = duOPget_common(gen, &T_3_1);
            if (err != ERR_ok) goto ex_0;
            err = stringOPconcat(T_3_1, op_name, &T_3_2);
            if (err != ERR_ok) goto ex_0;
            err = stringOPconcat(T_3_2, STR__137of_137, &T_3_3);
            if (err != ERR_ok) goto ex_0;
            err = g_envOPputs(e, T_3_3);
            if (err != ERR_ok) goto ex_0;
            }

  LINE(1219);
            {
            CLUREF T_3_1;
            CLUREF T_3_2;
                T_3_2.num = parm_list.vec->size; 
                for (T_3_1.num = 1; T_3_1.num <= T_3_2.num; T_3_1.num++) {
                    ind.num = T_3_1.num;

  LINE(1220);
                    {
                    CLUREF T_4_1;
                    if (ind.num < 1 || ind.num > parm_list.vec->size ) {
                        err = ERR_bounds;
                        goto ex_0;}
                    T_4_1.num = parm_list.vec->data[ind.num - 1];
                    err = g_expr4(e, T_4_1);
                    if (err != ERR_ok) goto ex_0;
                    }

  LINE(1221);
                    {
                    err = g_envOPputs(e, STR__137);
                    if (err != ERR_ok) goto ex_0;
                    }
                }
            }
            end_inline_for_2:;

  LINE(1223);
            {
            err = g_envOPputl(e, STR_ops_055_076op_137owns_073);
            if (err != ERR_ok) goto ex_0;
            }
            }
            }/* end if */
        }
        }/* end if */

  LINE(1226);
    {
    CLUREF T_2_1;
    CLUREF T_2_2;
    CLUREF T_2_3;
    T_2_1.num = flist.vec->size;
    T_2_2.num = (T_2_1.num == 0)? true : false;
    T_2_3.num = T_2_2.num ^ 1;
    if (T_2_3.num == true) {

  LINE(1227);
        {
            {CLUREF T_3_1;
            CLUREF T_3_2;
            CLUREF T_3_3;
            err = duOPget_common(gen, &T_3_1);
            if (err != ERR_ok) goto ex_3;
            T_3_2.num = cop.vec->data[0];
            err = g_ops_index(T_3_1, T_3_2, &T_3_3);
            if (err != ERR_ok) goto ex_3;
            ops_index.num = T_3_3.num;
            }
            }

  LINE(1228);
        {
            {CLUREF T_3_1;
            err = make_sel_name(flist, &T_3_1);
            if (err != ERR_ok) goto ex_3;
            sel_name.num = T_3_1.num;
            }
            }

  LINE(1229);
        {
        CLUREF T_4_1;
        CLUREF T_4_2;
        err = exprOPget_abs(proc_id, &T_4_1);
        if (err != ERR_ok) goto ex_4;
        if (T_4_1.cell->tag != 13) {err = ERR_wrong_tag; goto ex_4;}
        T_4_2.num = T_4_1.cell->value;
        err = g_idnlit(e, T_4_2);
        if (err != ERR_ok) goto ex_4;
        }
            goto end_4;
            ex_4:
                if ((err == ERR_wrong_tag)) {

  LINE(1231);
                    {
                    CLUREF T_4_1;
                    CLUREF T_4_2;
                    T_4_1.num = 417;
                    err = compiler_logit(T_4_1, STR_g_137op1_072_040wrong_137tag_0402, &T_4_2);
                    if (err != ERR_ok) goto ex_3;
                    }

  LINE(1232);
                    {
                    err = expr_print(proc_id, CLU_1);
                    if (err != ERR_ok) goto ex_3;
                    }
                }
                else {
                    goto ex_3;
                }
            end_4:;

  LINE(1234);
        {
        err = g_envOPputs(e, STR__056proc_055_076op_137owns_040_075_040);
        if (err != ERR_ok) goto ex_3;
        }

  LINE(1235);
        {
        CLUREF T_3_1;
        err = s_owns_prefix_fieldlist(flist, &T_3_1);
        if (err != ERR_ok) goto ex_3;
        err = g_envOPputs(e, T_3_1);
        if (err != ERR_ok) goto ex_3;
        }

  LINE(1236);
        {
        CLUREF T_3_1;
        CLUREF T_3_2;
        CLUREF T_3_3;
        err = duOPget_common(gen, &T_3_1);
        if (err != ERR_ok) goto ex_3;
        err = stringOPconcat(T_3_1, STR__137, &T_3_2);
        if (err != ERR_ok) goto ex_3;
        err = stringOPconcat(T_3_2, sel_name, &T_3_3);
        if (err != ERR_ok) goto ex_3;
        err = g_envOPputs(e, T_3_3);
        if (err != ERR_ok) goto ex_3;
        }

  LINE(1237);
        {
        CLUREF T_3_1;
        CLUREF T_3_2;
        CLUREF T_3_3;
        err = intOPunparse(ops_index, &T_3_1);
        if (err != ERR_ok) goto ex_3;
        err = stringOPconcat(STR__137ops_055_076entry_133, T_3_1, &T_3_2);
        if (err != ERR_ok) goto ex_3;
        err = stringOPconcat(T_3_2, STR__135_056fcn_055_076op_137owns_073, &T_3_3);
        if (err != ERR_ok) goto ex_3;
        err = g_envOPputl(e, T_3_3);
        if (err != ERR_ok) goto ex_3;
        }
        }
        }/* end if */
        goto end_3;
        ex_3:
            if ((err == ERR_not_found)) {
            }
            else {
                goto ex_0;
            }
        end_3:;

  LINE(1246);
    {
    err = g_expr2(e, proc_id);
    if (err != ERR_ok) goto ex_0;
    }

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

  LINE(1248);
    {
    err = g_expr2(e, exp);
    if (err != ERR_ok) goto ex_0;
    }

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

  LINE(1250);
    {
    {
    CLUREF T_1_1;
    err = sequenceOPfill(CLU_1, proc_id, &T_1_1);
    if (err != ERR_ok) goto ex_0;
    ret_1->num = T_1_1.num;
    }
    {signal (ERR_ok);}}
    goto end_0;
    ex_0:
        {
            if (err == ERR_failure) {signal(ERR_failure);}
            elist[0] = _pclu_erstr(err);
            {signal(ERR_failure);}
        }
    end_0: elist[0].str = no_return_values_STRING;
        {signal(ERR_failure);}
    }

/**** END PROCEDURE g_op1 ****/


CLUREF STR_oneof;
CLUREF STR_equal;
CLUREF STR_similar;
CLUREF STR_copy;
CLUREF STR_print;
CLUREF STR_encode;
CLUREF STR_decode;
CLUREF STR__137gcd;
CLUREF STR_variant;
CLUREF STR_similar1;
CLUREF STR_record;
CLUREF STR_struct;
static int g_ops_index_own_init = 0;

/**** BEGIN PROCEDURE g_ops_index ****/

errcode g_ops_index(sel, oper, ret_1)
CLUREF sel;
CLUREF oper;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
        if (g_ops_index_own_init == 0) {
        stringOPcons("oneof", CLU_1, CLU_5, &STR_oneof);
        stringOPcons("equal", CLU_1, CLU_5, &STR_equal);
        stringOPcons("similar", CLU_1, CLU_7, &STR_similar);
        stringOPcons("copy", CLU_1, CLU_4, &STR_copy);
        stringOPcons("print", CLU_1, CLU_5, &STR_print);
        stringOPcons("encode", CLU_1, CLU_6, &STR_encode);
        stringOPcons("decode", CLU_1, CLU_6, &STR_decode);
        stringOPcons("_gcd", CLU_1, CLU_4, &STR__137gcd);
        stringOPcons("debug_print", CLU_1, CLU_11, &STR_debug_137print);
        stringOPcons("variant", CLU_1, CLU_7, &STR_variant);
        stringOPcons("similar1", CLU_1, CLU_8, &STR_similar1);
        stringOPcons("record", CLU_1, CLU_6, &STR_record);
        stringOPcons("struct", CLU_1, CLU_6, &STR_struct);
        g_ops_index_own_init = 1;
    }
    enter_proc(1257);

  LINE(1258);
    {
    CLUREF T_1_1;
    T_1_1.num = ((sel.str->size != STR_oneof.str->size)? false :
        !(bcmp(sel.str->data, STR_oneof.str->data, sel.str->size)));
    if (T_1_1.num == true) {

  LINE(1259);
        {
        CLUREF T_2_1;
        T_2_1.num = ((oper.str->size != STR_equal.str->size)? false :
            !(bcmp(oper.str->data, STR_equal.str->data, oper.str->size)));
        if (T_2_1.num == true) {
            {
            {
            ret_1->num = 0;
            }
            {signal (ERR_ok);}}
            }
            }/* end if */

  LINE(1260);
        {
        CLUREF T_2_1;
        T_2_1.num = ((oper.str->size != STR_similar.str->size)? false :
            !(bcmp(oper.str->data, STR_similar.str->data, oper.str->size)));
        if (T_2_1.num == true) {
            {
            {
            ret_1->num = 1;
            }
            {signal (ERR_ok);}}
            }
            }/* end if */

  LINE(1261);
        {
        CLUREF T_2_1;
        T_2_1.num = ((oper.str->size != STR_copy.str->size)? false :
            !(bcmp(oper.str->data, STR_copy.str->data, oper.str->size)));
        if (T_2_1.num == true) {
            {
            {
            ret_1->num = 2;
            }
            {signal (ERR_ok);}}
            }
            }/* end if */

  LINE(1262);
        {
        CLUREF T_2_1;
        T_2_1.num = ((oper.str->size != STR_print.str->size)? false :
            !(bcmp(oper.str->data, STR_print.str->data, oper.str->size)));
        if (T_2_1.num == true) {
            {
            {
            ret_1->num = 3;
            }
            {signal (ERR_ok);}}
            }
            }/* end if */

  LINE(1263);
        {
        CLUREF T_2_1;
        T_2_1.num = ((oper.str->size != STR_encode.str->size)? false :
            !(bcmp(oper.str->data, STR_encode.str->data, oper.str->size)));
        if (T_2_1.num == true) {
            {
            {
            ret_1->num = 4;
            }
            {signal (ERR_ok);}}
            }
            }/* end if */

  LINE(1264);
        {
        CLUREF T_2_1;
        T_2_1.num = ((oper.str->size != STR_decode.str->size)? false :
            !(bcmp(oper.str->data, STR_decode.str->data, oper.str->size)));
        if (T_2_1.num == true) {
            {
            {
            ret_1->num = 5;
            }
            {signal (ERR_ok);}}
            }
            }/* end if */

  LINE(1265);
        {
        CLUREF T_2_1;
        T_2_1.num = ((oper.str->size != STR__137gcd.str->size)? false :
            !(bcmp(oper.str->data, STR__137gcd.str->data, oper.str->size)));
        if (T_2_1.num == true) {
            {
            {
            ret_1->num = 6;
            }
            {signal (ERR_ok);}}
            }
            }/* end if */

  LINE(1266);
        {
        CLUREF T_2_1;
        T_2_1.num = ((oper.str->size != STR_debug_137print.str->size)? false :
            !(bcmp(oper.str->data, STR_debug_137print.str->data, oper.str->size)));
        if (T_2_1.num == true) {
            {
            {
            ret_1->num = 7;
            }
            {signal (ERR_ok);}}
            }
            }/* end if */
        }
        }/* end if */

  LINE(1268);
    {
    CLUREF T_1_1;
    T_1_1.num = ((sel.str->size != STR_variant.str->size)? false :
        !(bcmp(sel.str->data, STR_variant.str->data, sel.str->size)));
    if (T_1_1.num == true) {

  LINE(1269);
        {
        CLUREF T_2_1;
        T_2_1.num = ((oper.str->size != STR_similar.str->size)? false :
            !(bcmp(oper.str->data, STR_similar.str->data, oper.str->size)));
        if (T_2_1.num == true) {
            {
            {
            ret_1->num = 0;
            }
            {signal (ERR_ok);}}
            }
            }/* end if */

  LINE(1270);
        {
        CLUREF T_2_1;
        T_2_1.num = ((oper.str->size != STR_similar1.str->size)? false :
            !(bcmp(oper.str->data, STR_similar1.str->data, oper.str->size)));
        if (T_2_1.num == true) {
            {
            {
            ret_1->num = 1;
            }
            {signal (ERR_ok);}}
            }
            }/* end if */

  LINE(1271);
        {
        CLUREF T_2_1;
        T_2_1.num = ((oper.str->size != STR_copy.str->size)? false :
            !(bcmp(oper.str->data, STR_copy.str->data, oper.str->size)));
        if (T_2_1.num == true) {
            {
            {
            ret_1->num = 2;
            }
            {signal (ERR_ok);}}
            }
            }/* end if */

  LINE(1272);
        {
        CLUREF T_2_1;
        T_2_1.num = ((oper.str->size != STR_print.str->size)? false :
            !(bcmp(oper.str->data, STR_print.str->data, oper.str->size)));
        if (T_2_1.num == true) {
            {
            {
            ret_1->num = 3;
            }
            {signal (ERR_ok);}}
            }
            }/* end if */

  LINE(1273);
        {
        CLUREF T_2_1;
        T_2_1.num = ((oper.str->size != STR_encode.str->size)? false :
            !(bcmp(oper.str->data, STR_encode.str->data, oper.str->size)));
        if (T_2_1.num == true) {
            {
            {
            ret_1->num = 4;
            }
            {signal (ERR_ok);}}
            }
            }/* end if */

  LINE(1274);
        {
        CLUREF T_2_1;
        T_2_1.num = ((oper.str->size != STR_decode.str->size)? false :
            !(bcmp(oper.str->data, STR_decode.str->data, oper.str->size)));
        if (T_2_1.num == true) {
            {
            {
            ret_1->num = 5;
            }
            {signal (ERR_ok);}}
            }
            }/* end if */

  LINE(1275);
        {
        CLUREF T_2_1;
        T_2_1.num = ((oper.str->size != STR__137gcd.str->size)? false :
            !(bcmp(oper.str->data, STR__137gcd.str->data, oper.str->size)));
        if (T_2_1.num == true) {
            {
            {
            ret_1->num = 6;
            }
            {signal (ERR_ok);}}
            }
            }/* end if */

  LINE(1276);
        {
        CLUREF T_2_1;
        T_2_1.num = ((oper.str->size != STR_debug_137print.str->size)? false :
            !(bcmp(oper.str->data, STR_debug_137print.str->data, oper.str->size)));
        if (T_2_1.num == true) {
            {
            {
            ret_1->num = 7;
            }
            {signal (ERR_ok);}}
            }
            }/* end if */
        }
        }/* end if */

  LINE(1278);
    {
    CLUREF T_1_1;
    T_1_1.num = ((sel.str->size != STR_record.str->size)? false :
        !(bcmp(sel.str->data, STR_record.str->data, sel.str->size)));
    if (T_1_1.num == true) {

  LINE(1279);
        {
        CLUREF T_2_1;
        T_2_1.num = ((oper.str->size != STR_similar.str->size)? false :
            !(bcmp(oper.str->data, STR_similar.str->data, oper.str->size)));
        if (T_2_1.num == true) {
            {
            {
            ret_1->num = 0;
            }
            {signal (ERR_ok);}}
            }
            }/* end if */

  LINE(1280);
        {
        CLUREF T_2_1;
        T_2_1.num = ((oper.str->size != STR_similar1.str->size)? false :
            !(bcmp(oper.str->data, STR_similar1.str->data, oper.str->size)));
        if (T_2_1.num == true) {
            {
            {
            ret_1->num = 1;
            }
            {signal (ERR_ok);}}
            }
            }/* end if */

  LINE(1281);
        {
        CLUREF T_2_1;
        T_2_1.num = ((oper.str->size != STR_copy.str->size)? false :
            !(bcmp(oper.str->data, STR_copy.str->data, oper.str->size)));
        if (T_2_1.num == true) {
            {
            {
            ret_1->num = 2;
            }
            {signal (ERR_ok);}}
            }
            }/* end if */

  LINE(1282);
        {
        CLUREF T_2_1;
        T_2_1.num = ((oper.str->size != STR_print.str->size)? false :
            !(bcmp(oper.str->data, STR_print.str->data, oper.str->size)));
        if (T_2_1.num == true) {
            {
            {
            ret_1->num = 3;
            }
            {signal (ERR_ok);}}
            }
            }/* end if */

  LINE(1283);
        {
        CLUREF T_2_1;
        T_2_1.num = ((oper.str->size != STR_encode.str->size)? false :
            !(bcmp(oper.str->data, STR_encode.str->data, oper.str->size)));
        if (T_2_1.num == true) {
            {
            {
            ret_1->num = 4;
            }
            {signal (ERR_ok);}}
            }
            }/* end if */

  LINE(1284);
        {
        CLUREF T_2_1;
        T_2_1.num = ((oper.str->size != STR_decode.str->size)? false :
            !(bcmp(oper.str->data, STR_decode.str->data, oper.str->size)));
        if (T_2_1.num == true) {
            {
            {
            ret_1->num = 5;
            }
            {signal (ERR_ok);}}
            }
            }/* end if */

  LINE(1285);
        {
        CLUREF T_2_1;
        T_2_1.num = ((oper.str->size != STR__137gcd.str->size)? false :
            !(bcmp(oper.str->data, STR__137gcd.str->data, oper.str->size)));
        if (T_2_1.num == true) {
            {
            {
            ret_1->num = 6;
            }
            {signal (ERR_ok);}}
            }
            }/* end if */

  LINE(1286);
        {
        CLUREF T_2_1;
        T_2_1.num = ((oper.str->size != STR_debug_137print.str->size)? false :
            !(bcmp(oper.str->data, STR_debug_137print.str->data, oper.str->size)));
        if (T_2_1.num == true) {
            {
            {
            ret_1->num = 7;
            }
            {signal (ERR_ok);}}
            }
            }/* end if */
        }
        }/* end if */

  LINE(1288);
    {
    CLUREF T_1_1;
    T_1_1.num = ((sel.str->size != STR_struct.str->size)? false :
        !(bcmp(sel.str->data, STR_struct.str->data, sel.str->size)));
    if (T_1_1.num == true) {

  LINE(1289);
        {
        CLUREF T_2_1;
        T_2_1.num = ((oper.str->size != STR_equal.str->size)? false :
            !(bcmp(oper.str->data, STR_equal.str->data, oper.str->size)));
        if (T_2_1.num == true) {
            {
            {
            ret_1->num = 0;
            }
            {signal (ERR_ok);}}
            }
            }/* end if */

  LINE(1290);
        {
        CLUREF T_2_1;
        T_2_1.num = ((oper.str->size != STR_similar.str->size)? false :
            !(bcmp(oper.str->data, STR_similar.str->data, oper.str->size)));
        if (T_2_1.num == true) {
            {
            {
            ret_1->num = 1;
            }
            {signal (ERR_ok);}}
            }
            }/* end if */

  LINE(1291);
        {
        CLUREF T_2_1;
        T_2_1.num = ((oper.str->size != STR_copy.str->size)? false :
            !(bcmp(oper.str->data, STR_copy.str->data, oper.str->size)));
        if (T_2_1.num == true) {
            {
            {
            ret_1->num = 2;
            }
            {signal (ERR_ok);}}
            }
            }/* end if */

  LINE(1292);
        {
        CLUREF T_2_1;
        T_2_1.num = ((oper.str->size != STR_print.str->size)? false :
            !(bcmp(oper.str->data, STR_print.str->data, oper.str->size)));
        if (T_2_1.num == true) {
            {
            {
            ret_1->num = 3;
            }
            {signal (ERR_ok);}}
            }
            }/* end if */

  LINE(1293);
        {
        CLUREF T_2_1;
        T_2_1.num = ((oper.str->size != STR_encode.str->size)? false :
            !(bcmp(oper.str->data, STR_encode.str->data, oper.str->size)));
        if (T_2_1.num == true) {
            {
            {
            ret_1->num = 4;
            }
            {signal (ERR_ok);}}
            }
            }/* end if */

  LINE(1294);
        {
        CLUREF T_2_1;
        T_2_1.num = ((oper.str->size != STR_decode.str->size)? false :
            !(bcmp(oper.str->data, STR_decode.str->data, oper.str->size)));
        if (T_2_1.num == true) {
            {
            {
            ret_1->num = 5;
            }
            {signal (ERR_ok);}}
            }
            }/* end if */

  LINE(1295);
        {
        CLUREF T_2_1;
        T_2_1.num = ((oper.str->size != STR__137gcd.str->size)? false :
            !(bcmp(oper.str->data, STR__137gcd.str->data, oper.str->size)));
        if (T_2_1.num == true) {
            {
            {
            ret_1->num = 6;
            }
            {signal (ERR_ok);}}
            }
            }/* end if */

  LINE(1296);
        {
        CLUREF T_2_1;
        T_2_1.num = ((oper.str->size != STR_debug_137print.str->size)? false :
            !(bcmp(oper.str->data, STR_debug_137print.str->data, oper.str->size)));
        if (T_2_1.num == true) {
            {
            {
            ret_1->num = 7;
            }
            {signal (ERR_ok);}}
            }
            }/* end if */
        }
        }/* end if */

  LINE(1298);
    {
    {signal (ERR_not_found);}}
    goto end_0;
    ex_0:
        {
            if (err == ERR_failure) {signal(ERR_failure);}
            elist[0] = _pclu_erstr(err);
            {signal(ERR_failure);}
        }
    end_0: elist[0].str = no_return_values_STRING;
        {signal(ERR_failure);}
    }

/**** END PROCEDURE g_ops_index ****/


extern errcode s_owns_prefix_expr();
CLUREF STR_generic_137CLU_137proc_056type_137owns_040_075_040_050OWNPTR_051;
CLUREF STR__137ops_055_076type_137owns_073;
CLUREF STR_generic_137CLU_137proc_056op_137owns_040_075_040_050OWNPTR_051;
CLUREF STR__137ops_055_076op_137owns_073;
CLUREF STR_generic_137CLU_137proc_056proc_040_075_040_137anyize_073;
CLUREF STR__040_075_040generic_137CLU_137proc_056proc_050;
static int g_anyize_own_init = 0;

/**** BEGIN PROCEDURE g_anyize ****/

errcode g_anyize(e, exp, ret_1)
CLUREF e;
CLUREF exp;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
    CLUREF res;
    CLUREF el;
    CLUREF pref;
        if (g_anyize_own_init == 0) {
        stringOPcons("generic_CLU_proc.type_owns = (OWNPTR)", CLU_1, CLU_37, &STR_generic_137CLU_137proc_056type_137owns_040_075_040_050OWNPTR_051);
        stringOPcons("_ops->type_owns;", CLU_1, CLU_16, &STR__137ops_055_076type_137owns_073);
        stringOPcons("generic_CLU_proc.op_owns = (OWNPTR)", CLU_1, CLU_35, &STR_generic_137CLU_137proc_056op_137owns_040_075_040_050OWNPTR_051);
        stringOPcons("_ops->op_owns;", CLU_1, CLU_14, &STR__137ops_055_076op_137owns_073);
        stringOPcons("generic_CLU_proc.proc = _anyize;", CLU_1, CLU_32, &STR_generic_137CLU_137proc_056proc_040_075_040_137anyize_073);
        stringOPcons("CUR_PROC_VAR.proc = &generic_CLU_proc;", CLU_1, CLU_38, &STR_CUR_137PROC_137VAR_056proc_040_075_040_046generic_137CLU_137proc_073);
        stringOPcons(" = generic_CLU_proc.proc(", CLU_1, CLU_25, &STR__040_075_040generic_137CLU_137proc_056proc_050);
        stringOPcons(", &", CLU_1, CLU_3, &STR__054_040_046);
        stringOPcons(");", CLU_1, CLU_2, &STR__051_073);
        g_anyize_own_init = 1;
    }
    enter_proc(1301);

  LINE(1305);
    {
        {CLUREF T_1_1;
        CLUREF T_1_2;
        err = exprOPget_typespec(exp, &T_1_1);
        if (err != ERR_ok) goto ex_0;
        err = tvOPidn_next(T_1_1, &T_1_2);
        if (err != ERR_ok) goto ex_0;
        res.num = T_1_2.num;
        }
        }

  LINE(1306);
    {
        {CLUREF T_1_1;
        err = g_expr1(e, exp, &T_1_1);
        if (err != ERR_ok) goto ex_0;
        el.num = T_1_1.num;
        }
        }

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

  LINE(1308);
    {
        {CLUREF T_1_1;
        err = s_owns_prefix_expr(exp, &T_1_1);
        if (err != ERR_ok) goto ex_0;
        pref.num = T_1_1.num;
        }
        }

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

  LINE(1310);
    {
    CLUREF T_1_1;
    err = exprOPget_typespec(exp, &T_1_1);
    if (err != ERR_ok) goto ex_0;
    err = g_name_typespec(e, T_1_1);
    if (err != ERR_ok) goto ex_0;
    }

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

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

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

  LINE(1314);
    {
    CLUREF T_1_1;
    err = exprOPget_typespec(exp, &T_1_1);
    if (err != ERR_ok) goto ex_0;
    err = g_name_typespec(e, T_1_1);
    if (err != ERR_ok) goto ex_0;
    }

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

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

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

  LINE(1318);
    {
    err = g_err(e);
    if (err != ERR_ok) goto ex_0;
    }

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

  LINE(1320);
    {
    CLUREF T_1_1;
    err = sequenceOPbottom(el, &T_1_1);
    if (err != ERR_ok) goto ex_0;
    err = g_expr_arg(e, T_1_1);
    if (err != ERR_ok) goto ex_0;
    }

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

  LINE(1322);
    {
    err = g_expr_arg(e, res);
    if (err != ERR_ok) goto ex_0;
    }

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

  LINE(1324);
    {
    {
    CLUREF T_1_1;
    err = sequenceOPfill(CLU_1, res, &T_1_1);
    if (err != ERR_ok) goto ex_0;
    ret_1->num = T_1_1.num;
    }
    {signal (ERR_ok);}}
    goto end_0;
    ex_0:
        {
            if (err == ERR_failure) {signal(ERR_failure);}
            elist[0] = _pclu_erstr(err);
            {signal(ERR_failure);}
        }
    end_0: elist[0].str = no_return_values_STRING;
        {signal(ERR_failure);}
    }

/**** END PROCEDURE g_anyize ****/


extern errcode g_envOPindent();
extern errcode g_envOPoutdent();
CLUREF STR__041;
CLUREF STR__051_040_173;
CLUREF STR__175;
static int g_condop_own_init = 0;

/**** BEGIN PROCEDURE g_condop ****/

errcode g_condop(e, cop, opn, ret_1)
CLUREF e;
CLUREF cop;
CLUREF opn;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
    CLUREF res;
    CLUREF randl;
    CLUREF randr;
        if (g_condop_own_init == 0) {
        stringOPcons(" = ", CLU_1, CLU_3, &STR__040_075_040);
        stringOPcons(";", CLU_1, CLU_1, &STR__073);
        stringOPcons("if (", CLU_1, CLU_4, &STR_if_040_050);
        stringOPcons("cor", CLU_1, CLU_3, &STR_cor);
        stringOPcons("!", CLU_1, CLU_1, &STR__041);
        stringOPcons(") {", CLU_1, CLU_3, &STR__051_040_173);
        stringOPcons("}", CLU_1, CLU_1, &STR__175);
        g_condop_own_init = 1;
    }
    enter_proc(1327);

  LINE(1332);
    {
        {CLUREF T_1_1;
        CLUREF T_1_2;
        CLUREF T_1_3;
        err = g_envOPget_comp(e, &T_1_1);
        if (err != ERR_ok) goto ex_0;
        err = ceOPget_bool_type(T_1_1, &T_1_2);
        if (err != ERR_ok) goto ex_0;
        err = tvOPidn_next(T_1_2, &T_1_3);
        if (err != ERR_ok) goto ex_0;
        res.num = T_1_3.num;
        }
        }

  LINE(1334);
    {
        {CLUREF T_1_1;
        CLUREF T_1_2;
        T_1_1.num = cop.vec->data[0];
        err = g_expr1(e, T_1_1, &T_1_2);
        if (err != ERR_ok) goto ex_0;
        randl.num = T_1_2.num;
        }
        }

  LINE(1336);
    {
    err = g_expr2(e, res);
    if (err != ERR_ok) goto ex_0;
    }

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

  LINE(1338);
    {
    CLUREF T_1_1;
    err = sequenceOPbottom(randl, &T_1_1);
    if (err != ERR_ok) goto ex_0;
    err = g_expr2(e, T_1_1);
    if (err != ERR_ok) goto ex_0;
    }

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

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

  LINE(1341);
    {
    CLUREF T_1_1;
    T_1_1.num = ((opn.str->size != STR_cor.str->size)? false :
        !(bcmp(opn.str->data, STR_cor.str->data, opn.str->size)));
    if (T_1_1.num == true) {

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

  LINE(1344);
    {
    CLUREF T_1_1;
    err = sequenceOPbottom(randl, &T_1_1);
    if (err != ERR_ok) goto ex_0;
    err = g_expr2(e, T_1_1);
    if (err != ERR_ok) goto ex_0;
    }

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

  LINE(1346);
    {
    err = g_envOPindent(e);
    if (err != ERR_ok) goto ex_0;
    }

  LINE(1348);
    {
        {CLUREF T_1_1;
        CLUREF T_1_2;
        T_1_1.num = cop.vec->data[1];
        err = g_expr1(e, T_1_1, &T_1_2);
        if (err != ERR_ok) goto ex_0;
        randr.num = T_1_2.num;
        }
        }

  LINE(1350);
    {
    err = g_expr2(e, res);
    if (err != ERR_ok) goto ex_0;
    }

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

  LINE(1352);
    {
    CLUREF T_1_1;
    err = sequenceOPbottom(randr, &T_1_1);
    if (err != ERR_ok) goto ex_0;
    err = g_expr2(e, T_1_1);
    if (err != ERR_ok) goto ex_0;
    }

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

  LINE(1354);
    {
    err = g_envOPoutdent(e);
    if (err != ERR_ok) goto ex_0;
    }

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

  LINE(1357);
    {
    {
    CLUREF T_1_1;
    err = sequenceOPfill(CLU_1, res, &T_1_1);
    if (err != ERR_ok) goto ex_0;
    ret_1->num = T_1_1.num;
    }
    {signal (ERR_ok);}}
    goto end_0;
    ex_0:
        {
            if (err == ERR_failure) {signal(ERR_failure);}
            elist[0] = _pclu_erstr(err);
            {signal(ERR_failure);}
        }
    end_0: elist[0].str = no_return_values_STRING;
        {signal(ERR_failure);}
    }

/**** END PROCEDURE g_condop ****/


extern errcode realOPunparse();
CLUREF STR__056real_040_075_040;
static int g_real_const_own_init = 0;

/**** BEGIN PROCEDURE g_real_const ****/

errcode g_real_const(e, r, ret_1)
CLUREF e;
CLUREF r;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
    CLUREF res;
        if (g_real_const_own_init == 0) {
        stringOPcons(".real = ", CLU_1, CLU_8, &STR__056real_040_075_040);
        stringOPcons(";", CLU_1, CLU_1, &STR__073);
        g_real_const_own_init = 1;
    }
    enter_proc(1385);

  LINE(1387);
    {
        {CLUREF T_1_1;
        CLUREF T_1_2;
        CLUREF T_1_3;
        err = g_envOPget_comp(e, &T_1_1);
        if (err != ERR_ok) goto ex_0;
        err = ceOPget_real_type(T_1_1, &T_1_2);
        if (err != ERR_ok) goto ex_0;
        err = tvOPidn_next(T_1_2, &T_1_3);
        if (err != ERR_ok) goto ex_0;
        res.num = T_1_3.num;
        }
        }

  LINE(1388);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    err = exprOPget_abs(res, &T_1_1);
    if (err != ERR_ok) goto ex_0;
    if (T_1_1.cell->tag != 13) {err = ERR_wrong_tag; goto ex_0;}
    T_1_2.num = T_1_1.cell->value;
    err = g_idnlit(e, T_1_2);
    if (err != ERR_ok) goto ex_0;
    }

  LINE(1389);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    CLUREF T_1_3;
    err = realOPunparse(r, &T_1_1);
    if (err != ERR_ok) goto ex_0;
    err = stringOPconcat(STR__056real_040_075_040, T_1_1, &T_1_2);
    if (err != ERR_ok) goto ex_0;
    err = stringOPconcat(T_1_2, STR__073, &T_1_3);
    if (err != ERR_ok) goto ex_0;
    err = g_envOPputl(e, T_1_3);
    if (err != ERR_ok) goto ex_0;
    }

  LINE(1390);
    {
    {
    CLUREF T_1_1;
    err = sequenceOPfill(CLU_1, res, &T_1_1);
    if (err != ERR_ok) goto ex_0;
    ret_1->num = T_1_1.num;
    }
    {signal (ERR_ok);}}
    goto end_0;
    ex_0:
        {
            if (err == ERR_failure) {signal(ERR_failure);}
            elist[0] = _pclu_erstr(err);
            {signal(ERR_failure);}
        }
    end_0: elist[0].str = no_return_values_STRING;
        {signal(ERR_failure);}
    }

/**** END PROCEDURE g_real_const ****/


extern errcode g_char();
CLUREF STR__056ch_040_075_040_047;
CLUREF STR__047_073;
static int g_char_const_own_init = 0;

/**** BEGIN PROCEDURE g_char_const ****/

errcode g_char_const(e, c, ret_1)
CLUREF e;
CLUREF c;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
    CLUREF res;
        if (g_char_const_own_init == 0) {
        stringOPcons(".ch = \'", CLU_1, CLU_7, &STR__056ch_040_075_040_047);
        stringOPcons("\';", CLU_1, CLU_2, &STR__047_073);
        g_char_const_own_init = 1;
    }
    enter_proc(1393);

  LINE(1395);
    {
        {CLUREF T_1_1;
        CLUREF T_1_2;
        CLUREF T_1_3;
        err = g_envOPget_comp(e, &T_1_1);
        if (err != ERR_ok) goto ex_0;
        err = ceOPget_char_type(T_1_1, &T_1_2);
        if (err != ERR_ok) goto ex_0;
        err = tvOPidn_next(T_1_2, &T_1_3);
        if (err != ERR_ok) goto ex_0;
        res.num = T_1_3.num;
        }
        }

  LINE(1396);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    err = exprOPget_abs(res, &T_1_1);
    if (err != ERR_ok) goto ex_0;
    if (T_1_1.cell->tag != 13) {err = ERR_wrong_tag; goto ex_0;}
    T_1_2.num = T_1_1.cell->value;
    err = g_idnlit(e, T_1_2);
    if (err != ERR_ok) goto ex_0;
    }

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

  LINE(1398);
    {
    err = g_char(e, c);
    if (err != ERR_ok) goto ex_0;
    }

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

  LINE(1400);
    {
    {
    CLUREF T_1_1;
    err = sequenceOPfill(CLU_1, res, &T_1_1);
    if (err != ERR_ok) goto ex_0;
    ret_1->num = T_1_1.num;
    }
    {signal (ERR_ok);}}
    goto end_0;
    ex_0:
        {
            if (err == ERR_failure) {signal(ERR_failure);}
            elist[0] = _pclu_erstr(err);
            {signal(ERR_failure);}
        }
    end_0: elist[0].str = no_return_values_STRING;
        {signal(ERR_failure);}
    }

/**** END PROCEDURE g_char_const ****/


CLUREF STR__056num_040_075_040;
static int g_int_const1_own_init = 0;

/**** BEGIN PROCEDURE g_int_const1 ****/

errcode g_int_const1(e, i, ret_1)
CLUREF e;
CLUREF i;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
    CLUREF res;
        if (g_int_const1_own_init == 0) {
        stringOPcons(".num = ", CLU_1, CLU_7, &STR__056num_040_075_040);
        stringOPcons(";", CLU_1, CLU_1, &STR__073);
        g_int_const1_own_init = 1;
    }
    enter_proc(1403);

  LINE(1405);
    {
        {CLUREF T_1_1;
        CLUREF T_1_2;
        CLUREF T_1_3;
        err = g_envOPget_comp(e, &T_1_1);
        if (err != ERR_ok) goto ex_0;
        err = ceOPget_int_type(T_1_1, &T_1_2);
        if (err != ERR_ok) goto ex_0;
        err = tvOPidn_next(T_1_2, &T_1_3);
        if (err != ERR_ok) goto ex_0;
        res.num = T_1_3.num;
        }
        }

  LINE(1406);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    err = exprOPget_abs(res, &T_1_1);
    if (err != ERR_ok) goto ex_0;
    if (T_1_1.cell->tag != 13) {err = ERR_wrong_tag; goto ex_0;}
    T_1_2.num = T_1_1.cell->value;
    err = g_idnlit(e, T_1_2);
    if (err != ERR_ok) goto ex_0;
    }

  LINE(1407);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    CLUREF T_1_3;
    err = intOPunparse(i, &T_1_1);
    if (err != ERR_ok) goto ex_0;
    err = stringOPconcat(STR__056num_040_075_040, T_1_1, &T_1_2);
    if (err != ERR_ok) goto ex_0;
    err = stringOPconcat(T_1_2, STR__073, &T_1_3);
    if (err != ERR_ok) goto ex_0;
    err = g_envOPputl(e, T_1_3);
    if (err != ERR_ok) goto ex_0;
    }

  LINE(1408);
    {
    {
    CLUREF T_1_1;
    err = sequenceOPfill(CLU_1, res, &T_1_1);
    if (err != ERR_ok) goto ex_0;
    ret_1->num = T_1_1.num;
    }
    {signal (ERR_ok);}}
    goto end_0;
    ex_0:
        {
            if (err == ERR_failure) {signal(ERR_failure);}
            elist[0] = _pclu_erstr(err);
            {signal(ERR_failure);}
        }
    end_0: elist[0].str = no_return_values_STRING;
        {signal(ERR_failure);}
    }

/**** END PROCEDURE g_int_const1 ****/


CLUREF STR_CLU_137;
static int g_int_const_own_init = 0;

/**** BEGIN PROCEDURE g_int_const ****/

errcode g_int_const(e, i)
CLUREF e;
CLUREF i;
    {
    errcode err;
    errcode ecode2;
        if (g_int_const_own_init == 0) {
        stringOPcons("CLU_", CLU_1, CLU_4, &STR_CLU_137);
        g_int_const_own_init = 1;
    }
    enter_proc(1411);

  LINE(1412);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    err = intOPunparse(i, &T_1_1);
    if (err != ERR_ok) goto ex_0;
    err = stringOPconcat(STR_CLU_137, T_1_1, &T_1_2);
    if (err != ERR_ok) goto ex_0;
    err = g_envOPputs(e, T_1_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_int_const ****/


CLUREF STR_1;
CLUREF STR_0;
static int g_bool_const_own_init = 0;

/**** BEGIN PROCEDURE g_bool_const ****/

errcode g_bool_const(e, b)
CLUREF e;
CLUREF b;
    {
    errcode err;
    errcode ecode2;
        if (g_bool_const_own_init == 0) {
        stringOPcons("CLU_", CLU_1, CLU_4, &STR_CLU_137);
        stringOPcons("1", CLU_1, CLU_1, &STR_1);
        stringOPcons("0", CLU_1, CLU_1, &STR_0);
        g_bool_const_own_init = 1;
    }
    enter_proc(1415);

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

  LINE(1417);
    {
    if (b.num == true) {
        {
        err = g_envOPputs(e, STR_1);
        if (err != ERR_ok) goto ex_0;
        }
        }
    else {

  LINE(1418);
        {
        err = g_envOPputs(e, STR_0);
        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_bool_const ****/


extern errcode g_sequencecons();
CLUREF STR_g_137arraycons_072_040type_137_040not_040cluster_137;
CLUREF STR_sequence;
CLUREF STR_create_050;
CLUREF STR_new_050;
CLUREF STR__040_046;
CLUREF STR_addh_050;
static int g_arraycons_own_init = 0;

/**** BEGIN PROCEDURE g_arraycons ****/

errcode g_arraycons(e, ac, ret_1)
CLUREF e;
CLUREF ac;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
    CLUREF nm;
    CLUREF ct;
    CLUREF arr;
    CLUREF each_expr;
    CLUREF low;
    CLUREF size_nm;
    CLUREF each_elt;
    CLUREF elti;
        if (g_arraycons_own_init == 0) {
        stringOPcons("g_arraycons: type_ not cluster_", CLU_1, CLU_31, &STR_g_137arraycons_072_040type_137_040not_040cluster_137);
        stringOPcons("sequence", CLU_1, CLU_8, &STR_sequence);
        stringOPcons(" = ", CLU_1, CLU_3, &STR__040_075_040);
        stringOPcons("OP", CLU_1, CLU_2, &STR_OP);
        stringOPcons("create(", CLU_1, CLU_7, &STR_create_050);
        stringOPcons(", ", CLU_1, CLU_2, &STR__054_040);
        stringOPcons("new(", CLU_1, CLU_4, &STR_new_050);
        stringOPcons(" &", CLU_1, CLU_2, &STR__040_046);
        stringOPcons(");", CLU_1, CLU_2, &STR__051_073);
        stringOPcons("if (", CLU_1, CLU_4, &STR_if_040_050);
        stringOPcons(" != ERR_ok) goto ", CLU_1, CLU_17, &STR__040_041_075_040ERR_137ok_051_040goto_040);
        stringOPcons(";", CLU_1, CLU_1, &STR__073);
        stringOPcons("addh(", CLU_1, CLU_5, &STR_addh_050);
        g_arraycons_own_init = 1;
    }
    enter_proc(1422);

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

  LINE(1430);
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            T_2_1.num = ct.vec->data[0];
            err = duOPget_common(T_2_1, &T_2_2);
            if (err != ERR_ok) goto ex_0;
            nm.num = T_2_2.num;
            }
            break;
            }
    default: {

  LINE(1432);
        {
        CLUREF T_2_1;
        CLUREF T_2_2;
        T_2_1.num = 418;
        err = compiler_logit(T_2_1, STR_g_137arraycons_072_040type_137_040not_040cluster_137, &T_2_2);
        if (err != ERR_ok) goto ex_0;
        }
    }
    }
    }

  LINE(1434);
    {
    CLUREF T_1_1;
    T_1_1.num = ((nm.str->size != STR_sequence.str->size)? false :
        !(bcmp(nm.str->data, STR_sequence.str->data, nm.str->size)));
    if (T_1_1.num == true) {

  LINE(1436);
        {
        {
        CLUREF T_2_1;
        err = g_sequencecons(e, ac, nm, &T_2_1);
        if (err != ERR_ok) goto ex_0;
        ret_1->num = T_2_1.num;
        }
        {signal (ERR_ok);}}
        }
        }/* end if */

  LINE(1439);
    {
        {CLUREF T_1_1;
        CLUREF T_1_2;
        T_1_1.num = ac.vec->data[2];
        err = tvOPidn_next(T_1_1, &T_1_2);
        if (err != ERR_ok) goto ex_0;
        arr.num = T_1_2.num;
        }
        }

  LINE(1441);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    CLUREF T_1_3;
    T_1_1.num = ac.vec->data[2];
    err = typespecOPget_abs(T_1_1, &T_1_2);
    if (err != ERR_ok) goto ex_0;
    if (T_1_2.cell->tag == 3) T_1_3.num = true; else T_1_3.num = false;
    if (T_1_3.num == true) {

  LINE(1442);
        {
            {CLUREF T_2_1;
            CLUREF T_2_2;
            CLUREF T_2_3;
            T_2_1.num = ac.vec->data[2];
            err = typespecOPget_abs(T_2_1, &T_2_2);
            if (err != ERR_ok) goto ex_0;
            if (T_2_2.cell->tag != 3) {err = ERR_wrong_tag; goto ex_0;}
            T_2_3.num = T_2_2.cell->value;
            ct.num = T_2_3.num;
            }
            }

  LINE(1443);
        {
        CLUREF T_2_1;
        CLUREF T_2_2;
        T_2_1.num = ct.vec->data[1];
        err = sequenceOPbottom(T_2_1, &T_2_2);
        if (err != ERR_ok) goto ex_0;
        each_expr.num = T_2_2.num;
        }
        }
        }/* end if */

  LINE(1445);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    T_1_1.num = ac.vec->data[1];
    if (T_1_1.cell->tag == 2) T_1_2.num = true; else T_1_2.num = false;
    if (T_1_2.num == true) {

  LINE(1447);
        {
            {CLUREF T_2_1;
            CLUREF T_2_2;
            CLUREF T_2_3;
            T_2_1.num = ac.vec->data[1];
            if (T_2_1.cell->tag != 2) {err = ERR_wrong_tag; goto ex_0;}
            T_2_2.num = T_2_1.cell->value;
            err = g_expr_arg1(e, T_2_2, &T_2_3);
            if (err != ERR_ok) goto ex_0;
            low.num = T_2_3.num;
            }
            }

  LINE(1448);
        {
        err = g_err(e);
        if (err != ERR_ok) goto ex_0;
        }

  LINE(1449);
        {
        CLUREF T_2_1;
        CLUREF T_2_2;
        CLUREF T_2_3;
        err = stringOPconcat(STR__040_075_040, nm, &T_2_1);
        if (err != ERR_ok) goto ex_0;
        err = stringOPconcat(T_2_1, STR_OP, &T_2_2);
        if (err != ERR_ok) goto ex_0;
        err = stringOPconcat(T_2_2, STR_create_050, &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(1450);
        {
        CLUREF T_2_1;
        err = sequenceOPbottom(low, &T_2_1);
        if (err != ERR_ok) goto ex_0;
        err = g_expr_arg(e, T_2_1);
        if (err != ERR_ok) goto ex_0;
        }

  LINE(1451);
        {
        err = g_envOPputs(e, STR__054_040);
        if (err != ERR_ok) goto ex_0;
        }
        }
    else {

  LINE(1453);
        {
        err = g_err(e);
        if (err != ERR_ok) goto ex_0;
        }

  LINE(1454);
        {
        CLUREF T_2_1;
        CLUREF T_2_2;
        CLUREF T_2_3;
        err = stringOPconcat(STR__040_075_040, nm, &T_2_1);
        if (err != ERR_ok) goto ex_0;
        err = stringOPconcat(T_2_1, STR_OP, &T_2_2);
        if (err != ERR_ok) goto ex_0;
        err = stringOPconcat(T_2_2, STR_new_050, &T_2_3);
        if (err != ERR_ok) goto ex_0;
        err = g_envOPputs(e, T_2_3);
        if (err != ERR_ok) goto ex_0;
        }
        }}/* end if */

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

  LINE(1457);
    {
    err = g_expr_arg(e, arr);
    if (err != ERR_ok) goto ex_0;
    }

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

  LINE(1459);
    {
    err = g_envOPnewline(e);
    if (err != ERR_ok) goto ex_0;
    }

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

  LINE(1461);
    {
    err = g_err(e);
    if (err != ERR_ok) goto ex_0;
    }

  LINE(1462);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    CLUREF T_1_3;
    err = exOPget_current_ex_label(&T_1_1);
    if (err != ERR_ok) goto ex_0;
    err = stringOPconcat(STR__040_041_075_040ERR_137ok_051_040goto_040, T_1_1, &T_1_2);
    if (err != ERR_ok) goto ex_0;
    err = stringOPconcat(T_1_2, STR__073, &T_1_3);
    if (err != ERR_ok) goto ex_0;
    err = g_envOPputl(e, T_1_3);
    if (err != ERR_ok) goto ex_0;
    }

  LINE(1466);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    CLUREF T_1_3;
    CLUREF T_1_4;
    T_1_1.num = ac.vec->data[0];
    T_1_2.num = T_1_1.vec->size;
    err = int_constOPexists(T_1_2, &T_1_3);
    if (err != ERR_ok) goto ex_0;
    T_1_4.num = T_1_3.num ^ 1;
    if (T_1_4.num == true) {

  LINE(1467);
        {
            {CLUREF T_2_1;
            CLUREF T_2_2;
            CLUREF T_2_3;
            err = g_envOPget_comp(e, &T_2_1);
            if (err != ERR_ok) goto ex_0;
            err = ceOPget_int_type(T_2_1, &T_2_2);
            if (err != ERR_ok) goto ex_0;
            err = tvOPidn_next(T_2_2, &T_2_3);
            if (err != ERR_ok) goto ex_0;
            size_nm.num = T_2_3.num;
            }
            }
        }
        }/* end if */

  LINE(1475);
    {

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

  LINE(1477);
                {
                    {CLUREF T_4_1;
                    err = g_expr_arg1(e, each_elt, &T_4_1);
                    if (err != ERR_ok) goto ex_1;
                    elti.num = T_4_1.num;
                    }
                    }

  LINE(1478);
                {
                err = g_err(e);
                if (err != ERR_ok) goto ex_1;
                }

  LINE(1479);
                {
                CLUREF T_4_1;
                CLUREF T_4_2;
                CLUREF T_4_3;
                err = stringOPconcat(STR__040_075_040, nm, &T_4_1);
                if (err != ERR_ok) goto ex_1;
                err = stringOPconcat(T_4_1, STR_OP, &T_4_2);
                if (err != ERR_ok) goto ex_1;
                err = stringOPconcat(T_4_2, STR_addh_050, &T_4_3);
                if (err != ERR_ok) goto ex_1;
                err = g_envOPputs(e, T_4_3);
                if (err != ERR_ok) goto ex_1;
                }

  LINE(1480);
                {
                err = g_expr_arg(e, arr);
                if (err != ERR_ok) goto ex_1;
                }

  LINE(1481);
                {
                err = g_envOPputs(e, STR__054_040);
                if (err != ERR_ok) goto ex_1;
                }

  LINE(1482);
                {
                CLUREF T_4_1;
                err = sequenceOPbottom(elti, &T_4_1);
                if (err != ERR_ok) goto ex_1;
                err = g_expr_arg(e, T_4_1);
                if (err != ERR_ok) goto ex_1;
                }

  LINE(1483);
                {
                err = g_envOPputs(e, STR__051_073);
                if (err != ERR_ok) goto ex_1;
                }

  LINE(1484);
                {
                err = g_envOPnewline(e);
                if (err != ERR_ok) goto ex_1;
                }

  LINE(1485);
                {
                err = g_envOPputs(e, STR_if_040_050);
                if (err != ERR_ok) goto ex_1;
                }

  LINE(1486);
                {
                err = g_err(e);
                if (err != ERR_ok) goto ex_1;
                }

  LINE(1487);
                {
                CLUREF T_4_1;
                CLUREF T_4_2;
                CLUREF T_4_3;
                err = exOPget_current_ex_label(&T_4_1);
                if (err != ERR_ok) goto ex_1;
                err = stringOPconcat(STR__040_041_075_040ERR_137ok_051_040goto_040, T_4_1, &T_4_2);
                if (err != ERR_ok) goto ex_1;
                err = stringOPconcat(T_4_2, STR__073, &T_4_3);
                if (err != ERR_ok) goto ex_1;
                err = g_envOPputl(e, T_4_3);
                if (err != ERR_ok) goto ex_1;
                }
            }
        }
        end_inline_for_1:;
        }
        goto end_1;
        ex_1:
            if ((err == ERR_bounds)) {
            }
            else {
                goto ex_0;
            }
        end_1:;

  LINE(1492);
    {
    {
    CLUREF T_1_1;
    err = sequenceOPfill(CLU_1, arr, &T_1_1);
    if (err != ERR_ok) goto ex_0;
    ret_1->num = T_1_1.num;
    }
    {signal (ERR_ok);}}
    goto end_0;
    ex_0:
        {
            if (err == ERR_failure) {signal(ERR_failure);}
            elist[0] = _pclu_erstr(err);
            {signal(ERR_failure);}
        }
    end_0: elist[0].str = no_return_values_STRING;
        {signal(ERR_failure);}
    }

/**** END PROCEDURE g_arraycons ****/


extern errcode g_constr_rhs();
CLUREF STR_sequenceOPnew2_050CLU_137;
CLUREF STR_sequenceOPnew2_050;
CLUREF STR__056vec_055_076data_133;
CLUREF STR__135_040_075_040;
static int g_sequencecons_own_init = 0;

/**** BEGIN PROCEDURE g_sequencecons ****/

errcode g_sequencecons(e, ac, nm, ret_1)
CLUREF e;
CLUREF ac;
CLUREF nm;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
    CLUREF seq;
    CLUREF each_expr;
    CLUREF ct;
    CLUREF size;
    CLUREF size_nm;
    CLUREF seqidn;
    CLUREF i;
    CLUREF each_elt;
    CLUREF elti;
        if (g_sequencecons_own_init == 0) {
        stringOPcons("sequenceOPnew2(CLU_", CLU_1, CLU_19, &STR_sequenceOPnew2_050CLU_137);
        stringOPcons(", &", CLU_1, CLU_3, &STR__054_040_046);
        stringOPcons(".num = ", CLU_1, CLU_7, &STR__056num_040_075_040);
        stringOPcons(";", CLU_1, CLU_1, &STR__073);
        stringOPcons("sequenceOPnew2(", CLU_1, CLU_15, &STR_sequenceOPnew2_050);
        stringOPcons(");", CLU_1, CLU_2, &STR__051_073);
        stringOPcons(".vec->data[", CLU_1, CLU_11, &STR__056vec_055_076data_133);
        stringOPcons("] = ", CLU_1, CLU_4, &STR__135_040_075_040);
        g_sequencecons_own_init = 1;
    }
    enter_proc(1495);

  LINE(1498);
    {
        {CLUREF T_1_1;
        CLUREF T_1_2;
        T_1_1.num = ac.vec->data[2];
        err = tvOPidn_next(T_1_1, &T_1_2);
        if (err != ERR_ok) goto ex_0;
        seq.num = T_1_2.num;
        }
        }

  LINE(1500);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    CLUREF T_1_3;
    T_1_1.num = ac.vec->data[2];
    err = typespecOPget_abs(T_1_1, &T_1_2);
    if (err != ERR_ok) goto ex_0;
    if (T_1_2.cell->tag == 3) T_1_3.num = true; else T_1_3.num = false;
    if (T_1_3.num == true) {

  LINE(1501);
        {
            {CLUREF T_2_1;
            CLUREF T_2_2;
            CLUREF T_2_3;
            T_2_1.num = ac.vec->data[2];
            err = typespecOPget_abs(T_2_1, &T_2_2);
            if (err != ERR_ok) goto ex_0;
            if (T_2_2.cell->tag != 3) {err = ERR_wrong_tag; goto ex_0;}
            T_2_3.num = T_2_2.cell->value;
            ct.num = T_2_3.num;
            }
            }

  LINE(1502);
        {
        CLUREF T_2_1;
        CLUREF T_2_2;
        T_2_1.num = ct.vec->data[1];
        err = sequenceOPbottom(T_2_1, &T_2_2);
        if (err != ERR_ok) goto ex_0;
        each_expr.num = T_2_2.num;
        }
        }
        }/* end if */

  LINE(1504);
    {
        {CLUREF T_1_1;
        CLUREF T_1_2;
        T_1_1.num = ac.vec->data[0];
        T_1_2.num = T_1_1.vec->size;
        size.num = T_1_2.num;
        }
        }

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

  LINE(1507);
        {
        CLUREF T_2_1;
        CLUREF T_2_2;
        CLUREF T_2_3;
        err = intOPunparse(size, &T_2_1);
        if (err != ERR_ok) goto ex_0;
        err = stringOPconcat(STR_sequenceOPnew2_050CLU_137, T_2_1, &T_2_2);
        if (err != ERR_ok) goto ex_0;
        err = stringOPconcat(T_2_2, STR__054_040_046, &T_2_3);
        if (err != ERR_ok) goto ex_0;
        err = g_envOPputs(e, T_2_3);
        if (err != ERR_ok) goto ex_0;
        }
        }
    else {

  LINE(1510);
        {
            {CLUREF T_2_1;
            CLUREF T_2_2;
            CLUREF T_2_3;
            err = g_envOPget_comp(e, &T_2_1);
            if (err != ERR_ok) goto ex_0;
            err = ceOPget_int_type(T_2_1, &T_2_2);
            if (err != ERR_ok) goto ex_0;
            err = tvOPidn_next(T_2_2, &T_2_3);
            if (err != ERR_ok) goto ex_0;
            size_nm.num = T_2_3.num;
            }
            }

  LINE(1511);
        {
        CLUREF T_2_1;
        CLUREF T_2_2;
        err = exprOPget_abs(size_nm, &T_2_1);
        if (err != ERR_ok) goto ex_0;
        if (T_2_1.cell->tag != 13) {err = ERR_wrong_tag; goto ex_0;}
        T_2_2.num = T_2_1.cell->value;
        err = g_idnlit(e, T_2_2);
        if (err != ERR_ok) goto ex_0;
        }

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

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

  LINE(1514);
        {
        err = g_expr_arg(e, size_nm);
        if (err != ERR_ok) goto ex_0;
        }

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

  LINE(1517);
    {
        {CLUREF T_1_1;
        CLUREF T_1_2;
        err = exprOPget_abs(seq, &T_1_1);
        if (err != ERR_ok) goto ex_0;
        if (T_1_1.cell->tag != 13) {err = ERR_wrong_tag; goto ex_0;}
        T_1_2.num = T_1_1.cell->value;
        seqidn.num = T_1_2.num;
        }
        }

  LINE(1518);
    {
    err = g_idnlit(e, seqidn);
    if (err != ERR_ok) goto ex_0;
    }

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

  LINE(1520);
    {
    err = g_envOPnewline(e);
    if (err != ERR_ok) goto ex_0;
    }

  LINE(1523);
    {

  LINE(1524);
        {
            {i.num = 0;
            }
            }

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

  LINE(1527);
                {
                    {CLUREF T_4_1;
                    err = g_expr_arg1(e, each_elt, &T_4_1);
                    if (err != ERR_ok) goto ex_1;
                    elti.num = T_4_1.num;
                    }
                    }

  LINE(1529);
                {
                err = g_idnlit(e, seqidn);
                if (err != ERR_ok) goto ex_1;
                }

  LINE(1530);
                {
                CLUREF T_4_1;
                CLUREF T_4_2;
                CLUREF T_4_3;
                err = intOPunparse(i, &T_4_1);
                if (err != ERR_ok) goto ex_1;
                err = stringOPconcat(STR__056vec_055_076data_133, T_4_1, &T_4_2);
                if (err != ERR_ok) goto ex_1;
                err = stringOPconcat(T_4_2, STR__135_040_075_040, &T_4_3);
                if (err != ERR_ok) goto ex_1;
                err = g_envOPputs(e, T_4_3);
                if (err != ERR_ok) goto ex_1;
                }

  LINE(1531);
                {
                CLUREF T_4_1;
                err = sequenceOPbottom(elti, &T_4_1);
                if (err != ERR_ok) goto ex_1;
                err = g_constr_rhs(e, T_4_1);
                if (err != ERR_ok) goto ex_1;
                }

  LINE(1532);
                {
                err = g_envOPnewline(e);
                if (err != ERR_ok) goto ex_1;
                }

  LINE(1534);
                {
                CLUREF T_4_1;
                T_4_1.num = i.num + 1;
                 if ((T_4_1.num > 0 && i.num < 0 && 1 < 0) || 
                     (T_4_1.num < 0 && i.num > 0 && 1 > 0)) {
                    err = ERR_overflow;
                    goto ex_1;}
                i.num = T_4_1.num;
                }
            }
        }
        end_inline_for_1:;
        }
        goto end_1;
        ex_1:
            if ((err == ERR_bounds)) {
            }
            else {
                goto ex_0;
            }
        end_1:;

  LINE(1538);
    {
    {
    CLUREF T_1_1;
    err = sequenceOPfill(CLU_1, seq, &T_1_1);
    if (err != ERR_ok) goto ex_0;
    ret_1->num = T_1_1.num;
    }
    {signal (ERR_ok);}}
    goto end_0;
    ex_0:
        {
            if (err == ERR_failure) {signal(ERR_failure);}
            elist[0] = _pclu_erstr(err);
            {signal(ERR_failure);}
        }
    end_0: elist[0].str = no_return_values_STRING;
        {signal(ERR_failure);}
    }

/**** END PROCEDURE g_sequencecons ****/


extern errcode g_idn_plain();
extern errcode oneofOPvalue_7();
extern errcode field_index();
CLUREF STR_RecordAlloc_050;
CLUREF STR_set_137;
CLUREF STR__135_040_040_075_040;
static int g_selectcons_own_init = 0;

/**** BEGIN PROCEDURE g_selectcons ****/

errcode g_selectcons(e, sc, ret_1)
CLUREF e;
CLUREF sc;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
    CLUREF rec;
    CLUREF size;
    CLUREF each_field;
    CLUREF recidn;
    CLUREF flist;
    CLUREF each_name;
    CLUREF el;
    CLUREF junk;
    CLUREF ind;
        if (g_selectcons_own_init == 0) {
        stringOPcons("RecordAlloc(", CLU_1, CLU_12, &STR_RecordAlloc_050);
        stringOPcons(", ", CLU_1, CLU_2, &STR__054_040);
        stringOPcons(");", CLU_1, CLU_2, &STR__051_073);
        stringOPcons("set_", CLU_1, CLU_4, &STR_set_137);
        stringOPcons(".vec->data[", CLU_1, CLU_11, &STR__056vec_055_076data_133);
        stringOPcons("]  = ", CLU_1, CLU_5, &STR__135_040_040_075_040);
        g_selectcons_own_init = 1;
    }
    enter_proc(1541);

  LINE(1546);
    {
        {CLUREF T_1_1;
        CLUREF T_1_2;
        T_1_1.num = sc.vec->data[1];
        err = tvOPidn_next(T_1_1, &T_1_2);
        if (err != ERR_ok) goto ex_0;
        rec.num = T_1_2.num;
        }
        }

  LINE(1547);
    {
        {size.num = 0;
        }
        }

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

  LINE(1549);
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            CLUREF T_2_3;
            T_2_1.num = each_field.vec->data[1];
            T_2_2.num = T_2_1.vec->size;
            T_2_3.num = size.num + T_2_2.num;
             if ((T_2_3.num > 0 && size.num < 0 && T_2_2.num < 0) || 
                 (T_2_3.num < 0 && size.num > 0 && T_2_2.num > 0)) {
                err = ERR_overflow;
                goto ex_0;}
            size.num = T_2_3.num;
            }
        }
    }
    end_inline_for_1:;

  LINE(1551);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    CLUREF T_1_3;
    err = intOPunparse(size, &T_1_1);
    if (err != ERR_ok) goto ex_0;
    err = stringOPconcat(STR_RecordAlloc_050, T_1_1, &T_1_2);
    if (err != ERR_ok) goto ex_0;
    err = stringOPconcat(T_1_2, STR__054_040, &T_1_3);
    if (err != ERR_ok) goto ex_0;
    err = g_envOPputs(e, T_1_3);
    if (err != ERR_ok) goto ex_0;
    }

  LINE(1552);
    {
        {CLUREF T_1_1;
        CLUREF T_1_2;
        err = exprOPget_abs(rec, &T_1_1);
        if (err != ERR_ok) goto ex_0;
        if (T_1_1.cell->tag != 13) {err = ERR_wrong_tag; goto ex_0;}
        T_1_2.num = T_1_1.cell->value;
        recidn.num = T_1_2.num;
        }
        }

  LINE(1553);
    {
    err = g_idn_plain(e, recidn);
    if (err != ERR_ok) goto ex_0;
    }

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

  LINE(1566);
    {
        {CLUREF T_1_1;
        err = sequenceOPnew(&T_1_1);
        if (err != ERR_ok) goto ex_0;
        flist.num = T_1_1.num;
        }
        }

  LINE(1567);
    {
    CLUREF T_2_1;
    CLUREF T_2_2;
    CLUREF T_2_3;
    CLUREF T_2_4;
    T_2_1.num = sc.vec->data[1];
    err = typespecOPget_abs(T_2_1, &T_2_2);
    if (err != ERR_ok) goto ex_1;
    if (T_2_2.cell->tag != 7) {err = ERR_wrong_tag; goto ex_1;}
    T_2_3.num = T_2_2.cell->value;
    T_2_4.num = T_2_3.vec->data[1];
    flist.num = T_2_4.num;
    }
        goto end_1;
        ex_1:
            if ((err == ERR_wrong_tag)) {
            }
            else {
                goto ex_0;
            }
        end_1:;

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

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

  LINE(1571);
                    {
                        {CLUREF T_3_1;
                        CLUREF T_3_2;
                        T_3_1.num = each_field.vec->data[2];
                        err = g_expr1(e, T_3_1, &T_3_2);
                        if (err != ERR_ok) goto ex_0;
                        el.num = T_3_2.num;
                        }
                        }

  LINE(1572);
                    {
                        {CLUREF T_3_1;
                        CLUREF T_3_2;
                        CLUREF T_3_3;
                        err = stringOPconcat(STR_set_137, each_name, &T_3_1);
                        if (err != ERR_ok) goto ex_0;
                        err = field_index(T_3_1, flist, &T_3_2, &T_3_3);
                        if (err != ERR_ok) goto ex_0;
                        junk.num = T_3_2.num;
                        ind.num = T_3_3.num;
                        }
                        }

  LINE(1574);
                    {
                    err = g_idn_plain(e, recidn);
                    if (err != ERR_ok) goto ex_0;
                    }

  LINE(1575);
                    {
                    CLUREF T_3_1;
                    CLUREF T_3_2;
                    CLUREF T_3_3;
                    CLUREF T_3_4;
                    T_3_1.num = ind.num - 1;
                     if ((T_3_1.num >= 0 && ind.num < 0 && (-1) < 0) || 
                         (T_3_1.num <= 0 && ind.num > 0 && (-1) > 0)) {
                        err = ERR_overflow;
                        goto ex_0;}
                    err = intOPunparse(T_3_1, &T_3_2);
                    if (err != ERR_ok) goto ex_0;
                    err = stringOPconcat(STR__056vec_055_076data_133, T_3_2, &T_3_3);
                    if (err != ERR_ok) goto ex_0;
                    err = stringOPconcat(T_3_3, STR__135_040_040_075_040, &T_3_4);
                    if (err != ERR_ok) goto ex_0;
                    err = g_envOPputs(e, T_3_4);
                    if (err != ERR_ok) goto ex_0;
                    }

  LINE(1576);
                    {
                    CLUREF T_3_1;
                    if (1 < 1 || 1 > el.vec->size ) {
                        err = ERR_bounds;
                        goto ex_0;}
                    T_3_1.num = el.vec->data[1 - 1];
                    err = g_constr_rhs(e, T_3_1);
                    if (err != ERR_ok) goto ex_0;
                    }
                }
            }
            end_inline_for_3:;
        }
    }
    end_inline_for_2:;

  LINE(1579);
    {
    {
    CLUREF T_1_1;
    err = sequenceOPfill(CLU_1, rec, &T_1_1);
    if (err != ERR_ok) goto ex_0;
    ret_1->num = T_1_1.num;
    }
    {signal (ERR_ok);}}
    goto end_0;
    ex_0:
        {
            if (err == ERR_failure) {signal(ERR_failure);}
            elist[0] = _pclu_erstr(err);
            {signal(ERR_failure);}
        }
    end_0: elist[0].str = no_return_values_STRING;
        {signal(ERR_failure);}
    }

/**** END PROCEDURE g_selectcons ****/


extern errcode escape_ckeyword();

/**** BEGIN PROCEDURE g_apply ****/

errcode g_apply(e, ct)
CLUREF e;
CLUREF ct;
    {
    errcode err;
    errcode ecode2;
    enter_proc(1583);

  LINE(1585);
    {
    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;
    err = escape_ckeyword(T_1_2, &T_1_3);
    if (err != ERR_ok) goto ex_0;
    err = g_envOPputs(e, T_1_3);
    if (err != ERR_ok) goto ex_0;
    }

  LINE(1586);
    {
    {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 g_apply ****/


extern errcode intOPgt();
CLUREF STR__137ops_040;
static int g_apply3_own_init = 0;

/**** BEGIN PROCEDURE g_apply3 ****/

errcode g_apply3(e, ct)
CLUREF e;
CLUREF ct;
    {
    errcode err;
    errcode ecode2;
    CLUREF each_expr;
        if (g_apply3_own_init == 0) {
        stringOPcons("_of_", CLU_1, CLU_4, &STR__137of_137);
        stringOPcons("_ops ", CLU_1, CLU_5, &STR__137ops_040);
        g_apply3_own_init = 1;
    }
    enter_proc(1589);

  LINE(1591);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    CLUREF T_1_3;
    T_1_1.num = ct.vec->data[1];
    T_1_2.num = T_1_1.vec->size;
    T_1_3.num = (T_1_2.num > 0)? true : false;
    if (T_1_3.num == true) {

  LINE(1593);
        {
        CLUREF T_2_1;
        CLUREF T_2_2;
        CLUREF T_2_3;
        CLUREF T_2_4;
            T_2_1.num = ct.vec->data[1];
            T_2_3.num = T_2_1.vec->size; 
            T_2_4 = T_2_1;
            for (T_2_2.num = 1; T_2_2.num <= T_2_3.num; T_2_2.num++) {
                each_expr.num = T_2_4.vec->data[T_2_2.num - 1];

  LINE(1594);
                {
                CLUREF T_3_1;
                err = s_owns_prefix_expr(each_expr, &T_3_1);
                if (err != ERR_ok) goto ex_0;
                err = g_envOPputs(e, T_3_1);
                if (err != ERR_ok) goto ex_0;
                }

  LINE(1595);
                {
                CLUREF T_3_1;
                CLUREF T_3_2;
                CLUREF T_3_3;
                T_3_1.num = ct.vec->data[0];
                err = duOPget_common(T_3_1, &T_3_2);
                if (err != ERR_ok) goto ex_0;
                err = stringOPconcat(T_3_2, STR__137of_137, &T_3_3);
                if (err != ERR_ok) goto ex_0;
                err = g_envOPputs(e, T_3_3);
                if (err != ERR_ok) goto ex_0;
                }

  LINE(1596);
                {
                err = g_expr4(e, each_expr);
                if (err != ERR_ok) goto ex_0;
                }

  LINE(1597);
                {
                err = g_envOPputs(e, STR__137ops_040);
                if (err != ERR_ok) goto ex_0;
                }
            }
        }
        end_inline_for_1:;
        }
        }/* end if */

  LINE(1600);
    {
    {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 g_apply3 ****/


extern errcode oneofOPvalue_5();
extern errcode oneofOPis_7();
CLUREF STR__137ops;
CLUREF STR__055_076;
CLUREF STR__056fcn_055_076proc_051;
CLUREF STR_g_137clusterop_072_040wrong_137tag;
static int g_clusterop_own_init = 0;

/**** BEGIN PROCEDURE g_clusterop ****/

errcode g_clusterop(e, cop)
CLUREF e;
CLUREF cop;
    {
    errcode err;
    errcode ecode2;
    CLUREF nm;
    CLUREF tn;
    CLUREF ta;
    CLUREF op;
    CLUREF ind;
    CLUREF indstr;
        if (g_clusterop_own_init == 0) {
        stringOPcons("(", CLU_1, CLU_1, &STR__050);
        stringOPcons("_ops", CLU_1, CLU_4, &STR__137ops);
        stringOPcons("->", CLU_1, CLU_2, &STR__055_076);
        stringOPcons(".fcn->proc)", CLU_1, CLU_11, &STR__056fcn_055_076proc_051);
        stringOPcons("OP", CLU_1, CLU_2, &STR_OP);
        stringOPcons("g_clusterop: wrong_tag", CLU_1, CLU_22, &STR_g_137clusterop_072_040wrong_137tag);
        g_clusterop_own_init = 1;
    }
    enter_proc(1604);

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

  LINE(1613);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    CLUREF T_1_3;
    err = stringOPfetch(nm, CLU_1, &T_1_1);
    if (err != ERR_ok) goto ex_0;
    T_1_2.ch = '%';
    T_1_3.num = (T_1_1.ch == T_1_2.ch)? true : false;
    if (T_1_3.num == true) {

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

  LINE(1618);
    {
    CLUREF T_2_1;
    CLUREF T_2_2;
    T_2_1.num = cop.vec->data[2];
    err = parmOPmember(T_2_1, &T_2_2);
    if (err != ERR_ok) goto ex_1;
    if (T_2_2.num == true) {

  LINE(1620);
        {
            {CLUREF T_3_1;
            CLUREF T_3_2;
            CLUREF T_3_3;
            T_3_1.num = cop.vec->data[2];
            err = typespecOPget_abs(T_3_1, &T_3_2);
            if (err != ERR_ok) goto ex_1;
            if (T_3_2.cell->tag != 5) {err = ERR_wrong_tag; goto ex_1;}
            T_3_3.num = T_3_2.cell->value;
            tn.num = T_3_3.num;
            }
            }

  LINE(1621);
        {
        err = g_envOPputs(e, STR__050);
        if (err != ERR_ok) goto ex_1;
        }

  LINE(1622);
        {
        CLUREF T_3_1;
        err = s_owns_prefix(tn, &T_3_1);
        if (err != ERR_ok) goto ex_1;
        err = g_envOPputs(e, T_3_1);
        if (err != ERR_ok) goto ex_1;
        }

  LINE(1623);
        {
        err = g_idn(e, tn);
        if (err != ERR_ok) goto ex_1;
        }

  LINE(1624);
        {
        err = g_envOPputs(e, STR__137ops);
        if (err != ERR_ok) goto ex_1;
        }

  LINE(1625);
        {
        CLUREF T_3_1;
        CLUREF T_3_2;
        err = stringOPconcat(STR__055_076, nm, &T_3_1);
        if (err != ERR_ok) goto ex_1;
        err = stringOPconcat(T_3_1, STR__056fcn_055_076proc_051, &T_3_2);
        if (err != ERR_ok) goto ex_1;
        err = g_envOPputs(e, T_3_2);
        if (err != ERR_ok) goto ex_1;
        }
        }
    else {

  LINE(1627);
        {
        CLUREF T_3_1;
        CLUREF T_3_2;
        CLUREF T_3_3;
        T_3_1.num = cop.vec->data[2];
        err = typespecOPget_abs(T_3_1, &T_3_2);
        if (err != ERR_ok) goto ex_1;
        if (T_3_2.cell->tag == 7) T_3_3.num = true; else T_3_3.num = false;
        if (T_3_3.num == true) {

  LINE(1628);
            {
                {CLUREF T_4_1;
                CLUREF T_4_2;
                CLUREF T_4_3;
                T_4_1.num = cop.vec->data[2];
                err = typespecOPget_abs(T_4_1, &T_4_2);
                if (err != ERR_ok) goto ex_1;
                if (T_4_2.cell->tag != 7) {err = ERR_wrong_tag; goto ex_1;}
                T_4_3.num = T_4_2.cell->value;
                ta.num = T_4_3.num;
                }
                }

  LINE(1629);
            {
                {CLUREF T_4_1;
                CLUREF T_4_2;
                CLUREF T_4_3;
                T_4_1.num = ta.vec->data[1];
                err = field_index(nm, T_4_1, &T_4_2, &T_4_3);
                if (err != ERR_ok) goto ex_1;
                op.num = T_4_2.num;
                ind.num = T_4_3.num;
                }
                }

  LINE(1630);
            {
            CLUREF T_4_1;
            CLUREF T_4_2;
            T_4_1.num = (ind.num == 0)? true : false;
            T_4_2.num = T_4_1.num ^ 1;
            if (T_4_2.num == true) {

  LINE(1631);
                {
                    {CLUREF T_5_1;
                    err = intOPunparse(ind, &T_5_1);
                    if (err != ERR_ok) goto ex_1;
                    indstr.num = T_5_1.num;
                    }
                    }

  LINE(1632);
                {
                CLUREF T_5_1;
                CLUREF T_5_2;
                CLUREF T_5_3;
                CLUREF T_5_4;
                CLUREF T_5_5;
                T_5_1.num = ta.vec->data[0];
                err = duOPget_common(T_5_1, &T_5_2);
                if (err != ERR_ok) goto ex_1;
                err = stringOPconcat(T_5_2, STR_OP, &T_5_3);
                if (err != ERR_ok) goto ex_1;
                err = stringOPconcat(T_5_3, op, &T_5_4);
                if (err != ERR_ok) goto ex_1;
                err = stringOPconcat(T_5_4, indstr, &T_5_5);
                if (err != ERR_ok) goto ex_1;
                err = g_envOPputs(e, T_5_5);
                if (err != ERR_ok) goto ex_1;
                }

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

  LINE(1635);
                {
                CLUREF T_5_1;
                CLUREF T_5_2;
                CLUREF T_5_3;
                CLUREF T_5_4;
                T_5_1.num = ta.vec->data[0];
                err = duOPget_common(T_5_1, &T_5_2);
                if (err != ERR_ok) goto ex_1;
                err = stringOPconcat(T_5_2, STR_OP, &T_5_3);
                if (err != ERR_ok) goto ex_1;
                err = stringOPconcat(T_5_3, op, &T_5_4);
                if (err != ERR_ok) goto ex_1;
                err = g_envOPputs(e, T_5_4);
                if (err != ERR_ok) goto ex_1;
                }

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

  LINE(1639);
        {
        CLUREF T_3_1;
        T_3_1.num = cop.vec->data[2];
        err = g_typespec(e, T_3_1);
        if (err != ERR_ok) goto ex_1;
        }

  LINE(1640);
        {
        err = g_envOPputs(e, STR_OP);
        if (err != ERR_ok) goto ex_1;
        }

  LINE(1641);
        {
        err = g_envOPputs(e, nm);
        if (err != ERR_ok) goto ex_1;
        }
        }}/* end if */
        goto end_1;
        ex_1:
            if ((err == ERR_wrong_tag)) {

  LINE(1644);
                {
                CLUREF T_2_1;
                CLUREF T_2_2;
                T_2_1.num = 419;
                err = compiler_logit(T_2_1, STR_g_137clusterop_072_040wrong_137tag, &T_2_2);
                if (err != ERR_ok) goto ex_0;
                }

  LINE(1645);
                {
                CLUREF T_2_1;
                T_2_1.num = cop.vec->data[2];
                err = typespec_print(T_2_1);
                if (err != ERR_ok) goto ex_0;
                }
            }
            else {
                goto ex_0;
            }
        end_1:;

  LINE(1647);
    {
    {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 g_clusterop ****/


CLUREF STR__137ops_054_040;
CLUREF STR_g_137clusterop_072_040handle_040other_040type_137_047s;
static int g_clusterop3_own_init = 0;

/**** BEGIN PROCEDURE g_clusterop3 ****/

errcode g_clusterop3(e, cop)
CLUREF e;
CLUREF cop;
    {
    errcode err;
    errcode ecode2;
    CLUREF nm;
    CLUREF ta;
    CLUREF each_expr;
        if (g_clusterop3_own_init == 0) {
        stringOPcons("_of_", CLU_1, CLU_4, &STR__137of_137);
        stringOPcons("_ops, ", CLU_1, CLU_6, &STR__137ops_054_040);
        stringOPcons("g_clusterop: handle other type_\'s", CLU_1, CLU_33, &STR_g_137clusterop_072_040handle_040other_040type_137_047s);
        g_clusterop3_own_init = 1;
    }
    enter_proc(1650);

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

  LINE(1659);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    CLUREF T_1_3;
    err = stringOPfetch(nm, CLU_1, &T_1_1);
    if (err != ERR_ok) goto ex_0;
    T_1_2.ch = '%';
    T_1_3.num = (T_1_1.ch == T_1_2.ch)? true : false;
    if (T_1_3.num == true) {

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

  LINE(1664);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    T_1_1.num = cop.vec->data[2];
    err = parmOPmember(T_1_1, &T_1_2);
    if (err != ERR_ok) goto ex_0;
    if (T_1_2.num == true) {
        }
    else {
        }}/* end if */

  LINE(1676);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    T_1_1.num = cop.vec->data[2];
    err = typespecOPget_abs(T_1_1, &T_1_2);
    if (err != ERR_ok) goto ex_0;
    switch (T_1_2.cell->tag) {
    case 3: 
         {CLUREF T_1_3;
        T_1_3.num = T_1_2.cell->value;
        ta.num = T_1_3.num;

  LINE(1678);
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            CLUREF T_2_3;
            CLUREF T_2_4;
                T_2_1.num = ta.vec->data[1];
                T_2_3.num = T_2_1.vec->size; 
                T_2_4 = T_2_1;
                for (T_2_2.num = 1; T_2_2.num <= T_2_3.num; T_2_2.num++) {
                    each_expr.num = T_2_4.vec->data[T_2_2.num - 1];

  LINE(1679);
                    {
                    CLUREF T_3_1;
                    err = s_owns_prefix_expr(each_expr, &T_3_1);
                    if (err != ERR_ok) goto ex_0;
                    err = g_envOPputs(e, T_3_1);
                    if (err != ERR_ok) goto ex_0;
                    }

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

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

  LINE(1682);
                    {
                    err = g_expr4(e, each_expr);
                    if (err != ERR_ok) goto ex_0;
                    }

  LINE(1683);
                    {
                    err = g_envOPputs(e, STR__137ops_054_040);
                    if (err != ERR_ok) goto ex_0;
                    }
                }
            }
            end_inline_for_1:;
            break;
            }
    case 7: 
         {
            break;
            }
    case 5: 
         {
            break;
            }
    default: {

  LINE(1689);
        {
        CLUREF T_2_1;
        CLUREF T_2_2;
        T_2_1.num = 420;
        err = compiler_logit(T_2_1, STR_g_137clusterop_072_040handle_040other_040type_137_047s, &T_2_2);
        if (err != ERR_ok) goto ex_0;
        }

  LINE(1690);
        {
        CLUREF T_2_1;
        T_2_1.num = cop.vec->data[2];
        err = typespec_print(T_2_1);
        if (err != ERR_ok) goto ex_0;
        }
    }
    }
    }

  LINE(1692);
    {
    {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 g_clusterop3 ****/


extern errcode s_owns_prefix_type();
CLUREF STR__137anyize;
CLUREF STR_force_072_040look_040out_040below;
CLUREF STR_force_072_040wrong_137tag;
CLUREF STR_of_137;
CLUREF STR__055_076proc_040_075_040force_073;
static int g_force_own_init = 0;

/**** BEGIN PROCEDURE g_force ****/

errcode g_force(e, ex, ty, ret_1)
CLUREF e;
CLUREF ex;
CLUREF ty;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
    CLUREF parm_list;
    CLUREF flist;
    CLUREF parm_count;
    CLUREF fcount;
    CLUREF ct;
    CLUREF nm;
    CLUREF c;
    CLUREF xa;
    CLUREF i;
    CLUREF proc_id;
    CLUREF ind;
    CLUREF sel_name;
        if (g_force_own_init == 0) {
        stringOPcons("", CLU_1, CLU_0, &STR_);
        stringOPcons("_anyize", CLU_1, CLU_7, &STR__137anyize);
        stringOPcons("force: look out below", CLU_1, CLU_21, &STR_force_072_040look_040out_040below);
        stringOPcons(" = proctypeOPnew(CLU_", CLU_1, CLU_21, &STR__040_075_040proctypeOPnew_050CLU_137);
        stringOPcons(", &", CLU_1, CLU_3, &STR__054_040_046);
        stringOPcons(");", CLU_1, CLU_2, &STR__051_073);
        stringOPcons("force: wrong_tag", CLU_1, CLU_16, &STR_force_072_040wrong_137tag);
        stringOPcons(".proc->type_owns = ", CLU_1, CLU_19, &STR__056proc_055_076type_137owns_040_075_040);
        stringOPcons("_", CLU_1, CLU_1, &STR__137);
        stringOPcons("of_", CLU_1, CLU_3, &STR_of_137);
        stringOPcons("ops->type_owns;", CLU_1, CLU_15, &STR_ops_055_076type_137owns_073);
        stringOPcons(".proc->op_owns = ", CLU_1, CLU_17, &STR__056proc_055_076op_137owns_040_075_040);
        stringOPcons("ops->op_owns;", CLU_1, CLU_13, &STR_ops_055_076op_137owns_073);
        stringOPcons("->proc = force;", CLU_1, CLU_15, &STR__055_076proc_040_075_040force_073);
        g_force_own_init = 1;
    }
    enter_proc(1695);

  LINE(1697);
    {
        {CLUREF T_1_1;
        err = sequenceOPnew(&T_1_1);
        if (err != ERR_ok) goto ex_0;
        parm_list.num = T_1_1.num;
        }
        }

  LINE(1698);
    {
        {CLUREF T_1_1;
        err = sequenceOPnew(&T_1_1);
        if (err != ERR_ok) goto ex_0;
        flist.num = T_1_1.num;
        }
        }

  LINE(1699);
    {
        {parm_count.num = 0;
        }
        }

  LINE(1700);
    {
        {fcount.num = 0;
        }
        }

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

  LINE(1703);
    {
    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 3: 
    case 8: 
         {CLUREF T_1_2;
        T_1_2.num = T_1_1.cell->value;
        c.num = T_1_2.num;

  LINE(1705);
            {
            ct.num = c.num;
            }

  LINE(1706);
            {
            CLUREF T_2_1;
            T_2_1.num = ct.vec->data[1];
            parm_list.num = T_2_1.num;
            }

  LINE(1707);
            {
            CLUREF T_2_1;
            T_2_1.num = parm_list.vec->size;
            parm_count.num = T_2_1.num;
            }

  LINE(1708);
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            T_2_1.num = ct.vec->data[0];
            err = duOPget_common(T_2_1, &T_2_2);
            if (err != ERR_ok) goto ex_0;
            nm.num = T_2_2.num;
            }
            break;
            }
    case 1: 
         {

  LINE(1710);
            {
            nm = STR__137anyize;
            }

  LINE(1711);
            {
            parm_count.num = 0;
            }
            break;
            }
    case 7: 
         {CLUREF T_1_3;
        T_1_3.num = T_1_1.cell->value;
        xa.num = T_1_3.num;

  LINE(1713);
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            T_2_1.num = xa.vec->data[0];
            err = duOPget_common(T_2_1, &T_2_2);
            if (err != ERR_ok) goto ex_0;
            nm.num = T_2_2.num;
            }

  LINE(1714);
            {
            CLUREF T_2_1;
            T_2_1.num = xa.vec->data[1];
            flist.num = T_2_1.num;
            }

  LINE(1715);
            {
            CLUREF T_2_1;
            T_2_1.num = flist.vec->size;
            fcount.num = T_2_1.num;
            }
            break;
            }
    case 5: 
         {CLUREF T_1_4;
        T_1_4.num = T_1_1.cell->value;
        i.num = T_1_4.num;

  LINE(1718);
            {
            CLUREF T_2_1;
            err = idnOPget_str(i, &T_2_1);
            if (err != ERR_ok) goto ex_0;
            nm.num = T_2_1.num;
            }
            break;
            }
    default: {

  LINE(1720);
        {
        CLUREF T_2_1;
        CLUREF T_2_2;
        T_2_1.num = 421;
        err = compiler_logit(T_2_1, STR_force_072_040look_040out_040below, &T_2_2);
        if (err != ERR_ok) goto ex_0;
        }

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

  LINE(1723);
    {
        {CLUREF T_1_1;
        CLUREF T_1_2;
        err = exprOPget_typespec(ex, &T_1_1);
        if (err != ERR_ok) goto ex_0;
        err = tvOPidn_next(T_1_1, &T_1_2);
        if (err != ERR_ok) goto ex_0;
        proc_id.num = T_1_2.num;
        }
        }

  LINE(1724);
    {
    err = g_err(e);
    if (err != ERR_ok) goto ex_0;
    }

  LINE(1725);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    CLUREF T_1_3;
    err = intOPunparse(CLU_1, &T_1_1);
    if (err != ERR_ok) goto ex_0;
    err = stringOPconcat(STR__040_075_040proctypeOPnew_050CLU_137, T_1_1, &T_1_2);
    if (err != ERR_ok) goto ex_0;
    err = stringOPconcat(T_1_2, STR__054_040_046, &T_1_3);
    if (err != ERR_ok) goto ex_0;
    err = g_envOPputs(e, T_1_3);
    if (err != ERR_ok) goto ex_0;
    }

  LINE(1726);
    {
    err = g_expr2(e, proc_id);
    if (err != ERR_ok) goto ex_0;
    }

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

  LINE(1729);
    {
    CLUREF T_2_1;
    CLUREF T_2_2;
    err = exprOPget_abs(proc_id, &T_2_1);
    if (err != ERR_ok) goto ex_1;
    if (T_2_1.cell->tag != 13) {err = ERR_wrong_tag; goto ex_1;}
    T_2_2.num = T_2_1.cell->value;
    err = g_idnlit(e, T_2_2);
    if (err != ERR_ok) goto ex_1;
    }
        goto end_1;
        ex_1:
            if ((err == ERR_wrong_tag)) {

  LINE(1731);
                {
                CLUREF T_2_1;
                CLUREF T_2_2;
                T_2_1.num = 422;
                err = compiler_logit(T_2_1, STR_force_072_040wrong_137tag, &T_2_2);
                if (err != ERR_ok) goto ex_0;
                }

  LINE(1732);
                {
                err = expr_print(proc_id, CLU_1);
                if (err != ERR_ok) goto ex_0;
                }
            }
            else {
                goto ex_0;
            }
        end_1:;

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

  LINE(1735);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    T_1_1.num = (parm_count.num == 0)? true : false;
    T_1_2.num = T_1_1.num ^ 1;
    if (T_1_2.num == true) {

  LINE(1736);
        {
        CLUREF T_2_1;
        err = s_owns_prefix_exprlist(parm_list, &T_2_1);
        if (err != ERR_ok) goto ex_0;
        err = g_envOPputs(e, T_2_1);
        if (err != ERR_ok) goto ex_0;
        }
        }
    else {
    CLUREF T_1_3;
    CLUREF T_1_4;
    T_1_3.num = (fcount.num == 0)? true : false;
    T_1_4.num = T_1_3.num ^ 1;
    if (T_1_4.num == true) {

  LINE(1738);
        {
        CLUREF T_2_1;
        err = s_owns_prefix_fieldlist(flist, &T_2_1);
        if (err != ERR_ok) goto ex_0;
        err = g_envOPputs(e, T_2_1);
        if (err != ERR_ok) goto ex_0;
        }
        }
    else {

  LINE(1740);
        {
        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;
        }
        }}}/* end if */

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

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

  LINE(1744);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    T_1_1.num = (parm_count.num == 0)? true : false;
    T_1_2.num = T_1_1.num ^ 1;
    if (T_1_2.num == true) {

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

  LINE(1746);
        {
        CLUREF T_2_1;
        CLUREF T_2_2;
            T_2_2.num = parm_list.vec->size; 
            for (T_2_1.num = 1; T_2_1.num <= T_2_2.num; T_2_1.num++) {
                ind.num = T_2_1.num;

  LINE(1747);
                {
                CLUREF T_3_1;
                if (ind.num < 1 || ind.num > parm_list.vec->size ) {
                    err = ERR_bounds;
                    goto ex_0;}
                T_3_1.num = parm_list.vec->data[ind.num - 1];
                err = g_expr4(e, T_3_1);
                if (err != ERR_ok) goto ex_0;
                }

  LINE(1748);
                {
                err = g_envOPputs(e, STR__137);
                if (err != ERR_ok) goto ex_0;
                }
            }
        }
        end_inline_for_1:;
        }
    else {
    CLUREF T_1_3;
    CLUREF T_1_4;
    T_1_3.num = (fcount.num == 0)? true : false;
    T_1_4.num = T_1_3.num ^ 1;
    if (T_1_4.num == true) {

  LINE(1751);
        {
            {CLUREF T_2_1;
            err = make_sel_name(flist, &T_2_1);
            if (err != ERR_ok) goto ex_0;
            sel_name.num = T_2_1.num;
            }
            }

  LINE(1752);
        {
        CLUREF T_2_1;
        err = stringOPconcat(sel_name, STR__137, &T_2_1);
        if (err != ERR_ok) goto ex_0;
        err = g_envOPputs(e, T_2_1);
        if (err != ERR_ok) goto ex_0;
        }
        }
        }}/* end if */

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

  LINE(1756);
    {
    CLUREF T_2_1;
    CLUREF T_2_2;
    err = exprOPget_abs(proc_id, &T_2_1);
    if (err != ERR_ok) goto ex_2;
    if (T_2_1.cell->tag != 13) {err = ERR_wrong_tag; goto ex_2;}
    T_2_2.num = T_2_1.cell->value;
    err = g_idnlit(e, T_2_2);
    if (err != ERR_ok) goto ex_2;
    }
        goto end_2;
        ex_2:
            if ((err == ERR_wrong_tag)) {

  LINE(1758);
                {
                CLUREF T_2_1;
                CLUREF T_2_2;
                T_2_1.num = 423;
                err = compiler_logit(T_2_1, STR_force_072_040wrong_137tag, &T_2_2);
                if (err != ERR_ok) goto ex_0;
                }

  LINE(1759);
                {
                err = expr_print(proc_id, CLU_1);
                if (err != ERR_ok) goto ex_0;
                }
            }
            else {
                goto ex_0;
            }
        end_2:;

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

  LINE(1762);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    T_1_1.num = (parm_count.num == 0)? true : false;
    T_1_2.num = T_1_1.num ^ 1;
    if (T_1_2.num == true) {

  LINE(1763);
        {
        CLUREF T_2_1;
        err = s_owns_prefix_exprlist(parm_list, &T_2_1);
        if (err != ERR_ok) goto ex_0;
        err = g_envOPputs(e, T_2_1);
        if (err != ERR_ok) goto ex_0;
        }
        }
    else {
    CLUREF T_1_3;
    CLUREF T_1_4;
    T_1_3.num = (fcount.num == 0)? true : false;
    T_1_4.num = T_1_3.num ^ 1;
    if (T_1_4.num == true) {

  LINE(1765);
        {
        CLUREF T_2_1;
        err = s_owns_prefix_fieldlist(flist, &T_2_1);
        if (err != ERR_ok) goto ex_0;
        err = g_envOPputs(e, T_2_1);
        if (err != ERR_ok) goto ex_0;
        }
        }
    else {

  LINE(1767);
        {
        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;
        }
        }}}/* end if */

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

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

  LINE(1771);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    T_1_1.num = (parm_count.num == 0)? true : false;
    T_1_2.num = T_1_1.num ^ 1;
    if (T_1_2.num == true) {

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

  LINE(1773);
        {
        CLUREF T_2_1;
        CLUREF T_2_2;
            T_2_2.num = parm_list.vec->size; 
            for (T_2_1.num = 1; T_2_1.num <= T_2_2.num; T_2_1.num++) {
                ind.num = T_2_1.num;

  LINE(1774);
                {
                CLUREF T_3_1;
                if (ind.num < 1 || ind.num > parm_list.vec->size ) {
                    err = ERR_bounds;
                    goto ex_0;}
                T_3_1.num = parm_list.vec->data[ind.num - 1];
                err = g_expr4(e, T_3_1);
                if (err != ERR_ok) goto ex_0;
                }

  LINE(1775);
                {
                err = g_envOPputs(e, STR__137);
                if (err != ERR_ok) goto ex_0;
                }
            }
        }
        end_inline_for_2:;
        }
    else {
    CLUREF T_1_3;
    CLUREF T_1_4;
    T_1_3.num = (fcount.num == 0)? true : false;
    T_1_4.num = T_1_3.num ^ 1;
    if (T_1_4.num == true) {

  LINE(1778);
        {
            {CLUREF T_2_1;
            err = make_sel_name(flist, &T_2_1);
            if (err != ERR_ok) goto ex_0;
            sel_name.num = T_2_1.num;
            }
            }

  LINE(1779);
        {
        CLUREF T_2_1;
        err = stringOPconcat(sel_name, STR__137, &T_2_1);
        if (err != ERR_ok) goto ex_0;
        err = g_envOPputs(e, T_2_1);
        if (err != ERR_ok) goto ex_0;
        }
        }
        }}/* end if */

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

  LINE(1783);
    {
    err = g_expr2(e, proc_id);
    if (err != ERR_ok) goto ex_0;
    }

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

  LINE(1785);
    {
    {
    CLUREF T_1_1;
    err = sequenceOPfill(CLU_1, proc_id, &T_1_1);
    if (err != ERR_ok) goto ex_0;
    ret_1->num = T_1_1.num;
    }
    {signal (ERR_ok);}}
    goto end_0;
    ex_0:
        {
            if (err == ERR_failure) {signal(ERR_failure);}
            elist[0] = _pclu_erstr(err);
            {signal(ERR_failure);}
        }
    end_0: elist[0].str = no_return_values_STRING;
        {signal(ERR_failure);}
    }

/**** END PROCEDURE g_force ****/



/**** BEGIN PROCEDURE g_updown ****/

errcode g_updown(e, x, op, ret_1)
CLUREF e;
CLUREF x;
CLUREF op;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
    CLUREF el;
    enter_proc(1789);

  LINE(1791);
    {
        {CLUREF T_1_1;
        err = g_expr1(e, x, &T_1_1);
        if (err != ERR_ok) goto ex_0;
        el.num = T_1_1.num;
        }
        }

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

/**** END PROCEDURE g_updown ****/


extern errcode g_string2();
CLUREF STR_nil;
CLUREF STR_true;
CLUREF STR_false;
CLUREF STR__047;
CLUREF STR_g_137const_137expr_072_040unexpected_040tag;
static int g_const_expr_own_init = 0;

/**** BEGIN PROCEDURE g_const_expr ****/

errcode g_const_expr(e, x)
CLUREF e;
CLUREF x;
    {
    errcode err;
    errcode ecode2;
    CLUREF b;
    CLUREF i;
    CLUREF r;
    CLUREF c;
    CLUREF s;
        if (g_const_expr_own_init == 0) {
        stringOPcons("nil", CLU_1, CLU_3, &STR_nil);
        stringOPcons("true", CLU_1, CLU_4, &STR_true);
        stringOPcons("false", CLU_1, CLU_5, &STR_false);
        stringOPcons("\'", CLU_1, CLU_1, &STR__047);
        stringOPcons("g_const_expr: unexpected tag", CLU_1, CLU_28, &STR_g_137const_137expr_072_040unexpected_040tag);
        g_const_expr_own_init = 1;
    }
    enter_proc(1796);

  LINE(1801);
    {
    CLUREF T_1_1;
    err = exprOPget_abs(x, &T_1_1);
    if (err != ERR_ok) goto ex_0;
    switch (T_1_1.cell->tag) {
    case 19: 
         {

  LINE(1802);
            {
            err = g_envOPputs(e, STR_nil);
            if (err != ERR_ok) goto ex_0;
            }
            break;
            }
    case 5: 
         {CLUREF T_1_2;
        T_1_2.num = T_1_1.cell->value;
        b.num = T_1_2.num;

  LINE(1804);
            {
            if (b.num == true) {
                {
                err = g_envOPputs(e, STR_true);
                if (err != ERR_ok) goto ex_0;
                }
                }
            else {
                {
                err = g_envOPputs(e, STR_false);
                if (err != ERR_ok) goto ex_0;
                }
                }}/* end if */
            break;
            }
    case 15: 
         {CLUREF T_1_3;
        T_1_3.num = T_1_1.cell->value;
        i.num = T_1_3.num;

  LINE(1805);
            {
            CLUREF T_2_1;
            err = intOPunparse(i, &T_2_1);
            if (err != ERR_ok) goto ex_0;
            err = g_envOPputs(e, T_2_1);
            if (err != ERR_ok) goto ex_0;
            }
            break;
            }
    case 21: 
         {CLUREF T_1_4;
        T_1_4.num = T_1_1.cell->value;
        r.num = T_1_4.num;

  LINE(1806);
            {
            CLUREF T_2_1;
            err = realOPunparse(r, &T_2_1);
            if (err != ERR_ok) goto ex_0;
            err = g_envOPputs(e, T_2_1);
            if (err != ERR_ok) goto ex_0;
            }
            break;
            }
    case 7: 
         {CLUREF T_1_5;
        T_1_5.num = T_1_1.cell->value;
        c.num = T_1_5.num;

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

  LINE(1809);
            {
            err = g_char(e, c);
            if (err != ERR_ok) goto ex_0;
            }

  LINE(1810);
            {
            err = g_envOPputs(e, STR__047);
            if (err != ERR_ok) goto ex_0;
            }
            break;
            }
    case 24: 
         {CLUREF T_1_6;
        T_1_6.num = T_1_1.cell->value;
        s.num = T_1_6.num;

  LINE(1812);
            {
            err = g_string2(e, s);
            if (err != ERR_ok) goto ex_0;
            }
            break;
            }
    default: {

  LINE(1813);
        {
        err = g_envOPerror(e, STR_g_137const_137expr_072_040unexpected_040tag);
        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_const_expr ****/


extern errcode charOPge();
extern errcode charOPle();

/**** BEGIN PROCEDURE g_printing_char ****/

errcode g_printing_char(c, ret_1)
CLUREF c;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
    enter_proc(1817);

  LINE(1818);
    {
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    CLUREF T_1_3;
    CLUREF T_1_4;
    CLUREF T_1_5;
    T_1_2.ch = ' ';
    err = charOPge(c, T_1_2, &T_1_3);
    if (err != ERR_ok) goto ex_0;
    T_1_1.num = T_1_3.num;
    if (T_1_3.num) {
        T_1_4.ch = '~';
        err = charOPle(c, T_1_4, &T_1_5);
        if (err != ERR_ok) goto ex_0;
        T_1_1.num = T_1_5.num;
    }
    ret_1->num = T_1_1.num;
    }
    {signal (ERR_ok);}}
    goto end_0;
    ex_0:
        {
            if (err == ERR_failure) {signal(ERR_failure);}
            elist[0] = _pclu_erstr(err);
            {signal(ERR_failure);}
        }
    end_0: elist[0].str = no_return_values_STRING;
        {signal(ERR_failure);}
    }

/**** END PROCEDURE g_printing_char ****/


extern errcode g_string_IB_1();
extern errcode stringOPchars();
CLUREF STR__042;
static int g_string_own_init = 0;

/**** BEGIN PROCEDURE g_string ****/

errcode g_string(e, s)
CLUREF e;
CLUREF s;
    {
    struct {
        errcode err;
        errcode ecode2;
        CLUREF c;
        CLUREF e;
        CLUREF s;
        } locals;
    locals.e = e;
    locals.s = s;
        if (g_string_own_init == 0) {
        stringOPcons("\"", CLU_1, CLU_1, &STR__042);
        g_string_own_init = 1;
    }
    enter_proc(1821);

  LINE(1822);
    {
    locals.err = g_envOPputs(locals.e, STR__042);
    if (locals.err != ERR_ok) goto ex_0;
    }

  LINE(1823);
    {
        locals.err = stringOPchars(locals.s, g_string_IB_1, &locals, &locals.ecode2);
        if (locals.err == ERR_iterbodyreturn) {
        signal(ERR_ok);}
        if (locals.err == ERR_iterbodysignal) {signal(locals.ecode2);}
        if (locals.err == ERR_break) locals.err = ERR_ok;
        if (locals.err == ERR_iterbodyexit) locals.err = locals.ecode2;
        if (locals.err != ERR_ok) goto ex_0;
        }

  LINE(1826);
    {
    locals.err = g_envOPputs(locals.e, STR__042);
    if (locals.err != ERR_ok) goto ex_0;
    }
    goto end_0;
    ex_0:
        {
            if (locals.err == ERR_failure) {signal(ERR_failure);}
            elist[0] = _pclu_erstr(locals.err);
            {signal(ERR_failure);}
        }
    end_0: {signal(ERR_ok);}
    }

/**** END PROCEDURE g_string ****/


/**** BEGIN ITERATOR BODIES for g_string ****/

errcode g_string_IB_1(iv_1, locals, iecode)
errcode *iecode;
CLUREF iv_1;
struct {
    errcode err;
    errcode ecode2;
    CLUREF c;
    CLUREF e;
    CLUREF s;
    } *locals;
{
    locals->c.num = iv_1.num;
    enter_iter_body_proc(1824);

  FB_LINE(1824);
    {
    locals->err = g_char(locals->e, locals->c);
    if (locals->err != ERR_ok) goto ex_0;
    }
    {signal(ERR_ok);}
    ex_0:
        {
            *iecode = locals->err;
            {signal(ERR_iterbodyexit);}}
    end_0: {signal(ERR_ok);}
    }/* end g_string_IB_1 */

/**** END ITERATOR BODIES for g_string ****/


extern errcode s_string_name();
static int g_string2_own_init = 0;

/**** BEGIN PROCEDURE g_string2 ****/

errcode g_string2(e, s)
CLUREF e;
CLUREF s;
    {
    errcode err;
    errcode ecode2;
        if (g_string2_own_init == 0) {
        stringOPcons(".num", CLU_1, CLU_4, &STR__056num);
        g_string2_own_init = 1;
    }
    enter_proc(1829);

  LINE(1830);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    err = s_string_name(s, &T_1_1);
    if (err != ERR_ok) goto ex_0;
    err = stringOPconcat(T_1_1, STR__056num, &T_1_2);
    if (err != ERR_ok) goto ex_0;
    err = g_envOPputs(e, T_1_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_string2 ****/


extern errcode s_string_embed();
CLUREF STR_STR_137;
static int g_string_name_own_init = 0;

/**** BEGIN PROCEDURE g_string_name ****/

errcode g_string_name(e, s)
CLUREF e;
CLUREF s;
    {
    errcode err;
    errcode ecode2;
        if (g_string_name_own_init == 0) {
        stringOPcons("STR_", CLU_1, CLU_4, &STR_STR_137);
        g_string_name_own_init = 1;
    }
    enter_proc(1833);

  LINE(1834);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    err = s_string_embed(s, &T_1_1);
    if (err != ERR_ok) goto ex_0;
    err = stringOPconcat(STR_STR_137, T_1_1, &T_1_2);
    if (err != ERR_ok) goto ex_0;
    err = g_envOPputs(e, T_1_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_string_name ****/


static int s_string_name_own_init = 0;

/**** BEGIN PROCEDURE s_string_name ****/

errcode s_string_name(s, ret_1)
CLUREF s;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
        if (s_string_name_own_init == 0) {
        stringOPcons("STR_", CLU_1, CLU_4, &STR_STR_137);
        s_string_name_own_init = 1;
    }
    enter_proc(1837);

  LINE(1838);
    {
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    err = s_string_embed(s, &T_1_1);
    if (err != ERR_ok) goto ex_0;
    err = stringOPconcat(STR_STR_137, T_1_1, &T_1_2);
    if (err != ERR_ok) goto ex_0;
    ret_1->num = T_1_2.num;
    }
    {signal (ERR_ok);}}
    goto end_0;
    ex_0:
        {
            if (err == ERR_failure) {signal(ERR_failure);}
            elist[0] = _pclu_erstr(err);
            {signal(ERR_failure);}
        }
    end_0: elist[0].str = no_return_values_STRING;
        {signal(ERR_failure);}
    }

/**** END PROCEDURE s_string_name ****/


extern errcode g_printing_char();
extern errcode stringOPc2s();
extern errcode i_ounparse();
extern errcode charOPc2i();
CLUREF STR__134;
CLUREF STR_n;
CLUREF STR_t;
CLUREF STR_f;
CLUREF STR_b;
CLUREF STR_r;
CLUREF STR_v;
CLUREF STR_00;
static int g_char_own_init = 0;

/**** BEGIN PROCEDURE g_char ****/

errcode g_char(e, c)
CLUREF e;
CLUREF c;
    {
    errcode err;
    errcode ecode2;
    CLUREF ostr;
        if (g_char_own_init == 0) {
        stringOPcons("\\", CLU_1, CLU_1, &STR__134);
        stringOPcons("n", CLU_1, CLU_1, &STR_n);
        stringOPcons("\"", CLU_1, CLU_1, &STR__042);
        stringOPcons("t", CLU_1, CLU_1, &STR_t);
        stringOPcons("f", CLU_1, CLU_1, &STR_f);
        stringOPcons("b", CLU_1, CLU_1, &STR_b);
        stringOPcons("r", CLU_1, CLU_1, &STR_r);
        stringOPcons("v", CLU_1, CLU_1, &STR_v);
        stringOPcons("\'", CLU_1, CLU_1, &STR__047);
        stringOPcons("00", CLU_1, CLU_2, &STR_00);
        g_char_own_init = 1;
    }
    enter_proc(1841);

  LINE(1842);
    {
    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;
    err = g_printing_char(c, &T_1_4);
    if (err != ERR_ok) goto ex_0;
    T_1_3.num = T_1_4.num;
    if (T_1_4.num) {
        T_1_5.ch = '\\';
        T_1_6.num = (c.ch == T_1_5.ch)? true : false;
        T_1_7.num = T_1_6.num ^ 1;
        T_1_3.num = T_1_7.num;
    }
    T_1_2.num = T_1_3.num;
    if (T_1_3.num) {
        T_1_8.ch = '\"';
        T_1_9.num = (c.ch == T_1_8.ch)? true : false;
        T_1_10.num = T_1_9.num ^ 1;
        T_1_2.num = T_1_10.num;
    }
    T_1_1.num = T_1_2.num;
    if (T_1_2.num) {
        T_1_11.ch = '\'';
        T_1_12.num = (c.ch == T_1_11.ch)? true : false;
        T_1_13.num = T_1_12.num ^ 1;
        T_1_1.num = T_1_13.num;
    }
    if (T_1_1.num == true) {

  LINE(1843);
        {
        CLUREF T_2_1;
        err = stringOPc2s(c, &T_2_1);
        if (err != ERR_ok) goto ex_0;
        err = g_envOPputs(e, T_2_1);
        if (err != ERR_ok) goto ex_0;
        }
        }
    else {

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

  LINE(1846);
        {
        CLUREF T_2_1;
        CLUREF T_2_2;
        T_2_1.ch = '\n';
        T_2_2.num = (c.ch == T_2_1.ch)? true : false;
        if (T_2_2.num == true) {

  LINE(1847);
            {
            err = g_envOPputs(e, STR_n);
            if (err != ERR_ok) goto ex_0;
            }
            }
        else {
        CLUREF T_2_3;
        CLUREF T_2_4;
        T_2_3.ch = '\\';
        T_2_4.num = (c.ch == T_2_3.ch)? true : false;
        if (T_2_4.num == true) {

  LINE(1849);
            {
            err = g_envOPputs(e, STR__134);
            if (err != ERR_ok) goto ex_0;
            }
            }
        else {
        CLUREF T_2_5;
        CLUREF T_2_6;
        T_2_5.ch = '\"';
        T_2_6.num = (c.ch == T_2_5.ch)? true : false;
        if (T_2_6.num == true) {

  LINE(1851);
            {
            err = g_envOPputs(e, STR__042);
            if (err != ERR_ok) goto ex_0;
            }
            }
        else {
        CLUREF T_2_7;
        CLUREF T_2_8;
        T_2_7.ch = '\t';
        T_2_8.num = (c.ch == T_2_7.ch)? true : false;
        if (T_2_8.num == true) {

  LINE(1853);
            {
            err = g_envOPputs(e, STR_t);
            if (err != ERR_ok) goto ex_0;
            }
            }
        else {
        CLUREF T_2_9;
        CLUREF T_2_10;
        T_2_9.ch = '\f';
        T_2_10.num = (c.ch == T_2_9.ch)? true : false;
        if (T_2_10.num == true) {

  LINE(1855);
            {
            err = g_envOPputs(e, STR_f);
            if (err != ERR_ok) goto ex_0;
            }
            }
        else {
        CLUREF T_2_11;
        CLUREF T_2_12;
        T_2_11.ch = '\b';
        T_2_12.num = (c.ch == T_2_11.ch)? true : false;
        if (T_2_12.num == true) {

  LINE(1857);
            {
            err = g_envOPputs(e, STR_b);
            if (err != ERR_ok) goto ex_0;
            }
            }
        else {
        CLUREF T_2_13;
        CLUREF T_2_14;
        T_2_13.ch = '\r';
        T_2_14.num = (c.ch == T_2_13.ch)? true : false;
        if (T_2_14.num == true) {

  LINE(1859);
            {
            err = g_envOPputs(e, STR_r);
            if (err != ERR_ok) goto ex_0;
            }
            }
        else {
        CLUREF T_2_15;
        CLUREF T_2_16;
        T_2_15.ch = '\v';
        T_2_16.num = (c.ch == T_2_15.ch)? true : false;
        if (T_2_16.num == true) {

  LINE(1861);
            {
            err = g_envOPputs(e, STR_v);
            if (err != ERR_ok) goto ex_0;
            }
            }
        else {
        CLUREF T_2_17;
        CLUREF T_2_18;
        T_2_17.ch = '\'';
        T_2_18.num = (c.ch == T_2_17.ch)? true : false;
        if (T_2_18.num == true) {

  LINE(1863);
            {
            err = g_envOPputs(e, STR__047);
            if (err != ERR_ok) goto ex_0;
            }
            }
        else {

  LINE(1865);
            {
                {CLUREF T_3_1;
                CLUREF T_3_2;
                CLUREF T_3_3;
                T_3_1.num = (int)(c.ch & 0xff);
                err = i_ounparse(T_3_1, &T_3_2);
                if (err != ERR_ok) goto ex_0;
                err = stringOPconcat(STR_00, T_3_2, &T_3_3);
                if (err != ERR_ok) goto ex_0;
                ostr.num = T_3_3.num;
                }
                }

  LINE(1866);
            {
            CLUREF T_3_1;
            CLUREF T_3_2;
            CLUREF T_3_3;
            err = stringOPsize(ostr, &T_3_1);
            if (err != ERR_ok) goto ex_0;
            T_3_2.num = T_3_1.num - 2;
             if ((T_3_2.num >= 0 && T_3_1.num < 0 && (-2) < 0) || 
                 (T_3_2.num <= 0 && T_3_1.num > 0 && (-2) > 0)) {
                err = ERR_overflow;
                goto ex_0;}
            err = stringOPsubstr(ostr, T_3_2, CLU_3, &T_3_3);
            if (err != ERR_ok) goto ex_0;
            err = g_envOPputs(e, T_3_3);
            if (err != ERR_ok) goto ex_0;
            }
            }}}}}}}}}}/* end if */
        }}/* 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_char ****/


extern errcode real_embed();
extern errcode s_char_embed();
CLUREF STR_g_137const_137expr_137embed_072_040unexpected_040tag;
static int g_const_expr_embed_own_init = 0;

/**** BEGIN PROCEDURE g_const_expr_embed ****/

errcode g_const_expr_embed(e, x)
CLUREF e;
CLUREF x;
    {
    errcode err;
    errcode ecode2;
    CLUREF b;
    CLUREF i;
    CLUREF r;
    CLUREF c;
    CLUREF s;
        if (g_const_expr_embed_own_init == 0) {
        stringOPcons("nil", CLU_1, CLU_3, &STR_nil);
        stringOPcons("true", CLU_1, CLU_4, &STR_true);
        stringOPcons("false", CLU_1, CLU_5, &STR_false);
        stringOPcons("g_const_expr_embed: unexpected tag", CLU_1, CLU_34, &STR_g_137const_137expr_137embed_072_040unexpected_040tag);
        g_const_expr_embed_own_init = 1;
    }
    enter_proc(1872);

  LINE(1877);
    {
    CLUREF T_1_1;
    err = exprOPget_abs(x, &T_1_1);
    if (err != ERR_ok) goto ex_0;
    switch (T_1_1.cell->tag) {
    case 19: 
         {

  LINE(1878);
            {
            err = g_envOPputs(e, STR_nil);
            if (err != ERR_ok) goto ex_0;
            }
            break;
            }
    case 5: 
         {CLUREF T_1_2;
        T_1_2.num = T_1_1.cell->value;
        b.num = T_1_2.num;

  LINE(1880);
            {
            if (b.num == true) {
                {
                err = g_envOPputs(e, STR_true);
                if (err != ERR_ok) goto ex_0;
                }
                }
            else {
                {
                err = g_envOPputs(e, STR_false);
                if (err != ERR_ok) goto ex_0;
                }
                }}/* end if */
            break;
            }
    case 15: 
         {CLUREF T_1_3;
        T_1_3.num = T_1_1.cell->value;
        i.num = T_1_3.num;

  LINE(1881);
            {
            CLUREF T_2_1;
            err = intOPunparse(i, &T_2_1);
            if (err != ERR_ok) goto ex_0;
            err = g_envOPputs(e, T_2_1);
            if (err != ERR_ok) goto ex_0;
            }
            break;
            }
    case 21: 
         {CLUREF T_1_4;
        T_1_4.num = T_1_1.cell->value;
        r.num = T_1_4.num;

  LINE(1882);
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            err = realOPunparse(r, &T_2_1);
            if (err != ERR_ok) goto ex_0;
            err = real_embed(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;
            }
            break;
            }
    case 7: 
         {CLUREF T_1_5;
        T_1_5.num = T_1_1.cell->value;
        c.num = T_1_5.num;

  LINE(1884);
            {
            CLUREF T_2_1;
            err = s_char_embed(c, &T_2_1);
            if (err != ERR_ok) goto ex_0;
            err = g_envOPputs(e, T_2_1);
            if (err != ERR_ok) goto ex_0;
            }
            break;
            }
    case 24: 
         {CLUREF T_1_6;
        T_1_6.num = T_1_1.cell->value;
        s.num = T_1_6.num;

  LINE(1886);
            {
            CLUREF T_2_1;
            err = s_string_embed(s, &T_2_1);
            if (err != ERR_ok) goto ex_0;
            err = g_envOPputs(e, T_2_1);
            if (err != ERR_ok) goto ex_0;
            }
            break;
            }
    default: {

  LINE(1887);
        {
        err = g_envOPerror(e, STR_g_137const_137expr_137embed_072_040unexpected_040tag);
        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_const_expr_embed ****/


CLUREF STR_s_137const_137expr_137embed_072_040unexpected_040tag;
static int s_const_expr_embed_own_init = 0;

/**** BEGIN PROCEDURE s_const_expr_embed ****/

errcode s_const_expr_embed(x, ret_1)
CLUREF x;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
    CLUREF b;
    CLUREF i;
    CLUREF r;
    CLUREF c;
    CLUREF s;
        if (s_const_expr_embed_own_init == 0) {
        stringOPcons("nil", CLU_1, CLU_3, &STR_nil);
        stringOPcons("true", CLU_1, CLU_4, &STR_true);
        stringOPcons("false", CLU_1, CLU_5, &STR_false);
        stringOPcons("s_const_expr_embed: unexpected tag", CLU_1, CLU_34, &STR_s_137const_137expr_137embed_072_040unexpected_040tag);
        stringOPcons("WRONG", CLU_1, CLU_5, &STR_WRONG);
        s_const_expr_embed_own_init = 1;
    }
    enter_proc(1891);

  LINE(1896);
    {
    CLUREF T_1_1;
    err = exprOPget_abs(x, &T_1_1);
    if (err != ERR_ok) goto ex_0;
    switch (T_1_1.cell->tag) {
    case 19: 
         {

  LINE(1897);
            {
            {
            ret_1->str = STR_nil.str;
            }
            {signal (ERR_ok);}}
            break;
            }
    case 5: 
         {CLUREF T_1_2;
        T_1_2.num = T_1_1.cell->value;
        b.num = T_1_2.num;

  LINE(1899);
            {
            if (b.num == true) {
                {
                {
                ret_1->str = STR_true.str;
                }
                {signal (ERR_ok);}}
                }
            else {
                {
                {
                ret_1->str = STR_false.str;
                }
                {signal (ERR_ok);}}
                }}/* end if */
            break;
            }
    case 15: 
         {CLUREF T_1_3;
        T_1_3.num = T_1_1.cell->value;
        i.num = T_1_3.num;

  LINE(1900);
            {
            {
            CLUREF T_2_1;
            err = intOPunparse(i, &T_2_1);
            if (err != ERR_ok) goto ex_0;
            ret_1->num = T_2_1.num;
            }
            {signal (ERR_ok);}}
            break;
            }
    case 21: 
         {CLUREF T_1_4;
        T_1_4.num = T_1_1.cell->value;
        r.num = T_1_4.num;

  LINE(1902);
            {
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            err = realOPunparse(r, &T_2_1);
            if (err != ERR_ok) goto ex_0;
            err = real_embed(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_5;
        T_1_5.num = T_1_1.cell->value;
        c.num = T_1_5.num;

  LINE(1904);
            {
            {
            CLUREF T_2_1;
            err = s_char_embed(c, &T_2_1);
            if (err != ERR_ok) goto ex_0;
            ret_1->num = T_2_1.num;
            }
            {signal (ERR_ok);}}
            break;
            }
    case 24: 
         {CLUREF T_1_6;
        T_1_6.num = T_1_1.cell->value;
        s.num = T_1_6.num;

  LINE(1906);
            {
            {
            CLUREF T_2_1;
            err = s_string_embed(s, &T_2_1);
            if (err != ERR_ok) goto ex_0;
            ret_1->num = T_2_1.num;
            }
            {signal (ERR_ok);}}
            break;
            }
    default: {

  LINE(1907);
        {
        CLUREF T_2_1;
        CLUREF T_2_2;
        T_2_1.num = 424;
        err = compiler_logit(T_2_1, STR_s_137const_137expr_137embed_072_040unexpected_040tag, &T_2_2);
        if (err != ERR_ok) goto ex_0;
        }
    }
    }
    }

  LINE(1909);
    {
    {
    ret_1->str = STR_WRONG.str;
    }
    {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 s_const_expr_embed ****/


extern errcode real_embed_IB_1();
static int real_embed_own_init = 0;

/**** BEGIN PROCEDURE real_embed ****/

errcode real_embed(s, ret_1)
CLUREF s;
CLUREF *ret_1;
    {
    struct {
        errcode err;
        errcode ecode2;
        CLUREF ans;
        CLUREF each_char;
        CLUREF s;
        } locals;
    locals.s = s;
        if (real_embed_own_init == 0) {
        stringOPcons("", CLU_1, CLU_0, &STR_);
        real_embed_own_init = 1;
    }
    enter_proc(1912);

  LINE(1913);
    {
        {locals.ans = STR_;
        }
        }

  LINE(1914);
    {
        locals.err = stringOPchars(locals.s, real_embed_IB_1, &locals, &locals.ecode2);
        if (locals.err == ERR_iterbodyreturn) {
        ret_1->num = elist[0].num;
        signal(ERR_ok);}
        if (locals.err == ERR_iterbodysignal) {signal(locals.ecode2);}
        if (locals.err == ERR_break) locals.err = ERR_ok;
        if (locals.err == ERR_iterbodyexit) locals.err = locals.ecode2;
        if (locals.err != ERR_ok) goto ex_0;
        }

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

/**** END PROCEDURE real_embed ****/


/**** BEGIN ITERATOR BODIES for real_embed ****/

errcode real_embed_IB_1(iv_1, locals, iecode)
errcode *iecode;
CLUREF iv_1;
struct {
    errcode err;
    errcode ecode2;
    CLUREF ans;
    CLUREF each_char;
    CLUREF s;
    } *locals;
{
    locals->each_char.num = iv_1.num;
    enter_iter_body_proc(1915);

  FB_LINE(1915);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    locals->err = s_char_embed(locals->each_char, &T_1_1);
    if (locals->err != ERR_ok) goto ex_0;
    locals->err = stringOPconcat(locals->ans, T_1_1, &T_1_2);
    if (locals->err != ERR_ok) goto ex_0;
    locals->ans.num = T_1_2.num;
    }
    {signal(ERR_ok);}
    ex_0:
        {
            *iecode = locals->err;
            {signal(ERR_iterbodyexit);}}
    end_0: {signal(ERR_ok);}
    }/* end real_embed_IB_1 */

/**** END ITERATOR BODIES for real_embed ****/


extern errcode s_string_embed_IB_1();
static int s_string_embed_own_init = 0;

/**** BEGIN PROCEDURE s_string_embed ****/

errcode s_string_embed(s, ret_1)
CLUREF s;
CLUREF *ret_1;
    {
    struct {
        errcode err;
        errcode ecode2;
        CLUREF ans;
        CLUREF c;
        CLUREF s;
        } locals;
    locals.s = s;
        if (s_string_embed_own_init == 0) {
        stringOPcons("", CLU_1, CLU_0, &STR_);
        s_string_embed_own_init = 1;
    }
    enter_proc(1920);

  LINE(1921);
    {
        {locals.ans = STR_;
        }
        }

  LINE(1922);
    {
        locals.err = stringOPchars(locals.s, s_string_embed_IB_1, &locals, &locals.ecode2);
        if (locals.err == ERR_iterbodyreturn) {
        ret_1->num = elist[0].num;
        signal(ERR_ok);}
        if (locals.err == ERR_iterbodysignal) {signal(locals.ecode2);}
        if (locals.err == ERR_break) locals.err = ERR_ok;
        if (locals.err == ERR_iterbodyexit) locals.err = locals.ecode2;
        if (locals.err != ERR_ok) goto ex_0;
        }

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

/**** END PROCEDURE s_string_embed ****/


/**** BEGIN ITERATOR BODIES for s_string_embed ****/

errcode s_string_embed_IB_1(iv_1, locals, iecode)
errcode *iecode;
CLUREF iv_1;
struct {
    errcode err;
    errcode ecode2;
    CLUREF ans;
    CLUREF c;
    CLUREF s;
    } *locals;
{
    locals->c.num = iv_1.num;
    enter_iter_body_proc(1923);

  FB_LINE(1923);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    locals->err = s_char_embed(locals->c, &T_1_1);
    if (locals->err != ERR_ok) goto ex_0;
    locals->err = stringOPconcat(locals->ans, T_1_1, &T_1_2);
    if (locals->err != ERR_ok) goto ex_0;
    locals->ans.num = T_1_2.num;
    }
    {signal(ERR_ok);}
    ex_0:
        {
            *iecode = locals->err;
            {signal(ERR_iterbodyexit);}}
    end_0: {signal(ERR_ok);}
    }/* end s_string_embed_IB_1 */

/**** END ITERATOR BODIES for s_string_embed ****/


extern errcode s_char_embed1();
extern errcode s_char_embed2();

/**** BEGIN PROCEDURE s_char_embed ****/

errcode s_char_embed(c, ret_1)
CLUREF c;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
    enter_proc(1928);

  LINE(1929);
    {
    if (false == true) {
        {
        {
        CLUREF T_2_1;
        err = s_char_embed1(c, &T_2_1);
        if (err != ERR_ok) goto ex_0;
        ret_1->num = T_2_1.num;
        }
        {signal (ERR_ok);}}
        }
        }/* end if */

  LINE(1930);
    {
    {
    CLUREF T_1_1;
    err = s_char_embed2(c, &T_1_1);
    if (err != ERR_ok) goto ex_0;
    ret_1->num = T_1_1.num;
    }
    {signal (ERR_ok);}}
    goto end_0;
    ex_0:
        {
            if (err == ERR_failure) {signal(ERR_failure);}
            elist[0] = _pclu_erstr(err);
            {signal(ERR_failure);}
        }
    end_0: elist[0].str = no_return_values_STRING;
        {signal(ERR_failure);}
    }

/**** END PROCEDURE s_char_embed ****/


extern errcode embed_char();
CLUREF STR__137N_044;
CLUREF STR__137ESC_044;
CLUREF STR__137DQ_044;
CLUREF STR__137T_044;
CLUREF STR__137F_044;
CLUREF STR__137B_044;
CLUREF STR__137R_044;
CLUREF STR__137V_044;
CLUREF STR__137Q_044;
CLUREF STR__137_137_044;
CLUREF STR__137_044_044;
static int s_char_embed1_own_init = 0;

/**** BEGIN PROCEDURE s_char_embed1 ****/

errcode s_char_embed1(c, ret_1)
CLUREF c;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
    CLUREF ans;
    CLUREF ostr;
        if (s_char_embed1_own_init == 0) {
        stringOPcons("_N$", CLU_1, CLU_3, &STR__137N_044);
        stringOPcons("_ESC$", CLU_1, CLU_5, &STR__137ESC_044);
        stringOPcons("_DQ$", CLU_1, CLU_4, &STR__137DQ_044);
        stringOPcons("_T$", CLU_1, CLU_3, &STR__137T_044);
        stringOPcons("_F$", CLU_1, CLU_3, &STR__137F_044);
        stringOPcons("_B$", CLU_1, CLU_3, &STR__137B_044);
        stringOPcons("_R$", CLU_1, CLU_3, &STR__137R_044);
        stringOPcons("_V$", CLU_1, CLU_3, &STR__137V_044);
        stringOPcons("_Q$", CLU_1, CLU_3, &STR__137Q_044);
        stringOPcons("__$", CLU_1, CLU_3, &STR__137_137_044);
        stringOPcons("_$$", CLU_1, CLU_3, &STR__137_044_044);
        stringOPcons("00", CLU_1, CLU_2, &STR_00);
        stringOPcons("_", CLU_1, CLU_1, &STR__137);
        stringOPcons("OP", CLU_1, CLU_2, &STR_OP);
        s_char_embed1_own_init = 1;
    }
    enter_proc(1933);

  LINE(1935);
    {
    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;
    err = embed_char(c, &T_1_4);
    if (err != ERR_ok) goto ex_0;
    T_1_3.num = T_1_4.num;
    if (T_1_4.num) {
        T_1_5.ch = '\\';
        T_1_6.num = (c.ch == T_1_5.ch)? true : false;
        T_1_7.num = T_1_6.num ^ 1;
        T_1_3.num = T_1_7.num;
    }
    T_1_2.num = T_1_3.num;
    if (T_1_3.num) {
        T_1_8.ch = '\"';
        T_1_9.num = (c.ch == T_1_8.ch)? true : false;
        T_1_10.num = T_1_9.num ^ 1;
        T_1_2.num = T_1_10.num;
    }
    T_1_1.num = T_1_2.num;
    if (T_1_2.num) {
        T_1_11.ch = '\'';
        T_1_12.num = (c.ch == T_1_11.ch)? true : false;
        T_1_13.num = T_1_12.num ^ 1;
        T_1_1.num = T_1_13.num;
    }
    if (T_1_1.num == true) {

  LINE(1936);
        {
        {
        CLUREF T_2_1;
        err = stringOPc2s(c, &T_2_1);
        if (err != ERR_ok) goto ex_0;
        ret_1->num = T_2_1.num;
        }
        {signal (ERR_ok);}}
        }
    else {

  LINE(1938);
        {
        CLUREF T_2_1;
        CLUREF T_2_2;
        T_2_1.ch = '\n';
        T_2_2.num = (c.ch == T_2_1.ch)? true : false;
        if (T_2_2.num == true) {
            {
            ans = STR__137N_044;
            }
            }
        else {
        CLUREF T_2_3;
        CLUREF T_2_4;
        T_2_3.ch = '\\';
        T_2_4.num = (c.ch == T_2_3.ch)? true : false;
        if (T_2_4.num == true) {

  LINE(1939);
            {
            ans = STR__137ESC_044;
            }
            }
        else {
        CLUREF T_2_5;
        CLUREF T_2_6;
        T_2_5.ch = '\"';
        T_2_6.num = (c.ch == T_2_5.ch)? true : false;
        if (T_2_6.num == true) {

  LINE(1940);
            {
            ans = STR__137DQ_044;
            }
            }
        else {
        CLUREF T_2_7;
        CLUREF T_2_8;
        T_2_7.ch = '\t';
        T_2_8.num = (c.ch == T_2_7.ch)? true : false;
        if (T_2_8.num == true) {

  LINE(1941);
            {
            ans = STR__137T_044;
            }
            }
        else {
        CLUREF T_2_9;
        CLUREF T_2_10;
        T_2_9.ch = '\f';
        T_2_10.num = (c.ch == T_2_9.ch)? true : false;
        if (T_2_10.num == true) {

  LINE(1942);
            {
            ans = STR__137F_044;
            }
            }
        else {
        CLUREF T_2_11;
        CLUREF T_2_12;
        T_2_11.ch = '\b';
        T_2_12.num = (c.ch == T_2_11.ch)? true : false;
        if (T_2_12.num == true) {

  LINE(1943);
            {
            ans = STR__137B_044;
            }
            }
        else {
        CLUREF T_2_13;
        CLUREF T_2_14;
        T_2_13.ch = '\r';
        T_2_14.num = (c.ch == T_2_13.ch)? true : false;
        if (T_2_14.num == true) {

  LINE(1944);
            {
            ans = STR__137R_044;
            }
            }
        else {
        CLUREF T_2_15;
        CLUREF T_2_16;
        T_2_15.ch = '\v';
        T_2_16.num = (c.ch == T_2_15.ch)? true : false;
        if (T_2_16.num == true) {

  LINE(1945);
            {
            ans = STR__137V_044;
            }
            }
        else {
        CLUREF T_2_17;
        CLUREF T_2_18;
        T_2_17.ch = '\'';
        T_2_18.num = (c.ch == T_2_17.ch)? true : false;
        if (T_2_18.num == true) {

  LINE(1946);
            {
            ans = STR__137Q_044;
            }
            }
        else {
        CLUREF T_2_19;
        CLUREF T_2_20;
        T_2_19.ch = '_';
        T_2_20.num = (c.ch == T_2_19.ch)? true : false;
        if (T_2_20.num == true) {

  LINE(1947);
            {
            ans = STR__137_137_044;
            }
            }
        else {
        CLUREF T_2_21;
        CLUREF T_2_22;
        T_2_21.ch = '$';
        T_2_22.num = (c.ch == T_2_21.ch)? true : false;
        if (T_2_22.num == true) {

  LINE(1948);
            {
            ans = STR__137_044_044;
            }
            }
        else {

  LINE(1950);
            {
                {CLUREF T_3_1;
                CLUREF T_3_2;
                CLUREF T_3_3;
                T_3_1.num = (int)(c.ch & 0xff);
                err = i_ounparse(T_3_1, &T_3_2);
                if (err != ERR_ok) goto ex_0;
                err = stringOPconcat(STR_00, T_3_2, &T_3_3);
                if (err != ERR_ok) goto ex_0;
                ostr.num = T_3_3.num;
                }
                }

  LINE(1951);
            {
            {
            CLUREF T_3_1;
            CLUREF T_3_2;
            CLUREF T_3_3;
            CLUREF T_3_4;
            CLUREF T_3_5;
            err = stringOPsize(ostr, &T_3_1);
            if (err != ERR_ok) goto ex_0;
            T_3_2.num = T_3_1.num - 2;
             if ((T_3_2.num >= 0 && T_3_1.num < 0 && (-2) < 0) || 
                 (T_3_2.num <= 0 && T_3_1.num > 0 && (-2) > 0)) {
                err = ERR_overflow;
                goto ex_0;}
            err = stringOPsubstr(ostr, T_3_2, CLU_3, &T_3_3);
            if (err != ERR_ok) goto ex_0;
            err = stringOPconcat(STR__137, T_3_3, &T_3_4);
            if (err != ERR_ok) goto ex_0;
            err = stringOPconcat(T_3_4, STR_OP, &T_3_5);
            if (err != ERR_ok) goto ex_0;
            ret_1->num = T_3_5.num;
            }
            {signal (ERR_ok);}}
            }}}}}}}}}}}}/* end if */
        }}/* end if */

  LINE(1955);
    {
    {
    ret_1->num = ans.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 s_char_embed1 ****/


static int s_char_embed2_own_init = 0;

/**** BEGIN PROCEDURE s_char_embed2 ****/

errcode s_char_embed2(c, ret_1)
CLUREF c;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
    CLUREF ans;
    CLUREF ostr;
        if (s_char_embed2_own_init == 0) {
        stringOPcons("00", CLU_1, CLU_2, &STR_00);
        stringOPcons("_", CLU_1, CLU_1, &STR__137);
        s_char_embed2_own_init = 1;
    }
    enter_proc(1958);

  LINE(1960);
    {
    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;
    err = embed_char(c, &T_1_4);
    if (err != ERR_ok) goto ex_0;
    T_1_3.num = T_1_4.num;
    if (T_1_4.num) {
        T_1_5.ch = '\\';
        T_1_6.num = (c.ch == T_1_5.ch)? true : false;
        T_1_7.num = T_1_6.num ^ 1;
        T_1_3.num = T_1_7.num;
    }
    T_1_2.num = T_1_3.num;
    if (T_1_3.num) {
        T_1_8.ch = '\"';
        T_1_9.num = (c.ch == T_1_8.ch)? true : false;
        T_1_10.num = T_1_9.num ^ 1;
        T_1_2.num = T_1_10.num;
    }
    T_1_1.num = T_1_2.num;
    if (T_1_2.num) {
        T_1_11.ch = '\'';
        T_1_12.num = (c.ch == T_1_11.ch)? true : false;
        T_1_13.num = T_1_12.num ^ 1;
        T_1_1.num = T_1_13.num;
    }
    if (T_1_1.num == true) {

  LINE(1961);
        {
        {
        CLUREF T_2_1;
        err = stringOPc2s(c, &T_2_1);
        if (err != ERR_ok) goto ex_0;
        ret_1->num = T_2_1.num;
        }
        {signal (ERR_ok);}}
        }
    else {

  LINE(1963);
        {
            {CLUREF T_2_1;
            CLUREF T_2_2;
            CLUREF T_2_3;
            T_2_1.num = (int)(c.ch & 0xff);
            err = i_ounparse(T_2_1, &T_2_2);
            if (err != ERR_ok) goto ex_0;
            err = stringOPconcat(STR_00, T_2_2, &T_2_3);
            if (err != ERR_ok) goto ex_0;
            ostr.num = T_2_3.num;
            }
            }

  LINE(1964);
        {
        {
        CLUREF T_2_1;
        CLUREF T_2_2;
        CLUREF T_2_3;
        CLUREF T_2_4;
        err = stringOPsize(ostr, &T_2_1);
        if (err != ERR_ok) goto ex_0;
        T_2_2.num = T_2_1.num - 2;
         if ((T_2_2.num >= 0 && T_2_1.num < 0 && (-2) < 0) || 
             (T_2_2.num <= 0 && T_2_1.num > 0 && (-2) > 0)) {
            err = ERR_overflow;
            goto ex_0;}
        err = stringOPsubstr(ostr, T_2_2, CLU_3, &T_2_3);
        if (err != ERR_ok) goto ex_0;
        err = stringOPconcat(STR__137, T_2_3, &T_2_4);
        if (err != ERR_ok) goto ex_0;
        ret_1->num = T_2_4.num;
        }
        {signal (ERR_ok);}}
        }}/* end if */

  LINE(1966);
    {
    {
    ret_1->num = ans.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 s_char_embed2 ****/



/**** BEGIN PROCEDURE embed_char ****/

errcode embed_char(c, ret_1)
CLUREF c;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
    enter_proc(1969);

  LINE(1970);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    CLUREF T_1_3;
    CLUREF T_1_4;
    CLUREF T_1_5;
    T_1_2.ch = 'a';
    err = charOPle(T_1_2, c, &T_1_3);
    if (err != ERR_ok) goto ex_0;
    T_1_1.num = T_1_3.num;
    if (T_1_3.num) {
        T_1_4.ch = 'z';
        err = charOPle(c, T_1_4, &T_1_5);
        if (err != ERR_ok) goto ex_0;
        T_1_1.num = T_1_5.num;
    }
    if (T_1_1.num == true) {
        {
        {
        ret_1->tf = true;
        }
        {signal (ERR_ok);}}
        }
        }/* end if */

  LINE(1971);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    CLUREF T_1_3;
    CLUREF T_1_4;
    CLUREF T_1_5;
    T_1_2.ch = 'A';
    err = charOPle(T_1_2, c, &T_1_3);
    if (err != ERR_ok) goto ex_0;
    T_1_1.num = T_1_3.num;
    if (T_1_3.num) {
        T_1_4.ch = 'Z';
        err = charOPle(c, T_1_4, &T_1_5);
        if (err != ERR_ok) goto ex_0;
        T_1_1.num = T_1_5.num;
    }
    if (T_1_1.num == true) {
        {
        {
        ret_1->tf = true;
        }
        {signal (ERR_ok);}}
        }
        }/* end if */

  LINE(1972);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    CLUREF T_1_3;
    CLUREF T_1_4;
    CLUREF T_1_5;
    T_1_2.ch = '0';
    err = charOPle(T_1_2, c, &T_1_3);
    if (err != ERR_ok) goto ex_0;
    T_1_1.num = T_1_3.num;
    if (T_1_3.num) {
        T_1_4.ch = '9';
        err = charOPle(c, T_1_4, &T_1_5);
        if (err != ERR_ok) goto ex_0;
        T_1_1.num = T_1_5.num;
    }
    if (T_1_1.num == true) {
        {
        {
        ret_1->tf = true;
        }
        {signal (ERR_ok);}}
        }
        }/* end if */

  LINE(1974);
    {
    {
    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 embed_char ****/


CLUREF STR__056num_040_075_0400;
CLUREF STR__056tf_040_075_040;
CLUREF STR_g_137c_137assn_072_040real_040constant_040unexpected;
CLUREF STR_g_137c_137assn_072_040char_040constant_040unexpected;
CLUREF STR_g_137c_137assn_072_040unexpected_040tag_040on_040expr;
static int g_c_assn_own_init = 0;

/**** BEGIN PROCEDURE g_c_assn ****/

errcode g_c_assn(e, i, exp)
CLUREF e;
CLUREF i;
CLUREF exp;
    {
    errcode err;
    errcode ecode2;
    CLUREF id;
    CLUREF ct;
    CLUREF op;
    CLUREF xa;
    CLUREF b;
    CLUREF n;
    CLUREF s;
        if (g_c_assn_own_init == 0) {
        stringOPcons(".num = ", CLU_1, CLU_7, &STR__056num_040_075_040);
        stringOPcons(".num", CLU_1, CLU_4, &STR__056num);
        stringOPcons(" = ", CLU_1, CLU_3, &STR__040_075_040);
        stringOPcons(".num = 0", CLU_1, CLU_8, &STR__056num_040_075_0400);
        stringOPcons(".tf = ", CLU_1, CLU_6, &STR__056tf_040_075_040);
        stringOPcons("true", CLU_1, CLU_4, &STR_true);
        stringOPcons("false", CLU_1, CLU_5, &STR_false);
        stringOPcons("g_c_assn: real constant unexpected", CLU_1, CLU_34, &STR_g_137c_137assn_072_040real_040constant_040unexpected);
        stringOPcons("g_c_assn: char constant unexpected", CLU_1, CLU_34, &STR_g_137c_137assn_072_040char_040constant_040unexpected);
        stringOPcons("g_c_assn: unexpected tag on expr", CLU_1, CLU_32, &STR_g_137c_137assn_072_040unexpected_040tag_040on_040expr);
        stringOPcons(";", CLU_1, CLU_1, &STR__073);
        g_c_assn_own_init = 1;
    }
    enter_proc(1977);

  LINE(1978);
    {
    err = g_idn_plain(e, i);
    if (err != ERR_ok) goto ex_0;
    }

  LINE(1979);
    {
    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 13: 
         {CLUREF T_1_2;
        T_1_2.num = T_1_1.cell->value;
        id.num = T_1_2.num;

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

  LINE(1982);
            {
            err = g_idn_plain(e, id);
            if (err != ERR_ok) goto ex_0;
            }

  LINE(1983);
            {
            err = g_envOPputs(e, STR__056num);
            if (err != ERR_ok) goto ex_0;
            }
            break;
            }
    case 3: 
         {CLUREF T_1_3;
        T_1_3.num = T_1_1.cell->value;
        ct.num = T_1_3.num;

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

  LINE(1986);
            {
            err = g_apply(e, ct);
            if (err != ERR_ok) goto ex_0;
            }
            break;
            }
    case 20: 
         {CLUREF T_1_4;
        T_1_4.num = T_1_1.cell->value;
        op.num = T_1_4.num;

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

  LINE(1989);
            {
            err = g_clusterop(e, op);
            if (err != ERR_ok) goto ex_0;
            }
            break;
            }
    case 25: 
         {CLUREF T_1_5;
        T_1_5.num = T_1_1.cell->value;
        xa.num = T_1_5.num;

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

  LINE(1992);
            {
            err = g_term_typespec(e, xa);
            if (err != ERR_ok) goto ex_0;
            }
            break;
            }
    case 19: 
         {

  LINE(1994);
            {
            err = g_envOPputs(e, STR__056num_040_075_0400);
            if (err != ERR_ok) goto ex_0;
            }
            break;
            }
    case 5: 
         {CLUREF T_1_6;
        T_1_6.num = T_1_1.cell->value;
        b.num = T_1_6.num;

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

  LINE(1997);
            {
            if (b.num == true) {
                {
                err = g_envOPputs(e, STR_true);
                if (err != ERR_ok) goto ex_0;
                }
                }
            else {

  LINE(1998);
                {
                err = g_envOPputs(e, STR_false);
                if (err != ERR_ok) goto ex_0;
                }
                }}/* end if */
            break;
            }
    case 15: 
         {CLUREF T_1_7;
        T_1_7.num = T_1_1.cell->value;
        n.num = T_1_7.num;

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

  LINE(2001);
            {
            CLUREF T_2_1;
            err = intOPunparse(n, &T_2_1);
            if (err != ERR_ok) goto ex_0;
            err = g_envOPputs(e, T_2_1);
            if (err != ERR_ok) goto ex_0;
            }
            break;
            }
    case 24: 
         {CLUREF T_1_8;
        T_1_8.num = T_1_1.cell->value;
        s.num = T_1_8.num;

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

  LINE(2004);
            {
            err = g_string_name(e, s);
            if (err != ERR_ok) goto ex_0;
            }
            break;
            }
    case 21: 
         {

  LINE(2006);
            {
            err = g_envOPerror(e, STR_g_137c_137assn_072_040real_040constant_040unexpected);
            if (err != ERR_ok) goto ex_0;
            }
            break;
            }
    case 7: 
         {

  LINE(2008);
            {
            err = g_envOPerror(e, STR_g_137c_137assn_072_040char_040constant_040unexpected);
            if (err != ERR_ok) goto ex_0;
            }
            break;
            }
    default: {

  LINE(2010);
        {
        err = g_envOPerror(e, STR_g_137c_137assn_072_040unexpected_040tag_040on_040expr);
        if (err != ERR_ok) goto ex_0;
        }

  LINE(2011);
        {
        CLUREF T_2_1;
        T_2_1.num = 56;
        err = expr_print(exp, T_2_1);
        if (err != ERR_ok) goto ex_0;
        }
    }
    }
    }

  LINE(2013);
    {
    err = g_envOPputl(e, STR__073);
    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_c_assn ****/


CLUREF STR_g_137constr_137rhs_072_040real_040constant_040unexpected;
CLUREF STR_g_137constr_137rhs_072_040char_040constant_040unexpected;
CLUREF STR_g_137constr_137rhs_072_040unexpected_040tag_040on_040expr;
static int g_constr_rhs_own_init = 0;

/**** BEGIN PROCEDURE g_constr_rhs ****/

errcode g_constr_rhs(e, exp)
CLUREF e;
CLUREF exp;
    {
    errcode err;
    errcode ecode2;
    CLUREF id;
    CLUREF ct;
    CLUREF op;
    CLUREF xa;
    CLUREF b;
    CLUREF n;
    CLUREF s;
        if (g_constr_rhs_own_init == 0) {
        stringOPcons(".num", CLU_1, CLU_4, &STR__056num);
        stringOPcons("0", CLU_1, CLU_1, &STR_0);
        stringOPcons("true", CLU_1, CLU_4, &STR_true);
        stringOPcons("false", CLU_1, CLU_5, &STR_false);
        stringOPcons("g_constr_rhs: real constant unexpected", CLU_1, CLU_38, &STR_g_137constr_137rhs_072_040real_040constant_040unexpected);
        stringOPcons("g_constr_rhs: char constant unexpected", CLU_1, CLU_38, &STR_g_137constr_137rhs_072_040char_040constant_040unexpected);
        stringOPcons("g_constr_rhs: unexpected tag on expr", CLU_1, CLU_36, &STR_g_137constr_137rhs_072_040unexpected_040tag_040on_040expr);
        stringOPcons(";", CLU_1, CLU_1, &STR__073);
        g_constr_rhs_own_init = 1;
    }
    enter_proc(2018);

  LINE(2019);
    {
    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 13: 
         {CLUREF T_1_2;
        T_1_2.num = T_1_1.cell->value;
        id.num = T_1_2.num;

  LINE(2021);
            {
            err = g_idn_plain(e, id);
            if (err != ERR_ok) goto ex_0;
            }

  LINE(2022);
            {
            err = g_envOPputs(e, STR__056num);
            if (err != ERR_ok) goto ex_0;
            }
            break;
            }
    case 3: 
         {CLUREF T_1_3;
        T_1_3.num = T_1_1.cell->value;
        ct.num = T_1_3.num;

  LINE(2024);
            {
            err = g_apply(e, ct);
            if (err != ERR_ok) goto ex_0;
            }

  LINE(2025);
            {
            err = g_envOPputs(e, STR__056num);
            if (err != ERR_ok) goto ex_0;
            }
            break;
            }
    case 20: 
         {CLUREF T_1_4;
        T_1_4.num = T_1_1.cell->value;
        op.num = T_1_4.num;

  LINE(2027);
            {
            err = g_clusterop(e, op);
            if (err != ERR_ok) goto ex_0;
            }

  LINE(2028);
            {
            err = g_envOPputs(e, STR__056num);
            if (err != ERR_ok) goto ex_0;
            }
            break;
            }
    case 25: 
         {CLUREF T_1_5;
        T_1_5.num = T_1_1.cell->value;
        xa.num = T_1_5.num;

  LINE(2030);
            {
            err = g_term_typespec(e, xa);
            if (err != ERR_ok) goto ex_0;
            }

  LINE(2031);
            {
            err = g_envOPputs(e, STR__056num);
            if (err != ERR_ok) goto ex_0;
            }
            break;
            }
    case 19: 
         {

  LINE(2033);
            {
            err = g_envOPputs(e, STR_0);
            if (err != ERR_ok) goto ex_0;
            }
            break;
            }
    case 5: 
         {CLUREF T_1_6;
        T_1_6.num = T_1_1.cell->value;
        b.num = T_1_6.num;

  LINE(2035);
            {
            if (b.num == true) {
                {
                err = g_envOPputs(e, STR_true);
                if (err != ERR_ok) goto ex_0;
                }
                }
            else {

  LINE(2036);
                {
                err = g_envOPputs(e, STR_false);
                if (err != ERR_ok) goto ex_0;
                }
                }}/* end if */
            break;
            }
    case 15: 
         {CLUREF T_1_7;
        T_1_7.num = T_1_1.cell->value;
        n.num = T_1_7.num;

  LINE(2038);
            {
            CLUREF T_2_1;
            err = intOPunparse(n, &T_2_1);
            if (err != ERR_ok) goto ex_0;
            err = g_envOPputs(e, T_2_1);
            if (err != ERR_ok) goto ex_0;
            }
            break;
            }
    case 24: 
         {CLUREF T_1_8;
        T_1_8.num = T_1_1.cell->value;
        s.num = T_1_8.num;

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

  LINE(2041);
            {
            err = g_envOPputs(e, STR__056num);
            if (err != ERR_ok) goto ex_0;
            }
            break;
            }
    case 21: 
         {

  LINE(2043);
            {
            err = g_envOPerror(e, STR_g_137constr_137rhs_072_040real_040constant_040unexpected);
            if (err != ERR_ok) goto ex_0;
            }
            break;
            }
    case 7: 
         {

  LINE(2045);
            {
            err = g_envOPerror(e, STR_g_137constr_137rhs_072_040char_040constant_040unexpected);
            if (err != ERR_ok) goto ex_0;
            }
            break;
            }
    default: {

  LINE(2047);
        {
        err = g_envOPerror(e, STR_g_137constr_137rhs_072_040unexpected_040tag_040on_040expr);
        if (err != ERR_ok) goto ex_0;
        }

  LINE(2048);
        {
        CLUREF T_2_1;
        T_2_1.num = 56;
        err = expr_print(exp, T_2_1);
        if (err != ERR_ok) goto ex_0;
        }
    }
    }
    }

  LINE(2050);
    {
    err = g_envOPputl(e, STR__073);
    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_constr_rhs ****/


CLUREF STR_ret_137;
CLUREF STR__055_076num_040_075_040;
CLUREF STR__055_076num_040_075_0400;
CLUREF STR__055_076tf_040_075_040;
CLUREF STR__055_076str_040_075_040;
CLUREF STR_g_137ret_137assn_072_040unexpected_040tag_040on_040expr;
static int g_ret_assn_own_init = 0;

/**** BEGIN PROCEDURE g_ret_assn ****/

errcode g_ret_assn(e, i, exp)
CLUREF e;
CLUREF i;
CLUREF exp;
    {
    errcode err;
    errcode ecode2;
    CLUREF id;
    CLUREF b;
    CLUREF n;
    CLUREF s;
        if (g_ret_assn_own_init == 0) {
        stringOPcons("ret_", CLU_1, CLU_4, &STR_ret_137);
        stringOPcons("->num = ", CLU_1, CLU_8, &STR__055_076num_040_075_040);
        stringOPcons(".num", CLU_1, CLU_4, &STR__056num);
        stringOPcons("->num = 0", CLU_1, CLU_9, &STR__055_076num_040_075_0400);
        stringOPcons("->tf = ", CLU_1, CLU_7, &STR__055_076tf_040_075_040);
        stringOPcons("true", CLU_1, CLU_4, &STR_true);
        stringOPcons("false", CLU_1, CLU_5, &STR_false);
        stringOPcons("->str = ", CLU_1, CLU_8, &STR__055_076str_040_075_040);
        stringOPcons(".str", CLU_1, CLU_4, &STR__056str);
        stringOPcons("g_ret_assn: unexpected tag on expr", CLU_1, CLU_34, &STR_g_137ret_137assn_072_040unexpected_040tag_040on_040expr);
        stringOPcons(";", CLU_1, CLU_1, &STR__073);
        g_ret_assn_own_init = 1;
    }
    enter_proc(2053);

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

  LINE(2055);
    {
    CLUREF T_1_1;
    err = intOPunparse(i, &T_1_1);
    if (err != ERR_ok) goto ex_0;
    err = g_envOPputs(e, T_1_1);
    if (err != ERR_ok) goto ex_0;
    }

  LINE(2056);
    {
    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 13: 
         {CLUREF T_1_2;
        T_1_2.num = T_1_1.cell->value;
        id.num = T_1_2.num;

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

  LINE(2059);
            {
            err = g_idn_plain(e, id);
            if (err != ERR_ok) goto ex_0;
            }

  LINE(2060);
            {
            err = g_envOPputs(e, STR__056num);
            if (err != ERR_ok) goto ex_0;
            }
            break;
            }
    case 19: 
         {

  LINE(2062);
            {
            err = g_envOPputs(e, STR__055_076num_040_075_0400);
            if (err != ERR_ok) goto ex_0;
            }
            break;
            }
    case 5: 
         {CLUREF T_1_3;
        T_1_3.num = T_1_1.cell->value;
        b.num = T_1_3.num;

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

  LINE(2065);
            {
            if (b.num == true) {
                {
                err = g_envOPputs(e, STR_true);
                if (err != ERR_ok) goto ex_0;
                }
                }
            else {

  LINE(2066);
                {
                err = g_envOPputs(e, STR_false);
                if (err != ERR_ok) goto ex_0;
                }
                }}/* end if */
            break;
            }
    case 15: 
         {CLUREF T_1_4;
        T_1_4.num = T_1_1.cell->value;
        n.num = T_1_4.num;

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

  LINE(2069);
            {
            CLUREF T_2_1;
            err = intOPunparse(n, &T_2_1);
            if (err != ERR_ok) goto ex_0;
            err = g_envOPputs(e, T_2_1);
            if (err != ERR_ok) goto ex_0;
            }
            break;
            }
    case 24: 
         {CLUREF T_1_5;
        T_1_5.num = T_1_1.cell->value;
        s.num = T_1_5.num;

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

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

  LINE(2073);
            {
            err = g_envOPputs(e, STR__056str);
            if (err != ERR_ok) goto ex_0;
            }
            break;
            }
    default: {

  LINE(2075);
        {
        err = g_envOPerror(e, STR_g_137ret_137assn_072_040unexpected_040tag_040on_040expr);
        if (err != ERR_ok) goto ex_0;
        }

  LINE(2076);
        {
        CLUREF T_2_1;
        T_2_1.num = 57;
        err = expr_print(exp, T_2_1);
        if (err != ERR_ok) goto ex_0;
        }
    }
    }
    }

  LINE(2078);
    {
    err = g_envOPputl(e, STR__073);
    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_ret_assn ****/


CLUREF STR_elist_133;
CLUREF STR__135;
CLUREF STR_g_137sig_137assn_072_040unexpected_040tag_040on_040expr;
static int g_sig_assn_own_init = 0;

/**** BEGIN PROCEDURE g_sig_assn ****/

errcode g_sig_assn(e, i, exp)
CLUREF e;
CLUREF i;
CLUREF exp;
    {
    errcode err;
    errcode ecode2;
    CLUREF id;
    CLUREF b;
    CLUREF n;
    CLUREF s;
        if (g_sig_assn_own_init == 0) {
        stringOPcons("elist[", CLU_1, CLU_6, &STR_elist_133);
        stringOPcons("]", CLU_1, CLU_1, &STR__135);
        stringOPcons(" = ", CLU_1, CLU_3, &STR__040_075_040);
        stringOPcons(".num = 0", CLU_1, CLU_8, &STR__056num_040_075_0400);
        stringOPcons(".tf = ", CLU_1, CLU_6, &STR__056tf_040_075_040);
        stringOPcons("true", CLU_1, CLU_4, &STR_true);
        stringOPcons("false", CLU_1, CLU_5, &STR_false);
        stringOPcons(".num = ", CLU_1, CLU_7, &STR__056num_040_075_040);
        stringOPcons("g_sig_assn: unexpected tag on expr", CLU_1, CLU_34, &STR_g_137sig_137assn_072_040unexpected_040tag_040on_040expr);
        stringOPcons(";", CLU_1, CLU_1, &STR__073);
        g_sig_assn_own_init = 1;
    }
    enter_proc(2081);

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

  LINE(2083);
    {
    CLUREF T_1_1;
    err = intOPunparse(i, &T_1_1);
    if (err != ERR_ok) goto ex_0;
    err = g_envOPputs(e, T_1_1);
    if (err != ERR_ok) goto ex_0;
    }

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

  LINE(2085);
    {
    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 13: 
         {CLUREF T_1_2;
        T_1_2.num = T_1_1.cell->value;
        id.num = T_1_2.num;

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

  LINE(2088);
            {
            err = g_idn_plain(e, id);
            if (err != ERR_ok) goto ex_0;
            }
            break;
            }
    case 19: 
         {

  LINE(2090);
            {
            err = g_envOPputs(e, STR__056num_040_075_0400);
            if (err != ERR_ok) goto ex_0;
            }
            break;
            }
    case 5: 
         {CLUREF T_1_3;
        T_1_3.num = T_1_1.cell->value;
        b.num = T_1_3.num;

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

  LINE(2093);
            {
            if (b.num == true) {
                {
                err = g_envOPputs(e, STR_true);
                if (err != ERR_ok) goto ex_0;
                }
                }
            else {

  LINE(2094);
                {
                err = g_envOPputs(e, STR_false);
                if (err != ERR_ok) goto ex_0;
                }
                }}/* end if */
            break;
            }
    case 15: 
         {CLUREF T_1_4;
        T_1_4.num = T_1_1.cell->value;
        n.num = T_1_4.num;

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

  LINE(2097);
            {
            CLUREF T_2_1;
            err = intOPunparse(n, &T_2_1);
            if (err != ERR_ok) goto ex_0;
            err = g_envOPputs(e, T_2_1);
            if (err != ERR_ok) goto ex_0;
            }
            break;
            }
    case 24: 
         {CLUREF T_1_5;
        T_1_5.num = T_1_1.cell->value;
        s.num = T_1_5.num;

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

  LINE(2100);
            {
            err = g_string_name(e, s);
            if (err != ERR_ok) goto ex_0;
            }
            break;
            }
    default: {

  LINE(2102);
        {
        err = g_envOPerror(e, STR_g_137sig_137assn_072_040unexpected_040tag_040on_040expr);
        if (err != ERR_ok) goto ex_0;
        }

  LINE(2103);
        {
        CLUREF T_2_1;
        T_2_1.num = 58;
        err = expr_print(exp, T_2_1);
        if (err != ERR_ok) goto ex_0;
        }
    }
    }
    }

  LINE(2105);
    {
    err = g_envOPputl(e, STR__073);
    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_sig_assn ****/


extern errcode g_fieldecl();

/**** BEGIN PROCEDURE g_fieldeclist ****/

errcode g_fieldeclist(e, flist)
CLUREF e;
CLUREF flist;
    {
    errcode err;
    errcode ecode2;
    CLUREF this_fs;
    enter_proc(2108);

  LINE(2110);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    CLUREF T_1_3;
        T_1_2.num = flist.vec->size; 
        T_1_3 = flist;
        for (T_1_1.num = 1; T_1_1.num <= T_1_2.num; T_1_1.num++) {
            this_fs.num = T_1_3.vec->data[T_1_1.num - 1];

  LINE(2111);
            {
            err = g_fieldecl(e, this_fs);
            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_fieldeclist ****/


extern errcode g_decl_typespec();

/**** BEGIN PROCEDURE g_fieldecl ****/

errcode g_fieldecl(e, fspc)
CLUREF e;
CLUREF fspc;
    {
    errcode err;
    errcode ecode2;
    enter_proc(2116);

  LINE(2118);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    T_1_1.num = fspc.vec->data[1];
    T_1_2.num = fspc.vec->data[0];
    err = g_decl_typespec(e, T_1_1, T_1_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_fieldecl ****/


extern errcode stringOPindexc();
CLUREF STR_get_137;
CLUREF STR_make_137;
CLUREF STR_is_137;
CLUREF STR_change_137;
CLUREF STR_value_137;
CLUREF STR_replace_137;
static int field_index_own_init = 0;

/**** BEGIN PROCEDURE field_index ****/

errcode field_index(nm, flist, ret_1, ret_2)
CLUREF nm;
CLUREF flist;
CLUREF *ret_1;
CLUREF *ret_2;
    {
    errcode err;
    errcode ecode2;
    CLUREF loc_of_sep;
    CLUREF prefix;
    CLUREF suffix;
    CLUREF i;
        if (field_index_own_init == 0) {
        stringOPcons("get_", CLU_1, CLU_4, &STR_get_137);
        stringOPcons("set_", CLU_1, CLU_4, &STR_set_137);
        stringOPcons("make_", CLU_1, CLU_5, &STR_make_137);
        stringOPcons("is_", CLU_1, CLU_3, &STR_is_137);
        stringOPcons("change_", CLU_1, CLU_7, &STR_change_137);
        stringOPcons("value_", CLU_1, CLU_6, &STR_value_137);
        stringOPcons("replace_", CLU_1, CLU_8, &STR_replace_137);
        field_index_own_init = 1;
    }
    enter_proc(2122);

  LINE(2124);
    {
        {CLUREF T_1_1;
        CLUREF T_1_2;
        T_1_1.ch = '_';
        err = stringOPindexc(T_1_1, nm, &T_1_2);
        if (err != ERR_ok) goto ex_0;
        loc_of_sep.num = T_1_2.num;
        }
        }

  LINE(2125);
    {
        {CLUREF T_1_1;
        err = stringOPsubstr(nm, CLU_1, loc_of_sep, &T_1_1);
        if (err != ERR_ok) goto ex_0;
        prefix.num = T_1_1.num;
        }
        }

  LINE(2126);
    {
        {CLUREF T_1_1;
        CLUREF T_1_2;
        T_1_1.num = loc_of_sep.num + 1;
         if ((T_1_1.num > 0 && loc_of_sep.num < 0 && 1 < 0) || 
             (T_1_1.num < 0 && loc_of_sep.num > 0 && 1 > 0)) {
            err = ERR_overflow;
            goto ex_0;}
        err = stringOPrest(nm, T_1_1, &T_1_2);
        if (err != ERR_ok) goto ex_0;
        suffix.num = T_1_2.num;
        }
        }

  LINE(2127);
    {
    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;
    T_1_7.num = ((prefix.str->size != STR_get_137.str->size)? false :
        !(bcmp(prefix.str->data, STR_get_137.str->data, prefix.str->size)));
    T_1_6.num = T_1_7.num;
    if (!T_1_7.num) {
        T_1_8.num = ((prefix.str->size != STR_set_137.str->size)? false :
            !(bcmp(prefix.str->data, STR_set_137.str->data, prefix.str->size)));
        T_1_6.num = T_1_8.num;
    }
    T_1_5.num = T_1_6.num;
    if (!T_1_6.num) {
        T_1_9.num = ((prefix.str->size != STR_make_137.str->size)? false :
            !(bcmp(prefix.str->data, STR_make_137.str->data, prefix.str->size)));
        T_1_5.num = T_1_9.num;
    }
    T_1_4.num = T_1_5.num;
    if (!T_1_5.num) {
        T_1_10.num = ((prefix.str->size != STR_is_137.str->size)? false :
            !(bcmp(prefix.str->data, STR_is_137.str->data, prefix.str->size)));
        T_1_4.num = T_1_10.num;
    }
    T_1_3.num = T_1_4.num;
    if (!T_1_4.num) {
        T_1_11.num = ((prefix.str->size != STR_change_137.str->size)? false :
            !(bcmp(prefix.str->data, STR_change_137.str->data, prefix.str->size)));
        T_1_3.num = T_1_11.num;
    }
    T_1_2.num = T_1_3.num;
    if (!T_1_3.num) {
        T_1_12.num = ((prefix.str->size != STR_value_137.str->size)? false :
            !(bcmp(prefix.str->data, STR_value_137.str->data, prefix.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 = ((prefix.str->size != STR_replace_137.str->size)? false :
            !(bcmp(prefix.str->data, STR_replace_137.str->data, prefix.str->size)));
        T_1_1.num = T_1_13.num;
    }
    if (T_1_1.num == true) {

  LINE(2135);
        {
        CLUREF T_2_1;
        CLUREF T_2_2;
            T_2_2.num = flist.vec->size; 
            for (T_2_1.num = 1; T_2_1.num <= T_2_2.num; T_2_1.num++) {
                i.num = T_2_1.num;

  LINE(2136);
                {
                CLUREF T_3_1;
                CLUREF T_3_2;
                CLUREF T_3_3;
                if (i.num < 1 || i.num > flist.vec->size ) {
                    err = ERR_bounds;
                    goto ex_0;}
                T_3_1.num = flist.vec->data[i.num - 1];
                T_3_2.num = T_3_1.vec->data[0];
                T_3_3.num = ((suffix.str->size != T_3_2.str->size)? false :
                    !(bcmp(suffix.str->data, T_3_2.str->data, suffix.str->size)));
                if (T_3_3.num == true) {
                    {
                    {
                    ret_1->num = prefix.num;
                    }
                    {
                    ret_2->num = i.num;
                    }
                    {signal (ERR_ok);}}
                    }
                    }/* end if */
            }
        }
        end_inline_for_1:;

  LINE(2138);
        {
        {
        ret_1->num = nm.num;
        }
        {
        ret_2->num = -1;
        }
        {signal (ERR_ok);}}
        }
    else {

  LINE(2140);
        {
        {
        ret_1->num = nm.num;
        }
        {
        ret_2->num = 0;
        }
        {signal (ERR_ok);}}
        }}/* end if */

  LINE(2142);
    {
    {signal (ERR_not_found);}}
    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 field_index ****/


CLUREF STR_null;
static int all_field_types_null_own_init = 0;

/**** BEGIN PROCEDURE all_field_types_null ****/

errcode all_field_types_null(flist, ret_1)
CLUREF flist;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
    CLUREF each_fs;
    CLUREF ct;
        if (all_field_types_null_own_init == 0) {
        stringOPcons("null", CLU_1, CLU_4, &STR_null);
        all_field_types_null_own_init = 1;
    }
    enter_proc(2145);

  LINE(2146);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    CLUREF T_1_3;
        T_1_2.num = flist.vec->size; 
        T_1_3 = flist;
        for (T_1_1.num = 1; T_1_1.num <= T_1_2.num; T_1_1.num++) {
            each_fs.num = T_1_3.vec->data[T_1_1.num - 1];

  LINE(2147);
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            T_2_1.num = each_fs.vec->data[1];
            err = typespecOPget_abs(T_2_1, &T_2_2);
            if (err != ERR_ok) goto ex_0;
            switch (T_2_2.cell->tag) {
            case 3: 
                 {CLUREF T_2_3;
                T_2_3.num = T_2_2.cell->value;
                ct.num = T_2_3.num;

  LINE(2149);
                    {
                    CLUREF T_3_1;
                    CLUREF T_3_2;
                    CLUREF T_3_3;
                    T_3_1.num = ct.vec->data[0];
                    err = duOPget_common(T_3_1, &T_3_2);
                    if (err != ERR_ok) goto ex_0;
                    T_3_3.num = ((T_3_2.str->size != STR_null.str->size)? false :
                        !(bcmp(T_3_2.str->data, STR_null.str->data, T_3_2.str->size)));
                    if (T_3_3.num == true) {
                        continue;
                        }
                        }/* end if */

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

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

  LINE(2155);
    {
    {
    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 all_field_types_null ****/


extern errcode parmOPmember_base();
CLUREF STR_op;
CLUREF STR_type;
CLUREF STR__137own_137ptr_055_076;
static int s_owns_prefix_own_init = 0;

/**** BEGIN PROCEDURE s_owns_prefix ****/

errcode s_owns_prefix(i, ret_1)
CLUREF i;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
    CLUREF type_or_op;
        if (s_owns_prefix_own_init == 0) {
        stringOPcons("op", CLU_1, CLU_2, &STR_op);
        stringOPcons("type", CLU_1, CLU_4, &STR_type);
        stringOPcons("_own_ptr->", CLU_1, CLU_10, &STR__137own_137ptr_055_076);
        stringOPcons("", CLU_1, CLU_0, &STR_);
        s_owns_prefix_own_init = 1;
    }
    enter_proc(2158);

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

  LINE(2162);
            {
                {type_or_op = STR_op;
                }
                }

  LINE(2163);
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            err = idnOPget_str(i, &T_2_1);
            if (err != ERR_ok) goto ex_0;
            err = parmOPmember_base(T_2_1, &T_2_2);
            if (err != ERR_ok) goto ex_0;
            if (T_2_2.num == true) {
                {
                type_or_op = STR_type;
                }
                }
                }/* end if */

  LINE(2164);
            {
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            CLUREF T_2_3;
            err = s_locals(&T_2_1);
            if (err != ERR_ok) goto ex_0;
            err = stringOPconcat(T_2_1, type_or_op, &T_2_2);
            if (err != ERR_ok) goto ex_0;
            err = stringOPconcat(T_2_2, STR__137own_137ptr_055_076, &T_2_3);
            if (err != ERR_ok) goto ex_0;
            ret_1->num = T_2_3.num;
            }
            {signal (ERR_ok);}}
            break;
            }
    default: {
    }
    }
    }

  LINE(2168);
    {
    {
    ret_1->str = STR_.str;
    }
    {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 s_owns_prefix ****/


extern errcode el_cont_op_parm();
extern errcode el_cont_type_parm();
static int s_owns_prefix_expr_own_init = 0;

/**** BEGIN PROCEDURE s_owns_prefix_expr ****/

errcode s_owns_prefix_expr(p, ret_1)
CLUREF p;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
    CLUREF el;
        if (s_owns_prefix_expr_own_init == 0) {
        stringOPcons("op_own_ptr->", CLU_1, CLU_12, &STR_op_137own_137ptr_055_076);
        stringOPcons("type_own_ptr->", CLU_1, CLU_14, &STR_type_137own_137ptr_055_076);
        stringOPcons("", CLU_1, CLU_0, &STR_);
        s_owns_prefix_expr_own_init = 1;
    }
    enter_proc(2172);

  LINE(2173);
    {
        {CLUREF T_1_1;
        err = sequenceOPfill(CLU_1, p, &T_1_1);
        if (err != ERR_ok) goto ex_0;
        el.num = T_1_1.num;
        }
        }

  LINE(2174);
    {
    CLUREF T_1_1;
    err = el_cont_op_parm(el, &T_1_1);
    if (err != ERR_ok) goto ex_0;
    if (T_1_1.num == true) {

  LINE(2175);
        {
        {
        CLUREF T_2_1;
        CLUREF T_2_2;
        err = s_locals(&T_2_1);
        if (err != ERR_ok) goto ex_0;
        err = stringOPconcat(T_2_1, STR_op_137own_137ptr_055_076, &T_2_2);
        if (err != ERR_ok) goto ex_0;
        ret_1->num = T_2_2.num;
        }
        {signal (ERR_ok);}}
        }
        }/* end if */

  LINE(2177);
    {
    CLUREF T_1_1;
    err = el_cont_type_parm(el, &T_1_1);
    if (err != ERR_ok) goto ex_0;
    if (T_1_1.num == true) {

  LINE(2178);
        {
        {
        CLUREF T_2_1;
        CLUREF T_2_2;
        err = s_locals(&T_2_1);
        if (err != ERR_ok) goto ex_0;
        err = stringOPconcat(T_2_1, STR_type_137own_137ptr_055_076, &T_2_2);
        if (err != ERR_ok) goto ex_0;
        ret_1->num = T_2_2.num;
        }
        {signal (ERR_ok);}}
        }
        }/* end if */

  LINE(2180);
    {
    {
    ret_1->str = STR_.str;
    }
    {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 s_owns_prefix_expr ****/


static int s_owns_prefix_exprlist_own_init = 0;

/**** BEGIN PROCEDURE s_owns_prefix_exprlist ****/

errcode s_owns_prefix_exprlist(el, ret_1)
CLUREF el;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
        if (s_owns_prefix_exprlist_own_init == 0) {
        stringOPcons("op_own_ptr->", CLU_1, CLU_12, &STR_op_137own_137ptr_055_076);
        stringOPcons("type_own_ptr->", CLU_1, CLU_14, &STR_type_137own_137ptr_055_076);
        stringOPcons("", CLU_1, CLU_0, &STR_);
        s_owns_prefix_exprlist_own_init = 1;
    }
    enter_proc(2183);

  LINE(2184);
    {
    CLUREF T_1_1;
    err = el_cont_op_parm(el, &T_1_1);
    if (err != ERR_ok) goto ex_0;
    if (T_1_1.num == true) {

  LINE(2185);
        {
        {
        CLUREF T_2_1;
        CLUREF T_2_2;
        err = s_locals(&T_2_1);
        if (err != ERR_ok) goto ex_0;
        err = stringOPconcat(T_2_1, STR_op_137own_137ptr_055_076, &T_2_2);
        if (err != ERR_ok) goto ex_0;
        ret_1->num = T_2_2.num;
        }
        {signal (ERR_ok);}}
        }
        }/* end if */

  LINE(2187);
    {
    CLUREF T_1_1;
    err = el_cont_type_parm(el, &T_1_1);
    if (err != ERR_ok) goto ex_0;
    if (T_1_1.num == true) {

  LINE(2188);
        {
        {
        CLUREF T_2_1;
        CLUREF T_2_2;
        err = s_locals(&T_2_1);
        if (err != ERR_ok) goto ex_0;
        err = stringOPconcat(T_2_1, STR_type_137own_137ptr_055_076, &T_2_2);
        if (err != ERR_ok) goto ex_0;
        ret_1->num = T_2_2.num;
        }
        {signal (ERR_ok);}}
        }
        }/* end if */

  LINE(2190);
    {
    {
    ret_1->str = STR_.str;
    }
    {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 s_owns_prefix_exprlist ****/


extern errcode fl_cont_op_parm();
extern errcode fl_cont_type_parm();
static int s_owns_prefix_fieldlist_own_init = 0;

/**** BEGIN PROCEDURE s_owns_prefix_fieldlist ****/

errcode s_owns_prefix_fieldlist(fl, ret_1)
CLUREF fl;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
        if (s_owns_prefix_fieldlist_own_init == 0) {
        stringOPcons("op_own_ptr->", CLU_1, CLU_12, &STR_op_137own_137ptr_055_076);
        stringOPcons("type_own_ptr->", CLU_1, CLU_14, &STR_type_137own_137ptr_055_076);
        stringOPcons("", CLU_1, CLU_0, &STR_);
        s_owns_prefix_fieldlist_own_init = 1;
    }
    enter_proc(2193);

  LINE(2194);
    {
    CLUREF T_1_1;
    err = fl_cont_op_parm(fl, &T_1_1);
    if (err != ERR_ok) goto ex_0;
    if (T_1_1.num == true) {

  LINE(2195);
        {
        {
        CLUREF T_2_1;
        CLUREF T_2_2;
        err = s_locals(&T_2_1);
        if (err != ERR_ok) goto ex_0;
        err = stringOPconcat(T_2_1, STR_op_137own_137ptr_055_076, &T_2_2);
        if (err != ERR_ok) goto ex_0;
        ret_1->num = T_2_2.num;
        }
        {signal (ERR_ok);}}
        }
        }/* end if */

  LINE(2197);
    {
    CLUREF T_1_1;
    err = fl_cont_type_parm(fl, &T_1_1);
    if (err != ERR_ok) goto ex_0;
    if (T_1_1.num == true) {

  LINE(2198);
        {
        {
        CLUREF T_2_1;
        CLUREF T_2_2;
        err = s_locals(&T_2_1);
        if (err != ERR_ok) goto ex_0;
        err = stringOPconcat(T_2_1, STR_type_137own_137ptr_055_076, &T_2_2);
        if (err != ERR_ok) goto ex_0;
        ret_1->num = T_2_2.num;
        }
        {signal (ERR_ok);}}
        }
        }/* end if */

  LINE(2200);
    {
    {
    ret_1->str = STR_.str;
    }
    {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 s_owns_prefix_fieldlist ****/


extern errcode type_cont_op_parm();
extern errcode type_cont_type_parm();
static int s_owns_prefix_type_own_init = 0;

/**** BEGIN PROCEDURE s_owns_prefix_type ****/

errcode s_owns_prefix_type(ty, ret_1)
CLUREF ty;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
        if (s_owns_prefix_type_own_init == 0) {
        stringOPcons("op_own_ptr->", CLU_1, CLU_12, &STR_op_137own_137ptr_055_076);
        stringOPcons("type_own_ptr->", CLU_1, CLU_14, &STR_type_137own_137ptr_055_076);
        stringOPcons("", CLU_1, CLU_0, &STR_);
        s_owns_prefix_type_own_init = 1;
    }
    enter_proc(2203);

  LINE(2204);
    {
    CLUREF T_1_1;
    err = type_cont_op_parm(ty, &T_1_1);
    if (err != ERR_ok) goto ex_0;
    if (T_1_1.num == true) {

  LINE(2205);
        {
        {
        CLUREF T_2_1;
        CLUREF T_2_2;
        err = s_locals(&T_2_1);
        if (err != ERR_ok) goto ex_0;
        err = stringOPconcat(T_2_1, STR_op_137own_137ptr_055_076, &T_2_2);
        if (err != ERR_ok) goto ex_0;
        ret_1->num = T_2_2.num;
        }
        {signal (ERR_ok);}}
        }
        }/* end if */

  LINE(2207);
    {
    CLUREF T_1_1;
    err = type_cont_type_parm(ty, &T_1_1);
    if (err != ERR_ok) goto ex_0;
    if (T_1_1.num == true) {

  LINE(2208);
        {
        {
        CLUREF T_2_1;
        CLUREF T_2_2;
        err = s_locals(&T_2_1);
        if (err != ERR_ok) goto ex_0;
        err = stringOPconcat(T_2_1, STR_type_137own_137ptr_055_076, &T_2_2);
        if (err != ERR_ok) goto ex_0;
        ret_1->num = T_2_2.num;
        }
        {signal (ERR_ok);}}
        }
        }/* end if */

  LINE(2210);
    {
    {
    ret_1->str = STR_.str;
    }
    {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 s_owns_prefix_type ****/

