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

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


extern errcode duOPread_specs();
extern errcode boolOPnot();
extern errcode oneofOPis_4();
extern errcode intOPgt();
extern errcode sequenceOPsize();
extern errcode recordOPget_1();
extern errcode tinfo_parms();
extern errcode compiler_logit();
extern errcode current_typeOPexists();
extern errcode stringOPequal();
extern errcode idnOPget_str();
extern errcode recordOPget_4();
extern errcode current_typeOPget();
extern errcode duOPget_common();
extern errcode is_internal_op_parmd();
CLUREF STR_apply_072DUspecs_040say_040none;
CLUREF STR_;
static int parmd_dus_own_init = 0;

/**** BEGIN PROCEDURE parmd_dus ****/

errcode parmd_dus(gen, ret_1)
CLUREF gen;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
    CLUREF specs;
    CLUREF b;
    CLUREF a;
    CLUREF t;
        if (parmd_dus_own_init == 0) {
        stringOPcons("apply:DUspecs say none", CLU_1, CLU_22, &STR_apply_072DUspecs_040say_040none);
        stringOPcons("", CLU_1, CLU_0, &STR_);
        parmd_dus_own_init = 1;
    }
    enter_proc(10);

  LINE(11);
    {
        {CLUREF T_1_1;
        CLUREF T_1_2;
        err = duOPread_specs(gen, &T_1_1, &T_1_2);
        if (err != ERR_ok) goto ex_0;
        specs.num = T_1_1.num;
        b.num = T_1_2.num;
        }
        }

  LINE(12);
    {
    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(13);
        {
        switch (specs.cell->tag) {
        case 1: 
             {CLUREF T_2_1;
            T_2_1.num = specs.cell->value;
            a.num = T_2_1.num;

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

  LINE(16);
                    {
                    {
                    ret_1->tf = true;
                    }
                    {signal (ERR_ok);}}
                    }
                    }/* end if */
                break;
                }
        case 3: 
             {CLUREF T_2_2;
            T_2_2.num = specs.cell->value;
            t.num = T_2_2.num;

  LINE(19);
                {
                CLUREF T_3_1;
                err = tinfo_parms(t, &T_3_1);
                if (err != ERR_ok) goto ex_0;
                if (T_3_1.num == true) {

  LINE(20);
                    {
                    {
                    ret_1->tf = true;
                    }
                    {signal (ERR_ok);}}
                    }
                    }/* end if */
                break;
                }
        case 5: 
             {CLUREF T_2_3;
            T_2_3.num = specs.cell->value;
            t.num = T_2_3.num;

  LINE(23);
                {
                CLUREF T_3_1;
                err = tinfo_parms(t, &T_3_1);
                if (err != ERR_ok) goto ex_0;
                if (T_3_1.num == true) {

  LINE(24);
                    {
                    {
                    ret_1->tf = true;
                    }
                    {signal (ERR_ok);}}
                    }
                    }/* end if */
                break;
                }
        case 2: 
             {CLUREF T_2_4;
            T_2_4.num = specs.cell->value;
            t.num = T_2_4.num;

  LINE(27);
                {
                CLUREF T_3_1;
                err = tinfo_parms(t, &T_3_1);
                if (err != ERR_ok) goto ex_0;
                if (T_3_1.num == true) {

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

  LINE(30);
            {
            CLUREF T_3_1;
            CLUREF T_3_2;
            T_3_1.num = 600;
            err = compiler_logit(T_3_1, STR_apply_072DUspecs_040say_040none, &T_3_2);
            if (err != ERR_ok) goto ex_0;
            }
            {
            {
            ret_1->tf = false;
            }
            {signal (ERR_ok);}}
        }
        }
        }
        }
        }/* end if */

  LINE(33);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    CLUREF T_1_3;
    CLUREF T_1_4;
    CLUREF T_1_5;
    CLUREF T_1_6;
    CLUREF T_1_7;
    err = current_typeOPexists(&T_1_2);
    if (err != ERR_ok) goto ex_0;
    T_1_1.num = T_1_2.num;
    if (T_1_2.num) {
        err = current_typeOPget(&T_1_3);
        if (err != ERR_ok) goto ex_0;
        T_1_4.num = T_1_3.vec->data[3];
        err = idnOPget_str(T_1_4, &T_1_5);
        if (err != ERR_ok) goto ex_0;
        err = duOPget_common(gen, &T_1_6);
        if (err != ERR_ok) goto ex_0;
        T_1_7.num = ((T_1_5.str->size != T_1_6.str->size)? false :
            !(bcmp(T_1_5.str->data, T_1_6.str->data, T_1_5.str->size)));
        T_1_1.num = T_1_7.num;
    }
    if (T_1_1.num == true) {

  LINE(34);
        {
        {
        CLUREF T_2_1;
        err = is_internal_op_parmd(STR_, &T_2_1);
        if (err != ERR_ok) goto ex_0;
        ret_1->num = T_2_1.num;
        }
        {signal (ERR_ok);}}
        }
        }/* end if */

  LINE(35);
    {
    {
    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_dus ****/


extern errcode recordOPget_2();
extern errcode sequenceOPelements();
extern errcode recordOPget_3();

/**** BEGIN PROCEDURE tinfo_parms ****/

errcode tinfo_parms(t, ret_1)
CLUREF t;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
    CLUREF each_op;
    enter_proc(38);

  LINE(39);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    CLUREF T_1_3;
    T_1_1.num = t.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(40);
        {
        {
        ret_1->tf = true;
        }
        {signal (ERR_ok);}}
        }
        }/* end if */

  LINE(41);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    CLUREF T_1_3;
    CLUREF T_1_4;
        T_1_1.num = t.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_op.num = T_1_4.vec->data[T_1_2.num - 1];

  LINE(42);
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            CLUREF T_2_3;
            CLUREF T_2_4;
            T_2_1.num = each_op.vec->data[0];
            T_2_2.num = T_2_1.vec->data[0];
            T_2_3.num = T_2_2.vec->size;
            T_2_4.num = (T_2_3.num > 0)? true : false;
            if (T_2_4.num == true) {

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

  LINE(45);
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            CLUREF T_2_3;
            T_2_1.num = each_op.vec->data[2];
            T_2_2.num = T_2_1.vec->size;
            T_2_3.num = (T_2_2.num > 0)? true : false;
            if (T_2_3.num == true) {

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

  LINE(49);
    {
    {
    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 tinfo_parms ****/


extern errcode tinfo_op();
static int parmd_op_own_init = 0;

/**** BEGIN PROCEDURE parmd_op ****/

errcode parmd_op(gen, op, ret_1)
CLUREF gen;
CLUREF op;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
    CLUREF specs;
    CLUREF b;
    CLUREF a;
    CLUREF t;
        if (parmd_op_own_init == 0) {
        stringOPcons("apply:DUspecs say none", CLU_1, CLU_22, &STR_apply_072DUspecs_040say_040none);
        parmd_op_own_init = 1;
    }
    enter_proc(54);

  LINE(55);
    {
        {CLUREF T_1_1;
        CLUREF T_1_2;
        err = duOPread_specs(gen, &T_1_1, &T_1_2);
        if (err != ERR_ok) goto ex_0;
        specs.num = T_1_1.num;
        b.num = T_1_2.num;
        }
        }

  LINE(56);
    {
    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(57);
        {
        switch (specs.cell->tag) {
        case 1: 
             {CLUREF T_2_1;
            T_2_1.num = specs.cell->value;
            a.num = T_2_1.num;

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

  LINE(60);
                    {
                    {
                    ret_1->tf = true;
                    }
                    {signal (ERR_ok);}}
                    }
                    }/* end if */
                break;
                }
        case 3: 
             {CLUREF T_2_2;
            T_2_2.num = specs.cell->value;
            t.num = T_2_2.num;

  LINE(63);
                {
                CLUREF T_3_1;
                err = tinfo_op(t, op, &T_3_1);
                if (err != ERR_ok) goto ex_0;
                if (T_3_1.num == true) {

  LINE(64);
                    {
                    {
                    ret_1->tf = true;
                    }
                    {signal (ERR_ok);}}
                    }
                    }/* end if */
                break;
                }
        case 5: 
             {CLUREF T_2_3;
            T_2_3.num = specs.cell->value;
            t.num = T_2_3.num;

  LINE(67);
                {
                CLUREF T_3_1;
                err = tinfo_op(t, op, &T_3_1);
                if (err != ERR_ok) goto ex_0;
                if (T_3_1.num == true) {

  LINE(68);
                    {
                    {
                    ret_1->tf = true;
                    }
                    {signal (ERR_ok);}}
                    }
                    }/* end if */
                break;
                }
        case 2: 
             {CLUREF T_2_4;
            T_2_4.num = specs.cell->value;
            t.num = T_2_4.num;

  LINE(71);
                {
                CLUREF T_3_1;
                err = tinfo_op(t, op, &T_3_1);
                if (err != ERR_ok) goto ex_0;
                if (T_3_1.num == true) {

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

  LINE(74);
            {
            CLUREF T_3_1;
            CLUREF T_3_2;
            T_3_1.num = 601;
            err = compiler_logit(T_3_1, STR_apply_072DUspecs_040say_040none, &T_3_2);
            if (err != ERR_ok) goto ex_0;
            }
            {
            {
            ret_1->tf = false;
            }
            {signal (ERR_ok);}}
        }
        }
        }
        }
        }/* end if */

  LINE(77);
    {
    {
    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_op ****/


static int parmd_type_own_init = 0;

/**** BEGIN PROCEDURE parmd_type ****/

errcode parmd_type(gen, ret_1)
CLUREF gen;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
    CLUREF specs;
    CLUREF b;
    CLUREF a;
    CLUREF t;
        if (parmd_type_own_init == 0) {
        stringOPcons("apply:DUspecs say none", CLU_1, CLU_22, &STR_apply_072DUspecs_040say_040none);
        parmd_type_own_init = 1;
    }
    enter_proc(82);

  LINE(83);
    {
        {CLUREF T_1_1;
        CLUREF T_1_2;
        err = duOPread_specs(gen, &T_1_1, &T_1_2);
        if (err != ERR_ok) goto ex_0;
        specs.num = T_1_1.num;
        b.num = T_1_2.num;
        }
        }

  LINE(84);
    {
    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(85);
        {
        switch (specs.cell->tag) {
        case 1: 
             {CLUREF T_2_1;
            T_2_1.num = specs.cell->value;
            a.num = T_2_1.num;

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

  LINE(88);
                    {
                    {
                    ret_1->tf = true;
                    }
                    {signal (ERR_ok);}}
                    }
                    }/* end if */
                break;
                }
        case 3: 
             {CLUREF T_2_2;
            T_2_2.num = specs.cell->value;
            t.num = T_2_2.num;

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

  LINE(92);
                    {
                    {
                    ret_1->tf = true;
                    }
                    {signal (ERR_ok);}}
                    }
                    }/* end if */
                break;
                }
        case 5: 
             {CLUREF T_2_3;
            T_2_3.num = specs.cell->value;
            t.num = T_2_3.num;

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

  LINE(96);
                    {
                    {
                    ret_1->tf = true;
                    }
                    {signal (ERR_ok);}}
                    }
                    }/* end if */
                break;
                }
        case 2: 
             {CLUREF T_2_4;
            T_2_4.num = specs.cell->value;
            t.num = T_2_4.num;

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

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

  LINE(103);
            {
            CLUREF T_3_1;
            CLUREF T_3_2;
            T_3_1.num = 602;
            err = compiler_logit(T_3_1, STR_apply_072DUspecs_040say_040none, &T_3_2);
            if (err != ERR_ok) goto ex_0;
            }
            {
            {
            ret_1->tf = false;
            }
            {signal (ERR_ok);}}
        }
        }
        }
        }
    else {

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

  LINE(109);
    {
    {
    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_type ****/


extern errcode intOPequal();
extern errcode any_const_parm();
extern errcode current_type_restricted();
extern errcode current_type_op_restricted();
static int parmd_op_op_parm_own_init = 0;

/**** BEGIN PROCEDURE parmd_op_op_parm ****/

errcode parmd_op_op_parm(gen, op, ind, ret_1, ret_2)
CLUREF gen;
CLUREF op;
CLUREF ind;
CLUREF *ret_1;
CLUREF *ret_2;
    {
    errcode err;
    errcode ecode2;
    CLUREF specs;
    CLUREF b;
    CLUREF a;
    CLUREF t;
        if (parmd_op_op_parm_own_init == 0) {
        stringOPcons("apply:DUspecs say none", CLU_1, CLU_22, &STR_apply_072DUspecs_040say_040none);
        parmd_op_op_parm_own_init = 1;
    }
    enter_proc(116);

  LINE(117);
    {
        {CLUREF T_1_1;
        CLUREF T_1_2;
        err = duOPread_specs(gen, &T_1_1, &T_1_2);
        if (err != ERR_ok) goto ex_0;
        specs.num = T_1_1.num;
        b.num = T_1_2.num;
        }
        }

  LINE(118);
    {
    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(119);
        {
        switch (specs.cell->tag) {
        case 1: 
             {CLUREF T_2_1;
            T_2_1.num = specs.cell->value;
            a.num = T_2_1.num;

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

  LINE(122);
                    {
                    {
                    ret_1->tf = true;
                    }
                    {
                    ret_2->tf = false;
                    }
                    {signal (ERR_ok);}}
                    }
                    }/* end if */
                break;
                }
        case 3: 
             {CLUREF T_2_2;
            T_2_2.num = specs.cell->value;
            t.num = T_2_2.num;

  LINE(125);
                {
                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;
                CLUREF T_3_10;
                CLUREF T_3_11;
                CLUREF T_3_12;
                CLUREF T_3_13;
                T_3_5.num = t.vec->data[1];
                T_3_6.num = T_3_5.vec->size;
                T_3_7.num = (T_3_6.num == 0)? true : false;
                T_3_8.num = T_3_7.num ^ 1;
                T_3_4.num = T_3_8.num;
                if (!T_3_8.num) {
                    T_3_9.num = op.vec->data[0];
                    err = tinfo_op(t, T_3_9, &T_3_10);
                    if (err != ERR_ok) goto ex_0;
                    T_3_4.num = T_3_10.num;
                }
                T_3_3.num = T_3_4.num;
                if (!T_3_4.num) {
                    err = any_const_parm(t, &T_3_11);
                    if (err != ERR_ok) goto ex_0;
                    T_3_3.num = T_3_11.num;
                }
                T_3_2.num = T_3_3.num;
                if (!T_3_3.num) {
                    err = current_type_restricted(&T_3_12);
                    if (err != ERR_ok) goto ex_0;
                    T_3_2.num = T_3_12.num;
                }
                T_3_1.num = T_3_2.num;
                if (!T_3_2.num) {
                    err = current_type_op_restricted(op, &T_3_13);
                    if (err != ERR_ok) goto ex_0;
                    T_3_1.num = T_3_13.num;
                }
                if (T_3_1.num == true) {

  LINE(131);
                    {
                    CLUREF T_4_1;
                    CLUREF T_4_2;
                    CLUREF T_4_3;
                    T_4_1.num = t.vec->data[1];
                    T_4_2.num = T_4_1.vec->size;
                    T_4_3.num = (ind.num > T_4_2.num)? true : false;
                    if (T_4_3.num == true) {
                        {
                        {
                        ret_1->tf = true;
                        }
                        {
                        ret_2->tf = true;
                        }
                        {signal (ERR_ok);}}
                        }
                    else {

  LINE(132);
                        {
                        {
                        ret_1->tf = true;
                        }
                        {
                        ret_2->tf = false;
                        }
                        {signal (ERR_ok);}}
                        }}/* end if */
                    }
                    }/* end if */
                break;
                }
        case 5: 
             {CLUREF T_2_3;
            T_2_3.num = specs.cell->value;
            t.num = T_2_3.num;

  LINE(136);
                {
                CLUREF T_3_1;
                CLUREF T_3_2;
                T_3_1.num = op.vec->data[0];
                err = tinfo_op(t, T_3_1, &T_3_2);
                if (err != ERR_ok) goto ex_0;
                if (T_3_2.num == true) {

  LINE(137);
                    {
                    {
                    ret_1->tf = true;
                    }
                    {
                    ret_2->tf = false;
                    }
                    {signal (ERR_ok);}}
                    }
                    }/* end if */
                break;
                }
        case 2: 
             {CLUREF T_2_4;
            T_2_4.num = specs.cell->value;
            t.num = T_2_4.num;

  LINE(140);
                {
                CLUREF T_3_1;
                CLUREF T_3_2;
                T_3_1.num = op.vec->data[0];
                err = tinfo_op(t, T_3_1, &T_3_2);
                if (err != ERR_ok) goto ex_0;
                if (T_3_2.num == true) {

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

  LINE(143);
            {
            CLUREF T_3_1;
            CLUREF T_3_2;
            T_3_1.num = 603;
            err = compiler_logit(T_3_1, STR_apply_072DUspecs_040say_040none, &T_3_2);
            if (err != ERR_ok) goto ex_0;
            }
            {
            {
            ret_1->tf = false;
            }
            {
            ret_2->tf = false;
            }
            {signal (ERR_ok);}}
        }
        }
        }
        }
        }/* end if */

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


static int cluster_parm_count_own_init = 0;

/**** BEGIN PROCEDURE cluster_parm_count ****/

errcode cluster_parm_count(gen, ret_1)
CLUREF gen;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
    CLUREF specs;
    CLUREF b;
    CLUREF a;
    CLUREF t;
        if (cluster_parm_count_own_init == 0) {
        stringOPcons("apply:DUspecs say none", CLU_1, CLU_22, &STR_apply_072DUspecs_040say_040none);
        cluster_parm_count_own_init = 1;
    }
    enter_proc(151);

  LINE(152);
    {
        {CLUREF T_1_1;
        CLUREF T_1_2;
        err = duOPread_specs(gen, &T_1_1, &T_1_2);
        if (err != ERR_ok) goto ex_0;
        specs.num = T_1_1.num;
        b.num = T_1_2.num;
        }
        }

  LINE(153);
    {
    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(154);
        {
        switch (specs.cell->tag) {
        case 1: 
             {CLUREF T_2_1;
            T_2_1.num = specs.cell->value;
            a.num = T_2_1.num;

  LINE(156);
                {
                {
                CLUREF T_3_1;
                CLUREF T_3_2;
                T_3_1.num = a.vec->data[0];
                T_3_2.num = T_3_1.vec->size;
                ret_1->num = T_3_2.num;
                }
                {signal (ERR_ok);}}
                break;
                }
        case 3: 
             {CLUREF T_2_2;
            T_2_2.num = specs.cell->value;
            t.num = T_2_2.num;

  LINE(158);
                {
                {
                CLUREF T_3_1;
                CLUREF T_3_2;
                T_3_1.num = t.vec->data[1];
                T_3_2.num = T_3_1.vec->size;
                ret_1->num = T_3_2.num;
                }
                {signal (ERR_ok);}}
                break;
                }
        case 5: 
             {CLUREF T_2_3;
            T_2_3.num = specs.cell->value;
            t.num = T_2_3.num;

  LINE(160);
                {
                {
                CLUREF T_3_1;
                CLUREF T_3_2;
                T_3_1.num = t.vec->data[1];
                T_3_2.num = T_3_1.vec->size;
                ret_1->num = T_3_2.num;
                }
                {signal (ERR_ok);}}
                break;
                }
        case 2: 
             {CLUREF T_2_4;
            T_2_4.num = specs.cell->value;
            t.num = T_2_4.num;

  LINE(162);
                {
                {
                CLUREF T_3_1;
                CLUREF T_3_2;
                T_3_1.num = t.vec->data[1];
                T_3_2.num = T_3_1.vec->size;
                ret_1->num = T_3_2.num;
                }
                {signal (ERR_ok);}}
                break;
                }
        default: {

  LINE(164);
            {
            CLUREF T_3_1;
            CLUREF T_3_2;
            T_3_1.num = 604;
            err = compiler_logit(T_3_1, STR_apply_072DUspecs_040say_040none, &T_3_2);
            if (err != ERR_ok) goto ex_0;
            }
            {
            {
            ret_1->num = 0;
            }
            {signal (ERR_ok);}}
        }
        }
        }
        }
        }/* end if */

  LINE(167);
    {
    {
    ret_1->num = 0;
    }
    {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 cluster_parm_count ****/


extern errcode recordOPget_10();

/**** BEGIN PROCEDURE current_type_restricted ****/

errcode current_type_restricted(ret_1)
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
    CLUREF ct;
    enter_proc(170);

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

  LINE(174);
        {
            {CLUREF T_2_1;
            err = current_typeOPget(&T_2_1);
            if (err != ERR_ok) goto ex_0;
            ct.num = T_2_1.num;
            }
            }

  LINE(175);
        {
        CLUREF T_2_1;
        CLUREF T_2_2;
        CLUREF T_2_3;
        CLUREF T_2_4;
        T_2_1.num = ct.vec->data[9];
        T_2_2.num = T_2_1.vec->size;
        T_2_3.num = (T_2_2.num == 0)? true : false;
        T_2_4.num = T_2_3.num ^ 1;
        if (T_2_4.num == true) {

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

  LINE(179);
    {
    {
    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 current_type_restricted ****/


extern errcode recordOPget_5();
extern errcode recordOPget_13();

/**** BEGIN PROCEDURE current_type_op_restricted ****/

errcode current_type_op_restricted(op, ret_1)
CLUREF op;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
    CLUREF nm;
    CLUREF ct;
    CLUREF each_ap;
    enter_proc(183);

  LINE(185);
    {
        {CLUREF T_1_1;
        T_1_1.num = op.vec->data[0];
        nm.num = T_1_1.num;
        }
        }

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

  LINE(189);
        {
            {CLUREF T_2_1;
            err = current_typeOPget(&T_2_1);
            if (err != ERR_ok) goto ex_0;
            ct.num = T_2_1.num;
            }
            }

  LINE(190);
        {
        CLUREF T_2_1;
        CLUREF T_2_2;
        CLUREF T_2_3;
        CLUREF T_2_4;
            T_2_1.num = ct.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_ap.num = T_2_4.vec->data[T_2_2.num - 1];

  LINE(192);
                {
                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;
                T_3_2.num = each_ap.vec->data[4];
                err = idnOPget_str(T_3_2, &T_3_3);
                if (err != ERR_ok) goto ex_0;
                T_3_4.num = ((T_3_3.str->size != nm.str->size)? false :
                    !(bcmp(T_3_3.str->data, nm.str->data, T_3_3.str->size)));
                T_3_1.num = T_3_4.num;
                if (T_3_4.num) {
                    T_3_5.num = each_ap.vec->data[12];
                    T_3_6.num = T_3_5.vec->size;
                    T_3_7.num = (T_3_6.num == 0)? true : false;
                    T_3_8.num = T_3_7.num ^ 1;
                    T_3_1.num = T_3_8.num;
                }
                if (T_3_1.num == true) {

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

  LINE(198);
    {
    {
    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 current_type_op_restricted ****/


extern errcode idnOPget_kind();
extern errcode idnkind_print();
CLUREF STR_const_137parm_072_040idn_040not_040vparm_040or_040tparm;
static int any_const_parm_own_init = 0;

/**** BEGIN PROCEDURE any_const_parm ****/

errcode any_const_parm(t, ret_1)
CLUREF t;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
    CLUREF each_idn;
        if (any_const_parm_own_init == 0) {
        stringOPcons("const_parm: idn not vparm or tparm", CLU_1, CLU_34, &STR_const_137parm_072_040idn_040not_040vparm_040or_040tparm);
        any_const_parm_own_init = 1;
    }
    enter_proc(202);

  LINE(203);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    CLUREF T_1_3;
    CLUREF T_1_4;
        T_1_1.num = t.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_idn.num = T_1_4.vec->data[T_1_2.num - 1];

  LINE(204);
            {
            CLUREF T_2_1;
            err = idnOPget_kind(each_idn, &T_2_1);
            if (err != ERR_ok) goto ex_0;
            switch (T_2_1.cell->tag) {
            case 10: 
                 {

  LINE(206);
                    {
                    {
                    ret_1->tf = true;
                    }
                    {signal (ERR_ok);}}
                    break;
                    }
            case 6: 
                 {

  LINE(208);
                    continue;
                    break;
                    }
            default: {

  LINE(210);
                {
                CLUREF T_3_1;
                CLUREF T_3_2;
                T_3_1.num = 605;
                err = compiler_logit(T_3_1, STR_const_137parm_072_040idn_040not_040vparm_040or_040tparm, &T_3_2);
                if (err != ERR_ok) goto ex_0;
                }

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

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

  LINE(215);
    {
    {
    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 any_const_parm ****/


extern errcode exprOPget_abs();

/**** BEGIN PROCEDURE const_parm ****/

errcode const_parm(p, ret_1)
CLUREF p;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
    enter_proc(218);

  LINE(219);
    {
    CLUREF T_1_1;
    err = exprOPget_abs(p, &T_1_1);
    if (err != ERR_ok) goto ex_0;
    switch (T_1_1.cell->tag) {
    case 5: 
    case 15: 
    case 21: 
    case 7: 
    case 24: 
    case 19: 
    case 13: 
         {

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

  LINE(224);
    {
    {
    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 const_parm ****/



/**** BEGIN PROCEDURE const_parm_idn ****/

errcode const_parm_idn(i, ret_1)
CLUREF i;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
    enter_proc(227);

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

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

  LINE(233);
    {
    {
    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 const_parm_idn ****/


extern errcode expr_print();
CLUREF STR__077_040type_040parm;
static int type_parm_own_init = 0;

/**** BEGIN PROCEDURE type_parm ****/

errcode type_parm(p, ret_1)
CLUREF p;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
    CLUREF i;
        if (type_parm_own_init == 0) {
        stringOPcons("? type parm", CLU_1, CLU_11, &STR__077_040type_040parm);
        type_parm_own_init = 1;
    }
    enter_proc(236);

  LINE(237);
    {
    CLUREF T_1_1;
    err = exprOPget_abs(p, &T_1_1);
    if (err != ERR_ok) goto ex_0;
    switch (T_1_1.cell->tag) {
    case 25: 
         {

  LINE(239);
            {
            {
            ret_1->tf = true;
            }
            {signal (ERR_ok);}}
            break;
            }
    case 5: 
    case 15: 
    case 21: 
    case 7: 
    case 24: 
    case 19: 
         {

  LINE(241);
            {
            {
            ret_1->tf = false;
            }
            {signal (ERR_ok);}}
            break;
            }
    case 13: 
         {CLUREF T_1_2;
        T_1_2.num = T_1_1.cell->value;
        i.num = T_1_2.num;

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

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

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

  LINE(252);
        {
        CLUREF T_2_1;
        CLUREF T_2_2;
        T_2_1.num = 606;
        err = compiler_logit(T_2_1, STR__077_040type_040parm, &T_2_2);
        if (err != ERR_ok) goto ex_0;
        }

  LINE(253);
        {
        err = expr_print(p, CLU_20);
        if (err != ERR_ok) goto ex_0;
        }
    }
    }
    }

  LINE(255);
    {
    {
    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 type_parm ****/


extern errcode intOPadd();

/**** BEGIN PROCEDURE type_parm_count ****/

errcode type_parm_count(el, ret_1)
CLUREF el;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
    CLUREF ans;
    CLUREF each_expr;
    enter_proc(260);

  LINE(261);
    {
        {ans.num = 0;
        }
        }

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

  LINE(263);
            {
            CLUREF T_2_1;
            err = exprOPget_abs(each_expr, &T_2_1);
            if (err != ERR_ok) goto ex_0;
            switch (T_2_1.cell->tag) {
            case 25: 
                 {

  LINE(265);
                    {
                    CLUREF T_3_1;
                    T_3_1.num = ans.num + 1;
                     if ((T_3_1.num > 0 && ans.num < 0 && 1 < 0) || 
                         (T_3_1.num < 0 && ans.num > 0 && 1 > 0)) {
                        err = ERR_overflow;
                        goto ex_0;}
                    ans.num = T_3_1.num;
                    }
                    break;
                    }
            default: {
            }
            }
            }
        }
    }
    end_inline_for_1:;

  LINE(269);
    {
    {
    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 type_parm_count ****/



/**** BEGIN PROCEDURE tinfo_op ****/

errcode tinfo_op(t, op, ret_1)
CLUREF t;
CLUREF op;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
    CLUREF each_op;
    CLUREF info;
    CLUREF ty;
    enter_proc(272);

  LINE(273);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    CLUREF T_1_3;
    CLUREF T_1_4;
        T_1_1.num = t.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_op.num = T_1_4.vec->data[T_1_2.num - 1];

  LINE(274);
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            CLUREF T_2_3;
            T_2_1.num = each_op.vec->data[1];
            T_2_2.num = ((op.str->size != T_2_1.str->size)? false :
                !(bcmp(op.str->data, T_2_1.str->data, op.str->size)));
            T_2_3.num = T_2_2.num ^ 1;
            if (T_2_3.num == true) {
                continue;
                }
                }/* end if */

  LINE(275);
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            CLUREF T_2_3;
            T_2_1.num = each_op.vec->data[2];
            T_2_2.num = T_2_1.vec->size;
            T_2_3.num = (T_2_2.num > 0)? true : false;
            if (T_2_3.num == true) {

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

  LINE(279);
                {
                    {CLUREF T_3_1;
                    T_3_1.num = each_op.vec->data[0];
                    info.num = T_3_1.num;
                    }
                    }

  LINE(280);
                {
                    {CLUREF T_3_1;
                    T_3_1.num = info.vec->data[1];
                    ty.num = T_3_1.num;
                    }
                    }

  LINE(283);
                {
                {
                ret_1->tf = false;
                }
                {signal (ERR_ok);}}
                }}/* end if */
        }
    }
    end_inline_for_1:;

  LINE(286);
    {
    {
    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 tinfo_op ****/


extern errcode sequenceOPnew();
extern errcode typespecOPget_abs();
extern errcode find_typeinfo_formals();
extern errcode stringOPconcat();
CLUREF STR_g_137parm_137blocks_072_040unhandled_072_040none_040or_040select;
CLUREF STR_g_137parm_137blocks_072_040unhandled_072_040select;
CLUREF STR_g_137parm_137blocks_072_040no_040formals;
CLUREF STR_pb_137formals_072_040arraycons_072_040not_040cluster_137;
static int pb_formals_own_init = 0;

/**** BEGIN PROCEDURE pb_formals ****/

errcode pb_formals(p, ret_1)
CLUREF p;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
    CLUREF formals;
    CLUREF ct;
    CLUREF gen;
    CLUREF specs;
    CLUREF b;
    CLUREF t;
    CLUREF a;
    CLUREF cop;
    CLUREF xa;
    CLUREF at;
    CLUREF ar;
        if (pb_formals_own_init == 0) {
        stringOPcons("g_parm_blocks: unhandled: none or select", CLU_1, CLU_40, &STR_g_137parm_137blocks_072_040unhandled_072_040none_040or_040select);
        stringOPcons("g_parm_blocks: unhandled: select", CLU_1, CLU_32, &STR_g_137parm_137blocks_072_040unhandled_072_040select);
        stringOPcons("g_parm_blocks: no formals", CLU_1, CLU_25, &STR_g_137parm_137blocks_072_040no_040formals);
        stringOPcons("pb_formals: arraycons: not cluster_", CLU_1, CLU_35, &STR_pb_137formals_072_040arraycons_072_040not_040cluster_137);
        pb_formals_own_init = 1;
    }
    enter_proc(289);

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

  LINE(291);
    {
    switch (p.cell->tag) {
    case 4: 
         {CLUREF T_1_1;
        T_1_1.num = p.cell->value;
        ct.num = T_1_1.num;

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

  LINE(294);
            {
                {CLUREF T_2_1;
                CLUREF T_2_2;
                err = duOPread_specs(gen, &T_2_1, &T_2_2);
                if (err != ERR_ok) goto ex_0;
                specs.num = T_2_1.num;
                b.num = T_2_2.num;
                }
                }

  LINE(295);
            {
            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) {
                }
            else {

  LINE(300);
                {
                switch (specs.cell->tag) {
                case 3: 
                     {CLUREF T_3_1;
                    T_3_1.num = specs.cell->value;
                    t.num = T_3_1.num;

  LINE(302);
                        {
                        CLUREF T_4_1;
                        T_4_1.num = t.vec->data[1];
                        formals.num = T_4_1.num;
                        }
                        break;
                        }
                case 2: 
                     {CLUREF T_3_2;
                    T_3_2.num = specs.cell->value;
                    t.num = T_3_2.num;

  LINE(304);
                        {
                        CLUREF T_4_1;
                        T_4_1.num = t.vec->data[1];
                        formals.num = T_4_1.num;
                        }
                        break;
                        }
                case 1: 
                     {CLUREF T_3_3;
                    T_3_3.num = specs.cell->value;
                    a.num = T_3_3.num;

  LINE(306);
                        {
                        CLUREF T_4_1;
                        T_4_1.num = a.vec->data[0];
                        formals.num = T_4_1.num;
                        }
                        break;
                        }
                default: {

  LINE(308);
                    {
                    CLUREF T_4_1;
                    CLUREF T_4_2;
                    T_4_1.num = 607;
                    err = compiler_logit(T_4_1, STR_g_137parm_137blocks_072_040unhandled_072_040none_040or_040select, &T_4_2);
                    if (err != ERR_ok) goto ex_0;
                    }

  LINE(309);
                    {
                    {
                    ret_1->num = formals.num;
                    }
                    {signal (ERR_ok);}}
                }
                }
                }
                }}/* end if */
            break;
            }
    case 6: 
         {CLUREF T_1_2;
        T_1_2.num = p.cell->value;
        cop.num = T_1_2.num;

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

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

  LINE(318);
                    {
                        {CLUREF T_3_1;
                        CLUREF T_3_2;
                        err = duOPread_specs(gen, &T_3_1, &T_3_2);
                        if (err != ERR_ok) goto ex_0;
                        specs.num = T_3_1.num;
                        b.num = T_3_2.num;
                        }
                        }

  LINE(319);
                    {
                    CLUREF T_3_1;
                    CLUREF T_3_2;
                    if (specs.cell->tag == 4) T_3_1.num = true; else T_3_1.num = false;
                    T_3_2.num = T_3_1.num ^ 1;
                    if (T_3_2.num == true) {

  LINE(320);
                        {
                        switch (specs.cell->tag) {
                        case 3: 
                             {CLUREF T_4_1;
                            T_4_1.num = specs.cell->value;
                            t.num = T_4_1.num;

  LINE(322);
                                {
                                CLUREF T_5_1;
                                err = find_typeinfo_formals(cop, t, &T_5_1);
                                if (err != ERR_ok) goto ex_0;
                                formals.num = T_5_1.num;
                                }
                                break;
                                }
                        case 2: 
                             {CLUREF T_4_2;
                            T_4_2.num = specs.cell->value;
                            t.num = T_4_2.num;

  LINE(324);
                                {
                                CLUREF T_5_1;
                                err = find_typeinfo_formals(cop, t, &T_5_1);
                                if (err != ERR_ok) goto ex_0;
                                formals.num = T_5_1.num;
                                }
                                break;
                                }
                        case 1: 
                             {CLUREF T_4_3;
                            T_4_3.num = specs.cell->value;
                            a.num = T_4_3.num;

  LINE(326);
                                {
                                CLUREF T_5_1;
                                T_5_1.num = a.vec->data[0];
                                formals.num = T_5_1.num;
                                }
                                break;
                                }
                        default: {

  LINE(328);
                            {
                            CLUREF T_5_1;
                            CLUREF T_5_2;
                            T_5_1.num = 608;
                            err = compiler_logit(T_5_1, STR_g_137parm_137blocks_072_040unhandled_072_040none_040or_040select, &T_5_2);
                            if (err != ERR_ok) goto ex_0;
                            }

  LINE(329);
                            {
                            {
                            ret_1->num = formals.num;
                            }
                            {signal (ERR_ok);}}
                        }
                        }
                        }
                        }
                        }/* end if */
                    break;
                    }
            case 7: 
                 {CLUREF T_2_4;
                T_2_4.num = T_2_2.cell->value;
                xa.num = T_2_4.num;

  LINE(333);
                    {
                    CLUREF T_3_1;
                    CLUREF T_3_2;
                    T_3_1.num = 609;
                    err = compiler_logit(T_3_1, STR_g_137parm_137blocks_072_040unhandled_072_040select, &T_3_2);
                    if (err != ERR_ok) goto ex_0;
                    }
                    break;
                    }
            case 2: 
                 {CLUREF T_2_5;
                T_2_5.num = T_2_2.cell->value;
                at.num = T_2_5.num;

  LINE(335);
                    {
                    CLUREF T_3_1;
                    T_3_1.num = at.vec->data[1];
                    gen.num = T_3_1.num;
                    }

  LINE(336);
                    {
                        {CLUREF T_3_1;
                        CLUREF T_3_2;
                        err = duOPread_specs(gen, &T_3_1, &T_3_2);
                        if (err != ERR_ok) goto ex_0;
                        specs.num = T_3_1.num;
                        b.num = T_3_2.num;
                        }
                        }

  LINE(337);
                    {
                    CLUREF T_3_1;
                    CLUREF T_3_2;
                    if (specs.cell->tag == 4) T_3_1.num = true; else T_3_1.num = false;
                    T_3_2.num = T_3_1.num ^ 1;
                    if (T_3_2.num == true) {

  LINE(338);
                        {
                        switch (specs.cell->tag) {
                        case 3: 
                             {CLUREF T_4_1;
                            T_4_1.num = specs.cell->value;
                            t.num = T_4_1.num;

  LINE(340);
                                {
                                CLUREF T_5_1;
                                err = find_typeinfo_formals(cop, t, &T_5_1);
                                if (err != ERR_ok) goto ex_0;
                                formals.num = T_5_1.num;
                                }
                                break;
                                }
                        case 2: 
                             {CLUREF T_4_2;
                            T_4_2.num = specs.cell->value;
                            t.num = T_4_2.num;

  LINE(342);
                                {
                                CLUREF T_5_1;
                                err = find_typeinfo_formals(cop, t, &T_5_1);
                                if (err != ERR_ok) goto ex_0;
                                formals.num = T_5_1.num;
                                }
                                break;
                                }
                        case 1: 
                             {CLUREF T_4_3;
                            T_4_3.num = specs.cell->value;
                            a.num = T_4_3.num;

  LINE(344);
                                {
                                CLUREF T_5_1;
                                T_5_1.num = a.vec->data[0];
                                formals.num = T_5_1.num;
                                }
                                break;
                                }
                        default: {

  LINE(346);
                            {
                            CLUREF T_5_1;
                            CLUREF T_5_2;
                            T_5_1.num = 610;
                            err = compiler_logit(T_5_1, STR_g_137parm_137blocks_072_040unhandled_072_040none_040or_040select, &T_5_2);
                            if (err != ERR_ok) goto ex_0;
                            }

  LINE(347);
                            {
                            {
                            ret_1->num = formals.num;
                            }
                            {signal (ERR_ok);}}
                        }
                        }
                        }
                        }
                        }/* end if */
                    break;
                    }
            case 5: 
            case 1: 
                 {
                    break;
                    }
            default: {
            }
            }
            }
            break;
            }
    case 1: 
         {CLUREF T_1_3;
        T_1_3.num = p.cell->value;
        ar.num = T_1_3.num;

  LINE(354);
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            T_2_1.num = ar.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(356);
                    {
                        {CLUREF T_3_1;
                        T_3_1.num = ct.vec->data[0];
                        gen.num = T_3_1.num;
                        }
                        }

  LINE(357);
                    {
                        {CLUREF T_3_1;
                        CLUREF T_3_2;
                        err = duOPread_specs(gen, &T_3_1, &T_3_2);
                        if (err != ERR_ok) goto ex_0;
                        specs.num = T_3_1.num;
                        b.num = T_3_2.num;
                        }
                        }

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

  LINE(359);
                        {
                        CLUREF T_4_1;
                        CLUREF T_4_2;
                        CLUREF T_4_3;
                        CLUREF T_4_4;
                        CLUREF T_4_5;
                        T_4_1.num = 611;
                        T_4_2.num = ct.vec->data[0];
                        err = duOPget_common(T_4_2, &T_4_3);
                        if (err != ERR_ok) goto ex_0;
                        err = stringOPconcat(STR_g_137parm_137blocks_072_040no_040formals, T_4_3, &T_4_4);
                        if (err != ERR_ok) goto ex_0;
                        err = compiler_logit(T_4_1, T_4_4, &T_4_5);
                        if (err != ERR_ok) goto ex_0;
                        }
                        }
                    else {

  LINE(361);
                        {
                        switch (specs.cell->tag) {
                        case 3: 
                             {CLUREF T_4_1;
                            T_4_1.num = specs.cell->value;
                            t.num = T_4_1.num;

  LINE(363);
                                {
                                CLUREF T_5_1;
                                T_5_1.num = t.vec->data[1];
                                formals.num = T_5_1.num;
                                }
                                break;
                                }
                        case 2: 
                             {CLUREF T_4_2;
                            T_4_2.num = specs.cell->value;
                            t.num = T_4_2.num;

  LINE(365);
                                {
                                CLUREF T_5_1;
                                T_5_1.num = t.vec->data[1];
                                formals.num = T_5_1.num;
                                }
                                break;
                                }
                        case 1: 
                             {CLUREF T_4_3;
                            T_4_3.num = specs.cell->value;
                            a.num = T_4_3.num;

  LINE(367);
                                {
                                CLUREF T_5_1;
                                T_5_1.num = a.vec->data[0];
                                formals.num = T_5_1.num;
                                }
                                break;
                                }
                        default: {

  LINE(369);
                            {
                            CLUREF T_5_1;
                            CLUREF T_5_2;
                            T_5_1.num = 612;
                            err = compiler_logit(T_5_1, STR_g_137parm_137blocks_072_040unhandled_072_040none_040or_040select, &T_5_2);
                            if (err != ERR_ok) goto ex_0;
                            }

  LINE(370);
                            {
                            {
                            ret_1->num = formals.num;
                            }
                            {signal (ERR_ok);}}
                        }
                        }
                        }
                        }}/* end if */
                    break;
                    }
            default: {

  LINE(374);
                {
                CLUREF T_3_1;
                CLUREF T_3_2;
                T_3_1.num = 613;
                err = compiler_logit(T_3_1, STR_pb_137formals_072_040arraycons_072_040not_040cluster_137, &T_3_2);
                if (err != ERR_ok) goto ex_0;
                }
            }
            }
            }
            break;
            }
    default: {
    }
    }
    }

  LINE(378);
    {
    {
    ret_1->num = formals.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 pb_formals ****/


extern errcode seq_extend();
extern errcode charOPequal();
extern errcode stringOPfetch();
extern errcode recordOPget_8();
extern struct REQS *seq_extend_of_t_reqs;
extern struct OPS *idn_ops;
extern OWN_req seq_extend_ownreqs;
struct OPS *seq_extend_of_idn_table;
struct OPS *seq_extend_of_idn_ops;
struct OPS *seq_extend_of_idn_ops;
OWNPTR seq_extend_of_idn_owns;
static int find_typeinfo_formals_own_init = 0;

/**** BEGIN PROCEDURE find_typeinfo_formals ****/

errcode find_typeinfo_formals(cop, t, ret_1)
CLUREF cop;
CLUREF t;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
    CLUREF idns;
    CLUREF oper;
    CLUREF current_cluster;
    CLUREF each_apply;
    CLUREF each_d;
        if (find_typeinfo_formals_own_init == 0) {
        add_parm_info_type(0, idn_ops, seq_extend_of_t_reqs);
        find_prociter_instance(seq_extend, 1, &seq_extend_ownreqs, &(seq_extend_of_idn_ops));
        find_typeinfo_formals_own_init = 1;
    }
    enter_proc(381);

  LINE(383);
    {
    CLUREF T_1_1;
    T_1_1.num = t.vec->data[1];
    idns.num = T_1_1.num;
    }

  LINE(384);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    CLUREF T_1_3;
    CLUREF T_1_4;
        T_1_1.num = t.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++) {
            oper.num = T_1_4.vec->data[T_1_2.num - 1];

  LINE(385);
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            CLUREF T_2_3;
            T_2_1.num = oper.vec->data[1];
            T_2_2.num = cop.vec->data[0];
            T_2_3.num = ((T_2_1.str->size != T_2_2.str->size)? false :
                !(bcmp(T_2_1.str->data, T_2_2.str->data, T_2_1.str->size)));
            if (T_2_3.num == true) {

  LINE(386);
                {
                CLUREF T_3_1;
                CLUREF T_3_2;
                CLUREF T_3_3;
                T_3_1.num = oper.vec->data[0];
                T_3_2.num = T_3_1.vec->data[0];
                generic_CLU_proc.type_owns = 0;
                generic_CLU_proc.op_owns = (int)seq_extend_of_idn_ops->op_owns;
                generic_CLU_proc.proc = seq_extend;
                CUR_PROC_VAR.proc = &generic_CLU_proc;
                err = seq_extend(idns, T_3_2, &T_3_3);
                if (err != ERR_ok) goto ex_0;
                idns.num = T_3_3.num;
                }

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

  LINE(390);
    {
    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;
    T_1_2.num = cop.vec->data[0];
    err = stringOPfetch(T_1_2, CLU_1, &T_1_3);
    if (err != ERR_ok) goto ex_0;
    T_1_4.ch = '%';
    T_1_5.num = (T_1_3.ch == T_1_4.ch)? true : false;
    T_1_1.num = T_1_5.num;
    if (T_1_5.num) {
        T_1_6.num = cop.vec->data[1];
        T_1_7.num = T_1_6.vec->size;
        T_1_8.num = (T_1_7.num == 0)? true : false;
        T_1_9.num = T_1_8.num ^ 1;
        T_1_1.num = T_1_9.num;
    }
    if (T_1_1.num == true) {

  LINE(397);
        {
            {CLUREF T_2_1;
            err = current_typeOPget(&T_2_1);
            if (err != ERR_ok) goto ex_0;
            current_cluster.num = T_2_1.num;
            }
            }

  LINE(398);
        {
        CLUREF T_2_1;
        CLUREF T_2_2;
        CLUREF T_2_3;
        CLUREF T_2_4;
            T_2_1.num = current_cluster.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_apply.num = T_2_4.vec->data[T_2_2.num - 1];

  LINE(399);
                {
                CLUREF T_3_1;
                CLUREF T_3_2;
                CLUREF T_3_3;
                CLUREF T_3_4;
                CLUREF T_3_5;
                T_3_1.num = each_apply.vec->data[4];
                err = idnOPget_str(T_3_1, &T_3_2);
                if (err != ERR_ok) goto ex_0;
                T_3_3.num = cop.vec->data[0];
                T_3_4.num = ((T_3_2.str->size != T_3_3.str->size)? false :
                    !(bcmp(T_3_2.str->data, T_3_3.str->data, T_3_2.str->size)));
                T_3_5.num = T_3_4.num ^ 1;
                if (T_3_5.num == true) {
                    continue;
                    }
                    }/* end if */

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

  LINE(401);
                        {
                        CLUREF T_4_1;
                        CLUREF T_4_2;
                        T_4_1.num = each_d.vec->data[0];
                        generic_CLU_proc.type_owns = 0;
                        generic_CLU_proc.op_owns = (int)seq_extend_of_idn_ops->op_owns;
                        generic_CLU_proc.proc = seq_extend;
                        CUR_PROC_VAR.proc = &generic_CLU_proc;
                        err = seq_extend(idns, T_4_1, &T_4_2);
                        if (err != ERR_ok) goto ex_0;
                        idns.num = T_4_2.num;
                        }
                    }
                }
                end_inline_for_3:;
            }
        }
        end_inline_for_2:;
        }
        }/* end if */

  LINE(405);
    {
    {
    ret_1->num = idns.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 find_typeinfo_formals ****/


extern errcode oneofOPvalue_3();
extern struct OPS *expr_ops;
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_pb_137actuals_072_040unimplemented_040arraycons_040type_137;
CLUREF STR_pb_137act_072_040cop_040is_040not_040a_040cluster_137_040;
static int pb_actuals_own_init = 0;

/**** BEGIN PROCEDURE pb_actuals ****/

errcode pb_actuals(p, ret_1)
CLUREF p;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
    CLUREF actuals;
    CLUREF temp;
    CLUREF ct;
    CLUREF cop;
    CLUREF a;
        if (pb_actuals_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("pb_actuals: unimplemented arraycons type_", CLU_1, CLU_41, &STR_pb_137actuals_072_040unimplemented_040arraycons_040type_137);
        stringOPcons("pb_act: cop is not a cluster_ ", CLU_1, CLU_30, &STR_pb_137act_072_040cop_040is_040not_040a_040cluster_137_040);
        pb_actuals_own_init = 1;
    }
    enter_proc(408);

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

  LINE(411);
    {
    switch (p.cell->tag) {
    case 4: 
         {CLUREF T_2_1;
        T_2_1.num = p.cell->value;
        ct.num = T_2_1.num;

  LINE(413);
            {
            CLUREF T_3_1;
            T_3_1.num = ct.vec->data[1];
            actuals.num = T_3_1.num;
            }
            break;
            }
    case 6: 
         {CLUREF T_2_2;
        T_2_2.num = p.cell->value;
        cop.num = T_2_2.num;

  LINE(415);
            {
            CLUREF T_3_1;
            T_3_1.num = cop.vec->data[1];
            actuals.num = T_3_1.num;
            }

  LINE(416);
            {
            CLUREF T_3_1;
            T_3_1.num = cop.vec->data[0];
            temp.num = T_3_1.num;
            }

  LINE(417);
            {
                {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 != 3) {err = ERR_wrong_tag; goto ex_1;}
                T_3_3.num = T_3_2.cell->value;
                ct.num = T_3_3.num;
                }
                }

  LINE(418);
            {
            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_1;
            actuals.num = T_3_3.num;
            }
            break;
            }
    case 1: 
         {CLUREF T_2_3;
        T_2_3.num = p.cell->value;
        a.num = T_2_3.num;

  LINE(420);
            {
            CLUREF T_3_1;
            CLUREF T_3_2;
            T_3_1.num = a.vec->data[2];
            err = typespecOPget_abs(T_3_1, &T_3_2);
            if (err != ERR_ok) goto ex_1;
            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(422);
                    {
                    CLUREF T_4_1;
                    T_4_1.num = ct.vec->data[1];
                    actuals.num = T_4_1.num;
                    }
                    break;
                    }
            default: {

  LINE(424);
                {
                CLUREF T_4_1;
                CLUREF T_4_2;
                T_4_1.num = 614;
                err = compiler_logit(T_4_1, STR_pb_137actuals_072_040unimplemented_040arraycons_040type_137, &T_4_2);
                if (err != ERR_ok) goto ex_1;
                }
            }
            }
            }
            break;
            }
    default: {
    }
    }
    }
        goto end_1;
        ex_1:
            if ((err == ERR_wrong_tag)) {

  LINE(429);
                {
                CLUREF T_2_1;
                CLUREF T_2_2;
                CLUREF T_2_3;
                T_2_1.num = 615;
                err = stringOPconcat(STR_pb_137act_072_040cop_040is_040not_040a_040cluster_137_040, temp, &T_2_2);
                if (err != ERR_ok) goto ex_0;
                err = compiler_logit(T_2_1, T_2_2, &T_2_3);
                if (err != ERR_ok) goto ex_0;
                }
            }
            else {
                goto ex_0;
            }
        end_1:;

  LINE(431);
    {
    {
    ret_1->num = actuals.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 pb_actuals ****/


CLUREF STR_pb_137gen_072_040cop_072_040not_040c_057a_057t;
CLUREF STR_pb_137gen_072_040unimplemented_040pb_040type;
static int pb_gen_own_init = 0;

/**** BEGIN PROCEDURE pb_gen ****/

errcode pb_gen(p, ret_1)
CLUREF p;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
    CLUREF ct;
    CLUREF cop;
    CLUREF a;
        if (pb_gen_own_init == 0) {
        stringOPcons("pb_gen: cop: not c/a/t", CLU_1, CLU_22, &STR_pb_137gen_072_040cop_072_040not_040c_057a_057t);
        stringOPcons("pb_gen: unimplemented pb type", CLU_1, CLU_29, &STR_pb_137gen_072_040unimplemented_040pb_040type);
        pb_gen_own_init = 1;
    }
    enter_proc(434);

  LINE(435);
    {
    switch (p.cell->tag) {
    case 4: 
         {CLUREF T_1_1;
        T_1_1.num = p.cell->value;
        ct.num = T_1_1.num;

  LINE(437);
            {
            {
            CLUREF T_2_1;
            T_2_1.num = ct.vec->data[0];
            ret_1->num = T_2_1.num;
            }
            {signal (ERR_ok);}}
            break;
            }
    case 6: 
         {CLUREF T_1_2;
        T_1_2.num = p.cell->value;
        cop.num = T_1_2.num;

  LINE(439);
            {
            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(441);
                    {
                    {
                    CLUREF T_3_1;
                    T_3_1.num = ct.vec->data[0];
                    ret_1->num = T_3_1.num;
                    }
                    {signal (ERR_ok);}}
                    break;
                    }
            case 8: 
                 {CLUREF T_2_4;
                T_2_4.num = T_2_2.cell->value;
                ct.num = T_2_4.num;

  LINE(443);
                    {
                    {
                    CLUREF T_3_1;
                    T_3_1.num = ct.vec->data[0];
                    ret_1->num = T_3_1.num;
                    }
                    {signal (ERR_ok);}}
                    break;
                    }
            case 2: 
                 {CLUREF T_2_5;
                T_2_5.num = T_2_2.cell->value;
                a.num = T_2_5.num;

  LINE(445);
                    {
                    {
                    CLUREF T_3_1;
                    T_3_1.num = a.vec->data[1];
                    ret_1->num = T_3_1.num;
                    }
                    {signal (ERR_ok);}}
                    break;
                    }
            default: {

  LINE(447);
                {
                CLUREF T_3_1;
                CLUREF T_3_2;
                T_3_1.num = 616;
                err = compiler_logit(T_3_1, STR_pb_137gen_072_040cop_072_040not_040c_057a_057t, &T_3_2);
                if (err != ERR_ok) goto ex_0;
                }
            }
            }
            }
            break;
            }
    case 1: 
         {CLUREF T_1_3;
        T_1_3.num = p.cell->value;
        a.num = T_1_3.num;

  LINE(450);
            {
            {signal (ERR_a_cons);}}
            break;
            }
    default: {

  LINE(452);
        {
        CLUREF T_2_1;
        CLUREF T_2_2;
        T_2_1.num = 617;
        err = compiler_logit(T_2_1, STR_pb_137gen_072_040unimplemented_040pb_040type, &T_2_2);
        if (err != ERR_ok) goto ex_0;
        }
    }
    }
    }
    goto end_0;
    ex_0:
        {
            if (err == ERR_failure) {signal(ERR_failure);}
            elist[0] = _pclu_erstr(err);
            {signal(ERR_failure);}
        }
    end_0: elist[0].str = no_return_values_STRING;
        {signal(ERR_failure);}
    }

/**** END PROCEDURE pb_gen ****/


extern errcode pb_gen();
static int pb_inst_parms_count_own_init = 0;

/**** BEGIN PROCEDURE pb_inst_parms_count ****/

errcode pb_inst_parms_count(p, ret_1)
CLUREF p;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
    CLUREF gen;
    CLUREF specs;
    CLUREF b;
    CLUREF a;
    CLUREF t;
        if (pb_inst_parms_count_own_init == 0) {
        stringOPcons("apply:DUspecs say none", CLU_1, CLU_22, &STR_apply_072DUspecs_040say_040none);
        pb_inst_parms_count_own_init = 1;
    }
    enter_proc(458);

  LINE(459);
    {
        {CLUREF T_1_1;
        err = pb_gen(p, &T_1_1);
        if (err != ERR_ok) goto ex_0;
        gen.num = T_1_1.num;
        }
        }

  LINE(460);
    {
        {CLUREF T_1_1;
        CLUREF T_1_2;
        err = duOPread_specs(gen, &T_1_1, &T_1_2);
        if (err != ERR_ok) goto ex_0;
        specs.num = T_1_1.num;
        b.num = T_1_2.num;
        }
        }

  LINE(461);
    {
    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(462);
        {
        switch (specs.cell->tag) {
        case 1: 
             {CLUREF T_2_1;
            T_2_1.num = specs.cell->value;
            a.num = T_2_1.num;

  LINE(464);
                {
                {
                CLUREF T_3_1;
                CLUREF T_3_2;
                T_3_1.num = a.vec->data[0];
                T_3_2.num = T_3_1.vec->size;
                ret_1->num = T_3_2.num;
                }
                {signal (ERR_ok);}}
                break;
                }
        case 3: 
             {CLUREF T_2_2;
            T_2_2.num = specs.cell->value;
            t.num = T_2_2.num;

  LINE(466);
                {
                {
                CLUREF T_3_1;
                CLUREF T_3_2;
                T_3_1.num = t.vec->data[1];
                T_3_2.num = T_3_1.vec->size;
                ret_1->num = T_3_2.num;
                }
                {signal (ERR_ok);}}
                break;
                }
        case 5: 
             {CLUREF T_2_3;
            T_2_3.num = specs.cell->value;
            t.num = T_2_3.num;

  LINE(468);
                {
                {
                CLUREF T_3_1;
                CLUREF T_3_2;
                T_3_1.num = t.vec->data[1];
                T_3_2.num = T_3_1.vec->size;
                ret_1->num = T_3_2.num;
                }
                {signal (ERR_ok);}}
                break;
                }
        case 2: 
             {CLUREF T_2_4;
            T_2_4.num = specs.cell->value;
            t.num = T_2_4.num;

  LINE(470);
                {
                {
                CLUREF T_3_1;
                CLUREF T_3_2;
                T_3_1.num = t.vec->data[1];
                T_3_2.num = T_3_1.vec->size;
                ret_1->num = T_3_2.num;
                }
                {signal (ERR_ok);}}
                break;
                }
        default: {

  LINE(472);
            {
            CLUREF T_3_1;
            CLUREF T_3_2;
            T_3_1.num = 618;
            err = compiler_logit(T_3_1, STR_apply_072DUspecs_040say_040none, &T_3_2);
            if (err != ERR_ok) goto ex_0;
            }
            {
            {
            ret_1->num = 0;
            }
            {signal (ERR_ok);}}
        }
        }
        }
        }
        }/* end if */

  LINE(475);
    {
    {
    ret_1->num = 0;
    }
    {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 pb_inst_parms_count ****/


extern errcode pb_formals();
extern errcode pb_actuals();
extern errcode oneofOPis_6();
extern errcode is_op_parm();
extern errcode oneofOPvalue_6();
extern errcode stringOPrest();
extern errcode s_expr4();
extern errcode sequenceOPfetch();
extern errcode own_defnOPtest();
extern errcode dbg_infoOPadd_own();
extern errcode g_envOPputl();
extern errcode is_op_parmd();
extern errcode cluster_parm_count();
extern errcode intOPfrom_to();
extern errcode g_envOPputs();
extern errcode typespec_print();
extern errcode s_name_typespec();
extern errcode exprOPget_typespec();
CLUREF STR__137op_137;
CLUREF STR__137of_137;
CLUREF STR__137table;
CLUREF STR_struct_040OPS_040_052;
CLUREF STR__073;
CLUREF STR__137of;
CLUREF STR__137;
CLUREF STR__137ops;
CLUREF STR__137owns;
CLUREF STR_OWNPTR_040;
CLUREF STR_g_137parm_137blocks_040array_040type_040unhandled;
CLUREF STR__137anyize_137of_137;
CLUREF STR_g_137parm_137blocks_072_040t_057ainfo_0401;
static int g_parm_table_own_init = 0;

/**** BEGIN PROCEDURE g_parm_table ****/

errcode g_parm_table(e, each_pb)
CLUREF e;
CLUREF each_pb;
    {
    errcode err;
    errcode ecode2;
    CLUREF index;
    CLUREF formals;
    CLUREF actuals;
    CLUREF gen;
    CLUREF op_name;
    CLUREF each_parm;
    CLUREF tail;
    CLUREF nm;
    CLUREF parmct;
    CLUREF pcount;
    CLUREF index2;
    CLUREF sname;
    CLUREF a;
    CLUREF ct;
    CLUREF each_expr;
    CLUREF ex;
    CLUREF ty;
        if (g_parm_table_own_init == 0) {
        stringOPcons("", CLU_1, CLU_0, &STR_);
        stringOPcons("_op_", CLU_1, CLU_4, &STR__137op_137);
        stringOPcons("_of_", CLU_1, CLU_4, &STR__137of_137);
        stringOPcons("_table", CLU_1, CLU_6, &STR__137table);
        stringOPcons("struct OPS *", CLU_1, CLU_12, &STR_struct_040OPS_040_052);
        stringOPcons(";", CLU_1, CLU_1, &STR__073);
        stringOPcons("_of", CLU_1, CLU_3, &STR__137of);
        stringOPcons("_", CLU_1, CLU_1, &STR__137);
        stringOPcons("_ops", CLU_1, CLU_4, &STR__137ops);
        stringOPcons("_owns", CLU_1, CLU_5, &STR__137owns);
        stringOPcons("OWNPTR ", CLU_1, CLU_7, &STR_OWNPTR_040);
        stringOPcons("g_parm_blocks array type unhandled", CLU_1, CLU_34, &STR_g_137parm_137blocks_040array_040type_040unhandled);
        stringOPcons("_anyize_of_", CLU_1, CLU_11, &STR__137anyize_137of_137);
        stringOPcons("g_parm_blocks: t/ainfo 1", CLU_1, CLU_24, &STR_g_137parm_137blocks_072_040t_057ainfo_0401);
        g_parm_table_own_init = 1;
    }
    enter_proc(480);

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

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

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

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

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

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

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

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

  LINE(492);
                        {
                        op_name = STR_;
                        }

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

  LINE(494);
                            {
                            CLUREF T_5_1;
                            err = is_op_parm(each_parm, gen, &T_5_1);
                            if (err != ERR_ok) goto ex_0;
                            if (T_5_1.num == true) {

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

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

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

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

  LINE(500);
                        {
                            {CLUREF T_4_1;
                            CLUREF T_4_2;
                            CLUREF T_4_3;
                            CLUREF T_4_4;
                            CLUREF T_4_5;
                            CLUREF T_4_6;
                            CLUREF T_4_7;
                            err = duOPget_common(gen, &T_4_1);
                            if (err != ERR_ok) goto ex_0;
                            err = stringOPconcat(T_4_1, op_name, &T_4_2);
                            if (err != ERR_ok) goto ex_0;
                            err = stringOPconcat(T_4_2, STR__137of_137, &T_4_3);
                            if (err != ERR_ok) goto ex_0;
                            if (index.num < 1 || index.num > actuals.vec->size ) {
                                err = ERR_bounds;
                                goto ex_0;}
                            T_4_4.num = actuals.vec->data[index.num - 1];
                            err = s_expr4(T_4_4, &T_4_5);
                            if (err != ERR_ok) goto ex_0;
                            err = stringOPconcat(T_4_3, T_4_5, &T_4_6);
                            if (err != ERR_ok) goto ex_0;
                            err = stringOPconcat(T_4_6, STR__137table, &T_4_7);
                            if (err != ERR_ok) goto ex_0;
                            nm.num = T_4_7.num;
                            }
                            }

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

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

  LINE(505);
                            {
                            CLUREF T_5_1;
                            CLUREF T_5_2;
                            err = stringOPconcat(STR_struct_040OPS_040_052, nm, &T_5_1);
                            if (err != ERR_ok) goto ex_0;
                            err = stringOPconcat(T_5_1, STR__073, &T_5_2);
                            if (err != ERR_ok) goto ex_0;
                            err = g_envOPputl(e, T_5_2);
                            if (err != ERR_ok) goto ex_0;
                            }
                            }
                            }/* end if */

  LINE(507);
                        {
                        CLUREF T_4_1;
                        T_4_1.num = index.num + 1;
                         if ((T_4_1.num > 0 && index.num < 0 && 1 < 0) || 
                             (T_4_1.num < 0 && index.num > 0 && 1 > 0)) {
                            err = ERR_overflow;
                            goto ex_0;}
                        index.num = T_4_1.num;
                        }
                    }
                }
                end_inline_for_1:;
                }
            else {
                }}/* end if */

  LINE(515);
            {
                {CLUREF T_2_1;
                T_2_1.num = actuals.vec->size;
                parmct.num = T_2_1.num;
                }
                }

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

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

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

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

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

  LINE(521);
                        {
                        CLUREF T_5_1;
                        CLUREF T_5_2;
                        CLUREF T_5_3;
                        err = stringOPfetch(tail, CLU_1, &T_5_1);
                        if (err != ERR_ok) goto ex_0;
                        T_5_2.ch = '%';
                        T_5_3.num = (T_5_1.ch == T_5_2.ch)? true : false;
                        if (T_5_3.num == true) {

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

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

  LINE(525);
                {
                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, &T_3_3);
                if (err != ERR_ok) goto ex_0;
                nm.num = T_3_3.num;
                }

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

  LINE(527);
                        {
                        CLUREF T_4_1;
                        CLUREF T_4_2;
                        CLUREF T_4_3;
                        err = stringOPconcat(nm, STR__137, &T_4_1);
                        if (err != ERR_ok) goto ex_0;
                        err = s_expr4(each_parm, &T_4_2);
                        if (err != ERR_ok) goto ex_0;
                        err = stringOPconcat(T_4_1, T_4_2, &T_4_3);
                        if (err != ERR_ok) goto ex_0;
                        nm.num = T_4_3.num;
                        }
                    }
                }
                end_inline_for_2:;

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

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

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

  LINE(533);
                    {
                    CLUREF T_4_1;
                    CLUREF T_4_2;
                    err = stringOPconcat(STR_struct_040OPS_040_052, nm, &T_4_1);
                    if (err != ERR_ok) goto ex_0;
                    err = stringOPconcat(T_4_1, STR__073, &T_4_2);
                    if (err != ERR_ok) goto ex_0;
                    err = g_envOPputl(e, T_4_2);
                    if (err != ERR_ok) goto ex_0;
                    }
                    }
                    }/* end if */
                }
                }/* end if */

  LINE(536);
            {
                {CLUREF T_2_1;
                err = cluster_parm_count(gen, &T_2_1);
                if (err != ERR_ok) goto ex_0;
                pcount.num = T_2_1.num;
                }
                }

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

  LINE(538);
                {
                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, &T_3_2);
                if (err != ERR_ok) goto ex_0;
                nm.num = T_3_2.num;
                }

  LINE(539);
                {
                CLUREF T_3_1;
                CLUREF T_3_2;
                    T_3_2.num = pcount.num;
                    for (T_3_1.num = 1; T_3_1.num <= T_3_2.num; T_3_1.num++) {
                        index2.num = T_3_1.num;

  LINE(540);
                        {
                        CLUREF T_4_1;
                        CLUREF T_4_2;
                        CLUREF T_4_3;
                        CLUREF T_4_4;
                        err = stringOPconcat(nm, STR__137, &T_4_1);
                        if (err != ERR_ok) goto ex_0;
                        if (index2.num < 1 || index2.num > actuals.vec->size ) {
                            err = ERR_bounds;
                            goto ex_0;}
                        T_4_2.num = actuals.vec->data[index2.num - 1];
                        err = s_expr4(T_4_2, &T_4_3);
                        if (err != ERR_ok) goto ex_0;
                        err = stringOPconcat(T_4_1, T_4_3, &T_4_4);
                        if (err != ERR_ok) goto ex_0;
                        nm.num = T_4_4.num;
                        }
                    }
                }
                end_inline_for_3:;

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

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

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

  LINE(546);
                    {
                    CLUREF T_4_1;
                    CLUREF T_4_2;
                    err = stringOPconcat(STR_struct_040OPS_040_052, nm, &T_4_1);
                    if (err != ERR_ok) goto ex_0;
                    err = stringOPconcat(T_4_1, STR__073, &T_4_2);
                    if (err != ERR_ok) goto ex_0;
                    err = g_envOPputl(e, T_4_2);
                    if (err != ERR_ok) goto ex_0;
                    }
                    }
                    }/* end if */
                }
                }/* end if */

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

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

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

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

  LINE(555);
                        {
                        CLUREF T_5_1;
                        CLUREF T_5_2;
                        CLUREF T_5_3;
                        err = stringOPfetch(tail, CLU_1, &T_5_1);
                        if (err != ERR_ok) goto ex_0;
                        T_5_2.ch = '%';
                        T_5_3.num = (T_5_1.ch == T_5_2.ch)? true : false;
                        if (T_5_3.num == true) {

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

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

  LINE(559);
                {
                    {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, &T_3_3);
                    if (err != ERR_ok) goto ex_0;
                    sname.num = T_3_3.num;
                    }
                    }

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

  LINE(561);
                        {
                        CLUREF T_4_1;
                        CLUREF T_4_2;
                        CLUREF T_4_3;
                        err = stringOPconcat(sname, STR__137, &T_4_1);
                        if (err != ERR_ok) goto ex_0;
                        err = s_expr4(each_parm, &T_4_2);
                        if (err != ERR_ok) goto ex_0;
                        err = stringOPconcat(T_4_1, T_4_2, &T_4_3);
                        if (err != ERR_ok) goto ex_0;
                        sname.num = T_4_3.num;
                        }
                    }
                }
                end_inline_for_4:;

  LINE(566);
                {
                CLUREF T_3_1;
                err = stringOPconcat(sname, STR__137owns, &T_3_1);
                if (err != ERR_ok) goto ex_0;
                nm.num = T_3_1.num;
                }

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

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

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

  LINE(571);
                    {
                    CLUREF T_4_1;
                    err = stringOPconcat(nm, STR__073, &T_4_1);
                    if (err != ERR_ok) goto ex_0;
                    err = g_envOPputl(e, T_4_1);
                    if (err != ERR_ok) goto ex_0;
                    }
                    }
                    }/* end if */
                }
                }/* end if */
            break;
            }
    case 1: 
         {CLUREF T_1_1;
        T_1_1.num = each_pb.cell->value;
        a.num = T_1_1.num;

  LINE(576);
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            T_2_1.num = a.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(578);
                    {
                    CLUREF T_3_1;
                    CLUREF T_3_2;
                    CLUREF T_3_3;
                    CLUREF T_3_4;
                        T_3_1.num = ct.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++) {
                            each_expr.num = T_3_4.vec->data[T_3_2.num - 1];

  LINE(579);
                            {
                                {CLUREF T_4_1;
                                CLUREF T_4_2;
                                CLUREF T_4_3;
                                CLUREF T_4_4;
                                CLUREF T_4_5;
                                CLUREF T_4_6;
                                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__137of_137, &T_4_3);
                                if (err != ERR_ok) goto ex_0;
                                err = s_expr4(each_expr, &T_4_4);
                                if (err != ERR_ok) goto ex_0;
                                err = stringOPconcat(T_4_3, T_4_4, &T_4_5);
                                if (err != ERR_ok) goto ex_0;
                                err = stringOPconcat(T_4_5, STR__137table, &T_4_6);
                                if (err != ERR_ok) goto ex_0;
                                nm.num = T_4_6.num;
                                }
                                }

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

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

  LINE(584);
                                {
                                CLUREF T_5_1;
                                CLUREF T_5_2;
                                err = stringOPconcat(STR_struct_040OPS_040_052, nm, &T_5_1);
                                if (err != ERR_ok) goto ex_0;
                                err = stringOPconcat(T_5_1, STR__073, &T_5_2);
                                if (err != ERR_ok) goto ex_0;
                                err = g_envOPputl(e, T_5_2);
                                if (err != ERR_ok) goto ex_0;
                                }
                                }
                                }/* end if */
                        }
                    }
                    end_inline_for_5:;

  LINE(589);
                    {
                        {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, &T_3_3);
                        if (err != ERR_ok) goto ex_0;
                        nm.num = T_3_3.num;
                        }
                        }

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

  LINE(591);
                            {
                            CLUREF T_4_1;
                            CLUREF T_4_2;
                            CLUREF T_4_3;
                            err = stringOPconcat(nm, STR__137, &T_4_1);
                            if (err != ERR_ok) goto ex_0;
                            err = s_expr4(each_expr, &T_4_2);
                            if (err != ERR_ok) goto ex_0;
                            err = stringOPconcat(T_4_1, T_4_2, &T_4_3);
                            if (err != ERR_ok) goto ex_0;
                            nm.num = T_4_3.num;
                            }
                        }
                    }
                    end_inline_for_6:;

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

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

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

  LINE(597);
                        {
                        CLUREF T_4_1;
                        CLUREF T_4_2;
                        err = stringOPconcat(STR_struct_040OPS_040_052, nm, &T_4_1);
                        if (err != ERR_ok) goto ex_0;
                        err = stringOPconcat(T_4_1, STR__073, &T_4_2);
                        if (err != ERR_ok) goto ex_0;
                        err = g_envOPputl(e, T_4_2);
                        if (err != ERR_ok) goto ex_0;
                        }
                        }
                        }/* end if */

  LINE(600);
                    {
                    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, &T_3_3);
                    if (err != ERR_ok) goto ex_0;
                    nm.num = T_3_3.num;
                    }

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

  LINE(602);
                            {
                            CLUREF T_4_1;
                            err = stringOPconcat(nm, STR__137, &T_4_1);
                            if (err != ERR_ok) goto ex_0;
                            nm.num = T_4_1.num;
                            }
                            {
                            CLUREF T_4_1;
                            err = s_expr4(each_parm, &T_4_1);
                            if (err != ERR_ok) goto ex_0;
                            }
                        }
                    }
                    end_inline_for_7:;

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

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

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

  LINE(608);
                        {
                        CLUREF T_4_1;
                        CLUREF T_4_2;
                        err = stringOPconcat(STR_OWNPTR_040, nm, &T_4_1);
                        if (err != ERR_ok) goto ex_0;
                        err = stringOPconcat(T_4_1, STR__073, &T_4_2);
                        if (err != ERR_ok) goto ex_0;
                        err = g_envOPputl(e, T_4_2);
                        if (err != ERR_ok) goto ex_0;
                        }
                        }
                        }/* end if */
                    break;
                    }
            default: {

  LINE(610);
                {
                CLUREF T_3_1;
                CLUREF T_3_2;
                T_3_1.num = 619;
                err = compiler_logit(T_3_1, STR_g_137parm_137blocks_040array_040type_040unhandled, &T_3_2);
                if (err != ERR_ok) goto ex_0;
                }

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

  LINE(620);
            {
                {CLUREF T_2_1;
                CLUREF T_2_2;
                CLUREF T_2_3;
                CLUREF T_2_4;
                err = exprOPget_typespec(ex, &T_2_1);
                if (err != ERR_ok) goto ex_0;
                err = s_name_typespec(T_2_1, &T_2_2);
                if (err != ERR_ok) goto ex_0;
                err = stringOPconcat(STR__137anyize_137of_137, T_2_2, &T_2_3);
                if (err != ERR_ok) goto ex_0;
                err = stringOPconcat(T_2_3, STR__137ops, &T_2_4);
                if (err != ERR_ok) goto ex_0;
                nm.num = T_2_4.num;
                }
                }

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

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

  LINE(625);
                {
                CLUREF T_3_1;
                CLUREF T_3_2;
                err = stringOPconcat(STR_struct_040OPS_040_052, nm, &T_3_1);
                if (err != ERR_ok) goto ex_0;
                err = stringOPconcat(T_3_1, STR__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;
                }
                }
                }/* end if */

  LINE(628);
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            CLUREF T_2_3;
            CLUREF T_2_4;
            err = exprOPget_typespec(ex, &T_2_1);
            if (err != ERR_ok) goto ex_0;
            err = s_name_typespec(T_2_1, &T_2_2);
            if (err != ERR_ok) goto ex_0;
            err = stringOPconcat(STR__137anyize_137of_137, T_2_2, &T_2_3);
            if (err != ERR_ok) goto ex_0;
            err = stringOPconcat(T_2_3, STR__137owns, &T_2_4);
            if (err != ERR_ok) goto ex_0;
            nm.num = T_2_4.num;
            }

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

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

  LINE(632);
                {
                CLUREF T_3_1;
                CLUREF T_3_2;
                err = stringOPconcat(STR_OWNPTR_040, nm, &T_3_1);
                if (err != ERR_ok) goto ex_0;
                err = stringOPconcat(T_3_1, STR__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;
                }
                }
                }/* end if */
            break;
            }
    case 5: 
         {CLUREF T_1_3;
        T_1_3.num = each_pb.cell->value;
        ty.num = T_1_3.num;

  LINE(636);
            {
                {CLUREF T_2_1;
                CLUREF T_2_2;
                CLUREF T_2_3;
                err = s_name_typespec(ty, &T_2_1);
                if (err != ERR_ok) goto ex_0;
                err = stringOPconcat(STR__137anyize_137of_137, T_2_1, &T_2_2);
                if (err != ERR_ok) goto ex_0;
                err = stringOPconcat(T_2_2, STR__137ops, &T_2_3);
                if (err != ERR_ok) goto ex_0;
                nm.num = T_2_3.num;
                }
                }

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

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

  LINE(640);
                {
                CLUREF T_3_1;
                CLUREF T_3_2;
                err = stringOPconcat(STR_struct_040OPS_040_052, nm, &T_3_1);
                if (err != ERR_ok) goto ex_0;
                err = stringOPconcat(T_3_1, STR__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;
                }
                }
                }/* end if */

  LINE(643);
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            CLUREF T_2_3;
            err = s_name_typespec(ty, &T_2_1);
            if (err != ERR_ok) goto ex_0;
            err = stringOPconcat(STR__137anyize_137of_137, T_2_1, &T_2_2);
            if (err != ERR_ok) goto ex_0;
            err = stringOPconcat(T_2_2, STR__137owns, &T_2_3);
            if (err != ERR_ok) goto ex_0;
            nm.num = T_2_3.num;
            }

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

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

  LINE(647);
                {
                CLUREF T_3_1;
                CLUREF T_3_2;
                err = stringOPconcat(STR_OWNPTR_040, nm, &T_3_1);
                if (err != ERR_ok) goto ex_0;
                err = stringOPconcat(T_3_1, STR__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;
                }
                }
                }/* end if */
            break;
            }
    default: {

  LINE(649);
        {
        CLUREF T_2_1;
        CLUREF T_2_2;
        T_2_1.num = 620;
        err = compiler_logit(T_2_1, STR_g_137parm_137blocks_072_040t_057ainfo_0401, &T_2_2);
        if (err != ERR_ok) goto ex_0;
        }
    }
    }
    }
    goto end_0;
    ex_0:
        {
            if (err == ERR_failure) {signal(ERR_failure);}
            elist[0] = _pclu_erstr(err);
            {signal(ERR_failure);}
        }
    end_0: {signal(ERR_ok);}
    }

