Annotation of researchv10no/cmd/f2c/mwm.changes, revision 1.1.1.1

1.1       root        1: #From arpa!NSFnet-Relay.AC.UK!NAGIST%vax.oxford.ac.uk Fri Jun 30 13:02 BST 1989
                      2: #Received: from vax.oxford.ac.uk by NSFnet-Relay.AC.UK   via Janet with NIFTP
                      3: #           id aa05326; 30 Jun 89 12:59 BST
                      4: #Date:           Fri, 30 Jun 89  13:02 BST
                      5: #From:           NAG Software Engineering Group <NAGIST%[email protected]>
                      6: #To:             DMG <@NSFnet-Relay.AC.UK:[email protected]>
                      7: #Subject:        
                      8: #
                      9: #!/bin/sh
                     10: # to extract, remove the header and type "sh filename"
                     11: if `test ! -s ./data.c.ed`
                     12: then
                     13: echo "writting ./data.c.ed"
                     14: cat > ./data.c.ed << '\Rogue\Monster\'
                     15: 378a
                     16: 
                     17:  void
                     18: make_param(p, e)
                     19:  register struct Paramblock *p;
                     20:  expptr e;
                     21: {
                     22:        p->vclass = CLPARAM;
                     23:        impldcl(p);
                     24:        p->paramval = mkconv(p->vtype, e);
                     25:        }
                     26: .
                     27: 3c
                     28: /* ROUTINES CALLED DURING DATA AND PARAMETER STATEMENT PROCESSING */
                     29: .
                     30: \Rogue\Monster\
                     31: else
                     32:   echo "will not over write ./data.c.ed"
                     33: fi
                     34: if `test ! -s ./defines.h.ed`
                     35: then
                     36: echo "writting ./defines.h.ed"
                     37: cat > ./defines.h.ed << '\Rogue\Monster\'
                     38: 204c
                     39: #define OPASSIGNI 56           /* assignment for inquire stmt */
                     40: #define OPIDENTITY 57          /* for turning TADDR into TEXPR */
                     41: .
                     42: 16,27d
                     43: \Rogue\Monster\
                     44: else
                     45:   echo "will not over write ./defines.h.ed"
                     46: fi
                     47: if `test ! -s ./defs.h.ed`
                     48: then
                     49: echo "writting ./defs.h.ed"
                     50: cat > ./defs.h.ed << '\Rogue\Monster\'
                     51: 635,637d
                     52: 294a
                     53:        chainp init_values;     /* list of sorted block data init values */
                     54: .
                     55: 202,207d
                     56: \Rogue\Monster\
                     57: else
                     58:   echo "will not over write ./defs.h.ed"
                     59: fi
                     60: if `test ! -s ./equiv.c.ed`
                     61: then
                     62: echo "writting ./equiv.c.ed"
                     63: cat > ./equiv.c.ed << '\Rogue\Monster\'
                     64: 308,312d
                     65: 275,278d
                     66: 261d
                     67: 256,259d
                     68: 223,226c
                     69:                freqchain(equivdecl);
                     70: .
                     71: 216,221d
                     72: 214a
                     73:                        if (x == 0) {
                     74:                            x = 1;
                     75:                            k = TYCHAR;
                     76:                        } /* if */
                     77: .
                     78: 210,213d
                     79: 204,207c
                     80: 
                     81: /* Only want TYLOGICAL if ALL the init values are logical.  Otherwise, all
                     82:    non-zero values get mapped onto TRUE_ */
                     83: 
                     84:                                if ((x < t && (np -> vtype != TYLOGICAL || x == 0))
                     85:                                        || k == TYLOGICAL) {
                     86:                                    x = t;
                     87:                                    k = np->vtype;
                     88:                                }
                     89: .
                     90: 198c
                     91:                        x = 0;
                     92: .
                     93: 192,196d
                     94: 136,139d
                     95: 2,8d
                     96: \Rogue\Monster\
                     97: else
                     98:   echo "will not over write ./equiv.c.ed"
                     99: fi
                    100: if `test ! -s ./exec.c.ed`
                    101: then
                    102: echo "writting ./exec.c.ed"
                    103: cat > ./exec.c.ed << '\Rogue\Monster\'
                    104: 633,637c
                    105:                        vname -> vis_assigned = 1;
                    106:                        }
                    107: 
                    108:                /* don't duplicate labels... */
                    109: 
                    110:                stno = labelval->stateno;
                    111:                for(cp = vname->varxptr.assigned_values; cp; cp = cp->nextp)
                    112:                        if ((ftnint)cp->datap == stno)
                    113:                                break;
                    114:                if (!cp)
                    115:                        vname->varxptr.assigned_values =
                    116:                                mkchain(stno, vname->varxptr.assigned_values);
                    117:                }
                    118: 
                    119:        /* Code for FORMAT label... */
                    120: 
                    121:        fs = labelval->fmtstring;
                    122:        if (!labelval->labdefined || fs && fs != nullstr) {
                    123:                if (!fs)
                    124:                        labelval->fmtstring = nullstr;
                    125:                labelval->labused = 1;
                    126:                vname = asg_name(vname->varname);
                    127:                q = ALLOC(Addrblock);
                    128:                q->tag = TADDR;
                    129:                q->vtype = TYCHAR;
                    130:                q->vstg = STGAUTO;
                    131:                q->ntempelt = 1;
                    132:                q->memoffset = ICON(0);
                    133:                q->uname_tag = UNAM_IDENT;
                    134:                sprintf(q->user.ident, "fmt_%ld", labelval->stateno);
                    135:                putout(mkexpr(OPASSIGN, vname, q));
                    136:                }
                    137: 
                    138: .
                    139: 631c
                    140:        if (!labelval->labdefined || !labelval->fmtstring) {
                    141: 
                    142:                putout(mkexpr(OPASSIGN, p, mkintcon(labelval->stateno)));
                    143: 
                    144:                if (vname -> vis_assigned == 0) {
                    145: .
                    146: 627d
                    147: 625c
                    148:        /* code for executable label... */
                    149: .
                    150: 623c
                    151:        /* If the label hasn't been defined, then we do things twice:
                    152:         * once for an executable stmt label, once for a format
                    153:         */
                    154: .
                    155: 621c
                    156:                return;
                    157:                }
                    158: .
                    159: 619c
                    160:        if( ! ONEOF(p->vtype, MSKINT|MSKADDR) ) {
                    161: .
                    162: 616a
                    163:        register Addrp q;
                    164:        static char nullstr[] = "";
                    165:        char *fs;
                    166:        register chainp cp;
                    167:        register ftnint stno;
                    168: .
                    169: 612c
                    170:  register Namep vname;
                    171: .
                    172: 610a
                    173:  Namep
                    174: asg_name(s1)
                    175:  register char *s1;
                    176: {
                    177:        char buf[VL], *s, *se;
                    178:        register Namep vn;
                    179:        extern chainp assigned_fmts;
                    180: 
                    181:        /* Use Upper-case first letter for corresponding format variable */
                    182:        buf[0] = *s1 + 'A' - 'a';
                    183:        s = buf + 1;
                    184:        se = buf + VL;
                    185:        while(s < se && (*s = *++s1) != ' ')
                    186:                s++;
                    187:        vn = mkname(s-buf, buf);
                    188:        if (!vn->vis_assigned) {
                    189:                vn->vis_assigned = 1;
                    190:                vn->vstg = STGAUTO;
                    191:                vn->vprocclass = CLVAR;
                    192:                vn->vtype = TYCHAR;
                    193:                vn->vleng = ICON(-1);   /* kludge used in list_decls */
                    194:                assigned_fmts = mkchain((tagptr) vn, assigned_fmts);
                    195:                }
                    196:        return vn;
                    197:        }
                    198: 
                    199: .
                    200: 393c
                    201: /* putx added 6-29-89 (mwm), not sure if fixtype is required, but I doubt it
                    202:    since mkconv is called just before */
                    203:                doinit = putx (mkconv (dotype, DOINIT));
                    204: .
                    205: \Rogue\Monster\
                    206: else
                    207:   echo "will not over write ./exec.c.ed"
                    208: fi
                    209: if `test ! -s ./expr.c.ed`
                    210: then
                    211: echo "writting ./expr.c.ed"
                    212: cat > ./expr.c.ed << '\Rogue\Monster\'
                    213: 2590,2591c
                    214:                        if (doing_setbound)
                    215:                                lp = p->exprblock.leftp = make_int_expr(lp);
                    216:                        else {
                    217:                                p->exprblock.vtype = ltype;
                    218:                                return(p);
                    219:                                }
                    220: .
                    221: 2551a
                    222:        extern expptr make_int_expr();
                    223: .
                    224: 2545a
                    225: int doing_setbound;
                    226: .
                    227: 1991a
                    228:        case OPASSIGNI:
                    229: .
                    230: 1980a
                    231:        case OPIDENTITY:
                    232: .
                    233: 1865a
                    234:        case OPIDENTITY:
                    235: .
                    236: 1843a
                    237:        case OPASSIGNI:
                    238: .
                    239: 1405c
                    240:                    return (Addrp) cpexpr ((expptr) retslot);
                    241: .
                    242: 1282,1284d
                    243: 1279d
                    244: 1128c
                    245:        if (!replaced)
                    246:                s->memoffset = mkexpr(OPPLUS, s->memoffset, suboffset(p) );
                    247: .
                    248: 1118a
                    249:        replaced = 0;
                    250: .
                    251: 1082c
                    252:                        return((Addrp) errnode() );
                    253: .
                    254: 1068a
                    255:                        replaced = 1;
                    256: .
                    257: 1052d
                    258: 1050a
                    259: static int replaced;
                    260: .
                    261: 1003c
                    262:                        if((rp->rpltag = rp->rplvp->tag) == TERROR)
                    263: .
                    264: 871a
                    265: #endif
                    266: .
                    267: 869a
                    268: #if 0
                    269: /* erroneous error msg */
                    270: .
                    271: 822d
                    272: 806d
                    273: 561,563d
                    274: 559d
                    275: 549a
                    276:                if (rtype == TYREAL)
                    277:                        break;
                    278: .
                    279: 363a
                    280:                if (p->addrblock.vtype > TYERROR)       /* i/o block */
                    281:                        break;
                    282: .
                    283: 209c
                    284: #if PDP11_option
                    285: .
                    286: 99a
                    287:        p -> vtype = (p -> const.ci >> typesize[TYSHORT]) ? TYLONG : TYSHORT;
                    288: .
                    289: \Rogue\Monster\
                    290: else
                    291:   echo "will not over write ./expr.c.ed"
                    292: fi
                    293: if `test ! -s ./f2c.h.ed`
                    294: then
                    295: echo "writting ./f2c.h.ed"
                    296: cat > ./f2c.h.ed << '\Rogue\Monster\'
                    297: 102a
                    298:        /* fix up name clashes */
                    299: 
                    300: #define acos__ acos_
                    301: #define asin__ asin_
                    302: #define asm__ asm_
                    303: #define auto__ auto_
                    304: #define break__ break_
                    305: #define case__ case_
                    306: #define char__ char_
                    307: #define const__ const_
                    308: #define cos__ cos_
                    309: #define cosh__ cosh_
                    310: #define do__ do_
                    311: #define double__ double_
                    312: #define else__ else_
                    313: #define entry__ entry_
                    314: #define enum__ enum_
                    315: #define exp__ exp_
                    316: #define extern__ extern_
                    317: #define float__ float_
                    318: #define for__ for_
                    319: #define int__ int_
                    320: #define log__ log_
                    321: #define long__ long_
                    322: #define short__ short_
                    323: #define signed__ signed_
                    324: #define sin__ sin_
                    325: #define sinh__ sinh_
                    326: #define sizeof__ sizeof_
                    327: #define sqrt__ sqrt_
                    328: #define static__ static_
                    329: #define struct__ struct_
                    330: #define switch__ switch_
                    331: #define tan__ tan_
                    332: #define tanh__ tanh_
                    333: #define union__ union_
                    334: #define void__ void_
                    335: #define while__ while_
                    336: #define pow_ii_ pow_ii
                    337: #define pow_ri_ pow_ri
                    338: #define pow_di_ pow_di
                    339: #define pow_ci_ pow_ci
                    340: #define pow_zi_ pow_zi
                    341: #define pow_hh_ pow_hh
                    342: #define pow_dd_ pow_dd
                    343: #define pow_zz_ pow_zz
                    344: .
                    345: \Rogue\Monster\
                    346: else
                    347:   echo "will not over write ./f2c.h.ed"
                    348: fi
                    349: if `test ! -s ./format.c.ed`
                    350: then
                    351: echo "writting ./format.c.ed"
                    352: cat > ./format.c.ed << '\Rogue\Monster\'
                    353: 1319c
                    354:            sprintf(buf+k, "[%d]", this_size -> constblock.const.ci);
                    355:            k += strlen (buf + k);
                    356: .
                    357: 1310c
                    358:     sprintf (buf, "\t/* was ");
                    359:     k = strlen (buf);
                    360: .
                    361: 1304c
                    362:     int i, k;
                    363: .
                    364: 1302a
                    365: int size;
                    366: .
                    367: 1300c
                    368: char *write_array_decls(outfile, dimp, size)
                    369: .
                    370: 1260a
                    371:     else if (write_header == 2)
                    372:        nice_printf(outfile, "\n");
                    373: 
                    374: /* Finally, ioblocks (which may reference equivs) */
                    375:     if (iob_list)
                    376:        write_ioblocks(outfile);
                    377:     if (assigned_fmts)
                    378:        write_assigned_fmts(outfile);
                    379: 
                    380: .
                    381: 1249a
                    382:                if (Define) {
                    383:                        indent_printf(0, outfile, ")\n");
                    384:                        write_header = 2;
                    385:                        }
                    386: .
                    387: 1200c
                    388:                if (!Define)
                    389:                        nice_printf (outfile, " = ");
                    390: .
                    391: 1178c
                    392:  Alias1:
                    393:            if (Alias) {
                    394: .
                    395: 1175d
                    396: 1173c
                    397:                        comment = write_array_decls(outfile, var->vdim, 1);
                    398:                }
                    399: .
                    400: 1160,1171c
                    401:                    !ISICON (var -> vleng)
                    402:            || oneof_stg(var, stg, M(STGEQUIV)|M(STGCOMMON)))
                    403:                nice_printf (outfile, "*%s", storage);
                    404:            else {
                    405:                nice_printf (outfile, "%s", storage);
                    406:                if (var -> vclass == CLPROC)
                    407:                        nice_printf (outfile, "()");
                    408:                else if (var -> vtype == TYCHAR && ISICON ((var -> vleng)))
                    409:                        write_char_len(outfile, var->vdim,
                    410:                                var -> vleng -> constblock.const.ci, 0);
                    411:                else if (var -> vdim &&
                    412: .
                    413: 1115c
                    414:            Alias = oneof_stg(var, stg, M(STGEQUIV)|M(STGCOMMON));
                    415:            if (Define = Alias && define_equivs) {
                    416:                if (!write_header)
                    417:                        nice_printf(outfile, ";\n");
                    418:                define_start(outfile, storage, CNULL, "(");
                    419:                goto Alias1;
                    420:                }
                    421:            else if (type == last_type && class == last_class &&
                    422: .
                    423: 1104a
                    424:                write_header = 2;
                    425:                }
                    426: .
                    427: 1103c
                    428:                    M(STGBSS)|M(STGEXT)|M(STGAUTO)|M(STGCOMMON)|M(STGEQUIV))) {
                    429: .
                    430: 1101c
                    431:            if (write_header == 1 && (new_vars || nequiv || used_builtins)
                    432: .
                    433: 999,1001c
                    434:                    ISICON ((var -> vleng))
                    435:                        && (i = var->vleng->constblock.const.ci) > 0)
                    436:                nice_printf (outfile, "[%d]", i);
                    437: .
                    438: 957a
                    439: /* Next come formats */
                    440:     write_formats(outfile);
                    441: 
                    442: .
                    443: 951c
                    444:     int Alias, Define, did_one, i, last_type, type;
                    445:     extern int define_equivs;
                    446: .
                    447: 939a
                    448:  static void
                    449: write_formats(outfile)
                    450:  FILE *outfile;
                    451: {
                    452:        register struct Labelblock *lp;
                    453:        int first = 1;
                    454:        extern int in_string;
                    455:        char *fs;
                    456: 
                    457:        for(lp = labeltab ; lp < highlabtab ; ++lp)
                    458:                if (lp->labused) {
                    459:                        if (first) {
                    460:                                first = 0;
                    461:                                nice_printf(outfile, "/* Format strings */\n");
                    462:                                }
                    463:                        nice_printf(outfile, "static char fmt_%ld[] = \"",
                    464:                                lp->stateno);
                    465:                        in_string = 1;
                    466:                        if (!(fs = lp->fmtstring))
                    467:                                fs = "";
                    468:                        nice_printf(outfile, "%s\"", fs);
                    469:                        in_string = 0;
                    470:                        nice_printf(outfile, ";\n");
                    471:                        }
                    472:        if (!first)
                    473:                nice_printf(outfile, "\n");
                    474:        }
                    475: 
                    476:  static void
                    477: write_ioblocks(outfile)
                    478:  FILE *outfile;
                    479: {
                    480:        register iob_data *L;
                    481:        register char *f, **s, *sep;
                    482: 
                    483:        nice_printf(outfile, "/* Fortran I/O blocks */\n");
                    484:        L = iob_list = (iob_data *)revchain((chainp)iob_list);
                    485:        do {
                    486:                nice_printf(outfile, "static %s %s = { ",
                    487:                        L->type, L->name);
                    488:                indent += tab_size;
                    489:                sep = 0;
                    490:                for(s = L->fields; f = *s; s++) {
                    491:                        if (sep)
                    492:                                nice_printf(outfile, sep);
                    493:                        sep = ", ";
                    494:                        if (*f == '"') {        /* kludge */
                    495:                                nice_printf(outfile, "\"");
                    496:                                in_string = 1;
                    497:                                nice_printf(outfile, "%s\"", f+1);
                    498:                                in_string = 0;
                    499:                                }
                    500:                        else
                    501:                                nice_printf(outfile, "%s", f);
                    502:                        }
                    503:                nice_printf(outfile, " };\n");
                    504:                indent -= tab_size;
                    505:                }
                    506:                while(L = L->next);
                    507:        nice_printf(outfile, "\n\n");
                    508:        }
                    509: 
                    510:  static void
                    511: write_assigned_fmts(outfile)
                    512:  FILE *outfile;
                    513: {
                    514:        register chainp cp;
                    515:        Namep np;
                    516:        int did_one = 0;
                    517: 
                    518:        cp = assigned_fmts = revchain(assigned_fmts);
                    519:        nice_printf(outfile, "/* Assigned format variables */\nchar ");
                    520:        do {
                    521:                np = (Namep)cp->datap;
                    522:                if (did_one)
                    523:                        nice_printf(outfile, ", ");
                    524:                did_one = 1;
                    525:                nice_printf(outfile, "*%s", varstr(VL, np->varname));
                    526:                }
                    527:                while(cp = cp->nextp);
                    528:        nice_printf(outfile, ";\n\n");
                    529:        }
                    530: 
                    531: .
                    532: 747c
                    533:         next_tab (outfile);
                    534: .
                    535: 742a
                    536: 
                    537: .
                    538: 98a
                    539:     other_undefs(c_file);
                    540: .
                    541: 40c
                    542:     extern FILE *fopen ();
                    543: .
                    544: 31a
                    545: extern chainp assigned_fmts;
                    546: .
                    547: 20a
                    548: static int p1get_const (), p1getn ();
                    549: .
                    550: 12c
                    551: int c_output_line_length = DEF_C_LINE_LENGTH;
                    552: .
                    553: 10a
                    554: #include "iob.h"
                    555: .
                    556: \Rogue\Monster\
                    557: else
                    558:   echo "will not over write ./format.c.ed"
                    559: fi
                    560: if `test ! -s ./format_d.c.ed`
                    561: then
                    562: echo "writting ./format_d.c.ed"
                    563: cat > ./format_d.c.ed << '\Rogue\Monster\'
                    564: 821a
                    565: 
                    566: save_block_data (comname, values)
                    567: char *comname;
                    568: chainp values;
                    569: {
                    570:     struct Extsym *ext = mkext (varunder (XL, comname));
                    571: 
                    572:     if (ext && ext -> extp)
                    573:        if (ext -> init_values)
                    574:            errstr ("Two block data for %s common block", comname);
                    575:        else
                    576:            ext -> init_values = values;
                    577:     else
                    578:         errstr ("Bad common block '%s' with BLOCK DATA", comname);
                    579: } /* save_block_data */
                    580: .
                    581: 802,820c
                    582:     type = eqv -> eqvtype;
                    583:     nice_printf (outfile, "static %s %s", c_type_decl (type, NULL),
                    584:            equiv_name (memno, NULL));
                    585:     nice_printf (outfile, "[%d] = ", (eqv -> eqvtop - eqv -> eqvbottom) /
                    586:             typesize[type]);
                    587:     reshape_values (type, values, '\0');
                    588:     write_array_init (outfile, type, values);
                    589:     nice_printf (outfile, ";\n");
                    590: .
                    591: 799,800d
                    592: 792a
                    593:     int type;
                    594: .
                    595: 622a
                    596:            int index = (int) (((chainp) values -> datap) -> datap);
                    597: 
                    598:            while (index - main_index++ > 0)
                    599:                *str_ptr++ = ' ';
                    600: 
                    601: .
                    602: 620c
                    603: /* Find the max length of init string, by finding the highest offset
                    604:    value stored in the list of initial values */
                    605: 
                    606:        for(k = 1, prev = CHNULL, v = values; v; prev = v, v = v->nextp) 
                    607:            ;
                    608:        if (prev != CHNULL)
                    609:            k = ((int) (((chainp) prev -> datap) -> datap)) + 1;
                    610: .
                    611: 617,618c
                    612:        chainp v, prev;
                    613:        int b = 0, k = 0, main_index = 0;
                    614: .
                    615: 611a
                    616: int str_start;         /* offset at which character storage starts. If type
                    617:                           is not TYCHAR, this value is ignored */
                    618: .
                    619: 608c
                    620: union Constant *make_one_const (type, storage, values, str_start)
                    621: .
                    622: 583c
                    623:                const = make_one_const (type, storage, values, 0);
                    624: .
                    625: 574c
                    626:                const = make_one_const (type, storage, values, 0);
                    627: .
                    628: 511a
                    629: if (stddbg)fprintf (stddbg, "format_data: index %d, main %d\n", index, main_index);
                    630: .
                    631: 455c
                    632:        (tagptr) mkchain ((tagptr) offset, mkchain ((tagptr) dest, val)), CHNULL));
                    633: .
                    634: 434c
                    635:                        res.c[i] = pad_char;
                    636:                        if (i == 0)
                    637:                            offset = 0;
                    638: .
                    639: 418c
                    640:                            c = pad_char;
                    641: .
                    642: 414c
                    643:                        make_one_const (TYLONG, &c, cp, 0);
                    644: .
                    645: 409a
                    646: 
                    647: /* Now this is a little weird.  Until June 20, 1989, we didn't need to store
                    648:    any offset information.  But it seems the equiv init process requires it.
                    649:    So, instead of zeroing it out, we'll keep it in, BUT the offset is in
                    650:    terms of characters, whereas the reshaped data is of the proper type. */
                    651: 
                    652:                        offset = ((int) this -> datap);
                    653: .
                    654: 400a
                    655:                int offset = 0;
                    656: .
                    657: 349a
                    658: char pad_char;         /* value used for padding.  ' ' for most, but
                    659:                           '\0' for equivalenced data  */
                    660: .
                    661: 347c
                    662: static reshape_values (dest, data, pad_char)
                    663: .
                    664: 339c
                    665:        const = make_one_const (type, temp, values, 0);
                    666: .
                    667: 330c
                    668:     reshape_values (type, values, ' ');
                    669: .
                    670: 216,219d
                    671: 213,214c
                    672:                ? 0 : write_array_decls (outfile, namep -> vdim, 1);
                    673: .
                    674: 173c
                    675: 
                    676: /* I don't know why eqvstart needs to be subtracted, but Dave Gay thinks
                    677:    it's necessary 28-June-89 (mwm)
                    678: */
                    679:        write_equiv_init (outfile, memno - eqvstart, values);
                    680: .
                    681: 139c
                    682:  static int ch_ar_dim = -1; /* length of each element of char string array,
                    683:                               used to break up long init strings for ansi
                    684:                               compilers  */
                    685: .
                    686: 78a
                    687: /* Save the COMMON block data initializations for later */
                    688:                save_block_data (ovarname, values);
                    689: 
                    690: .
                    691: 77a
                    692:            else
                    693: .
                    694: \Rogue\Monster\
                    695: else
                    696:   echo "will not over write ./format_d.c.ed"
                    697: fi
                    698: if `test ! -s ./gram.dcl.ed`
                    699: then
                    700: echo "writting ./gram.dcl.ed"
                    701: cat > ./gram.dcl.ed << '\Rogue\Monster\'
                    702: 197,199c
                    703:                        make_param($1, $3);
                    704: .
                    705: 173d
                    706: \Rogue\Monster\
                    707: else
                    708:   echo "will not over write ./gram.dcl.ed"
                    709: fi
                    710: if `test ! -s ./gram.exec.ed`
                    711: then
                    712: echo "writting ./gram.exec.ed"
                    713: cat > ./gram.exec.ed << '\Rogue\Monster\'
                    714: \Rogue\Monster\
                    715: else
                    716:   echo "will not over write ./gram.exec.ed"
                    717: fi
                    718: if `test ! -s ./gram.expr.ed`
                    719: then
                    720: echo "writting ./gram.expr.ed"
                    721: cat > ./gram.expr.ed << '\Rogue\Monster\'
                    722: 98a
                    723:        | bit_const
                    724: .
                    725: \Rogue\Monster\
                    726: else
                    727:   echo "will not over write ./gram.expr.ed"
                    728: fi
                    729: if `test ! -s ./gram.head.ed`
                    730: then
                    731: echo "writting ./gram.head.ed"
                    732: cat > ./gram.head.ed << '\Rogue\Monster\'
                    733: 136,149d
                    734: 5,16d
                    735: \Rogue\Monster\
                    736: else
                    737:   echo "will not over write ./gram.head.ed"
                    738: fi
                    739: if `test ! -s ./init.c.ed`
                    740: then
                    741: echo "writting ./init.c.ed"
                    742: cat > ./init.c.ed << '\Rogue\Monster\'
                    743: 318d
                    744: 302a
                    745:        frchain(&assigned_fmts);
                    746: .
                    747: 270d
                    748: 266,268d
                    749: 242d
                    750: 240d
                    751: 237a
                    752:        iob_list = 0;
                    753:        for(i = 0; i < 9; i++)
                    754:                io_structs[i] = 0;
                    755: .
                    756: 168,172d
                    757: 161d
                    758: 23a
                    759: chainp assigned_fmts = CHNULL; /* assigned formats */
                    760: .
                    761: 3a
                    762: #include "iob.h"
                    763: .
                    764: \Rogue\Monster\
                    765: else
                    766:   echo "will not over write ./init.c.ed"
                    767: fi
                    768: if `test ! -s ./intr.c.ed`
                    769: then
                    770: echo "writting ./intr.c.ed"
                    771: cat > ./intr.c.ed << '\Rogue\Monster\'
                    772: 672c
                    773:                return((Addrp) errnode() );
                    774: .
                    775: 26c
                    776:        char intrfname[VL+1];   /* "+1" added 19 June 89 (mwm) */
                    777: .
                    778: \Rogue\Monster\
                    779: else
                    780:   echo "will not over write ./intr.c.ed"
                    781: fi
                    782: if `test ! -s ./io.c.ed`
                    783: then
                    784: echo "writting ./io.c.ed"
                    785: cat > ./io.c.ed << '\Rogue\Monster\'
                    786: 963a
                    787:                        ioset_assign = OPASSIGN;
                    788:                        }
                    789: .
                    790: 962c
                    791:                    ONEOF(p->addrblock.vtype, M(TYLONG)|M(TYLOGICAL)) ) {
                    792:                        ioset_assign = OPASSIGNI;
                    793: .
                    794: 940,946c
                    795:                if (!p)
                    796:                        return;
                    797:                if (p->tag != TADDR)
                    798:                        badtag(who, p->tag);
                    799:                if (p->vtype != TYCHAR
                    800:                && p->vtype != TYLONG
                    801:                && p->vtype != TYSHORT)
                    802:                        badtype(who, p->vtype);
                    803:                offset /= SZLONG;
                    804:                switch(p->uname_tag) {
                    805:                    case UNAM_NAME:
                    806:                        mo = p->memoffset;
                    807:                        if (mo->tag != TCONST)
                    808:                                badtag("ioseta/memoffset", mo->tag);
                    809:                        if (mo->constblock.const.ci)
                    810:                                sprintf(s = mem(VL+20,0), "%s+%ld",
                    811:                                        varstr(VL, p->user.name->varname),
                    812:                                        mo->constblock.const.ci);
                    813:                        else
                    814:                                s = cpstring(varstr(VL, p->user.name->varname));
                    815:                        break;
                    816:                    case UNAM_CONST:
                    817:                        s = tostring(p->user.const.ccp1.ccp0,
                    818:                                p->vleng->constblock.const.ci);
                    819:                        break;
                    820:                    default:
                    821:                        badthing("uname_tag", who, p->uname_tag);
                    822:                    }
                    823:                /* kludge for Hollerith */
                    824:                if (p->vtype != TYCHAR) {
                    825:                        s1 = mem(strlen(s)+10,0);
                    826:                        sprintf(s1, "(char *)%s%s", p->isarray ? "" : "&", s);
                    827:                        s = s1;
                    828:                        }
                    829:                iob_list->fields[offset] = s;
                    830: .
                    831: 936c
                    832:        char *s, *s1;
                    833:        static char who[] = "ioseta";
                    834:        expptr mo;
                    835: .
                    836: 910,912c
                    837:                }
                    838:        else {
                    839:                register Addrp q;
                    840: 
                    841:                q = ALLOC(Addrblock);
                    842:                q->tag = TADDR;
                    843:                q->vtype = type;
                    844:                q->vstg = STGAUTO;
                    845:                q->ntempelt = 1;
                    846:                q->isarray = 0;
                    847:                q->memoffset = ICON(0);
                    848:                q->uname_tag = UNAM_IDENT;
                    849:                sprintf(q->user.ident, "%s.%s",
                    850:                        statstruct ? iob_list->name : ioblkp->user.ident,
                    851:                        io_fields[offset + 1]);
                    852:                if (type == TYADDR && p->tag == TCONST
                    853:                                   && p->constblock.vtype == TYADDR) {
                    854:                        /* kludge */
                    855:                        register Addrp p1;
                    856:                        p1 = ALLOC(Addrblock);
                    857:                        p1->tag = TADDR;
                    858:                        p1->vtype = type;
                    859:                        p1->vstg = STGAUTO;     /* wrong, but who cares? */
                    860:                        p1->ntempelt = 1;
                    861:                        p1->isarray = 0;
                    862:                        p1->memoffset = ICON(0);
                    863:                        p1->uname_tag = UNAM_IDENT;
                    864:                        sprintf(p1->user.ident, "fmt_%ld",
                    865:                                p->constblock.const.ci);
                    866:                        frexpr(p);
                    867:                        p = (expptr)p1;
                    868:                        }
                    869:                putexpr(mkexpr(ioset_assign, q, p));
                    870:                }
                    871: .
                    872: 900,908c
                    873:        offset /= SZLONG;
                    874:        if(statstruct && ISCONST(p)) {
                    875:                register char *s;
                    876:                switch(type) {
                    877:                        case TYADDR:    /* stmt label */
                    878:                                s = IO_FMT_NAME;
                    879:                                break;
                    880:                        case TYIOINT:
                    881:                                s = "";
                    882:                                break;
                    883:                        default:
                    884:                                badtype("ioset", type);
                    885:                        }
                    886:                iob_list->fields[offset] =
                    887:                        string_num(s, p->constblock.const.ci);
                    888: .
                    889: 895d
                    890: 893a
                    891: static int ioset_assign = OPASSIGN;
                    892: .
                    893: 794a
                    894:                ioblkp = 0;     /* unnecessary */
                    895: .
                    896: 793d
                    897: 746,758d
                    898: 744c
                    899:                new_iob_data(ios,
                    900:                        temp_name(IO_YAIN_NAME, lastvarno,
                    901:                        ioblkp->user.ident));
                    902:        } else if(!(ioblkp = io_structs[iostmt1]))
                    903:                io_structs[iostmt1] = ioblkp =
                    904:                        autovar(1, ios->type, PNULL, IO_BLOCK_NAME);
                    905: .
                    906: 738c
                    907:                ioblkp->vtype = ios->type;
                    908: .
                    909: 732,735c
                    910:                iob_data *iod;
                    911:                char *s, *se;
                    912: .
                    913: 729a
                    914:        if (intfile) {
                    915:                ios = io_stuff + iostmt;
                    916:                iostmt1 = IOREAD;
                    917:                }
                    918:        else {
                    919:                ios = io_stuff;
                    920:                iostmt1 = 0;
                    921:                }
                    922:        io_fields = ios->fields;
                    923: .
                    924: 690c
                    925:                                fmtp = (Addrp)mkaddcon(lp->stateno);
                    926:                                /* lp->stateno for names fmt_nnn */
                    927:                                lp->labused = 1;
                    928: .
                    929: 688c
                    930:                        struct Labelblock *lp;
                    931:                        lp = mklabel(p->constblock.const.ci);
                    932:                        if( (k = fmtstmt(lp)) > 0 )
                    933: .
                    934: 674,675c
                    935:                                varfmt = YES;
                    936:                                fmtp = asg_addr(p);
                    937: .
                    938: 588a
                    939:        struct io_setup *ios;
                    940: .
                    941: 587c
                    942:        int iostmt1, k;
                    943: .
                    944: 583c
                    945:        register Addrp unitp, fmtp, recp;
                    946: .
                    947: 577a
                    948: 
                    949: LOCAL Addrp asg_addr(p)
                    950:  union Expression *p;
                    951: {
                    952:        extern Namep asg_name();
                    953:        register Addrp q;
                    954: 
                    955:        if (p->tag != TPRIM)
                    956:                badtag("asg_addr", p->tag);
                    957:        q = ALLOC(Addrblock);
                    958:        q->tag = TADDR;
                    959:        q->vtype = TYCHAR;
                    960:        q->vstg = STGAUTO;
                    961:        q->ntempelt = 1;
                    962:        q->isarray = 0;
                    963:        q->memoffset = ICON(0);
                    964:        q->uname_tag = UNAM_NAME;
                    965:        q->user.name = asg_name(p->primblock.namep->varname);
                    966:        return q;
                    967:        }
                    968: .
                    969: 571,576c
                    970:        putexpr(q);
                    971:        if(ioendlab) {
                    972:                exif(mkexpr(OPLT, cpexpr(zork), ICON(0)));
                    973:                exgoto(execlab(ioendlab));
                    974:                exendif();
                    975:                }
                    976:        if(ioerrlab) {
                    977:                exif(mkexpr(iostmt==IOREAD||iostmt==IOWRITE ? OPGT : OPNE,
                    978:                        cpexpr(zork), ICON(0)));
                    979:                exgoto(execlab(ioerrlab));
                    980:                exendif();
                    981:                }
                    982:        if (zorkf)
                    983:                templist = mkchain(zorkf, templist);
                    984: .
                    985: 569c
                    986:                q = fixexpr( mkexpr(OPASSIGN, cpexpr(zork), q));
                    987: .
                    988: 566c
                    989:        expptr zork, zorkf;
                    990: 
                    991:        if (!(zork = IOSTP) && (ioendlab || ioerrlab))
                    992:                zork = zorkf = (expptr)mktemp(tyint, PNULL, IO_RESRC_NAME);
                    993:        else
                    994:                zorkf = 0;
                    995:        if(zork)
                    996: .
                    997: 546,556d
                    998: 533,537c
                    999:                expptr mc = mkconv(TYLONG, ICON(type));
                   1000:                q = c   ? call4(TYINT, "do_lio", mc, nelt, addr, c)
                   1001:                        : call3(TYINT, "do_lio", mc, nelt, addr);
                   1002:                }
                   1003:        else {
                   1004:                char *s = ioformatted==FORMATTED ? "do_fio" : "do_uio";
                   1005:                q = c   ? call3(TYINT, s, nelt, addr, c)
                   1006:                        : call2(TYINT, s, nelt, addr);
                   1007:                }
                   1008: .
                   1009: 528a
                   1010: #endif
                   1011:                c = ALLOC(Addrblock);
                   1012:                c->tag = TADDR;
                   1013:                c->vtype = type;
                   1014:                c->vstg = STGAUTO;
                   1015:                c->ntempelt = 1;
                   1016:                c->isarray = 1;
                   1017:                c->memoffset = ICON(0);
                   1018:                c->uname_tag = UNAM_IDENT;
                   1019:                sprintf(c->user.ident, "sizeof(%s)", c_type_decl ((type
                   1020:                        == TYCHAR ? TYADDR : type), NULL));
                   1021: .
                   1022: 519c
                   1023: #if 0
                   1024: .
                   1025: 515a
                   1026:                char *c_type_decl ();
                   1027: .
                   1028: 514d
                   1029: 502a
                   1030:        extern Constp mkconst();
                   1031:        register Addrp c = 0;
                   1032: .
                   1033: 494,496d
                   1034: 457c
                   1035:                        } 
                   1036:                        else if(qe->headblock.vtype != TYERROR)
                   1037: .
                   1038: 283c
                   1039:        
                   1040: .
                   1041: 279,280c
                   1042:                        io_structs[iostmt] = ioblkp =
                   1043:                                autovar(1, ios->type, PNULL, IO_BLOCK_NAME);
                   1044: .
                   1045: 277a
                   1046:                ios = io_stuff + iostmt;
                   1047:                io_fields = ios->fields;
                   1048:                ioblkp = io_structs[iostmt];
                   1049: .
                   1050: 244,272c
                   1051:        else if(iostmt == IOREAD && ioerrlab && ioendlab && ioerrlab!=ioendlab)
                   1052:                IOSTP = (expptr) mktemp(TYINT, PNULL, IO_START_NAME);
                   1053: .
                   1054: 232c
                   1055:                        execlab(ioerrlab = p->constblock.const.ci);
                   1056: .
                   1057: 226c
                   1058:                        execlab(ioendlab = p->constblock.const.ci);
                   1059: .
                   1060: 222c
                   1061:        ioerrlab = ioendlab = 0;
                   1062: .
                   1063: 216a
                   1064:        struct io_setup *ios;
                   1065: .
                   1066: 193,194c
                   1067:        s0 = s = lexline(&n);
                   1068:        se = t = s + n;
                   1069: 
                   1070:        /* fix MYQUOTES (\002's) and \\'s */
                   1071: 
                   1072:        while(s < se)
                   1073:                switch(*s++) {
                   1074:                        case 2:
                   1075:                                t += 3; break;
                   1076:                        case '"':
                   1077:                        case '\\':
                   1078:                                t++; break;
                   1079:                        }
                   1080:        s = s0;
                   1081:        lp->fmtstring = t = mem(t - s + 1, 0);
                   1082:        while(s < se)
                   1083:                switch(k = *s++) {
                   1084:                        case 2:
                   1085:                                t[0] = '\\';
                   1086:                                t[1] = '0';
                   1087:                                t[2] = '0';
                   1088:                                t[3] = '2';
                   1089:                                t += 4;
                   1090:                                break;
                   1091:                        case '"':
                   1092:                        case '\\':
                   1093:                                *t++ = '\\';
                   1094:                                /* no break */
                   1095:                        default:
                   1096:                                *t++ = k;
                   1097:                        }
                   1098:        *t = 0;
                   1099: .
                   1100: 189,191c
                   1101:        char *s0, *lexline();
                   1102:        register char *s, *se, *t;
                   1103:        register k;
                   1104: .
                   1105: 184d
                   1106: 160a
                   1107: 
                   1108: LOCAL char _0[] = "0";
                   1109: LOCAL char *cilist_names[] = {
                   1110:        "cilist",
                   1111:        "cierr",
                   1112:        "ciunit",
                   1113:        "ciend",
                   1114:        "cifmt",
                   1115:        "cirec"
                   1116:        };
                   1117: LOCAL char *icilist_names[] = {
                   1118:        "icilist",
                   1119:        "icierr",
                   1120:        "iciunit",
                   1121:        "iciend",
                   1122:        "icifmt",
                   1123:        "icirlen",
                   1124:        "icirnum"
                   1125:        };
                   1126: LOCAL char *olist_names[] = {
                   1127:        "olist",
                   1128:        "oerr",
                   1129:        "ounit",
                   1130:        "ofnm",
                   1131:        "ofnmlen",
                   1132:        "osta",
                   1133:        "oacc",
                   1134:        "ofm",
                   1135:        "orl",
                   1136:        "oblnk"
                   1137:        };
                   1138: LOCAL char *cllist_names[] = {
                   1139:        "cllist",
                   1140:        "cerr",
                   1141:        "cunit",
                   1142:        "csta"
                   1143:        };
                   1144: LOCAL char *alist_names[] = {
                   1145:        "alist",
                   1146:        "aerr",
                   1147:        "aunit"
                   1148:        };
                   1149: LOCAL char *inlist_names[] = {
                   1150:        "inlist",
                   1151:        "inerr",
                   1152:        "inunit",
                   1153:        "infile",
                   1154:        "infilen",
                   1155:        "inex",
                   1156:        "inopen",
                   1157:        "innum",
                   1158:        "innamed",
                   1159:        "inname",
                   1160:        "innamlen",
                   1161:        "inacc",
                   1162:        "inacclen",
                   1163:        "inseq",
                   1164:        "inseqlen",
                   1165:        "indir",
                   1166:        "indirlen",
                   1167:        "infmt",
                   1168:        "infmtlen",
                   1169:        "inform",
                   1170:        "informlen",
                   1171:        "inunf",
                   1172:        "inunflen",
                   1173:        "inrecl",
                   1174:        "innrec",
                   1175:        "inblank",
                   1176:        "inblanklen"
                   1177:        };
                   1178: 
                   1179: LOCAL char **io_fields;
                   1180: 
                   1181: #define zork(n,t) n, sizeof(n)/sizeof(char *) - 1, t
                   1182: 
                   1183: LOCAL io_setup io_stuff[] = {
                   1184:        zork(cilist_names, TYCILIST),   /* external read/write */
                   1185:        zork(inlist_names, TYINLIST),   /* inquire */
                   1186:        zork(olist_names,  TYOLIST),    /* open */
                   1187:        zork(cllist_names, TYCLLIST),   /* close */
                   1188:        zork(alist_names,  TYALIST),    /* rewind */
                   1189:        zork(alist_names,  TYALIST),    /* backspace */
                   1190:        zork(alist_names,  TYALIST),    /* endfile */
                   1191:        zork(icilist_names,TYICILIST),  /* internal read */
                   1192:        zork(icilist_names,TYICILIST)   /* internal write */
                   1193:        };
                   1194: 
                   1195: #undef zork
                   1196:                
                   1197: .
                   1198: 24c
                   1199: Addrp ioblkp;
                   1200: .
                   1201: 20,21d
                   1202: 12c
                   1203: iob_data *iob_list;
                   1204: Addrp io_structs[9];
                   1205: .
                   1206: 10a
                   1207: #include "iob.h"
                   1208: .
                   1209: \Rogue\Monster\
                   1210: else
                   1211:   echo "will not over write ./io.c.ed"
                   1212: fi
                   1213: if `test ! -s ./lex.c.ed`
                   1214: then
                   1215: echo "writting ./lex.c.ed"
                   1216: cat > ./lex.c.ed << '\Rogue\Monster\'
                   1217: 985a
                   1218: 
                   1219: /* Check for NAG's special hex constant */
                   1220: 
                   1221:        if (isdigit (*nextch) && (*(nextch + 1) == '#' ||
                   1222:                (isdigit (*(nextch + 1)) && *(nextch + 2) == '#'))) {
                   1223: 
                   1224:            radix = atoi (nextch);
                   1225:            if (*++nextch != '#')
                   1226:                nextch++;
                   1227:            if (radix != 2 && radix != 8 && radix != 16) {
                   1228:                erri ("invalid base for constant, defaulting to hex", radix);
                   1229:                radix = 16;
                   1230:            } /* if */
                   1231:            nextch++;
                   1232:            for (p = token; hextoi (*nextch) < radix;)
                   1233:                *p++ = *nextch++;
                   1234:            toklen = p - token;
                   1235:            token[toklen] = '\0';
                   1236:            return (radix == 16) ? SHEXCON : ((radix == 8) ? SOCTCON :
                   1237:                    SBITCON);
                   1238:        } /* if */
                   1239: 
                   1240: .
                   1241: 930a
                   1242: 
                   1243: /* BUG BUG BUG Why the heck is this a single OR? (mwm 6-20-89) */
                   1244: 
                   1245: .
                   1246: 923a
                   1247: 
                   1248: .
                   1249: 840a
                   1250: /* gettok -- moves the right amount of text from   nextch   into the   token
                   1251:    buffer.   token   initially contains garbage (leftovers from the prev token) */
                   1252: 
                   1253: .
                   1254: \Rogue\Monster\
                   1255: else
                   1256:   echo "will not over write ./lex.c.ed"
                   1257: fi
                   1258: if `test ! -s ./machdefs.h.ed`
                   1259: then
                   1260: echo "writting ./machdefs.h.ed"
                   1261: cat > ./machdefs.h.ed << '\Rogue\Monster\'
                   1262: 1,15c
                   1263: /*#define SDB 1*/
                   1264: .
                   1265: \Rogue\Monster\
                   1266: else
                   1267:   echo "will not over write ./machdefs.h.ed"
                   1268: fi
                   1269: if `test ! -s ./main.c.ed`
                   1270: then
                   1271: echo "writting ./main.c.ed"
                   1272: cat > ./main.c.ed << '\Rogue\Monster\'
                   1273: 378d
                   1274: 369,376d
                   1275: 305,318d
                   1276: 262,265d
                   1277: 255,258d
                   1278: 226d
                   1279: 220,221c
                   1280: /*     fatal("vax cannot recover from floating exception");*/
                   1281: .
                   1282: 99c
                   1283:     f2c_entry ("Fr", P_ONE_ARG, P_STRING, &fl_fmt_string, 0),
                   1284:     f2c_entry ("ev", P_NO_ARGS, P_INT, &define_equivs, NO)
                   1285: .
                   1286: 67a
                   1287: int define_equivs = YES;
                   1288: .
                   1289: 30d
                   1290: 8,28d
                   1291: 1,2c
                   1292: char xxxvers[] = "\n@(#) FORTRAN to C Translator, VERSION 0.4, June 29, 1989\n";
                   1293: #define        VER     0x9629  /* for pi; 8YMDD */
                   1294: .
                   1295: \Rogue\Monster\
                   1296: else
                   1297:   echo "will not over write ./main.c.ed"
                   1298: fi
                   1299: if `test ! -s ./mem.c.ed`
                   1300: then
                   1301: echo "writting ./mem.c.ed"
                   1302: cat > ./mem.c.ed << '\Rogue\Monster\'
                   1303: 59a
                   1304:        }
                   1305: 
                   1306:  void
                   1307: new_iob_data(ios, name)
                   1308:  register io_setup *ios;
                   1309:  char *name;
                   1310: {
                   1311:        register iob_data *iod;
                   1312:        register char **s, **se;
                   1313: 
                   1314:        iod = (iob_data *)
                   1315:                mem(sizeof(iob_data) + ios->nelt*sizeof(char *), 1);
                   1316:        iod->next = iob_list;
                   1317:        iob_list = iod;
                   1318:        iod->type = ios->fields[0];
                   1319:        iod->name = cpstring(name);
                   1320:        s = iod->fields;
                   1321:        se = s + ios->nelt;
                   1322:        while(s < se)
                   1323:                *s++ = "0";
                   1324:        *s = 0;
                   1325:        }
                   1326: 
                   1327:  char *
                   1328: string_num(pfx, n)
                   1329:  char *pfx;
                   1330:  long n;
                   1331: {
                   1332:        char buf[32];
                   1333:        sprintf(buf, "%s%ld", pfx, n);
                   1334:        /* can't trust return type of sprintf -- BSD gets it wrong */
                   1335:        return strcpy(mem(strlen(buf)+1,0), buf);
                   1336:        }
                   1337: 
                   1338:  char *
                   1339: cpstring(s)
                   1340:  register char *s;
                   1341: {
                   1342:        return strcpy(mem(strlen(s)+1,0), s);
                   1343:        }
                   1344: 
                   1345: static defines *define_list;
                   1346: 
                   1347:  void
                   1348: define_start(outfile, s1, s2, post)
                   1349:  FILE *outfile;
                   1350:  char *s1, *s2, *post;
                   1351: {
                   1352:        defines *d;
                   1353:        int n, n1;
                   1354: 
                   1355:        n = n1 = strlen(s1);
                   1356:        if (s2)
                   1357:                n += strlen(s2);
                   1358:        d = (defines *)mem(sizeof(defines)+n, 1);
                   1359:        d->next = define_list;
                   1360:        define_list = d;
                   1361:        strcpy(d->defname, s1);
                   1362:        if (s2)
                   1363:                strcpy(d->defname + n1, s2);
                   1364:        nice_printf(outfile, "#define %s %s", d->defname, post);
                   1365:        }
                   1366: 
                   1367:  void
                   1368: other_undefs(outfile)
                   1369:  FILE *outfile;
                   1370: {
                   1371:        defines *d;
                   1372:        if (d = define_list) {
                   1373:                define_list = 0;
                   1374:                nice_printf(outfile, "\n");
                   1375:                do
                   1376:                        nice_printf(outfile, "#undef %s\n", d->defname);
                   1377:                        while(d = d->next);
                   1378:                nice_printf(outfile, "\n");
                   1379:                }
                   1380: .
                   1381: 57,58c
                   1382:        register int k = n + 2, L;
                   1383:        for(L = 0; L < n; L++)
                   1384:                if (s[L] == '"')
                   1385:                        k++; 
                   1386:        rv = s1 = mem(k);
                   1387:        *s1++ = '"';
                   1388:        for(L = 0; L < n; L++) {
                   1389:                if (s[L] == '"')
                   1390:                        *s1++ = '\\';
                   1391:                *s1++ = s[L];
                   1392:                }
                   1393:        *s1 = 0;
                   1394: .
                   1395: 55a
                   1396:        register char *s1;
                   1397: .
                   1398: 53,54c
                   1399:  register char *s;
                   1400:  register int n;
                   1401: .
                   1402: 48c
                   1403:        return rv;
                   1404: .
                   1405: 44,45c
                   1406:                rv = b->buf;
                   1407:                mem_last = rv + sizeof(b->buf);
                   1408:                s = rv + n;
                   1409: .
                   1410: 28c
                   1411:        if (round)
                   1412:                mem_next = (char *)(
                   1413:                        ((long)mem_next + sizeof(char *)-1)
                   1414:                                & ~(sizeof(char *)-1));
                   1415:        rv = mem_next;
                   1416:        s = rv + n;
                   1417: .
                   1418: 26c
                   1419:        register char *rv, *s;
                   1420: .
                   1421: 22c
                   1422: mem(n, round)
                   1423: .
                   1424: 1a
                   1425: #include "iob.h"
                   1426: #include <string.h>
                   1427: .
                   1428: \Rogue\Monster\
                   1429: else
                   1430:   echo "will not over write ./mem.c.ed"
                   1431: fi
                   1432: if `test ! -s ./misc.c.ed`
                   1433: then
                   1434: echo "writting ./misc.c.ed"
                   1435: cat > ./misc.c.ed << '\Rogue\Monster\'
                   1436: 1137a
                   1437: } /* struct_eq */
                   1438: 
                   1439: /* biggest_type -- returns the largest type that can be used to output 
                   1440:    offset   padding bytes. */
                   1441: 
                   1442: int biggest_type (offset)
                   1443: int offset;
                   1444: {
                   1445:     if (offset % typesize[TYDCOMPLEX] == 0)
                   1446:         return TYDCOMPLEX;
                   1447:     if (offset % typesize[TYDREAL] == 0)
                   1448:         return TYDREAL;
                   1449:     if (offset % typesize[TYLONG] == 0)
                   1450:         return TYLONG;
                   1451:     if (offset % typesize[TYSHORT] == 0)
                   1452:        return TYSHORT;
                   1453:     return TYCHAR;
                   1454: } /* biggest_type */
                   1455: .
                   1456: 888a
                   1457:                case OPASSIGNI:
                   1458: .
                   1459: 745d
                   1460: 730c
                   1461: 
                   1462: .
                   1463: 559a
                   1464:        nextext->init_values = CHNULL;
                   1465: .
                   1466: 510c
                   1467: /*             lp->labused = YES; */
                   1468: .
                   1469: 485a
                   1470:        lp->fmtstring = 0;
                   1471: .
                   1472: 275,276d
                   1473: 273d
                   1474: 247c
                   1475:        static char name[IDENT_LEN+1];
                   1476: .
                   1477: \Rogue\Monster\
                   1478: else
                   1479:   echo "will not over write ./misc.c.ed"
                   1480: fi
                   1481: if `test ! -s ./names.c.ed`
                   1482: then
                   1483: echo "writting ./names.c.ed"
                   1484: cat > ./names.c.ed << '\Rogue\Monster\'
                   1485: 605,610c
                   1486:        "acos", "alist", "asin", "asm", "atan", "atan2", "auto", "break",
                   1487:        "case", "char", "cilist", "cllist", "const", "continue", "cos", "cosh",
                   1488:        "default", "do", "double", "else", "entry", "enum", "exp",
                   1489:        "extern", "flag", "float", "for", "ftnint", "ftnlen", "goto",
                   1490:        "icilist", "if", "inlist", "int", "log", "long",
                   1491:        "noalias", "olist", "register", "return",
                   1492: .
                   1493: 602a
                   1494: /* Also includes keywords used for I/O in f2c.h */
                   1495: .
                   1496: 545c
                   1497:     static char buf[USER_LABEL_MAX + 1];
                   1498: .
                   1499: 427,429c
                   1500:                define_start (outfile, varstr (XL, ext -> extname),
                   1501:                        comm_union_name (count, NULL), CNULL);
                   1502: .
                   1503: 264,267c
                   1504:     sprintf (pointer, "_%d", count);
                   1505: .
                   1506: 78a
                   1507:        case TYCILIST:  strcpy (buff, "cilist");        break;
                   1508:        case TYICILIST: strcpy (buff, "icilist");       break;
                   1509:        case TYOLIST:   strcpy (buff, "olist");         break;
                   1510:        case TYCLLIST:  strcpy (buff, "cllist");        break;
                   1511:        case TYALIST:   strcpy (buff, "alist");         break;
                   1512:        case TYINLIST:  strcpy (buff, "inlist");        break;
                   1513: .
                   1514: \Rogue\Monster\
                   1515: else
                   1516:   echo "will not over write ./names.c.ed"
                   1517: fi
                   1518: if `test ! -s ./names.h.ed`
                   1519: then
                   1520: echo "writting ./names.h.ed"
                   1521: cat > ./names.h.ed << '\Rogue\Monster\'
                   1522: 18a
                   1523: #define IO_YAIN_NAME "io_"             /* Yet another I/O Name */
                   1524: #define IO_FMT_NAME "fmt_"             /* IO Format prefix */
                   1525: #define IO_RESRC_NAME "io_rc"
                   1526: .
                   1527: \Rogue\Monster\
                   1528: else
                   1529:   echo "will not over write ./names.h.ed"
                   1530: fi
                   1531: if `test ! -s ./nice_printf.c.ed`
                   1532: then
                   1533: echo "writting ./nice_pf.c.ed"
                   1534: cat > ./nice_pf.c.ed << '\Rogue\Monster\'
                   1535: 229c
                   1536:            cursor_pos = in_string ? 0 : ind +
                   1537: .
                   1538: 211a
                   1539:            (void) safe_strncpy (next_slot, pointer + 1, sizeof(output_buf)-1);
                   1540: .
                   1541: 210d
                   1542: 198,199c
                   1543:                        pointer = adjust_pointer_in_string(pointer);
                   1544:                else if (strchr("&*+-/<=>|", *pointer)
                   1545: .
                   1546: 167c
                   1547:                    else if (word_start && isntident(*(unsigned char *)pointer))
                   1548: .
                   1549: 164,165c
                   1550:                    if (!word_start && isident(*(unsigned char *)pointer))
                   1551: .
                   1552: 160,162c
                   1553:    at the same time.  Must check for tokens first, since '-' is considered
                   1554:    part of an identifier; checking isident first would mean breaking up "->" */
                   1555: .
                   1556: 129d
                   1557: 124c
                   1558:        if (in_string)
                   1559:                for (pointer = next_slot; *pointer && *pointer != '\n' &&
                   1560:                                cursor_pos <= max_line_len; pointer++)
                   1561:                        cursor_pos++;
                   1562:        else
                   1563:           for (pointer = next_slot; *pointer && *pointer != '\n' &&
                   1564: .
                   1565: 117,119d
                   1566: 113a
                   1567:     ind = indent <= MAX_INDENT
                   1568:                ? indent
                   1569:                : MIN_INDENT + indent % (MAX_INDENT - MIN_INDENT);
                   1570: 
                   1571: .
                   1572: 100a
                   1573:     extern char tr_tab[];      /* in output.c */
                   1574:     register char *Tr = tr_tab;
                   1575:     int ind;
                   1576: .
                   1577: 97d
                   1578: 89c
                   1579: /* #define isident(x) (isalnum (x) || (x) == '_' || (x) == '.' || (x) == '-') */
                   1580: #define isident(x) (Tr[x] & 1)
                   1581: #define isntident(x) (!Tr[x])
                   1582: .
                   1583: 81a
                   1584:  static char *
                   1585: adjust_pointer_in_string(pointer)
                   1586:  register char *pointer;
                   1587: {
                   1588:        register char *s, *s1, *se, *s0;
                   1589: 
                   1590:        if (pointer - next_slot < 20)   /* arbitrary choice */
                   1591:                return next_slot - 1;
                   1592:        /* arrange not to break \002 */
                   1593:        for(s = s1 = next_slot; s < pointer; s++) {
                   1594:                s0 = s1;
                   1595:                s1 = s;
                   1596:                if (*s == '\\') {
                   1597:                        se = s++ + 4;
                   1598:                        if (se > pointer)
                   1599:                                break;
                   1600:                        if (*s < '0' || *s > '7')
                   1601:                                continue;
                   1602:                        while(++s < se)
                   1603:                                if (*s < '0' || *s > '7')
                   1604:                                        break;
                   1605:                        --s;
                   1606:                        }
                   1607:                }
                   1608:        return s0 - 1;
                   1609:        }
                   1610: 
                   1611: .
                   1612: 22c
                   1613:        int tab = ind + (use_extra ? TOO_LONG_INDENT : 0);
                   1614: .
                   1615: 20a
                   1616:     ind = indent <= MAX_INDENT
                   1617:                ? indent
                   1618:                : MIN_INDENT + indent % (MAX_INDENT - MIN_INDENT);
                   1619: 
                   1620: .
                   1621: 19c
                   1622:     int ind;
                   1623: .
                   1624: 8a
                   1625: #define MAX_INDENT 44
                   1626: #define MIN_INDENT 22
                   1627: .
                   1628: 7d
                   1629: 2d
                   1630: \Rogue\Monster\
                   1631: else
                   1632:   echo "will not over write ./nice_pf.c.ed"
                   1633: fi
                   1634: if `test ! -s ./nice_pf.h.ed`
                   1635: then
                   1636: echo "writting ./nice_pf.h.ed"
                   1637: cat > ./nice_pf.h.ed << '\Rogue\Monster\'
                   1638: 5c
                   1639: #define MAX_OUTPUT_SIZE 6000   /* Number of chars on one output line PLUS
                   1640: .
                   1641: \Rogue\Monster\
                   1642: else
                   1643:   echo "will not over write ./nice_pf.h.ed"
                   1644: fi
                   1645: if `test ! -s ./output.c.ed`
                   1646: then
                   1647: echo "writting ./output.c.ed"
                   1648: cat > ./output.c.ed << '\Rogue\Monster\'
                   1649: 1168a
                   1650:     extern int tab_size;
                   1651:     register char *s;
                   1652: 
                   1653:     s = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_+-.";
                   1654:     while(*s)
                   1655:        tr_tab[*s++] = 3;
                   1656:     tr_tab['>'] = 1;
                   1657: .
                   1658: 1157a
                   1659: char tr_tab[256];      /* machine dependent */
                   1660: .
                   1661: 1114,1141d
                   1662: 1104,1108d
                   1663: 1096d
                   1664: 1050,1054c
                   1665: #endif         
                   1666:                        ONEOF(q->addrblock.vstg,
                   1667:                                M(STGARG)|M(STGCOMMON)|M(STGEQUIV)|M(STGCONST))
                   1668:                        || (memoffset && (!ISICON(memoffset)
                   1669:                                || memoffset->constblock.const.ci)))
                   1670:                        || ONEOF(q->addrblock.vstg,
                   1671:                                        M(STGINIT)|M(STGAUTO)|M(STGBSS))
                   1672:                                && !q->addrblock.isarray)
                   1673: .
                   1674: 1047c
                   1675:                        q -> addrblock.vstg, M(STGARG)|M(STGEQUIV)) ||
                   1676: .
                   1677: 1045c
                   1678:                        !oneof_stg(q -> addrblock.uname_tag == UNAM_NAME ?
                   1679: .
                   1680: 1043c
                   1681:                        !ONEOF (q -> addrblock.vstg, M(STGEXT)|M(STGLENG))
                   1682:                        && (
                   1683: #if 0
                   1684: .
                   1685: 983a
                   1686:        if (q->tag == TADDR) {
                   1687:                if (q->addrblock.vtype > TYERROR) {
                   1688:                        /* I/O block */
                   1689:                        nice_printf(outfile, "&%s", q->addrblock.user.ident);
                   1690:                        continue;
                   1691:                        }
                   1692:                if (!byvalue && q->addrblock.isarray
                   1693:                && q->addrblock.vtype != TYCHAR
                   1694:                && q->addrblock.memoffset->tag == TCONST
                   1695:                && q->addrblock.memoffset->constblock.const.ci == 0) {
                   1696: 
                   1697:                        /* &x[0] == x */
                   1698:                        /* This also prevents &sizeof(doublereal)[0] */
                   1699:                        switch(q->addrblock.uname_tag) {
                   1700:                            case UNAM_NAME:
                   1701:                                output_name(outfile, q->addrblock.user.name);
                   1702:                                continue;
                   1703:                            case UNAM_IDENT:
                   1704:                                nice_printf(outfile, "%s",
                   1705:                                        q->addrblock.user.ident);
                   1706:                                continue;
                   1707:                            case UNAM_EXTERN:
                   1708:                                output_extern(outfile,
                   1709:                                        &extsymtab[q->addrblock.memno]);
                   1710:                                continue;
                   1711:                            }
                   1712:                        }
                   1713:                }
                   1714: 
                   1715: .
                   1716: 976,977c
                   1717:     for (cp = arglist; cp; cp = cp -> nextp, done_once = TRUE) {
                   1718: .
                   1719: 961c
                   1720:     nice_printf(outfile, " (");
                   1721: .
                   1722: 940,947d
                   1723: 909a
                   1724:     register expptr q;
                   1725: .
                   1726: 907,908d
                   1727: 894d
                   1728: 877,879d
                   1729: 813a
                   1730:     /* Fudge character/arithmetic pairs: promote char to int. */
                   1731:     /* This mainuplation is meant to make ichar() work right. */
                   1732: 
                   1733:     if (e->vtype >= TYSHORT && e->vtype <= TYLOGICAL) {
                   1734:        register union Expression *Offset;
                   1735: 
                   1736:        if (e->leftp && e->leftp->tag == TADDR
                   1737:                        && e->leftp->addrblock.vtype == TYCHAR) {
                   1738:                e->leftp->addrblock.vtype = tyint;
                   1739:                Offset = e->leftp->addrblock.memoffset;
                   1740:                e->leftp->addrblock.memoffset =
                   1741:                        Offset
                   1742:                        ? mkexpr(OPSTAR, Offset, ICON(typesize[tyint]))
                   1743:                        : ICON(0);
                   1744:                e->leftp->addrblock.isarray = 1;
                   1745:                }
                   1746:        if (e->rightp && e->rightp->tag == TADDR
                   1747:                        && e->rightp->addrblock.vtype == TYCHAR) {
                   1748:                e->rightp->addrblock.vtype = tyint;
                   1749:                Offset = e->rightp->addrblock.memoffset;
                   1750:                e->rightp->addrblock.memoffset =
                   1751:                        Offset
                   1752:                        ? mkexpr(OPSTAR, Offset, ICON(typesize[tyint]))
                   1753:                        : ICON(0);
                   1754:                e->rightp->addrblock.isarray = 1;
                   1755:                }
                   1756:        }
                   1757: 
                   1758: .
                   1759: 754a
                   1760:        case OPIDENTITY:
                   1761: .
                   1762: 110d
                   1763: 94a
                   1764:        /* OPASSIGNI 56 */      { BINARY_OP,  2, "%l = &%r" },
                   1765:        /* OPIDENTITY 57 */     { UNARY_OP, 15, "%l" },
                   1766: .
                   1767: 27,28c
                   1768:        /* OPEQV 9 */           { BINARY_OP,  9, "%l == %r" },
                   1769:        /* OPNEQV 10 */         { BINARY_OP,  9, "%l != %r" },
                   1770: .
                   1771: \Rogue\Monster\
                   1772: else
                   1773:   echo "will not over write ./output.c.ed"
                   1774: fi
                   1775: if `test ! -s ./p1output.c.ed`
                   1776: then
                   1777: echo "writting ./p1output.c.ed"
                   1778: cat > ./p1output.c.ed << '\Rogue\Monster\'
                   1779: 359a
                   1780:        case OPIDENTITY:
                   1781: .
                   1782: 209c
                   1783:            stg, M(STGARG)|M(STGEQUIV)) && addrp->vtype != TYCHAR) {
                   1784: .
                   1785: 206c
                   1786:    Lengths are passed by value, so don't check STGLENG
                   1787:    28-Jun-89 (dmg)  Added the check for != TYCHAR
                   1788:  */
                   1789: .
                   1790: \Rogue\Monster\
                   1791: else
                   1792:   echo "will not over write ./p1output.c.ed"
                   1793: fi
                   1794: if `test ! -s ./pccdefs.h.ed`
                   1795: then
                   1796: echo "writting ./pccdefs.h.ed"
                   1797: cat > ./pccdefs.h.ed << '\Rogue\Monster\'
                   1798: 56,64c
                   1799: #define P2SHORT 3
                   1800: #define P2INT 4
                   1801: #define P2LONG 4
                   1802: .
                   1803: 1c
                   1804: /* The following numbers are strange, and implementation-dependent */
                   1805: .
                   1806: \Rogue\Monster\
                   1807: else
                   1808:   echo "will not over write ./pccdefs.h.ed"
                   1809: fi
                   1810: if `test ! -s ./proc.c.ed`
                   1811: then
                   1812: echo "writting ./proc.c.ed"
                   1813: cat > ./proc.c.ed << '\Rogue\Monster\'
                   1814: 1522a
                   1815:        doing_setbound = 0;
                   1816: .
                   1817: 1521c
                   1818:                p->basexpr = make_int_expr (fixtype (q));
                   1819: .
                   1820: 1491c
                   1821:                                p->dims[i].dimexpr = make_int_expr (fixtype (q));
                   1822: .
                   1823: 1458a
                   1824:        doing_setbound = 1;
                   1825: .
                   1826: 1445a
                   1827:        extern expptr make_int_expr ();
                   1828:        extern int doing_setbound;
                   1829: .
                   1830: 1046,1099d
                   1831: 1003,1007d
                   1832: 990,993c
                   1833: 
                   1834: .
                   1835: 959,964d
                   1836: 770,773d
                   1837: 733,761d
                   1838: 727,731d
                   1839: 688,691c
                   1840:                                (qclass==CLVAR && qstg==STGUNKNOWN) ) {
                   1841:                            if (! q -> vis_assigned)
                   1842:                                warn1("local variable %s never used",
                   1843:                                      varstr(VL,q->varname) );
                   1844:                        } else if(qclass==CLVAR && qstg==STGBSS) {
                   1845: .
                   1846: 658,686d
                   1847: 597,600d
                   1848: 565,569d
                   1849: 536,542d
                   1850: 519,524d
                   1851: 451,454d
                   1852: 439,442d
                   1853: 404,411d
                   1854: 402d
                   1855: 397,399d
                   1856: 394d
                   1857: 390,392d
                   1858: 260,281d
                   1859: 172,186d
                   1860: 111,123d
                   1861: 97d
                   1862: 87,95d
                   1863: 41,44d
                   1864: 18a
                   1865: char *memname();
                   1866: .
                   1867: 4,12d
                   1868: \Rogue\Monster\
                   1869: else
                   1870:   echo "will not over write ./proc.c.ed"
                   1871: fi
                   1872: if `test ! -s ./put.c.ed`
                   1873: then
                   1874: echo "writting ./put.c.ed"
                   1875: cat > ./put.c.ed << '\Rogue\Monster\'
                   1876: 85,86c
                   1877: /*     templist = hookup(templist, holdtemps);         */
                   1878: /*     holdtemps = NULL;                               */
                   1879: 
                   1880: .
                   1881: 61d
                   1882: 57,59d
                   1883: 50c
                   1884:        P2BAD, P2BAD, P2BAD, P2BAD,
                   1885:        1,1,1,1,1 /* OPNEG1, OPQUESTd, OPCOLONd, OPASSIGNI, OPIDENTITY */
                   1886: .
                   1887: 9,15d
                   1888: 7a
                   1889: #include "pccdefs.h"
                   1890: .
                   1891: \Rogue\Monster\
                   1892: else
                   1893:   echo "will not over write ./put.c.ed"
                   1894: fi
                   1895: if `test ! -s ./putpcc.c.ed`
                   1896: then
                   1897: echo "writting ./putpcc.c.ed"
                   1898: cat > ./putpcc.c.ed << '\Rogue\Monster\'
                   1899: 1459c
                   1900:     return (expptr) p;
                   1901: .
                   1902: 1447c
                   1903:        cp -> datap = (tagptr) addrfix(putx( mkconv(TYLENG,cp->datap)));
                   1904: .
                   1905: 1327c
                   1906:            if( ISCHAR(q) &&
                   1907:                (q->headblock.vclass != CLPROC || q->headblock.vstg == STGARG))
                   1908: .
                   1909: 1260a
                   1910:  LOCAL expptr
                   1911: addrfix(e)             /* fudge character string length if it's a TADDR */
                   1912:  expptr e;
                   1913: {
                   1914:        return e->tag == TADDR ? mkexpr(OPIDENTITY, e, ENULL) : e;
                   1915:        }
                   1916: 
                   1917: .
                   1918: 1076c
                   1919: return (expptr) p;
                   1920: .
                   1921: 1070c
                   1922:                return ENULL;
                   1923: .
                   1924: 895c
                   1925:        return (Addrp) p;
                   1926: .
                   1927: 465a
                   1928:        case OPASSIGNI:
                   1929: .
                   1930: 355a
                   1931:                case OPASSIGNI:
                   1932:                case OPIDENTITY:
                   1933: .
                   1934: \Rogue\Monster\
                   1935: else
                   1936:   echo "will not over write ./putpcc.c.ed"
                   1937: fi
                   1938: if `test ! -s ./star2s.c.ed`
                   1939: then
                   1940: echo "writting ./star2s.c.ed"
                   1941: cat > ./star2s.c.ed << '\Rogue\Monster\'
                   1942: 634a
                   1943: 
                   1944: char *parstate2s (par, pointer)
                   1945: int par;
                   1946: char *pointer;
                   1947: {
                   1948:     static char buff[STATIC_STORE_SIZE];
                   1949: 
                   1950:     if (pointer == NULL)
                   1951:         pointer = buff;
                   1952: 
                   1953:     switch (par) {
                   1954:         case OUTSIDE: strcpy (pointer, "OUTSIDE"); break;
                   1955:        case INSIDE: strcpy (pointer, "INSIDE"); break;
                   1956:        case INDCL: strcpy (pointer, "INDCL"); break;
                   1957:        case INDATA: strcpy (pointer, "INDATA"); break;
                   1958:        case INEXEC: strcpy (pointer, "INEXEC"); break;
                   1959:        default: strcpy (pointer, "Bad parstate '%d'", par);
                   1960:     } /* switch */
                   1961: 
                   1962:     return pointer;
                   1963: } /* parstate2s */
                   1964: .
                   1965: \Rogue\Monster\
                   1966: else
                   1967:   echo "will not over write ./star2s.c.ed"
                   1968: fi
                   1969: if `test ! -s ./star2s.h.ed`
                   1970: then
                   1971: echo "writting ./star2s.h.ed"
                   1972: cat > ./star2s.h.ed << '\Rogue\Monster\'
                   1973: 3a
                   1974: char *parstate2s ();
                   1975: .
                   1976: \Rogue\Monster\
                   1977: else
                   1978:   echo "will not over write ./star2s.h.ed"
                   1979: fi
                   1980: if `test ! -s ./statics.c.ed`
                   1981: then
                   1982: echo "writting ./statics.c.ed"
                   1983: cat > ./statics.c.ed << '\Rogue\Monster\'
                   1984: 169a
                   1985: } /* free_static_inits */
                   1986: .
                   1987: 63c
                   1988:                    type = biggest_type (val);
                   1989:                    val /= typesize[type];
                   1990:                    nice_printf (fp, "%s ", c_type_decl (type, 0));
                   1991: .
                   1992: 39a
                   1993:     int type;
                   1994: .
                   1995: \Rogue\Monster\
                   1996: else
                   1997:   echo "will not over write ./statics.c.ed"
                   1998: fi
                   1999: if `test ! -s ./vax.c.ed`
                   2000: then
                   2001: echo "writting ./vax.c.ed"
                   2002: cat > ./vax.c.ed << '\Rogue\Monster\'
                   2003: 617,840d
                   2004: 608d
                   2005: 603d
                   2006: 497d
                   2007: 495c
                   2008:                        expptr expr = (expptr) cpexpr (dp -> dims[i].dimexpr);
                   2009: .
                   2010: 170d
                   2011: 144,153d
                   2012: 140d
                   2013: 80,87d
                   2014: 32,33c
                   2015: #if 1
                   2016: .
                   2017: 2,10d
                   2018: \Rogue\Monster\
                   2019: else
                   2020:   echo "will not over write ./vax.c.ed"
                   2021: fi
                   2022: if `test ! -s ./vaxdefs.h.ed`
                   2023: then
                   2024: echo "writting ./vaxdefs.h.ed"
                   2025: cat > ./vaxdefs.h.ed << '\Rogue\Monster\'
                   2026: 1,15c
                   2027: /*#define SDB 1*/
                   2028: .
                   2029: \Rogue\Monster\
                   2030: else
                   2031:   echo "will not over write ./vaxdefs.h.ed"
                   2032: fi
                   2033: if `test ! -s ./FINAL_NOTES`
                   2034: then
                   2035: echo "writting ./FINAL_NOTES"
                   2036: cat > ./FINAL_NOTES << '\Rogue\Monster\'
                   2037:        NOTES AS I PREPARE TO LEAVE NAG ON JUNE 30
                   2038: ----------------------------------------------------------------------
                   2039: 
                   2040:        /user/mark/bin/f2c - translator before I merged the IO stuff
                   2041:                -- source in /user/mark/f2c/hold
                   2042:        /user/mark/bin/f2cio - Dave Gay's version, as of June 28
                   2043:                -- source in /user/mark/update_f2c/new
                   2044:        /user/mark/f2c/f2c - translator with I/O and bugs
                   2045:                -- source in /user/mark/f2c
                   2046: 
                   2047:        (null)com_ bug -- grep for "null" in all source files, I think
                   2048: the only one is in star2s.c, stg2s().  Set a breakpoint there, run the
                   2049: translator and look at the stack trace.
                   2050: 
                   2051:        common array init bug -- look at the differences between an
                   2052: earlier version and the current version.  First run the earlier
                   2053: version to see if it gets it right (it should).
                   2054: 
                   2055:        other bugs -- look at the file /user/mark/mail/dave.  These
                   2056: are the email messages I've exchanged with David Gay
                   2057: (cbs%uk.ac.nsfnet-relay::com.att.research::dmg).  I've incorporated
                   2058: most of his bug fixes except for the last ones (which 1. increase the
                   2059: default sizee of the statement function table and 2. fix a problem
                   2060: with a "too many initializers" error message).  There's nothing too
                   2061: personal in there, I hope!
                   2062: 
                   2063:        Look in my .login for the   c and h   aliases.  Most useful at
                   2064: searching the right files, avoiding gram.c (yacc output) and gram.o,
                   2065: but looking at the 5 grammar source files.
                   2066: 
                   2067:        I want to send Dave Gay my whole directory tree, if possible.
                   2068: PLEASE delete the .o's, files ending in ~, and the executables (look
                   2069: in /user/mark/bin for some more of these) before tar(1)ing these.  If
                   2070: that's not possible, just /user/mark/f2c subtree.  If THAT's not
                   2071: possible, just the /user/mark/f2c directory by itself.
                   2072: 
                   2073:        I also want to email him the diff -e between /user/mark/f2c
                   2074: source files and /user/mark/update_f2c/original_f2c source files.  You
                   2075: can find a list of all relevant source files in the file
                   2076: /user/mark/f2c/myfiles.
                   2077: \Rogue\Monster\
                   2078: else
                   2079:   echo "will not over write ./FINAL_NOTES"
                   2080: fi
                   2081: echo "Finished archive 1 of 1"
                   2082: exit

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.