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

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


/**** BEGIN CLUSTER xref ****/

extern errcode xref_IB_1();
extern errcode xref_IB_2();
extern errcode xref_IB_3();
extern errcode xref_IB_4();
extern errcode xref_IB_5();
extern errcode xref_IB_6();
extern errcode xref_IB_7();
extern errcode xref_IB_8();
extern errcode xref_IB_9();
extern errcode xref_IB_10();
extern errcode xref_IB_11();
extern errcode xref_IB_12();
extern errcode xref_IB_13();
extern errcode xref_IB_14();
extern errcode xref_IB_15();
extern errcode arrayOPcreate();
extern errcode recordOPget_2();
extern errcode arrayOPfetch();
extern errcode xrefOPfind_index();
extern errcode recordOPget_1();
extern errcode xrefOPentry_maker();
extern errcode arrayOPelements();
extern errcode stringOPequal();
extern errcode stringOPcopy();
extern errcode arrayOPlow();
extern errcode arrayOPhigh();
extern errcode intOPgt();
extern errcode intOPsub();
extern errcode intOPfrom_to();
extern errcode intOPadd();
extern errcode arrayOPstore();
extern errcode arrayOPremh();
extern errcode intOPfrom_to_by();
extern errcode arrayOPreml();
extern errcode intOPle();
extern errcode intOPdiv();
extern errcode stringOPlt();
extern errcode arrayOPaddh();
extern errcode arrayOPaddl();
extern errcode intOPequal();
extern errcode arrayOPsize();
extern errcode stringOPsize();
extern errcode xrefOPputout();
extern errcode streamOPputs();
extern errcode streamOPputleft();
extern errcode streamOPputc();
extern errcode streamOPputspace();
extern errcode xrefOPelements();
extern errcode xrefOPadd_ref();
extern errcode arrayOPset_low();
extern errcode arrayOPtrim();
extern errcode arrayOPdebug_print();
extern OWN_req string_ownreqs;
extern struct OPS *string_ops;
extern struct REQS *array_of_t_reqs;
extern OWN_req array_ownreqs;
extern struct OPS *array_ops;
struct OPS *array_of_string_table;
struct OPS *array_of_string_ops;
struct OPS *array_of_string_ops;
OWNPTR array_of_string_owns;
extern struct OPS *array_of_string_ops;
struct OPS  *record_key_users_ops;
extern struct OPS *record_key_users_ops;
struct OPS *array_of_record_key_users_table;
struct OPS *array_of_record_key_users_ops;
struct OPS *array_of_record_key_users_ops;
OWNPTR array_of_record_key_users_owns;
extern struct REQS *xref_op_find_index_of_etype_reqs;
extern OWN_req xref_op_find_index_ownreqs;
extern struct OPS *xref_ops;
extern OWN_req xref_ownreqs;
struct OPS *xref_op_find_index_of_record_key_users_table;
struct OPS *xref_op_find_index_of_record_key_users_ops;
OWNPTR xref_op_find_index_of_record_key_users_owns;
struct OPS *xref_op_find_index_of_string_table;
struct OPS *xref_op_find_index_of_string_ops;
OWNPTR xref_op_find_index_of_string_owns;
CLUREF STR__137_137_137_137_137_137_137_137_137_137;
CLUREF STR__012_012;
static int xref_own_init = 0;
OWN_req xref_ownreqs = {0,0};
errcode xref_own_init_proc()
{
struct {
    errcode err;
    } locals;
    enter_own_init_proc();
        if (xref_own_init == 0) {
        add_parm_info_type(0, string_ops, array_of_t_reqs);
        find_type_instance(array_ops, 1, &array_ownreqs, &(array_of_string_ops));
        add_selector_info("key", 0, string_ops); 
        add_selector_info("users", 1, array_of_string_ops); 
        find_selector_ops("record", 2, &(record_key_users_ops));
        add_parm_info_type(0, record_key_users_ops, array_of_t_reqs);
        find_type_instance(array_ops, 1, &array_ownreqs, &(array_of_record_key_users_ops));
        add_parm_info_type(0, record_key_users_ops, xref_op_find_index_of_etype_reqs);
        find_typeop_instance(xref_ops, xrefOPfind_index, 1, 0, &xref_op_find_index_ownreqs, &xref_ownreqs, &(xref_op_find_index_of_record_key_users_ops));
        add_parm_info_type(0, string_ops, xref_op_find_index_of_etype_reqs);
        find_typeop_instance(xref_ops, xrefOPfind_index, 1, 0, &xref_op_find_index_ownreqs, &xref_ownreqs, &(xref_op_find_index_of_string_ops));
        stringOPcons("__________", CLU_1, CLU_10, &STR__137_137_137_137_137_137_137_137_137_137);
        stringOPcons("\n\n", CLU_1, CLU_2, &STR__012_012);
        xref_own_init = 1;
        {signal(ERR_ok);}
    ex_0: pclu_unhandled(locals.err); {signal(ERR_failure);}
        }
    }

extern struct dbg_info* dbg_info_xrefOPcreate;
#undef MY_TRACE_FLAG
#define MY_TRACE_FLAG xrefOPcreate_TRACE
int xrefOPcreate_TRACE;
extern struct OPS *int_ops;
static Vlist13 owns_xref = {0, 13,{ {0, 2, "xref_init", &int_ops}
, {0, 2, "xrefOPcreate_init", &int_ops}
, {0, 2, "xrefOPcreate_init", &int_ops}
, {0, 2, "xrefOPcreate_init", &int_ops}
, {0, 2, "xrefOPcreate_init", &int_ops}
, {0, 2, "xrefOPcreate_init", &int_ops}
, {0, 2, "xrefOPcreate_init", &int_ops}
, {0, 2, "xrefOPcreate_init", &int_ops}
, {0, 2, "xrefOPcreate_init", &int_ops}
, {0, 2, "xrefOPcreate_init", &int_ops}
, {0, 2, "xrefOPcreate_init", &int_ops}
, {0, 2, "xrefOPcreate_init", &int_ops}
, {0, 2, "xrefOPcreate_init", &int_ops}
}
};
struct OPS *array_of_string_table;
struct OPS *array_of_string_ops;
struct OPS *array_of_string_ops;
OWNPTR array_of_string_owns;
struct OPS  *record_key_users_ops;
struct OPS *array_of_record_key_users_table;
struct OPS *array_of_record_key_users_ops;
struct OPS *array_of_record_key_users_ops;
OWNPTR array_of_record_key_users_owns;
static int xrefOPcreate_own_init = 0;

/**** BEGIN PROCEDURE create ****/

errcode xrefOPcreate(ret_1)
CLUREF *ret_1;
    {
    struct {
        struct dbg_info *DBG_INFO;
        int DBG_LINE;
        errcode err;
        errcode ecode2;
        } locals;
    locals.DBG_INFO = dbg_info_xrefOPcreate;
        if (xrefOPcreate_own_init == 0) {
        if (xref_own_init == 0) {
            locals.err = xref_own_init_proc();
            if (locals.err != ERR_ok) goto ex_0;
            }
        xrefOPcreate_own_init = 1;
    }
    enter_proc(25);

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

/**** END PROCEDURE create ****/

extern struct OPS *array_of_record_key_users_ops;
typedef struct {
    int hdr;
    int count;
    char *name;
    char *fname;
    bool is_iter;
    int is_parmd;
    int addr;
    int nargs;
    Vlist1 *vals;
    siglist0 *sigs;
    Vlist2 *locals;
    Vlist13 *owns;
    Vlist0 *ptowns;
    Vlist0 *popowns;
    Slist0 *type_formals;
    Slist0 *op_formals;
    } dbg_info_xrefOPcreate_actual;
static Vlist1 vals_xrefOPcreate = {0, 1, { {0, 2, "", &array_of_record_key_users_ops}}
};
static siglist0 sigs_xrefOPcreate = {0, 0};
static Vlist2 locals_xrefOPcreate = {0, 2,{ {0, 2, "err", &int_ops},  {0, 2, "ecode2", &int_ops}}
};
static Vlist0 popowns_xrefOPcreate = {0, 0};
Slist0 tformals_xrefOPcreate = {0, 0};
Slist0 opformals_xrefOPcreate = {0, 0};
dbg_info_xrefOPcreate_actual dbg_info_xrefOPcreate_data = {0, 12, 
    "xrefOPcreate", "/common/pub/dcurtis-temp/pclu/lib/clu/xref.clu", 0, 0, (int)xrefOPcreate, 0, 
    &vals_xrefOPcreate, &sigs_xrefOPcreate, &locals_xrefOPcreate, &owns_xref, &NO_VALS, &NO_VALS, &NO_PARMS, &NO_PARMS};
    struct dbg_info *dbg_info_xrefOPcreate = (struct dbg_info*)&dbg_info_xrefOPcreate_data;
extern struct dbg_info* dbg_info_xrefOPadd_ref;
#undef MY_TRACE_FLAG
#define MY_TRACE_FLAG xrefOPadd_ref_TRACE
int xrefOPadd_ref_TRACE;
extern errcode xrefOPadd_ref_IB_1();
struct OPS *array_of_string_table;
struct OPS *array_of_string_ops;
struct OPS *array_of_string_ops;
OWNPTR array_of_string_owns;
struct OPS  *record_key_users_ops;
struct OPS *array_of_record_key_users_table;
struct OPS *array_of_record_key_users_ops;
struct OPS *array_of_record_key_users_ops;
OWNPTR array_of_record_key_users_owns;
struct OPS *xref_op_find_index_of_record_key_users_table;
struct OPS *xref_op_find_index_of_record_key_users_ops;
OWNPTR xref_op_find_index_of_record_key_users_owns;
struct OPS *xref_op_find_index_of_string_table;
struct OPS *xref_op_find_index_of_string_ops;
OWNPTR xref_op_find_index_of_string_owns;
static int xrefOPadd_ref_own_init = 0;

/**** BEGIN PROCEDURE add_ref ****/

errcode xrefOPadd_ref(tab, key, user)
CLUREF tab;
CLUREF key;
CLUREF user;
    {
    struct {
        struct dbg_info *DBG_INFO;
        int DBG_LINE;
        errcode err;
        errcode ecode2;
        CLUREF musers;
        CLUREF muser;
        CLUREF tab;
        CLUREF key;
        CLUREF user;
        } locals;
    locals.musers.num = UNINIT;
    locals.muser.num = UNINIT;
    locals.tab.num = UNINIT;
    locals.key.num = UNINIT;
    locals.user.num = UNINIT;
    locals.DBG_INFO = dbg_info_xrefOPadd_ref;
    locals.tab = tab;
    locals.key = key;
    locals.user = user;
        if (xrefOPadd_ref_own_init == 0) {
        if (xref_own_init == 0) {
            locals.err = xref_own_init_proc();
            if (locals.err != ERR_ok) goto ex_0;
            }
        xrefOPadd_ref_own_init = 1;
    }
    enter_proc(31);

  LINE(32);
    {
        {CLUREF T_1_1;
        CLUREF T_1_2;
        CLUREF T_1_3;
        CLUREF T_1_4;
        CLUREF T_1_5;
        locals.err = proctypeOPnew(CLU_1, &T_1_1.proc);
        if (locals.err!= ERR_ok) goto ex_0;
        T_1_1.proc->proc = recordOPget_1;
        locals.err = proctypeOPnew(CLU_0, &T_1_2.proc);
        if (locals.err!= ERR_ok) goto ex_0;
        T_1_2.proc->proc = xrefOPentry_maker;
        generic_CLU_proc.type_owns = 0;
        generic_CLU_proc.op_owns = xref_op_find_index_of_record_key_users_ops->op_owns;
        generic_CLU_proc.proc = xrefOPfind_index;
        CUR_PROC_VAR.proc = &generic_CLU_proc;
        locals.err = xrefOPfind_index(locals.tab, locals.key, T_1_1, T_1_2, &T_1_3);
        if (locals.err != ERR_ok) goto ex_0;
        locals.err = arrayOPfetch(locals.tab, T_1_3, &T_1_4);
        if (locals.err != ERR_ok) goto ex_0;
        T_1_5.num = T_1_4.vec->data[1];
        locals.musers.num = T_1_5.num;
        }
        }

  LINE(33);
    {
        locals.err = arrayOPelements(locals.musers, xrefOPadd_ref_IB_1, &locals, &locals.ecode2);
        if (locals.err == ERR_iterbodyreturn) {
        signal(ERR_ok);}
        if (locals.err == ERR_iterbodysignal) {signal(locals.ecode2);}
        if (locals.err == ERR_break) locals.err = ERR_ok;
        if (locals.err == ERR_iterbodyexit) locals.err = locals.ecode2;
        if (locals.err != ERR_ok) goto ex_0;
        }

  LINE(37);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    CLUREF T_1_3;
    locals.err = proctypeOPnew(CLU_0, &T_1_1.proc);
    if (locals.err!= ERR_ok) goto ex_0;
    T_1_1.proc->proc = stringOPcopy;
    locals.err = proctypeOPnew(CLU_0, &T_1_2.proc);
    if (locals.err!= ERR_ok) goto ex_0;
    T_1_2.proc->proc = stringOPcopy;
    generic_CLU_proc.type_owns = 0;
    generic_CLU_proc.op_owns = xref_op_find_index_of_string_ops->op_owns;
    generic_CLU_proc.proc = xrefOPfind_index;
    CUR_PROC_VAR.proc = &generic_CLU_proc;
    locals.err = xrefOPfind_index(locals.musers, locals.user, T_1_1, T_1_2, &T_1_3);
    if (locals.err != ERR_ok) goto ex_0;
    }
    goto end_0;
    ex_0:
        {
            if (locals.err == ERR_failure) {signal(ERR_failure);}
            elist[0] = _pclu_erstr(locals.err);
            {signal(ERR_failure);}
        }
    end_0: {signal(ERR_ok);}
    }