/**** END PROCEDURE g_parm_table ****/



/**** BEGIN PROCEDURE g_parm_table_inst_info ****/

errcode g_parm_table_inst_info(e, each_pb)
CLUREF e;
CLUREF each_pb;
    {
    errcode err;
    errcode ecode2;
    enter_proc(655);

  LINE(657);
    {
    {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_parm_table_inst_info ****/


extern errcode g_envOPadd_extern();
extern errcode oneofOPis_5();
extern errcode oneofOPvalue_4();
extern errcode oneofOPis_3();
extern errcode s_typespec();
extern errcode oneofOPis_25();
extern errcode oneofOPvalue_25();
CLUREF STR__137reqs;
CLUREF STR_extern_040struct_040REQS_040_052;
CLUREF STR_extern_040struct_040OPS_040_052;
CLUREF STR__137ownreqs;
CLUREF STR_extern_040OWN_137req_040;
CLUREF STR__137ops_073;
CLUREF STR__137ownreqs_073;
CLUREF STR__137of_137t_137reqs;
CLUREF STR__137anyize;
CLUREF STR_errcode_040;
CLUREF STR__050_051_073;
CLUREF STR__137anyize_137of_137t_137reqs;
CLUREF STR__137anyize_137ownreqs;
CLUREF STR__137anyize_137ops;
CLUREF STR_extern_040struct_040OPS_040_052_137anyize_137ops_073;
CLUREF STR_force;
CLUREF STR_g_137parm_137blocks_072_040t_057ainfo_0402;
static int g_parm_extern_own_init = 0;

/**** BEGIN PROCEDURE g_parm_extern ****/

errcode g_parm_extern(e, each_pb)
CLUREF e;
CLUREF each_pb;
    {
    errcode err;
    errcode ecode2;
    CLUREF index;
    CLUREF formals;
    CLUREF actuals;
    CLUREF gen;
    CLUREF op_name;
    CLUREF each_parm;
    CLUREF tail;
    CLUREF rname;
    CLUREF doit;
    CLUREF ty;
    CLUREF oname;
    CLUREF ename;
    CLUREF yes;
    CLUREF ct;
    CLUREF specs;
    CLUREF b;
    CLUREF a;
    CLUREF aname;
    CLUREF each_expr;
    CLUREF ex;
        if (g_parm_extern_own_init == 0) {
        stringOPcons("", CLU_1, CLU_0, &STR_);
        stringOPcons("_op_", CLU_1, CLU_4, &STR__137op_137);
        stringOPcons("_of_", CLU_1, CLU_4, &STR__137of_137);
        stringOPcons("_reqs", CLU_1, CLU_5, &STR__137reqs);
        stringOPcons("extern struct REQS *", CLU_1, CLU_20, &STR_extern_040struct_040REQS_040_052);
        stringOPcons(";", CLU_1, CLU_1, &STR__073);
        stringOPcons("_ops", CLU_1, CLU_4, &STR__137ops);
        stringOPcons("extern struct OPS *", CLU_1, CLU_19, &STR_extern_040struct_040OPS_040_052);
        stringOPcons("_ownreqs", CLU_1, CLU_8, &STR__137ownreqs);
        stringOPcons("extern OWN_req ", CLU_1, CLU_15, &STR_extern_040OWN_137req_040);
        stringOPcons("_ops;", CLU_1, CLU_5, &STR__137ops_073);
        stringOPcons("_ownreqs;", CLU_1, CLU_9, &STR__137ownreqs_073);
        stringOPcons("_of_t_reqs", CLU_1, CLU_10, &STR__137of_137t_137reqs);
        stringOPcons("g_parm_blocks array type unhandled", CLU_1, CLU_34, &STR_g_137parm_137blocks_040array_040type_040unhandled);
        stringOPcons("_anyize", CLU_1, CLU_7, &STR__137anyize);
        stringOPcons("errcode ", CLU_1, CLU_8, &STR_errcode_040);
        stringOPcons("();", CLU_1, CLU_3, &STR__050_051_073);
        stringOPcons("_anyize_of_t_reqs", CLU_1, CLU_17, &STR__137anyize_137of_137t_137reqs);
        stringOPcons("_anyize_ownreqs", CLU_1, CLU_15, &STR__137anyize_137ownreqs);
        stringOPcons("_anyize_ops", CLU_1, CLU_11, &STR__137anyize_137ops);
        stringOPcons("extern struct OPS *_anyize_ops;", CLU_1, CLU_31, &STR_extern_040struct_040OPS_040_052_137anyize_137ops_073);
        stringOPcons("force", CLU_1, CLU_5, &STR_force);
        stringOPcons("g_parm_blocks: t/ainfo 2", CLU_1, CLU_24, &STR_g_137parm_137blocks_072_040t_057ainfo_0402);
        g_parm_extern_own_init = 1;
    }
    enter_proc(660);

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

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

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

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

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

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

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

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

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

  LINE(675);
                            {
                            CLUREF T_5_1;
                            err = is_op_parm(each_parm, gen, &T_5_1);
                            if (err != ERR_ok) goto ex_0;
                            if (T_5_1.num == true) {

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

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

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

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

  LINE(681);
                        {
                            {CLUREF T_4_1;
                            CLUREF T_4_2;
                            CLUREF T_4_3;
                            CLUREF T_4_4;
                            CLUREF T_4_5;
                            CLUREF T_4_6;
                            err = duOPget_common(gen, &T_4_1);
                            if (err != ERR_ok) goto ex_0;
                            err = stringOPconcat(T_4_1, op_name, &T_4_2);
                            if (err != ERR_ok) goto ex_0;
                            err = stringOPconcat(T_4_2, STR__137of_137, &T_4_3);
                            if (err != ERR_ok) goto ex_0;
                            err = idnOPget_str(each_parm, &T_4_4);
                            if (err != ERR_ok) goto ex_0;
                            err = stringOPconcat(T_4_3, T_4_4, &T_4_5);
                            if (err != ERR_ok) goto ex_0;
                            err = stringOPconcat(T_4_5, STR__137reqs, &T_4_6);
                            if (err != ERR_ok) goto ex_0;
                            rname.num = T_4_6.num;
                            }
                            }

  LINE(683);
                        {
                        CLUREF T_4_1;
                        err = g_envOPadd_extern(rname, &T_4_1);
                        if (err != ERR_ok) goto ex_0;
                        if (T_4_1.num == true) {

  LINE(684);
                            {
                            CLUREF T_5_1;
                            CLUREF T_5_2;
                            err = stringOPconcat(STR_extern_040struct_040REQS_040_052, rname, &T_5_1);
                            if (err != ERR_ok) goto ex_0;
                            err = stringOPconcat(T_5_1, STR__073, &T_5_2);
                            if (err != ERR_ok) goto ex_0;
                            err = g_envOPputl(e, T_5_2);
                            if (err != ERR_ok) goto ex_0;
                            }
                            }
                            }/* end if */

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

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

  LINE(690);
                                {
                                CLUREF T_5_1;
                                CLUREF T_5_2;
                                err = typespecOPget_abs(ty, &T_5_1);
                                if (err != ERR_ok) goto ex_0;
                                if (T_5_1.cell->tag == 5) T_5_2.num = true; else T_5_2.num = false;
                                if (T_5_2.num == true) {
                                    {
                                    doit.tf = false;
                                    }
                                    }
                                    }/* end if */
                                break;
                                }
                        case 19: 
                        case 15: 
                        case 5: 
                        case 24: 
                        case 7: 
                        case 21: 
                        case 13: 
                             {

  LINE(692);
                                {
                                doit.tf = false;
                                }
                                break;
                                }
                        default: {
                        }
                        }
                        }

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

  LINE(696);
                            {
                                {CLUREF T_5_1;
                                CLUREF T_5_2;
                                CLUREF T_5_3;
                                if (index.num < 1 || index.num > actuals.vec->size ) {
                                    err = ERR_bounds;
                                    goto ex_0;}
                                T_5_1.num = actuals.vec->data[index.num - 1];
                                err = s_expr4(T_5_1, &T_5_2);
                                if (err != ERR_ok) goto ex_0;
                                err = stringOPconcat(T_5_2, STR__137ops, &T_5_3);
                                if (err != ERR_ok) goto ex_0;
                                oname.num = T_5_3.num;
                                }
                                }

  LINE(697);
                            {
                            CLUREF T_5_1;
                            err = g_envOPadd_extern(oname, &T_5_1);
                            if (err != ERR_ok) goto ex_0;
                            if (T_5_1.num == true) {

  LINE(698);
                                {
                                CLUREF T_6_1;
                                CLUREF T_6_2;
                                err = stringOPconcat(STR_extern_040struct_040OPS_040_052, oname, &T_6_1);
                                if (err != ERR_ok) goto ex_0;
                                err = stringOPconcat(T_6_1, STR__073, &T_6_2);
                                if (err != ERR_ok) goto ex_0;
                                err = g_envOPputl(e, T_6_2);
                                if (err != ERR_ok) goto ex_0;
                                }
                                }
                                }/* end if */
                            }
                            }/* end if */

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

  LINE(704);
                {
                op_name = STR_;
                }

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

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

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

  LINE(708);
                        {
                        CLUREF T_5_1;
                        CLUREF T_5_2;
                        CLUREF T_5_3;
                        err = stringOPfetch(tail, CLU_1, &T_5_1);
                        if (err != ERR_ok) goto ex_0;
                        T_5_2.ch = '%';
                        T_5_3.num = (T_5_1.ch == T_5_2.ch)? true : false;
                        if (T_5_3.num == true) {

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

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

  LINE(712);
                {
                    {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__137ownreqs, &T_3_3);
                    if (err != ERR_ok) goto ex_0;
                    ename.num = T_3_3.num;
                    }
                    }

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

  LINE(714);
                    {
                    CLUREF T_4_1;
                    CLUREF T_4_2;
                    err = stringOPconcat(STR_extern_040OWN_137req_040, ename, &T_4_1);
                    if (err != ERR_ok) goto ex_0;
                    err = stringOPconcat(T_4_1, STR__073, &T_4_2);
                    if (err != ERR_ok) goto ex_0;
                    err = g_envOPputl(e, T_4_2);
                    if (err != ERR_ok) goto ex_0;
                    }
                    }
                    }/* end if */
                }
            else {
                }}/* end if */

  LINE(721);
            {
                {yes.tf = false;
                }
                }

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

  LINE(723);
                {
                    {CLUREF T_3_1;
                    if (each_pb.cell->tag != 4) {err = ERR_wrong_tag; goto ex_0;}
                    T_3_1.num = each_pb.cell->value;
                    ct.num = T_3_1.num;
                    }
                    }

  LINE(724);
                {
                    {CLUREF T_3_1;
                    CLUREF T_3_2;
                    err = duOPread_specs(gen, &T_3_1, &T_3_2);
                    if (err != ERR_ok) goto ex_0;
                    specs.num = T_3_1.num;
                    b.num = T_3_2.num;
                    }
                    }

  LINE(725);
                {
                CLUREF T_3_1;
                CLUREF T_3_2;
                if (specs.cell->tag == 4) T_3_1.num = true; else T_3_1.num = false;
                T_3_2.num = T_3_1.num ^ 1;
                if (T_3_2.num == true) {

  LINE(726);
                    {
                    CLUREF T_4_1;
                    if (specs.cell->tag == 3) T_4_1.num = true; else T_4_1.num = false;
                    if (T_4_1.num == true) {
                        {
                        yes.tf = true;
                        }
                        }
                    else {
                        }}/* end if */
                    }
                else {

  LINE(732);
                    {
                    yes.tf = true;
                    }
                    }}/* end if */
                }
                }/* end if */

  LINE(736);
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            if (each_pb.cell->tag == 6) T_2_2.num = true; else T_2_2.num = false;
            T_2_1.num = T_2_2.num;
            if (!T_2_2.num) {
                T_2_1.num = yes.num;
            }
            if (T_2_1.num == true) {

  LINE(738);
                {
                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, STR__137ops, &T_3_2);
                if (err != ERR_ok) goto ex_0;
                err = g_envOPadd_extern(T_3_2, &T_3_3);
                if (err != ERR_ok) goto ex_0;
                if (T_3_3.num == true) {

  LINE(739);
                    {
                    CLUREF T_4_1;
                    CLUREF T_4_2;
                    CLUREF T_4_3;
                    err = duOPget_common(gen, &T_4_1);
                    if (err != ERR_ok) goto ex_0;
                    err = stringOPconcat(STR_extern_040struct_040OPS_040_052, T_4_1, &T_4_2);
                    if (err != ERR_ok) goto ex_0;
                    err = stringOPconcat(T_4_2, STR__137ops_073, &T_4_3);
                    if (err != ERR_ok) goto ex_0;
                    err = g_envOPputl(e, T_4_3);
                    if (err != ERR_ok) goto ex_0;
                    }
                    }
                    }/* end if */

  LINE(741);
                {
                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, STR__137ownreqs, &T_3_2);
                if (err != ERR_ok) goto ex_0;
                err = g_envOPadd_extern(T_3_2, &T_3_3);
                if (err != ERR_ok) goto ex_0;
                if (T_3_3.num == true) {

  LINE(742);
                    {
                    CLUREF T_4_1;
                    CLUREF T_4_2;
                    CLUREF T_4_3;
                    err = duOPget_common(gen, &T_4_1);
                    if (err != ERR_ok) goto ex_0;
                    err = stringOPconcat(STR_extern_040OWN_137req_040, T_4_1, &T_4_2);
                    if (err != ERR_ok) goto ex_0;
                    err = stringOPconcat(T_4_2, STR__137ownreqs_073, &T_4_3);
                    if (err != ERR_ok) goto ex_0;
                    err = g_envOPputl(e, T_4_3);
                    if (err != ERR_ok) goto ex_0;
                    }
                    }
                    }/* end if */
                }
                }/* end if */
            break;
            }
    case 1: 
         {CLUREF T_1_1;
        T_1_1.num = each_pb.cell->value;
        a.num = T_1_1.num;

  LINE(746);
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            T_2_1.num = a.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(749);
                    {
                    CLUREF T_3_1;
                    CLUREF T_3_2;
                    CLUREF T_3_3;
                    CLUREF T_3_4;
                        T_3_1.num = ct.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++) {
                            each_expr.num = T_3_4.vec->data[T_3_2.num - 1];

  LINE(751);
                            {
                            CLUREF T_4_1;
                            CLUREF T_4_2;
                            CLUREF T_4_3;
                            T_4_1.num = a.vec->data[2];
                            err = s_typespec(T_4_1, &T_4_2);
                            if (err != ERR_ok) goto ex_0;
                            err = stringOPconcat(T_4_2, STR__137of_137t_137reqs, &T_4_3);
                            if (err != ERR_ok) goto ex_0;
                            aname.num = T_4_3.num;
                            }

  LINE(752);
                            {
                            CLUREF T_4_1;
                            err = g_envOPadd_extern(aname, &T_4_1);
                            if (err != ERR_ok) goto ex_0;
                            if (T_4_1.num == true) {

  LINE(753);
                                {
                                CLUREF T_5_1;
                                CLUREF T_5_2;
                                err = stringOPconcat(STR_extern_040struct_040REQS_040_052, aname, &T_5_1);
                                if (err != ERR_ok) goto ex_0;
                                err = stringOPconcat(T_5_1, STR__073, &T_5_2);
                                if (err != ERR_ok) goto ex_0;
                                err = g_envOPputl(e, T_5_2);
                                if (err != ERR_ok) goto ex_0;
                                }
                                }
                                }/* end if */

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

  LINE(757);
                            {
                            CLUREF T_4_1;
                            CLUREF T_4_2;
                            err = exprOPget_abs(each_expr, &T_4_1);
                            if (err != ERR_ok) goto ex_0;
                            if (T_4_1.cell->tag == 25) T_4_2.num = true; else T_4_2.num = false;
                            if (T_4_2.num == true) {

  LINE(758);
                                {
                                    {CLUREF T_5_1;
                                    CLUREF T_5_2;
                                    err = exprOPget_abs(each_expr, &T_5_1);
                                    if (err != ERR_ok) goto ex_0;
                                    if (T_5_1.cell->tag != 25) {err = ERR_wrong_tag; goto ex_0;}
                                    T_5_2.num = T_5_1.cell->value;
                                    ty.num = T_5_2.num;
                                    }
                                    }

  LINE(759);
                                {
                                CLUREF T_5_1;
                                CLUREF T_5_2;
                                err = typespecOPget_abs(ty, &T_5_1);
                                if (err != ERR_ok) goto ex_0;
                                if (T_5_1.cell->tag == 5) T_5_2.num = true; else T_5_2.num = false;
                                if (T_5_2.num == true) {
                                    {
                                    doit.tf = false;
                                    }
                                    }
                                    }/* end if */
                                }
                                }/* end if */

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

  LINE(762);
                                {
                                CLUREF T_5_1;
                                CLUREF T_5_2;
                                err = s_expr4(each_expr, &T_5_1);
                                if (err != ERR_ok) goto ex_0;
                                err = stringOPconcat(T_5_1, STR__137ops, &T_5_2);
                                if (err != ERR_ok) goto ex_0;
                                aname.num = T_5_2.num;
                                }

  LINE(763);
                                {
                                CLUREF T_5_1;
                                err = g_envOPadd_extern(aname, &T_5_1);
                                if (err != ERR_ok) goto ex_0;
                                if (T_5_1.num == true) {

  LINE(764);
                                    {
                                    CLUREF T_6_1;
                                    CLUREF T_6_2;
                                    err = stringOPconcat(STR_extern_040struct_040OPS_040_052, aname, &T_6_1);
                                    if (err != ERR_ok) goto ex_0;
                                    err = stringOPconcat(T_6_1, STR__073, &T_6_2);
                                    if (err != ERR_ok) goto ex_0;
                                    err = g_envOPputl(e, T_6_2);
                                    if (err != ERR_ok) goto ex_0;
                                    }
                                    }
                                    }/* end if */
                                }
                                }/* end if */
                        }
                    }
                    end_inline_for_2:;

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

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

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

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

  LINE(773);
                            {
                            CLUREF T_5_1;
                            CLUREF T_5_2;
                            CLUREF T_5_3;
                            err = stringOPfetch(tail, CLU_1, &T_5_1);
                            if (err != ERR_ok) goto ex_0;
                            T_5_2.ch = '%';
                            T_5_3.num = (T_5_1.ch == T_5_2.ch)? true : false;
                            if (T_5_3.num == true) {

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

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

  LINE(777);
                    {
                    CLUREF T_3_1;
                    CLUREF T_3_2;
                    CLUREF T_3_3;
                    T_3_1.num = a.vec->data[2];
                    err = s_typespec(T_3_1, &T_3_2);
                    if (err != ERR_ok) goto ex_0;
                    err = stringOPconcat(T_3_2, STR__137ownreqs, &T_3_3);
                    if (err != ERR_ok) goto ex_0;
                    aname.num = T_3_3.num;
                    }

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

  LINE(779);
                        {
                        CLUREF T_4_1;
                        CLUREF T_4_2;
                        err = stringOPconcat(STR_extern_040OWN_137req_040, aname, &T_4_1);
                        if (err != ERR_ok) goto ex_0;
                        err = stringOPconcat(T_4_1, STR__073, &T_4_2);
                        if (err != ERR_ok) goto ex_0;
                        err = g_envOPputl(e, T_4_2);
                        if (err != ERR_ok) goto ex_0;
                        }
                        }
                        }/* end if */

  LINE(782);
                    {
                    CLUREF T_3_1;
                    CLUREF T_3_2;
                    CLUREF T_3_3;
                    T_3_1.num = a.vec->data[2];
                    err = s_typespec(T_3_1, &T_3_2);
                    if (err != ERR_ok) goto ex_0;
                    err = stringOPconcat(T_3_2, STR__137ops, &T_3_3);
                    if (err != ERR_ok) goto ex_0;
                    aname.num = T_3_3.num;
                    }

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

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

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

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

  LINE(789);
                {
                CLUREF T_3_1;
                CLUREF T_3_2;
                T_3_1.num = 621;
                err = compiler_logit(T_3_1, STR_g_137parm_137blocks_040array_040type_040unhandled, &T_3_2);
                if (err != ERR_ok) goto ex_0;
                }

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

  LINE(795);
            {
            aname = STR__137anyize;
            }

  LINE(796);
            {
            CLUREF T_2_1;
            err = g_envOPadd_extern(aname, &T_2_1);
            if (err != ERR_ok) goto ex_0;
            if (T_2_1.num == true) {

  LINE(797);
                {
                CLUREF T_3_1;
                CLUREF T_3_2;
                err = stringOPconcat(STR_errcode_040, aname, &T_3_1);
                if (err != ERR_ok) goto ex_0;
                err = stringOPconcat(T_3_1, STR__050_051_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;
                }
                }
                }/* end if */

  LINE(800);
            {
            aname = STR__137anyize_137of_137t_137reqs;
            }

  LINE(801);
            {
            CLUREF T_2_1;
            err = g_envOPadd_extern(aname, &T_2_1);
            if (err != ERR_ok) goto ex_0;
            if (T_2_1.num == true) {

  LINE(802);
                {
                CLUREF T_3_1;
                CLUREF T_3_2;
                err = stringOPconcat(STR_extern_040struct_040REQS_040_052, aname, &T_3_1);
                if (err != ERR_ok) goto ex_0;
                err = stringOPconcat(T_3_1, STR__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;
                }
                }
                }/* end if */

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

  LINE(806);
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            err = exprOPget_abs(ex, &T_2_1);
            if (err != ERR_ok) goto ex_0;
            if (T_2_1.cell->tag == 25) T_2_2.num = true; else T_2_2.num = false;
            if (T_2_2.num == true) {

  LINE(807);
                {
                    {CLUREF T_3_1;
                    CLUREF T_3_2;
                    err = exprOPget_abs(ex, &T_3_1);
                    if (err != ERR_ok) goto ex_0;
                    if (T_3_1.cell->tag != 25) {err = ERR_wrong_tag; goto ex_0;}
                    T_3_2.num = T_3_1.cell->value;
                    ty.num = T_3_2.num;
                    }
                    }

  LINE(808);
                {
                CLUREF T_3_1;
                CLUREF T_3_2;
                err = typespecOPget_abs(ty, &T_3_1);
                if (err != ERR_ok) goto ex_0;
                if (T_3_1.cell->tag == 5) T_3_2.num = true; else T_3_2.num = false;
                if (T_3_2.num == true) {
                    {
                    doit.tf = false;
                    }
                    }
                    }/* end if */
                }
                }/* end if */

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

  LINE(811);
                {
                CLUREF T_3_1;
                CLUREF T_3_2;
                CLUREF T_3_3;
                err = exprOPget_typespec(ex, &T_3_1);
                if (err != ERR_ok) goto ex_0;
                err = s_name_typespec(T_3_1, &T_3_2);
                if (err != ERR_ok) goto ex_0;
                err = stringOPconcat(T_3_2, STR__137ops, &T_3_3);
                if (err != ERR_ok) goto ex_0;
                aname.num = T_3_3.num;
                }

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

  LINE(813);
                    {
                    CLUREF T_4_1;
                    CLUREF T_4_2;
                    err = stringOPconcat(STR_extern_040struct_040OPS_040_052, aname, &T_4_1);
                    if (err != ERR_ok) goto ex_0;
                    err = stringOPconcat(T_4_1, STR__073, &T_4_2);
                    if (err != ERR_ok) goto ex_0;
                    err = g_envOPputl(e, T_4_2);
                    if (err != ERR_ok) goto ex_0;
                    }
                    }
                    }/* end if */
                }
                }/* end if */

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

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

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

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

  LINE(821);
                    {
                    CLUREF T_4_1;
                    CLUREF T_4_2;
                    CLUREF T_4_3;
                    err = stringOPfetch(tail, CLU_1, &T_4_1);
                    if (err != ERR_ok) goto ex_0;
                    T_4_2.ch = '%';
                    T_4_3.num = (T_4_1.ch == T_4_2.ch)? true : false;
                    if (T_4_3.num == true) {

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

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

  LINE(825);
            {
            aname = STR__137anyize_137ownreqs;
            }

  LINE(826);
            {
            CLUREF T_2_1;
            err = g_envOPadd_extern(aname, &T_2_1);
            if (err != ERR_ok) goto ex_0;
            if (T_2_1.num == true) {

  LINE(827);
                {
                CLUREF T_3_1;
                CLUREF T_3_2;
                err = stringOPconcat(STR_extern_040OWN_137req_040, aname, &T_3_1);
                if (err != ERR_ok) goto ex_0;
                err = stringOPconcat(T_3_1, STR__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;
                }
                }
                }/* end if */

  LINE(830);
            {
            aname = STR__137anyize_137ops;
            }

  LINE(831);
            {
            CLUREF T_2_1;
            err = g_envOPadd_extern(aname, &T_2_1);
            if (err != ERR_ok) goto ex_0;
            if (T_2_1.num == true) {

  LINE(832);
                {
                err = g_envOPputl(e, STR_extern_040struct_040OPS_040_052_137anyize_137ops_073);
                if (err != ERR_ok) goto ex_0;
                }
                }
                }/* end if */
            break;
            }
    case 5: 
         {CLUREF T_1_3;
        T_1_3.num = each_pb.cell->value;
        ty.num = T_1_3.num;

  LINE(837);
            {
            aname = STR_force;
            }

  LINE(838);
            {
            CLUREF T_2_1;
            err = g_envOPadd_extern(aname, &T_2_1);
            if (err != ERR_ok) goto ex_0;
            if (T_2_1.num == true) {

  LINE(839);
                {
                CLUREF T_3_1;
                CLUREF T_3_2;
                err = stringOPconcat(STR_errcode_040, aname, &T_3_1);
                if (err != ERR_ok) goto ex_0;
                err = stringOPconcat(T_3_1, STR__050_051_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;
                }
                }
                }/* end if */

  LINE(842);
            {
            aname = STR__137anyize_137of_137t_137reqs;
            }

  LINE(843);
            {
            CLUREF T_2_1;
            err = g_envOPadd_extern(aname, &T_2_1);
            if (err != ERR_ok) goto ex_0;
            if (T_2_1.num == true) {

  LINE(844);
                {
                CLUREF T_3_1;
                CLUREF T_3_2;
                err = stringOPconcat(STR_extern_040struct_040REQS_040_052, aname, &T_3_1);
                if (err != ERR_ok) goto ex_0;
                err = stringOPconcat(T_3_1, STR__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;
                }
                }
                }/* end if */

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

  LINE(849);
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            err = typespecOPget_abs(ty, &T_2_1);
            if (err != ERR_ok) goto ex_0;
            if (T_2_1.cell->tag == 5) T_2_2.num = true; else T_2_2.num = false;
            if (T_2_2.num == true) {
                {
                doit.tf = false;
                }
                }
                }/* end if */

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

  LINE(852);
                {
                CLUREF T_3_1;
                CLUREF T_3_2;
                err = s_name_typespec(ty, &T_3_1);
                if (err != ERR_ok) goto ex_0;
                err = stringOPconcat(T_3_1, STR__137ops, &T_3_2);
                if (err != ERR_ok) goto ex_0;
                aname.num = T_3_2.num;
                }

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

  LINE(854);
                    {
                    CLUREF T_4_1;
                    CLUREF T_4_2;
                    err = stringOPconcat(STR_extern_040struct_040OPS_040_052, aname, &T_4_1);
                    if (err != ERR_ok) goto ex_0;
                    err = stringOPconcat(T_4_1, STR__073, &T_4_2);
                    if (err != ERR_ok) goto ex_0;
                    err = g_envOPputl(e, T_4_2);
                    if (err != ERR_ok) goto ex_0;
                    }
                    }
                    }/* end if */
                }
                }/* end if */

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

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

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

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

  LINE(862);
                    {
                    CLUREF T_4_1;
                    CLUREF T_4_2;
                    CLUREF T_4_3;
                    err = stringOPfetch(tail, CLU_1, &T_4_1);
                    if (err != ERR_ok) goto ex_0;
                    T_4_2.ch = '%';
                    T_4_3.num = (T_4_1.ch == T_4_2.ch)? true : false;
                    if (T_4_3.num == true) {

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

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

  LINE(866);
            {
            aname = STR__137anyize_137ownreqs;
            }

  LINE(867);
            {
            CLUREF T_2_1;
            err = g_envOPadd_extern(aname, &T_2_1);
            if (err != ERR_ok) goto ex_0;
            if (T_2_1.num == true) {

  LINE(868);
                {
                CLUREF T_3_1;
                CLUREF T_3_2;
                err = stringOPconcat(STR_extern_040OWN_137req_040, aname, &T_3_1);
                if (err != ERR_ok) goto ex_0;
                err = stringOPconcat(T_3_1, STR__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;
                }
                }
                }/* end if */

  LINE(871);
            {
            aname = STR__137anyize_137ops;
            }

  LINE(872);
            {
            CLUREF T_2_1;
            err = g_envOPadd_extern(aname, &T_2_1);
            if (err != ERR_ok) goto ex_0;
            if (T_2_1.num == true) {

  LINE(873);
                {
                err = g_envOPputl(e, STR_extern_040struct_040OPS_040_052_137anyize_137ops_073);
                if (err != ERR_ok) goto ex_0;
                }
                }
                }/* end if */
            break;
            }
    default: {

  LINE(876);
        {
        CLUREF T_2_1;
        CLUREF T_2_2;
        T_2_1.num = 622;
        err = compiler_logit(T_2_1, STR_g_137parm_137blocks_072_040t_057ainfo_0402, &T_2_2);
        if (err != ERR_ok) goto ex_0;
        }
    }
    }
    }
    goto end_0;
    ex_0:
        {
            if (err == ERR_failure) {signal(ERR_failure);}
            elist[0] = _pclu_erstr(err);
            {signal(ERR_failure);}
        }
    end_0: {signal(ERR_ok);}
    }

