Annotation of researchv10no/cmd/f2c/mwm.changes, revision 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.