/**** END PROCEDURE add_ref ****/

typedef struct {
    int hdr;
    int count;
    char *name;
    char *fname;
    bool is_iter;
    int is_parmd;
    int addr;
    int nargs;
    Vlist0 *vals;
    siglist0 *sigs;
    Vlist7 *locals;
    Vlist13 *owns;
    Vlist0 *ptowns;
    Vlist0 *popowns;
    Slist0 *type_formals;
    Slist0 *op_formals;
    } dbg_info_xrefOPadd_ref_actual;
static Vlist0 vals_xrefOPadd_ref = {0, 0};
static siglist0 sigs_xrefOPadd_ref = {0, 0};
static Vlist7 locals_xrefOPadd_ref = {0, 7,{ {0, 2, "err", &int_ops},  {0, 2, "ecode2", &int_ops},  {0, 2, "musers", &array_of_string_ops},  {0, 2, "muser", &string_ops},  {0, 2, "tab", &array_of_record_key_users_ops},  {0, 2, "key", &string_ops},  {0, 2, "user", &string_ops}}
};
static Vlist0 popowns_xrefOPadd_ref = {0, 0};
Slist0 tformals_xrefOPadd_ref = {0, 0};
Slist0 opformals_xrefOPadd_ref = {0, 0};
dbg_info_xrefOPadd_ref_actual dbg_info_xrefOPadd_ref_data = {0, 12, 
    "xrefOPadd_ref", "/common/pub/dcurtis-temp/pclu/lib/clu/xref.clu", 0, 0, (int)xrefOPadd_ref, 3, 
    &vals_xrefOPadd_ref, &sigs_xrefOPadd_ref, &locals_xrefOPadd_ref, &owns_xref, &NO_VALS, &NO_VALS, &NO_PARMS, &NO_PARMS};
    struct dbg_info *dbg_info_xrefOPadd_ref = (struct dbg_info*)&dbg_info_xrefOPadd_ref_data;

/**** BEGIN ITERATOR BODIES for add_ref ****/

errcode xrefOPadd_ref_IB_1(iv_1, locals, iecode)
errcode *iecode;
CLUREF iv_1;
struct {
    struct dbg_info *DBG_INFO;
    int DBG_LINE;
    errcode err;
    errcode ecode2;
    CLUREF musers;
    CLUREF muser;
    CLUREF tab;
    CLUREF key;
    CLUREF user;
    } *locals;
{
    locals->muser.num = iv_1.num;
    enter_iter_body_proc(34);

  FB_LINE(34);
    {
    CLUREF T_1_1;
    locals->err = stringOPequal(locals->user, locals->muser, &T_1_1);
    if (locals->err != ERR_ok) goto ex_0;
    if (T_1_1.num == true) {

  FB_LINE(35);
        {
        *iecode = ERR_ok;
        {signal(ERR_iterbodyreturn);}
        }
        }
        }/* end if */
    {signal(ERR_ok);}
    ex_0:
        {
            *iecode = locals->err;
            {signal(ERR_iterbodyexit);}}
    end_0: {signal(ERR_ok);}
    }/* end xrefOPadd_ref_IB_1 */

/**** END ITERATOR BODIES for add_ref ****/

extern struct dbg_info* dbg_info_xrefOPadd_refs;
#undef MY_TRACE_FLAG
#define MY_TRACE_FLAG xrefOPadd_refs_TRACE
int xrefOPadd_refs_TRACE;
extern errcode xrefOPadd_refs_IB_1();
extern errcode xrefOPadd_refs_IB_2();
struct OPS *array_of_string_table;
struct OPS *array_of_string_ops;
struct OPS *array_of_string_ops;
OWNPTR array_of_string_owns;
struct OPS  *record_key_users_ops;
struct OPS *array_of_record_key_users_table;
struct OPS *array_of_record_key_users_ops;
struct OPS *array_of_record_key_users_ops;
OWNPTR array_of_record_key_users_owns;
struct OPS *xref_op_find_index_of_record_key_users_table;
struct OPS *xref_op_find_index_of_record_key_users_ops;
OWNPTR xref_op_find_index_of_record_key_users_owns;
struct OPS *xref_op_find_index_of_string_table;
struct OPS *xref_op_find_index_of_string_ops;
OWNPTR xref_op_find_index_of_string_owns;
static int xrefOPadd_refs_own_init = 0;

/**** BEGIN PROCEDURE add_refs ****/

errcode xrefOPadd_refs(tab, key, users)
CLUREF tab;
CLUREF key;
CLUREF users;
    {
    struct {
        struct dbg_info *DBG_INFO;
        int DBG_LINE;
        errcode err;
        errcode ecode2;
        CLUREF musers;
        CLUREF user;
        CLUREF new;
        CLUREF muser;
        CLUREF tab;
        CLUREF key;
        CLUREF users;
        } locals;
    locals.musers.num = UNINIT;
    locals.user.num = UNINIT;
    locals.new.num = UNINIT;
    locals.muser.num = UNINIT;
    locals.tab.num = UNINIT;
    locals.key.num = UNINIT;
    locals.users.num = UNINIT;
    locals.DBG_INFO = dbg_info_xrefOPadd_refs;
    locals.tab = tab;
    locals.key = key;
    locals.users = users;
        if (xrefOPadd_refs_own_init == 0) {
        if (xref_own_init == 0) {
            locals.err = xref_own_init_proc();
            if (locals.err != ERR_ok) goto ex_0;
            }
        xrefOPadd_refs_own_init = 1;
    }
    enter_proc(42);

  LINE(43);
    {
        {CLUREF T_1_1;
        CLUREF T_1_2;
        CLUREF T_1_3;
        CLUREF T_1_4;
        CLUREF T_1_5;
        locals.err = proctypeOPnew(CLU_1, &T_1_1.proc);
        if (locals.err!= ERR_ok) goto ex_0;
        T_1_1.proc->proc = recordOPget_1;
        locals.err = proctypeOPnew(CLU_0, &T_1_2.proc);
        if (locals.err!= ERR_ok) goto ex_0;
        T_1_2.proc->proc = xrefOPentry_maker;
        generic_CLU_proc.type_owns = 0;
        generic_CLU_proc.op_owns = xref_op_find_index_of_record_key_users_ops->op_owns;
        generic_CLU_proc.proc = xrefOPfind_index;
        CUR_PROC_VAR.proc = &generic_CLU_proc;
        locals.err = xrefOPfind_index(locals.tab, locals.key, T_1_1, T_1_2, &T_1_3);
        if (locals.err != ERR_ok) goto ex_0;
        locals.err = arrayOPfetch(locals.tab, T_1_3, &T_1_4);
        if (locals.err != ERR_ok) goto ex_0;
        T_1_5.num = T_1_4.vec->data[1];
        locals.musers.num = T_1_5.num;
        }
        }

  LINE(44);
    {
        locals.err = arrayOPelements(locals.users, xrefOPadd_refs_IB_1, &locals, &locals.ecode2);
        if (locals.err == ERR_iterbodyreturn) {
        signal(ERR_ok);}
        if (locals.err == ERR_iterbodysignal) {signal(locals.ecode2);}
        if (locals.err == ERR_break) locals.err = ERR_ok;
        if (locals.err == ERR_iterbodyexit) locals.err = locals.ecode2;
        if (locals.err != ERR_ok) goto ex_0;
        }
    goto end_0;
    ex_0:
        {
            if (locals.err == ERR_failure) {signal(ERR_failure);}
            elist[0] = _pclu_erstr(locals.err);
            {signal(ERR_failure);}
        }
    end_0: {signal(ERR_ok);}
    }

/**** END PROCEDURE add_refs ****/

extern struct OPS *bool_ops;
typedef struct {
    int hdr;
    int count;
    char *name;
    char *fname;
    bool is_iter;
    int is_parmd;
    int addr;
    int nargs;
    Vlist0 *vals;
    siglist0 *sigs;
    Vlist9 *locals;
    Vlist13 *owns;
    Vlist0 *ptowns;
    Vlist0 *popowns;
    Slist0 *type_formals;
    Slist0 *op_formals;
    } dbg_info_xrefOPadd_refs_actual;
static Vlist0 vals_xrefOPadd_refs = {0, 0};
static siglist0 sigs_xrefOPadd_refs = {0, 0};
static Vlist9 locals_xrefOPadd_refs = {0, 9,{ {0, 2, "err", &int_ops},  {0, 2, "ecode2", &int_ops},  {0, 2, "musers", &array_of_string_ops},  {0, 2, "user", &string_ops},  {0, 2, "new", &bool_ops},  {0, 2, "muser", &string_ops},  {0, 2, "tab", &array_of_record_key_users_ops},  {0, 2, "key", &string_ops},  {0, 2, "users", &array_of_string_ops}}
};
static Vlist0 popowns_xrefOPadd_refs = {0, 0};
Slist0 tformals_xrefOPadd_refs = {0, 0};
Slist0 opformals_xrefOPadd_refs = {0, 0};
dbg_info_xrefOPadd_refs_actual dbg_info_xrefOPadd_refs_data = {0, 12, 
    "xrefOPadd_refs", "/common/pub/dcurtis-temp/pclu/lib/clu/xref.clu", 0, 0, (int)xrefOPadd_refs, 3, 
    &vals_xrefOPadd_refs, &sigs_xrefOPadd_refs, &locals_xrefOPadd_refs, &owns_xref, &NO_VALS, &NO_VALS, &NO_PARMS, &NO_PARMS};
    struct dbg_info *dbg_info_xrefOPadd_refs = (struct dbg_info*)&dbg_info_xrefOPadd_refs_data;

/**** BEGIN ITERATOR BODIES for add_refs ****/

errcode xrefOPadd_refs_IB_1(iv_1, locals, iecode)
errcode *iecode;
CLUREF iv_1;
struct {
    struct dbg_info *DBG_INFO;
    int DBG_LINE;
    errcode err;
    errcode ecode2;
    CLUREF musers;
    CLUREF user;
    CLUREF new;
    CLUREF muser;
    CLUREF tab;
    CLUREF key;
    CLUREF users;
    } *locals;
{
    locals->user.num = iv_1.num;
    enter_iter_body_proc(45);

  FB_LINE(45);
    {
        {locals->new.tf = true;
        }
        }

  FB_LINE(46);
    {
        locals->err = arrayOPelements(locals->musers, xrefOPadd_refs_IB_2, locals, iecode);
        if (locals->err != ERR_ok) {
        if (locals->err == ERR_iterbodyreturn) {signal(ERR_iterbodyreturn);}
        if (locals->err == ERR_iterbodysignal) {signal(ERR_iterbodysignal);}
        if (locals->err == ERR_break) locals->err = ERR_ok;
        if (locals->err == ERR_iterbodyexit) 
        locals->err = *iecode;
        if (locals->err != ERR_ok) 
        goto ex_0;
        }
        }

  FB_LINE(52);
    {
    if (locals->new.num == true) {

  FB_LINE(53);
        {
        CLUREF T_2_1;
        CLUREF T_2_2;
        CLUREF T_2_3;
        locals->err = proctypeOPnew(CLU_0, &T_2_1.proc);
        if (locals->err!= ERR_ok) goto ex_0;
        T_2_1.proc->proc = stringOPcopy;
        locals->err = proctypeOPnew(CLU_0, &T_2_2.proc);
        if (locals->err!= ERR_ok) goto ex_0;
        T_2_2.proc->proc = stringOPcopy;
        generic_CLU_proc.type_owns = 0;
        generic_CLU_proc.op_owns = xref_op_find_index_of_string_ops->op_owns;
        generic_CLU_proc.proc = xrefOPfind_index;
        CUR_PROC_VAR.proc = &generic_CLU_proc;
        locals->err = xrefOPfind_index(locals->musers, locals->user, T_2_1, T_2_2, &T_2_3);
        if (locals->err != ERR_ok) goto ex_0;
        }
        }
        }/* end if */
    {signal(ERR_ok);}
    ex_0:
        {
            *iecode = locals->err;
            {signal(ERR_iterbodyexit);}}
    end_0: {signal(ERR_ok);}
    }/* end xrefOPadd_refs_IB_1 */