/**** END PROCEDURE g_parm_extern ****/


extern errcode idnOPsimilar();

/**** BEGIN PROCEDURE is_op_parm ****/

errcode is_op_parm(id, gen, ret_1)
CLUREF id;
CLUREF gen;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
    CLUREF specs;
    CLUREF b;
    CLUREF t;
    CLUREF each_idn;
    enter_proc(883);

  LINE(884);
    {
        {CLUREF T_1_1;
        CLUREF T_1_2;
        err = duOPread_specs(gen, &T_1_1, &T_1_2);
        if (err != ERR_ok) goto ex_0;
        specs.num = T_1_1.num;
        b.num = T_1_2.num;
        }
        }

  LINE(885);
    {
    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(886);
        {
        switch (specs.cell->tag) {
        case 1: 
             {

  LINE(888);
                {
                {
                ret_1->tf = false;
                }
                {signal (ERR_ok);}}
                break;
                }
        case 3: 
             {CLUREF T_2_1;
            T_2_1.num = specs.cell->value;
            t.num = T_2_1.num;

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

  LINE(891);
                        {
                        CLUREF T_4_1;
                        err = idnOPsimilar(id, each_idn, &T_4_1);
                        if (err != ERR_ok) goto ex_0;
                        if (T_4_1.num == true) {

  LINE(892);
                            {
                            {
                            ret_1->tf = false;
                            }
                            {signal (ERR_ok);}}
                            }
                            }/* end if */
                    }
                }
                end_inline_for_1:;

  LINE(894);
                {
                {
                ret_1->tf = true;
                }
                {signal (ERR_ok);}}
                break;
                }
        case 5: 
             {

  LINE(896);
                {
                {
                ret_1->tf = false;
                }
                {signal (ERR_ok);}}
                break;
                }
        case 2: 
             {

  LINE(898);
                {
                {
                ret_1->tf = false;
                }
                {signal (ERR_ok);}}
                break;
                }
        case 4: 
             {

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

  LINE(903);
        {
        {
        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 is_op_parm ****/



/**** BEGIN PROCEDURE is_op_parmd ****/

errcode is_op_parmd(apb, ret_1)
CLUREF apb;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
    CLUREF op;
    CLUREF gen;
    CLUREF specs;
    CLUREF b;
    CLUREF t;
    CLUREF each_op;
    enter_proc(910);

  LINE(911);
    {
        {CLUREF T_1_1;
        CLUREF T_1_2;
        if (apb.cell->tag != 6) {err = ERR_wrong_tag; goto ex_0;}
        T_1_1.num = apb.cell->value;
        T_1_2.num = T_1_1.vec->data[0];
        op.num = T_1_2.num;
        }
        }

  LINE(912);
    {
        {CLUREF T_1_1;
        err = pb_gen(apb, &T_1_1);
        if (err != ERR_ok) goto ex_0;
        gen.num = T_1_1.num;
        }
        }

  LINE(913);
    {
        {CLUREF T_1_1;
        CLUREF T_1_2;
        err = duOPread_specs(gen, &T_1_1, &T_1_2);
        if (err != ERR_ok) goto ex_0;
        specs.num = T_1_1.num;
        b.num = T_1_2.num;
        }
        }

  LINE(914);
    {
    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(915);
        {
        switch (specs.cell->tag) {
        case 1: 
             {

  LINE(917);
                {
                {
                ret_1->tf = false;
                }
                {signal (ERR_ok);}}
                break;
                }
        case 3: 
             {CLUREF T_2_1;
            T_2_1.num = specs.cell->value;
            t.num = T_2_1.num;

  LINE(919);
                {
                CLUREF T_3_1;
                CLUREF T_3_2;
                CLUREF T_3_3;
                err = stringOPfetch(op, CLU_1, &T_3_1);
                if (err != ERR_ok) goto ex_0;
                T_3_2.ch = '%';
                T_3_3.num = (T_3_1.ch == T_3_2.ch)? true : false;
                if (T_3_3.num == true) {
                    {
                    {
                    CLUREF T_4_1;
                    err = is_internal_op_parmd(op, &T_4_1);
                    if (err != ERR_ok) goto ex_0;
                    ret_1->num = T_4_1.num;
                    }
                    {signal (ERR_ok);}}
                    }
                    }/* end if */

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

  LINE(921);
                        {
                        CLUREF T_4_1;
                        CLUREF T_4_2;
                        T_4_1.num = each_op.vec->data[1];
                        T_4_2.num = ((op.str->size != T_4_1.str->size)? false :
                            !(bcmp(op.str->data, T_4_1.str->data, op.str->size)));
                        if (T_4_2.num == true) {

  LINE(922);
                            {
                            CLUREF T_5_1;
                            CLUREF T_5_2;
                            CLUREF T_5_3;
                            CLUREF T_5_4;
                            CLUREF T_5_5;
                            T_5_1.num = each_op.vec->data[0];
                            T_5_2.num = T_5_1.vec->data[0];
                            T_5_3.num = T_5_2.vec->size;
                            T_5_4.num = (T_5_3.num == 0)? true : false;
                            T_5_5.num = T_5_4.num ^ 1;
                            if (T_5_5.num == true) {

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

  LINE(924);
                                {
                                {
                                ret_1->tf = false;
                                }
                                {signal (ERR_ok);}}
                                }}/* end if */
                            }
                            }/* end if */
                    }
                }
                end_inline_for_1:;
                break;
                }
        case 5: 
             {

  LINE(929);
                {
                {
                ret_1->tf = false;
                }
                {signal (ERR_ok);}}
                break;
                }
        case 2: 
             {

  LINE(931);
                {
                {
                ret_1->tf = false;
                }
                {signal (ERR_ok);}}
                break;
                }
        case 4: 
             {

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

  LINE(936);
        {
        {
        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 is_op_parmd ****/


static int is_internal_op_parmd_own_init = 0;

/**** BEGIN PROCEDURE is_internal_op_parmd ****/

errcode is_internal_op_parmd(nm, ret_1)
CLUREF nm;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
    CLUREF ct;
    CLUREF each_app;
        if (is_internal_op_parmd_own_init == 0) {
        stringOPcons("", CLU_1, CLU_0, &STR_);
        is_internal_op_parmd_own_init = 1;
    }
    enter_proc(940);

  LINE(942);
    {
        {CLUREF T_1_1;
        err = current_typeOPget(&T_1_1);
        if (err != ERR_ok) goto ex_0;
        ct.num = T_1_1.num;
        }
        }

  LINE(943);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    CLUREF T_1_3;
    CLUREF T_1_4;
        T_1_1.num = ct.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_app.num = T_1_4.vec->data[T_1_2.num - 1];

  LINE(944);
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            CLUREF T_2_3;
            CLUREF T_2_4;
            CLUREF T_2_5;
            T_2_2.num = each_app.vec->data[4];
            err = idnOPget_str(T_2_2, &T_2_3);
            if (err != ERR_ok) goto ex_0;
            T_2_4.num = ((T_2_3.str->size != nm.str->size)? false :
                !(bcmp(T_2_3.str->data, nm.str->data, T_2_3.str->size)));
            T_2_1.num = T_2_4.num;
            if (!T_2_4.num) {
                T_2_5.num = ((nm.str->size != STR_.str->size)? false :
                    !(bcmp(nm.str->data, STR_.str->data, nm.str->size)));
                T_2_1.num = T_2_5.num;
            }
            if (T_2_1.num == true) {

  LINE(946);
                {
                CLUREF T_3_1;
                CLUREF T_3_2;
                CLUREF T_3_3;
                CLUREF T_3_4;
                T_3_1.num = each_app.vec->data[7];
                T_3_2.num = T_3_1.vec->size;
                T_3_3.num = (T_3_2.num == 0)? true : false;
                T_3_4.num = T_3_3.num ^ 1;
                if (T_3_4.num == true) {

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

  LINE(951);
    {
    {
    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 is_internal_op_parmd ****/


extern errcode parmd_type();
extern errcode intOPunparse();
extern errcode sequenceOPsubseq();
extern errcode s_owns_prefix_exprlist();
extern errcode parmd_dus();
extern errcode g_typespec();
extern errcode g_expr4();
extern errcode g_envOPnewline();
extern errcode sequenceOPfill();
extern errcode g_name_typespec();
extern errcode s_owns_prefix_type();
CLUREF STR_sequence;
CLUREF STR_array;
CLUREF STR_find_137type_137instance_050;
CLUREF STR__137ops_054_040;
CLUREF STR__054_040;
CLUREF STR__046;
CLUREF STR__137ownreqs_054_040;
CLUREF STR__046_050;
CLUREF STR__137ops_051_051_073;
CLUREF STR_find_137typeop_137instance_050;
CLUREF STR_OP;
CLUREF STR_find_137prociter_137instance_050;
CLUREF STR__137ops_054_0401_054_040_046;
CLUREF STR__137ops_051_051_073_040;
CLUREF STR__137anyize_137ops_054_0401_054_040_046_137anyize_137ownreqs_054_040;
CLUREF STR_g_137parm_137blocks_072_040t_057ainfo_0403;
static int g_parm_build_one_own_init = 0;

/**** BEGIN PROCEDURE g_parm_build_one ****/

errcode g_parm_build_one(e, each_pb)
CLUREF e;
CLUREF each_pb;
    {
    errcode err;
    errcode ecode2;
    CLUREF index;
    CLUREF formals;
    CLUREF actuals;
    CLUREF gen;
    CLUREF yes;
    CLUREF ct;
    CLUREF specs;
    CLUREF b;
    CLUREF type_name;
    CLUREF parm_count;
    CLUREF t_actuals;
    CLUREF prefix;
    CLUREF index2;
    CLUREF op_name;
    CLUREF tail;
    CLUREF all_name;
    CLUREF each_expr;
    CLUREF a;
    CLUREF ex;
    CLUREF ty;
        if (g_parm_build_one_own_init == 0) {
        stringOPcons("sequence", CLU_1, CLU_8, &STR_sequence);
        stringOPcons("array", CLU_1, CLU_5, &STR_array);
        stringOPcons("find_type_instance(", CLU_1, CLU_19, &STR_find_137type_137instance_050);
        stringOPcons("_ops, ", CLU_1, CLU_6, &STR__137ops_054_040);
        stringOPcons(", ", CLU_1, CLU_2, &STR__054_040);
        stringOPcons("&", CLU_1, CLU_1, &STR__046);
        stringOPcons("_ownreqs, ", CLU_1, CLU_10, &STR__137ownreqs_054_040);
        stringOPcons("&(", CLU_1, CLU_2, &STR__046_050);
        stringOPcons("_of", CLU_1, CLU_3, &STR__137of);
        stringOPcons("_", CLU_1, CLU_1, &STR__137);
        stringOPcons("_ops));", CLU_1, CLU_7, &STR__137ops_051_051_073);
        stringOPcons("find_typeop_instance(", CLU_1, CLU_21, &STR_find_137typeop_137instance_050);
        stringOPcons("", CLU_1, CLU_0, &STR_);
        stringOPcons("_op_", CLU_1, CLU_4, &STR__137op_137);
        stringOPcons("OP", CLU_1, CLU_2, &STR_OP);
        stringOPcons("find_prociter_instance(", CLU_1, CLU_23, &STR_find_137prociter_137instance_050);
        stringOPcons("_ops, 1, &", CLU_1, CLU_10, &STR__137ops_054_0401_054_040_046);
        stringOPcons("_ops)); ", CLU_1, CLU_8, &STR__137ops_051_051_073_040);
        stringOPcons("g_parm_blocks array type unhandled", CLU_1, CLU_34, &STR_g_137parm_137blocks_040array_040type_040unhandled);
        stringOPcons("_anyize_ops, 1, &_anyize_ownreqs, ", CLU_1, CLU_34, &STR__137anyize_137ops_054_0401_054_040_046_137anyize_137ownreqs_054_040);
        stringOPcons("_anyize_of_", CLU_1, CLU_11, &STR__137anyize_137of_137);
        stringOPcons("g_parm_blocks: t/ainfo 3", CLU_1, CLU_24, &STR_g_137parm_137blocks_072_040t_057ainfo_0403);
        g_parm_build_one_own_init = 1;
    }
    enter_proc(954);

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

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

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

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

  LINE(962);
            {
                {yes.tf = false;
                }
                }

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

  LINE(964);
                {
                    {CLUREF T_3_1;
                    if (each_pb.cell->tag != 4) {err = ERR_wrong_tag; goto ex_0;}
                    T_3_1.num = each_pb.cell->value;
                    ct.num = T_3_1.num;
                    }
                    }

  LINE(965);
                {
                    {CLUREF T_3_1;
                    CLUREF T_3_2;
                    err = duOPread_specs(gen, &T_3_1, &T_3_2);
                    if (err != ERR_ok) goto ex_0;
                    specs.num = T_3_1.num;
                    b.num = T_3_2.num;
                    }
                    }

  LINE(966);
                {
                CLUREF T_3_1;
                CLUREF T_3_2;
                if (specs.cell->tag == 4) T_3_1.num = true; else T_3_1.num = false;
                T_3_2.num = T_3_1.num ^ 1;
                if (T_3_2.num == true) {

  LINE(967);
                    {
                    CLUREF T_4_1;
                    if (specs.cell->tag == 3) T_4_1.num = true; else T_4_1.num = false;
                    if (T_4_1.num == true) {
                        {
                        yes.tf = true;
                        }
                        }
                        }/* end if */
                    }
                else {

  LINE(969);
                    {
                    yes.tf = true;
                    }
                    }}/* end if */
                }
                }/* end if */

  LINE(972);
            {
                {CLUREF T_2_1;
                err = duOPget_common(gen, &T_2_1);
                if (err != ERR_ok) goto ex_0;
                type_name.num = T_2_1.num;
                }
                }

  LINE(973);
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            if (each_pb.cell->tag == 6) T_2_2.num = true; else T_2_2.num = false;
            T_2_1.num = T_2_2.num;
            if (!T_2_2.num) {
                T_2_1.num = yes.num;
            }
            if (T_2_1.num == true) {

  LINE(976);
                {
                CLUREF T_3_1;
                CLUREF T_3_2;
                CLUREF T_3_3;
                CLUREF T_3_4;
                CLUREF T_3_5;
                CLUREF T_3_6;
                CLUREF T_3_7;
                err = parmd_type(gen, &T_3_3);
                if (err != ERR_ok) goto ex_0;
                T_3_2.num = T_3_3.num;
                if (!T_3_3.num) {
                    err = duOPget_common(gen, &T_3_4);
                    if (err != ERR_ok) goto ex_0;
                    T_3_5.num = ((T_3_4.str->size != STR_sequence.str->size)? false :
                        !(bcmp(T_3_4.str->data, STR_sequence.str->data, T_3_4.str->size)));
                    T_3_2.num = T_3_5.num;
                }
                T_3_1.num = T_3_2.num;
                if (!T_3_2.num) {
                    err = duOPget_common(gen, &T_3_6);
                    if (err != ERR_ok) goto ex_0;
                    T_3_7.num = ((T_3_6.str->size != STR_array.str->size)? false :
                        !(bcmp(T_3_6.str->data, STR_array.str->data, T_3_6.str->size)));
                    T_3_1.num = T_3_7.num;
                }
                if (T_3_1.num == true) {

  LINE(981);
                    {
                        {CLUREF T_4_1;
                        err = cluster_parm_count(gen, &T_4_1);
                        if (err != ERR_ok) goto ex_0;
                        parm_count.num = T_4_1.num;
                        }
                        }

  LINE(982);
                    {
                    CLUREF T_4_1;
                    CLUREF T_4_2;
                    CLUREF T_4_3;
                    CLUREF T_4_4;
                    CLUREF T_4_5;
                    err = duOPget_common(gen, &T_4_2);
                    if (err != ERR_ok) goto ex_0;
                    T_4_3.num = ((T_4_2.str->size != STR_sequence.str->size)? false :
                        !(bcmp(T_4_2.str->data, STR_sequence.str->data, T_4_2.str->size)));
                    T_4_1.num = T_4_3.num;
                    if (!T_4_3.num) {
                        err = duOPget_common(gen, &T_4_4);
                        if (err != ERR_ok) goto ex_0;
                        T_4_5.num = ((T_4_4.str->size != STR_array.str->size)? false :
                            !(bcmp(T_4_4.str->data, STR_array.str->data, T_4_4.str->size)));
                        T_4_1.num = T_4_5.num;
                    }
                    if (T_4_1.num == true) {

  LINE(983);
                        {
                        parm_count.num = 1;
                        }
                        }
                        }/* end if */

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

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

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

  LINE(993);
                    {
                    CLUREF T_4_1;
                    CLUREF T_4_2;
                    err = intOPunparse(parm_count, &T_4_1);
                    if (err != ERR_ok) goto ex_0;
                    err = stringOPconcat(T_4_1, STR__054_040, &T_4_2);
                    if (err != ERR_ok) goto ex_0;
                    err = g_envOPputs(e, T_4_2);
                    if (err != ERR_ok) goto ex_0;
                    }

  LINE(996);
                    {
                    CLUREF T_4_1;
                    CLUREF T_4_2;
                    err = stringOPconcat(STR__046, type_name, &T_4_1);
                    if (err != ERR_ok) goto ex_0;
                    err = stringOPconcat(T_4_1, STR__137ownreqs_054_040, &T_4_2);
                    if (err != ERR_ok) goto ex_0;
                    err = g_envOPputs(e, T_4_2);
                    if (err != ERR_ok) goto ex_0;
                    }

  LINE(999);
                    {
                        {CLUREF T_4_1;
                        err = sequenceOPsubseq(actuals, CLU_1, parm_count, &T_4_1);
                        if (err != ERR_ok) goto ex_0;
                        t_actuals.num = T_4_1.num;
                        }
                        }

  LINE(1000);
                    {
                        {CLUREF T_4_1;
                        err = s_owns_prefix_exprlist(t_actuals, &T_4_1);
                        if (err != ERR_ok) goto ex_0;
                        prefix.num = T_4_1.num;
                        }
                        }

  LINE(1001);
                    {
                    CLUREF T_4_1;
                    CLUREF T_4_2;
                    CLUREF T_4_3;
                    err = stringOPconcat(STR__046_050, prefix, &T_4_1);
                    if (err != ERR_ok) goto ex_0;
                    err = stringOPconcat(T_4_1, type_name, &T_4_2);
                    if (err != ERR_ok) goto ex_0;
                    err = stringOPconcat(T_4_2, STR__137of, &T_4_3);
                    if (err != ERR_ok) goto ex_0;
                    err = g_envOPputs(e, T_4_3);
                    if (err != ERR_ok) goto ex_0;
                    }

  LINE(1002);
                    {
                    CLUREF T_4_1;
                    CLUREF T_4_2;
                        T_4_2.num = parm_count.num;
                        for (T_4_1.num = 1; T_4_1.num <= T_4_2.num; T_4_1.num++) {
                            index2.num = T_4_1.num;

  LINE(1003);
                            {
                            CLUREF T_5_1;
                            CLUREF T_5_2;
                            CLUREF T_5_3;
                            if (index2.num < 1 || index2.num > actuals.vec->size ) {
                                err = ERR_bounds;
                                goto ex_0;}
                            T_5_1.num = actuals.vec->data[index2.num - 1];
                            err = s_expr4(T_5_1, &T_5_2);
                            if (err != ERR_ok) goto ex_0;
                            err = stringOPconcat(STR__137, T_5_2, &T_5_3);
                            if (err != ERR_ok) goto ex_0;
                            err = g_envOPputs(e, T_5_3);
                            if (err != ERR_ok) goto ex_0;
                            }
                        }
                    }
                    end_inline_for_1:;

  LINE(1005);
                    {
                    err = g_envOPputl(e, STR__137ops_051_051_073);
                    if (err != ERR_ok) goto ex_0;
                    }
                    }
                else {
                    }}/* end if */

  LINE(1009);
                {
                CLUREF T_3_1;
                CLUREF T_3_2;
                CLUREF T_3_3;
                if (each_pb.cell->tag == 6) T_3_2.num = true; else T_3_2.num = false;
                T_3_1.num = T_3_2.num;
                if (T_3_2.num) {
                    err = is_op_parmd(each_pb, &T_3_3);
                    if (err != ERR_ok) goto ex_0;
                    T_3_1.num = T_3_3.num;
                }
                if (T_3_1.num == true) {

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

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

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

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

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

  LINE(1020);
                    {
                    CLUREF T_4_1;
                    CLUREF T_4_2;
                    CLUREF T_4_3;
                    err = stringOPfetch(tail, CLU_1, &T_4_1);
                    if (err != ERR_ok) goto ex_0;
                    T_4_2.ch = '%';
                    T_4_3.num = (T_4_1.ch == T_4_2.ch)? true : false;
                    if (T_4_3.num == true) {

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

  LINE(1022);
                    {
                    CLUREF T_4_1;
                    err = stringOPconcat(STR__137op_137, tail, &T_4_1);
                    if (err != ERR_ok) goto ex_0;
                    op_name.num = T_4_1.num;
                    }

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

  LINE(1026);
                    {
                    CLUREF T_4_1;
                    CLUREF T_4_2;
                    CLUREF T_4_3;
                    CLUREF T_4_4;
                    err = duOPget_common(gen, &T_4_1);
                    if (err != ERR_ok) goto ex_0;
                    err = stringOPconcat(T_4_1, STR_OP, &T_4_2);
                    if (err != ERR_ok) goto ex_0;
                    err = stringOPconcat(T_4_2, tail, &T_4_3);
                    if (err != ERR_ok) goto ex_0;
                    err = stringOPconcat(T_4_3, STR__054_040, &T_4_4);
                    if (err != ERR_ok) goto ex_0;
                    err = g_envOPputs(e, T_4_4);
                    if (err != ERR_ok) goto ex_0;
                    }

  LINE(1029);
                    {
                    CLUREF T_4_1;
                    CLUREF T_4_2;
                    CLUREF T_4_3;
                    T_4_1.num = actuals.vec->size;
                    err = intOPunparse(T_4_1, &T_4_2);
                    if (err != ERR_ok) goto ex_0;
                    err = stringOPconcat(T_4_2, STR__054_040, &T_4_3);
                    if (err != ERR_ok) goto ex_0;
                    err = g_envOPputs(e, T_4_3);
                    if (err != ERR_ok) goto ex_0;
                    }

  LINE(1030);
                    {
                    CLUREF T_4_1;
                    CLUREF T_4_2;
                    CLUREF T_4_3;
                    err = cluster_parm_count(gen, &T_4_1);
                    if (err != ERR_ok) goto ex_0;
                    err = intOPunparse(T_4_1, &T_4_2);
                    if (err != ERR_ok) goto ex_0;
                    err = stringOPconcat(T_4_2, STR__054_040, &T_4_3);
                    if (err != ERR_ok) goto ex_0;
                    err = g_envOPputs(e, T_4_3);
                    if (err != ERR_ok) goto ex_0;
                    }

  LINE(1033);
                    {
                    CLUREF T_4_1;
                    CLUREF T_4_2;
                    err = stringOPconcat(STR__046, all_name, &T_4_1);
                    if (err != ERR_ok) goto ex_0;
                    err = stringOPconcat(T_4_1, STR__137ownreqs_054_040, &T_4_2);
                    if (err != ERR_ok) goto ex_0;
                    err = g_envOPputs(e, T_4_2);
                    if (err != ERR_ok) goto ex_0;
                    }

  LINE(1036);
                    {
                    CLUREF T_4_1;
                    CLUREF T_4_2;
                    err = stringOPconcat(STR__046, type_name, &T_4_1);
                    if (err != ERR_ok) goto ex_0;
                    err = stringOPconcat(T_4_1, STR__137ownreqs_054_040, &T_4_2);
                    if (err != ERR_ok) goto ex_0;
                    err = g_envOPputs(e, T_4_2);
                    if (err != ERR_ok) goto ex_0;
                    }

  LINE(1042);
                    {
                        {CLUREF T_4_1;
                        err = s_owns_prefix_exprlist(actuals, &T_4_1);
                        if (err != ERR_ok) goto ex_0;
                        prefix.num = T_4_1.num;
                        }
                        }

  LINE(1043);
                    {
                    CLUREF T_4_1;
                    CLUREF T_4_2;
                    CLUREF T_4_3;
                    err = stringOPconcat(STR__046_050, prefix, &T_4_1);
                    if (err != ERR_ok) goto ex_0;
                    err = stringOPconcat(T_4_1, all_name, &T_4_2);
                    if (err != ERR_ok) goto ex_0;
                    err = stringOPconcat(T_4_2, STR__137of, &T_4_3);
                    if (err != ERR_ok) goto ex_0;
                    err = g_envOPputs(e, T_4_3);
                    if (err != ERR_ok) goto ex_0;
                    }

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

  LINE(1045);
                            {
                            CLUREF T_5_1;
                            CLUREF T_5_2;
                            err = s_expr4(each_expr, &T_5_1);
                            if (err != ERR_ok) goto ex_0;
                            err = stringOPconcat(STR__137, T_5_1, &T_5_2);
                            if (err != ERR_ok) goto ex_0;
                            err = g_envOPputs(e, T_5_2);
                            if (err != ERR_ok) goto ex_0;
                            }
                        }
                    }
                    end_inline_for_2:;

  LINE(1047);
                    {
                    err = g_envOPputl(e, STR__137ops_051_051_073);
                    if (err != ERR_ok) goto ex_0;
                    }
                    }
                    }/* end if */
                }
            else {
            CLUREF T_2_3;
            if (each_pb.cell->tag == 4) T_2_3.num = true; else T_2_3.num = false;
            if (T_2_3.num == true) {

  LINE(1051);
                {
                CLUREF T_3_1;
                err = parmd_dus(gen, &T_3_1);
                if (err != ERR_ok) goto ex_0;
                if (T_3_1.num == true) {

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

  LINE(1056);
                    {
                    CLUREF T_4_1;
                    CLUREF T_4_2;
                    err = duOPget_common(gen, &T_4_1);
                    if (err != ERR_ok) goto ex_0;
                    err = stringOPconcat(T_4_1, STR__054_040, &T_4_2);
                    if (err != ERR_ok) goto ex_0;
                    err = g_envOPputs(e, T_4_2);
                    if (err != ERR_ok) goto ex_0;
                    }

  LINE(1059);
                    {
                    CLUREF T_4_1;
                    CLUREF T_4_2;
                    CLUREF T_4_3;
                    err = cluster_parm_count(gen, &T_4_1);
                    if (err != ERR_ok) goto ex_0;
                    err = intOPunparse(T_4_1, &T_4_2);
                    if (err != ERR_ok) goto ex_0;
                    err = stringOPconcat(T_4_2, STR__054_040, &T_4_3);
                    if (err != ERR_ok) goto ex_0;
                    err = g_envOPputs(e, T_4_3);
                    if (err != ERR_ok) goto ex_0;
                    }

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

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

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

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

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

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

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

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

  LINE(1073);
                    {
                    CLUREF T_4_1;
                    CLUREF T_4_2;
                    err = stringOPconcat(STR__046, all_name, &T_4_1);
                    if (err != ERR_ok) goto ex_0;
                    err = stringOPconcat(T_4_1, STR__137ownreqs_054_040, &T_4_2);
                    if (err != ERR_ok) goto ex_0;
                    err = g_envOPputs(e, T_4_2);
                    if (err != ERR_ok) goto ex_0;
                    }

  LINE(1076);
                    {
                        {CLUREF T_4_1;
                        err = s_owns_prefix_exprlist(actuals, &T_4_1);
                        if (err != ERR_ok) goto ex_0;
                        prefix.num = T_4_1.num;
                        }
                        }

  LINE(1077);
                    {
                    CLUREF T_4_1;
                    CLUREF T_4_2;
                    CLUREF T_4_3;
                    err = stringOPconcat(STR__046_050, prefix, &T_4_1);
                    if (err != ERR_ok) goto ex_0;
                    err = stringOPconcat(T_4_1, all_name, &T_4_2);
                    if (err != ERR_ok) goto ex_0;
                    err = stringOPconcat(T_4_2, STR__137of, &T_4_3);
                    if (err != ERR_ok) goto ex_0;
                    err = g_envOPputs(e, T_4_3);
                    if (err != ERR_ok) goto ex_0;
                    }

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

  LINE(1079);
                            {
                            CLUREF T_5_1;
                            CLUREF T_5_2;
                            err = s_expr4(each_expr, &T_5_1);
                            if (err != ERR_ok) goto ex_0;
                            err = stringOPconcat(STR__137, T_5_1, &T_5_2);
                            if (err != ERR_ok) goto ex_0;
                            err = g_envOPputs(e, T_5_2);
                            if (err != ERR_ok) goto ex_0;
                            }
                        }
                    }
                    end_inline_for_3:;

  LINE(1081);
                    {
                    err = g_envOPputl(e, STR__137ops_051_051_073);
                    if (err != ERR_ok) goto ex_0;
                    }
                    }
                    }/* end if */
                }
                }}/* end if */
            break;
            }
    case 1: 
         {CLUREF T_1_1;
        T_1_1.num = each_pb.cell->value;
        a.num = T_1_1.num;

  LINE(1086);
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            T_2_1.num = a.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(1090);
                    {
                    err = g_envOPputs(e, STR_find_137type_137instance_050);
                    if (err != ERR_ok) goto ex_0;
                    }

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

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

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

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

  LINE(1099);
                    {
                        {CLUREF T_3_1;
                        CLUREF T_3_2;
                        T_3_1.num = ct.vec->data[1];
                        err = s_owns_prefix_exprlist(T_3_1, &T_3_2);
                        if (err != ERR_ok) goto ex_0;
                        prefix.num = T_3_2.num;
                        }
                        }

  LINE(1100);
                    {
                    CLUREF T_3_1;
                    err = stringOPconcat(STR__046_050, prefix, &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(1101);
                    {
                    CLUREF T_3_1;
                    T_3_1.num = a.vec->data[2];
                    err = g_typespec(e, T_3_1);
                    if (err != ERR_ok) goto ex_0;
                    }

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

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

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

  LINE(1105);
                            {
                            err = g_expr4(e, each_expr);
                            if (err != ERR_ok) goto ex_0;
                            }
                        }
                    }
                    end_inline_for_4:;

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

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

  LINE(1110);
                {
                CLUREF T_3_1;
                CLUREF T_3_2;
                T_3_1.num = 623;
                err = compiler_logit(T_3_1, STR_g_137parm_137blocks_040array_040type_040unhandled, &T_3_2);
                if (err != ERR_ok) goto ex_0;
                }

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

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

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

  LINE(1121);
            {
                {CLUREF T_2_1;
                CLUREF T_2_2;
                err = sequenceOPfill(CLU_1, ex, &T_2_1);
                if (err != ERR_ok) goto ex_0;
                err = s_owns_prefix_exprlist(T_2_1, &T_2_2);
                if (err != ERR_ok) goto ex_0;
                prefix.num = T_2_2.num;
                }
                }

  LINE(1122);
            {
            CLUREF T_2_1;
            err = stringOPconcat(STR__046_050, prefix, &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(1123);
            {
            err = g_envOPputs(e, STR__137anyize_137of_137);
            if (err != ERR_ok) goto ex_0;
            }

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

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

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

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

  LINE(1135);
            {
                {CLUREF T_2_1;
                err = s_owns_prefix_type(ty, &T_2_1);
                if (err != ERR_ok) goto ex_0;
                prefix.num = T_2_1.num;
                }
                }

  LINE(1136);
            {
            CLUREF T_2_1;
            err = stringOPconcat(STR__046_050, prefix, &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(1137);
            {
            err = g_envOPputs(e, STR__137anyize_137of_137);
            if (err != ERR_ok) goto ex_0;
            }

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

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

  LINE(1141);
        {
        CLUREF T_2_1;
        CLUREF T_2_2;
        T_2_1.num = 624;
        err = compiler_logit(T_2_1, STR_g_137parm_137blocks_072_040t_057ainfo_0403, &T_2_2);
        if (err != ERR_ok) goto ex_0;
        }
    }
    }
    }
    goto end_0;
    ex_0:
        {
            if (err == ERR_failure) {signal(ERR_failure);}
            elist[0] = _pclu_erstr(err);
            {signal(ERR_failure);}
        }
    end_0: {signal(ERR_ok);}
    }

/**** END PROCEDURE g_parm_build_one ****/


static int parm_elements_own_init = 0;

/**** BEGIN ITERATOR parm_elements ****/

errcode parm_elements(gen, proc, user_locals, iecode)
CLUREF gen;
errcode (*proc)();
char **user_locals;
errcode *iecode;
    {
    errcode ecode;
    errcode err;
    errcode ecode2;
    bool body_ctrl_req;
    CLUREF specs;
    CLUREF b;
    CLUREF a;
    CLUREF each_idn;
    CLUREF t;
    CLUREF each_oper;
    CLUREF each_ts;
        if (parm_elements_own_init == 0) {
        stringOPcons("apply:DUspecs say none", CLU_1, CLU_22, &STR_apply_072DUspecs_040say_040none);
        parm_elements_own_init = 1;
    }
    enter_proc(1145);

  LINE(1146);
    {
        {CLUREF T_1_1;
        CLUREF T_1_2;
        err = duOPread_specs(gen, &T_1_1, &T_1_2);
        if (err != ERR_ok) goto ex_0;
        specs.num = T_1_1.num;
        b.num = T_1_2.num;
        }
        }

  LINE(1147);
    {
    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(1148);
        {
        switch (specs.cell->tag) {
        case 1: 
             {CLUREF T_2_1;
            T_2_1.num = specs.cell->value;
            a.num = T_2_1.num;

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

  LINE(1151);
                        {
                        err = proc(each_idn, user_locals, iecode);
                        if (err != ERR_ok) {
                        if (err == ERR_break) {signal(ERR_break);}
                        if (err == ERR_iterbodyreturn) {signal(ERR_iterbodyreturn);}
                        if (err == ERR_iterbodyexit) {signal(ERR_iterbodyexit);}
                        if (err == ERR_iterbodysignal) {signal(ERR_iterbodysignal);}
                        {signal(err);
                            }}
                        }
                    }
                }
                end_inline_for_1:;
                break;
                }
        case 3: 
             {CLUREF T_2_2;
            T_2_2.num = specs.cell->value;
            t.num = T_2_2.num;

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

  LINE(1155);
                        {
                        err = proc(each_idn, user_locals, iecode);
                        if (err != ERR_ok) {
                        if (err == ERR_break) {signal(ERR_break);}
                        if (err == ERR_iterbodyreturn) {signal(ERR_iterbodyreturn);}
                        if (err == ERR_iterbodyexit) {signal(ERR_iterbodyexit);}
                        if (err == ERR_iterbodysignal) {signal(ERR_iterbodysignal);}
                        {signal(err);
                            }}
                        }
                    }
                }
                end_inline_for_2:;

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

  LINE(1158);
                        {
                        CLUREF T_4_1;
                        CLUREF T_4_2;
                        CLUREF T_4_3;
                        CLUREF T_4_4;
                            T_4_1.num = each_oper.vec->data[2];
                            T_4_3.num = T_4_1.vec->size; 
                            T_4_4 = T_4_1;
                            for (T_4_2.num = 1; T_4_2.num <= T_4_3.num; T_4_2.num++) {
                                each_ts.num = T_4_4.vec->data[T_4_2.num - 1];

  LINE(1160);
                                {
                                CLUREF T_5_1;
                                T_5_1.num = each_ts.vec->data[1];
                                err = proc(T_5_1, user_locals, iecode);
                                if (err != ERR_ok) {
                                if (err == ERR_break) {signal(ERR_break);}
                                if (err == ERR_iterbodyreturn) {signal(ERR_iterbodyreturn);}
                                if (err == ERR_iterbodyexit) {signal(ERR_iterbodyexit);}
                                if (err == ERR_iterbodysignal) {signal(ERR_iterbodysignal);}
                                {signal(err);
                                    }}
                                }
                            }
                        }
                        end_inline_for_4:;
                    }
                }
                end_inline_for_3:;
                break;
                }
        case 5: 
             {CLUREF T_2_3;
            T_2_3.num = specs.cell->value;
            t.num = T_2_3.num;

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

  LINE(1165);
                        {
                        err = proc(each_idn, user_locals, iecode);
                        if (err != ERR_ok) {
                        if (err == ERR_break) {signal(ERR_break);}
                        if (err == ERR_iterbodyreturn) {signal(ERR_iterbodyreturn);}
                        if (err == ERR_iterbodyexit) {signal(ERR_iterbodyexit);}
                        if (err == ERR_iterbodysignal) {signal(ERR_iterbodysignal);}
                        {signal(err);
                            }}
                        }
                    }
                }
                end_inline_for_5:;

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

  LINE(1168);
                        {
                        CLUREF T_4_1;
                        CLUREF T_4_2;
                        CLUREF T_4_3;
                        CLUREF T_4_4;
                            T_4_1.num = each_oper.vec->data[2];
                            T_4_3.num = T_4_1.vec->size; 
                            T_4_4 = T_4_1;
                            for (T_4_2.num = 1; T_4_2.num <= T_4_3.num; T_4_2.num++) {
                                each_ts.num = T_4_4.vec->data[T_4_2.num - 1];

  LINE(1170);
                                {
                                CLUREF T_5_1;
                                T_5_1.num = each_ts.vec->data[1];
                                err = proc(T_5_1, user_locals, iecode);
                                if (err != ERR_ok) {
                                if (err == ERR_break) {signal(ERR_break);}
                                if (err == ERR_iterbodyreturn) {signal(ERR_iterbodyreturn);}
                                if (err == ERR_iterbodyexit) {signal(ERR_iterbodyexit);}
                                if (err == ERR_iterbodysignal) {signal(ERR_iterbodysignal);}
                                {signal(err);
                                    }}
                                }
                            }
                        }
                        end_inline_for_7:;
                    }
                }
                end_inline_for_6:;
                break;
                }
        case 2: 
             {CLUREF T_2_4;
            T_2_4.num = specs.cell->value;
            t.num = T_2_4.num;

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

  LINE(1175);
                        {
                        err = proc(each_idn, user_locals, iecode);
                        if (err != ERR_ok) {
                        if (err == ERR_break) {signal(ERR_break);}
                        if (err == ERR_iterbodyreturn) {signal(ERR_iterbodyreturn);}
                        if (err == ERR_iterbodyexit) {signal(ERR_iterbodyexit);}
                        if (err == ERR_iterbodysignal) {signal(ERR_iterbodysignal);}
                        {signal(err);
                            }}
                        }
                    }
                }
                end_inline_for_8:;

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

  LINE(1178);
                        {
                        CLUREF T_4_1;
                        CLUREF T_4_2;
                        CLUREF T_4_3;
                        CLUREF T_4_4;
                            T_4_1.num = each_oper.vec->data[2];
                            T_4_3.num = T_4_1.vec->size; 
                            T_4_4 = T_4_1;
                            for (T_4_2.num = 1; T_4_2.num <= T_4_3.num; T_4_2.num++) {
                                each_ts.num = T_4_4.vec->data[T_4_2.num - 1];

  LINE(1180);
                                {
                                CLUREF T_5_1;
                                T_5_1.num = each_ts.vec->data[1];
                                err = proc(T_5_1, user_locals, iecode);
                                if (err != ERR_ok) {
                                if (err == ERR_break) {signal(ERR_break);}
                                if (err == ERR_iterbodyreturn) {signal(ERR_iterbodyreturn);}
                                if (err == ERR_iterbodyexit) {signal(ERR_iterbodyexit);}
                                if (err == ERR_iterbodysignal) {signal(ERR_iterbodysignal);}
                                {signal(err);
                                    }}
                                }
                            }
                        }
                        end_inline_for_10:;
                    }
                }
                end_inline_for_9:;
                break;
                }
        default: {

  LINE(1184);
            {
            CLUREF T_3_1;
            CLUREF T_3_2;
            T_3_1.num = 625;
            err = compiler_logit(T_3_1, STR_apply_072DUspecs_040say_040none, &T_3_2);
            if (err != ERR_ok) goto ex_0;
            }
        }
        }
        }
        }
        }/* end if */
    goto end_0;
    ex_0:
        {
            if (err == ERR_failure) {signal(ERR_failure);}
            elist[0] = _pclu_erstr(err);
            {signal(ERR_failure);}
        }
    end_0: {signal(ERR_ok);}
    }

