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

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


extern struct dbg_info* dbg_info_date_parse;
#undef MY_TRACE_FLAG
#define MY_TRACE_FLAG date_parse_TRACE
int date_parse_TRACE;
extern struct OPS *int_ops;
static Vlist1 owns_date_parse = {0, 1,{ {0, 2, "_init", &int_ops}
}
};
extern errcode arrayOPnew();
extern errcode stringOPfetch();
extern errcode charOPequal();
extern errcode intOPadd();
extern errcode charOPge();
extern errcode charOPle();
extern errcode stringOPappend();
extern errcode boolOPnot();
extern errcode stringOPempty();
extern errcode arrayOPaddh();
extern errcode charOPi2c();
extern errcode charOPc2i();
extern errcode stringOPc2s();
extern errcode intOPlt();
extern errcode arrayOPsize();
extern errcode stringOPequal();
extern errcode arrayOPfetch();
extern errcode now();
extern errcode dateOPget_day();
extern errcode dateOPget_month();
extern errcode dateOPget_year();
extern errcode arrayOPreml();
extern errcode intOPparse();
extern errcode intOPequal();
extern errcode stringOPsubstr();
extern errcode stringOPsize();
extern errcode intOPdiv();
extern errcode stringOPindexs();
extern errcode arrayOPbottom();
extern errcode arrayOPempty();
extern errcode intOPgt();
extern errcode arrayOPlow();
extern errcode arrayOPset_low();
extern errcode dateOPcreate();
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;
CLUREF STR_;
CLUREF STR__072;
CLUREF STR_jan_040feb_040mar_040apr_040may_040jun_040jul_040aug_040sep_040oct_040nov_040dec_040;
CLUREF STR__054;
CLUREF STR__057;
CLUREF STR__055;
static int date_parse_own_init = 0;

/**** BEGIN PROCEDURE date_parse ****/