errcode xrefOPadd_refs_IB_2(iv_1, locals, iecode)
errcode *iecode;
CLUREF iv_1;
struct {
    struct dbg_info *DBG_INFO;
    int DBG_LINE;
    errcode err;
    errcode ecode2;
    CLUREF musers;
    CLUREF user;
    CLUREF new;
    CLUREF muser;
    CLUREF tab;
    CLUREF key;
    CLUREF users;
    } *locals;
{
    locals->muser.num = iv_1.num;
    enter_iter_body_proc(47);

  FB_LINE(47);
    {
    CLUREF T_1_1;
    locals->err = stringOPequal(locals->user, locals->muser, &T_1_1);
    if (locals->err != ERR_ok) goto ex_0;
    if (T_1_1.num == true) {

  FB_LINE(48);
        {
        locals->new.tf = false;
        }

  FB_LINE(49);
        {signal(ERR_break);}
        }
        }/* end if */
    {signal(ERR_ok);}
    ex_0:
        {
            *iecode = locals->err;
            {signal(ERR_iterbodyexit);}}
    end_0: {signal(ERR_ok);}
    }/* end xrefOPadd_refs_IB_2 */

/**** END ITERATOR BODIES for add_refs ****/

extern struct dbg_info* dbg_info_xrefOPrem_refs;
#undef MY_TRACE_FLAG
#define MY_TRACE_FLAG xrefOPrem_refs_TRACE
int xrefOPrem_refs_TRACE;
extern errcode xrefOPrem_refs_IB_1();
extern errcode xrefOPrem_refs_IB_2();
struct OPS *array_of_string_table;
struct OPS *array_of_string_ops;
struct OPS *array_of_string_ops;
OWNPTR array_of_string_owns;
struct OPS  *record_key_users_ops;
struct OPS *xref_op_find_index_of_record_key_users_table;
struct OPS *xref_op_find_index_of_record_key_users_ops;
OWNPTR xref_op_find_index_of_record_key_users_owns;
struct OPS *array_of_record_key_users_table;
struct OPS *array_of_record_key_users_ops;
struct OPS *array_of_record_key_users_ops;
OWNPTR array_of_record_key_users_owns;
static int xrefOPrem_refs_own_init = 0;

/**** BEGIN PROCEDURE rem_refs ****/

errcode xrefOPrem_refs(tab, key, ret_1)
CLUREF tab;
CLUREF key;
CLUREF *ret_1;
    {
    struct {
        struct dbg_info *DBG_INFO;
        int DBG_LINE;
        errcode err;
        errcode ecode2;
        CLUREF i;
        CLUREF users;
        CLUREF ll;
        CLUREF hh;
        CLUREF j;
        CLUREF tab;
        CLUREF key;
        } locals;
    locals.i.num = UNINIT;
    locals.users.num = UNINIT;
    locals.ll.num = UNINIT;
    locals.hh.num = UNINIT;
    locals.j.num = UNINIT;
    locals.tab.num = UNINIT;
    locals.key.num = UNINIT;
    locals.DBG_INFO = dbg_info_xrefOPrem_refs;
    locals.tab = tab;
    locals.key = key;
        if (xrefOPrem_refs_own_init == 0) {
        if (xref_own_init == 0) {
            locals.err = xref_own_init_proc();
            if (locals.err != ERR_ok) goto ex_0;
            }
        xrefOPrem_refs_own_init = 1;
    }
    enter_proc(59);

  LINE(60);
    {
        {CLUREF T_1_1;
        CLUREF T_1_2;
        CLUREF T_1_3;
        locals.err = proctypeOPnew(CLU_1, &T_1_1.proc);
        if (locals.err!= ERR_ok) goto ex_0;
        T_1_1.proc->proc = recordOPget_1;
        locals.err = proctypeOPnew(CLU_0, &T_1_2.proc);
        if (locals.err!= ERR_ok) goto ex_0;
        T_1_2.proc->proc = xrefOPentry_maker;
        generic_CLU_proc.type_owns = 0;
        generic_CLU_proc.op_owns = xref_op_find_index_of_record_key_users_ops->op_owns;
        generic_CLU_proc.proc = xrefOPfind_index;
        CUR_PROC_VAR.proc = &generic_CLU_proc;
        locals.err = xrefOPfind_index(locals.tab, locals.key, T_1_1, T_1_2, &T_1_3);
        if (locals.err != ERR_ok) goto ex_0;
        locals.i.num = T_1_3.num;
        }
        }

  LINE(61);
    {
        {CLUREF T_1_1;
        CLUREF T_1_2;
        locals.err = arrayOPfetch(locals.tab, locals.i, &T_1_1);
        if (locals.err != ERR_ok) goto ex_0;
        T_1_2.num = T_1_1.vec->data[1];
        locals.users.num = T_1_2.num;
        }
        }

  LINE(62);
    {
        {CLUREF T_1_1;
        T_1_1.num = locals.tab.array->ext_low;
        locals.ll.num = T_1_1.num;
        }
        }

  LINE(63);
    {
        {CLUREF T_1_1;
        T_1_1.num = locals.tab.array->ext_high;
        locals.hh.num = T_1_1.num;
        }
        }

  LINE(64);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    CLUREF T_1_3;
    locals.err = intOPsub(locals.i, locals.ll, &T_1_1);
    if (locals.err != ERR_ok) goto ex_0;
    locals.err = intOPsub(locals.hh, locals.i, &T_1_2);
    if (locals.err != ERR_ok) goto ex_0;
    T_1_3.num = (T_1_1.num > T_1_2.num)? true : false;
    if (T_1_3.num == true) {

  LINE(65);
        {
            CLUREF T_2_1;
            locals.err = intOPadd(locals.i, CLU_1, &T_2_1);
            if (locals.err != ERR_ok) goto ex_0;
            locals.err = intOPfrom_to(T_2_1, locals.hh, xrefOPrem_refs_IB_1, &locals, &locals.ecode2);
            if (locals.err == ERR_iterbodyreturn) {
            ret_1->num = elist[0].num;
            signal(ERR_ok);}
            if (locals.err == ERR_iterbodysignal) {signal(locals.ecode2);}
            if (locals.err == ERR_break) locals.err = ERR_ok;
            if (locals.err == ERR_iterbodyexit) locals.err = locals.ecode2;
            if (locals.err != ERR_ok) goto ex_0;
            }

  LINE(68);
        {
        CLUREF T_2_1;
        locals.err = arrayOPremh(locals.tab, &T_2_1);
        if (locals.err != ERR_ok) goto ex_0;
        }
        }
    else {

  LINE(69);
        {
            CLUREF T_2_1;
            CLUREF T_2_2;
            locals.err = intOPsub(locals.i, CLU_1, &T_2_1);
            if (locals.err != ERR_ok) goto ex_0;
            T_2_2.num = -1;
            locals.err = intOPfrom_to_by(T_2_1, locals.ll, T_2_2, xrefOPrem_refs_IB_2, &locals, &locals.ecode2);
            if (locals.err == ERR_iterbodyreturn) {
            ret_1->num = elist[0].num;
            signal(ERR_ok);}
            if (locals.err == ERR_iterbodysignal) {signal(locals.ecode2);}
            if (locals.err == ERR_break) locals.err = ERR_ok;
            if (locals.err == ERR_iterbodyexit) locals.err = locals.ecode2;
            if (locals.err != ERR_ok) goto ex_0;
            }

  LINE(72);
        {
        CLUREF T_2_1;
        locals.err = arrayOPreml(locals.tab, &T_2_1);
        if (locals.err != ERR_ok) goto ex_0;
        }
        }}/* end if */

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

/**** END PROCEDURE rem_refs ****/

typedef struct {
    int hdr;
    int count;
    char *name;
    char *fname;
    bool is_iter;
    int is_parmd;
    int addr;
    int nargs;
    Vlist1 *vals;
    siglist0 *sigs;
    Vlist9 *locals;
    Vlist13 *owns;
    Vlist0 *ptowns;
    Vlist0 *popowns;
    Slist0 *type_formals;
    Slist0 *op_formals;
    } dbg_info_xrefOPrem_refs_actual;
static Vlist1 vals_xrefOPrem_refs = {0, 1, { {0, 2, "", &array_of_string_ops}}
};
static siglist0 sigs_xrefOPrem_refs = {0, 0};
static Vlist9 locals_xrefOPrem_refs = {0, 9,{ {0, 2, "err", &int_ops},  {0, 2, "ecode2", &int_ops},  {0, 2, "i", &int_ops},  {0, 2, "users", &array_of_string_ops},  {0, 2, "ll", &int_ops},  {0, 2, "hh", &int_ops},  {0, 2, "j", &int_ops},  {0, 2, "tab", &array_of_record_key_users_ops},  {0, 2, "key", &string_ops}}
};
static Vlist0 popowns_xrefOPrem_refs = {0, 0};
Slist0 tformals_xrefOPrem_refs = {0, 0};
Slist0 opformals_xrefOPrem_refs = {0, 0};
dbg_info_xrefOPrem_refs_actual dbg_info_xrefOPrem_refs_data = {0, 12, 
    "xrefOPrem_refs", "/common/pub/dcurtis-temp/pclu/lib/clu/xref.clu", 0, 0, (int)xrefOPrem_refs, 2, 
    &vals_xrefOPrem_refs, &sigs_xrefOPrem_refs, &locals_xrefOPrem_refs, &owns_xref, &NO_VALS, &NO_VALS, &NO_PARMS, &NO_PARMS};
    struct dbg_info *dbg_info_xrefOPrem_refs = (struct dbg_info*)&dbg_info_xrefOPrem_refs_data;

/**** BEGIN ITERATOR BODIES for rem_refs ****/

errcode xrefOPrem_refs_IB_1(iv_1, locals, iecode)
errcode *iecode;
CLUREF iv_1;
struct {
    struct dbg_info *DBG_INFO;
    int DBG_LINE;
    errcode err;
    errcode ecode2;
    CLUREF i;
    CLUREF users;
    CLUREF ll;
    CLUREF hh;
    CLUREF j;
    CLUREF tab;
    CLUREF key;
    } *locals;
{
    locals->j.num = iv_1.num;
    enter_iter_body_proc(66);

  FB_LINE(66);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    locals->err = intOPsub(locals->j, CLU_1, &T_1_1);
    if (locals->err != ERR_ok) goto ex_0;
    locals->err = arrayOPfetch(locals->tab, locals->j, &T_1_2);
    if (locals->err != ERR_ok) goto ex_0;
    locals->err = arrayOPstore(locals->tab, T_1_1, T_1_2);
    if (locals->err != ERR_ok) goto ex_0;
    }
    {signal(ERR_ok);}
    ex_0:
        {
            *iecode = locals->err;
            {signal(ERR_iterbodyexit);}}
    end_0: {signal(ERR_ok);}
    }/* end xrefOPrem_refs_IB_1 */
errcode xrefOPrem_refs_IB_2(iv_1, locals, iecode)
errcode *iecode;
CLUREF iv_1;
struct {
    struct dbg_info *DBG_INFO;
    int DBG_LINE;
    errcode err;
    errcode ecode2;
    CLUREF i;
    CLUREF users;
    CLUREF ll;
    CLUREF hh;
    CLUREF j;
    CLUREF tab;
    CLUREF key;
    } *locals;
{
    locals->j.num = iv_1.num;
    enter_iter_body_proc(70);

  FB_LINE(70);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    locals->err = intOPadd(locals->j, CLU_1, &T_1_1);
    if (locals->err != ERR_ok) goto ex_0;
    locals->err = arrayOPfetch(locals->tab, locals->j, &T_1_2);
    if (locals->err != ERR_ok) goto ex_0;
    locals->err = arrayOPstore(locals->tab, T_1_1, T_1_2);
    if (locals->err != ERR_ok) goto ex_0;
    }
    {signal(ERR_ok);}
    ex_0:
        {
            *iecode = locals->err;
            {signal(ERR_iterbodyexit);}}
    end_0: {signal(ERR_ok);}
    }/* end xrefOPrem_refs_IB_2 */

/**** END ITERATOR BODIES for rem_refs ****/

extern struct dbg_info* dbg_info_xrefOPentry_maker;
#undef MY_TRACE_FLAG
#define MY_TRACE_FLAG xrefOPentry_maker_TRACE
int xrefOPentry_maker_TRACE;
struct OPS *array_of_string_table;
struct OPS *array_of_string_ops;
struct OPS *array_of_string_ops;
OWNPTR array_of_string_owns;
struct OPS  *record_key_users_ops;
static int xrefOPentry_maker_own_init = 0;

/**** BEGIN PROCEDURE entry_maker ****/

errcode xrefOPentry_maker(key, ret_1)
CLUREF key;
CLUREF *ret_1;
    {
    struct {
        struct dbg_info *DBG_INFO;
        int DBG_LINE;
        errcode err;
        errcode ecode2;
        CLUREF key;
        } locals;
    locals.key.num = UNINIT;
    locals.DBG_INFO = dbg_info_xrefOPentry_maker;
    locals.key = key;
        if (xrefOPentry_maker_own_init == 0) {
        if (xref_own_init == 0) {
            locals.err = xref_own_init_proc();
            if (locals.err != ERR_ok) goto ex_0;
            }
        xrefOPentry_maker_own_init = 1;
    }
    enter_proc(79);

  LINE(80);
    {
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    RecordAlloc(2, T_1_1);
    T_1_1.vec->data[0]  = locals.key.num;
    locals.err = arrayOPcreate(CLU_0, &T_1_2);
    if (locals.err != ERR_ok) goto ex_0;
    T_1_1.vec->data[1]  = T_1_2.num;
    ret_1->num = T_1_1.num;
    }
    {signal (ERR_ok);}}
    goto end_0;
    ex_0:
        {
            if (locals.err == ERR_failure) {signal(ERR_failure);}
            elist[0] = _pclu_erstr(locals.err);
            {signal(ERR_failure);}
        }
    end_0: elist[0].str = no_return_values_STRING;
        {signal(ERR_failure);}
    }