/**** END ITERATOR parm_elements ****/


/**** BEGIN CLUSTER parm ****/

extern errcode arrayOPnew();
extern errcode arrayOPaddh();
extern errcode arrayOPelements();
extern errcode stringOPsimilar();
static int parm_own_init = 0;
OWN_req parm_ownreqs = {0,0};
CLUREF parmOPap;
CLUREF parmOPap_base;
CLUREF parmOPap_base_decl;
errcode parm_own_init_proc()
{
    errcode err;
    enter_own_init_proc();
        if (parm_own_init == 0) {
        parm_own_init = 1;
        {
            {CLUREF T_0_1;
            err = arrayOPnew(&T_0_1);
            if (err != ERR_ok) goto ex_0;
            parmOPap.num = T_0_1.num;
            }
            }
        {
            {CLUREF T_0_2;
            err = arrayOPnew(&T_0_2);
            if (err != ERR_ok) goto ex_0;
            parmOPap_base.num = T_0_2.num;
            }
            }
        {
            {CLUREF T_0_3;
            err = sequenceOPnew(&T_0_3);
            if (err != ERR_ok) goto ex_0;
            parmOPap_base_decl.num = T_0_3.num;
            }
            }
        {signal(ERR_ok);}
    ex_0: pclu_unhandled(err); {signal(ERR_failure);}
        }
    }


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

