         << LINES .001/.009 ARE RESERVED FOR SYSTEMS INTEGRATION >>     00000001
   BBASICCREATEERR = 665,  <<UNABLE TO CREATE HP BUSINESS BASIC INTERP>>03751000
                                                               <<71290>>03752000
   BBASICLOADERR   = 666,  <<UNABLE TO LOAD HP BUSINESS BASIC INTERP. >>03753000
                                                               <<71290>>03754000
   BBASICREQDMSSNG = 667,  <<REQUIRED PARAMETER MISSING, BBASIC<<71290>>03754100
   INTEGER PROCEDURE ADDJTENTRY(N1,N2,N3,N4,TNO,SIZE,INFO);    <<09723>>06105000
   BYTE ARRAY N1,N2,N3,N4;                                     <<09723>>06120000
   INTEGER PROCEDURE XADDJTENTRY(N1,N2,N3,N4,TNO,SIZE,INFO,    <<09723>>06140000
                                 XN1,XN2,XN3,XN4);             <<09723>>06142500
   BYTE ARRAY N1,N2,N3,N4,XN1,XN2,XN3,XN4;                     <<09723>>06155000
   INTEGER PROCEDURE XREMJTENTRY(N1,N2,N3,N4,TNO);             <<09723>>06175000
   BYTE ARRAY N1,N2,N3,N4;                                     <<09723>>06190000
$EDIT VOID=06540000                                                     06520000
INTEGER PROCEDURE XRETJTENTRY(N1,N2,N3,N4,SIZE,INFO);          <<09723>>06545000
   BYTE ARRAY N1,N2,N3,N4;                                     <<09723>>06550000
INTEGER PROCEDURE UI'FPARSE (FV,GP,AP,EP,LP,ERRP,BLKP);        <<09723>>06827500
VALUE FV, BLKP;                                                <<09723>>06827750
DOUBLE FV;LOGICAL GP,AP,EP,LP,ERRP,BLKP;                       <<09723>>06828000
OPTION EXTERNAL;                                               <<09723>>06828250
                                                               <<09723>>06828500
PROCEDURE AUTOALLOC'OFF;                                       <<R1621>>07216100
   OPTION EXTERNAL,UNCALLABLE;                                 <<R1621>>07216200
                                                               <<R1621>>07216400
PROCEDURE AUTOALLOC'ON;                                        <<R1621>>07216500
   OPTION EXTERNAL,UNCALLABLE;                                 <<R1621>>07216600
                                                               <<R1621>>07216800
PROCEDURE SHOWALLOCATE(LIST'FNUM,FILESET,OPTIONS);             <<S1838>>07217100
   VALUE LIST'FNUM,OPTIONS;                                    <<S1838>>07217200
   INTEGER LIST'FNUM,OPTIONS;                                  <<S1838>>07217300
   BYTE ARRAY FILESET;                                         <<S1838>>07217400
   OPTION PRIVILEGED,EXTERNAL;                                 <<S1838>>07217500
                                                               <<S1838>>07217600
   8,5,"VTERM",3,                                              <<09723>>07850250
EQUATE PKEYLISTL = 280;                                        <<09723>>07860000
        EPNTR := 0,                                            <<09723>>08042500
        LPNTR := 0,                                            <<09723>>08042750
        EPNTR2 := 0,                                           <<09723>>08052500
        EPNTRENV := 0,                                         <<09723>>08062500
             ENVID = EPNTR,                                    <<09723>>08077500
             ENVID2 = EPNTR2,                                  <<09723>>08087500
             ENVIDENV = EPNTRENV,                              <<09723>>08097500
             LOCKWORD = LPNTR,                                 <<09723>>08097750
ARRAY WENTRY (0:197); <<120+77, HOLDS PROTOTYPE JDT ENTRY >>   <<09723>>08120000
   FILE'ENTRY (0:197), <<HOLDS PROTOTYPE FILE ENTRY FROM JDT>> <<09723>>08135000
BYTE FORMALDESLEN = PARMS + 1;                                 <<09723>>08585100
$EDIT VOID=08965000                                                     08945000
INTEGER SUBROUTINE MAX (A,B);                                  <<09723>>08950000
VALUE A,B;                                                     <<09723>>08952000
INTEGER A,B;                                                   <<09723>>08954000
BEGIN                                                          <<09723>>08956000
   MAX := IF A > B THEN                                        <<09723>>08958000
             A                                                 <<09723>>08960000
          ELSE                                                 <<09723>>08962000
             B;                                                <<09723>>08964000
END;                                                           <<09723>>08966000
                                                               <<09723>>08968000
$EDIT VOID=09330000                                                     09240000
ERRLOC := UI'FPARSE (PARMS&LSR(8), GPNTR, APNTR, EPNTR, LPNTR, <<09723>>09240050
                     ERRPNTR, @BLANK);                         <<09723>>09240075
IF > THEN                                                      <<09723>>09240125
BEGIN                 << if backref or sysfiles >>             <<09723>>09240150
   IF FORMALDES = "*" THEN                                     <<09723>>09240175
      PARSE'ERR (ERRNUM:=FILEFDSGNOBACK, FORMALDES)            <<09723>>09240200
   ELSE                                                        <<09723>>09240225
      PARSE'ERR (ERRNUM:=FILEFDSGNOSYS, FORMALDES);            <<09723>>09240250
END                   << if backref or sysfiles >>             <<09723>>09240260
ELSE IF = THEN                                                 <<09723>>09240275
BEGIN                 << else good regular LHS fd >>           <<09723>>09240277
   IF LOCKWORD <> " " THEN                                     <<09723>>09240300
      PARSE'ERR (ERRNUM:=FDESGNOLOCK, LOCKWORD)                <<09723>>09240325
   ELSE                  << else no lockword >>                <<09723>>09240350
      CHECKFDESIG := TRUE;                                     <<09723>>09240375
END                    << else good regular LHS fd >>          <<09723>>09240725
ELSE                   << else irregular LHS fd >>             <<09723>>09240750
   PARSE'ERR (ERRNUM:=ERRLOC, ERRADR);                         <<09723>>09240775
$EDIT VOID=09655000                                                     09545000
ERRLOC := UI'FPARSE (PARMS(1)&LSR(8), GPNTR2, APNTR2, EPNTR2,  <<09723>>09545050
                     LPNTR, ERRPNTR, @BLANK);                  <<09723>>09545075
IF = THEN                                                      <<09723>>09545250
   FLAGANAME := TRUE       << we have a good regular RHS >>    <<09723>>09545300
ELSE IF > THEN                                                 <<09723>>09545325
BEGIN                      << if RHS is "$xxxxx" or "*xxxxx" >><<09723>>09545350
   IF ERRLOC <> 0 THEN                                         <<09723>>09545375
   BEGIN                      << if "$xxxxx" >>                <<09723>>09545380
      IF ERRLOC = 6 AND (NUMPARMS>PARMNUM) THEN                <<09723>>09545400
      BEGIN          << if =$NULL and parms present >>         <<09723>>09545425
         CHECKADESIG := FALSE;                                 <<09723>>09545450
         GETNEXT;                                              <<09723>>09545475
         PARSE'ERR (ERRNUM:=FILEADESNULL2MP, PARMPTR);         <<09723>>09545500
      END            << if =$NULL and parms present >>         <<09723>>09545525
      ELSE BEGIN                                               <<09723>>09545550
         FOPTIONS.DEFAULTDES := ERRLOC;                        <<09723>>09545555
         FLAGDEFDESIG := TRUE;                                 <<09723>>09545575
      END;                                                     <<09723>>09545600
   END                        << if "$xxxxx" >>                <<09723>>09545625
   ELSE BEGIN                 << else "*xxxxx" >>              <<09723>>09660000
$EDIT VOID=09705000                                                     09680000
      IF LOCKWORD <> " " THEN                                  <<09723>>09680125
      BEGIN       << lockwd not allowed in back ref >>         <<09723>>09680150
         PARSE'ERR (ERRNUM:=FDESGNOLOCK, LOCKWORD);            <<09723>>09680175
         CHECKADESIG := FALSE;                                 <<09723>>09680200
         RETURN;                                               <<09723>>09680225
      END;        << lockwd not allowed in back ref >>         <<09723>>09680250
   << ------------------------------------------------- >>     <<09723>>09680255
   << At this point the only thing left to do is to add >>     <<09723>>09680275
   << this file equation to the JDT. So when that is    >>     <<09723>>09680300
   << done and we return from this subroutine we want to>>     <<09723>>09680325
   << do nothing and leave, so set CHECKADESIG to FALSE.>>     <<09723>>09680350
   << ------------------------------------------------- >>     <<09723>>09680375
$EDIT VOID=09760000                                                     09755000
      CASE XADDJTENTRY(FORMALDES,GROUP,ACCT,ENVID,-3,          <<09723>>09855000
           NEXTENTRYX,WENTRY,ACTUALDES,GROUP2,ACCT2,ENVID2) OF <<09723>>09860000
               MOVE BENTRY := ACTUALDES,(ACTUALDESLEN);        <<09723>>09890000
               BENTRY(ACTUALDESLEN) := 0;                      <<09723>>09892500
               MOVE BENTRY := ACTUALDES,(ACTUALDESLEN);        <<09723>>09910000
               BENTRY(ACTUALDESLEN) := 0;                      <<09723>>09912500
   END;               << else "*xxxxx" >>                      <<09723>>09950000
END                << else if "$xxxxx" or "*xxxxx"             <<09723>>09950250
ELSE BEGIN         << else irregular file designator >>        <<09723>>09950500
   CHECKADESIG := FALSE;                                       <<09723>>09950750
   PARSE'ERR (ERRNUM:=ERRLOC, ERRADR);                         <<09723>>09951000
END;               << else irregular file designator >>        <<09723>>09951250
$EDIT VOID=10160000                                                     10025000
ERRLOC := UI'FPARSE (PARMS(PARMNUM-1)&LSR(8), GPNTRENV,        <<09723>>10027525
                     APNTRENV,EPNTRENV,LPNTR,ERRPNTR,@BLANK);  <<09723>>10027550
IF = THEN                                                      <<09723>>10027725
   ERRNUM := 0                << epoc file is ok >>            <<09723>>10027750