/**** END PROCEDURE entry_maker ****/

typedef struct {
    int hdr;
    int count;
    char *name;
    char *fname;
    bool is_iter;
    int is_parmd;
    int addr;
    int nargs;
    Vlist1 *vals;
    siglist0 *sigs;
    Vlist3 *locals;
    Vlist13 *owns;
    Vlist0 *ptowns;
    Vlist0 *popowns;
    Slist0 *type_formals;
    Slist0 *op_formals;
    } dbg_info_xrefOPentry_maker_actual;
static Vlist1 vals_xrefOPentry_maker = {0, 1, { {0, 2, "", &record_key_users_ops}}
};
static siglist0 sigs_xrefOPentry_maker = {0, 0};
static Vlist3 locals_xrefOPentry_maker = {0, 3,{ {0, 2, "err", &int_ops},  {0, 2, "ecode2", &int_ops},  {0, 2, "key", &string_ops}}
};
static Vlist0 popowns_xrefOPentry_maker = {0, 0};
Slist0 tformals_xrefOPentry_maker = {0, 0};
Slist0 opformals_xrefOPentry_maker = {0, 0};
dbg_info_xrefOPentry_maker_actual dbg_info_xrefOPentry_maker_data = {0, 12, 
    "xrefOPentry_maker", "/common/pub/dcurtis-temp/pclu/lib/clu/xref.clu", 0, 0, (int)xrefOPentry_maker, 1, 
    &vals_xrefOPentry_maker, &sigs_xrefOPentry_maker, &locals_xrefOPentry_maker, &owns_xref, &NO_VALS, &NO_VALS, &NO_PARMS, &NO_PARMS};
    struct dbg_info *dbg_info_xrefOPentry_maker = (struct dbg_info*)&dbg_info_xrefOPentry_maker_data;
extern struct dbg_info* dbg_info_xrefOPfind_index;
#undef MY_TRACE_FLAG
#define MY_TRACE_FLAG xrefOPfind_index_TRACE
int xrefOPfind_index_TRACE;

typedef struct {
int count;
} xref_op_find_index_of_etype_REQS;

xref_op_find_index_of_etype_REQS xref_op_find_index_of_etype_reqs_actual = {0};

struct REQS * xref_op_find_index_of_etype_reqs = (struct REQS *)&xref_op_find_index_of_etype_reqs_actual;


typedef struct {
    int count;
    OWNPTR type_owns;
    OWNPTR op_owns;
    } xref_op_find_index_of_etype_OPS;

extern errcode xrefOPfind_index_IB_1();
extern errcode xrefOPfind_index_IB_2();
extern OWN_req int_ownreqs;

typedef struct {
    int find_index_own_init;
    xref_op_find_index_of_etype_OPS *etype_ops;
    struct OPS *array_of_etype_table;
    struct OPS *array_of_etype_ops;
    OWNPTR array_of_etype_owns;
    } xref_op_find_index_OWN_DEFN;
OWN_req xref_op_find_index_ownreqs = {sizeof(xref_op_find_index_OWN_DEFN), 1};


/**** BEGIN PROCEDURE find_index ****/

errcode xrefOPfind_index(tab, key, get, cons, ret_1)
CLUREF tab;
CLUREF key;
CLUREF get;
CLUREF cons;
CLUREF *ret_1;
    {
    struct {
        struct dbg_info *DBG_INFO;
        int DBG_LINE;
        errcode err;
        errcode ecode2;
        xref_op_find_index_OWN_DEFN *op_own_ptr;
        CLUREF ll;
        CLUREF hh;
        CLUREF l;
        CLUREF h;
        CLUREF m;
        CLUREF me;
        CLUREF mkey;
        CLUREF ent;
        CLUREF n;
        CLUREF tab;
        CLUREF key;
        CLUREF get;
        CLUREF cons;
        } locals;
    locals.ll.num = UNINIT;
    locals.hh.num = UNINIT;
    locals.l.num = UNINIT;
    locals.h.num = UNINIT;
    locals.m.num = UNINIT;
    locals.me.num = UNINIT;
    locals.mkey.num = UNINIT;
    locals.ent.num = UNINIT;
    locals.n.num = UNINIT;
    locals.tab.num = UNINIT;
    locals.key.num = UNINIT;
    locals.get.num = UNINIT;
    locals.cons.num = UNINIT;
    locals.DBG_INFO = dbg_info_xrefOPfind_index;
    locals.tab = tab;
    locals.key = key;
    locals.get = get;
    locals.cons = cons;
    locals.op_own_ptr = (xref_op_find_index_OWN_DEFN*) CUR_PROC_VAR.proc->op_owns;
        if (locals.op_own_ptr->find_index_own_init == 0) {
        add_parm_info_type(0, locals.op_own_ptr->etype_ops, array_of_t_reqs);
        find_type_instance(array_ops, 1, &array_ownreqs, &(locals.op_own_ptr->array_of_etype_ops));
        }
        if (locals.op_own_ptr->find_index_own_init == 0) {
        locals.op_own_ptr->find_index_own_init = 1;
    }
    enter_proc(86);

  LINE(91);
    {
        {CLUREF T_1_1;
        T_1_1.num = locals.tab.array->ext_low;
        locals.ll.num = T_1_1.num;
        }
        }

  LINE(92);
    {
        {CLUREF T_1_1;
        T_1_1.num = locals.tab.array->ext_high;
        locals.hh.num = T_1_1.num;
        }
        }

  LINE(93);
    {
        {locals.l.num = locals.ll.num;
        }
        }

  LINE(94);
    {
        {locals.h.num = locals.hh.num;
        }
        }

  LINE(95);
    for (;;) {
        CLUREF T_1_1;
        T_1_1.num = (locals.l.num <= locals.h.num)? true : false;
        if (T_1_1.num != true) { break; }

  LINE(96);
        {
            {CLUREF T_2_1;
            CLUREF T_2_2;
            locals.err = intOPadd(locals.l, locals.h, &T_2_1);
            if (locals.err != ERR_ok) goto ex_0;
            locals.err = intOPdiv(T_2_1, CLU_2, &T_2_2);
            if (locals.err != ERR_ok) goto ex_0;
            locals.m.num = T_2_2.num;
            }
            }

  LINE(97);
        {
            {CLUREF T_2_1;
            locals.err = arrayOPfetch(locals.tab, locals.m, &T_2_1);
            if (locals.err != ERR_ok) goto ex_0;
            locals.me.num = T_2_1.num;
            }
            }

  LINE(98);
        {
            {CLUREF T_2_1;
            CUR_PROC_VAR = locals.get;
            locals.err = locals.get.proc->proc(locals.me, &T_2_1);
            if (locals.err != ERR_ok) goto ex_0;
            locals.mkey.num = T_2_1.num;
            }
            }

  LINE(99);
        {
        CLUREF T_2_1;
        locals.err = stringOPlt(locals.key, locals.mkey, &T_2_1);
        if (locals.err != ERR_ok) goto ex_0;
        if (T_2_1.num == true) {

  LINE(100);
            {
            CLUREF T_3_1;
            locals.err = intOPsub(locals.m, CLU_1, &T_3_1);
            if (locals.err != ERR_ok) goto ex_0;
            locals.h.num = T_3_1.num;
            }
            }
        else {
        CLUREF T_2_2;
        locals.err = stringOPequal(locals.key, locals.mkey, &T_2_2);
        if (locals.err != ERR_ok) goto ex_0;
        if (T_2_2.num == true) {

  LINE(102);
            {
            {
            ret_1->num = locals.m.num;
            }
            {signal (ERR_ok);}}
            }
        else {

  LINE(103);
            {
            CLUREF T_3_1;
            locals.err = intOPadd(locals.m, CLU_1, &T_3_1);
            if (locals.err != ERR_ok) goto ex_0;
            locals.l.num = T_3_1.num;
            }
            }}}/* end if */
        }
        end_while_1:;

  LINE(106);
    {
        {CLUREF T_1_1;
        CUR_PROC_VAR = locals.cons;
        locals.err = locals.cons.proc->proc(locals.key, &T_1_1);
        if (locals.err != ERR_ok) goto ex_0;
        locals.ent.num = T_1_1.num;
        }
        }

  LINE(107);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    CLUREF T_1_3;
    locals.err = intOPsub(locals.hh, locals.l, &T_1_1);
    if (locals.err != ERR_ok) goto ex_0;
    locals.err = intOPsub(locals.h, locals.ll, &T_1_2);
    if (locals.err != ERR_ok) goto ex_0;
    T_1_3.num = (T_1_1.num <= T_1_2.num)? true : false;
    if (T_1_3.num == true) {

  LINE(108);
        {
        locals.err = arrayOPaddh(locals.tab, locals.ent);
        if (locals.err != ERR_ok) goto ex_0;
        }

  LINE(109);
        {
            CLUREF T_2_1;
            T_2_1.num = -1;
            locals.err = intOPfrom_to_by(locals.hh, locals.l, T_2_1, xrefOPfind_index_IB_1, &locals, &locals.ecode2);
            if (locals.err == ERR_iterbodyreturn) {
            ret_1->num = elist[0].num;
            signal(ERR_ok);}
            if (locals.err == ERR_iterbodysignal) {signal(locals.ecode2);}
            if (locals.err == ERR_break) locals.err = ERR_ok;
            if (locals.err == ERR_iterbodyexit) locals.err = locals.ecode2;
            if (locals.err != ERR_ok) goto ex_0;
            }

  LINE(112);
        {
        locals.err = arrayOPstore(locals.tab, locals.l, locals.ent);
        if (locals.err != ERR_ok) goto ex_0;
        }

  LINE(113);
        {
        {
        ret_1->num = locals.l.num;
        }
        {signal (ERR_ok);}}
        }
    else {

  LINE(114);
        {
        locals.err = arrayOPaddl(locals.tab, locals.ent);
        if (locals.err != ERR_ok) goto ex_0;
        }

  LINE(115);
        {
            locals.err = intOPfrom_to_by(locals.ll, locals.h, CLU_1, xrefOPfind_index_IB_2, &locals, &locals.ecode2);
            if (locals.err == ERR_iterbodyreturn) {
            ret_1->num = elist[0].num;
            signal(ERR_ok);}
            if (locals.err == ERR_iterbodysignal) {signal(locals.ecode2);}
            if (locals.err == ERR_break) locals.err = ERR_ok;
            if (locals.err == ERR_iterbodyexit) locals.err = locals.ecode2;
            if (locals.err != ERR_ok) goto ex_0;
            }

  LINE(118);
        {
        locals.err = arrayOPstore(locals.tab, locals.h, locals.ent);
        if (locals.err != ERR_ok) goto ex_0;
        }

  LINE(119);
        {
        {
        ret_1->num = locals.h.num;
        }
        {signal (ERR_ok);}}
        }}/* end if */
    goto end_0;
    ex_0:
        {
            if (locals.err == ERR_failure) {signal(ERR_failure);}
            elist[0] = _pclu_erstr(locals.err);
            {signal(ERR_failure);}
        }
    end_0: elist[0].str = no_return_values_STRING;
        {signal(ERR_failure);}
    }

/**** END PROCEDURE find_index ****/

typedef struct {
    int hdr;
    int count;
    char *name;
    char *fname;
    bool is_iter;
    int is_parmd;
    int addr;
    int nargs;
    Vlist1 *vals;
    siglist0 *sigs;
    Vlist16 *locals;
    Vlist13 *owns;
    Vlist0 *ptowns;
    Vlist5 *popowns;
    Slist0 *type_formals;
    Slist1 *op_formals;
    } dbg_info_xrefOPfind_index_actual;
static Vlist1 vals_xrefOPfind_index = {0, 1, { {0, 2, "", &int_ops}}
};
static siglist0 sigs_xrefOPfind_index = {0, 0};
static Vlist16 locals_xrefOPfind_index = {0, 16,{ {0, 2, "err", &int_ops},  {0, 2, "ecode2", &int_ops},  {0, 2, "op_own_ptr", &int_ops},  {0, 2, "ll", &int_ops},  {0, 2, "hh", &int_ops},  {0, 2, "l", &int_ops},  {0, 2, "h", &int_ops},  {0, 2, "m", &int_ops},  {0, 2, "me", zero_ops, "etype_ops"},  {0, 2, "mkey", &string_ops},  {0, 2, "ent", zero_ops, "etype_ops"},  {0, 2, "n", &int_ops},  {0, 2, "tab", zero_ops, "array_of_etype_ops"},  {0, 2, "key", &string_ops},  {0, 2, "get", m1_ops},  {0, 2, "cons", m1_ops}}
};
static Vlist5 popowns_xrefOPfind_index = {0, 5,{ {0, 2, "xrefOPfind_index_init", &int_ops}
, {0, 2, "etype_ops", &NULL_OPS}, {0, 2, "array_of_etype_table", &NULL_OPS}, {0, 2, "array_of_etype_ops", &NULL_OPS}, {0, 2, "array_of_etype_owns", &NULL_OPS}}};
Slist0 tformals_xrefOPfind_index = {0, 0};
Slist1 opformals_xrefOPfind_index = {0, 1, "etype"};
dbg_info_xrefOPfind_index_actual dbg_info_xrefOPfind_index_data = {0, 12, 
    "xrefOPfind_index", "/common/pub/dcurtis-temp/pclu/lib/clu/xref.clu", 0, 1, (int)xrefOPfind_index, 4, 
    &vals_xrefOPfind_index, &sigs_xrefOPfind_index, &locals_xrefOPfind_index, &owns_xref, &NO_VALS, &popowns_xrefOPfind_index, &NO_PARMS, &opformals_xrefOPfind_index};
    struct dbg_info *dbg_info_xrefOPfind_index = (struct dbg_info*)&dbg_info_xrefOPfind_index_data;