errcode parmOPenter(d)
CLUREF d;
    {
    errcode err;
    errcode ecode2;
    CLUREF each_d;
    CLUREF each_idn;
        if (parm_own_init == 0) {
            err = parm_own_init_proc();
            if (err != ERR_ok) goto ex_0;
            }
    enter_proc(1210);

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

  LINE(1212);
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            CLUREF T_2_3;
            CLUREF T_2_4;
                T_2_1.num = each_d.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_idn.num = T_2_4.vec->data[T_2_2.num - 1];

  LINE(1213);
                    {
                    {
                    if ((parmOPap.array->int_low + parmOPap.array->ext_size + 1) < parmOPap.array->int_size) {
                        parmOPap.array->store->data[parmOPap.array->int_low + parmOPap.array->ext_size] = each_idn.num;
                        parmOPap.array->ext_size++; parmOPap.array->ext_high++;}
                    else {
                        err = arrayOPaddh(parmOPap, each_idn);
                        if (err != ERR_ok) goto ex_0;}
                    }
                    }
                }
            }
            end_inline_for_2:;
        }
    }
    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 enter ****/


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

errcode parmOPleave()
    {
    errcode err;
    errcode ecode2;
        if (parm_own_init == 0) {
            err = parm_own_init_proc();
            if (err != ERR_ok) goto ex_0;
            }
    enter_proc(1218);

  LINE(1219);
    {
    CLUREF T_1_1;
    err = arrayOPnew(&T_1_1);
    if (err != ERR_ok) goto ex_0;
    parmOPap.num = T_1_1.num;
    }
    goto end_0;
    ex_0:
        {
            if (err == ERR_failure) {signal(ERR_failure);}
            elist[0] = _pclu_erstr(err);
            {signal(ERR_failure);}
        }
    end_0: {signal(ERR_ok);}
    }