errcode date_parse(s, ret_1)
CLUREF s;
CLUREF *ret_1;
    {
    struct {
        struct dbg_info *DBG_INFO;
        int DBG_LINE;
        errcode err;
        errcode ecode2;
        CLUREF as;
        CLUREF pos;
        CLUREF c;
        CLUREF acc;
        CLUREF day;
        CLUREF month;
        CLUREF year;
        CLUREF d;
        CLUREF ms;
        CLUREF expect;
        CLUREF next_char;
        CLUREF hr;
        CLUREF min;
        CLUREF sec;
        CLUREF s;
        } locals;
    locals.as.num = UNINIT;
    locals.pos.num = UNINIT;
    locals.c.num = UNINIT;
    locals.acc.num = UNINIT;
    locals.day.num = UNINIT;
    locals.month.num = UNINIT;
    locals.year.num = UNINIT;
    locals.d.num = UNINIT;
    locals.ms.num = UNINIT;
    locals.expect.num = UNINIT;
    locals.next_char.num = UNINIT;
    locals.hr.num = UNINIT;
    locals.min.num = UNINIT;
    locals.sec.num = UNINIT;
    locals.s.num = UNINIT;
    locals.DBG_INFO = dbg_info_date_parse;
    locals.s = s;
        if (date_parse_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));
        stringOPcons("", CLU_1, CLU_0, &STR_);
        stringOPcons(":", CLU_1, CLU_1, &STR__072);
        stringOPcons("jan feb mar apr may jun jul aug sep oct nov dec ", CLU_1, CLU_48, &STR_jan_040feb_040mar_040apr_040may_040jun_040jul_040aug_040sep_040oct_040nov_040dec_040);
        stringOPcons(",", CLU_1, CLU_1, &STR__054);
        stringOPcons("/", CLU_1, CLU_1, &STR__057);
        stringOPcons("-", CLU_1, CLU_1, &STR__055);
        date_parse_own_init = 1;
    }
    enter_proc(17);

  LINE(22);
    {
        {CLUREF T_1_1;
        locals.err = arrayOPnew(&T_1_1);
        if (locals.err != ERR_ok) goto ex_0;
        locals.as.num = T_1_1.num;
        }
        }

  LINE(23);
    {
        {locals.pos.num = 1;
        }
        }

  LINE(25);
    for (;;) {
        if (true != true) { break; }

  LINE(27);
        {
            {CLUREF T_3_1;
            locals.err = stringOPfetch(locals.s, locals.pos, &T_3_1);
            if (locals.err != ERR_ok) goto ex_1;
            locals.c.num = T_3_1.num;
            }
            }

  LINE(28);
        {
        CLUREF T_3_1;
        CLUREF T_3_2;
        CLUREF T_3_3;
        CLUREF T_3_4;
        CLUREF T_3_5;
        T_3_2.ch = ' ';
        T_3_3.num = (locals.c.ch == T_3_2.ch)? true : false;
        T_3_1.num = T_3_3.num;
        if (!T_3_3.num) {
            T_3_4.ch = '\t';
            T_3_5.num = (locals.c.ch == T_3_4.ch)? true : false;
            T_3_1.num = T_3_5.num;
        }
        if (T_3_1.num == true) {

  LINE(29);
            {
            CLUREF T_4_1;
            locals.err = intOPadd(locals.pos, CLU_1, &T_4_1);
            if (locals.err != ERR_ok) goto ex_1;
            locals.pos.num = T_4_1.num;
            }

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

  LINE(32);
        {
            {locals.acc = STR_;
            }
            }

  LINE(33);
        for (;;) {
            CLUREF T_4_1;
            CLUREF T_4_2;
            CLUREF T_4_3;
            CLUREF T_4_4;
            CLUREF T_4_5;
            T_4_2.ch = '0';
            locals.err = charOPge(locals.c, T_4_2, &T_4_3);
            if (locals.err != ERR_ok) goto ex_2;
            T_4_1.num = T_4_3.num;
            if (T_4_3.num) {
                T_4_4.ch = '9';
                locals.err = charOPle(locals.c, T_4_4, &T_4_5);
                if (locals.err != ERR_ok) goto ex_2;
                T_4_1.num = T_4_5.num;
            }
            if (T_4_1.num != true) { break; }

  LINE(34);
            {
            CLUREF T_5_1;
            locals.err = stringOPappend(locals.acc, locals.c, &T_5_1);
            if (locals.err != ERR_ok) goto ex_2;
            locals.acc.num = T_5_1.num;
            }

  LINE(35);
            {
            CLUREF T_5_1;
            locals.err = intOPadd(locals.pos, CLU_1, &T_5_1);
            if (locals.err != ERR_ok) goto ex_2;
            locals.pos.num = T_5_1.num;
            }

  LINE(36);
            {
            CLUREF T_5_1;
            locals.err = stringOPfetch(locals.s, locals.pos, &T_5_1);
            if (locals.err != ERR_ok) goto ex_2;
            locals.c.num = T_5_1.num;
            }
            }
            end_while_2:;
            goto end_2;
            ex_2:
                {
                }
            end_2:;

  LINE(38);
        {
        CLUREF T_3_1;
        CLUREF T_3_2;
        locals.err = stringOPempty(locals.acc, &T_3_1);
        if (locals.err != ERR_ok) goto ex_1;
        T_3_2.num = T_3_1.num ^ 1;
        if (T_3_2.num == true) {

  LINE(39);
            {
            locals.err = arrayOPaddh(locals.as, locals.acc);
            if (locals.err != ERR_ok) goto ex_1;
            }

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

  LINE(42);
        for (;;) {
            CLUREF T_4_1;
            CLUREF T_4_2;
            CLUREF T_4_3;
            CLUREF T_4_4;
            CLUREF T_4_5;
            CLUREF T_4_6;
            CLUREF T_4_7;
            CLUREF T_4_8;
            CLUREF T_4_9;
            CLUREF T_4_10;
            CLUREF T_4_11;
            T_4_3.ch = 'A';
            locals.err = charOPge(locals.c, T_4_3, &T_4_4);
            if (locals.err != ERR_ok) goto ex_3;
            T_4_2.num = T_4_4.num;
            if (T_4_4.num) {
                T_4_5.ch = 'Z';
                locals.err = charOPle(locals.c, T_4_5, &T_4_6);
                if (locals.err != ERR_ok) goto ex_3;
                T_4_2.num = T_4_6.num;
            }
            T_4_1.num = T_4_2.num;
            if (!T_4_2.num) {
                T_4_8.ch = 'a';
                locals.err = charOPge(locals.c, T_4_8, &T_4_9);
                if (locals.err != ERR_ok) goto ex_3;
                T_4_7.num = T_4_9.num;
                if (T_4_9.num) {
                    T_4_10.ch = 'z';
                    locals.err = charOPle(locals.c, T_4_10, &T_4_11);
                    if (locals.err != ERR_ok) goto ex_3;
                    T_4_7.num = T_4_11.num;
                }
                T_4_1.num = T_4_7.num;
            }
            if (T_4_1.num != true) { break; }

  LINE(43);
            {
            CLUREF T_5_1;
            CLUREF T_5_2;
            T_5_1.ch = 'Z';
            locals.err = charOPle(locals.c, T_5_1, &T_5_2);
            if (locals.err != ERR_ok) goto ex_3;
            if (T_5_2.num == true) {
                {
                CLUREF T_6_1;
                CLUREF T_6_2;
                CLUREF T_6_3;
                T_6_1.num = (int)(locals.c.ch & 0xff);
                locals.err = intOPadd(T_6_1, CLU_32, &T_6_2);
                if (locals.err != ERR_ok) goto ex_3;
                locals.err = charOPi2c(T_6_2, &T_6_3);
                if (locals.err != ERR_ok) goto ex_3;
                locals.c.num = T_6_3.num;
                }
                }
                }/* end if */

  LINE(44);
            {
            CLUREF T_5_1;
            locals.err = stringOPappend(locals.acc, locals.c, &T_5_1);
            if (locals.err != ERR_ok) goto ex_3;
            locals.acc.num = T_5_1.num;
            }

  LINE(45);
            {
            CLUREF T_5_1;
            locals.err = intOPadd(locals.pos, CLU_1, &T_5_1);
            if (locals.err != ERR_ok) goto ex_3;
            locals.pos.num = T_5_1.num;
            }

  LINE(46);
            {
            CLUREF T_5_1;
            locals.err = stringOPfetch(locals.s, locals.pos, &T_5_1);
            if (locals.err != ERR_ok) goto ex_3;
            locals.c.num = T_5_1.num;
            }
            }
            end_while_3:;
            goto end_3;
            ex_3:
                {
                }
            end_3:;

  LINE(48);
        {
        CLUREF T_3_1;
        locals.err = stringOPempty(locals.acc, &T_3_1);
        if (locals.err != ERR_ok) goto ex_1;
        if (T_3_1.num == true) {

  LINE(49);
            {
            CLUREF T_4_1;
            locals.err = stringOPc2s(locals.c, &T_4_1);
            if (locals.err != ERR_ok) goto ex_1;
            locals.acc.num = T_4_1.num;
            }

  LINE(50);
            {
            CLUREF T_4_1;
            locals.err = intOPadd(locals.pos, CLU_1, &T_4_1);
            if (locals.err != ERR_ok) goto ex_1;
            locals.pos.num = T_4_1.num;
            }
            }
            }/* end if */

  LINE(52);
        {
        locals.err = arrayOPaddh(locals.as, locals.acc);
        if (locals.err != ERR_ok) goto ex_1;
        }
        }
        end_while_1:;
        goto end_1;
        ex_1:
            {
            }
        end_1:;

  LINE(55);
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    T_1_1.num = locals.as.array->ext_size;
    T_1_2.num = (T_1_1.num < 2)? true : false;
    if (T_1_2.num == true) {
        {
        {signal (ERR_invalid_format);}}
        }
        }/* end if */

  LINE(56);
    locals.day.num = UNINIT;
    locals.month.num = UNINIT;
    locals.year.num = UNINIT;

  LINE(57);
    {
    locals.day.num = 0;
    locals.month.num = 0;
    locals.year.num = 0;
    }

  LINE(58);
    {
    CLUREF T_2_1;
    CLUREF T_2_2;
    locals.err = arrayOPfetch(locals.as, CLU_2, &T_2_1);
    if (locals.err != ERR_ok) goto ex_4;
    locals.err = stringOPequal(T_2_1, STR__072, &T_2_2);
    if (locals.err != ERR_ok) goto ex_4;
    if (T_2_2.num == true) {

  LINE(60);
        {
            {CLUREF T_3_1;
            locals.err = now(&T_3_1);
            if (locals.err != ERR_ok) goto ex_4;
            locals.d.num = T_3_1.num;
            }
            }

  LINE(61);
        {
        CLUREF T_3_1;
        locals.err = dateOPget_day(locals.d, &T_3_1);
        if (locals.err != ERR_ok) goto ex_4;
        locals.day.num = T_3_1.num;
        }

  LINE(62);
        {
        CLUREF T_3_1;
        locals.err = dateOPget_month(locals.d, &T_3_1);
        if (locals.err != ERR_ok) goto ex_4;
        locals.month.num = T_3_1.num;
        }

  LINE(63);
        {
        CLUREF T_3_1;
        locals.err = dateOPget_year(locals.d, &T_3_1);
        if (locals.err != ERR_ok) goto ex_4;
        locals.year.num = T_3_1.num;
        }
        }
    else {

  LINE(66);
        {
            {CLUREF T_3_1;
            locals.err = arrayOPreml(locals.as, &T_3_1);
            if (locals.err != ERR_ok) goto ex_4;
            locals.ms.num = T_3_1.num;
            }
            }

  LINE(67);
        {
        CLUREF T_4_1;
        locals.err = intOPparse(locals.ms, &T_4_1);
        if (locals.err != ERR_ok) goto ex_5;
        locals.day.num = T_4_1.num;
        }
            goto end_5;
            ex_5:
                {
                }
            end_5:;

  LINE(69);
        locals.expect.num = UNINIT;

  LINE(70);
        {
        CLUREF T_3_1;
        T_3_1.num = (locals.day.num == 0)? true : false;
        if (T_3_1.num == true) {

  LINE(72);
            {
            CLUREF T_4_1;
            locals.err = stringOPsubstr(locals.ms, CLU_1, CLU_3, &T_4_1);
            if (locals.err != ERR_ok) goto ex_4;
            locals.ms.num = T_4_1.num;
            }

  LINE(73);
            {
            CLUREF T_4_1;
            CLUREF T_4_2;
            CLUREF T_4_3;
            locals.err = stringOPsize(locals.ms, &T_4_1);
            if (locals.err != ERR_ok) goto ex_4;
            T_4_2.num = (T_4_1.num == 3)? true : false;
            T_4_3.num = T_4_2.num ^ 1;
            if (T_4_3.num == true) {
                {
                {signal (ERR_invalid_format);}}
                }
                }/* end if */

  LINE(74);
            {
            CLUREF T_4_1;
            CLUREF T_4_2;
            CLUREF T_4_3;
            locals.err = stringOPindexs(locals.ms, STR_jan_040feb_040mar_040apr_040may_040jun_040jul_040aug_040sep_040oct_040nov_040dec_040, &T_4_1);
            if (locals.err != ERR_ok) goto ex_4;
            locals.err = intOPadd(T_4_1, CLU_3, &T_4_2);
            if (locals.err != ERR_ok) goto ex_4;
            locals.err = intOPdiv(T_4_2, CLU_4, &T_4_3);
            if (locals.err != ERR_ok) goto ex_4;
            locals.month.num = T_4_3.num;
            }

  LINE(75);
            {
            CLUREF T_4_1;
            CLUREF T_4_2;
            locals.err = arrayOPreml(locals.as, &T_4_1);
            if (locals.err != ERR_ok) goto ex_4;
            locals.err = intOPparse(T_4_1, &T_4_2);
            if (locals.err != ERR_ok) goto ex_4;
            locals.day.num = T_4_2.num;
            }

  LINE(76);
            {
            locals.expect = STR__054;
            }
            }
        else {
        CLUREF T_3_2;
        CLUREF T_3_3;
        locals.err = arrayOPbottom(locals.as, &T_3_2);
        if (locals.err != ERR_ok) goto ex_4;
        locals.err = stringOPequal(T_3_2, STR__057, &T_3_3);
        if (locals.err != ERR_ok) goto ex_4;
        if (T_3_3.num == true) {

  LINE(79);
            {
            locals.month.num = locals.day.num;
            }

  LINE(80);
            {
            CLUREF T_4_1;
            locals.err = arrayOPreml(locals.as, &T_4_1);
            if (locals.err != ERR_ok) goto ex_4;
            }

  LINE(81);
            {
            CLUREF T_4_1;
            CLUREF T_4_2;
            locals.err = arrayOPreml(locals.as, &T_4_1);
            if (locals.err != ERR_ok) goto ex_4;
            locals.err = intOPparse(T_4_1, &T_4_2);
            if (locals.err != ERR_ok) goto ex_4;
            locals.day.num = T_4_2.num;
            }

  LINE(82);
            {
            locals.expect = STR__057;
            }
            }
        else {

  LINE(84);
            {
            CLUREF T_4_1;
            CLUREF T_4_2;
            locals.err = arrayOPbottom(locals.as, &T_4_1);
            if (locals.err != ERR_ok) goto ex_4;
            locals.err = stringOPequal(T_4_1, STR__055, &T_4_2);
            if (locals.err != ERR_ok) goto ex_4;
            if (T_4_2.num == true) {

  LINE(85);
                {
                CLUREF T_5_1;
                locals.err = arrayOPreml(locals.as, &T_5_1);
                if (locals.err != ERR_ok) goto ex_4;
                }

  LINE(86);
                {
                locals.expect = STR__055;
                }
                }
            else {

  LINE(87);
                {
                locals.expect = STR__054;
                }
                }}/* end if */

  LINE(89);
            {
            CLUREF T_4_1;
            CLUREF T_4_2;
            locals.err = arrayOPreml(locals.as, &T_4_1);
            if (locals.err != ERR_ok) goto ex_4;
            locals.err = stringOPsubstr(T_4_1, CLU_1, CLU_3, &T_4_2);
            if (locals.err != ERR_ok) goto ex_4;
            locals.ms.num = T_4_2.num;
            }

  LINE(90);
            {
            CLUREF T_4_1;
            CLUREF T_4_2;
            CLUREF T_4_3;
            locals.err = stringOPsize(locals.ms, &T_4_1);
            if (locals.err != ERR_ok) goto ex_4;
            T_4_2.num = (T_4_1.num == 3)? true : false;
            T_4_3.num = T_4_2.num ^ 1;
            if (T_4_3.num == true) {
                {
                {signal (ERR_invalid_format);}}
                }
                }/* end if */

  LINE(91);
            {
            CLUREF T_4_1;
            CLUREF T_4_2;
            CLUREF T_4_3;
            locals.err = stringOPindexs(locals.ms, STR_jan_040feb_040mar_040apr_040may_040jun_040jul_040aug_040sep_040oct_040nov_040dec_040, &T_4_1);
            if (locals.err != ERR_ok) goto ex_4;
            locals.err = intOPadd(T_4_1, CLU_3, &T_4_2);
            if (locals.err != ERR_ok) goto ex_4;
            locals.err = intOPdiv(T_4_2, CLU_4, &T_4_3);
            if (locals.err != ERR_ok) goto ex_4;
            locals.month.num = T_4_3.num;
            }
            }}}/* end if */

  LINE(93);
        {
        CLUREF T_3_1;
        T_3_1.num = (locals.as.array->ext_size == 0)? true : false;
        if (T_3_1.num == true) {

  LINE(95);
            {
            CLUREF T_4_1;
            CLUREF T_4_2;
            locals.err = now(&T_4_1);
            if (locals.err != ERR_ok) goto ex_4;
            locals.err = dateOPget_year(T_4_1, &T_4_2);
            if (locals.err != ERR_ok) goto ex_4;
            locals.year.num = T_4_2.num;
            }
            }
        else {
        CLUREF T_3_2;
        CLUREF T_3_3;
        locals.err = arrayOPbottom(locals.as, &T_3_2);
        if (locals.err != ERR_ok) goto ex_4;
        locals.err = stringOPequal(T_3_2, locals.expect, &T_3_3);
        if (locals.err != ERR_ok) goto ex_4;
        if (T_3_3.num == true) {

  LINE(98);
            {
            CLUREF T_4_1;
            locals.err = arrayOPreml(locals.as, &T_4_1);
            if (locals.err != ERR_ok) goto ex_4;
            }

  LINE(99);
            {
            CLUREF T_4_1;
            CLUREF T_4_2;
            locals.err = arrayOPreml(locals.as, &T_4_1);
            if (locals.err != ERR_ok) goto ex_4;
            locals.err = intOPparse(T_4_1, &T_4_2);
            if (locals.err != ERR_ok) goto ex_4;
            locals.year.num = T_4_2.num;
            }
            }
        else {
        CLUREF T_3_4;
        locals.err = stringOPequal(locals.expect, STR__054, &T_3_4);
        if (locals.err != ERR_ok) goto ex_4;
        if (T_3_4.num == true) {

  LINE(102);
            {
            CLUREF T_4_1;
            CLUREF T_4_2;
            locals.err = arrayOPbottom(locals.as, &T_4_1);
            if (locals.err != ERR_ok) goto ex_4;
            locals.err = intOPparse(T_4_1, &T_4_2);
            if (locals.err != ERR_ok) goto ex_4;
            locals.year.num = T_4_2.num;
            }

  LINE(103);
            {
            CLUREF T_4_1;
            T_4_1.num = (locals.year.num > 23)? true : false;
            if (T_4_1.num == true) {

  LINE(105);
                {
                CLUREF T_5_1;
                locals.err = arrayOPreml(locals.as, &T_5_1);
                if (locals.err != ERR_ok) goto ex_4;
                }
                }
            else {

  LINE(107);
                {
                    {CLUREF T_5_1;
                    CLUREF T_5_2;
                    CLUREF T_5_3;
                    CLUREF T_5_4;
                    T_5_1.num = locals.as.array->ext_low;
                    locals.err = intOPadd(T_5_1, CLU_1, &T_5_2);
                    if (locals.err != ERR_ok) goto ex_4;
                    locals.err = arrayOPfetch(locals.as, T_5_2, &T_5_3);
                    if (locals.err != ERR_ok) goto ex_4;
                    locals.err = stringOPfetch(T_5_3, CLU_1, &T_5_4);
                    if (locals.err != ERR_ok) goto ex_4;
                    locals.next_char.num = T_5_4.num;
                    }
                    }

  LINE(108);
                {
                CLUREF T_5_1;
                CLUREF T_5_2;
                CLUREF T_5_3;
                CLUREF T_5_4;
                CLUREF T_5_5;
                T_5_2.ch = '1';
                locals.err = charOPge(locals.next_char, T_5_2, &T_5_3);
                if (locals.err != ERR_ok) goto ex_4;
                T_5_1.num = T_5_3.num;
                if (T_5_3.num) {
                    T_5_4.ch = '9';
                    locals.err = charOPle(locals.next_char, T_5_4, &T_5_5);
                    if (locals.err != ERR_ok) goto ex_4;
                    T_5_1.num = T_5_5.num;
                }
                if (T_5_1.num == true) {

  LINE(110);
                    {
                    CLUREF T_6_1;
                    locals.err = arrayOPreml(locals.as, &T_6_1);
                    if (locals.err != ERR_ok) goto ex_4;
                    }
                    }
                else {

  LINE(112);
                    {
                    CLUREF T_6_1;
                    CLUREF T_6_2;
                    locals.err = now(&T_6_1);
                    if (locals.err != ERR_ok) goto ex_4;
                    locals.err = dateOPget_year(T_6_1, &T_6_2);
                    if (locals.err != ERR_ok) goto ex_4;
                    locals.year.num = T_6_2.num;
                    }
                    }}/* end if */
                }}/* end if */
            }
        else {

  LINE(115);
            {
            CLUREF T_4_1;
            CLUREF T_4_2;
            locals.err = now(&T_4_1);
            if (locals.err != ERR_ok) goto ex_4;
            locals.err = dateOPget_year(T_4_1, &T_4_2);
            if (locals.err != ERR_ok) goto ex_4;
            locals.year.num = T_4_2.num;
            }
            }}}}/* end if */

  LINE(117);
        {
        CLUREF T_3_1;
        CLUREF T_3_2;
        T_3_1.num = 100;
        T_3_2.num = (locals.year.num < T_3_1.num)? true : false;
        if (T_3_2.num == true) {
            {
            CLUREF T_4_1;
            CLUREF T_4_2;
            T_4_1.num = 1900;
            locals.err = intOPadd(locals.year, T_4_1, &T_4_2);
            if (locals.err != ERR_ok) goto ex_4;
            locals.year.num = T_4_2.num;
            }
            }
            }/* end if */

  LINE(118);
        {
        locals.err = arrayOPset_low(locals.as, CLU_1);
        if (locals.err != ERR_ok) goto ex_4;
        }
        }}/* end if */
        goto end_4;
        ex_4:
            {

  LINE(119);
                {
                {signal (ERR_invalid_format);}}
            }
        end_4:;

  LINE(121);
    locals.hr.num = UNINIT;
    locals.min.num = UNINIT;
    locals.sec.num = UNINIT;

  LINE(122);
    {
    locals.hr.num = 0;
    locals.min.num = 0;
    locals.sec.num = 0;
    }

  LINE(123);
    {
    CLUREF T_2_1;
    CLUREF T_2_2;
    T_2_1.num = (locals.as.array->ext_size == 0)? true : false;
    T_2_2.num = T_2_1.num ^ 1;
    if (T_2_2.num == true) {

  LINE(124);
        {
        CLUREF T_3_1;
        CLUREF T_3_2;
        locals.err = arrayOPreml(locals.as, &T_3_1);
        if (locals.err != ERR_ok) goto ex_6;
        locals.err = intOPparse(T_3_1, &T_3_2);
        if (locals.err != ERR_ok) goto ex_6;
        locals.hr.num = T_3_2.num;
        }

  LINE(125);
        {
        CLUREF T_3_1;
        CLUREF T_3_2;
        CLUREF T_3_3;
        locals.err = arrayOPreml(locals.as, &T_3_1);
        if (locals.err != ERR_ok) goto ex_6;
        locals.err = stringOPequal(T_3_1, STR__072, &T_3_2);
        if (locals.err != ERR_ok) goto ex_6;
        T_3_3.num = T_3_2.num ^ 1;
        if (T_3_3.num == true) {
            {
            {signal (ERR_invalid_format);}}
            }
            }/* end if */

  LINE(126);
        {
        CLUREF T_3_1;
        CLUREF T_3_2;
        locals.err = arrayOPreml(locals.as, &T_3_1);
        if (locals.err != ERR_ok) goto ex_6;
        locals.err = intOPparse(T_3_1, &T_3_2);
        if (locals.err != ERR_ok) goto ex_6;
        locals.min.num = T_3_2.num;
        }

  LINE(127);
        {
        CLUREF T_3_1;
        CLUREF T_3_2;
        T_3_1.num = (locals.as.array->ext_size == 0)? true : false;
        T_3_2.num = T_3_1.num ^ 1;
        if (T_3_2.num == true) {

  LINE(128);
            {
            CLUREF T_4_1;
            CLUREF T_4_2;
            CLUREF T_4_3;
            locals.err = arrayOPreml(locals.as, &T_4_1);
            if (locals.err != ERR_ok) goto ex_6;
            locals.err = stringOPequal(T_4_1, STR__072, &T_4_2);
            if (locals.err != ERR_ok) goto ex_6;
            T_4_3.num = T_4_2.num ^ 1;
            if (T_4_3.num == true) {
                {
                {signal (ERR_invalid_format);}}
                }
                }/* end if */

  LINE(129);
            {
            CLUREF T_4_1;
            CLUREF T_4_2;
            locals.err = arrayOPreml(locals.as, &T_4_1);
            if (locals.err != ERR_ok) goto ex_6;
            locals.err = intOPparse(T_4_1, &T_4_2);
            if (locals.err != ERR_ok) goto ex_6;
            locals.sec.num = T_4_2.num;
            }
            }
            }/* end if */
        }
        }/* end if */
        goto end_6;
        ex_6:
            {

  LINE(131);
                {
                {signal (ERR_invalid_format);}}
            }
        end_6:;

  LINE(132);
    {
    CLUREF T_2_1;
    T_2_1.num = (locals.as.array->ext_size == 0)? true : false;
    if (T_2_1.num == true) {

  LINE(133);
        {
        {
        CLUREF T_3_1;
        locals.err = dateOPcreate(locals.day, locals.month, locals.year, locals.hr, locals.min, locals.sec, &T_3_1);
        if (locals.err != ERR_ok) goto ex_7;
        ret_1->num = T_3_1.num;
        }
        {signal (ERR_ok);}}
        }
        }/* end if */
        goto end_7;
        ex_7:
            {
            }
        end_7:;

  LINE(136);
    {
    {signal (ERR_invalid_format);}}
    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 date_parse ****/

extern struct OPS *date_ops;
extern struct OPS *array_of_string_ops;
extern struct OPS *char_ops;
typedef struct {
    int hdr;
    int count;
    char *name;
    char *fname;
    bool is_iter;
    int is_parmd;
    int addr;
    int nargs;
    Vlist1 *vals;
    siglist1 *sigs;
    Vlist17 *locals;
    Vlist1 *owns;
    Vlist0 *ptowns;
    Vlist0 *popowns;
    Slist0 *type_formals;
    Slist0 *op_formals;
    } dbg_info_date_parse_actual;
static Vlist1 vals_date_parse = {0, 1, { {0, 2, "", &date_ops}}
};
static sig_desc0 sig_date_parse_1 = {0, 3, "invalid_format", {0, 0
}};
static siglist1 sigs_date_parse = {0, 1, (sig_desc*)&sig_date_parse_1};
static Vlist17 locals_date_parse = {0, 17,{ {0, 2, "err", &int_ops},  {0, 2, "ecode2", &int_ops},  {0, 2, "as", &array_of_string_ops},  {0, 2, "pos", &int_ops},  {0, 2, "c", &char_ops},  {0, 2, "acc", &string_ops},  {0, 2, "day", &int_ops},  {0, 2, "month", &int_ops},  {0, 2, "year", &int_ops},  {0, 2, "d", &date_ops},  {0, 2, "ms", &string_ops},  {0, 2, "expect", &string_ops},  {0, 2, "next_char", &char_ops},  {0, 2, "hr", &int_ops},  {0, 2, "min", &int_ops},  {0, 2, "sec", &int_ops},  {0, 2, "s", &string_ops}}
};
static Vlist0 popowns_date_parse = {0, 0};
Slist0 tformals_date_parse = {0, 0};
Slist0 opformals_date_parse = {0, 0};
dbg_info_date_parse_actual dbg_info_date_parse_data = {0, 12, 
    "date_parse", "/common/pub/dcurtis-temp/pclu/lib/clu/dparse.clu", 0, 0, (int)date_parse, 1, 
    &vals_date_parse, &sigs_date_parse, &locals_date_parse, &owns_date_parse, &NO_VALS, &NO_VALS, &NO_PARMS, &NO_PARMS};
    struct dbg_info *dbg_info_date_parse = (struct dbg_info*)&dbg_info_date_parse_data;

extern struct dbg_info* dbg_info_date_sub;
#undef MY_TRACE_FLAG
#define MY_TRACE_FLAG date_sub_TRACE
int date_sub_TRACE;
static Vlist1 owns_date_sub = {0, 1,{ {0, 2, "_init", &int_ops}
}
};
extern errcode dateOPget_all();
extern errcode intOPsub();
extern errcode intOPmod();
extern OWN_req int_ownreqs;
struct OPS *array_of_int_table;
struct OPS *array_of_int_ops;
struct OPS *array_of_int_ops;
OWNPTR array_of_int_owns;
static int date_sub_own_init = 0;

/**** BEGIN PROCEDURE date_sub ****/

errcode date_sub(d, days, months, years, ret_1)
CLUREF d;
CLUREF days;
CLUREF months;
CLUREF years;
CLUREF *ret_1;
    {
    struct {
        struct dbg_info *DBG_INFO;
        int DBG_LINE;
        errcode err;
        errcode ecode2;
        CLUREF m2d;
        CLUREF lm2d;
        CLUREF adj;
        CLUREF day;
        CLUREF month;
        CLUREF year;
        CLUREF hour;
        CLUREF min;
        CLUREF sec;
        CLUREF dim;
        CLUREF d;
        CLUREF days;
        CLUREF months;
        CLUREF years;
        } locals;
    locals.m2d.num = UNINIT;
    locals.lm2d.num = UNINIT;
    locals.adj.num = UNINIT;
    locals.day.num = UNINIT;
    locals.month.num = UNINIT;
    locals.year.num = UNINIT;
    locals.hour.num = UNINIT;
    locals.min.num = UNINIT;
    locals.sec.num = UNINIT;
    locals.dim.num = UNINIT;
    locals.d.num = UNINIT;
    locals.days.num = UNINIT;
    locals.months.num = UNINIT;
    locals.years.num = UNINIT;
    locals.DBG_INFO = dbg_info_date_sub;
    locals.d = d;
    locals.days = days;
    locals.months = months;
    locals.years = years;
        if (date_sub_own_init == 0) {
        add_parm_info_type(0, int_ops, array_of_t_reqs);
        find_type_instance(array_ops, 1, &array_ownreqs, &(array_of_int_ops));
        date_sub_own_init = 1;
    }
    enter_proc(139);

  LINE(142);
    {
        {CLUREF T_1_1;
        locals.err = arrayOPcreate(CLU_1,  &T_1_1);
        if (locals.err != ERR_ok) goto ex_0;
        locals.err = arrayOPaddh(T_1_1, CLU_31);
        if (locals.err != ERR_ok) goto ex_0;
        locals.err = arrayOPaddh(T_1_1, CLU_28);
        if (locals.err != ERR_ok) goto ex_0;
        locals.err = arrayOPaddh(T_1_1, CLU_31);
        if (locals.err != ERR_ok) goto ex_0;
        locals.err = arrayOPaddh(T_1_1, CLU_30);
        if (locals.err != ERR_ok) goto ex_0;
        locals.err = arrayOPaddh(T_1_1, CLU_31);
        if (locals.err != ERR_ok) goto ex_0;
        locals.err = arrayOPaddh(T_1_1, CLU_30);
        if (locals.err != ERR_ok) goto ex_0;
        locals.err = arrayOPaddh(T_1_1, CLU_31);
        if (locals.err != ERR_ok) goto ex_0;
        locals.err = arrayOPaddh(T_1_1, CLU_31);
        if (locals.err != ERR_ok) goto ex_0;
        locals.err = arrayOPaddh(T_1_1, CLU_30);
        if (locals.err != ERR_ok) goto ex_0;
        locals.err = arrayOPaddh(T_1_1, CLU_31);
        if (locals.err != ERR_ok) goto ex_0;
        locals.err = arrayOPaddh(T_1_1, CLU_30);
        if (locals.err != ERR_ok) goto ex_0;
        locals.err = arrayOPaddh(T_1_1, CLU_31);
        if (locals.err != ERR_ok) goto ex_0;
        locals.m2d.num = T_1_1.num;
        }
        }

  LINE(143);
    {
        {CLUREF T_1_1;
        locals.err = arrayOPcreate(CLU_1,  &T_1_1);
        if (locals.err != ERR_ok) goto ex_0;
        locals.err = arrayOPaddh(T_1_1, CLU_31);
        if (locals.err != ERR_ok) goto ex_0;
        locals.err = arrayOPaddh(T_1_1, CLU_29);
        if (locals.err != ERR_ok) goto ex_0;
        locals.err = arrayOPaddh(T_1_1, CLU_31);
        if (locals.err != ERR_ok) goto ex_0;
        locals.err = arrayOPaddh(T_1_1, CLU_30);
        if (locals.err != ERR_ok) goto ex_0;
        locals.err = arrayOPaddh(T_1_1, CLU_31);
        if (locals.err != ERR_ok) goto ex_0;
        locals.err = arrayOPaddh(T_1_1, CLU_30);
        if (locals.err != ERR_ok) goto ex_0;
        locals.err = arrayOPaddh(T_1_1, CLU_31);
        if (locals.err != ERR_ok) goto ex_0;
        locals.err = arrayOPaddh(T_1_1, CLU_31);
        if (locals.err != ERR_ok) goto ex_0;
        locals.err = arrayOPaddh(T_1_1, CLU_30);
        if (locals.err != ERR_ok) goto ex_0;
        locals.err = arrayOPaddh(T_1_1, CLU_31);
        if (locals.err != ERR_ok) goto ex_0;
        locals.err = arrayOPaddh(T_1_1, CLU_30);
        if (locals.err != ERR_ok) goto ex_0;
        locals.err = arrayOPaddh(T_1_1, CLU_31);
        if (locals.err != ERR_ok) goto ex_0;
        locals.lm2d.num = T_1_1.num;
        }
        }

  LINE(144);
    {
        {locals.adj.num = locals.m2d.num;
        }
        }

  LINE(146);
    {
        {CLUREF T_1_1;
        CLUREF T_1_2;
        CLUREF T_1_3;
        CLUREF T_1_4;
        CLUREF T_1_5;
        CLUREF T_1_6;
        locals.err = dateOPget_all(locals.d, &T_1_1, &T_1_2, &T_1_3, &T_1_4, &T_1_5, &T_1_6);
        if (locals.err != ERR_ok) goto ex_0;
        locals.day.num = T_1_1.num;
        locals.month.num = T_1_2.num;
        locals.year.num = T_1_3.num;
        locals.hour.num = T_1_4.num;
        locals.min.num = T_1_5.num;
        locals.sec.num = T_1_6.num;
        }
        }

  LINE(148);
    {
    CLUREF T_2_1;
    locals.err = intOPsub(locals.day, locals.days, &T_2_1);
    if (locals.err != ERR_ok) goto ex_1;
    locals.day.num = T_2_1.num;
    }
        goto end_1;
        ex_1:
            if ((locals.err == ERR_overflow)) {

  LINE(149);
                {
                {signal (ERR_overflow);}}
            }
            else {
                goto ex_0;
            }
        end_1:;

  LINE(150);
    for (;;) {
        if (true != true) { break; }

  LINE(151);
        {
        CLUREF T_3_1;
        T_3_1.num = (locals.day.num < 1)? true : false;
        if (T_3_1.num == true) {

  LINE(152);
            {
            CLUREF T_4_1;
            locals.err = intOPsub(locals.month, CLU_1, &T_4_1);
            if (locals.err != ERR_ok) goto ex_2;
            locals.month.num = T_4_1.num;
            }

  LINE(153);
            {
            CLUREF T_4_1;
            T_4_1.num = (locals.month.num == 0)? true : false;
            if (T_4_1.num == true) {

  LINE(154);
                {
                locals.month.num = 12;
                }

  LINE(155);
                {
                CLUREF T_5_1;
                locals.err = intOPsub(locals.year, CLU_1, &T_5_1);
                if (locals.err != ERR_ok) goto ex_2;
                locals.year.num = T_5_1.num;
                }
                }
                }/* end if */
            }
            }/* end if */

  LINE(158);
        {
        locals.adj.num = locals.m2d.num;
        }

  LINE(159);
        {
        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;
        locals.err = intOPmod(locals.year, CLU_4, &T_3_2);
        if (locals.err != ERR_ok) goto ex_2;
        T_3_3.num = (T_3_2.num == 0)? true : false;
        T_3_4.num = T_3_3.num ^ 1;
        T_3_1.num = T_3_4.num;
        if (!T_3_4.num) {
            T_3_5.num = 100;
            locals.err = intOPmod(locals.year, T_3_5, &T_3_6);
            if (locals.err != ERR_ok) goto ex_2;
            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) {
            {
            locals.adj.num = locals.lm2d.num;
            }
            }
            }/* end if */

  LINE(160);
        {
            {CLUREF T_3_1;
            locals.err = arrayOPfetch(locals.adj, locals.month, &T_3_1);
            if (locals.err != ERR_ok) goto ex_2;
            locals.dim.num = T_3_1.num;
            }
            }

  LINE(161);
        {
        CLUREF T_3_1;
        T_3_1.num = (locals.day.num < 1)? true : false;
        if (T_3_1.num == true) {

  LINE(162);
            {
            CLUREF T_4_1;
            locals.err = intOPadd(locals.day, locals.dim, &T_4_1);
            if (locals.err != ERR_ok) goto ex_2;
            locals.day.num = T_4_1.num;
            }

  LINE(163);
            {
            CLUREF T_4_1;
            T_4_1.num = (locals.day.num < 1)? true : false;
            if (T_4_1.num == true) {
                continue;
                }
                }/* end if */
            }
            }/* end if */

  LINE(165);
        {
        CLUREF T_3_1;
        T_3_1.num = (locals.day.num > locals.dim.num)? true : false;
        if (T_3_1.num == true) {

  LINE(166);
            {
            CLUREF T_4_1;
            locals.err = intOPsub(locals.day, locals.dim, &T_4_1);
            if (locals.err != ERR_ok) goto ex_2;
            locals.day.num = T_4_1.num;
            }

  LINE(167);
            {
            CLUREF T_4_1;
            locals.err = intOPadd(locals.month, CLU_1, &T_4_1);
            if (locals.err != ERR_ok) goto ex_2;
            locals.month.num = T_4_1.num;
            }

  LINE(168);
            {
            CLUREF T_4_1;
            T_4_1.num = (locals.month.num > 12)? true : false;
            if (T_4_1.num == true) {

  LINE(169);
                {
                locals.month.num = 1;
                }

  LINE(170);
                {
                CLUREF T_5_1;
                locals.err = intOPadd(locals.year, CLU_1, &T_5_1);
                if (locals.err != ERR_ok) goto ex_2;
                locals.year.num = T_5_1.num;
                }
                }
                }/* end if */

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

  LINE(175);
        {
        CLUREF T_3_1;
        CLUREF T_3_2;
        locals.err = intOPsub(locals.month, CLU_1, &T_3_1);
        if (locals.err != ERR_ok) goto ex_2;
        locals.err = intOPsub(T_3_1, locals.months, &T_3_2);
        if (locals.err != ERR_ok) goto ex_2;
        locals.month.num = T_3_2.num;
        }

  LINE(176);
        {
        CLUREF T_3_1;
        CLUREF T_3_2;
        CLUREF T_3_3;
        locals.err = intOPsub(locals.year, locals.years, &T_3_1);
        if (locals.err != ERR_ok) goto ex_2;
        locals.err = intOPdiv(locals.month, CLU_12, &T_3_2);
        if (locals.err != ERR_ok) goto ex_2;
        locals.err = intOPadd(T_3_1, T_3_2, &T_3_3);
        if (locals.err != ERR_ok) goto ex_2;
        locals.year.num = T_3_3.num;
        }

  LINE(177);
        {
        CLUREF T_3_1;
        CLUREF T_3_2;
        locals.err = intOPmod(locals.month, CLU_12, &T_3_1);
        if (locals.err != ERR_ok) goto ex_2;
        locals.err = intOPadd(T_3_1, CLU_1, &T_3_2);
        if (locals.err != ERR_ok) goto ex_2;
        locals.month.num = T_3_2.num;
        }

  LINE(178);
        {
        CLUREF T_3_1;
        T_3_1.num = (locals.months.num == 0)? true : false;
        if (T_3_1.num == true) {

  LINE(179);
            {
            {
            CLUREF T_4_1;
            locals.err = dateOPcreate(locals.day, locals.month, locals.year, locals.hour, locals.min, locals.sec, &T_4_1);
            if (locals.err != ERR_ok) goto ex_2;
            ret_1->num = T_4_1.num;
            }
            {signal (ERR_ok);}}
            }
            }/* end if */

  LINE(181);
        {
        locals.months.num = 0;
        }

  LINE(182);
        {
        locals.years.num = 0;
        }
        }
        end_while_1:;
        goto end_2;
        ex_2:
            if ((locals.err == ERR_overflow)) {

  LINE(183);
                {
                {signal (ERR_overflow);}}
            }
            else {
                goto ex_0;
            }
        end_2:;
    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 date_sub ****/

extern struct OPS *array_of_int_ops;
typedef struct {
    int hdr;
    int count;
    char *name;
    char *fname;
    bool is_iter;
    int is_parmd;
    int addr;
    int nargs;
    Vlist1 *vals;
    siglist2 *sigs;
    Vlist16 *locals;
    Vlist1 *owns;
    Vlist0 *ptowns;
    Vlist0 *popowns;
    Slist0 *type_formals;
    Slist0 *op_formals;
    } dbg_info_date_sub_actual;
static Vlist1 vals_date_sub = {0, 1, { {0, 2, "", &date_ops}}
};
static sig_desc0 sig_date_sub_1 = {0, 3, "overflow", {0, 0
}};
static sig_desc0 sig_date_sub_2 = {0, 3, "year_too_small", {0, 0
}};
static siglist2 sigs_date_sub = {0, 2, (sig_desc*)&sig_date_sub_1, (sig_desc*)&sig_date_sub_2};
static Vlist16 locals_date_sub = {0, 16,{ {0, 2, "err", &int_ops},  {0, 2, "ecode2", &int_ops},  {0, 2, "m2d", &array_of_int_ops},  {0, 2, "lm2d", &array_of_int_ops},  {0, 2, "adj", &array_of_int_ops},  {0, 2, "day", &int_ops},  {0, 2, "month", &int_ops},  {0, 2, "year", &int_ops},  {0, 2, "hour", &int_ops},  {0, 2, "min", &int_ops},  {0, 2, "sec", &int_ops},  {0, 2, "dim", &int_ops},  {0, 2, "d", &date_ops},  {0, 2, "days", &int_ops},  {0, 2, "months", &int_ops},  {0, 2, "years", &int_ops}}
};
static Vlist0 popowns_date_sub = {0, 0};
Slist0 tformals_date_sub = {0, 0};
Slist0 opformals_date_sub = {0, 0};
dbg_info_date_sub_actual dbg_info_date_sub_data = {0, 12, 
    "date_sub", "/common/pub/dcurtis-temp/pclu/lib/clu/dparse.clu", 0, 0, (int)date_sub, 4, 
    &vals_date_sub, &sigs_date_sub, &locals_date_sub, &owns_date_sub, &NO_VALS, &NO_VALS, &NO_PARMS, &NO_PARMS};
    struct dbg_info *dbg_info_date_sub = (struct dbg_info*)&dbg_info_date_sub_data;

extern struct dbg_info* dbg_info_ago;
#undef MY_TRACE_FLAG
#define MY_TRACE_FLAG ago_TRACE
int ago_TRACE;
static Vlist1 owns_ago = {0, 1,{ {0, 2, "_init", &int_ops}
}
};
extern errcode dateOPunparse();
extern errcode date_sub();
extern OWN_req date_ownreqs;
static int ago_own_init = 0;

/**** BEGIN PROCEDURE ago ****/

errcode ago(days, months, years, ret_1)
CLUREF days;
CLUREF months;
CLUREF years;
CLUREF *ret_1;
    {
    struct {
        struct dbg_info *DBG_INFO;
        int DBG_LINE;
        errcode err;
        errcode ecode2;
        CLUREF days;
        CLUREF months;
        CLUREF years;
        } locals;
    locals.days.num = UNINIT;
    locals.months.num = UNINIT;
    locals.years.num = UNINIT;
    locals.DBG_INFO = dbg_info_ago;
    locals.days = days;
    locals.months = months;
    locals.years = years;
        if (ago_own_init == 0) {
        ago_own_init = 1;
    }
    enter_proc(186);

  LINE(187);
    {
    {
    CLUREF T_1_1;
    CLUREF T_1_2;
    CLUREF T_1_3;
    locals.err = now(&T_1_1);
    if (locals.err != ERR_ok) goto ex_0;
    locals.err = date_sub(T_1_1, locals.days, locals.months, locals.years, &T_1_2);
    if (locals.err != ERR_ok) goto ex_0;
    locals.err = dateOPunparse(T_1_2, &T_1_3);
    if (locals.err != ERR_ok) goto ex_0;
    ret_1->num = T_1_3.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 ago ****/

typedef struct {
    int hdr;
    int count;
    char *name;
    char *fname;
    bool is_iter;
    int is_parmd;
    int addr;
    int nargs;
    Vlist1 *vals;
    siglist0 *sigs;
    Vlist5 *locals;
    Vlist1 *owns;
    Vlist0 *ptowns;
    Vlist0 *popowns;
    Slist0 *type_formals;
    Slist0 *op_formals;
    } dbg_info_ago_actual;
static Vlist1 vals_ago = {0, 1, { {0, 2, "", &string_ops}}
};
static siglist0 sigs_ago = {0, 0};
static Vlist5 locals_ago = {0, 5,{ {0, 2, "err", &int_ops},  {0, 2, "ecode2", &int_ops},  {0, 2, "days", &int_ops},  {0, 2, "months", &int_ops},  {0, 2, "years", &int_ops}}
};
static Vlist0 popowns_ago = {0, 0};
Slist0 tformals_ago = {0, 0};
Slist0 opformals_ago = {0, 0};
dbg_info_ago_actual dbg_info_ago_data = {0, 12, 
    "ago", "/common/pub/dcurtis-temp/pclu/lib/clu/dparse.clu", 0, 0, (int)ago, 3, 
    &vals_ago, &sigs_ago, &locals_ago, &owns_ago, &NO_VALS, &NO_VALS, &NO_PARMS, &NO_PARMS};
    struct dbg_info *dbg_info_ago = (struct dbg_info*)&dbg_info_ago_data;