/**** BEGIN ITERATOR BODIES for find_index ****/

errcode xrefOPfind_index_IB_1(iv_1, locals, iecode)
errcode *iecode;
CLUREF iv_1;
struct {
    struct dbg_info *DBG_INFO;
    int DBG_LINE;
    errcode err;
    errcode ecode2;
xref_op_find_index_OWN_DEFN *op_own_ptr;
    CLUREF ll;
    CLUREF hh;
    CLUREF l;
    CLUREF h;
    CLUREF m;
    CLUREF me;
    CLUREF mkey;
    CLUREF ent;
    CLUREF n;
    CLUREF tab;
    CLUREF key;
    CLUREF get;
    CLUREF cons;
    } *locals;
{
    locals->n.num = iv_1.num;
    enter_iter_body_proc(110);

  FB_LINE(110);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    locals->err = intOPadd(locals->n, CLU_1, &T_1_1);
    if (locals->err != ERR_ok) goto ex_0;
    locals->err = arrayOPfetch(locals->tab, locals->n, &T_1_2);
    if (locals->err != ERR_ok) goto ex_0;
    locals->err = arrayOPstore(locals->tab, T_1_1, T_1_2);
    if (locals->err != ERR_ok) goto ex_0;
    }
    {signal(ERR_ok);}
    ex_0:
        {
            *iecode = locals->err;
            {signal(ERR_iterbodyexit);}}
    end_0: {signal(ERR_ok);}
    }/* end xrefOPfind_index_IB_1 */
errcode xrefOPfind_index_IB_2(iv_1, locals, iecode)
errcode *iecode;
CLUREF iv_1;
struct {
    struct dbg_info *DBG_INFO;
    int DBG_LINE;
    errcode err;
    errcode ecode2;
xref_op_find_index_OWN_DEFN *op_own_ptr;
    CLUREF ll;
    CLUREF hh;
    CLUREF l;
    CLUREF h;
    CLUREF m;
    CLUREF me;
    CLUREF mkey;
    CLUREF ent;
    CLUREF n;
    CLUREF tab;
    CLUREF key;
    CLUREF get;
    CLUREF cons;
    } *locals;
{
    locals->n.num = iv_1.num;
    enter_iter_body_proc(116);

  FB_LINE(116);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    locals->err = intOPsub(locals->n, CLU_1, &T_1_1);
    if (locals->err != ERR_ok) goto ex_0;
    locals->err = arrayOPfetch(locals->tab, locals->n, &T_1_2);
    if (locals->err != ERR_ok) goto ex_0;
    locals->err = arrayOPstore(locals->tab, T_1_1, T_1_2);
    if (locals->err != ERR_ok) goto ex_0;
    }
    {signal(ERR_ok);}
    ex_0:
        {
            *iecode = locals->err;
            {signal(ERR_iterbodyexit);}}
    end_0: {signal(ERR_ok);}
    }/* end xrefOPfind_index_IB_2 */

/**** END ITERATOR BODIES for find_index ****/

extern struct dbg_info* dbg_info_xrefOPelements;
#undef MY_TRACE_FLAG
#define MY_TRACE_FLAG xrefOPelements_TRACE
int xrefOPelements_TRACE;
extern errcode xrefOPelements_IB_1();
extern errcode xrefOPelements_IB_2();
struct OPS *array_of_string_table;
struct OPS *array_of_string_ops;
struct OPS *array_of_string_ops;
OWNPTR array_of_string_owns;
struct OPS  *record_key_users_ops;
struct OPS *array_of_record_key_users_table;
struct OPS *array_of_record_key_users_ops;
struct OPS *array_of_record_key_users_ops;
OWNPTR array_of_record_key_users_owns;
static int xrefOPelements_own_init = 0;

/**** BEGIN ITERATOR elements ****/

errcode xrefOPelements(tab, proc, user_locals, iecode)
CLUREF tab;
errcode (*proc)();
char **user_locals;
errcode *iecode;
    {
    errcode ecode;
    struct {
        struct dbg_info *DBG_INFO;
        int DBG_LINE;
        char **user_locals;
        errcode (*proc)();
        errcode err;
        errcode ecode2;
        bool body_ctrl_req;
        CLUREF ent;
        CLUREF key;
        CLUREF user;
        CLUREF tab;
        } locals;
    locals.ent.num = UNINIT;
    locals.key.num = UNINIT;
    locals.user.num = UNINIT;
    locals.tab.num = UNINIT;
    locals.DBG_INFO = dbg_info_xrefOPelements;
    locals.tab = tab;
    locals.proc = proc;
    locals.user_locals = user_locals;
    locals.user_locals = user_locals;
    locals.proc = proc;
        if (xrefOPelements_own_init == 0) {
        if (xref_own_init == 0) {
            locals.err = xref_own_init_proc();
            if (locals.err != ERR_ok) goto ex_0;
            }
        xrefOPelements_own_init = 1;
    }
    enter_proc(125);

  LINE(126);
    {
        locals.body_ctrl_req = false;
        locals.err = arrayOPelements(locals.tab, xrefOPelements_IB_1, &locals, &locals.ecode2);
        if (locals.err == ERR_iterbodyreturn) {signal(ERR_iterbodyreturn);}
        if (locals.err == ERR_iterbodysignal) {
            *iecode = locals.ecode2; signal(ERR_iterbodysignal);}
        if (locals.err == ERR_iterbodyexit) {
            *iecode = locals.ecode2; signal(ERR_iterbodyexit);}
        if (locals.body_ctrl_req == true) {
            locals.body_ctrl_req = false;
            if (locals.err == ERR_iteriterbodyreturn) {signal(ERR_ok);}
            if (locals.err == ERR_iteriterbodysignal) {signal(locals.ecode2);}
            if (locals.err == ERR_break) locals.err = ERR_ok;
            if (locals.err == ERR_iteriterbodyexit) locals.err = locals.ecode2;
            }
        else {
            if (locals.err == ERR_iteriterbodyreturn) {signal(ERR_iteriterbodyreturn);}
            if (locals.err == ERR_break) {signal(ERR_break);}
            if (locals.err == ERR_iteriterbodysignal) {
                  *iecode = locals.ecode2; signal(ERR_iteriterbodysignal);}
            if (locals.err == ERR_iteriterbodyexit) {
                  *iecode = locals.ecode2; signal(ERR_iteriterbodyexit);}}
        if (locals.err != ERR_ok) goto ex_0;
        }
    goto end_0;
    ex_0:
        {
            if (locals.err == ERR_failure) {signal(ERR_failure);}
            elist[0] = _pclu_erstr(locals.err);
            {signal(ERR_failure);}
        }
    end_0: {signal(ERR_ok);}
    }

/**** END ITERATOR elements ****/

typedef struct {
    int hdr;
    int count;
    char *name;
    char *fname;
    bool is_iter;
    int is_parmd;
    int addr;
    int nargs;
    Vlist2 *vals;
    siglist0 *sigs;
    Vlist9 *locals;
    Vlist13 *owns;
    Vlist0 *ptowns;
    Vlist0 *popowns;
    Slist0 *type_formals;
    Slist0 *op_formals;
    } dbg_info_xrefOPelements_actual;
static Vlist2 vals_xrefOPelements = {0, 2, { {0, 2, "", &string_ops},  {0, 2, "", &string_ops}}
};
static siglist0 sigs_xrefOPelements = {0, 0};
static Vlist9 locals_xrefOPelements = {0, 9,{ {0, 2, "user_locals", &int_ops},  {0, 2, "proc", &int_ops},  {0, 2, "err", &int_ops},  {0, 2, "ecode2", &int_ops},  {0, 2, "body_ctrl_req", &int_ops},  {0, 2, "ent", &record_key_users_ops},  {0, 2, "key", &string_ops},  {0, 2, "user", &string_ops},  {0, 2, "tab", &array_of_record_key_users_ops}}
};
static Vlist0 popowns_xrefOPelements = {0, 0};
Slist0 tformals_xrefOPelements = {0, 0};
Slist0 opformals_xrefOPelements = {0, 0};
dbg_info_xrefOPelements_actual dbg_info_xrefOPelements_data = {0, 12, 
    "xrefOPelements", "/common/pub/dcurtis-temp/pclu/lib/clu/xref.clu", 1, 0, (int)xrefOPelements, 1, 
    &vals_xrefOPelements, &sigs_xrefOPelements, &locals_xrefOPelements, &owns_xref, &NO_VALS, &NO_VALS, &NO_PARMS, &NO_PARMS};
    struct dbg_info *dbg_info_xrefOPelements = (struct dbg_info*)&dbg_info_xrefOPelements_data;

/**** BEGIN ITERATOR BODIES for elements ****/

errcode xrefOPelements_IB_1(iv_1, locals, iecode)
errcode *iecode;
CLUREF iv_1;
struct {
    struct dbg_info *DBG_INFO;
    int DBG_LINE;
    char **user_locals;
    errcode (*proc)();
    errcode err;
    errcode ecode2;
    bool body_ctrl_req;
    CLUREF ent;
    CLUREF key;
    CLUREF user;
    CLUREF tab;
    } *locals;
{
    locals->ent.num = iv_1.num;
    enter_iter_body_proc(127);

  FB_LINE(127);
    {
        {CLUREF T_1_1;
        T_1_1.num = locals->ent.vec->data[0];
        locals->key.num = T_1_1.num;
        }
        }

  FB_LINE(128);
    {
        CLUREF T_1_1;
        T_1_1.num = locals->ent.vec->data[1];
        locals->body_ctrl_req = false;
        locals->err = arrayOPelements(T_1_1, xrefOPelements_IB_2, locals, iecode);
        if (locals->err != ERR_ok) {
        if (locals->err == ERR_iterbodyreturn) {signal(ERR_iterbodyreturn);}
        if (locals->err == ERR_iterbodysignal) {signal(ERR_iterbodysignal);}
        if (locals->err == ERR_iterbodyexit) {signal(ERR_iterbodyexit);}
        if (locals->err == ERR_iteriterbodyreturn) {signal(ERR_iteriterbodyreturn);}
        if (locals->err == ERR_iteriterbodysignal) {signal(ERR_iteriterbodysignal);}
        if (locals->err == ERR_break && !locals->body_ctrl_req) {signal(ERR_break);}
        if (locals->err == ERR_iteriterbodyexit && !locals->body_ctrl_req) {signal(ERR_iteriterbodyexit);}
        if (locals->err == ERR_break) locals->err = ERR_ok;
        if (locals->err == ERR_iteriterbodyexit) 
        locals->err = *iecode;
        if (locals->err != ERR_ok) 
        goto ex_0;
        }
        }
    {signal(ERR_ok);}
    ex_0:
        {
            *iecode = locals->err;
            locals->body_ctrl_req = true;
            {signal(ERR_iteriterbodyexit);}}
    end_0: {signal(ERR_ok);}
    }/* end xrefOPelements_IB_1 */
errcode xrefOPelements_IB_2(iv_1, locals, iecode)
errcode *iecode;
CLUREF iv_1;
struct {
    struct dbg_info *DBG_INFO;
    int DBG_LINE;
    char **user_locals;
    errcode (*proc)();
    errcode err;
    errcode ecode2;
    bool body_ctrl_req;
    CLUREF ent;
    CLUREF key;
    CLUREF user;
    CLUREF tab;
    } *locals;
{
    locals->user.num = iv_1.num;
    enter_iter_body_proc(129);

  FB_LINE(129);
    {
    locals->err = locals->proc(locals->key, locals->user, locals->user_locals, iecode);
    if ((locals->body_ctrl_req == true) && (locals->err == ERR_iteriterbodyexit)) {
        locals->err = *iecode;
        goto ex_0;}
    if (locals->err != ERR_ok) {
    signal(locals->err);
    }
    }
    {signal(ERR_ok);}
    ex_0:
        {
            *iecode = locals->err;
            locals->body_ctrl_req = true;
            {signal(ERR_iteriterbodyexit);}}
    end_0: {signal(ERR_ok);}
    }/* end xrefOPelements_IB_2 */

/**** END ITERATOR BODIES for elements ****/