/**** END PROCEDURE leave ****/


/**** BEGIN PROCEDURE enter_base ****/

errcode parmOPenter_base(d)
CLUREF d;
    {
    errcode err;
    errcode ecode2;
    CLUREF each_d;
    CLUREF each_idn;
        if (parm_own_init == 0) {
            err = parm_own_init_proc();
            if (err != ERR_ok) goto ex_0;
            }
    enter_proc(1222);

  LINE(1223);
    {
    parmOPap_base_decl.num = d.num;
    }

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

  LINE(1225);
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            CLUREF T_2_3;
            CLUREF T_2_4;
                T_2_1.num = each_d.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_idn.num = T_2_4.vec->data[T_2_2.num - 1];

  LINE(1226);
                    {
                    {
                    if ((parmOPap_base.array->int_low + parmOPap_base.array->ext_size + 1) < parmOPap_base.array->int_size) {
                        parmOPap_base.array->store->data[parmOPap_base.array->int_low + parmOPap_base.array->ext_size] = each_idn.num;
                        parmOPap_base.array->ext_size++; parmOPap_base.array->ext_high++;}
                    else {
                        err = arrayOPaddh(parmOPap_base, each_idn);
                        if (err != ERR_ok) goto ex_0;}
                    }
                    }
                }
            }
            end_inline_for_2:;
        }
    }
    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 enter_base ****/


/**** BEGIN PROCEDURE leave_base ****/

errcode parmOPleave_base()
    {
    errcode err;
    errcode ecode2;
        if (parm_own_init == 0) {
            err = parm_own_init_proc();
            if (err != ERR_ok) goto ex_0;
            }
    enter_proc(1231);

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

  LINE(1233);
    {
    CLUREF T_1_1;
    err = sequenceOPnew(&T_1_1);
    if (err != ERR_ok) goto ex_0;
    parmOPap_base_decl.num = T_1_1.num;
    }
    goto end_0;
    ex_0:
        {
            if (err == ERR_failure) {signal(ERR_failure);}
            elist[0] = _pclu_erstr(err);
            {signal(ERR_failure);}
        }
    end_0: {signal(ERR_ok);}
    }

/**** END PROCEDURE leave_base ****/


/**** BEGIN PROCEDURE get_base ****/

errcode parmOPget_base(ret_1)
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
        if (parm_own_init == 0) {
            err = parm_own_init_proc();
            if (err != ERR_ok) goto ex_0;
            }
    enter_proc(1236);

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

/**** END PROCEDURE get_base ****/


/**** BEGIN PROCEDURE member ****/