ELSE IF > THEN                                                 <<09723>>10027775
BEGIN                      << else if "*xxxxx" or "$xxxxx" >>  <<09723>>10027800
   IF ERRLOC > 0 THEN                                          <<09723>>10027825
   BEGIN                      << if "$xxxxx" >>                <<09723>>10027830
      IF ERRLOC <> 3 THEN        << if not $OLDPASS >>         <<09723>>10027850
         PARSE'ERR (ERRNUM:=FILEADESSYS, PARMPTR)              <<09723>>10027950
   END                        << if "$xxxxx" >>                <<09723>>10027955
   ELSE BEGIN                 << else "*xxxxx" >>              <<09723>>10028050
      IF LOCKWORD <> " " THEN                                  <<09723>>10028200
      BEGIN       << lockwd not allowed in back ref >>         <<09723>>10028225
         PARSE'ERR (ERRNUM:=FDESGNOLOCK, LOCKWORD);            <<09723>>10028250
         RETURN;                                               <<09723>>10028300
      END;        << lockwd not allowed in back ref >>         <<09723>>10028325
   << ------------------------- >>                             <<09723>>10115000
   << check for :FILE X;ENV=*X  >>                             <<09723>>10117500
   << ------------------------- >>                             <<09723>>10120000
   IF PARMPTR(1) = FORMALDES,                                  <<09723>>10165000
      (MAX (PARMLEN-1, INTEGER(FORMALDESLEN))) THEN            <<09723>>10165100
   CASE XRETJTENTRY(PARMPTR(1),GROUPENV,ACCTENV,ENVIDENV       <<09723>>10185000
                  << -------------------------------- >>       <<09723>>10210250
                  << check for :FILE A;ENV=X and then >>       <<09723>>10210500
                  <<           :FILE B;ENV=*A error   >>       <<09723>>10210750
                  << -------------------------------- >>       <<09723>>10211000
            << -------------------------------------- >>       <<09723>>10255000
            << check for :FILE A=Z                    >>       <<09723>>10257500
            <<           :FILE B=*A                   >>       <<09723>>10260000
            <<           :FILE A;ENV=*B  err sequence >>       <<09723>>10262500
            << -------------------------------------- >>       <<09723>>10262750
            SIZE := FORMAL'DES'LEN*2;                          <<09724>>10263000
            IF FORMAL'DES'NAME = FORMALDES,                    <<09723>>10265000
               (MAX (IF BFILE'ENTRY(2+SIZE-1) = " "            <<09724>>10270000
                     THEN SIZE-1 ELSE SIZE, FORMALDESLEN))THEN <<09724>>10270100
               MOVE BFILE'ENTRY := PARMPTR(1),(PARMLEN-1);     <<09723>>10290000
               BFILE'ENTRY(PARMLEN-1) := 0;                    <<09723>>10292500
               MOVE BFILE'ENTRY := PARMPTR(1),(PARMLEN-1);     <<09723>>10330000
               BFILE'ENTRY(PARMLEN-1) := 0;                    <<09723>>10332500
   END;      << else "*xxxxx" >>                               <<09723>>10367500
END       << else if "*xxxxx" or "$xxxxx" >>                   <<09723>>10370000
ELSE         << else something went wrong >>                   <<09723>>10370250
   PARSE'ERR (ERRNUM:=ERRLOC, ERRADR);                         <<09723>>10370500
IF ERRNUM <= 0 THEN                                            <<09723>>10375000
   CHECKENVFILEDESIG := TRUE;                                  <<09723>>10377500
            << VTERM >>                                        <<09723>>16615250
            BEGIN                                              <<09723>>16615500
               FLAGVTERM := TRUE;                              <<09723>>16615750
            END;                                               <<09723>>16616000
                                                               <<09723>>16616250
FLAGDEV := FLAGADEV LOR FLAGDENS LOR FLAGENV LOR FLAGOUTQ      <<09723>>17095000
           LOR FLAGVTERM;                                      <<09723>>17096250
   IF FLAGVTERM THEN                                           <<09723>>17300250
      BEGIN                                                    <<09723>>17300500
         MOVE BENTRY(NEXTENTRYX) := ";VTERM";                  <<09723>>17300750
         NEXTENTRYX := NEXTENTRYX + 6;                         <<09723>>17301000
         KEYS'LEN := KEYS'LEN + 6;                             <<09723>>17301250
      END;                                                     <<09723>>17301500
                                                               <<09723>>17301750
   IF ADDJTENTRY(FORMALDES,GROUP,ACCT,ENVID,-3,X+1,WENTRY)     <<09723>>17600000
      <> 0 THEN                                                <<09723>>17602500
BYTE BLANK := " ";                                             <<09723>>18235000
LOGICAL                                                        <<09723>>18250000
   GPNTR := 0,                                                 <<09723>>18250025
   APNTR := 0,                                                 <<09723>>18250050
   EPNTR := 0,                                                 <<09723>>18255000
   LPNTR := 0,                                                 <<09723>>18255250
   ERRPNTR := 0;                                               <<09723>>18255500
BYTE POINTER                                                   <<09723>>18260000
   FORMDES = PARMS,                                            <<09723>>18260025
   GROUP = GPNTR,                                              <<09723>>18260050
   ACCNT = APNTR,                                              <<09723>>18260075
   ENVID = EPNTR,                                              <<09723>>18260100
   LOCKWORD = LPNTR,                                           <<09723>>18260125
   ERRADR   = ERRPNTR;                                         <<09723>>18260150
                                                               <<09723>>18260175
INTEGER ERRLOC;                                                <<09723>>18267625
                                                               <<09723>>18267650
$EDIT VOID=18570000                                                     18485000
         PARMNUM := 1;                                         <<09723>>18485025
         ERRLOC := UI'FPARSE (PARMS&LSR(8), GPNTR, APNTR,      <<09723>>18485050
                              EPNTR, LPNTR, ERRPNTR, @BLANK);  <<09723>>18485075
         IF > THEN                                             <<09723>>18485225
            CIERR (ERRNUM:=REQFORMALFDESIG, FORMDES)           <<09723>>18485250
         ELSE IF = THEN                                        <<09723>>18485275
            BEGIN     << Valid FD, remove it >>                <<09723>>18485300
            IF XREMJTENTRY(FORMDES,GROUP,ACCNT,ENVID,TNUM)     <<09723>>18575000
               <> 0 THEN                                       <<09723>>18577500
            END       << Valid FD, remove it >>                <<09723>>18605000
         ELSE         << else irregular FD >>                  <<09723>>18605250
            CIERR (ERRLOC, ERRADR);                            <<09723>>18605275
     <<------------------------------------------------>>      <<01552>>19255100
     << SEARCH FILENAME FOR THE LOCKWORD DELIMITER TO  >>      <<01552>>19255200
     << SUPPRESS LOCKWORD PRINTING. USING XREG AS THE  >>      <<01552>>19255300
     << AS AN INDEX.                                   >>      <<01552>>19255400
     <<------------------------------------------------>>      <<01552>>19255500
      XREG := 0;                                               <<01552>>19255600
      DO                                                       <<01552>>19255700
       BEGIN                                                   <<01552>>19255800
         XREG := XREG + 1;                                     <<01552>>19255900
         IF FILENAME(XREG) = "/" THEN                          <<01552>>19256000
            FILENAME(XREG) := 0;                               <<01552>>19256100
       END                                                     <<01552>>19256200
      UNTIL ((FILENAME(XREG) = 0) OR (XREG = 9));              <<01552>>19256300
   EQUATE NUMBER'CODES = 116,                                  <<31985>>27665000