extern struct dbg_info* dbg_info_xrefOPkeys;
#undef MY_TRACE_FLAG
#define MY_TRACE_FLAG xrefOPkeys_TRACE
int xrefOPkeys_TRACE;
extern errcode xrefOPkeys_IB_1();
struct OPS *array_of_string_table;
struct OPS *array_of_string_ops;
struct OPS *array_of_string_ops;
OWNPTR array_of_string_owns;
struct OPS  *record_key_users_ops;
struct OPS *array_of_record_key_users_table;
struct OPS *array_of_record_key_users_ops;
struct OPS *array_of_record_key_users_ops;
OWNPTR array_of_record_key_users_owns;
static int xrefOPkeys_own_init = 0;

/**** BEGIN ITERATOR keys ****/

errcode xrefOPkeys(tab, proc, user_locals, iecode)
CLUREF tab;
errcode (*proc)();
char **user_locals;
errcode *iecode;
    {
    errcode ecode;
    struct {
        struct dbg_info *DBG_INFO;
        int DBG_LINE;
        char **user_locals;
        errcode (*proc)();
        errcode err;
        errcode ecode2;
        bool body_ctrl_req;
        CLUREF ent;
        CLUREF tab;
        } locals;
    locals.ent.num = UNINIT;
    locals.tab.num = UNINIT;
    locals.DBG_INFO = dbg_info_xrefOPkeys;
    locals.tab = tab;
    locals.proc = proc;
    locals.user_locals = user_locals;
    locals.user_locals = user_locals;
    locals.proc = proc;
        if (xrefOPkeys_own_init == 0) {
        if (xref_own_init == 0) {
            locals.err = xref_own_init_proc();
            if (locals.err != ERR_ok) goto ex_0;
            }
        xrefOPkeys_own_init = 1;
    }
    enter_proc(136);

  LINE(137);
    {
        locals.body_ctrl_req = false;
        locals.err = arrayOPelements(locals.tab, xrefOPkeys_IB_1, &locals, &locals.ecode2);
        if (locals.err == ERR_iterbodyreturn) {signal(ERR_iterbodyreturn);}
        if (locals.err == ERR_iterbodysignal) {
            *iecode = locals.ecode2; signal(ERR_iterbodysignal);}
        if (locals.err == ERR_iterbodyexit) {
            *iecode = locals.ecode2; signal(ERR_iterbodyexit);}
        if (locals.body_ctrl_req == true) {
            locals.body_ctrl_req = false;
            if (locals.err == ERR_iteriterbodyreturn) {signal(ERR_ok);}
            if (locals.err == ERR_iteriterbodysignal) {signal(locals.ecode2);}
            if (locals.err == ERR_break) locals.err = ERR_ok;
            if (locals.err == ERR_iteriterbodyexit) locals.err = locals.ecode2;
            }
        else {
            if (locals.err == ERR_iteriterbodyreturn) {signal(ERR_iteriterbodyreturn);}
            if (locals.err == ERR_break) {signal(ERR_break);}
            if (locals.err == ERR_iteriterbodysignal) {
                  *iecode = locals.ecode2; signal(ERR_iteriterbodysignal);}
            if (locals.err == ERR_iteriterbodyexit) {
                  *iecode = locals.ecode2; signal(ERR_iteriterbodyexit);}}
        if (locals.err != ERR_ok) goto ex_0;
        }
    goto end_0;
    ex_0:
        {
            if (locals.err == ERR_failure) {signal(ERR_failure);}
            elist[0] = _pclu_erstr(locals.err);
            {signal(ERR_failure);}
        }
    end_0: {signal(ERR_ok);}
    }

/**** END ITERATOR keys ****/

typedef struct {
    int hdr;
    int count;
    char *name;
    char *fname;
    bool is_iter;
    int is_parmd;
    int addr;
    int nargs;
    Vlist1 *vals;
    siglist0 *sigs;
    Vlist7 *locals;
    Vlist13 *owns;
    Vlist0 *ptowns;
    Vlist0 *popowns;
    Slist0 *type_formals;
    Slist0 *op_formals;
    } dbg_info_xrefOPkeys_actual;
static Vlist1 vals_xrefOPkeys = {0, 1, { {0, 2, "", &string_ops}}
};
static siglist0 sigs_xrefOPkeys = {0, 0};
static Vlist7 locals_xrefOPkeys = {0, 7,{ {0, 2, "user_locals", &int_ops},  {0, 2, "proc", &int_ops},  {0, 2, "err", &int_ops},  {0, 2, "ecode2", &int_ops},  {0, 2, "body_ctrl_req", &int_ops},  {0, 2, "ent", &record_key_users_ops},  {0, 2, "tab", &array_of_record_key_users_ops}}
};
static Vlist0 popowns_xrefOPkeys = {0, 0};
Slist0 tformals_xrefOPkeys = {0, 0};
Slist0 opformals_xrefOPkeys = {0, 0};
dbg_info_xrefOPkeys_actual dbg_info_xrefOPkeys_data = {0, 12, 
    "xrefOPkeys", "/common/pub/dcurtis-temp/pclu/lib/clu/xref.clu", 1, 0, (int)xrefOPkeys, 1, 
    &vals_xrefOPkeys, &sigs_xrefOPkeys, &locals_xrefOPkeys, &owns_xref, &NO_VALS, &NO_VALS, &NO_PARMS, &NO_PARMS};
    struct dbg_info *dbg_info_xrefOPkeys = (struct dbg_info*)&dbg_info_xrefOPkeys_data;

/**** BEGIN ITERATOR BODIES for keys ****/

errcode xrefOPkeys_IB_1(iv_1, locals, iecode)
errcode *iecode;
CLUREF iv_1;
struct {
    struct dbg_info *DBG_INFO;
    int DBG_LINE;
    char **user_locals;
    errcode (*proc)();
    errcode err;
    errcode ecode2;
    bool body_ctrl_req;
    CLUREF ent;
    CLUREF tab;
    } *locals;
{
    locals->ent.num = iv_1.num;
    enter_iter_body_proc(138);

  FB_LINE(138);
    {
    CLUREF T_1_1;
    T_1_1.num = locals->ent.vec->data[0];
    locals->err = locals->proc(T_1_1, locals->user_locals, iecode);
    if ((locals->body_ctrl_req == true) && (locals->err == ERR_iteriterbodyexit)) {
        locals->err = *iecode;
        goto ex_0;}
    if (locals->err != ERR_ok) {
    signal(locals->err);
    }
    }
    {signal(ERR_ok);}
    ex_0:
        {
            *iecode = locals->err;
            locals->body_ctrl_req = true;
            {signal(ERR_iteriterbodyexit);}}
    end_0: {signal(ERR_ok);}
    }/* end xrefOPkeys_IB_1 */

/**** END ITERATOR BODIES for keys ****/

extern struct dbg_info* dbg_info_xrefOPoutput;
#undef MY_TRACE_FLAG
#define MY_TRACE_FLAG xrefOPoutput_TRACE
int xrefOPoutput_TRACE;
extern errcode xrefOPoutput_IB_1();
extern errcode xrefOPoutput_IB_2();
extern errcode xrefOPoutput_IB_3();
struct OPS *array_of_string_table;
struct OPS *array_of_string_ops;
struct OPS *array_of_string_ops;
OWNPTR array_of_string_owns;
struct OPS  *record_key_users_ops;
struct OPS *array_of_record_key_users_table;
struct OPS *array_of_record_key_users_ops;
struct OPS *array_of_record_key_users_ops;
OWNPTR array_of_record_key_users_owns;
static int xrefOPoutput_own_init = 0;

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

errcode xrefOPoutput(tab, lhead, rhead, st)
CLUREF tab;
CLUREF lhead;
CLUREF rhead;
CLUREF st;
    {
    struct {
        struct dbg_info *DBG_INFO;
        int DBG_LINE;
        errcode err;
        errcode ecode2;
        CLUREF max;
        CLUREF ent;
        CLUREF n;
        CLUREF i;
        CLUREF tab;
        CLUREF lhead;
        CLUREF rhead;
        CLUREF st;
        } locals;
    locals.max.num = UNINIT;
    locals.ent.num = UNINIT;
    locals.n.num = UNINIT;
    locals.i.num = UNINIT;
    locals.tab.num = UNINIT;
    locals.lhead.num = UNINIT;
    locals.rhead.num = UNINIT;
    locals.st.num = UNINIT;
    locals.DBG_INFO = dbg_info_xrefOPoutput;
    locals.tab = tab;
    locals.lhead = lhead;
    locals.rhead = rhead;
    locals.st = st;
        if (xrefOPoutput_own_init == 0) {
        if (xref_own_init == 0) {
            locals.err = xref_own_init_proc();
            if (locals.err != ERR_ok) goto ex_0;
            }
        xrefOPoutput_own_init = 1;
    }
    enter_proc(144);

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

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

  LINE(148);
    {
        {CLUREF T_1_1;
        locals.err = stringOPsize(locals.lhead, &T_1_1);
        if (locals.err != ERR_ok) goto ex_0;
        locals.max.num = T_1_1.num;
        }
        }

  LINE(149);
    {
        locals.err = arrayOPelements(locals.tab, xrefOPoutput_IB_1, &locals, &locals.ecode2);
        if (locals.err == ERR_iterbodyreturn) {
        signal(ERR_ok);}
        if (locals.err == ERR_iterbodysignal) {signal(locals.ecode2);}
        if (locals.err == ERR_break) locals.err = ERR_ok;
        if (locals.err == ERR_iterbodyexit) locals.err = locals.ecode2;
        if (locals.err != ERR_ok) goto ex_0;
        }

  LINE(154);
    {
    CLUREF T_1_1;
    locals.err = intOPadd(locals.max, CLU_4, &T_1_1);
    if (locals.err != ERR_ok) goto ex_0;
    locals.max.num = T_1_1.num;
    }

  LINE(155);
    {

  LINE(156);
        {
        CLUREF T_3_1;
        locals.err = arrayOPnew( &T_3_1);
        if (locals.err != ERR_ok) goto ex_1;
        locals.err = arrayOPaddh(T_3_1, locals.rhead);
        if (locals.err != ERR_ok) goto ex_1;
        locals.err = xrefOPputout(locals.st, locals.lhead, T_3_1, locals.max);
        if (locals.err != ERR_ok) goto ex_1;
        }

  LINE(157);
        {
            locals.err = intOPfrom_to(CLU_1, CLU_7, xrefOPoutput_IB_2, &locals, &locals.ecode2);
            if (locals.err == ERR_iterbodyreturn) {
            signal(ERR_ok);}
            if (locals.err == ERR_iterbodysignal) {signal(locals.ecode2);}
            if (locals.err == ERR_break) locals.err = ERR_ok;
            if (locals.err == ERR_iterbodyexit) locals.err = locals.ecode2;
            if (locals.err != ERR_ok) goto ex_1;
            }

  LINE(160);
        {
        locals.err = streamOPputs(locals.st, STR__012_012);
        if (locals.err != ERR_ok) goto ex_1;
        }

  LINE(161);
        {
            locals.err = arrayOPelements(locals.tab, xrefOPoutput_IB_3, &locals, &locals.ecode2);
            if (locals.err == ERR_iterbodyreturn) {
            signal(ERR_ok);}
            if (locals.err == ERR_iterbodysignal) {signal(locals.ecode2);}
            if (locals.err == ERR_break) locals.err = ERR_ok;
            if (locals.err == ERR_iterbodyexit) locals.err = locals.ecode2;
            if (locals.err != ERR_ok) goto ex_1;
            }
        }
    goto end_1;
    ex_1:
        if (locals.err == ERR_not_possible) {signal(ERR_not_possible);}
        else {
            goto ex_0;}
    end_1:;
    goto end_0;
    ex_0:
        {
            if (locals.err == ERR_failure) {signal(ERR_failure);}
            elist[0] = _pclu_erstr(locals.err);
            {signal(ERR_failure);}
        }
    end_0: {signal(ERR_ok);}
    }

/**** END PROCEDURE output ****/

extern struct OPS *stream_ops;
typedef struct {
    int hdr;
    int count;
    char *name;
    char *fname;
    bool is_iter;
    int is_parmd;
    int addr;
    int nargs;
    Vlist0 *vals;
    siglist1 *sigs;
    Vlist10 *locals;
    Vlist13 *owns;
    Vlist0 *ptowns;
    Vlist0 *popowns;
    Slist0 *type_formals;
    Slist0 *op_formals;
    } dbg_info_xrefOPoutput_actual;
static Vlist0 vals_xrefOPoutput = {0, 0};
static sig_desc1 sig_xrefOPoutput_1 = {0, 4, "not_possible", {0, 1
, { {0, 2, "", &string_ops}}}};
static siglist1 sigs_xrefOPoutput = {0, 1, (sig_desc*)&sig_xrefOPoutput_1};
static Vlist10 locals_xrefOPoutput = {0, 10,{ {0, 2, "err", &int_ops},  {0, 2, "ecode2", &int_ops},  {0, 2, "max", &int_ops},  {0, 2, "ent", &record_key_users_ops},  {0, 2, "n", &int_ops},  {0, 2, "i", &int_ops},  {0, 2, "tab", &array_of_record_key_users_ops},  {0, 2, "lhead", &string_ops},  {0, 2, "rhead", &string_ops},  {0, 2, "st", &stream_ops}}
};
static Vlist0 popowns_xrefOPoutput = {0, 0};
Slist0 tformals_xrefOPoutput = {0, 0};
Slist0 opformals_xrefOPoutput = {0, 0};
dbg_info_xrefOPoutput_actual dbg_info_xrefOPoutput_data = {0, 12, 
    "xrefOPoutput", "/common/pub/dcurtis-temp/pclu/lib/clu/xref.clu", 0, 0, (int)xrefOPoutput, 4, 
    &vals_xrefOPoutput, &sigs_xrefOPoutput, &locals_xrefOPoutput, &owns_xref, &NO_VALS, &NO_VALS, &NO_PARMS, &NO_PARMS};
    struct dbg_info *dbg_info_xrefOPoutput = (struct dbg_info*)&dbg_info_xrefOPoutput_data;