errcode parmOPmember(t, ret_1)
CLUREF t;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
    CLUREF i;
    CLUREF each_parm;
        if (parm_own_init == 0) {
            err = parm_own_init_proc();
            if (err != ERR_ok) goto ex_0;
            }
    enter_proc(1240);

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

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

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

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

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

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

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

  LINE(1252);
        {
        {
        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 member ****/


/**** BEGIN PROCEDURE member_base ****/

errcode parmOPmember_base(s, ret_1)
CLUREF s;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
    CLUREF each_parm;
        if (parm_own_init == 0) {
            err = parm_own_init_proc();
            if (err != ERR_ok) goto ex_0;
            }
    enter_proc(1256);

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

  LINE(1259);
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            err = idnOPget_str(each_parm, &T_2_1);
            if (err != ERR_ok) goto ex_0;
            err = stringOPsimilar(s, T_2_1, &T_2_2);
            if (err != ERR_ok) goto ex_0;
            if (T_2_2.num == true) {

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

  LINE(1265);
    {
    {
    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 member_base ****/


/**** BEGIN PROCEDURE member_op ****/

errcode parmOPmember_op(s, ret_1)
CLUREF s;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
    CLUREF each_parm;
        if (parm_own_init == 0) {
            err = parm_own_init_proc();
            if (err != ERR_ok) goto ex_0;
            }
    enter_proc(1268);

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

  LINE(1272);
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            err = idnOPget_str(each_parm, &T_2_1);
            if (err != ERR_ok) goto ex_0;
            err = stringOPsimilar(s, T_2_1, &T_2_2);
            if (err != ERR_ok) goto ex_0;
            if (T_2_2.num == true) {

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

  LINE(1278);
    {
    {
    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 member_op ****/

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

CLU_proc parm_oe_enter = {{0,0,0,0}, parmOPenter, 0};
CLU_proc parm_oe_enter_base = {{0,0,0,0}, parmOPenter_base, 0};
CLU_proc parm_oe_get_base = {{0,0,0,0}, parmOPget_base, 0};
CLU_proc parm_oe_leave = {{0,0,0,0}, parmOPleave, 0};
CLU_proc parm_oe_leave_base = {{0,0,0,0}, parmOPleave_base, 0};
CLU_proc parm_oe_member = {{0,0,0,0}, parmOPmember, 0};
CLU_proc parm_oe_member_base = {{0,0,0,0}, parmOPmember_base, 0};
CLU_proc parm_oe_member_op = {{0,0,0,0}, parmOPmember_op, 0};

parm_OPS parm_ops_actual = {8, (OWNPTR)&parm_own_init, (OWNPTR)&parm_own_init, {
    {&parm_oe_enter, "enter"},
    {&parm_oe_enter_base, "enter_base"},
    {&parm_oe_get_base, "get_base"},
    {&parm_oe_leave, "leave"},
    {&parm_oe_leave_base, "leave_base"},
    {&parm_oe_member, "member"},
    {&parm_oe_member_base, "member_base"},
    {&parm_oe_member_op, "member_op"}}};

struct OPS *parm_ops = (struct OPS *)&parm_ops_actual;

/**** END CLUSTER parm ****/

/**** BEGIN CLUSTER reqs ****/

extern errcode reqsOPextend();
extern errcode reqsOPoutput_no_ops();
extern errcode reqsOPoutput();
extern errcode reqsOPop_parm();
extern errcode arrayOPindexes();
extern errcode arrayOPfetch();
extern errcode sequenceOPbottom();
extern errcode restrictkind_similar();
extern errcode recordOPset_2();
extern errcode sequenceOPaddh();
extern errcode current_applyOPget();
extern errcode reqsOPfind_parms();
extern errcode g_envOPadd_global();
extern errcode reqsOPops_uniq();
extern errcode reqsOPoutput_reqs();
extern errcode reqsOPoutput_ops_def();
extern errcode recordOPsimilar();
extern errcode g_envOPblankline();
extern errcode g_envOPindent();
extern errcode g_envOPoutdent();
extern errcode idnOPequal();
extern struct REQS *sequence_of_t_reqs;
extern OWN_req sequence_ownreqs;
extern struct OPS *sequence_ops;
struct OPS *sequence_of_expr_table;
struct OPS *sequence_of_expr_ops;
struct OPS *sequence_of_expr_ops;
OWNPTR sequence_of_expr_owns;
extern struct OPS *string_ops;
extern struct OPS *sequence_of_expr_ops;
extern struct OPS *typespec_ops;
struct OPS  *record_name_parms_type__ops;
CLUREF STR_typedef_040struct_040_173;
CLUREF STR_int_040count_073;
CLUREF STR_char_040_052;
CLUREF STR__137name_073;
CLUREF STR__175_040;
CLUREF STR__137REQS_073;
CLUREF STR__137REQS_040;
CLUREF STR__137reqs_137actual_040_075_040;
CLUREF STR__173;
CLUREF STR__054;
CLUREF STR__042;
CLUREF STR__175_073;
CLUREF STR_struct_040REQS_040_052_040;
CLUREF STR__137reqs_040_075_040;
CLUREF STR__050struct_040REQS_040_052_051_046;
CLUREF STR__137reqs_137actual_073;
CLUREF STR_OWNPTR_040type_137owns_073;
CLUREF STR_OWNPTR_040op_137owns_073;
CLUREF STR_struct_040OP_137ENTRY_040;
CLUREF STR__137OPS_073;
CLUREF STR__1730_175_073;
static int reqs_own_init = 0;
OWN_req reqs_ownreqs = {0,0};
CLUREF reqsOPcluster_context;
CLUREF reqsOPcluster_prep;
CLUREF reqsOPar;
CLUREF reqsOParp;
CLUREF reqsOPtype_name;
CLUREF reqsOPop_name;
errcode reqs_own_init_proc()
{
    errcode err;
    enter_own_init_proc();
        if (reqs_own_init == 0) {
        add_parm_info_type(0, expr_ops, sequence_of_t_reqs);
        find_type_instance(sequence_ops, 1, &sequence_ownreqs, &(sequence_of_expr_ops));
        add_selector_info("name", 0, string_ops); 
        add_selector_info("parms", 1, sequence_of_expr_ops); 
        add_selector_info("type_", 2, typespec_ops); 
        find_selector_ops("record", 3, &(record_name_parms_type__ops));
        stringOPcons("", CLU_1, CLU_0, &STR_);
        stringOPcons("_op_", CLU_1, CLU_4, &STR__137op_137);
        stringOPcons("_of_", CLU_1, CLU_4, &STR__137of_137);
        stringOPcons("typedef struct {", CLU_1, CLU_16, &STR_typedef_040struct_040_173);
        stringOPcons("int count;", CLU_1, CLU_10, &STR_int_040count_073);
        stringOPcons("char *", CLU_1, CLU_6, &STR_char_040_052);
        stringOPcons("_name;", CLU_1, CLU_6, &STR__137name_073);
        stringOPcons("} ", CLU_1, CLU_2, &STR__175_040);
        stringOPcons("_REQS;", CLU_1, CLU_6, &STR__137REQS_073);
        stringOPcons("_REQS ", CLU_1, CLU_6, &STR__137REQS_040);
        stringOPcons("_reqs_actual = ", CLU_1, CLU_15, &STR__137reqs_137actual_040_075_040);
        stringOPcons("{", CLU_1, CLU_1, &STR__173);
        stringOPcons(",", CLU_1, CLU_1, &STR__054);
        stringOPcons(", ", CLU_1, CLU_2, &STR__054_040);
        stringOPcons("\"", CLU_1, CLU_1, &STR__042);
        stringOPcons("};", CLU_1, CLU_2, &STR__175_073);
        stringOPcons("struct REQS * ", CLU_1, CLU_14, &STR_struct_040REQS_040_052_040);
        stringOPcons("_reqs = ", CLU_1, CLU_8, &STR__137reqs_040_075_040);
        stringOPcons("(struct REQS *)&", CLU_1, CLU_16, &STR__050struct_040REQS_040_052_051_046);
        stringOPcons("_reqs_actual;", CLU_1, CLU_13, &STR__137reqs_137actual_073);
        stringOPcons("OWNPTR type_owns;", CLU_1, CLU_17, &STR_OWNPTR_040type_137owns_073);
        stringOPcons("OWNPTR op_owns;", CLU_1, CLU_15, &STR_OWNPTR_040op_137owns_073);
        stringOPcons("struct OP_ENTRY ", CLU_1, CLU_16, &STR_struct_040OP_137ENTRY_040);
        stringOPcons(";", CLU_1, CLU_1, &STR__073);
        stringOPcons("_OPS;", CLU_1, CLU_5, &STR__137OPS_073);
        stringOPcons("{0};", CLU_1, CLU_4, &STR__1730_175_073);
        reqs_own_init = 1;
        {
            {reqsOPcluster_context.tf = false;
            }
            }
        {
            {reqsOPcluster_prep.tf = false;
            }
            }
        {
            {CLUREF T_0_1;
            err = arrayOPnew(&T_0_1);
            if (err != ERR_ok) goto ex_0;
            reqsOPar.num = T_0_1.num;
            }
            }
        {
            {CLUREF T_0_2;
            err = sequenceOPnew(&T_0_2);
            if (err != ERR_ok) goto ex_0;
            reqsOParp.num = T_0_2.num;
            }
            }
        {
            {reqsOPtype_name = STR_;
            }
            }
        {
            {reqsOPop_name = STR_;
            }
            }
        {signal(ERR_ok);}
    ex_0: pclu_unhandled(err); {signal(ERR_failure);}
        }
    }


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

errcode reqsOPstart(id)
CLUREF id;
    {
    errcode err;
    errcode ecode2;
        if (reqs_own_init == 0) {
            err = reqs_own_init_proc();
            if (err != ERR_ok) goto ex_0;
            }
    enter_proc(1305);

  LINE(1306);
    {
    reqsOPcluster_context.tf = true;
    }

  LINE(1307);
    {
    CLUREF T_1_1;
    err = idnOPget_str(id, &T_1_1);
    if (err != ERR_ok) goto ex_0;
    reqsOPtype_name.num = T_1_1.num;
    }
    goto end_0;
    ex_0:
        {
            if (err == ERR_failure) {signal(ERR_failure);}
            elist[0] = _pclu_erstr(err);
            {signal(ERR_failure);}
        }
    end_0: {signal(ERR_ok);}
    }

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


/**** BEGIN PROCEDURE preprocessing ****/

errcode reqsOPpreprocessing(val)
CLUREF val;
    {
    errcode err;
    errcode ecode2;
        if (reqs_own_init == 0) {
            err = reqs_own_init_proc();
            if (err != ERR_ok) goto ex_0;
            }
    enter_proc(1312);

  LINE(1313);
    {
    reqsOPcluster_prep.num = val.num;
    }
    goto end_0;
    ex_0:
        {
            if (err == ERR_failure) {signal(ERR_failure);}
            elist[0] = _pclu_erstr(err);
            {signal(ERR_failure);}
        }
    end_0: {signal(ERR_ok);}
    }

/**** END PROCEDURE preprocessing ****/

static int reqsOPparms_own_init = 0;

/**** BEGIN PROCEDURE parms ****/

errcode reqsOPparms(op, p)
CLUREF op;
CLUREF p;
    {
    errcode err;
    errcode ecode2;
        if (reqsOPparms_own_init == 0) {
        if (reqs_own_init == 0) {
            err = reqs_own_init_proc();
            if (err != ERR_ok) goto ex_0;
            }
        reqsOPparms_own_init = 1;
    }
    enter_proc(1319);

  LINE(1321);
    {
    reqsOParp.num = p.num;
    }

  LINE(1322);
    {
    if (reqsOPcluster_prep.num == true) {
        {
        reqsOPop_name = STR_;
        }
        }
    else {

  LINE(1324);
        {
        CLUREF T_2_1;
        err = idnOPget_str(op, &T_2_1);
        if (err != ERR_ok) goto ex_0;
        reqsOPop_name.num = T_2_1.num;
        }

  LINE(1325);
        {
        CLUREF T_2_1;
        CLUREF T_2_2;
        CLUREF T_2_3;
        err = stringOPfetch(reqsOPop_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) {

  LINE(1326);
            {
            CLUREF T_3_1;
            err = stringOPrest(reqsOPop_name, CLU_2, &T_3_1);
            if (err != ERR_ok) goto ex_0;
            reqsOPop_name.num = T_3_1.num;
            }
            }
            }/* end if */

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

/**** END PROCEDURE parms ****/

static int reqsOPmore_own_init = 0;

/**** BEGIN PROCEDURE more ****/

errcode reqsOPmore(e, id, rl)
CLUREF e;
CLUREF id;
CLUREF rl;
    {
    errcode err;
    errcode ecode2;
        if (reqsOPmore_own_init == 0) {
        if (reqs_own_init == 0) {
            err = reqs_own_init_proc();
            if (err != ERR_ok) goto ex_0;
            }
        reqsOPmore_own_init = 1;
    }
    enter_proc(1335);

  LINE(1337);
    {
    if (reqsOPcluster_context.num == true) {

  LINE(1338);
        {
        if (reqsOPcluster_prep.num == true) {

  LINE(1340);
            {
            CLUREF T_3_1;
            err = idnOPget_str(id, &T_3_1);
            if (err != ERR_ok) goto ex_0;
            err = reqsOPextend(rl, T_3_1);
            if (err != ERR_ok) goto ex_0;
            }
            }
        else {

  LINE(1342);
            {
            err = reqsOPoutput_no_ops(e);
            if (err != ERR_ok) goto ex_0;
            }
            }}/* end if */
        }
    else {

  LINE(1345);
        {
        CLUREF T_2_1;
        err = idnOPget_str(id, &T_2_1);
        if (err != ERR_ok) goto ex_0;
        reqsOPtype_name.num = T_2_1.num;
        }

  LINE(1346);
        {
        reqsOPop_name = STR_;
        }

  LINE(1347);
        {
        CLUREF T_2_1;
        err = idnOPget_str(id, &T_2_1);
        if (err != ERR_ok) goto ex_0;
        err = reqsOPextend(rl, T_2_1);
        if (err != ERR_ok) goto ex_0;
        }

  LINE(1348);
        {
        err = reqsOPoutput(e);
        if (err != ERR_ok) goto ex_0;
        }

  LINE(1349);
        {
        err = reqsOPoutput_no_ops(e);
        if (err != ERR_ok) goto ex_0;
        }

  LINE(1350);
        {
        CLUREF T_2_1;
        err = arrayOPnew(&T_2_1);
        if (err != ERR_ok) goto ex_0;
        reqsOPar.num = T_2_1.num;
        }
        }}/* end if */
    goto end_0;
    ex_0:
        {
            if (err == ERR_failure) {signal(ERR_failure);}
            elist[0] = _pclu_erstr(err);
            {signal(ERR_failure);}
        }
    end_0: {signal(ERR_ok);}
    }

/**** END PROCEDURE more ****/

static int reqsOPextend_own_init = 0;

/**** BEGIN PROCEDURE extend ****/

errcode reqsOPextend(rl, nm)
CLUREF rl;
CLUREF nm;
    {
    errcode err;
    errcode ecode2;
    CLUREF each_r;
    CLUREF each_idn;
    CLUREF each_kind;
    CLUREF op;
    CLUREF add_restrictlist;
    CLUREF i;
    CLUREF ith_rl;
    CLUREF ith_op;
    CLUREF ith_idn;
    CLUREF add_restrict;
    CLUREF this_r;
        if (reqsOPextend_own_init == 0) {
        if (reqs_own_init == 0) {
            err = reqs_own_init_proc();
            if (err != ERR_ok) goto ex_0;
            }
        reqsOPextend_own_init = 1;
    }
    enter_proc(1356);

  LINE(1357);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    T_1_1.num = rl.vec->size;
    T_1_2.num = (T_1_1.num == 0)? true : false;
    if (T_1_2.num == true) {
        {
        {signal (ERR_ok);}}
        }
        }/* end if */

  LINE(1360);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    CLUREF T_1_3;
        T_1_2.num = rl.vec->size; 
        T_1_3 = rl;
        for (T_1_1.num = 1; T_1_1.num <= T_1_2.num; T_1_1.num++) {
            each_r.num = T_1_3.vec->data[T_1_1.num - 1];

  LINE(1361);
            {
                {CLUREF T_2_1;
                T_2_1.num = each_r.vec->data[0];
                each_idn.num = T_2_1.num;
                }
                }

  LINE(1362);
            {
                {CLUREF T_2_1;
                T_2_1.num = each_r.vec->data[1];
                each_kind.num = T_2_1.num;
                }
                }

  LINE(1366);
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            CLUREF T_2_3;
            CLUREF T_2_4;
            CLUREF T_2_5;
            CLUREF T_2_6;
            T_2_2.num = reqsOPcluster_context.num;
            if (reqsOPcluster_context.num) {
                T_2_3.num = ((nm.str->size != reqsOPtype_name.str->size)? false :
                    !(bcmp(nm.str->data, reqsOPtype_name.str->data, nm.str->size)));
                T_2_4.num = T_2_3.num ^ 1;
                T_2_2.num = T_2_4.num;
            }
            T_2_1.num = T_2_2.num;
            if (T_2_2.num) {
                err = reqsOPop_parm(each_idn, &T_2_5);
                if (err != ERR_ok) goto ex_0;
                T_2_6.num = T_2_5.num ^ 1;
                T_2_1.num = T_2_6.num;
            }
            if (T_2_1.num == true) {

  LINE(1368);
                {
                op.num = nm.num;
                }

  LINE(1369);
                {
                CLUREF T_3_1;
                CLUREF T_3_2;
                CLUREF T_3_3;
                err = stringOPfetch(op, CLU_1, &T_3_1);
                if (err != ERR_ok) goto ex_0;
                T_3_2.ch = '%';
                T_3_3.num = (T_3_1.ch == T_3_2.ch)? true : false;
                if (T_3_3.num == true) {

  LINE(1370);
                    {
                    CLUREF T_4_1;
                    err = stringOPrest(op, CLU_2, &T_4_1);
                    if (err != ERR_ok) goto ex_0;
                    op.num = T_4_1.num;
                    }
                    }
                    }/* end if */
                }
            else {

  LINE(1372);
                {
                op = STR_;
                }
                }}/* end if */

  LINE(1377);
            {
                {add_restrictlist.tf = true;
                }
                }

  LINE(1378);
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
                T_2_2.num = reqsOPar.array->ext_high; 
                for (T_2_1.num = reqsOPar.array->ext_low; T_2_1.num <= T_2_2.num; T_2_1.num++) {
                    i.num = T_2_1.num;

  LINE(1379);
                    {
                        {CLUREF T_3_1;
                        CLUREF T_3_2;
                        if (i.num < reqsOPar.array->ext_low || i.num > reqsOPar.array->ext_high ) {
                            err = ERR_bounds;
                            goto ex_0;}
                        T_3_1.num = reqsOPar.array->store->data[i.num - reqsOPar.array->ext_low + reqsOPar.array->int_low];
                        T_3_2.num = T_3_1.vec->data[1];
                        ith_rl.num = T_3_2.num;
                        }
                        }

  LINE(1380);
                    {
                        {CLUREF T_3_1;
                        CLUREF T_3_2;
                        if (i.num < reqsOPar.array->ext_low || i.num > reqsOPar.array->ext_high ) {
                            err = ERR_bounds;
                            goto ex_0;}
                        T_3_1.num = reqsOPar.array->store->data[i.num - reqsOPar.array->ext_low + reqsOPar.array->int_low];
                        T_3_2.num = T_3_1.vec->data[0];
                        ith_op.num = T_3_2.num;
                        }
                        }

  LINE(1381);
                    {
                        {CLUREF T_3_1;
                        CLUREF T_3_2;
                        err = sequenceOPbottom(ith_rl, &T_3_1);
                        if (err != ERR_ok) goto ex_0;
                        T_3_2.num = T_3_1.vec->data[0];
                        ith_idn.num = T_3_2.num;
                        }
                        }

  LINE(1382);
                    {
                    CLUREF T_3_1;
                    CLUREF T_3_2;
                    CLUREF T_3_3;
                    CLUREF T_3_4;
                    CLUREF T_3_5;
                    err = idnOPget_str(ith_idn, &T_3_2);
                    if (err != ERR_ok) goto ex_0;
                    err = idnOPget_str(each_idn, &T_3_3);
                    if (err != ERR_ok) goto ex_0;
                    T_3_4.num = ((T_3_2.str->size != T_3_3.str->size)? false :
                        !(bcmp(T_3_2.str->data, T_3_3.str->data, T_3_2.str->size)));
                    T_3_1.num = T_3_4.num;
                    if (T_3_4.num) {
                        T_3_5.num = ((ith_op.str->size != op.str->size)? false :
                            !(bcmp(ith_op.str->data, op.str->data, ith_op.str->size)));
                        T_3_1.num = T_3_5.num;
                    }
                    if (T_3_1.num == true) {

  LINE(1387);
                        {
                            {add_restrict.tf = true;
                            }
                            }

  LINE(1388);
                        {
                        CLUREF T_4_1;
                        CLUREF T_4_2;
                        CLUREF T_4_3;
                            T_4_2.num = ith_rl.vec->size; 
                            T_4_3 = ith_rl;
                            for (T_4_1.num = 1; T_4_1.num <= T_4_2.num; T_4_1.num++) {
                                this_r.num = T_4_3.vec->data[T_4_1.num - 1];

  LINE(1391);
                                {
                                CLUREF T_5_1;
                                CLUREF T_5_2;
                                T_5_1.num = this_r.vec->data[1];
                                err = restrictkind_similar(T_5_1, each_kind, &T_5_2);
                                if (err != ERR_ok) goto ex_0;
                                if (T_5_2.num == true) {

  LINE(1393);
                                    {
                                    add_restrict.tf = false;
                                    }
                                    }
                                    }/* end if */
                            }
                        }
                        end_inline_for_3:;

  LINE(1396);
                        {
                        if (add_restrict.num == true) {

  LINE(1397);
                            {
                            CLUREF T_5_1;
                            CLUREF T_5_2;
                            CLUREF T_5_3;
                            CLUREF T_5_4;
                            if (i.num < reqsOPar.array->ext_low || i.num > reqsOPar.array->ext_high ) {
                                err = ERR_bounds;
                                goto ex_0;}
                            T_5_1.num = reqsOPar.array->store->data[i.num - reqsOPar.array->ext_low + reqsOPar.array->int_low];
                            if (i.num < reqsOPar.array->ext_low || i.num > reqsOPar.array->ext_high ) {
                                err = ERR_bounds;
                                goto ex_0;}
                            T_5_2.num = reqsOPar.array->store->data[i.num - reqsOPar.array->ext_low + reqsOPar.array->int_low];
                            T_5_3.num = T_5_2.vec->data[1];
                            err = sequenceOPaddh(T_5_3, each_r, &T_5_4);
                            if (err != ERR_ok) goto ex_0;
                            T_5_1.vec->data[1]  = T_5_4.num;
                            }
                            }
                            }/* end if */

  LINE(1399);
                        {
                        add_restrictlist.tf = false;
                        }
                        }
                        }/* end if */
                }
            }
            end_inline_for_2:;

  LINE(1402);
            {
            if (add_restrictlist.num == true) {

  LINE(1403);
                {
                CLUREF T_3_1;
                CLUREF T_3_2;
                RecordAlloc(2, T_3_1);
                err = sequenceOPfill(CLU_1, each_r, &T_3_2);
                if (err != ERR_ok) goto ex_0;
                T_3_1.vec->data[1]  = T_3_2.num;
                T_3_1.vec->data[0]  = op.num;
                {
                if ((reqsOPar.array->int_low + reqsOPar.array->ext_size + 1) < reqsOPar.array->int_size) {
                    reqsOPar.array->store->data[reqsOPar.array->int_low + reqsOPar.array->ext_size] = T_3_1.num;
                    reqsOPar.array->ext_size++; reqsOPar.array->ext_high++;}
                else {
                    err = arrayOPaddh(reqsOPar, T_3_1);
                    if (err != ERR_ok) goto ex_0;}
                }
                }
                }
                }/* end if */
        }
    }
    end_inline_for_1:;
    goto end_0;
    ex_0:
        {
            if (err == ERR_failure) {signal(ERR_failure);}
            elist[0] = _pclu_erstr(err);
            {signal(ERR_failure);}
        }
    end_0: {signal(ERR_ok);}
    }

/**** END PROCEDURE extend ****/


/**** BEGIN PROCEDURE op_parm ****/

errcode reqsOPop_parm(i, ret_1)
CLUREF i;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
    CLUREF each_d;
    CLUREF each_i;
        if (reqs_own_init == 0) {
            err = reqs_own_init_proc();
            if (err != ERR_ok) goto ex_0;
            }
    enter_proc(1413);

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

  LINE(1415);
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            CLUREF T_2_3;
            CLUREF T_2_4;
                T_2_1.num = each_d.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_i.num = T_2_4.vec->data[T_2_2.num - 1];

  LINE(1416);
                    {
                    CLUREF T_3_1;
                    err = idnOPsimilar(each_i, i, &T_3_1);
                    if (err != ERR_ok) goto ex_0;
                    if (T_3_1.num == true) {
                        {
                        {
                        ret_1->tf = true;
                        }
                        {signal (ERR_ok);}}
                        }
                        }/* end if */
                }
            }
            end_inline_for_2:;
        }
    }
    end_inline_for_1:;

  LINE(1419);
    {
    {
    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 op_parm ****/


/**** BEGIN PROCEDURE get_tid ****/

errcode reqsOPget_tid(ret_1)
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
        if (reqs_own_init == 0) {
            err = reqs_own_init_proc();
            if (err != ERR_ok) goto ex_0;
            }
    enter_proc(1424);

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

/**** END PROCEDURE get_tid ****/

static int reqsOPget_id_own_init = 0;

/**** BEGIN PROCEDURE get_id ****/

errcode reqsOPget_id(ret_1)
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
        if (reqsOPget_id_own_init == 0) {
        if (reqs_own_init == 0) {
            err = reqs_own_init_proc();
            if (err != ERR_ok) goto ex_0;
            }
        reqsOPget_id_own_init = 1;
    }
    enter_proc(1430);

  LINE(1431);
    {
    CLUREF T_1_1;
    T_1_1.num = reqsOPcluster_context.num ^ 1;
    if (T_1_1.num == true) {
        {
        {
        ret_1->num = reqsOPtype_name.num;
        }
        {signal (ERR_ok);}}
        }
        }/* end if */

  LINE(1432);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    T_1_1.num = ((reqsOPop_name.str->size != STR_.str->size)? false :
        !(bcmp(reqsOPop_name.str->data, STR_.str->data, reqsOPop_name.str->size)));
    T_1_2.num = T_1_1.num ^ 1;
    if (T_1_2.num == true) {

  LINE(1433);
        {
        {
        CLUREF T_2_1;
        CLUREF T_2_2;
        err = stringOPconcat(reqsOPtype_name, STR__137op_137, &T_2_1);
        if (err != ERR_ok) goto ex_0;
        err = stringOPconcat(T_2_1, reqsOPop_name, &T_2_2);
        if (err != ERR_ok) goto ex_0;
        ret_1->num = T_2_2.num;
        }
        {signal (ERR_ok);}}
        }
        }/* end if */

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

/**** END PROCEDURE get_id ****/

static int reqsOPoutput_own_init = 0;

/**** BEGIN PROCEDURE output ****/

errcode reqsOPoutput(e)
CLUREF e;
    {
    errcode err;
    errcode ecode2;
    CLUREF rl_count;
    CLUREF each_relt;
    CLUREF each_rl;
    CLUREF op_id;
    CLUREF parm_list;
    CLUREF this_name;
    CLUREF ops;
    CLUREF each_r;
    CLUREF these_ops;
    CLUREF o;
    CLUREF s;
    CLUREF each_o;
    CLUREF names;
    CLUREF each_opd;
    CLUREF each_op;
        if (reqsOPoutput_own_init == 0) {
        if (reqs_own_init == 0) {
            err = reqs_own_init_proc();
            if (err != ERR_ok) goto ex_0;
            }
        reqsOPoutput_own_init = 1;
    }
    enter_proc(1440);

  LINE(1441);
    {
        {rl_count.num = 1;
        }
        }

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

  LINE(1443);
            {
                {CLUREF T_2_1;
                T_2_1.num = each_relt.vec->data[1];
                each_rl.num = T_2_1.num;
                }
                }

  LINE(1446);
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            T_2_1.num = each_relt.vec->data[0];
            T_2_2.num = ((T_2_1.str->size != STR_.str->size)? false :
                !(bcmp(T_2_1.str->data, STR_.str->data, T_2_1.str->size)));
            if (T_2_2.num == true) {

  LINE(1448);
                {
                op_id = STR_;
                }

  LINE(1449);
                {
                CLUREF T_3_1;
                CLUREF T_3_2;
                err = current_applyOPget(&T_3_1);
                if (err != ERR_ok) goto ex_0;
                T_3_2.num = T_3_1.vec->data[7];
                parm_list.num = T_3_2.num;
                }
                }
            else {

  LINE(1451);
                {
                CLUREF T_3_1;
                CLUREF T_3_2;
                T_3_1.num = each_relt.vec->data[0];
                err = stringOPconcat(STR__137op_137, T_3_1, &T_3_2);
                if (err != ERR_ok) goto ex_0;
                op_id.num = T_3_2.num;
                }

  LINE(1452);
                {
                CLUREF T_3_1;
                CLUREF T_3_2;
                err = current_typeOPget(&T_3_1);
                if (err != ERR_ok) goto ex_0;
                err = reqsOPfind_parms(T_3_1, op_id, &T_3_2);
                if (err != ERR_ok) goto ex_0;
                parm_list.num = T_3_2.num;
                }
                }}/* end if */

  LINE(1454);
            {
                {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 = stringOPconcat(reqsOPtype_name, op_id, &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 = sequenceOPbottom(each_rl, &T_2_3);
                if (err != ERR_ok) goto ex_0;
                T_2_4.num = T_2_3.vec->data[0];
                err = idnOPget_str(T_2_4, &T_2_5);
                if (err != ERR_ok) goto ex_0;
                err = stringOPconcat(T_2_2, T_2_5, &T_2_6);
                if (err != ERR_ok) goto ex_0;
                this_name.num = T_2_6.num;
                }
                }

  LINE(1457);
            {
            CLUREF T_2_1;
            err = g_envOPadd_global(this_name, &T_2_1);
            if (err != ERR_ok) goto ex_0;
            if (T_2_1.num == true) {

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

  LINE(1463);
                {
                CLUREF T_3_1;
                CLUREF T_3_2;
                CLUREF T_3_3;
                    T_3_2.num = each_rl.vec->size; 
                    T_3_3 = each_rl;
                    for (T_3_1.num = 1; T_3_1.num <= T_3_2.num; T_3_1.num++) {
                        each_r.num = T_3_3.vec->data[T_3_1.num - 1];

  LINE(1465);
                        {
                        CLUREF T_4_1;
                        T_4_1.num = each_r.vec->data[1];
                        switch (T_4_1.cell->tag) {
                        case 1: 
                             {CLUREF T_4_2;
                            T_4_2.num = T_4_1.cell->value;
                            o.num = T_4_2.num;

  LINE(1467);
                                {
                                these_ops.num = o.num;
                                }
                                break;
                                }
                        case 2: 
                             {
                                break;
                                }
                        case 3: 
                             {CLUREF T_4_3;
                            T_4_3.num = T_4_1.cell->value;
                            s.num = T_4_3.num;

  LINE(1470);
                                {
                                CLUREF T_5_1;
                                T_5_1.num = s.vec->data[2];
                                these_ops.num = T_5_1.num;
                                }
                                break;
                                }
                        }
                        }

  LINE(1472);
                        {
                        CLUREF T_4_1;
                        CLUREF T_4_2;
                        CLUREF T_4_3;
                            T_4_2.num = these_ops.vec->size; 
                            T_4_3 = these_ops;
                            for (T_4_1.num = 1; T_4_1.num <= T_4_2.num; T_4_1.num++) {
                                each_o.num = T_4_3.vec->data[T_4_1.num - 1];

  LINE(1473);
                                {
                                CLUREF T_5_1;
                                err = sequenceOPaddh(ops, each_o, &T_5_1);
                                if (err != ERR_ok) goto ex_0;
                                ops.num = T_5_1.num;
                                }
                            }
                        }
                        end_inline_for_3:;
                    }
                }
                end_inline_for_2:;

  LINE(1476);
                {
                CLUREF T_3_1;
                err = reqsOPops_uniq(ops, &T_3_1);
                if (err != ERR_ok) goto ex_0;
                ops.num = T_3_1.num;
                }

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

  LINE(1478);
                {
                CLUREF T_3_1;
                CLUREF T_3_2;
                CLUREF T_3_3;
                    T_3_2.num = ops.vec->size; 
                    T_3_3 = ops;
                    for (T_3_1.num = 1; T_3_1.num <= T_3_2.num; T_3_1.num++) {
                        each_opd.num = T_3_3.vec->data[T_3_1.num - 1];

  LINE(1479);
                        {
                        CLUREF T_4_1;
                        CLUREF T_4_2;
                        CLUREF T_4_3;
                        CLUREF T_4_4;
                            T_4_1.num = each_opd.vec->data[1];
                            T_4_3.num = T_4_1.vec->size; 
                            T_4_4 = T_4_1;
                            for (T_4_2.num = 1; T_4_2.num <= T_4_3.num; T_4_2.num++) {
                                each_op.num = T_4_4.vec->data[T_4_2.num - 1];

  LINE(1480);
                                {
                                CLUREF T_5_1;
                                CLUREF T_5_2;
                                T_5_1.num = each_op.vec->data[0];
                                err = sequenceOPaddh(names, T_5_1, &T_5_2);
                                if (err != ERR_ok) goto ex_0;
                                names.num = T_5_2.num;
                                }
                            }
                        }
                        end_inline_for_5:;
                    }
                }
                end_inline_for_4:;

  LINE(1486);
                {
                err = reqsOPoutput_reqs(e, this_name, names);
                if (err != ERR_ok) goto ex_0;
                }

  LINE(1490);
                {
                CLUREF T_3_1;
                T_3_1.num = reqsOPcluster_context.num ^ 1;
                if (T_3_1.num == true) {
                    {
                    err = reqsOPoutput_ops_def(e, this_name, ops, parm_list);
                    if (err != ERR_ok) goto ex_0;
                    }
                    }
                    }/* end if */

  LINE(1491);
                {
                CLUREF T_3_1;
                CLUREF T_3_2;
                CLUREF T_3_3;
                    T_3_2.num = ops.vec->size; 
                    T_3_3 = ops;
                    for (T_3_1.num = 1; T_3_1.num <= T_3_2.num; T_3_1.num++) {
                        each_opd.num = T_3_3.vec->data[T_3_1.num - 1];

  LINE(1492);
                        {
                        CLUREF T_4_1;
                        CLUREF T_4_2;
                        CLUREF T_4_3;
                        CLUREF T_4_4;
                            T_4_1.num = each_opd.vec->data[1];
                            T_4_3.num = T_4_1.vec->size; 
                            T_4_4 = T_4_1;
                            for (T_4_2.num = 1; T_4_2.num <= T_4_3.num; T_4_2.num++) {
                                each_op.num = T_4_4.vec->data[T_4_2.num - 1];

  LINE(1493);
                                {
                                CLUREF T_5_1;
                                CLUREF T_5_2;
                                T_5_1.num = each_op.vec->data[0];
                                err = sequenceOPaddh(names, T_5_1, &T_5_2);
                                if (err != ERR_ok) goto ex_0;
                                names.num = T_5_2.num;
                                }
                            }
                        }
                        end_inline_for_7:;
                    }
                }
                end_inline_for_6:;
                }
                }/* end if */

  LINE(1499);
            {
            CLUREF T_2_1;
            T_2_1.num = rl_count.num + 1;
             if ((T_2_1.num > 0 && rl_count.num < 0 && 1 < 0) || 
                 (T_2_1.num < 0 && rl_count.num > 0 && 1 > 0)) {
                err = ERR_overflow;
                goto ex_0;}
            rl_count.num = T_2_1.num;
            }
        }
    }
    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 output ****/

static int reqsOPreset_own_init = 0;

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

errcode reqsOPreset()
    {
    errcode err;
    errcode ecode2;
        if (reqsOPreset_own_init == 0) {
        if (reqs_own_init == 0) {
            err = reqs_own_init_proc();
            if (err != ERR_ok) goto ex_0;
            }
        reqsOPreset_own_init = 1;
    }
    enter_proc(1505);

  LINE(1506);
    {
    reqsOPcluster_context.tf = false;
    }

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

  LINE(1508);
    {
    reqsOPtype_name = STR_;
    }

  LINE(1509);
    {
    reqsOPop_name = STR_;
    }
    goto end_0;
    ex_0:
        {
            if (err == ERR_failure) {signal(ERR_failure);}
            elist[0] = _pclu_erstr(err);
            {signal(ERR_failure);}
        }
    end_0: {signal(ERR_ok);}
    }

/**** END PROCEDURE reset ****/

static int reqsOPinitial_output_own_init = 0;

/**** BEGIN PROCEDURE initial_output ****/

errcode reqsOPinitial_output(e)
CLUREF e;
    {
    errcode err;
    errcode ecode2;
    CLUREF each_relt;
    CLUREF each_rl;
    CLUREF op_id;
    CLUREF parm_list;
    CLUREF this_name;
    CLUREF ops;
    CLUREF each_r;
    CLUREF these_ops;
    CLUREF o;
    CLUREF s;
    CLUREF each_o;
    CLUREF names;
    CLUREF each_opd;
    CLUREF each_op;
        if (reqsOPinitial_output_own_init == 0) {
        if (reqs_own_init == 0) {
            err = reqs_own_init_proc();
            if (err != ERR_ok) goto ex_0;
            }
        reqsOPinitial_output_own_init = 1;
    }
    enter_proc(1514);

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

  LINE(1516);
            {
                {CLUREF T_2_1;
                T_2_1.num = each_relt.vec->data[1];
                each_rl.num = T_2_1.num;
                }
                }

  LINE(1519);
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            T_2_1.num = each_relt.vec->data[0];
            T_2_2.num = ((T_2_1.str->size != STR_.str->size)? false :
                !(bcmp(T_2_1.str->data, STR_.str->data, T_2_1.str->size)));
            if (T_2_2.num == true) {

  LINE(1521);
                {
                op_id = STR_;
                }

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

  LINE(1527);
                    {
                    CLUREF T_4_1;
                    CLUREF T_4_2;
                    err = current_typeOPget(&T_4_1);
                    if (err != ERR_ok) goto ex_0;
                    T_4_2.num = T_4_1.vec->data[7];
                    parm_list.num = T_4_2.num;
                    }
                    }
                else {

  LINE(1529);
                    {
                    CLUREF T_4_1;
                    CLUREF T_4_2;
                    err = current_applyOPget(&T_4_1);
                    if (err != ERR_ok) goto ex_0;
                    T_4_2.num = T_4_1.vec->data[7];
                    parm_list.num = T_4_2.num;
                    }
                    }}/* end if */
                }
            else {

  LINE(1532);
                {
                CLUREF T_3_1;
                CLUREF T_3_2;
                T_3_1.num = each_relt.vec->data[0];
                err = stringOPconcat(STR__137op_137, T_3_1, &T_3_2);
                if (err != ERR_ok) goto ex_0;
                op_id.num = T_3_2.num;
                }

  LINE(1533);
                {
                CLUREF T_3_1;
                CLUREF T_3_2;
                CLUREF T_3_3;
                err = current_typeOPget(&T_3_1);
                if (err != ERR_ok) goto ex_0;
                T_3_2.num = each_relt.vec->data[0];
                err = reqsOPfind_parms(T_3_1, T_3_2, &T_3_3);
                if (err != ERR_ok) goto ex_0;
                parm_list.num = T_3_3.num;
                }
                }}/* end if */

  LINE(1535);
            {
                {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 = stringOPconcat(reqsOPtype_name, op_id, &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 = sequenceOPbottom(each_rl, &T_2_3);
                if (err != ERR_ok) goto ex_0;
                T_2_4.num = T_2_3.vec->data[0];
                err = idnOPget_str(T_2_4, &T_2_5);
                if (err != ERR_ok) goto ex_0;
                err = stringOPconcat(T_2_2, T_2_5, &T_2_6);
                if (err != ERR_ok) goto ex_0;
                this_name.num = T_2_6.num;
                }
                }

  LINE(1537);
            {
            CLUREF T_2_1;
            err = g_envOPadd_global(this_name, &T_2_1);
            if (err != ERR_ok) goto ex_0;
            if (T_2_1.num == true) {

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

  LINE(1543);
                {
                CLUREF T_3_1;
                CLUREF T_3_2;
                CLUREF T_3_3;
                    T_3_2.num = each_rl.vec->size; 
                    T_3_3 = each_rl;
                    for (T_3_1.num = 1; T_3_1.num <= T_3_2.num; T_3_1.num++) {
                        each_r.num = T_3_3.vec->data[T_3_1.num - 1];

  LINE(1545);
                        {
                        CLUREF T_4_1;
                        T_4_1.num = each_r.vec->data[1];
                        switch (T_4_1.cell->tag) {
                        case 1: 
                             {CLUREF T_4_2;
                            T_4_2.num = T_4_1.cell->value;
                            o.num = T_4_2.num;

  LINE(1547);
                                {
                                these_ops.num = o.num;
                                }
                                break;
                                }
                        case 2: 
                             {
                                break;
                                }
                        case 3: 
                             {CLUREF T_4_3;
                            T_4_3.num = T_4_1.cell->value;
                            s.num = T_4_3.num;

  LINE(1550);
                                {
                                CLUREF T_5_1;
                                T_5_1.num = s.vec->data[2];
                                these_ops.num = T_5_1.num;
                                }
                                break;
                                }
                        }
                        }

  LINE(1552);
                        {
                        CLUREF T_4_1;
                        CLUREF T_4_2;
                        CLUREF T_4_3;
                            T_4_2.num = these_ops.vec->size; 
                            T_4_3 = these_ops;
                            for (T_4_1.num = 1; T_4_1.num <= T_4_2.num; T_4_1.num++) {
                                each_o.num = T_4_3.vec->data[T_4_1.num - 1];

  LINE(1553);
                                {
                                CLUREF T_5_1;
                                err = sequenceOPaddh(ops, each_o, &T_5_1);
                                if (err != ERR_ok) goto ex_0;
                                ops.num = T_5_1.num;
                                }
                            }
                        }
                        end_inline_for_3:;
                    }
                }
                end_inline_for_2:;

  LINE(1556);
                {
                CLUREF T_3_1;
                err = reqsOPops_uniq(ops, &T_3_1);
                if (err != ERR_ok) goto ex_0;
                ops.num = T_3_1.num;
                }

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

  LINE(1558);
                {
                CLUREF T_3_1;
                CLUREF T_3_2;
                CLUREF T_3_3;
                    T_3_2.num = ops.vec->size; 
                    T_3_3 = ops;
                    for (T_3_1.num = 1; T_3_1.num <= T_3_2.num; T_3_1.num++) {
                        each_opd.num = T_3_3.vec->data[T_3_1.num - 1];

  LINE(1559);
                        {
                        CLUREF T_4_1;
                        CLUREF T_4_2;
                        CLUREF T_4_3;
                        CLUREF T_4_4;
                            T_4_1.num = each_opd.vec->data[1];
                            T_4_3.num = T_4_1.vec->size; 
                            T_4_4 = T_4_1;
                            for (T_4_2.num = 1; T_4_2.num <= T_4_3.num; T_4_2.num++) {
                                each_op.num = T_4_4.vec->data[T_4_2.num - 1];

  LINE(1560);
                                {
                                CLUREF T_5_1;
                                CLUREF T_5_2;
                                T_5_1.num = each_op.vec->data[0];
                                err = sequenceOPaddh(names, T_5_1, &T_5_2);
                                if (err != ERR_ok) goto ex_0;
                                names.num = T_5_2.num;
                                }
                            }
                        }
                        end_inline_for_5:;
                    }
                }
                end_inline_for_4:;

  LINE(1564);
                {
                err = reqsOPoutput_reqs(e, this_name, names);
                if (err != ERR_ok) goto ex_0;
                }

  LINE(1565);
                {
                err = reqsOPoutput_ops_def(e, this_name, ops, parm_list);
                if (err != ERR_ok) goto ex_0;
                }
                }
                }/* end if */
        }
    }
    end_inline_for_1:;

  LINE(1568);
    {
    err = reqsOPoutput_no_ops(e);
    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 initial_output ****/


/**** BEGIN PROCEDURE find_parms ****/

errcode reqsOPfind_parms(t, op, ret_1)
CLUREF t;
CLUREF op;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
    CLUREF each_ap;
        if (reqs_own_init == 0) {
            err = reqs_own_init_proc();
            if (err != ERR_ok) goto ex_0;
            }
    enter_proc(1571);

  LINE(1573);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    CLUREF T_1_3;
    CLUREF T_1_4;
        T_1_1.num = t.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_ap.num = T_1_4.vec->data[T_1_2.num - 1];

  LINE(1574);
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            CLUREF T_2_3;
            T_2_1.num = each_ap.vec->data[4];
            err = idnOPget_str(T_2_1, &T_2_2);
            if (err != ERR_ok) goto ex_0;
            T_2_3.num = ((T_2_2.str->size != op.str->size)? false :
                !(bcmp(T_2_2.str->data, op.str->data, T_2_2.str->size)));
            if (T_2_3.num == true) {

  LINE(1575);
                {
                {
                CLUREF T_3_1;
                T_3_1.num = each_ap.vec->data[7];
                ret_1->num = T_3_1.num;
                }
                {signal (ERR_ok);}}
                }
                }/* end if */

  LINE(1577);
            {
            {
            CLUREF T_2_1;
            err = sequenceOPnew(&T_2_1);
            if (err != ERR_ok) goto ex_0;
            ret_1->num = T_2_1.num;
            }
            {signal (ERR_ok);}}
        }
    }
    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: elist[0].str = no_return_values_STRING;
        {signal(ERR_failure);}
    }

/**** END PROCEDURE find_parms ****/

struct OPS *sequence_of_expr_table;
struct OPS *sequence_of_expr_ops;
struct OPS *sequence_of_expr_ops;
OWNPTR sequence_of_expr_owns;
struct OPS  *record_name_parms_type__ops;
static int reqsOPops_uniq_own_init = 0;

/**** BEGIN PROCEDURE ops_uniq ****/

errcode reqsOPops_uniq(ops, ret_1)
CLUREF ops;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
    CLUREF new;
    CLUREF each_od;
    CLUREF each_opspec;
    CLUREF exist_od;
        if (reqsOPops_uniq_own_init == 0) {
        if (reqs_own_init == 0) {
            err = reqs_own_init_proc();
            if (err != ERR_ok) goto ex_0;
            }
        reqsOPops_uniq_own_init = 1;
    }
    enter_proc(1581);

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

  LINE(1583);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    CLUREF T_1_3;
        T_1_2.num = ops.vec->size; 
        T_1_3 = ops;
        for (T_1_1.num = 1; T_1_1.num <= T_1_2.num; T_1_1.num++) {
            each_od.num = T_1_3.vec->data[T_1_1.num - 1];

  LINE(1584);
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            CLUREF T_2_3;
            CLUREF T_2_4;
                T_2_1.num = each_od.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_opspec.num = T_2_4.vec->data[T_2_2.num - 1];

  LINE(1585);
                    {
                    CLUREF T_4_1;
                    CLUREF T_4_2;
                    CLUREF T_4_3;
                        T_4_2.num = new.vec->size; 
                        T_4_3 = new;
                        for (T_4_1.num = 1; T_4_1.num <= T_4_2.num; T_4_1.num++) {
                            exist_od.num = T_4_3.vec->data[T_4_1.num - 1];

  LINE(1586);
                            {
                            CLUREF T_5_1;
                            CLUREF T_5_2;
                            CLUREF T_5_3;
                            T_5_1.num = exist_od.vec->data[1];
                            if (1 < 1 || 1 > T_5_1.vec->size ) {
                                err = ERR_bounds;
                                goto ex_1;}
                            T_5_2.num = T_5_1.vec->data[1 - 1];
                            generic_CLU_proc.type_owns = 0;
                            generic_CLU_proc.op_owns = record_name_parms_type__ops->entry[0].fcn->op_owns;
                            generic_CLU_proc.proc = recordOPsimilar;
                            CUR_PROC_VAR.proc = &generic_CLU_proc;
                            err = recordOPsimilar(each_opspec, T_5_2, &T_5_3);
                            if (err != ERR_ok) goto ex_1;
                            if (T_5_3.num == true) {

  LINE(1588);
                                {
                                    err = ERR_found;
                                    goto ex_1;
                                    }
                                }
                                }/* end if */
                        }
                    }
                    end_inline_for_3:;
                        goto end_1;
                        ex_1:
                            if ((err == ERR_found)) {

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

  LINE(1591);
                    {
                    CLUREF T_3_1;
                    CLUREF T_3_2;
                    CLUREF T_3_3;
                    CLUREF T_3_4;
                    RecordAlloc(2, T_3_1);
                    err = sequenceOPfill(CLU_1, each_opspec, &T_3_2);
                    if (err != ERR_ok) goto ex_0;
                    T_3_1.vec->data[1]  = T_3_2.num;
                    T_3_3.num = each_od.vec->data[0];
                    T_3_1.vec->data[0]  = T_3_3.num;
                    err = sequenceOPaddh(new, T_3_1, &T_3_4);
                    if (err != ERR_ok) goto ex_0;
                    new.num = T_3_4.num;
                    }
                }
            }
            end_inline_for_2:;
        }
    }
    end_inline_for_1:;

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

/**** END PROCEDURE ops_uniq ****/

static int reqsOPoutput_reqs_own_init = 0;

/**** BEGIN PROCEDURE output_reqs ****/