8,5,"NMPRG",5,     << 1030 >>                                  <<31985>>27756000
8,5,"NMSL ",4,     << 1032 >>                                  <<31985>>27761000
8,5,"NMRL ",4,     << 1033 >>                                  <<31985>>27762000
8,5,"MARPA",5,     << 1168 >>                                  <<01336>>28011000
8,5,"MARPD",5,     << 1169 >>                                  <<01336>>28012000
8,5,"MCMND",5,     << 1170 >>                                  <<01336>>28013000
8,5,"MFRTM",5,     << 1171 >>                                  <<01336>>28014000
8,5,"MEFT ",4,     << 1173 >>                                  <<01336>>28014100
8,5,"MCRPT",5,     << 1174 >>                                  <<01336>>28014200
8,5,"MSERL",5,     << 1175 >>                                  <<01336>>28014300
$EDIT VOID=28110000                                                     28110000
8,5,"BKEY ",4,     << 1246 >>                                  <<31985>>28136000
$EDIT VOID=28140000                                                     28140000
8,5,"PFSTA",5,     << 1258 >>                                  <<01336>>28145000
$EDIT VOID=28155000                                                     28155000
8,5,"RFDCA",5,     << 1270 >>                                  <<01336>>28156000
8,5,"FFDCA",5,     << 1271 >>                                  <<01336>>28157000
8,5,"DIU  ",3,     << 1272 >>                                  <<01336>>28158000
8,5,"PDOC ",4,     << 1273 >>                                  <<01336>>28159000
8,5,"DFI  ",3,     << 1275 >>                                  <<31985>>28159100
8,5,"SRI  ",3,     << 1276 >>                                  <<31985>>28159200
8,5,"MAP  ",3,     << 1421 >>                                  <<01336>>28161000
8,5,"GAL  ",3,     << 1422 >>                                  <<01336>>28161100
8,5,"TTX  ",3,     << 1425 >>                                  <<01336>>28162000
8,5,"RDIC ",4,     << 1428 >>                                  <<31985>>28163000
8,5,"RSPEC",5,     << 1429 >>                                  <<31985>>28164000
8,5,"RSPCF",5,     << 1430 >>                                  <<31985>>28164100
8,5,"REXEC",5,     << 1431 >>                                  <<31985>>28164200
8,5,"RJOB ",4,     << 1432 >>                                  <<31985>>28164300
8,5,"ROUTI",5,     << 1433 >>                                  <<31985>>28164400
8,5,"ROUTD",5,     << 1434 >>                                  <<31985>>28164500
8,5,"PRINT",5,     << 1435 >>                                  <<31985>>28164600
8,5,"RCONF",5,     << 1436 >>                                  <<31985>>28164700
8,5,"PIF  ",3,     << 1441 >>                                  <<31985>>28164800
8,5,"NMOBJ",5,     << 1461 >>                                  <<31985>>28164900
8,5,"PASLB",5,     << 1462 >>                                  <<31985>>28164910
,1030     << NMPRG >>                                          <<31985>>28241000
,1032     << NMSL  >>                                          <<31985>>28246000
,1033     << NMRL  >>                                          <<31985>>28247000
,1168     << MARPA >>                                          <<01336>>28546000
,1169     << MARPD >>                                          <<01336>>28547000
,1170     << MCMND >>                                          <<01336>>28548000
,1171     << MFRTM >>                                          <<01336>>28549000
<< 1172 USED BY HPDESK-RESERVED >>                             <<01336>>28549100
,1173     << MEFT  >>                                          <<01336>>28549200
,1174     << MCRPT >>                                          <<01336>>28549300
,1175     << MSERL >>                                          <<01336>>28549400
$EDIT VOID=28550000                                                     28550000
<< 1179-1186: RESERVED FOR TERMINAL I/O >>                     <<01336>>28570000
<< 1201-1210: RESERVED FOR KANJI >>                            <<01336>>28605000
$EDIT VOID=28685000                                                     28685000
,1246     << BKEY  >>                                          <<31985>>28716000
<< 1247-1256: RESERVED FOR HP BUSINESS BASIC >>                <<31985>>28720000
$EDIT VOID=28725000                                                     28725000
,1258     << PFSTA >>                                          <<01336>>28730000
$EDIT VOID=28740000                                                     28740000
<< 1257,1260-1264: RESERVED FOR PATHFLOW >>                    <<01336>>28745000
,1270     << RFDCA >>                                          <<01336>>28751000
,1271     << FFDCA >>                                          <<01336>>28752000
,1272     << DIU   >>                                          <<01336>>28753000
,1273     << PDOC  >>                                          <<01336>>28754000
,1275     << DIF   >>                                          <<31985>>28754100
,1276     << SRI   >>                                          <<31985>>28754200
,1421     << MAP   >>                                          <<01336>>28761000
,1422     << GAL   >>                                          <<01336>>28761100
,1425     << TTX   >>                                          <<01336>>28762000
,1428     << RDIC  >>                                          <<31985>>28762100
,1429     << RSPEC >>                                          <<31985>>28762200
,1430     << RSPCF >>                                          <<31985>>28762300
,1431     << REXEC >>                                          <<31985>>28762400
,1432     << RJOB  >>                                          <<31985>>28762500
,1433     << ROUTI >>                                          <<31985>>28762600
,1434     << ROUTD >>                                          <<31985>>28762700
,1435     << PRINT >>                                          <<31985>>28762800
,1436     << RCONF >>                                          <<31985>>28762900
<< 1437-1440 reserved for HP Business Report Writer >>         <<31985>>28763000
,1441     << PIF   >>                                          <<31985>>28763100
<< 1442, 1443 reserved for AGL project >>                      <<31985>>28763200
<< 1446-1460 reserved for HPDESK       >>                      <<31985>>28763300
,1461     << NMOBJ >>                                          <<31985>>28763400
,1462     << PASLB >>                                          <<31985>>28763500
<< 1463-1465 reserved for CLL          >>                      <<31985>>28763600
     FCLOSE(FNUM, FCLOSE'FOPTIONS, 0);                         <<01553>>34991000
     IF <> THEN                                                <<01553>>34992000
        FERROR'(FNUM,PARMNUM);                                 <<01553>>34995000
     CIERR(ERRNUM := LISTFFSERR,LISTFILE,%10000,PARMNUM);      <<01553>>35000000
     RETURN                                                    <<01553>>35005000
$CONTROL SEGMENT=CIPREPRUN                                     <<R1621>>35540100
PROCEDURE CXAUTOALLOCATE EXECUTORHEAD;                         <<R1621>>35540200
   OPTION PRIVILEGED,UNCALLABLE;                               <<R1621>>35540300
BEGIN                                                          <<R1621>>35540400
  DOUBLE ARRAY PARMS(0:1) = Q;                                 <<R1621>>35540500
  BYTE POINTER BPARM = PARMS;                                  <<R1621>>35540600
  BYTE BPARMLEN = PARMS + 1;                                   <<R1621>>35540700
  BYTE POINTER EXTRAPARM = PARMS + 2;                          <<R1621>>35540800
  EQUATE AUTOALLOC'ERR = 1649;                                 <<R1621>>35540900
  DOUBLE DDL:=[8/",",8/";",16/%6400]D;                         <<R1621>>35541000
  BYTE ARRAY DL(*) = DDL;                                      <<R1621>>35541100
  INTEGER NUMPARMS;                                            <<R1621>>35541200
                                                               <<R1621>>35541300
  MYCOMMAND(PARMSP,DL,2,NUMPARMS,PARMS);                       <<R1621>>35541400
  IF NUMPARMS = 0 THEN               <<NOT ENOUGH PARMS>>      <<R1621>>35541500
     BEGIN                                                     <<R1621>>35541600
     PARMNUM := 1;                                             <<R1621>>35541700
     CIERR(ERRNUM := AUTOALLOC'ERR,PARMSP(1));                 <<R1621>>35541800
     END                                                       <<R1621>>35541900
  ELSE IF NUMPARMS > 1 THEN          <<TO MANY PARMS   >>      <<R1621>>35542000
     BEGIN                                                     <<R1621>>35542100
     PARMNUM := 2;                                             <<R1621>>35542200
     CIERR(ERRNUM := AUTOALLOC'ERR,EXTRAPARM);                 <<R1621>>35542300
     END                                                       <<R1621>>35542400
  ELSE IF (BPARMLEN=2) AND (BPARM="ON")  THEN                  <<R1621>>35542500
     BEGIN                                                     <<R1621>>35542600
     AUTOALLOC'ON;                                             <<R1621>>35542700
     END                                                       <<R1621>>35542800
  ELSE IF (BPARMLEN=3) AND (BPARM="OFF") THEN                  <<R1621>>35542900
     BEGIN                                                     <<R1621>>35543000
     AUTOALLOC'OFF;                                            <<R1621>>35543100
     END                                                       <<R1621>>35543200
  ELSE                                                         <<R1621>>35543300
     BEGIN  <<BPARMLEN = 2 OR 3 BUT NOT "ON" OR "OFF">>        <<R1621>>35543400
     PARMNUM := 1;                                             <<R1621>>35543500
     CIERR(ERRNUM := AUTOALLOC'ERR,BPARM);                     <<R1621>>35543600
     END;                                                      <<R1621>>35543700
END; <<CXAUTOALLOCATE>>                                        <<R1621>>35543800
$PAGE                                                          <<S1838>>35546000
$CONTROL SEGMENT=CIPREPRUN                                     <<S1838>>35546010
<<----------------------------------------------------------->><<S1838>>35546020
<<CXSHOWALLOCATE - 1/18/86                                   >><<S1838>>35546030
<<                                                           >><<S1838>>35546040
<<SYNTAX OF SHOWALLOCATE                                     >><<S1838>>35546050
<<   SHOWALLOCATE   STATUS     ,   LISTFILE                  >><<S1838>>35546060
<<                  AUTO      \                              >><<S1838>>35546070
<<                  ALLOCATE  |->  FILESET  , LISTFILE       >><<S1838>>35546080
<<                  ALL       /                              >><<S1838>>35546090
<<                                                           >><<S1838>>35546100
<<   Default parameters:  ALL,@.@.@,$STDLIST                 >><<S1838>>35546110
<<                                                           >><<S1838>>35546120
<<                                                           >><<S1838>>35546130
<<PURPOSE                                                    >><<S1838>>35546140
<<  To do syntax checking on the first parameter.  To format >><<S1838>>35546150
<<  and do syntax checking on the file set.  This routine    >><<S1838>>35546160
<<  calls CIBADFILENAME to do the syntax checking on the     >><<S1838>>35546170
<<  list file.  If everything went OK the list file is       >><<S1838>>35546180
<<  opened and control is passed to SHOWALLOCATE which       >><<S1838>>35546190
<<  resides in LOADER1.  If everything did not go OK then the>><<S1838>>35546200
<<  CIERR message is outputted.  Note, on the list file the  >><<S1838>>35546210
<<  routine CIBADFILENAME takes care of outputting the errror>><<S1838>>35546220
<<  message.                                                 >><<S1838>>35546230
<<----------------------------------------------------------->><<S1838>>35546240
PROCEDURE CXSHOWALLOCATE EXECUTORHEAD;                         <<S1838>>35546250
    OPTION PRIVILEGED, UNCALLABLE;                             <<U2239>>35546260
                                                               <<S1838>>35546270
BEGIN                                                          <<S1838>>35546280
                                                               <<S1838>>35546290
  INTEGER DELIMITERS := %26015;  <<' ,CR '>>                   <<S1838>>35546300
  BYTE ARRAY DELIMITERS'B(*) = DELIMITERS;                     <<S1838>>35546310
                                                               <<S1838>>35546320
  EQUATE MAXPARMS            = 3, <<MAX. NUMBER OF PARMAETERS>><<S1838>>35546330
         MAXPARMS'STATUS     = 2,                              <<S1838>>35546340
                                                               <<S1838>>35546350
       <<EQUATES FOR THE DIFFERENT SHOWALLOCATE OPTIONS>>      <<S1838>>35546360
         STATUS              = 0,                              <<S1838>>35546370
         ALLOCATE            = 1,                              <<S1838>>35546380
         AUTOALLOCATE        = 2,                              <<S1838>>35546390
         ALL                 = 3,                              <<S1838>>35546400
                                                               <<S1838>>35546410
         INVALID'SHOWAOPTION = 1350,  <<CIERR NUMBERS>>        <<S1838>>35546420
                                                               <<S1838>>35546430
         LISTFILE'NOOPEN     = 1495,                           <<S1838>>35546440
         EXTRAPARM'ERR       = 1351,                           <<S1838>>35546450
                                                               <<S1838>>35546460
      <<----------------------------------------------------->><<S1838>>35546470
      << The following equates for CIERR numbers are for     >><<S1838>>35546480
      <<  file,group and account name errors.  This procedure>><<S1838>>35546490
      <<  uses these error messages when it it parsing the   >><<S1838>>35546500
      <<  file set.  Notice that the error messages for the  >><<S1838>>35546510
      <<  group name are 10 apart from the file name errors. >><<S1838>>35546520
      <<  Also that the account name error messages are 10   >><<S1838>>35546530
      <<  apart from the group name.  This makes for easy    >><<S1838>>35546540
      <<  calculation of the group and account error numbers.>><<S1838>>35546550
      <<  (ie. file name missing would be 0*10+530.          >><<S1838>>35546560
      <<       group name missing would be 1*10+530   etc.)  >><<S1838>>35546570
      <<                                                     >><<S1838>>35546580
      <<EX.   CIERR 530 - ILLEGAL FIRST CHAR FOR FILE NAME   >><<S1838>>35546590
      <<      CIERR 531 - FILE NAME MISSING                  >><<S1838>>35546600
      <<      CIERR 540 - ILLEGAL FIRST CHAR FOR GROUP NAME  >><<S1838>>35546610
      <<      CIERR 541 - GROUP NAME MISSING                 >><<S1838>>35546620
      <<      CIERR 550 - ILLEGAL FIRST CHAR FOR ACCOUNT NAME>><<S1838>>35546630
      <<      CIERR 551 - ACCOUNT NAME MISSING               >><<S1838>>35546640
      <<----------------------------------------------------->><<S1838>>35546650
                                                               <<S1838>>35546660
         ILLEGAL'FN'1STCHAR  = 530,                            <<S1838>>35546670
         FILE'NAME'MISSING   = 531,                            <<S1838>>35546680
         EXTRA'FN'CHAR       = 532,                            <<S1838>>35546690
         ILLEGAL'FN'CHAR     = 534,                            <<S1838>>35546700
         ILLEGAL'GN'CHAR     = 544,                            <<S1838>>35546710
         ILLEGAL'AN'CHAR     = 554,                            <<S1838>>35546720
                                                               <<S1838>>35546730
         <<equates used in calculating error numbers.>>        <<S1838>>35546740
         NAME'SIZE           = 8,                              <<S1838>>35546750
         ERROR'NUMB'INTVL    = 10,                             <<S1838>>35546760
                                                               <<S1838>>35546770
         GROUP'NAME'OFFSET   = 8,                              <<S1838>>35546780
         ACCT'NAME'OFFSET    = 16;                             <<S1838>>35546790
                                                               <<S1838>>35546800
  INTEGER NUMPARMS;            <<PARAMETER FOR 'MYCOMMAND'   >><<S1838>>35546810
  INTEGER SHOWA'OPTION := ALL; <<DEFAULT VALUE               >><<S1838>>35546820
  INTEGER LIST'FNUM    := 2;   <<DEFAULT TO $STDLIST         >><<S1838>>35546830
  INTEGER FROM'INDEX,          <<USED TO FORMAT THE FILESET  >><<S1838>>35546840
          TO'INDEX,         <<  FROM IS FROM THE INPUT BUFFER>><<S1838>>35546850
          NAME'CHAR'COUNT;  <<  TO IS TO THE FILESET BUFFER  >><<S1838>>35546860
                                                               <<S1838>>35546870
  LOGICAL INSERT'ATSIGN:=FALSE;  <<USED TO FORMAT THE FILESET>><<S1838>>35546880
                                                               <<S1838>>35546890
  <<------------------------------------------------------->>  <<S1838>>35546900
  <<SHOWA'FILESET                                          >>  <<S1838>>35546910
  << Is a buffer to format the file set to be passed to the>>  <<S1838>>35546920
  << SHOWALLOATE routine.  It is just a 24 byte array.     >>  <<S1838>>35546930
  << 8 for the file 8 for group and 8 for the account name >>  <<S1838>>35546940
  << Each name is blank filled.                            >>  <<S1838>>35546950
  << ie.    012345670123456701234567                       >>  <<S1838>>35546960
  <<        TDP     PUB     SYS                            >>  <<S1838>>35546970
  <<------------------------------------------------------->>  <<S1838>>35546980
  BYTE ARRAY SHOWA'FILESET(0:24)=Q;  <<BUFFER FOR FILESET    >><<S1838>>35546990
                                                               <<S1838>>35547000
  DOUBLE ARRAY PARMS(0:MAXPARMS) = Q;<<PARAM FOR 'MYCOMMAND' >><<S1838>>35547010
  INTEGER ARRAY PARMS'I (*) = PARMS;                           <<S1838>>35547020
                                                               <<S1838>>35547030
                                                               <<S1838>>35547040
  BYTE POINTER SHOWAOPT'NAME = PARMS;                          <<S1838>>35547050
  BYTE         SHOWAOPT'LEN  = PARMS + 1;                      <<S1838>>35547060
  BYTE POINTER PARM2'NAME    = PARMS + 2;                      <<S1838>>35547070
  BYTE         PARM2'LEN     = PARMS + 3;                      <<S1838>>35547080
  BYTE POINTER PARM3'NAME    = PARMS + 4;                      <<S1838>>35547090
  BYTE         PARM3'LEN     = PARMS + 5;                      <<S1838>>35547100
  BYTE POINTER PARM4'NAME    = PARMS + 6;                      <<S1838>>35547110
                                                               <<S1838>>35547120
<<------------------------------------------------------->>    <<S1838>>35547130
<<The following descriptors are local variables which    >>    <<S1838>>35547140
<< take on values from the PARMS array returned by       >>    <<S1838>>35547150
<< 'MYCOMMAND' to describe the fileset and listfile      >>    <<S1838>>35547160
<< parameters.  This is done because on the status option>>    <<S1838>>35547170
<< the listfile is the second parameter; there is no     >>    <<S1838>>35547180
<< fileset parameter.  On all the other options the      >>    <<S1838>>35547190
<< second parameter is the fileset and the third is the  >>    <<S1838>>35547200
<< listfile.                                             >>    <<S1838>>35547210
<<------------------------------------------------------->>    <<S1838>>35547220
  DOUBLE LISTFILE'DESCRIPTOR;                                  <<S1838>>35547230
  BYTE POINTER LISTFILE'NAME = LISTFILE'DESCRIPTOR;            <<S1838>>35547240
  BYTE         LISTFILE'LEN  = LISTFILE'DESCRIPTOR + 1;        <<S1838>>35547250
                                                               <<S1838>>35547260
  DOUBLE FILESET'DESCRIPTOR;                                   <<S1838>>35547310
  BYTE POINTER FILESET'NAME  = FILESET'DESCRIPTOR;             <<S1838>>35547320
  BYTE         FILESET'LEN   = FILESET'DESCRIPTOR + 1;         <<S1838>>35547330
                                                               <<S1838>>35547340
                                                               <<S1838>>35547350
                                                               <<S1838>>35547360
  BYTE POINTER FILESET'ERRPTR; <<WHERE ERRNUM OCCURED IN  >>   <<S1838>>35547370
                               << THE FILESET.           >>    <<S1838>>35547380
$PAGE                                                          <<S1838>>35547390
<<***********************************************************>><<S1838>>35547400
<< SUBROUTINE:  CHECK'FILESET                                >><<S1838>>35547410
<<                                                          >> <<S1838>>35547420
<< This is a general procedure which parses a byte array    >> <<S1838>>35547430
<< pointed to by FILESET'NAME containing a fileset passed   >> <<S1838>>35547440
<< in by the user.  FILESET'LEN is a BYTE containing the    >> <<S1838>>35547450
<< length of this array.  The fileset is parsed and formated>> <<S1838>>35547460
<< into the byte array SHOWA'FILESET in a format which is   >> <<S1838>>35547470
<< easy to use with the routine DIRMATCH.  That is all cases>> <<S1838>>35547480
<< of multple @ are condensed down to 1 occurrence of it.   >> <<S1838>>35547490
<< All occurences of the string "@?" is changed to "?@" as  >> <<S1838>>35547500
<< required by the routine DIRMATCH.  On occurence of an    >> <<S1838>>35547510
<< error the CIERR number is placed into the variable       >> <<S1838>>35547520
<< ERRNUM.                                                  >> <<S1838>>35547530
<<                                                          >> <<S1838>>35547540
<< Error number calculation used below:                     >> <<S1838>>35547550
<<   Because of the format of the SHOWA'FILESET buffer the  >> <<S1838>>35547560
<<   TO'INDEX can be divided by 8 to determine if you are   >> <<S1838>>35547570
<<   currently manipulating the file, group or account name.>> <<S1838>>35547580
<<   (ie. 7/8 = 0  -> error in the file name   )            >> <<S1838>>35547590
<<   (    12/8= 1  -> error in the group name  )            >> <<S1838>>35547600
<<   (    18/8= 2  -> error in the account name)            >> <<S1838>>35547610
<<                                                          >> <<S1838>>35547620
<<   Also because of the ordering of the file, group and    >> <<S1838>>35547630
<<   account error messages one can take 10 and multiply it >> <<S1838>>35547640
<<   by the result of the above division to result in the   >> <<S1838>>35547650
<<   offset into the file, group and account error messages >> <<S1838>>35547660
<<   which is desired.  Then the error number of the        >> <<S1838>>35547670
<<   particular error for the file name is added to this    >> <<S1838>>35547680
<<   offset to result in the final error number which       >> <<S1838>>35547690
<<   occured.                                               >> <<S1838>>35547700
<<                                                          >> <<S1838>>35547710
<<                                                          >> <<S1838>>35547720
<<***********************************************************>><<S1838>>35547730
SUBROUTINE CHECK'FILESET;                                      <<S1838>>35547740
  BEGIN                                                        <<S1838>>35547750
  NAME'CHAR'COUNT := 0;                                        <<S1838>>35547760
  FROM'INDEX := 0;                                             <<S1838>>35547770
  TO'INDEX:=0;                                                 <<S1838>>35547780
                                                               <<S1838>>35547790
  WHILE (FROM'INDEX < INTEGER(FILESET'LEN)) AND (ERRNUM=0) DO  <<S1838>>35547800
    BEGIN                                                      <<S1838>>35547810
    IF FILESET'NAME(FROM'INDEX) = SPECIAL  THEN                <<S1838>>35547820
      BEGIN                                                    <<S1838>>35547830
      IF (NAME'CHAR'COUNT = 0) AND         <<FIRST CHARACTER>> <<S1838>>35547840
         (FILESET'NAME(FROM'INDEX) <> "@") AND                 <<S1838>>35547850
         (FILESET'NAME(FROM'INDEX) <> "?") AND                 <<S1838>>35547860
         (FILESET'NAME(FROM'INDEX) <> ".")                     <<S1838>>35547870
        THEN ERRNUM := (TO'INDEX / NAME'SIZE) *                <<S1838>>35547880
                        ERROR'NUMB'INTVL + ILLEGAL'FN'1STCHAR; <<S1838>>35547890
                                                               <<S1838>>35547900
                                                               <<S1838>>35547910
      IF (NAME'CHAR'COUNT > 0) AND       <<NOT FIRST CHAR >>   <<S1838>>35547920
         (FILESET'NAME(FROM'INDEX) <> "#") AND                 <<S1838>>35547930
         (FILESET'NAME(FROM'INDEX) <> "@") AND                 <<S1838>>35547940
         (FILESET'NAME(FROM'INDEX) <> "?") AND                 <<S1838>>35547950
         (FILESET'NAME(FROM'INDEX) <> ".")                     <<S1838>>35547960
                                                               <<S1838>>35547970
        <<ILLEGAL CHARACTER.  NOW MUST DETERMINE IF IT IS IN>> <<S1838>>35547980
        <<THE FILE NAME, GROUP NAME, ACCOUNT NAME.          >> <<S1838>>35547990
        THEN IF (TO'INDEX < GROUP'NAME'OFFSET)                 <<S1838>>35548000
               THEN ERRNUM:=ILLEGAL'FN'CHAR                    <<S1838>>35548010
             ELSE IF (TO'INDEX < ACCT'NAME'OFFSET)             <<S1838>>35548020
               THEN ERRNUM:=ILLEGAL'GN'CHAR                    <<S1838>>35548030
             ELSE ERRNUM:= ILLEGAL'AN'CHAR;                    <<S1838>>35548040
                                                               <<S1838>>35548050
                                                               <<S1838>>35548060
      <<CONDENSE MULTIPLE "@@@@" TO A SINGLE "@">>             <<S1838>>35548070
                                                               <<S1838>>35548080
      WHILE (FILESET'NAME(FROM'INDEX) = "@") AND (ERRNUM = 0)  <<S1838>>35548090
           AND ((FILESET'NAME(FROM'INDEX+1) = "@")             <<S1838>>35548100
                  LOR INSERT'ATSIGN)                           <<S1838>>35548110
        DO FROM'INDEX := FROM'INDEX + 1;                       <<S1838>>35548120
                                                               <<S1838>>35548130
                                                               <<S1838>>35548140
                                                               <<S1838>>35548150
      <<SWITCH ALL "@?" TO "?@" FOR THE ROUTINE DIRMATCH>>     <<S1838>>35548160
                                                               <<S1838>>35548170
      IF (FILESET'NAME(FROM'INDEX) = "@") AND                  <<S1838>>35548180
         (FILESET'NAME(FROM'INDEX+1) = "?") AND                <<S1838>>35548190
         (ERRNUM = 0) THEN                                     <<S1838>>35548200
        BEGIN                                                  <<S1838>>35548210
        INSERT'ATSIGN:=TRUE;                                   <<S1838>>35548220
        FROM'INDEX := FROM'INDEX + 1;                          <<S1838>>35548230
        END;                                                   <<S1838>>35548240
                                                               <<S1838>>35548250
                                                               <<S1838>>35548260
                                                               <<S1838>>35548270
      END; <<THEN (FILESET'NAME(FROM'INDEX) = SPECIAL)>>       <<S1838>>35548280
                                                               <<S1838>>35548290
    IF (NAME'CHAR'COUNT = 0) AND                               <<S1838>>35548300
       (FILESET'NAME(FROM'INDEX) = NUMERIC)                    <<S1838>>35548310
      THEN ERRNUM:=(TO'INDEX / NAME'SIZE) *                    <<S1838>>35548320
                     ERROR'NUMB'INTVL + ILLEGAL'FN'1STCHAR;    <<S1838>>35548330
                                                               <<S1838>>35548340
                                                               <<S1838>>35548350
    IF INSERT'ATSIGN AND (ERRNUM=0) AND                        <<S1838>>35548360
       (FILESET'NAME(FROM'INDEX) <> "?") THEN                  <<S1838>>35548370
      BEGIN                                                    <<S1838>>35548380
      SHOWA'FILESET(TO'INDEX) := "@";                          <<S1838>>35548390
      TO'INDEX := TO'INDEX + 1;                                <<S1838>>35548400
      NAME'CHAR'COUNT:=NAME'CHAR'COUNT + 1;                    <<S1838>>35548410
      INSERT'ATSIGN := FALSE;                                  <<S1838>>35548420
      END;                                                     <<S1838>>35548430
                                                               <<S1838>>35548440
                                                               <<S1838>>35548450
    <<IF CHAR. IS A "." START TO'INDEX AT >>                   <<S1838>>35548460
    << AT GROUP OR ACCOUNT OFFSET         >>                   <<S1838>>35548470
                                                               <<S1838>>35548480
    IF (FILESET'NAME(FROM'INDEX) = ".") AND (ERRNUM=0) THEN    <<S1838>>35548490
      BEGIN                                                    <<S1838>>35548500
      IF (NAME'CHAR'COUNT = 0)                                 <<S1838>>35548510
        THEN ERRNUM:=(TO'INDEX / NAME'SIZE) *                  <<S1838>>35548520
                      ERROR'NUMB'INTVL + FILE'NAME'MISSING     <<S1838>>35548530
                                                               <<S1838>>35548540
  <<IS THERE AN EXTRA PERIOD. ie(AB.DC.DKK.KDKD)     >>        <<S1838>>35548550
      ELSE IF (TO'INDEX > ACCT'NAME'OFFSET)                    <<S1838>>35548560
        THEN ERRNUM := ILLEGAL'AN'CHAR                         <<S1838>>35548570
                                                               <<S1838>>35548580
  <<IS THE PERIOD THE LAST CHAR OF THE COMMAND IMMAGE>>        <<S1838>>35548590
  << ie (ABCD.DKD.)                                  >>        <<S1838>>35548600
      ELSE IF (FROM'INDEX >= (INTEGER(FILESET'LEN)-1))         <<S1838>>35548610
        THEN ERRNUM := (TO'INDEX+1)/ NAME'SIZE *               <<S1838>>35548620
                        ERROR'NUMB'INTVL + FILE'NAME'MISSING;  <<S1838>>35548630
                                                               <<S1838>>35548640
      IF (TO'INDEX <= GROUP'NAME'OFFSET)                       <<S1838>>35548650
        THEN TO'INDEX := GROUP'NAME'OFFSET                     <<S1838>>35548660
        ELSE TO'INDEX := ACCT'NAME'OFFSET;                     <<S1838>>35548670
                                                               <<S1838>>35548680
      NAME'CHAR'COUNT := 0;                                    <<S1838>>35548690
      END                                                      <<S1838>>35548700
                                                               <<S1838>>35548710
                                                               <<S1838>>35548720
    ELSE  <<   FILESET'NAME(FROM'INDEX) <> "."    >>           <<S1838>>35548730
      IF (ERRNUM = 0) AND (FROM'INDEX < INTEGER(FILESET'LEN))  <<S1838>>35548740
        THEN BEGIN                                             <<S1838>>35548750
        SHOWA'FILESET(TO'INDEX):=FILESET'NAME(FROM'INDEX);     <<S1838>>35548760
        TO'INDEX := TO'INDEX + 1;                              <<S1838>>35548770
                                                               <<S1838>>35548780
        NAME'CHAR'COUNT := NAME'CHAR'COUNT + 1;                <<S1838>>35548790
        END;                                                   <<S1838>>35548800
                                                               <<S1838>>35548810
                                                               <<S1838>>35548820
    IF (NAME'CHAR'COUNT > 8)                                   <<S1838>>35548830
      THEN ERRNUM:=((TO'INDEX-2)/ NAME'SIZE) *                 <<S1838>>35548840
                    ERROR'NUMB'INTVL + EXTRA'FN'CHAR;          <<S1838>>35548850
                                                               <<S1838>>35548860
    IF (ERRNUM = 0)                                            <<S1838>>35548870
      THEN FROM'INDEX:=FROM'INDEX + 1;                         <<S1838>>35548880
    END; <<WHILE>>                                             <<S1838>>35548890
                                                               <<S1838>>35548900
                                                               <<S1838>>35548910
  <<THE FOLLOWING WILL BE TRUE ONLY IF A SEQUENCE OF @? >>     <<S1838>>35548920
  <<EXISTED IN THE COMMAND IMAGE AND A ? IS THE LAST    >>     <<S1838>>35548930
  <<CHAR OF THE COMMAND IMAGE.                          >>     <<S1838>>35548940
                                                               <<S1838>>35548950
  IF INSERT'ATSIGN                                             <<S1838>>35548960
    THEN SHOWA'FILESET(TO'INDEX) := "@";                       <<S1838>>35548970
                                                               <<S1838>>35548980
  @FILESET'ERRPTR := @FILESET'NAME(FROM'INDEX);                <<S1838>>35548990
                                                               <<S1838>>35549000
  END; <<CHECK'FILESET>>                                       <<S1838>>35549010
$PAGE                                                          <<S1838>>35549020
<<***********************************************************>><<S1838>>35549030
<<               START OF CXSHOWALLOCATE PROCEDURE BODY      >><<S1838>>35549040
<<***********************************************************>><<S1838>>35549050
                                                               <<S1838>>35549060
  PARMS'I:=0;                                                  <<S1838>>35549070
  MOVE PARMS'I(1):=PARMS'I,(MAXPARMS*2);                       <<S1838>>35549080
                                                               <<S1838>>35549090
  ERRNUM := 0;                                                 <<S1838>>35549100
  MOVE SHOWA'FILESET :="@       @       @       ";             <<S1838>>35549110
                                                               <<S1838>>35549120
                                                               <<S1838>>35549130
  MYCOMMAND(PARMSP,DELIMITERS'B,MAXPARMS,NUMPARMS,PARMS);      <<S1838>>35549140
  IF > THEN CIERR(ERRNUM:=EXTRAPARM'ERR,PARM4'NAME);           <<S1838>>35549150
                                                               <<S1838>>35549160
                                                               <<S1838>>35549170
  FILESET'DESCRIPTOR:=PARMS(1);  <<DEFAULT DESCRIPTORS>>       <<S1838>>35549180
  LISTFILE'DESCRIPTOR:=PARMS(2);                               <<S1838>>35549190
  IF (NUMPARMS > 0)  THEN                                      <<S1838>>35549200
    BEGIN                                                      <<S1838>>35549210
    IF (SHOWAOPT'LEN > 0) THEN                                 <<S1838>>35549220
      BEGIN                                                    <<S1838>>35549230
      IF (SHOWAOPT'NAME = "STATUS") AND (SHOWAOPT'LEN=6) THEN  <<S1838>>35549240
        BEGIN                                                  <<S1838>>35549250
        FILESET'DESCRIPTOR := 0D;   <<NO FILESET ALLOWED ON  >><<S1838>>35549260
                                    << THIS OPTION.          >><<S1838>>35549270
        LISTFILE'DESCRIPTOR := PARMS(1);                       <<S1838>>35549280
        SHOWA'OPTION := STATUS;                                <<S1838>>35549290
                                                               <<S1838>>35549300
        IF (NUMPARMS > MAXPARMS'STATUS)                        <<S1838>>35549310
          THEN CIERR(ERRNUM:=EXTRAPARM'ERR,PARM3'NAME);        <<S1838>>35549320
        END  <<THEN SHOWAOPT'NAME = "STATUS">>                 <<S1838>>35549330
      ELSE                                                     <<S1838>>35549340
        BEGIN                                                  <<S1838>>35549350
                                                               <<S1838>>35549360
        IF (SHOWAOPT'NAME = "ALLOCATE") AND (SHOWAOPT'LEN = 8) <<S1838>>35549370
          THEN SHOWA'OPTION := ALLOCATE                        <<S1838>>35549380
        ELSE IF (SHOWAOPT'NAME = "AUTO") AND (SHOWAOPT'LEN = 4)<<S1838>>35549390
          THEN SHOWA'OPTION := AUTOALLOCATE                    <<S1838>>35549400
        ELSE IF (SHOWAOPT'NAME = "ALL") AND (SHOWAOPT'LEN = 3) <<S1838>>35549410
          THEN SHOWA'OPTION := ALL                             <<S1838>>35549420
        ELSE                                                   <<S1838>>35549430
          CIERR(ERRNUM := INVALID'SHOWAOPTION,SHOWAOPT'NAME);  <<S1838>>35549440
        END; <<ELSE SHOWAOPT'NAME = "STATUS">>                 <<S1838>>35549450
      END; <<THEN SHOWAOPT'LEN > 0>>                           <<S1838>>35549460
                                                               <<S1838>>35549470
                                                               <<S1838>>35549480
    IF (INTEGER(FILESET'LEN) > 0) AND (ERRNUM = 0) THEN        <<S1838>>35549490
      BEGIN                                                    <<S1838>>35549500
      CHECK'FILESET;                                           <<S1838>>35549510
      IF (ERRNUM <> 0)                                         <<S1838>>35549520
        THEN CIERR(ERRNUM,FILESET'ERRPTR);                     <<S1838>>35549530
      END; <<FILESET'LEN>0>>                                   <<S1838>>35549540
                                                               <<S1838>>35549550
    IF (LISTFILE'LEN > 0) AND (ERRNUM =0) THEN                 <<S1838>>35549560
      BEGIN                                                    <<S1838>>35549570
      IF NOT CIBADFILENAME(ERRNUM,LISTFILE'DESCRIPTOR) THEN    <<S1838>>35549580
        BEGIN                                                  <<S1838>>35549590
        LIST'FNUM:=FOPEN(LISTFILE'NAME,%2504,%101);            <<S1838>>35549600
        IF <>                                                  <<S1838>>35549610
          THEN CIERR(ERRNUM:=LISTFILE'NOOPEN,LISTFILE'NAME);   <<S1838>>35549620
                                                               <<S1838>>35549630
        END; <<THEN NOT CIBADFILENAME>>                        <<S1838>>35549640
      END;  <<THEN LISTFILE'LEN > 0>>                          <<S1838>>35549650
    END; <<NUMPARMS > 0>>                                      <<S1838>>35549660
                                                               <<S1838>>35549670
                                                               <<S1838>>35549680
                                                               <<S1838>>35549690
  IF (ERRNUM = 0)                                              <<S1838>>35549700
    THEN SHOWALLOCATE(LIST'FNUM,SHOWA'FILESET,SHOWA'OPTION);   <<S1838>>35549710
                                                               <<S1838>>35549720
  IF (LIST'FNUM <> 2) THEN                                     <<S1838>>35549730
    BEGIN                                                      <<S1838>>35549740
    FCLOSE(LIST'FNUM,2,0);                                     <<S1838>>35549750
    IF <>                                                      <<S1838>>35549760
      THEN FCLOSE(LIST'FNUM,0,0);                              <<S1838>>35549770
    END;                                                       <<S1838>>35549780
                                                               <<S1838>>35549790
END; <<CXSHOWALLOCATE>>                                        <<S1838>>35549800
                                                               <<S1838>>35549810
      ENTRY CXFTN,CXFTNPREP,CXFTNGO;                           << 9854>>40576000
CXFTN:                                                         << 9854>>41890100
      TOS := 0;                                                << 9854>>41890200
      GOTO PREFTN;                                             << 9854>>41890300
CXFTNPREP:                                                     << 9854>>41890400
      TOS := 1;                                                << 9854>>41890500
      GOTO PREFTN;                                             << 9854>>41890600
CXFTNGO:                                                       << 9854>>41890700
      TOS := 2;                                                << 9854>>41890800
PREFTN:                                                        << 9854>>41890900
      MOVE SYSFILENAME := "FTN.PUB.SYS ";  << FORTRAN 77 >>    << 9854>>41891000
      MOVE BUILDNAME := FTNNAME, (3);                          << 9854>>41891100
      << BOTH FORTRAN AND FTN (FORTRAN 77) USE THE SAME  >>    << 9854>>41891200
      << FORMAL FILE DESIGNATORS, THATS THE WAY THEY     >>    << 9854>>41891300
      << WANTED IT.                                      >>    << 9854>>41891400
      MAXPARMS := 4;  << NO NEW, NO MASTER >>                  << 9854>>41891500
      GOTO PROCESS;                                            << 9854>>41891600
            XREMJTENTRY(FNAME,BLANK,BLANK,BLANK,3)             <<09723>>43360000
            XREMJTENTRY(FNAME,BLANK,BLANK,BLANK,3)             <<09723>>43385000
PROCEDURE CXBBASIC EXECUTORHEAD;                                        43745010
  OPTION PRIVILEGED, UNCALLABLE;                                        43745020
  BEGIN << CXBBASIC >>                                                  43745030
    EQUATE SPECIFIED = 1,                                               43745040
           MAXPARMS = 4;                                                43745050
    LOGICAL DELIMITERS := %26015; << , CR >>                            43745060
    INTEGER NUMPARMS;                                                   43745070
    DOUBLE ARRAY PARMS(0:MAXPARMS);                                     43745080
    LBPARMDECS;                                                         43745090
    BYTE ARRAY BBCOM(0:6) = PB := "BASCOM ";                            43745100
    BYTE ARRAY BBINPT(0:6) = PB := "BASIN  ";                           43745110
    BYTE ARRAY BBOUT(0:6) = PB := "BASOUT ";                            43745120
    BYTE ARRAY FNAME(0:6);                                              43745130
    BYTE POINTER FILEREF;                                               43745140
    INTEGER LENGTH,                                                     43745150
            PARMCNT := 0;                                               43745160
    LOGICAL PIN,                                                        43745170
            PARM := 0;                                                  43745180
    BYTE ARRAY SYSFILENAME(0:12);                                       43745190
    BYTE BLANK := " ";                                                  43745200
    DEFINE COMFILE = PARM.(15:1)#,                                      43745210
           INPTFILE = PARM.(14:1)#,                                     43745220
           OUTFILE = PARM.(13:1)#;                                      43745230
                                                                        43745240
  SUBROUTINE CLEANUP;                                                   43745250
  BEGIN                                                                 43745260
    IF (COMFILE = SPECIFIED) THEN                                       43745270
      BEGIN                                                             43745280
        MOVE FNAME := BBCOM, (7);                                       43745290
        XREMJTENTRY(FNAME, BLANK, BLANK, BLANK, 3)                      43745300
      END;                                                              43745310
    IF (INPTFILE = SPECIFIED) THEN                                      43745320
      BEGIN                                                             43745330
        MOVE FNAME := BBINPT, (7);                                      43745340
        XREMJTENTRY(FNAME, BLANK, BLANK, BLANK, 3)                      43745350
      END;                                                              43745360
    IF (OUTFILE = SPECIFIED) THEN                                       43745370
      BEGIN                                                             43745380
        MOVE FNAME := BBOUT, (7);                                       43745390
        XREMJTENTRY(FNAME, BLANK, BLANK, BLANK, 3)                      43745400
      END;                                                              43745410
  END; << CLEANUP >>                                                    43745420
                                                                        43745430
  SUBROUTINE BLDIMPFILE;                                                43745440
  BEGIN                                                                 43745450
    ERRNUM := CYIMPLCTFILE'(FNAME, FILEREF, LENGTH);                    43745460
    IF <> THEN                                                          43745470
      BEGIN                                                             43745480
        CLEANUP;                                                        43745490
        PARMNUM := PARMCNT;  << PARAMETER WHERE ERROR FOUND >>          43745500
        ASSEMBLE (EXIT 3)    << EXIT OUT OF THIS EXECUTOR   >>          43745510
      END;                                                              43745520
  END; << BLDIMPFILE >>                                                 43745530
                                                                        43745540
                                                                        43745550
  << MAIN BODY >>                                                       43745560
  MOVE SYSFILENAME := "HPBB.PUB.SYS ";                                  43745570
  MYCOMMAND(PARMSP, DELIMITERS, MAXPARMS, NUMPARMS, PARMS);             43745580
  IF (NUMPARMS >= MAXPARMS) THEN                                        43745590
    BEGIN << TOO MANY PARAMETERS >>                                     43745600
      PARMNUM := MAXPARMS;                                              43745610
      TOS := ERRNUM := SUBS2MP;                                         43745620
      TOS := LPARM(6);  << POINTER TO EXTRA PARAMETER >>                43745630
      CIERR(*, *, %10000, 3);  << SIGNAL ERROR-ONLY 3 PARMS ALLOWED >>  43745640
      RETURN                                                            43745650
    END;                                                                43745660
                                                                        43745670
  << PROCESS THE PARAMETERS >>                                          43745680
  WHILE PARMCNT < NUMPARMS DO                                           43745690
    BEGIN  << PROCESS PARAMETER LOOP >>                                 43745700
      PARMCNT := PARMCNT + 1;                                           43745710
      LENGTH := BPARM((PARMCNT - 1)* 4 + 2);                            43745720
      IF (LENGTH <> 0) THEN                                             43745730
        CASE PARMCNT OF                                                 43745740
          BEGIN                                                         43745750
            << 0-SHOULDN'T BE HERE>>;                                   43745760
                                                                        43745770
            << 1ST PARAMETER, COMMAND FILE >>                           43745780
            BEGIN                                                       43745790
              MOVE FNAME := BBCOM, (7);                                 43745800
              @FILEREF := LPARM((PARMCNT -1)* 2);                       43745810
              BLDIMPFILE;                                               43745820
              COMFILE := SPECIFIED                                      43745830
            END;                                                        43745840
                                                                        43745850
            << 2ND PARAMETER, INPUT FILE >>                             43745860
            BEGIN                                                       43745870
              MOVE FNAME := BBINPT, (7);                                43745880
              @FILEREF := LPARM((PARMCNT -1)* 2);                       43745890
              BLDIMPFILE;                                               43745900
              INPTFILE := SPECIFIED                                     43745910
            END;                                                        43745920
                                                                        43745930
            << 3RD PARAMETER, OUTPUT FILE >>                            43745940
            BEGIN                                                       43745950
              MOVE FNAME := BBOUT, (7);                                 43745960
              @FILEREF := LPARM((PARMCNT -1)* 2);                       43745970
              BLDIMPFILE;                                               43745980
              OUTFILE := SPECIFIED                                      43745990
            END;                                                        43746000
          END; << CASE PARMCNT >>                                       43746010
    END; << WHILE >>                                                    43746020
                                                                        43746030
  << CREATE THE PROCESS FOR BBASIC >>                                   43746040
  SETJCW(GETJCW LAND % 37777);  << CLEAR JCW ABORT BITS >>              43746050
  TOS := TOS + 0;               << CLEAR CARRY BIT      >>              43746060
  CREATE(SYSFILENAME,,PIN,PARM,1);                                      43746070
  IF CARRY THEN                                                         43746080
    BEGIN                                                               43746090
      CLEANUP;                                                          43746100
      IF CREATEERROR THEN                                               43746110
        CIERR(ERRNUM := BBASICCREATEERR)                                43746120
      ELSE                                                              43746130
        CIERR(ERRNUM := BBASICLOADERR);                                 43746140
      RETURN                                                            43746150
    END;                                                                43746160
  IF < THEN                                                             43746170
    BEGIN << PROGRAM FILE NOT FOUND >>                                  43746180
      CLEANUP;                                                          43746190
      SYSFILENAME(4) := 0;                                              43746200
      CIERR(ERRNUM := SUBSNOTFOUND,,0,@SYSFILENAME);                    43746210
      RETURN                                                            43746220
    END;                                                                43746230
                                                                        43746240
  NEXTLINE; << OUTPUT A BLANK LINE >>                                   43746250
  AWAKE(PIN*PCBSIZE, 1, 2);                                             43746260
                                                                        43746270
  << PROCESS FINISHED, NOW CLEANUP AND PRINT END MESSAGE >>             43746280
  CLEANUP;                                                              43746290
  CISUBSYSFINISH(3, ERRNUM, PARMNUM);                                   43746300
                                                                        43746310
  END; << CXBBASIC >>                                                   43746320
                                                                        43746330
                                                                        43746340
                                                                        43746350
                                                                        43746360
PROCEDURE CXBBASICOMP EXECUTORHEAD;                                     43747000
  OPTION PRIVILEGED, UNCALLABLE;                                        43747010
  BEGIN  << EXECUTOR FOR BBASICOMP, BBASICPREP, BBASICGO >>             43747020
    ENTRY CXBBASICPREP, CXBBASICGO;                                     43747030
                                                                        43747040
    EQUATE SPECIFIED = 1,                                               43747050
           MAXPARMS = 4,                                                43747060
           COMPILE = 0,                                                 43747070
           PREP = 1,                                                    43747080
           GOCMD = 2;                                                   43747090
                                                                        43747100
    LOGICAL DELIMITERS := %26015; << , CR >>                            43747110
    INTEGER NUMPARMS,                                                   43747120
            MPARMS := MAXPARMS;                                         43747130
    DOUBLE ARRAY PARMS(0:MAXPARMS);                                     43747140
    LBPARMDECS;                                                         43747150
    BYTE ARRAY BBCIN(0:7) = PB := "BBCIN   ";                           43747160
    BYTE ARRAY BBCUSL(0:7) = PB := "BBCUSL  ";                          43747170
    BYTE ARRAY BBCLIST(0:7) = PB := "BBCLIST ";                         43747180
    BYTE ARRAY FNAME(0:7);                                              43747190
    BYTE ARRAY PROGFILE(0:26);                                          43747200
    INTEGER ARRAY OPTNUMS(0:12);                                        43747210
    LOGICAL ARRAY OPTNS(0:12);                                          43747220
    BYTE POINTER FILEREF;                                               43747230
    INTEGER LENGTH,                                                     43747240
            SEGERR1,                                                    43747250
            SEGERR2,                                                    43747260
            WHICHFLAG,                                                  43747270
            ERROR,                                                      43747280
            PARMCNT := 0;                                               43747290
    LOGICAL PIN,                                                        43747300
            PARM := 0;                                                  43747310
    LOGICAL PROG'SPECD := FALSE;                                        43747320
    BYTE ARRAY SYSFILENAME(0:26);                                       43747330
    BYTE BLANK := " ";                                                  43747340
    DEFINE INFILE = PARM.(15:1)#,                                       43747350
           USLFILE = PARM.(14:1)#,                                      43747360
           LISTFILE = PARM.(13:1)#;                                     43747370
    DEFINE CHECKSEGERR =                                                43747380
      IF <> AND (SEGERR1 <> 1) THEN << WARNING WAS PRINTED >>           43747390
        BEGIN                                                           43747400
          SEGMENTER(PIN, 8, SEGERR2); << EXIT SEGMENTER >>              43747410
          PARMNUM := SEGERR1;                                           43747420
          CLEANUP;                                                      43747430
          CIERR(ERRNUM := SEGMENTERERROR);                              43747440
          RETURN;                                                       43747450
        END#;                                                           43747460
                                                                        43747470
    SUBROUTINE CLEANUP;                                                 43747480
    BEGIN                                                               43747490
      IF (INFILE = SPECIFIED) THEN                                      43747500
        BEGIN                                                           43747510
          MOVE FNAME := BBCIN, (8);                                     43747520
          XREMJTENTRY(FNAME, BLANK, BLANK, BLANK, 3)                    43747530
        END;                                                            43747540
                                                                        43747550
      IF (USLFILE = SPECIFIED) THEN                                     43747560
        BEGIN                                                           43747570
          MOVE FNAME := BBCUSL, (8);                                    43747580
          XREMJTENTRY(FNAME, BLANK, BLANK, BLANK, 3)                    43747590
        END;                                                            43747600
      IF (LISTFILE = SPECIFIED) THEN                                    43747610
        BEGIN                                                           43747620
          MOVE FNAME := BBCLIST, (8);                                   43747630
          XREMJTENTRY(FNAME, BLANK, BLANK, BLANK, 3)                    43747640
        END;                                                            43747650
    END; << CLEANUP >>                                                  43747660
                                                                        43747670
    SUBROUTINE BLDIMPFILE;                                              43747680
    BEGIN                                                               43747690
      ERRNUM := CYIMPLCTFILE'(FNAME, FILEREF, LENGTH);                  43747700
      IF <> THEN                                                        43747710
        BEGIN                                                           43747720
          CLEANUP;                                                      43747730
          PARMNUM := PARMCNT;  << PARAMETER WHERE ERROR FOUND >>        43747740
          ASSEMBLE (EXIT 3)    << EXIT OUT OF THIS EXECUTOR   >>        43747750
        END;                                                            43747760
    END; << BLDIMPFILE >>                                               43747770
                                                                        43747780
                                                                        43747790
  << MAIN BODY >>                                                       43747800
                                                                        43747810
  WHICHFLAG := COMPILE;                                                 43747820
  GOTO PROCESS;                                                         43747830
CXBBASICPREP:                                                           43747840
  WHICHFLAG := PREP;                                                    43747850
  GOTO PROCESS;                                                         43747860
CXBBASICGO:                                                             43747870
  WHICHFLAG := GOCMD;                                                   43747880
  MPARMS := MPARMS - 1;                                                 43747890
                                                                        43747900
PROCESS:                                                                43747910
  MOVE SYSFILENAME := "HPBBCMP.PUB.SYS ";                               43747920
  MYCOMMAND(PARMSP, DELIMITERS, MPARMS, NUMPARMS, PARMS);               43747930
  IF (NUMPARMS >= MPARMS) THEN                                          43747940
    BEGIN << TOO MANY PARAMETERS >>                                     43747950
      PARMNUM := MPARMS;                                                43747960
      TOS := ERRNUM := SUBS2MP;                                         43747970
      TOS := LPARM(2 * (MPARMS -1)); << PTR TO EXTRA PARAMETER >>       43747980
      CIERR(*, *, %10000, MPARMS -1); << SIGNAL ERROR          >>       43747990
      RETURN                                                            43748000
    END;                                                                43748010
                                                                        43748020
  << PROCESS THE PARAMETERS >>                                          43748030
                                                                        43748040
  << PROCESS 1ST PARAMETER, A REQUIRED PARAMETER >>                     43748050
  PARMCNT := PARMCNT + 1;                                               43748060
  LENGTH := BPARM(2);                                                   43748070
  IF (NUMPARMS = 0) LOR (LENGTH = 0) THEN BEGIN                         43748080
    << REQUIRED PARAMETER NOT PRESENT >>                                43748081
    CIERR(ERRNUM := BBASICREQDMSSNG, PARMSP);                           43748090
    PARMNUM := PARMCNT;                                                 43748100
    RETURN;                                                             43748110
  END                                                                   43748120
  ELSE BEGIN  << SET UP FILE EQUATION FOR IT >>                         43748130
    MOVE FNAME := BBCIN, (8);                                           43748140
    @FILEREF := LPARM(0);                                               43748150
    BLDIMPFILE;                                                         43748160
    INFILE := SPECIFIED;                                                43748170
  END;                                                                  43748180
                                                                        43748190
  << PROCESS 2ND AND 3RD PARAMETERS, IF PRESENT >>                      43748200
  WHILE PARMCNT < NUMPARMS DO                                           43748210
    BEGIN  << PROCESS PARAMETERS LOOP >>                                43748220
      PARMCNT := PARMCNT +1;                                            43748230
      LENGTH := BPARM((PARMCNT - 1)* 4 + 2);                            43748240
      IF (LENGTH <> 0) THEN                                             43748250
        IF (PARMCNT = 2) THEN                                           43748260
          << 2ND PARM HAS DIFFERENT MEANING DEPENDING ON COMMAND >>     43748270
          CASE WHICHFLAG OF                                             43748280
          BEGIN << CASE >>                                              43748281
            BEGIN << COMPILE COMMAND >>                                 43748290
              << EXPECTING A USL FILE NAME >>                           43748300
              MOVE FNAME := BBCUSL, (8);                                43748310
              @FILEREF := LPARM((PARMCNT -1)* 2);                       43748320
              BLDIMPFILE;                                               43748330
              USLFILE := SPECIFIED                                      43748340
            END;                                                        43748350
                                                                        43748360
            BEGIN << PREP COMMAND >>                                    43748370
              << EXPECTING A PROGRAM FILE NAME >>                       43748380
              IF CIBADFILENAME(ERRNUM, PARMS(PARMCNT -1)) THEN BEGIN    43748390
                << ILLEGAL FILENAME, REPORT ERROR, LEAVE. >>            43748400
                CLEANUP;                                                43748410
                PARMNUM := PARMCNT;                                     43748420
                RETURN;                                                 43748430
              END                                                       43748440
              ELSE BEGIN                                                43748450
                PROGFILE := " ";  << BLANK THE NAME >>                  43748460
                MOVE PROGFILE(1) := PROGFILE,(26);                      43748470
                TOS := @PROGFILE;                                       43748471
                TOS := LPARM((PARMCNT -1) * 2);                         43748472
                MOVE * := *, (LENGTH);                                  43748480
                PROG'SPECD := TRUE;                                     43748490
              END;                                                      43748500
            END;                                                        43748510
                                                                        43748520
            BEGIN  << GO COMMAND >>                                     43748530
              << EXPECTING A LIST FILE NAME >>                          43748540
              MOVE FNAME := BBCLIST, (8);                               43748550
              @FILEREF := LPARM((PARMCNT -1)* 2);                       43748560
              BLDIMPFILE;                                               43748570
              LISTFILE := SPECIFIED;                                    43748580
            END;                                                        43748590
          END << CASE WHICHFLAG >>                                      43748600
        ELSE BEGIN << ONLY PARMETERS LEFT ARE FOR LISTFILE >>           43748610
          MOVE FNAME := BBCLIST, (8);                                   43748620
          @FILEREF := LPARM((PARMCNT - 1)* 2);                          43748630
          BLDIMPFILE;                                                   43748640
          LISTFILE := SPECIFIED;                                        43748650
        END;                                                            43748660
    END; << WHILE >>                                                    43748670
                                                                        43748680
  << CREATE THE PROCESS THAT WOULD DO THE COMPILATION >>                43748690
  SETJCW(GETJCW LAND %37777);  << CLEAR JCW ABORT BITS >>               43748700
  << SET UP CREATEPROCESS PARAMETERS >>                                 43748710
  OPTNUMS(0) := 3; OPTNS(0) := 1;  << LOAD OPTION FLAGS >>              43748720
  OPTNUMS(1) := 2; OPTNS(1) := PARM;  << PARM VALUE >>                  43748730
  OPTNUMS(2) := 0;  << END OF OPTIONS MARKER >>                         43748740
  CREATEPROCESS(ERROR, PIN, SYSFILENAME, OPTNUMS, OPTNS);               43748750
  IF < THEN BEGIN << ERROR IN CREATING THE COMPILER >>                  43748760
    CLEANUP;                                                            43748770
    SCAN SYSFILENAME UNTIL "..", 1;                                     43748780
    BPS0 := 0;                                                          43748790
    DEL;                                                                43748800
    IF (ERROR = 6) THEN << UNKNOWN PROGRAM FILE >>                      43748810
      CIERR(ERRNUM := SUBSNOTFOUND,,0,@SYSFILENAME)                     43748820
    ELSE BEGIN << FOR ALL OTHER ERRORS, CALL CREATEPROC'ERR >>          43748830
      CREATEPROC'ERR(ERROR, ERRNUM);                                    43748840
      CIERR(ERRNUM := SUBSNOTCREATE,,0,@SYSFILENAME);                   43748850
    END;                                                                43748860
    RETURN;                                                             43748870
  END << ERROR IN CREATING THE COMPILER >>                              43748880
  ELSE IF > THEN << WARNINGS >>                                         43748890
    CREATEPROC'ERR(-ERROR, ERRNUM);                                     43748900
                                                                        43748910
  NEXTLINE;  << A KLUDGY WAY OF OUTPUTTING A BLANK LINE >>              43748920
  AWAKE(PIN * PCBSIZE, 1, 2);                                           43748930
                                                                        43748940
  IF (WHICHFLAG = COMPILE) THEN BEGIN << DONE, JUST CLEAN UP >>         43748950
    CLEANUP;                                                            43748960
    CISUBSYSFINISH(4, ERRNUM, PARMNUM);                                 43748970
    RETURN;                                                             43748980
  END                                                                   43748990
  ELSE IF NOT CISUBSYSFINISH(4, ERRNUM, PARMNUM) THEN BEGIN             43749000
    << ERROR IN COMPILE STEP OF MULTI-STEP COMMAND >>                   43749010
    CLEANUP;                                                            43749020
    CIERR(ERRNUM := COMPFAILEDNOPRP);                                   43749030
    RETURN;                                                             43749040
  END                                                                   43749050
  ELSE BEGIN << CALL SEGMENTER TO PREP THE USL FILE >>                  43749060
    PIN := 0;                                                           43749070
    MOVE SYSFILENAME := "$OLDPASS ";                                    43749080
    SEGMENTER(PIN, 22, SEGERR1,,,,,,,,,SYSFILENAME);                    43749090
    CHECKSEGERR;                                                        43749100
    IF (WHICHFLAG = GOCMD) OR NOT (PROG'SPECD) THEN                     43749110
      MOVE PROGFILE := "$NEWPASS ";                                     43749120
    SEGMENTER(PIN, 14, SEGERR1,-1,-1,%200,-1,0,-1,,,PROGFILE);          43749130
    CHECKSEGERR;                                                        43749140
    SEGMENTER(PIN, 8, SEGERR1);                                         43749150
    CLEANUP;                                                            43749160
    IF (WHICHFLAG = PREP) THEN BEGIN                                    43749170
      << EVERYTHING IS DONE >>                                          43749180
      CISUBSYSFINISH(2, ERRNUM, PARMNUM);                               43749190
      RETURN;                                                           43749200
    END                                                                 43749210
    ELSE IF NOT CISUBSYSFINISH(2, ERRNUM, PARMNUM) THEN BEGIN           43749220
      << PREP FAILED IN A GO COMMAND >>                                 43749230
      CIERR(ERRNUM := PREPFAILEDNORUN);                                 43749240
      RETURN;                                                           43749250
    END                                                                 43749260
    ELSE BEGIN << WE HAVE A GO COMMAND, CREATE THE USER PROCESS >>      43749270
      TOS := TOS + 0;   << CLEAR CARRY BIT >>                           43749280
      CREATE(SYSFILENAME,,PIN,,1);                                      43749290
      IF CARRY THEN  << CREATE FAILED >>                                43749300
        IF CREATEERROR THEN BEGIN                                       43749310
          CIERR(ERRNUM := COMPILEDCREATE);                              43749320
          RETURN;                                                       43749330
        END                                                             43749340
        ELSE BEGIN                                                      43749350
          CIERR(ERRNUM := COMPILEDLOAD);                                43749360
          RETURN;                                                       43749370
        END                                                             43749380
      ELSE IF < THEN BEGIN                                              43749390
        CIERR(ERRNUM := INVALIDPROGFILE);                               43749400
        RETURN;                                                         43749410
      END                                                               43749420
      ELSE IF > THEN CIERR(ERRNUM := -DEFVAL);                          43749430
      NEXTLINE;                                                         43749440
      AWAKE(PIN*PCBSIZE, 1, 2);                                         43749450
      CISUBSYSFINISH(1, ERRNUM, PARMNUM);                               43749460
    END; << ELSE >>                                                     43749470
  END; << CALL SEGMENTER >>                                             43749480
                                                                        43749490
  END;  << CXBBASICOMP ET AL >>                                         43749500
      TOS := XADDJTENTRY(LHS,BLANK,BLANK,BLANK,-3,             <<09723>>47765000
             (14+LENR&LSR(1)),FENTRY,RHS(1),BGPTR,BAPTR,BLANK);<<09723>>47770000
      TOS := ADDJTENTRY(LHS,BLANK,BLANK,BLANK,-3,14,FENTRY);   <<09723>>47940000
   TOS := ADDJTENTRY(LHS,BLANK,BLANK,BLANK,-3,FENTRYLEN,       <<09723>>48115000
                     FENTRY);                                  <<09723>>48115250
            XREMJTENTRY(FNAME,BLANK,BLANK,BLANK,3)             <<09723>>48350000
$EDIT VOID=50745000                                            <<01335>>50595000
EQUATE NOT'ENOUGH'SPACE =  15 ,                                <<01335>>51590000
       FORMS'TYPE       = 0,                                   <<01335>>51595000
        TAPE'LABEL      = 1;                                   <<01335>>51600000
                                                               <<01335>>51615000
LOGICAL ARRAY QARRAY( * ) = Q + 0;                             <<01335>>51616000
LOGICAL PCBGLOBLOC := 0;                                       <<01335>>51617000
LOGICAL JDT'DST;                                               <<01335>>51618000
                                                               <<01335>>51619000
POINTER  JDTARR;                                               <<01335>>51620000
INTEGER  JDT'LEN,      <<Actual JDT lenght>>                   <<01335>>51621000
         AVAIL'SPACE;  <<Availble space for JDT>>              <<01335>>51621100
                                                               <<01335>>51622000
intrinsic zsize;                                               <<01335>>51623000
                                                               <<01335>>51624000
LOGICAL ARRAY OUT'BUFF'L(0:139); << TO PRINT FINAL FEQ   >>    <<09724>>51705000
        LOCKWD   := FALSE,  << LOCKWORD INDICATOR >>           <<01472>>51721000
BYTE    ARRAY REALNAMEA(0:86);                                 <<09724>>51755000
LOGICAL ARRAY FILE'NAME'L(0:43);                               <<09724>>51770000
BYTE ARRAY TEMP(0:114);                                        <<09724>>51890000
     OB'INDEX := OB'INDEX + 9;                                 << 9952>>52555000
        @FILENAME := ( @FEQ'ENTRY + 1 ) * 2;                   <<01472>>55325000
$EDIT VOID=55345000                                                     55325001
$EDIT VOID=55342000                                            <<U1681>>55325100
        MOVE OUT'BUFF( OB'INDEX ) := FILENAME,(FEQ'ANAME'SIZE);<<U1681>>55330000
        OB'INDEX := OB'INDEX + FEQ'ANAME'SIZE;                 <<U1681>>55331000
        END;                                                   <<U1681>>55332000
                                                               <<U1681>>55333000
MOVE TEMP(1) := TEMP(0),(114);                                 <<09724>>55460000
        CIERR( ERRNUM := -LEQ'NO'FEQS );  << No FEQ's here >>  << 9180>>58445000
        OB'INDEX := 16;                                        << 9476>>58533000
        MOVE OUT'BUFF := " FILE EQUATIONS ";                   << 9476>>58534000
        PRINT'LINE;                                            << 9476>>58535000
        OUT'BUFF( 0 ) := SPACE;                                << 9476>>58535100
        MOVE OUT'BUFF( 1 ) := OUT'BUFF( 0 ),(255);             << 9476>>58535200
        OB'INDEX := 2;                                         << 9476>>58535300
        PRINT'LINE;                                            << 9476>>58535400
PXGLOBAL;                                                      <<01335>>58920100
JDT'DST := PXG'JDTDST;                                         <<01335>>58920200
                                                               <<01335>>58920300
                                                               <<01335>>58965100
           <<Get the actual JDT length from the DST table>>    <<01335>>58965200
           <<Size of data segment size is divided by 4   >>    <<01335>>58965300
           <<Need to multiply JDT'LEN by 4. Entries of   >>    <<01335>>58965400
           <<DST are 4 words long.                       >>    <<01335>>58965500
                                                               <<01335>>58965600
               JDT'LEN := DST(JDT'DST*DST'ENTRY'SIZE)          <<01335>>58965700
                                  .DST'DSEG'SIZE * 4;          <<01335>>58965800
                PUSH (S,Z); <<Check avail space in stack>>     <<01335>>58965810
                ASSEMBLE ( XCH, SUB );                         <<01335>>58965820
                AVAIL'SPACE := TOS;                            <<01335>>58965830
                IF AVAIL'SPACE < JDT'LEN THEN                  <<01335>>58965840
                   BEGIN                                       <<01335>>58965850
                   PUSH (S);                                   <<01471>>58965853
                   AVAIL'SPACE := TOS + JDT'LEN + 128;         <<01471>>58965854
                   ZSIZE (AVAIL'SPACE);                        <<01471>>58965860
                   IF <> THEN   <<Can't get more space>>       <<01335>>58965870
                      BEGIN                                    <<01335>>58965871
                      UNLOCKJIR ( JIR );                       <<01335>>58965872
                      CLOSE'LISTFILE; <<close listfile>>       <<01335>>58965873
                      CIERR (ERRNUM:=NOT'ENOUGH'SPACE);        << 1419>>58965880
                      RETURN;                                  <<01335>>58965881
                      END;                                     <<01335>>58965882
                   END;                                        <<01335>>58965890
                TOS := JDT'LEN;                                <<01335>>58965900
                ASSEMBLE( LRA S-0);                            <<01335>>58965910
                @JDTARR := TOS;                                <<01335>>58965920
                ASSEMBLE( ADDS 0);                             <<01335>>58965930
                                                               <<01335>>58965940
                TOS := @JDTARR;                                <<01335>>58970000
                TOS := JDT'DST;                                <<01335>>58971000
                TOS := 0;                                      <<01335>>58972000
                TOS := JDT'LEN;                                <<01335>>58973000
                ASSEMBLE( MFDS 4 );                            <<01335>>58974000
                                                               <<01335>>58975000
                UNLOCKJIR ( JIR );                             <<01335>>58976000
                FORMAT'FEQ;  << DRIVE FORMATTING OF FEQ>>      <<01335>>58977000
                CLOSE'LISTFILE; << CLOSE LISTFILE >>           <<01335>>58978000
$EDIT VOID=59000000                                            <<01335>>58979000
                                                               <<01335>>59085000
EQUATE NOT'ENOUGH'SPACE =  15 ;                                <<01335>>59211000
LOGICAL JDT'DST;                                               <<01335>>59213000
POINTER JDTARR;     <<Points to dynamic array for JDT>>        <<01335>>59215000
INTEGER  JDT'LEN,   <<Actual JDT size>>                        <<01335>>59216000
         AVAIL'SPACE;  <<Available space in stack for JDT>>    <<01335>>59217000
                                                               <<01335>>59218000
INTRINSIC ZSIZE;                                               <<01335>>59219000
                                                               <<01335>>59219100
LOGICAL ARRAY HEADING'L(0:22);                                 << 9288>>59320000
BYTE    ARRAY HEADING(*) = HEADING'L;                          << 9288>>59325000
$EDIT                                                          << 9288>>59490000
$EDIT                                                          << 9288>>59495000
$EDIT                                                          << 9288>>59510000
$EDIT                                                          << 9288>>59515000
$EDIT                                                          << 9288>>59530000
$EDIT                                                          << 9288>>59535000
LOGICAL ARRAY T'ACCOUNT'L(0:3);     << Account in JDT entry  >><< 9288>>59545000
BYTE    ARRAY T'ACCOUNT(*)  = T'ACCOUNT'L;                     << 9288>>59546000
                                                               << 9288>>59547000
LOGICAL ARRAY T'GROUP'L(0:3);       << Group in JDT entry    >><< 9288>>59550000
BYTE    ARRAY T'GROUP(*)    = T'GROUP'L;                       << 9288>>59551000
                                                               << 9288>>59552000
LOGICAL ARRAY T'FILENAME'L(0:3);    << Filename in JDT entry >><< 9288>>59555000
BYTE    ARRAY T'FILENAME(*) = T'FILENAME'L;                    << 9288>>59556000
                                                               << 9288>>59557000
        RESULT      := FALSE,                                  << 9536>>59706000
M := 0;   << Index for each 8-char name >>                     <<09724>>61530000
J := 0;   << Keeps track of which qualifier is being decoded >><<09724>>61540000
$EDIT VOID=61745000                                            <<09724>>61550000
BEGIN              << While processing Temp file entry >>      <<09724>>61555000
   FOR'FILE'NAME(I) := FILENAME(I);                            <<09724>>61560000
   IF FILENAME(I) = "." THEN                                   <<09724>>61565000
   BEGIN              << if end of file or group name >>       <<09724>>61570000
      M := 0;            << reset intra-name index >>          <<09724>>61575000
      J := J + 1;        << next name level >>                 <<09724>>61580000
   END                << if end of file or group name >>       <<09724>>61585000
   ELSE BEGIN         << else processing the name >>           <<09724>>61590000
      CASE (J) OF                                              <<09724>>61595000
      BEGIN              << case on name level >>              <<09724>>61600000
         T'FILENAME(M) := FILENAME(I);                         <<09724>>61605000
                                                               <<09724>>61610000
         T'GROUP(M) := FILENAME(I);                            <<09724>>61615000
                                                               <<09724>>61620000
         T'ACCOUNT(M) := FILENAME(I);                          <<09724>>61625000
      END;               << case on name level >>              <<09724>>61630000
      M := M + 1;                                              <<09724>>61635000
   END;               << else processing the name >>           <<09724>>61640000
   I := I + 1;                                                 <<09724>>61645000
   IF FILENAME(I) = " " THEN                                            61646000
      I := TFEQ'FNAME'SIZE; << stop if see blank, the end >>            61647000
END;               << While processing Temp file entry >>      <<09724>>61650000
                                                               <<01335>>64756000
JDT'DST := PXG'JDTDST;                                         <<01335>>64757000
                                                               <<01335>>64758000
$EDIT                                                          <<01335>>64870000
                                                               <<01335>>64879000
IF @TFEQ'HEAD = @TFEQ'TAIL                                     << 9536>>65065000
   THEN BEGIN                                                  << 9536>>65066000
        RESULT := HANDLE'OLDPASS;                              << 9536>>65067000
        IF BPRESULT( 38 ) <> "@       "                        << 9536>>65068000
           THEN IF RESULT = FALSE                              << 9536>>65069000
                   THEN CIERR( ERRNUM := -LISTFTEMPNOTFEQS )   << 9536>>65070000
                   ELSE CIERR( ERRNUM := -LISTFTEMPNOTFOUND )  << 9536>>65071000
           ELSE IF RESULT = FALSE                              << 9536>>65072000
                   THEN CIERR( ERRNUM := -LISTFTEMPNOTFEQS )   << 9536>>65075000
                   ELSE PRINT'DRIVER                           << 9536>>65080000
        END                                                    << 9536>>65081000
PXGLOBAL;                                                      <<01335>>65441000
JDT'DST := PXG'JDTDST;                                         <<01335>>65442000
                                                               <<01335>>65443000
$EDIT VOID=65520000                                            << 9552>>65520000
$EDIT VOID=65545000                                            << 9552>>65545000
$EDIT VOID=65590000                                            << 9552>>65590000
                JIR := LOCKJIR;                                << 9552>>65636000
                                                               <<01335>>65636200
               <<Get actual JDT length from the DST table >>   <<01335>>65636400
                <<Size of data segment size is divided by 4>>  <<01335>>65636600
                <<Need to multiply JDT'LEN by 4. Entries of>>  <<01335>>65636800
                <<DST are 4 words long.                    >>  <<01335>>65637000
                                                               <<01335>>65637200
                JDT'LEN := DST(JDT'DST*DST'ENTRY'SIZE)         <<01335>>65637400
                           .DST'DSEG'SIZE * 4;                 <<01335>>65637410
                PUSH (S,Z);                                    <<01335>>65637500
                ASSEMBLE (XCH, SUB);  <<Check for available >> <<01335>>65637510
                AVAIL'SPACE := TOS;   <<space for the JDT   >> <<01335>>65637520
                IF AVAIL'SPACE < JDT'LEN THEN   <<Move Z to>>  <<01335>>65637530
                   BEGIN       <<get more space for the JDT>>  <<01335>>65637540
                   PUSH (S);                                   <<01471>>65637543
                   AVAIL'SPACE := TOS + JDT'LEN + 128;         <<01471>>65637544
                   ZSIZE (AVAIL'SPACE);                        <<01471>>65637550
                   IF <> THEN   <<Can't allocate more space>>  <<01335>>65637560
                      BEGIN                                    <<01335>>65637561
                      UNLOCKJIR ( JIR );                       <<01335>>65637562
                      CLOSE'LIST'FILE;  <<close listfile>>     <<01335>>65637563
                      CIERR(ERRNUM:=NOT'ENOUGH'SPACE);         << 1419>>65637570
                      RETURN;                                  <<01335>>65637571
                      END;                                     <<01335>>65637572
                   END;                                        <<01335>>65637580
                TOS := JDT'LEN;                                <<01335>>65637600
                ASSEMBLE(LRA S-0);                             <<01335>>65637800
                @JDTARR := TOS;                                <<01335>>65638000
                ASSEMBLE(ADDS 0);                              <<01335>>65638200
                                                               <<01335>>65638400
                <<Get the JDT full of information      >>      <<01335>>65638600
                TOS := @JDTARR;                                <<01335>>65638800
                TOS := JDT'DST;                                <<01335>>65639000
                TOS := 0;                                      <<01335>>65639200
                TOS := JDT'LEN;                                <<01335>>65639400
                ASSEMBLE( MFDS 4 );                            <<01335>>65639600
                                                               <<01335>>65639800
                FORMAT'TEMP'FILES;     << Print fileinfo >>    <<01335>>65640000
                UNLOCKJIR( JIR );                              << 9552>>65641000
$EDIT VOID=65660000                                            << 9552>>65660000