/**** BEGIN ITERATOR BODIES for output ****/

errcode xrefOPoutput_IB_1(iv_1, locals, iecode)
errcode *iecode;
CLUREF iv_1;
struct {
    struct dbg_info *DBG_INFO;
    int DBG_LINE;
    errcode err;
    errcode ecode2;
    CLUREF max;
    CLUREF ent;
    CLUREF n;
    CLUREF i;
    CLUREF tab;
    CLUREF lhead;
    CLUREF rhead;
    CLUREF st;
    } *locals;
{
    locals->ent.num = iv_1.num;
    enter_iter_body_proc(150);

  FB_LINE(150);
    {
        {CLUREF T_1_1;
        CLUREF T_1_2;
        T_1_1.num = locals->ent.vec->data[0];
        locals->err = stringOPsize(T_1_1, &T_1_2);
        if (locals->err != ERR_ok) goto ex_0;
        locals->n.num = T_1_2.num;
        }
        }

  FB_LINE(151);
    {
    CLUREF T_1_1;
    T_1_1.num = (locals->n.num > locals->max.num)? true : false;
    if (T_1_1.num == true) {

  FB_LINE(152);
        {
        locals->max.num = locals->n.num;
        }
        }
        }/* end if */
    {signal(ERR_ok);}
    ex_0:
        {
            *iecode = locals->err;
            {signal(ERR_iterbodyexit);}}
    end_0: {signal(ERR_ok);}
    }/* end xrefOPoutput_IB_1 */
errcode xrefOPoutput_IB_2(iv_1, locals, iecode)
errcode *iecode;
CLUREF iv_1;
struct {
    struct dbg_info *DBG_INFO;
    int DBG_LINE;
    errcode err;
    errcode ecode2;
    CLUREF max;
    CLUREF ent;
    CLUREF n;
    CLUREF i;
    CLUREF tab;
    CLUREF lhead;
    CLUREF rhead;
    CLUREF st;
    } *locals;
{
    locals->i.num = iv_1.num;
    enter_iter_body_proc(158);

  FB_LINE(158);
    {
    locals->err = streamOPputs(locals->st, STR__137_137_137_137_137_137_137_137_137_137);
    if (locals->err != ERR_ok) goto ex_0;
    }
    {signal(ERR_ok);}
    ex_0:
        {
            *iecode = locals->err;
            {signal(ERR_iterbodyexit);}}
    end_0: {signal(ERR_ok);}
    }/* end xrefOPoutput_IB_2 */
errcode xrefOPoutput_IB_3(iv_1, locals, iecode)
errcode *iecode;
CLUREF iv_1;
struct {
    struct dbg_info *DBG_INFO;
    int DBG_LINE;
    errcode err;
    errcode ecode2;
    CLUREF max;
    CLUREF ent;
    CLUREF n;
    CLUREF i;
    CLUREF tab;
    CLUREF lhead;
    CLUREF rhead;
    CLUREF st;
    } *locals;
{
    locals->ent.num = iv_1.num;
    enter_iter_body_proc(162);

  FB_LINE(162);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    T_1_1.num = locals->ent.vec->data[0];
    T_1_2.num = locals->ent.vec->data[1];
    locals->err = xrefOPputout(locals->st, T_1_1, T_1_2, locals->max);
    if (locals->err != ERR_ok) goto ex_0;
    }
    {signal(ERR_ok);}
    ex_0:
        {
            *iecode = locals->err;
            {signal(ERR_iterbodyexit);}}
    end_0: {signal(ERR_ok);}
    }/* end xrefOPoutput_IB_3 */

/**** END ITERATOR BODIES for output ****/

extern struct dbg_info* dbg_info_xrefOPputout;
#undef MY_TRACE_FLAG
#define MY_TRACE_FLAG xrefOPputout_TRACE
int xrefOPputout_TRACE;
extern errcode xrefOPputout_IB_1();
struct OPS *array_of_string_table;
struct OPS *array_of_string_ops;
struct OPS *array_of_string_ops;
OWNPTR array_of_string_owns;
static int xrefOPputout_own_init = 0;

/**** BEGIN PROCEDURE putout ****/

errcode xrefOPputout(st, key, users, max)
CLUREF st;
CLUREF key;
CLUREF users;
CLUREF max;
    {
    struct {
        struct dbg_info *DBG_INFO;
        int DBG_LINE;
        errcode err;
        errcode ecode2;
        CLUREF pos;
        CLUREF user;
        CLUREF n;
        CLUREF st;
        CLUREF key;
        CLUREF users;
        CLUREF max;
        } locals;
    locals.pos.num = UNINIT;
    locals.user.num = UNINIT;
    locals.n.num = UNINIT;
    locals.st.num = UNINIT;
    locals.key.num = UNINIT;
    locals.users.num = UNINIT;
    locals.max.num = UNINIT;
    locals.DBG_INFO = dbg_info_xrefOPputout;
    locals.st = st;
    locals.key = key;
    locals.users = users;
    locals.max = max;
        if (xrefOPputout_own_init == 0) {
        if (xref_own_init == 0) {
            locals.err = xref_own_init_proc();
            if (locals.err != ERR_ok) goto ex_0;
            }
        xrefOPputout_own_init = 1;
    }
    enter_proc(169);

  LINE(171);
    {

  LINE(172);
        {
        locals.err = streamOPputleft(locals.st, locals.key, locals.max);
        if (locals.err != ERR_ok) goto ex_1;
        }

  LINE(173);
        {
            {locals.pos.num = locals.max.num;
            }
            }

  LINE(174);
        {
            locals.err = arrayOPelements(locals.users, xrefOPputout_IB_1, &locals, &locals.ecode2);
            if (locals.err == ERR_iterbodyreturn) {
            signal(ERR_ok);}
            if (locals.err == ERR_iterbodysignal) {signal(locals.ecode2);}
            if (locals.err == ERR_break) locals.err = ERR_ok;
            if (locals.err == ERR_iterbodyexit) locals.err = locals.ecode2;
            if (locals.err != ERR_ok) goto ex_1;
            }

  LINE(185);
        {
        CLUREF T_3_1;
        T_3_1.ch = '\n';
        locals.err = streamOPputc(locals.st, T_3_1);
        if (locals.err != ERR_ok) goto ex_1;
        }
        }
    goto end_1;
    ex_1:
        if (locals.err == ERR_not_possible) {signal(ERR_not_possible);}
        else {
            goto ex_0;}
    end_1:;
    goto end_0;
    ex_0:
        {
            if (locals.err == ERR_failure) {signal(ERR_failure);}
            elist[0] = _pclu_erstr(locals.err);
            {signal(ERR_failure);}
        }
    end_0: {signal(ERR_ok);}
    }

/**** END PROCEDURE putout ****/

typedef struct {
    int hdr;
    int count;
    char *name;
    char *fname;
    bool is_iter;
    int is_parmd;
    int addr;
    int nargs;
    Vlist0 *vals;
    siglist1 *sigs;
    Vlist9 *locals;
    Vlist13 *owns;
    Vlist0 *ptowns;
    Vlist0 *popowns;
    Slist0 *type_formals;
    Slist0 *op_formals;
    } dbg_info_xrefOPputout_actual;
static Vlist0 vals_xrefOPputout = {0, 0};
static sig_desc1 sig_xrefOPputout_1 = {0, 4, "not_possible", {0, 1
, { {0, 2, "", &string_ops}}}};
static siglist1 sigs_xrefOPputout = {0, 1, (sig_desc*)&sig_xrefOPputout_1};
static Vlist9 locals_xrefOPputout = {0, 9,{ {0, 2, "err", &int_ops},  {0, 2, "ecode2", &int_ops},  {0, 2, "pos", &int_ops},  {0, 2, "user", &string_ops},  {0, 2, "n", &int_ops},  {0, 2, "st", &stream_ops},  {0, 2, "key", &string_ops},  {0, 2, "users", &array_of_string_ops},  {0, 2, "max", &int_ops}}
};
static Vlist0 popowns_xrefOPputout = {0, 0};
Slist0 tformals_xrefOPputout = {0, 0};
Slist0 opformals_xrefOPputout = {0, 0};
dbg_info_xrefOPputout_actual dbg_info_xrefOPputout_data = {0, 12, 
    "xrefOPputout", "/common/pub/dcurtis-temp/pclu/lib/clu/xref.clu", 0, 0, (int)xrefOPputout, 4, 
    &vals_xrefOPputout, &sigs_xrefOPputout, &locals_xrefOPputout, &owns_xref, &NO_VALS, &NO_VALS, &NO_PARMS, &NO_PARMS};
    struct dbg_info *dbg_info_xrefOPputout = (struct dbg_info*)&dbg_info_xrefOPputout_data;

/**** BEGIN ITERATOR BODIES for putout ****/

errcode xrefOPputout_IB_1(iv_1, locals, iecode)
errcode *iecode;
CLUREF iv_1;
struct {
    struct dbg_info *DBG_INFO;
    int DBG_LINE;
    errcode err;
    errcode ecode2;
    CLUREF pos;
    CLUREF user;
    CLUREF n;
    CLUREF st;
    CLUREF key;
    CLUREF users;
    CLUREF max;
    } *locals;
{
    locals->user.num = iv_1.num;
    enter_iter_body_proc(175);

  FB_LINE(175);
    {
        {CLUREF T_1_1;
        CLUREF T_1_2;
        locals->err = stringOPsize(locals->user, &T_1_1);
        if (locals->err != ERR_ok) goto ex_0;
        locals->err = intOPadd(T_1_1, CLU_1, &T_1_2);
        if (locals->err != ERR_ok) goto ex_0;
        locals->n.num = T_1_2.num;
        }
        }

  FB_LINE(176);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    CLUREF T_1_3;
    locals->err = intOPadd(locals->pos, locals->n, &T_1_1);
    if (locals->err != ERR_ok) goto ex_0;
    T_1_2.num = 70;
    T_1_3.num = (T_1_1.num > T_1_2.num)? true : false;
    if (T_1_3.num == true) {

  FB_LINE(177);
        {
        CLUREF T_2_1;
        T_2_1.ch = '\n';
        locals->err = streamOPputc(locals->st, T_2_1);
        if (locals->err != ERR_ok) goto ex_0;
        }

  FB_LINE(178);
        {
        locals->err = streamOPputspace(locals->st, locals->max);
        if (locals->err != ERR_ok) goto ex_0;
        }

  FB_LINE(179);
        {
        locals->pos.num = locals->max.num;
        }
        }
        }/* end if */

  FB_LINE(181);
    {
    CLUREF T_1_1;
    T_1_1.ch = ' ';
    locals->err = streamOPputc(locals->st, T_1_1);
    if (locals->err != ERR_ok) goto ex_0;
    }

  FB_LINE(182);
    {
    locals->err = streamOPputs(locals->st, locals->user);
    if (locals->err != ERR_ok) goto ex_0;
    }

  FB_LINE(183);
    {
    CLUREF T_1_1;
    locals->err = intOPadd(locals->pos, locals->n, &T_1_1);
    if (locals->err != ERR_ok) goto ex_0;
    locals->pos.num = T_1_1.num;
    }
    {signal(ERR_ok);}
    ex_0:
        {
            *iecode = locals->err;
            {signal(ERR_iterbodyexit);}}
    end_0: {signal(ERR_ok);}
    }/* end xrefOPputout_IB_1 */

/**** END ITERATOR BODIES for putout ****/

extern struct dbg_info* dbg_info_xrefOPmerge;
#undef MY_TRACE_FLAG
#define MY_TRACE_FLAG xrefOPmerge_TRACE
int xrefOPmerge_TRACE;
extern errcode xrefOPmerge_IB_1();
static int xrefOPmerge_own_init = 0;

/**** BEGIN PROCEDURE merge ****/