errcode reqsOPoutput_reqs(e, this_name, names)
CLUREF e;
CLUREF this_name;
CLUREF names;
    {
    errcode err;
    errcode ecode2;
    CLUREF each_name;
    CLUREF nth;
    CLUREF each_n;
        if (reqsOPoutput_reqs_own_init == 0) {
        if (reqs_own_init == 0) {
            err = reqs_own_init_proc();
            if (err != ERR_ok) goto ex_0;
            }
        reqsOPoutput_reqs_own_init = 1;
    }
    enter_proc(1602);

  LINE(1603);
    {
    err = g_envOPblankline(e);
    if (err != ERR_ok) goto ex_0;
    }

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

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

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

  LINE(1607);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    CLUREF T_1_3;
        T_1_2.num = names.vec->size; 
        T_1_3 = names;
        for (T_1_1.num = 1; T_1_1.num <= T_1_2.num; T_1_1.num++) {
            each_name.num = T_1_3.vec->data[T_1_1.num - 1];

  LINE(1608);
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            err = stringOPconcat(STR_char_040_052, each_name, &T_2_1);
            if (err != ERR_ok) goto ex_0;
            err = stringOPconcat(T_2_1, STR__137name_073, &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(1609);
            {
            err = g_envOPnewline(e);
            if (err != ERR_ok) goto ex_0;
            }
        }
    }
    end_inline_for_1:;

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

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

  LINE(1613);
    {
    CLUREF T_1_1;
    err = stringOPconcat(this_name, STR__137REQS_073, &T_1_1);
    if (err != ERR_ok) goto ex_0;
    err = g_envOPputl(e, T_1_1);
    if (err != ERR_ok) goto ex_0;
    }

  LINE(1617);
    {
    err = g_envOPblankline(e);
    if (err != ERR_ok) goto ex_0;
    }

  LINE(1618);
    {
    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;
    err = stringOPconcat(this_name, STR__137REQS_040, &T_1_1);
    if (err != ERR_ok) goto ex_0;
    err = stringOPconcat(T_1_1, this_name, &T_1_2);
    if (err != ERR_ok) goto ex_0;
    err = stringOPconcat(T_1_2, STR__137reqs_137actual_040_075_040, &T_1_3);
    if (err != ERR_ok) goto ex_0;
    err = stringOPconcat(T_1_3, STR__173, &T_1_4);
    if (err != ERR_ok) goto ex_0;
    T_1_5.num = names.vec->size;
    err = intOPunparse(T_1_5, &T_1_6);
    if (err != ERR_ok) goto ex_0;
    err = stringOPconcat(T_1_4, T_1_6, &T_1_7);
    if (err != ERR_ok) goto ex_0;
    err = stringOPconcat(T_1_7, STR__054, &T_1_8);
    if (err != ERR_ok) goto ex_0;
    err = g_envOPputl(e, T_1_8);
    if (err != ERR_ok) goto ex_0;
    }

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

  LINE(1622);
    {
        {nth.tf = false;
        }
        }

  LINE(1623);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    CLUREF T_1_3;
        T_1_2.num = names.vec->size; 
        T_1_3 = names;
        for (T_1_1.num = 1; T_1_1.num <= T_1_2.num; T_1_1.num++) {
            each_n.num = T_1_3.vec->data[T_1_1.num - 1];

  LINE(1624);
            {
            if (nth.num == true) {
                {
                err = g_envOPputs(e, STR__054_040);
                if (err != ERR_ok) goto ex_0;
                }
                }
            else {
                {
                nth.tf = true;
                }
                }}/* end if */

  LINE(1625);
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            err = stringOPconcat(STR__042, each_n, &T_2_1);
            if (err != ERR_ok) goto ex_0;
            err = stringOPconcat(T_2_1, STR__042, &T_2_2);
            if (err != ERR_ok) goto ex_0;
            err = g_envOPputs(e, T_2_2);
            if (err != ERR_ok) goto ex_0;
            }
        }
    }
    end_inline_for_2:;

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

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

  LINE(1630);
    {
    err = g_envOPblankline(e);
    if (err != ERR_ok) goto ex_0;
    }

  LINE(1631);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    CLUREF T_1_3;
    CLUREF T_1_4;
    CLUREF T_1_5;
    err = stringOPconcat(STR_struct_040REQS_040_052_040, this_name, &T_1_1);
    if (err != ERR_ok) goto ex_0;
    err = stringOPconcat(T_1_1, STR__137reqs_040_075_040, &T_1_2);
    if (err != ERR_ok) goto ex_0;
    err = stringOPconcat(T_1_2, STR__050struct_040REQS_040_052_051_046, &T_1_3);
    if (err != ERR_ok) goto ex_0;
    err = stringOPconcat(T_1_3, this_name, &T_1_4);
    if (err != ERR_ok) goto ex_0;
    err = stringOPconcat(T_1_4, STR__137reqs_137actual_073, &T_1_5);
    if (err != ERR_ok) goto ex_0;
    err = g_envOPputl(e, T_1_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 output_reqs ****/

static int reqsOPoutput_ops_def_own_init = 0;

/**** BEGIN PROCEDURE output_ops_def ****/

errcode reqsOPoutput_ops_def(e, this_name, ops, parm_list)
CLUREF e;
CLUREF this_name;
CLUREF ops;
CLUREF parm_list;
    {
    errcode err;
    errcode ecode2;
    CLUREF each_opd;
    CLUREF each_op;
        if (reqsOPoutput_ops_def_own_init == 0) {
        if (reqs_own_init == 0) {
            err = reqs_own_init_proc();
            if (err != ERR_ok) goto ex_0;
            }
        reqsOPoutput_ops_def_own_init = 1;
    }
    enter_proc(1645);

  LINE(1647);
    {
    err = g_envOPblankline(e);
    if (err != ERR_ok) goto ex_0;
    }

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

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

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

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

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

  LINE(1653);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    CLUREF T_1_3;
        T_1_2.num = ops.vec->size; 
        T_1_3 = ops;
        for (T_1_1.num = 1; T_1_1.num <= T_1_2.num; T_1_1.num++) {
            each_opd.num = T_1_3.vec->data[T_1_1.num - 1];

  LINE(1654);
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            CLUREF T_2_3;
            CLUREF T_2_4;
                T_2_1.num = each_opd.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_op.num = T_2_4.vec->data[T_2_2.num - 1];

  LINE(1655);
                    {
                    CLUREF T_3_1;
                    CLUREF T_3_2;
                    CLUREF T_3_3;
                    T_3_1.num = each_op.vec->data[0];
                    err = stringOPconcat(STR_struct_040OP_137ENTRY_040, T_3_1, &T_3_2);
                    if (err != ERR_ok) goto ex_0;
                    err = stringOPconcat(T_3_2, STR__073, &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(1656);
                    {
                    err = g_envOPnewline(e);
                    if (err != ERR_ok) goto ex_0;
                    }
                }
            }
            end_inline_for_2:;
        }
    }
    end_inline_for_1:;

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

  LINE(1660);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    err = stringOPconcat(STR__175_040, this_name, &T_1_1);
    if (err != ERR_ok) goto ex_0;
    err = stringOPconcat(T_1_1, STR__137OPS_073, &T_1_2);
    if (err != ERR_ok) goto ex_0;
    err = g_envOPputl(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 output_ops_def ****/

static int reqsOPoutput_no_ops_own_init = 0;

/**** BEGIN PROCEDURE output_no_ops ****/

errcode reqsOPoutput_no_ops(e)
CLUREF e;
    {
    errcode err;
    errcode ecode2;
    CLUREF each_decl;
    CLUREF each_idn;
    CLUREF op_id;
    CLUREF this_name;
    CLUREF found;
    CLUREF ith_relt;
    CLUREF ith_rl;
    CLUREF nth_r;
        if (reqsOPoutput_no_ops_own_init == 0) {
        if (reqs_own_init == 0) {
            err = reqs_own_init_proc();
            if (err != ERR_ok) goto ex_0;
            }
        reqsOPoutput_no_ops_own_init = 1;
    }
    enter_proc(1667);

  LINE(1668);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    CLUREF T_1_3;
        T_1_2.num = reqsOParp.vec->size; 
        T_1_3 = reqsOParp;
        for (T_1_1.num = 1; T_1_1.num <= T_1_2.num; T_1_1.num++) {
            each_decl.num = T_1_3.vec->data[T_1_1.num - 1];

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

  LINE(1670);
                    {
                        {op_id = STR_;
                        }
                        }

  LINE(1671);
                    {
                    CLUREF T_3_1;
                    CLUREF T_3_2;
                    T_3_1.num = ((reqsOPop_name.str->size != STR_.str->size)? false :
                        !(bcmp(reqsOPop_name.str->data, STR_.str->data, reqsOPop_name.str->size)));
                    T_3_2.num = T_3_1.num ^ 1;
                    if (T_3_2.num == true) {

  LINE(1672);
                        {
                        CLUREF T_4_1;
                        err = stringOPconcat(STR__137op_137, reqsOPop_name, &T_4_1);
                        if (err != ERR_ok) goto ex_0;
                        op_id.num = T_4_1.num;
                        }
                        }
                        }/* end if */

  LINE(1673);
                    {
                        {CLUREF T_3_1;
                        CLUREF T_3_2;
                        CLUREF T_3_3;
                        CLUREF T_3_4;
                        err = stringOPconcat(reqsOPtype_name, op_id, &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 = idnOPget_str(each_idn, &T_3_3);
                        if (err != ERR_ok) goto ex_0;
                        err = stringOPconcat(T_3_2, T_3_3, &T_3_4);
                        if (err != ERR_ok) goto ex_0;
                        this_name.num = T_3_4.num;
                        }
                        }

  LINE(1675);
                    {
                    CLUREF T_3_1;
                    err = g_envOPadd_global(this_name, &T_3_1);
                    if (err != ERR_ok) goto ex_0;
                    if (T_3_1.num == true) {

  LINE(1677);
                        {
                            {found.tf = false;
                            }
                            }

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

  LINE(1679);
                                {
                                    {CLUREF T_5_1;
                                    T_5_1.num = ith_relt.vec->data[1];
                                    ith_rl.num = T_5_1.num;
                                    }
                                    }

  LINE(1680);
                                {
                                CLUREF T_5_1;
                                CLUREF T_5_2;
                                CLUREF T_5_3;
                                    T_5_2.num = ith_rl.vec->size; 
                                    T_5_3 = ith_rl;
                                    for (T_5_1.num = 1; T_5_1.num <= T_5_2.num; T_5_1.num++) {
                                        nth_r.num = T_5_3.vec->data[T_5_1.num - 1];

  LINE(1681);
                                        {
                                        CLUREF T_6_1;
                                        CLUREF T_6_2;
                                        T_6_1.num = nth_r.vec->data[0];
                                        err = idnOPequal(T_6_1, each_idn, &T_6_2);
                                        if (err != ERR_ok) goto ex_0;
                                        if (T_6_2.num == true) {

  LINE(1682);
                                            {
                                            found.tf = true;
                                            }

  LINE(1683);
                                            goto end_inline_for_4;
                                            }
                                            }/* end if */
                                    }
                                }
                                end_inline_for_4:;

  LINE(1686);
                                {
                                if (found.num == true) {
                                    goto end_inline_for_3;
                                    }
                                    }/* end if */
                            }
                        }
                        end_inline_for_3:;

  LINE(1688);
                        {
                        CLUREF T_4_1;
                        T_4_1.num = found.num ^ 1;
                        if (T_4_1.num == true) {

  LINE(1692);
                            {
                            err = g_envOPblankline(e);
                            if (err != ERR_ok) goto ex_0;
                            }

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

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

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

  LINE(1696);
                            {
                            CLUREF T_5_1;
                            err = stringOPconcat(this_name, STR__137REQS_073, &T_5_1);
                            if (err != ERR_ok) goto ex_0;
                            err = g_envOPputl(e, T_5_1);
                            if (err != ERR_ok) goto ex_0;
                            }

  LINE(1700);
                            {
                            err = g_envOPblankline(e);
                            if (err != ERR_ok) goto ex_0;
                            }

  LINE(1701);
                            {
                            CLUREF T_5_1;
                            CLUREF T_5_2;
                            CLUREF T_5_3;
                            CLUREF T_5_4;
                            err = stringOPconcat(this_name, STR__137REQS_040, &T_5_1);
                            if (err != ERR_ok) goto ex_0;
                            err = stringOPconcat(T_5_1, this_name, &T_5_2);
                            if (err != ERR_ok) goto ex_0;
                            err = stringOPconcat(T_5_2, STR__137reqs_137actual_040_075_040, &T_5_3);
                            if (err != ERR_ok) goto ex_0;
                            err = stringOPconcat(T_5_3, STR__1730_175_073, &T_5_4);
                            if (err != ERR_ok) goto ex_0;
                            err = g_envOPputl(e, T_5_4);
                            if (err != ERR_ok) goto ex_0;
                            }

  LINE(1705);
                            {
                            err = g_envOPblankline(e);
                            if (err != ERR_ok) goto ex_0;
                            }

  LINE(1706);
                            {
                            CLUREF T_5_1;
                            CLUREF T_5_2;
                            CLUREF T_5_3;
                            CLUREF T_5_4;
                            CLUREF T_5_5;
                            err = stringOPconcat(STR_struct_040REQS_040_052_040, this_name, &T_5_1);
                            if (err != ERR_ok) goto ex_0;
                            err = stringOPconcat(T_5_1, STR__137reqs_040_075_040, &T_5_2);
                            if (err != ERR_ok) goto ex_0;
                            err = stringOPconcat(T_5_2, STR__050struct_040REQS_040_052_051_046, &T_5_3);
                            if (err != ERR_ok) goto ex_0;
                            err = stringOPconcat(T_5_3, this_name, &T_5_4);
                            if (err != ERR_ok) goto ex_0;
                            err = stringOPconcat(T_5_4, STR__137reqs_137actual_073, &T_5_5);
                            if (err != ERR_ok) goto ex_0;
                            err = g_envOPputl(e, T_5_5);
                            if (err != ERR_ok) goto ex_0;
                            }

  LINE(1710);
                            {
                            err = g_envOPblankline(e);
                            if (err != ERR_ok) goto ex_0;
                            }

  LINE(1717);
                            {
                            err = g_envOPblankline(e);
                            if (err != ERR_ok) goto ex_0;
                            }

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

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

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

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

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

  LINE(1723);
                            {
                            CLUREF T_5_1;
                            CLUREF T_5_2;
                            err = stringOPconcat(STR__175_040, this_name, &T_5_1);
                            if (err != ERR_ok) goto ex_0;
                            err = stringOPconcat(T_5_1, STR__137OPS_073, &T_5_2);
                            if (err != ERR_ok) goto ex_0;
                            err = g_envOPputl(e, T_5_2);
                            if (err != ERR_ok) goto ex_0;
                            }

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

  LINE(1725);
                            {
                            err = g_envOPblankline(e);
                            if (err != ERR_ok) goto ex_0;
                            }
                            }
                            }/* end if */
                        }
                        }/* end if */
                }
            }
            end_inline_for_2:;
        }
    }
    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 output_no_ops ****/

typedef struct{
    int count;
    OWNPTR type_owns;
    OWNPTR op_owns;
    struct OP_ENTRY entry[9];
} reqs_OPS;

CLU_proc reqs_oe_get_id = {{0,0,0,0}, reqsOPget_id, 0};
CLU_proc reqs_oe_get_tid = {{0,0,0,0}, reqsOPget_tid, 0};
CLU_proc reqs_oe_initial_output = {{0,0,0,0}, reqsOPinitial_output, 0};
CLU_proc reqs_oe_more = {{0,0,0,0}, reqsOPmore, 0};
CLU_proc reqs_oe_output = {{0,0,0,0}, reqsOPoutput, 0};
CLU_proc reqs_oe_parms = {{0,0,0,0}, reqsOPparms, 0};
CLU_proc reqs_oe_preprocessing = {{0,0,0,0}, reqsOPpreprocessing, 0};
CLU_proc reqs_oe_reset = {{0,0,0,0}, reqsOPreset, 0};
CLU_proc reqs_oe_start = {{0,0,0,0}, reqsOPstart, 0};

reqs_OPS reqs_ops_actual = {9, (OWNPTR)&reqs_own_init, (OWNPTR)&reqs_own_init, {
    {&reqs_oe_get_id, "get_id"},
    {&reqs_oe_get_tid, "get_tid"},
    {&reqs_oe_initial_output, "initial_output"},
    {&reqs_oe_more, "more"},
    {&reqs_oe_output, "output"},
    {&reqs_oe_parms, "parms"},
    {&reqs_oe_preprocessing, "preprocessing"},
    {&reqs_oe_reset, "reset"},
    {&reqs_oe_start, "start"}}};

struct OPS *reqs_ops = (struct OPS *)&reqs_ops_actual;

/**** END CLUSTER reqs ****/

extern errcode type_cont_type_parm();
extern errcode parmOPmember_base();
extern errcode el_cont_type_parm();

/**** BEGIN PROCEDURE el_cont_type_parm ****/

errcode el_cont_type_parm(el, ret_1)
CLUREF el;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
    CLUREF each_e;
    CLUREF ty;
    CLUREF i;
    CLUREF sc;
    CLUREF each_f;
    CLUREF new_el;
    CLUREF inv;
    CLUREF ct;
    CLUREF cop;
    enter_proc(1736);

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

  LINE(1740);
            {
            CLUREF T_2_1;
            err = exprOPget_abs(each_e, &T_2_1);
            if (err != ERR_ok) goto ex_0;
            switch (T_2_1.cell->tag) {
            case 25: 
                 {CLUREF T_2_2;
                T_2_2.num = T_2_1.cell->value;
                ty.num = T_2_2.num;

  LINE(1742);
                    {
                    CLUREF T_3_1;
                    err = type_cont_type_parm(ty, &T_3_1);
                    if (err != ERR_ok) goto ex_0;
                    if (T_3_1.num == true) {
                        {
                        {
                        ret_1->tf = true;
                        }
                        {signal (ERR_ok);}}
                        }
                        }/* end if */
                    break;
                    }
            case 13: 
                 {CLUREF T_2_3;
                T_2_3.num = T_2_1.cell->value;
                i.num = T_2_3.num;

  LINE(1744);
                    {
                    CLUREF T_3_1;
                    CLUREF T_3_2;
                    err = idnOPget_str(i, &T_3_1);
                    if (err != ERR_ok) goto ex_0;
                    err = parmOPmember_base(T_3_1, &T_3_2);
                    if (err != ERR_ok) goto ex_0;
                    if (T_3_2.num == true) {
                        {
                        {
                        ret_1->tf = true;
                        }
                        {signal (ERR_ok);}}
                        }
                        }/* end if */
                    break;
                    }
            case 23: 
                 {CLUREF T_2_4;
                T_2_4.num = T_2_1.cell->value;
                sc.num = T_2_4.num;

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

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

  LINE(1749);
                            {
                            CLUREF T_4_1;
                            err = el_cont_type_parm(new_el, &T_4_1);
                            if (err != ERR_ok) goto ex_0;
                            if (T_4_1.num == true) {
                                {
                                {
                                ret_1->tf = true;
                                }
                                {signal (ERR_ok);}}
                                }
                                }/* end if */
                        }
                    }
                    end_inline_for_2:;
                    break;
                    }
            case 27: 
            case 9: 
                 {

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

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

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

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

  LINE(1758);
                    {
                    {
                    CLUREF T_3_1;
                    CLUREF T_3_2;
                    err = exprOPget_typespec(each_e, &T_3_1);
                    if (err != ERR_ok) goto ex_0;
                    err = type_cont_type_parm(T_3_1, &T_3_2);
                    if (err != ERR_ok) goto ex_0;
                    ret_1->num = T_3_2.num;
                    }
                    {signal (ERR_ok);}}
                    break;
                    }
            case 3: 
                 {CLUREF T_2_6;
                T_2_6.num = T_2_1.cell->value;
                ct.num = T_2_6.num;

  LINE(1760);
                    {
                    {
                    CLUREF T_3_1;
                    CLUREF T_3_2;
                    T_3_1.num = ct.vec->data[1];
                    err = el_cont_type_parm(T_3_1, &T_3_2);
                    if (err != ERR_ok) goto ex_0;
                    ret_1->num = T_3_2.num;
                    }
                    {signal (ERR_ok);}}
                    break;
                    }
            case 20: 
                 {CLUREF T_2_7;
                T_2_7.num = T_2_1.cell->value;
                cop.num = T_2_7.num;

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

  LINE(1771);
    {
    {
    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 el_cont_type_parm ****/


extern errcode fl_cont_type_parm();

/**** BEGIN PROCEDURE type_cont_type_parm ****/

errcode type_cont_type_parm(ty, ret_1)
CLUREF ty;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
    CLUREF i;
    CLUREF ct;
    CLUREF xt;
    enter_proc(1775);

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

  LINE(1778);
            {
            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) {
                {
                {
                ret_1->tf = true;
                }
                {signal (ERR_ok);}}
                }
                }/* end if */
            break;
            }
    case 8: 
    case 3: 
         {CLUREF T_1_3;
        T_1_3.num = T_1_1.cell->value;
        ct.num = T_1_3.num;

  LINE(1780);
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            T_2_1.num = ct.vec->data[1];
            err = el_cont_type_parm(T_2_1, &T_2_2);
            if (err != ERR_ok) goto ex_0;
            if (T_2_2.num == true) {
                {
                {
                ret_1->tf = true;
                }
                {signal (ERR_ok);}}
                }
                }/* end if */
            break;
            }
    case 7: 
         {CLUREF T_1_4;
        T_1_4.num = T_1_1.cell->value;
        xt.num = T_1_4.num;

  LINE(1782);
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            T_2_1.num = xt.vec->data[1];
            err = fl_cont_type_parm(T_2_1, &T_2_2);
            if (err != ERR_ok) goto ex_0;
            if (T_2_2.num == true) {
                {
                {
                ret_1->tf = true;
                }
                {signal (ERR_ok);}}
                }
                }/* end if */
            break;
            }
    default: {
    }
    }
    }

  LINE(1785);
    {
    {
    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 type_cont_type_parm ****/


extern errcode parmOPmember_op();
extern errcode el_cont_op_parm();
extern errcode fl_cont_op_parm();

/**** BEGIN PROCEDURE type_cont_op_parm ****/

errcode type_cont_op_parm(ty, ret_1)
CLUREF ty;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
    CLUREF i;
    CLUREF ct;
    CLUREF xt;
    enter_proc(1788);

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

  LINE(1791);
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            err = idnOPget_str(i, &T_2_1);
            if (err != ERR_ok) goto ex_0;
            err = parmOPmember_op(T_2_1, &T_2_2);
            if (err != ERR_ok) goto ex_0;
            if (T_2_2.num == true) {
                {
                {
                ret_1->tf = true;
                }
                {signal (ERR_ok);}}
                }
                }/* end if */
            break;
            }
    case 8: 
    case 3: 
         {CLUREF T_1_3;
        T_1_3.num = T_1_1.cell->value;
        ct.num = T_1_3.num;

  LINE(1793);
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            T_2_1.num = ct.vec->data[1];
            err = el_cont_op_parm(T_2_1, &T_2_2);
            if (err != ERR_ok) goto ex_0;
            if (T_2_2.num == true) {
                {
                {
                ret_1->tf = true;
                }
                {signal (ERR_ok);}}
                }
                }/* end if */
            break;
            }
    case 7: 
         {CLUREF T_1_4;
        T_1_4.num = T_1_1.cell->value;
        xt.num = T_1_4.num;

  LINE(1795);
            {
            CLUREF T_2_1;
            CLUREF T_2_2;
            T_2_1.num = xt.vec->data[1];
            err = fl_cont_op_parm(T_2_1, &T_2_2);
            if (err != ERR_ok) goto ex_0;
            if (T_2_2.num == true) {
                {
                {
                ret_1->tf = true;
                }
                {signal (ERR_ok);}}
                }
                }/* end if */
            break;
            }
    default: {
    }
    }
    }

  LINE(1798);
    {
    {
    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 type_cont_op_parm ****/



/**** BEGIN PROCEDURE fl_cont_type_parm ****/

errcode fl_cont_type_parm(fl, ret_1)
CLUREF fl;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
    CLUREF each_fs;
    CLUREF i;
    CLUREF ct;
    CLUREF xt;
    enter_proc(1801);

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

  LINE(1804);
            {
            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 5: 
                 {CLUREF T_2_3;
                T_2_3.num = T_2_2.cell->value;
                i.num = T_2_3.num;

  LINE(1806);
                    {
                    CLUREF T_3_1;
                    CLUREF T_3_2;
                    err = idnOPget_str(i, &T_3_1);
                    if (err != ERR_ok) goto ex_0;
                    err = parmOPmember_base(T_3_1, &T_3_2);
                    if (err != ERR_ok) goto ex_0;
                    if (T_3_2.num == true) {
                        {
                        {
                        ret_1->tf = true;
                        }
                        {signal (ERR_ok);}}
                        }
                        }/* end if */
                    break;
                    }
            case 8: 
            case 3: 
                 {CLUREF T_2_4;
                T_2_4.num = T_2_2.cell->value;
                ct.num = T_2_4.num;

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

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

  LINE(1814);
    {
    {
    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 fl_cont_type_parm ****/


extern errcode type_cont_op_parm();

/**** BEGIN PROCEDURE el_cont_op_parm ****/

errcode el_cont_op_parm(el, ret_1)
CLUREF el;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
    CLUREF each_e;
    CLUREF ty;
    CLUREF i;
    CLUREF ct;
    CLUREF xt;
    CLUREF inv;
    CLUREF cop;
    enter_proc(1818);

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

  LINE(1821);
            {
            CLUREF T_2_1;
            err = exprOPget_abs(each_e, &T_2_1);
            if (err != ERR_ok) goto ex_0;
            switch (T_2_1.cell->tag) {
            case 25: 
                 {CLUREF T_2_2;
                T_2_2.num = T_2_1.cell->value;
                ty.num = T_2_2.num;

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

  LINE(1826);
                            {
                            CLUREF T_4_1;
                            CLUREF T_4_2;
                            err = idnOPget_str(i, &T_4_1);
                            if (err != ERR_ok) goto ex_0;
                            err = parmOPmember_op(T_4_1, &T_4_2);
                            if (err != ERR_ok) goto ex_0;
                            if (T_4_2.num == true) {
                                {
                                {
                                ret_1->tf = true;
                                }
                                {signal (ERR_ok);}}
                                }
                                }/* end if */
                            break;
                            }
                    case 8: 
                         {CLUREF T_3_3;
                        T_3_3.num = T_3_1.cell->value;
                        ct.num = T_3_3.num;

  LINE(1829);
                            {
                            CLUREF T_4_1;
                            CLUREF T_4_2;
                            T_4_1.num = ct.vec->data[1];
                            err = el_cont_op_parm(T_4_1, &T_4_2);
                            if (err != ERR_ok) goto ex_0;
                            if (T_4_2.num == true) {
                                {
                                {
                                ret_1->tf = true;
                                }
                                {signal (ERR_ok);}}
                                }
                                }/* end if */
                            break;
                            }
                    case 3: 
                         {CLUREF T_3_4;
                        T_3_4.num = T_3_1.cell->value;
                        ct.num = T_3_4.num;

  LINE(1832);
                            {
                            CLUREF T_4_1;
                            CLUREF T_4_2;
                            T_4_1.num = ct.vec->data[1];
                            err = el_cont_op_parm(T_4_1, &T_4_2);
                            if (err != ERR_ok) goto ex_0;
                            if (T_4_2.num == true) {
                                {
                                {
                                ret_1->tf = true;
                                }
                                {signal (ERR_ok);}}
                                }
                                }/* end if */
                            break;
                            }
                    case 7: 
                         {CLUREF T_3_5;
                        T_3_5.num = T_3_1.cell->value;
                        xt.num = T_3_5.num;

  LINE(1835);
                            {
                            CLUREF T_4_1;
                            CLUREF T_4_2;
                            T_4_1.num = xt.vec->data[1];
                            err = fl_cont_op_parm(T_4_1, &T_4_2);
                            if (err != ERR_ok) goto ex_0;
                            if (T_4_2.num == true) {
                                {
                                {
                                ret_1->tf = true;
                                }
                                {signal (ERR_ok);}}
                                }
                                }/* end if */
                            break;
                            }
                    default: {
                    }
                    }
                    }
                    break;
                    }
            case 13: 
                 {CLUREF T_2_3;
                T_2_3.num = T_2_1.cell->value;
                i.num = T_2_3.num;

  LINE(1840);
                    {
                    CLUREF T_3_1;
                    CLUREF T_3_2;
                    err = idnOPget_str(i, &T_3_1);
                    if (err != ERR_ok) goto ex_0;
                    err = parmOPmember_op(T_3_1, &T_3_2);
                    if (err != ERR_ok) goto ex_0;
                    if (T_3_2.num == true) {
                        {
                        {
                        ret_1->tf = true;
                        }
                        {signal (ERR_ok);}}
                        }
                        }/* end if */
                    break;
                    }
            case 16: 
                 {CLUREF T_2_4;
                T_2_4.num = T_2_1.cell->value;
                inv.num = T_2_4.num;

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

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

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

  LINE(1845);
                    {
                    {
                    CLUREF T_3_1;
                    CLUREF T_3_2;
                    err = exprOPget_typespec(each_e, &T_3_1);
                    if (err != ERR_ok) goto ex_0;
                    err = type_cont_op_parm(T_3_1, &T_3_2);
                    if (err != ERR_ok) goto ex_0;
                    ret_1->num = T_3_2.num;
                    }
                    {signal (ERR_ok);}}
                    break;
                    }
            case 3: 
                 {CLUREF T_2_5;
                T_2_5.num = T_2_1.cell->value;
                ct.num = T_2_5.num;

  LINE(1847);
                    {
                    {
                    CLUREF T_3_1;
                    CLUREF T_3_2;
                    T_3_1.num = ct.vec->data[1];
                    err = el_cont_op_parm(T_3_1, &T_3_2);
                    if (err != ERR_ok) goto ex_0;
                    ret_1->num = T_3_2.num;
                    }
                    {signal (ERR_ok);}}
                    break;
                    }
            case 20: 
                 {CLUREF T_2_6;
                T_2_6.num = T_2_1.cell->value;
                cop.num = T_2_6.num;

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

  LINE(1854);
    {
    {
    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 el_cont_op_parm ****/



/**** BEGIN PROCEDURE fl_cont_op_parm ****/

errcode fl_cont_op_parm(fl, ret_1)
CLUREF fl;
CLUREF *ret_1;
    {
    errcode err;
    errcode ecode2;
    CLUREF each_fs;
    CLUREF i;
    CLUREF ct;
    CLUREF xt;
    enter_proc(1858);

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

  LINE(1861);
            {
            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 5: 
                 {CLUREF T_2_3;
                T_2_3.num = T_2_2.cell->value;
                i.num = T_2_3.num;

  LINE(1863);
                    {
                    CLUREF T_3_1;
                    CLUREF T_3_2;
                    err = idnOPget_str(i, &T_3_1);
                    if (err != ERR_ok) goto ex_0;
                    err = parmOPmember_op(T_3_1, &T_3_2);
                    if (err != ERR_ok) goto ex_0;
                    if (T_3_2.num == true) {
                        {
                        {
                        ret_1->tf = true;
                        }
                        {signal (ERR_ok);}}
                        }
                        }/* end if */
                    break;
                    }
            case 8: 
            case 3: 
                 {CLUREF T_2_4;
                T_2_4.num = T_2_2.cell->value;
                ct.num = T_2_4.num;

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

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

  LINE(1871);
    {
    {
    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 fl_cont_op_parm ****/