errcode xrefOPmerge(tab1, tab2)
CLUREF tab1;
CLUREF tab2;
    {
    struct {
        struct dbg_info *DBG_INFO;
        int DBG_LINE;
        errcode err;
        errcode ecode2;
        CLUREF key;
        CLUREF user;
        CLUREF tab1;
        CLUREF tab2;
        } locals;
    locals.key.num = UNINIT;
    locals.user.num = UNINIT;
    locals.tab1.num = UNINIT;
    locals.tab2.num = UNINIT;
    locals.DBG_INFO = dbg_info_xrefOPmerge;
    locals.tab1 = tab1;
    locals.tab2 = tab2;
        if (xrefOPmerge_own_init == 0) {
        if (xref_own_init == 0) {
            locals.err = xref_own_init_proc();
            if (locals.err != ERR_ok) goto ex_0;
            }
        xrefOPmerge_own_init = 1;
    }
    enter_proc(191);

  LINE(192);
    {
        locals.err = xrefOPelements(locals.tab2, xrefOPmerge_IB_1, &locals, &locals.ecode2);
        if (locals.err == ERR_iterbodyreturn) {
        signal(ERR_ok);}
        if (locals.err == ERR_iterbodysignal) {signal(locals.ecode2);}
        if (locals.err == ERR_break) locals.err = ERR_ok;
        if (locals.err == ERR_iterbodyexit) locals.err = locals.ecode2;
        if (locals.err != ERR_ok) goto ex_0;
        }
    goto end_0;
    ex_0:
        {
            if (locals.err == ERR_failure) {signal(ERR_failure);}
            elist[0] = _pclu_erstr(locals.err);
            {signal(ERR_failure);}
        }
    end_0: {signal(ERR_ok);}
    }

/**** END PROCEDURE merge ****/

typedef struct {
    int hdr;
    int count;
    char *name;
    char *fname;
    bool is_iter;
    int is_parmd;
    int addr;
    int nargs;
    Vlist0 *vals;
    siglist0 *sigs;
    Vlist6 *locals;
    Vlist13 *owns;
    Vlist0 *ptowns;
    Vlist0 *popowns;
    Slist0 *type_formals;
    Slist0 *op_formals;
    } dbg_info_xrefOPmerge_actual;
static Vlist0 vals_xrefOPmerge = {0, 0};
static siglist0 sigs_xrefOPmerge = {0, 0};
static Vlist6 locals_xrefOPmerge = {0, 6,{ {0, 2, "err", &int_ops},  {0, 2, "ecode2", &int_ops},  {0, 2, "key", &string_ops},  {0, 2, "user", &string_ops},  {0, 2, "tab1", &xref_ops},  {0, 2, "tab2", &xref_ops}}
};
static Vlist0 popowns_xrefOPmerge = {0, 0};
Slist0 tformals_xrefOPmerge = {0, 0};
Slist0 opformals_xrefOPmerge = {0, 0};
dbg_info_xrefOPmerge_actual dbg_info_xrefOPmerge_data = {0, 12, 
    "xrefOPmerge", "/common/pub/dcurtis-temp/pclu/lib/clu/xref.clu", 0, 0, (int)xrefOPmerge, 2, 
    &vals_xrefOPmerge, &sigs_xrefOPmerge, &locals_xrefOPmerge, &owns_xref, &NO_VALS, &NO_VALS, &NO_PARMS, &NO_PARMS};
    struct dbg_info *dbg_info_xrefOPmerge = (struct dbg_info*)&dbg_info_xrefOPmerge_data;

/**** BEGIN ITERATOR BODIES for merge ****/

errcode xrefOPmerge_IB_1(iv_1, iv_2, locals, iecode)
errcode *iecode;
CLUREF iv_1;
CLUREF iv_2;
struct {
    struct dbg_info *DBG_INFO;
    int DBG_LINE;
    errcode err;
    errcode ecode2;
    CLUREF key;
    CLUREF user;
    CLUREF tab1;
    CLUREF tab2;
    } *locals;
{
    locals->key.num = iv_1.num;
    locals->user.num = iv_2.num;
    enter_iter_body_proc(193);

  FB_LINE(193);
    {
    locals->err = xrefOPadd_ref(locals->tab1, locals->key, locals->user);
    if (locals->err != ERR_ok) goto ex_0;
    }
    {signal(ERR_ok);}
    ex_0:
        {
            *iecode = locals->err;
            {signal(ERR_iterbodyexit);}}
    end_0: {signal(ERR_ok);}
    }/* end xrefOPmerge_IB_1 */

/**** END ITERATOR BODIES for merge ****/

extern struct dbg_info* dbg_info_xrefOPflush;
#undef MY_TRACE_FLAG
#define MY_TRACE_FLAG xrefOPflush_TRACE
int xrefOPflush_TRACE;
struct OPS *array_of_string_table;
struct OPS *array_of_string_ops;
struct OPS *array_of_string_ops;
OWNPTR array_of_string_owns;
struct OPS  *record_key_users_ops;
struct OPS *array_of_record_key_users_table;
struct OPS *array_of_record_key_users_ops;
struct OPS *array_of_record_key_users_ops;
OWNPTR array_of_record_key_users_owns;
static int xrefOPflush_own_init = 0;

/**** BEGIN PROCEDURE flush ****/

errcode xrefOPflush(tab)
CLUREF tab;
    {
    struct {
        struct dbg_info *DBG_INFO;
        int DBG_LINE;
        errcode err;
        errcode ecode2;
        CLUREF tab;
        } locals;
    locals.tab.num = UNINIT;
    locals.DBG_INFO = dbg_info_xrefOPflush;
    locals.tab = tab;
        if (xrefOPflush_own_init == 0) {
        if (xref_own_init == 0) {
            locals.err = xref_own_init_proc();
            if (locals.err != ERR_ok) goto ex_0;
            }
        xrefOPflush_own_init = 1;
    }
    enter_proc(199);

  LINE(200);
    {
    locals.err = arrayOPset_low(locals.tab, CLU_1);
    if (locals.err != ERR_ok) goto ex_0;
    }

  LINE(201);
    {
    locals.err = arrayOPtrim(locals.tab, CLU_1, CLU_0);
    if (locals.err != ERR_ok) goto ex_0;
    }
    goto end_0;
    ex_0:
        {
            if (locals.err == ERR_failure) {signal(ERR_failure);}
            elist[0] = _pclu_erstr(locals.err);
            {signal(ERR_failure);}
        }
    end_0: {signal(ERR_ok);}
    }

/**** END PROCEDURE flush ****/

typedef struct {
    int hdr;
    int count;
    char *name;
    char *fname;
    bool is_iter;
    int is_parmd;
    int addr;
    int nargs;
    Vlist0 *vals;
    siglist0 *sigs;
    Vlist3 *locals;
    Vlist13 *owns;
    Vlist0 *ptowns;
    Vlist0 *popowns;
    Slist0 *type_formals;
    Slist0 *op_formals;
    } dbg_info_xrefOPflush_actual;
static Vlist0 vals_xrefOPflush = {0, 0};
static siglist0 sigs_xrefOPflush = {0, 0};
static Vlist3 locals_xrefOPflush = {0, 3,{ {0, 2, "err", &int_ops},  {0, 2, "ecode2", &int_ops},  {0, 2, "tab", &array_of_record_key_users_ops}}
};
static Vlist0 popowns_xrefOPflush = {0, 0};
Slist0 tformals_xrefOPflush = {0, 0};
Slist0 opformals_xrefOPflush = {0, 0};
dbg_info_xrefOPflush_actual dbg_info_xrefOPflush_data = {0, 12, 
    "xrefOPflush", "/common/pub/dcurtis-temp/pclu/lib/clu/xref.clu", 0, 0, (int)xrefOPflush, 1, 
    &vals_xrefOPflush, &sigs_xrefOPflush, &locals_xrefOPflush, &owns_xref, &NO_VALS, &NO_VALS, &NO_PARMS, &NO_PARMS};
    struct dbg_info *dbg_info_xrefOPflush = (struct dbg_info*)&dbg_info_xrefOPflush_data;
extern struct dbg_info* dbg_info_xrefOPdebug_print;
#undef MY_TRACE_FLAG
#define MY_TRACE_FLAG xrefOPdebug_print_TRACE
int xrefOPdebug_print_TRACE;
struct OPS *array_of_string_table;
struct OPS *array_of_string_ops;
struct OPS *array_of_string_ops;
OWNPTR array_of_string_owns;
struct OPS  *record_key_users_ops;
struct OPS *array_of_record_key_users_table;
struct OPS *array_of_record_key_users_ops;
struct OPS *array_of_record_key_users_ops;
OWNPTR array_of_record_key_users_owns;
static int xrefOPdebug_print_own_init = 0;

/**** BEGIN PROCEDURE debug_print ****/

errcode xrefOPdebug_print(_rep, ps)
CLUREF _rep;
CLUREF ps;
    {
    struct {
        struct dbg_info *DBG_INFO;
        int DBG_LINE;
        errcode err;
        errcode ecode2;
        CLUREF _rep;
        CLUREF ps;
        } locals;
    locals._rep.num = UNINIT;
    locals.ps.num = UNINIT;
    locals.DBG_INFO = dbg_info_xrefOPdebug_print;
    locals._rep = _rep;
    locals.ps = ps;
        if (xrefOPdebug_print_own_init == 0) {
        if (xref_own_init == 0) {
            locals.err = xref_own_init_proc();
            if (locals.err != ERR_ok) goto ex_0;
            }
        xrefOPdebug_print_own_init = 1;
    }
    enter_proc(1);

  LINE(2);
    {
    generic_CLU_proc.type_owns = array_of_record_key_users_ops->type_owns;
    generic_CLU_proc.proc = arrayOPdebug_print;
    CUR_PROC_VAR.proc = &generic_CLU_proc;
    locals.err = arrayOPdebug_print(locals._rep, locals.ps);
    if (locals.err != ERR_ok) goto ex_0;
    }
    goto end_0;
    ex_0:
        {
            if (locals.err == ERR_failure) {signal(ERR_failure);}
            elist[0] = _pclu_erstr(locals.err);
            {signal(ERR_failure);}
        }
    end_0: {signal(ERR_ok);}
    }

/**** END PROCEDURE debug_print ****/

extern struct OPS *pstream_ops;
typedef struct {
    int hdr;
    int count;
    char *name;
    char *fname;
    bool is_iter;
    int is_parmd;
    int addr;
    int nargs;
    Vlist0 *vals;
    siglist0 *sigs;
    Vlist4 *locals;
    Vlist13 *owns;
    Vlist0 *ptowns;
    Vlist0 *popowns;
    Slist0 *type_formals;
    Slist0 *op_formals;
    } dbg_info_xrefOPdebug_print_actual;
static Vlist0 vals_xrefOPdebug_print = {0, 0};
static siglist0 sigs_xrefOPdebug_print = {0, 0};
static Vlist4 locals_xrefOPdebug_print = {0, 4,{ {0, 2, "err", &int_ops},  {0, 2, "ecode2", &int_ops},  {0, 2, "_rep", &array_of_record_key_users_ops},  {0, 2, "ps", &pstream_ops}}
};
static Vlist0 popowns_xrefOPdebug_print = {0, 0};
Slist0 tformals_xrefOPdebug_print = {0, 0};
Slist0 opformals_xrefOPdebug_print = {0, 0};
dbg_info_xrefOPdebug_print_actual dbg_info_xrefOPdebug_print_data = {0, 12, 
    "xrefOPdebug_print", "/common/pub/dcurtis-temp/pclu/lib/clu/xref.clu", 0, 0, (int)xrefOPdebug_print, 2, 
    &vals_xrefOPdebug_print, &sigs_xrefOPdebug_print, &locals_xrefOPdebug_print, &owns_xref, &NO_VALS, &NO_VALS, &NO_PARMS, &NO_PARMS};
    struct dbg_info *dbg_info_xrefOPdebug_print = (struct dbg_info*)&dbg_info_xrefOPdebug_print_data;
typedef struct{
    int count;
    OWNPTR type_owns;
    OWNPTR op_owns;
    struct OP_ENTRY entry[10];
} xref_OPS;

CLU_proc xref_oe_add_ref = {{0,0,0,0}, xrefOPadd_ref, 0};
CLU_proc xref_oe_add_refs = {{0,0,0,0}, xrefOPadd_refs, 0};
CLU_proc xref_oe_create = {{0,0,0,0}, xrefOPcreate, 0};
CLU_proc xref_oe_elements = {{0,0,0,0}, xrefOPelements, 0};
CLU_proc xref_oe_flush = {{0,0,0,0}, xrefOPflush, 0};
CLU_proc xref_oe_keys = {{0,0,0,0}, xrefOPkeys, 0};
CLU_proc xref_oe_merge = {{0,0,0,0}, xrefOPmerge, 0};
CLU_proc xref_oe_output = {{0,0,0,0}, xrefOPoutput, 0};
CLU_proc xref_oe_rem_refs = {{0,0,0,0}, xrefOPrem_refs, 0};
CLU_proc xref_oe_debug_print = {{0,0,0,0}, xrefOPdebug_print, 0};

xref_OPS xref_ops_actual = {10, (OWNPTR)&xref_own_init, (OWNPTR)&xref_own_init, {
    {&xref_oe_add_ref, "add_ref"},
    {&xref_oe_add_refs, "add_refs"},
    {&xref_oe_create, "create"},
    {&xref_oe_elements, "elements"},
    {&xref_oe_flush, "flush"},
    {&xref_oe_keys, "keys"},
    {&xref_oe_merge, "merge"},
    {&xref_oe_output, "output"},
    {&xref_oe_rem_refs, "rem_refs"},
    {&xref_oe_debug_print, "debug_print"}}};

struct OPS *xref_ops = (struct OPS *)&xref_ops_actual;

/**** END CLUSTER xref ****/
