. UNIVAC 1107 FORTRAN 4 COMPILER -- PHASE 1 . . THE PURPOSE OF PHASE 1 IS THE SYNTACTICAL ANALYSIS OF THE FORTRAN 4 SOURCE . LANGUAGE INPUT FILE TO -(1) CREATE AN INTERNAL LANGUAGE REPRESENTATION (FILE . 30) OF THE SOURCE PROGRAM AND (2) TABULATE INFORMATION CONCERNING LOOPS, . TRANSFERS, IDENTIFIERS AND CONSTANTS. . . THE SOURCE LANGUAGE IS READ ONE STATEMENT AT A TIME BY THE ROUTINE 'GNS'. . THE TYPE OF STATEMENT IS DETERMINED BY 'STD' AND THEN THE APPROPRIATE . STATEMENT PROCESSING SUBROUTINE IS CALLED TO SCAN THE STATEMENT. . . EQU'S FOR REGISTERS AND J-DESIGNATORS PREQ . DEFINITION $(2) LIT $(1) . THIS IS THE MAIN CONTROL PROGRAM OF PHASE 1. THIS ROUTINE CALLS-'GNS' TO READ . THE NEXT STATEMENT INTO 'SBUF', 'STD' TO DETERMINE THE STATEMENT TYPE, AND . THEN THE APPROPRIATE STATEMENT PROCESSING ROUTINE TO SCAN THE STATEMENT. . THE ROUTINE ALSO CALLS 'PSTL' TO PROCESS THE STATEMENT LABEL AND 'EDO' TO . TERMINATE 'DO' LOOPS IF NECESSARY. . 014800 N1MN* L A0,BUGERR ER IALL$ LMJ B11,INIT INITIALIZE 015000 PH301* A,M B1,1 S+1 IN S (SEQUENCE NUMBER) CSC25 TZ,M 0,B9 LMJ B11,PSDX TZ FSCLN J PH301G LMJ B11,GNS GET NEXT STATEMENT 015200 J PH400 ERROR 015300 J PH401 EOF OR CONTROL CARD 015400 PH301G* LMJ B11,STD DETERMINE STATEMENT TYPE PH31GJ L,S6 A1,TST1,A0 ST IS IN A0 JZ A1,PH302 NOT SUB-FUNCTION OR BLK DATA 015700 L,H2 A1,TST,A0 . LOCATION OF CODE LMJ B11,0,A1 . BRANCH TO SUB FUNC OR BLK DATA PH301K* TNZ GENNO . A LABEL IS PROCESSED BY THE GENERATE S LMJ B11,PSTL PROCESS THE NEXT LABEL J PH305 SUB, FUNC RETURN 015900 . 016100 PH302. EXEC 8 L,H2 A0,ST EXEC 8 L A1,CRPRO EXEC 8 TE,M A1,3 . BLOCK DATA? EXEC 8 J $+3 . NO EXEC 8 TNZ,S1 TST,A0 . YES, LEGAL STMT? EXEC 8 J BD300 . NO EXEC 8 TZ FXL . IS EXEC STMT FLAG SET? EXEC 8 J PH322 YES-GO PROCESS NEXT ST 016120 TNZ FFS NO-IS THIS THE 1ST ST 016130 J PH312 NO 016140 . THE FOLLOWING STATEMENT TYPES MAY APPAEAR WITHOUT . CHANGING WHETHER A 'FIRST' CARD . 7 SCAN ; 8 GENERATE ; 20 END ; 28 COMPILER . 30 DELETE ; 31 MACRO ... ; 39 INCLUDE . 40 DIAGNOSTIC ; 45 PARAMETER DL A2,(0201030032004000600) DSL A2,0,A0 . SHIFT BY STATEMENT TYPE JB A3,PH302Q SZ FFS YES-RESET FFS 016150 PH302Q S B1,SCB SAVE SEQUENCE COUNT A,M B1,1 S+1 IN S 016170 L A0,PH11 BEGIN ITEM 016180 TN,XH2 CRPRO TEST IF BEGGINING PROGRAM ITEM ALREADY SENT J PH312 WF30 . 016182 SZ,H2 CRPRO SET T=0 IN CRPRO,('MAIN' PROG.) 016220 PH312 L,H2 A0,ST DL A2,(0201030032004000600) DSL A2,0,A0 . SHIFT BY STATEMENT TYPE JB A3,PH322 L A2,PLABL TE A2,(' ') J PH312J TE,M A0,21 IS THIS AN EXEC ST--(21=DO ST.) 016240 TNZ,S3 TST3,A0 016250 TNE,M A0,1 016251 J PH322 NO 016270 PH312J TE,M A0,064 . TEST FOR FORMAT STATEMENT S R15,FXL . YES SET EXEC FLAG FXL L A0,PH13 016290 WF30 . FILE FIRST EXECUTABLE ITEM . 016400 PH322 TZ,H2 GNSFL ONLY ENTER LABEL ON GENERATE CARD ONCE LMJ B11,PSTL SZ,H2 GNSFL L,H2 A0,ST ST = STATEMENT TYPE 016500 L,H2 A1,DL DL = DO LEVEL 016600 SZ FRD FRD = FLAG FOR RANGE OF A DO 016700 L,H1 A1,DOTAB,A1 016800 TNE A1,PLABL IS THIS ST IN RANGE OF DO 016900 S R15,FRD YES-SET FRD 017000 L,H2 A1,TST,A0 . LOCATION OF CODE LMJ B11,0,A1 . SCAN STATEMENT PH304* L,H2 A1,DL TZ FSCLN J PH305 JZ A1,PH305 017300 L A4,PLABL GET PRESENT LABEL TNZ MACNO J $+3 TE A4,(' ') SLJ MCLABL TE,H1 A4,DOTAB,A1 IS THIS AN END DO J PH305 NO- 017600 LMJ B11,EDO YES-'END DO' 017700 LMJ B11,EDO2 . MORE PROCESSING TNZ PARFLG J PH304 018100 TZ MACNO J $+3 LMJ B11,PERR FORM6 02,244,0 SZ PARFLG L B5,(1,0) J PH304 . STATEMENT HAS BEEN PROCESSED 018110 PH305 TZ ST LMJ B11,PSDP OUTPUT FILE 30 ITEMS TZ FSCLN J PH301 L,H1 A0,COMMAC SSL A0,6 . SIMULATE TZ,T1 TZ,H1 CRSD1 TNZ,S6 MAFLST . LIST GENERATED STMT. TZ A0 SLJ MACLST . SEND GENERATED STATEMENT TO PHASE VI SZ,S6 MAFLST . TURN OFF FORCED LISTING FLAG. LMJ B11,TTAB TEST TABLE SIZES 018210 J PH500 TZ GENNO TEST FOR MULTIPLE GENERATION OF GENERATE STATEMENT J GEGEN PH305J* TNZ FEND IS THIS THE END OF PHASE 1 018400 J PH301 NO CONTINUE SCANNING 018500 . YES-END PHASE 1 018510 PH300 LMJ B11,EPH1 END PHASE 1 018600 SLJ CLOSIN . RELEASE INCLUDE FILES PH30 J *PHEXIT . 018800 PH400* LMJ B11,PERR FORM6 0,90,0 019000 J PH300 019100 . 019200 PH401* L,M A0,2 S A0,FEND 019400 J PH300 019500 . 019600 PH500* A,M B1,1 . S=S+1 LMJ B11,GNS . GET NEXT SYMBOL J PH400 . ERROR J PH401 . EOF LMJ B11,STD . NORMAL TE,M A0,024 . END-STATEMENT J PH500 . NO-GET NEXT STATEMENT S R15,FEND . YES-SET END PHASE 1 FLAG J PH300 . CLOSE PHASE 1 FILES . ARITHMETIC OR LOGICAL STATEMENT SCAN 043500 . 043600 ARR* S,H2 B11,AR30 043700 S,H2 B1,AR11 SEQ CT IN F30 ITEM 043800 S,H2 B1,TRASEQ SAVE SEQUENCE NUMBER FOR TRACE SZ FEB = FLAG FOR SCAR 044000 LMJ B11,SCAR SCAN ARITH ST 044100 L A0,AR11 044200 S A0,SLOUT,B9 044300 L A0,ST ST=TYPE ST 044400 S,S2 A0,SLOUT,*B9 F30 ITEM(ST TYPE,N=0) 044500 SZ FC4 RESET FLAGS FOR 044600 SZ FD4 DO STATEMENTS 044700 TZ FXL IS EXEC FLAG SET 044800 J *AR30 YES-RETURN 044900 TE,M A0,2 NO-IS THIS A ST FUNC 045000 TNE,M A0,4 045100 J *AR30 YES-RETURN 045200 S R15,FXL NO-SET FXL 045210 L A0,AR12 FIRST EXECUTABLE STATEMENT ITEM 045220 WF30 . 045225 J AR30 . TEMPORARY MACRO L A0,PLABL . IF THERE WAS A LABEL ON THIS STMT MACRO TE A0,(' ') . IT HAS NOT YET BEEN FILED IN LREFMACRO SLJ FLDEF . SO DO IT. MACRO J *AR30 REENT . ASSIGN N TO M STATEMENT 046000 . 046100 ASG* S,H2 B11,AS30 046200 SZ FC4 DO FLAG 046300 SZ FD4 DO FLAG 046400 S A12,AS12 SAVE A12 046500 S B4,AS11 SAVE B4 046600 L A0,(-0102,-1) . AREF LINK FLAG MTFSYM S A0,MLINK MTFSYM LMJ B11,GOL GET LABEL, MAKE NO LREF ENTRY. SHORT J AS301 EOS 046900 S,H1 B1,3,A1 SEQUENCE OF LAST ASSIGN OR A1,(0400000) SYM IS IN A1 047000 S A2,PRESYM . PUT IN PRESYM TABLE MTFSYM OR A1,AS14 ID=ST REF 047200 S A2,STRING,*B5 STORE F30 ITEM 047300 LMJ B11,NGX6 047400 + 2 047500 TNE A2,('TO ') NEXT 2 CHARS 'TO' 047600 J AS303 YES 047700 LMJ B11,PERR NO 047800 FORM6 1,27,0 047900 AS303 LMJ B11,GIT 048000 J AS301 DOS 048100 LMJ B11,GSWV GET SINGLE SWITCH VARIABLE 048200 S,H1 A1,PRESYM . PUT IN PRESYM TABLE MTFSYM L A0,(1,PRESYM) . (LNG,LOC) OF TABLE MTFSYM LMJ B11,MTLT . MOVE TO LINKED TABLE MTFSYM SLJ SYMOF . ERROR SYM OVERFLOW MTFSYM OR A1,(020000,0) S A2,STRING,*B5 048600 L A12,A1 SYM IN A12 FOR GENDP2 048700 L A0,SEQL SEQ OF LABEL 048900 OR A0,AS16 ST TYPE IN AS16 049000 S A1,SLOUT,*B9 049100 LMJ B11,GENDP2 GENERATE DEFINITION POINTS 049110 TZ FEOS 049200 J AS300 049300 AS301 LMJ B11,PERR 049400 FORM6 0,4,0 049500 AS300 L A12,AS12 RESTORE A12 049600 L B4,AS11 RESTORE B4 049700 J *AS30 REENT . BLOCK DATA PROGRAM . SET INDICATOR=NO PHASE 3,4,5 BDATA LA,M A3,3 SET TYPE OF COMPILE= BDATA SA A3,CRPRO COMPILATION=BLOCK DATA TNZ FFS IS THIS THE FIRST STATEMENT J BD301 NO J 0,B11 . YES EXEC 8 BD300 LMJ B11,PERR BLOCK DATA HAS FORM6 01,111,0 NOT LEGITIMATE ST. TYPE J PH305 EXEC 8 BD301 LMJ B11,PERR NOT FIRST STATEMENT FORM6 01,110,0 IN PROG.=BLOCK DATA J PH305 . NOT FIRST STATEMENT MACRO . THIS ROUTINE IS CALLED WHEN A COMPILER OR MACHINE ERROR OCCURS. $(2) . EENT N1BUG* +0111111,0 . N1BUG EQU BUG J SYSERR EENT $(1) . SYSERR L R15,N1BUG SLJ N0RGSV . SAVE REST OF REGISTERS FORTRA L,H2 A0,BUG1 S A0,N1FL FOR FOR DIAGNOSTIC OR ERROR CALL ON DUMP LMJ B11,PERR FORM6 042,159,N0RGSA+43 EXEC 8 LMJ B11,N1DMP . CALL FORTRAN DUMP ROUTINE. FORTRA + BUG FORTRA + N0RGSA FORTRA + PL FORTRA +N1FL ZERO FOR DIAGNOSTIC CALL NON ZERO FOR CONTINGENCY CALL + 0. (W.B.) FORTRA SLJ N0RGRS . RESTORE REGS. EXEC 8 L,M R15,1 . MAKE SURE R15 IS NONZERO. EXEC 8 TZ,H2 BUG1 TEST FOR CONTINGENCY ERROR J PH300 SKIP REST OF PROGRAM J PH500 SCAN BUT DO NOT PROCESS REST OF PROGRAM $(2) . REENT BUG1* +0 NOP 0 . S B11,N0RGSA LXI,M B11,INSFRT LIJ B11,BUG18 $(1) . REENT BUG18 L R15,BUG1 L B11,N0RGSA . RESTORE B11 FROM CONTINGENCY SLJ N0RGSV L A0,(NOP 0) S A0,BUG1+1 RESET FOR MORE ERRORS ER CEND$ . RELEASE CONTINGENCY STATE. EXEC 8 L,S3 A0,BUG1 . CONTINGENCY TYPE. EXEC 8 TLE,M A0,03 J ERMODE ERRCON TG,M A0,7 . TERMINATE IF EXEC 8 J ERMODE . ABORT$ OR OPER INTERRUPT. EXEC 8 TNE,M A0,5 TNZ PARFLG PARAMETER STATEMENT J $+2 J N1ERR YES DIVISION BY ZERO L,M R15,1 EX OUF-3,A0 L,H2 A0,BUG1 GET ADDR OF INSTRUCTION L,H1 A0,0,A0 LSSL A0,28 SSL A0,32 TNZ A0 SZ N0RGSA+12 . A0 SAVED HERE LSSL A0,4 A A0,(0731400) FORM DSL INST OR A REG S,H1 A0,N1SHFT EX N1SHFT L,H2 A0,BUG1 A,M A0,1 S A0,BUG1 L A0,N0RGSA+12 . A0 SAVED HERE J *BUG1 OUF S,H1 R15,MCOUF OVERFLOW S,H2 R15,MCOUF UNDERFLOW S,H1 R15,MCOUF OVERFLOW BUGERR +0133700,BUG1 . IERR,CONS,AB,DVOF,FPO/UF,GDM,IOP. EXEC 8 . ERRCON ERMODE LMJ B11,CONTTT +006100,BUG1 ERRMOD* J SYSERR+2 . CALL STATEMENT 050900 . 051000 CALL* S,H2 B11,CA30 051100 SZ FC4 DO FLAG 051200 SZ FD4 DO FLAG 051300 LMJ B11,SGX MARK GX 051400 LMJ B11,GIT 051500 J CA303 EOS 051600 TNE,M A2,3 ITEM = VAR NAME 051700 J CA301 051800 LMJ B11,ERR4 051900 J CA300 ERROR RETURN 052000 CA301 LMJ B11,GLG1 ARGUMENT STATEMENTS MUST BE GLOBAL SHORT J CA302J SO LOOK FOR GLOBAL ARGUMENT STATEMENT SHORT TNZ FLG SHORT J CA302J SHORT L,H2 A2,2,A1 SHORT AND,M A2,017777 SHORT JNZ A3,CA303J AN ARGUMENT STATEMENT HAD APPEARED SHORT CA302J LMJ B11,GLS GET LOCAL REFERENCE SHORT J CA302 NOT IN, ENTER SYM SEP28 CA303J L,H1 A2,2,A1 SHORT AND,M A2,7 052600 NOP 0,0 052700 J *CA21,A3 BRANCH ON CLASS 052800 . 052900 CA303 LMJ B11,PERR PREMATURE EOS 053000 FORM6 1,4,0 053100 J CA300 053200 . 053300 CA401 AND,M A2,077 TNE,M A3,077 . TEST FOR NAMELIST J CA303 AND,M A2,0700 TNE,M A3,0400 DOES D=4 053500 J CA304 YES 053600 J CA410 . NAME MULTIPLY DEFINED . 053800 CA420 AND,M A2,0400 D3=1 053900 JNZ A3,CA610 YES,NAME=SUBR. 053950 L A3,2,A1 054000 AND A3,(07,0600000) . C,I TE A4,(02,0400000) C EQUALS 2, I6 EQUALS 1 054070 TNE A4,(02,0200000) . C=2, I5=1 (NAME ONLY IN EXTERNAL) J CA402A J CA410 NO 054100 CA402A OR,M A2,0400 . D3=1 S,H1 A3,2,A1 J CA610 054200 . 054300 CA430 SLJ DEINTX MAKE SURE NAME IS LOCAL AND,M A2,01000 JNZ A3,CA410 ALREADZ USED AS FUNCTION J CA304 . 054700 CA440 AND,M A2,01000 JZ A3,CA441 F = 0 054900 J CA442 NO SEP28 CA441 AND,M A2,06700 OCT 5 JNZ A3,CA410 055500 CA442 OR,M A2,01400 F=1, D3=1 SEP28 OR A3,FNA 055700 S,H1 A4,2,A1 055800 J CA510 055900 . 056000 CA410 LMJ B11,PERR 056100 FORM6 032,2,SYMV . NAME MULTIPLY DEFINED . 056400 CA302 CA304 L,H1 A2,2,A1 AND A2,(0770070) T=T 056700 OR,M A3,0402 C=2,D3=1 056800 OR A4,FNA ABNORMAL FLAG 056900 S,H1 A5,2,A1 057000 CA610 L,M A2,07 AND,S4 A2,2,A1 S,S4 A3,2,A1 . I6,I5,I4=0 CA510 LMJ B11,RGX RESET GX (1) 057100 S,H2 B1,CA11 SAVE SEQ CT 057200 S R15,FEB SET FLAG FOR SCAN 057300 S,H2 B5,CASVE . SAVE STRING POINTER LMJ B11,SCAR 057400 L A0,CA11 057500 S A0,SLOUT,*B9 057600 L,M A0,0,B5 AN,H2 A0,CASVE . B5 ON CALL TO N1SCR TNE,M A0,3 . TEST FOR CALL WITH NO ARGUMENTS J CA300 L,H1 A0,STRING-2,B5 . SIMULATE L,T1 SSL A0,6 . TEST IF LAST OPERATOR WAS A TE,M A0,01020 . COLON ITEM J CA303 . INCOMPLETE STATEMENT CA300 S R15,FF5 057700 J *CA30 REENT . 057900 CA21 J CA410 CLASS C=0 058500 J CA420 C=1 058600 J CA420 C=2 058700 J CA410 C=3 058800 J CA410 C=4 058900 J CA440 C=5 059000 J CA430 C=6 059100 J CA401 C=7 059200 . 059300 . THIS ROUTINE IS CALLED WHEN AN UPDATE CONTROL CARD IS IN ERROR. CCE* S,H2 B11,CCE1 A,M B1,1 LMJ B11,PERR FORM6 1,155,0 LXI,M A0,1 L A1,(1,NLINE+1) L,M R1,14 L A2,(050000,0) S A2,NLINE S,H2 B1,NLINE BT A1,0,*A0 L A0,(1,NLINE) L,H1 A1,SIRLNG . LENGTH OF IMAGE A,M A1,1 . ADD IN F60ID L A2,(3,F60ID) . SPECIAL INFO AT END OF IMAGE L,H2 A3,FDASC . SET ACCORDING TO IMAGE LMJ B11,W60F L B11,CCE1 REENT AN,M B11,6 . GO TO READ ANOTHER CARD J 0,B11 . CONTINUE STATEMENT 076600 FRE CNT S,H2 B11,CNT90 CONTINUE AND FREQUENCY STATEMENT LMJ B11,GIT CHECK FOR END OF STATEMENT J $+2 J CNT91 REENT L A0,(0120100,0) A,M A0,0,B1 S A0,SLOUT,*B9 J *CNT90 REENT CNT91 LMJ B11,PERR REENT FORM6 1,4,0 J CNT90 . DATA STATEMENT SCAN DATA S,H2 B11,DATA5 SZ LIST L A0,(1,0) DATA2 L B9,(1,1) LMJ B11,GX J DATA5 NO DATA TE,M A0,'/' TO PERMIT INITIAL SALSH SZ FNXT LMJ B11,SLIS SCAN STATEMENT L,M A0,MAXSLO-1 . HAS TABLE LENGTH TLE,M A0,0,B9 . BEEN EXEEDED J DATA6 . YES-ERROR TNZ ST J DATA51 REENT L B10,(14,SLOUT) L A6,(030000,0) DATA STATEMENT ID DATA3 L,M A0,0,B10 A A0,(1,0) S A6,0,B10 L,M A1,15 . LENGTH L,M A2,0 . NO TERMINATING CONTROL WORDS L,M A3,0 . FORCE TO FIELDATA LMJ B11,W60F TLEM,M B10,SLOUT-15,B9 J DATA3 DATA41 L,M A0,MAXSLO-1 TLE,14 A0,0,B9 J DATA6 DATA51 L B9,(1,0) REENT J *DATA5 REENT DATA6 LMJ B11,PERR CSC25 FORM6 012,166,0 CSC25 J PH500 . DELETE STATEMENT . DELETE* S,H2 B11,DEXIT LMJ B11,PSDP AN,M B1,1 S,H2 B1,SEQNO LMJ B11,GIT GET DELETE TARGET LABEL J DELER1 ERROR - BAD FORM TE,M A2,4 WAS ITEM RETURNED AN INTEGER CONSTANT J DELER2 NO - NOT GOOD L A1,GITV SM A1,DELAB SAVE TARGET LABEL TE,M A0,':' . TEST FOR PARAMETER? J NOTPARM . NOPE/ CONTINUE L FNXT,R8 . ITEM FOLLOWING : LMJ B11,SCEX2 . SCAN S R15,DELFLG . ERROR ENCOUNTERED/ DELETE J *DEXIT . DONE NOTPARM . TE,M A0,',' CHECK FOR COMMA AFTER CONSTANT J DEL1 NO COMMA - CHECK FOR EOS L FNXT,R8 GET ITEM FOLLOWING COMMA LMJ B11,SCEX AND SCAN AS CONST EXPRESSION PARAM J DELER3 NO - FILE ERROR. PARAM TZ A3 IS VALUE 0 PARAM DELSET S R15,DELFLG NO - SET FLAG FOR GNS TNZ A3 . TEST IF DELETE ACTIVE J *DEXIT REENT TNZ GENNO . TEST FOR ACTIVE GENERATES J *DEXIT L A0,GENNO L A1,MACNO TE A1,G49,A0 J *DEXIT SLJ GEG2Z . GLOSE OUT ACTIVE GENERATES J PH301 DEL1 TNZ FEOS EOS J DELER1 NO - SHOULD BE J DELSET DELER1 LMJ B11,PERR PREMATURE EOS FORM6 0,4,0 J *DEXIT DELER2 LMJ B11,PERR BAD LABEL FORM6 012,39,GITV J PH500 DELER3 LMJ B11,PERR FORM6 01,197,0 ERROR - PARAM EXP REQUIRED REMOVE J *DEXIT . DETERMINE WHETHER VARIABLE CAN BE DIMENSIONED 080200 . 080300 DIMT* S,H2 B11,DT30 080400 L,H1 A2,2,A1 GET MODE 080500 AND,M A2,01700 DOES F,D = 0 080600 JZ A3,DT303 YES 080700 AND,M A2,0707 TE,M A3,0407 IS CLASS UNASSIGNED J DT304 -NO, ERROR AND A2,(0777070) -YES, SAVE TYPE S,H1 A3,2,A1 J *DT30 RETURN DT304 LMJ B11,PERR NO 080800 FORM6 031,2,SYMV 080900 DT305 SZ,S2 2,A1 0 IN MODE 081000 SZ,S3 2,A1 081100 J *DT30 RETURN 081200 DT303 AND,M A2,7 081300 JZ A3,DT306 F,D = 0, BRANCH ON CLASS 081400 J *DT21,A3 081500 DT306 AND,M A2,070 C = 0,5 081600 SSL A3,3 BRANCH ON T 081700 JZ A3,DT310 081800 J *DT22,A3 081900 DT307 AND,M A2,04000 C = 0,5,T = 3,4 082000 JZ A3,DT310 EQ = 0 YES 082100 LMJ B11,PERR NO 082200 FORM6 031,3,SYMV 082300 . C=0,5 AND T=0,1 082390 DT310 TNZ,H1 3,A1 WAS ITEM PREVIOUSLY DEFINED 082400 J DT311 TP 3,A1 . TEST ENTRY DEFINITION POINT J *DT30 LMJ B11,PERR YES 082600 FORM6 031,92,SYMV 082700 J *DT30 RETURN 082800 DT308 SLJ DEINTX MAKE SURE NAME IS LOCAL SZ,H2 2,A1 (SET W3(H2)) 082820 J DT305 082830 DT311 AND,M A2,02000 JNZ A3,*DT30 AND,M A2,070 JNZ A3,DT304 J *DT30 . 082900 . 083200 DT21 J DT306 C=0 083300 J DT304 1 083400 J DT304 2 083500 J DT304 3 083600 J DT304 4 083700 J DT306 5 083800 J DT308 C=6 083900 J DT304 7 084000 . 084100 DT22 J DT310 T=0 084200 J DT310 1 084300 J DT310 2 084400 J DT307 3 084500 J DT307 4 084600 J DT310 5 084700 J DT304 6 084800 J DT304 7 084900 . 085000 . DETERMINE TYPE 100500 DTYPE* L,S3 A0,2,A1 SSC A0,3 SSL A0,33 TE,M A0,5 J $+8 L,S3 A0,2,A1 TLE,M A0,010 A,S6 A0,2,A1 SSL A0,3 SSC A0,33 TG,M A0,7 J 0,B11 L,S1 A0,0,A1 L,S5 A0,P1TAB1,A0 J 0,B11 . 101500 . END DO 101700 . 101800 EDO* S,H2 B11,ED30 101900 S B4,ED11 102000 S B6,ED12 102100 A,M B1,1 S+1 IN S 102200 L B4,PL PE IN B4 102300 L B6,DL L IN B6 102400 L,H2 A0,FLF . CURRENT LOGICAL IF LEVEL TNE,H2 A0,LGDOTS,B6 J $+3 LMJ B11,PERR FORM6 02,11,0 . DO/IF STRUCTURE MISMATCH A,M B4,2 102500 L,H2 A0,DOTAB,B6 PB IN A0 102600 S B4,PL P+2 IN P 102700 L,H2 A1,LOOP,A0 MOVE INC FROM LOOP(PB) TO LOOP(PE)102800 S A1,LOOP+1,B4 0 IN S1 102900 S,S2 B6,LOOP+1,B4 L IN LOOP(PE) 103000 L,S3 A1,LOOP+1,A0 GET F 103100 OR,M A1,020 103200 TZ FF5 SET BY CALL AND REP TO FUNCTIONS 103300 L A1,A2 103400 AND,M A1,024 103500 L,M A4,4 C3 103510 L,S3 A3,LOOP+1,A0 . SIMULATE TN,T2 TOP,M A3,040 SZ A4 103530 S,S4 A4,LOOP,A0 SET C 103540 S,S3 A2,LOOP+1,A0 STORE F(PB) 103600 AND,M A1,3 COMPUTE G FROM F 103700 JNZ A2,$+2 103800 L,M A2,7 SET G1,G2,G3 103900 OR,M A2,040 G6=1 104000 S,S3 A3,LOOP+1,B4 STORE G(PE) 104100 . 104200 L,S4 A2,LOOP-2,B4 104300 TZ FD4 104400 A,M A2,010 104500 S,S4 A2,LOOP-2,B4 SET D4 (PE) 104600 S,H1 B1,LOOP,B4 SET SE (PE) 104700 S,H2 A0,LOOP,B4 SET PB L A1,B4 . SIMULATE S,T3 B4 S,S6 A1,LOOP,A0 SSL A1,6 S,S5 A1,LOOP,A0 . PE AN,M B6,1 L-1 105000 S B6,DL IN L 105100 L,H2 A1,DOTAB,B6 GET PB (OD) 105200 S,S2 A1,LOOP+1,A0 . PB (OD) IN PBOD (PE) SSL A1,6 . SIMULATE S,T1 S,S1 A1,LOOP+1,A0 . AT THIS POINT ALSO REMOVE CODE WHICH WAS SETTING THIS FLAG IFFL . RESET IND BIT 105400 L,H2 A1,LOOP+1,A0 GET SYM (I) 105500 L A2,(0377777) 105600 AND,H2 A2,2,A1 105700 S,H2 A3,2,A1 105800 . GENERATE F30 ITEM 105900 S,H1 A0,ED13 PB IN A0 106000 L,M A1,ID11 ID11 = END DO 106100 S,S1 A1,ED13 106200 L,H1 A3,LOOP,A0 GET SB 106300 OR A3,(0400000) 106400 SA A4,GITV 106500 LMJ B11,GLS GET LABEL 106600 SLJ BUG 106700 S,H2 A1,ED13 106800 . SHORT . POP UP THE CURRENT LOOP LEVEL IN LREF. SHORT . SHORT TNZ LRSTKL . IF THIS LEVEL EMPTY, SHORT J ED10 . BYPASS TRANSFER. SHORT TZ LRFOFL . IF TABLE HAS BEEN CLOBBERED, SHORT J ED20 . DO NOTHING. SHORT L,H2 A0,LREFI . RECEIVING AREA IN PERM LREF. SHORT LXI,M A0,1 SHORT L,H2 A1,LREFIX . CURRENT DO LEVEL AREA. SHORT A,M A1,2 . CORRECT THE OFFSET. SHORT LXI,M A1,1 SHORT L A2,LRSTKL . NUMBER OF ITEMS THIS LEVEL. SHORT LSSC A2,1 . *2. SHORT S A2,R1 . SET UP COUNT. SHORT A,H2 A2,LREFIX . UPDATE SHORT S,H2 A2,LREFIX . STACK AREA POINTER. SHORT BT A0,0,*A1 . SCOOT THIS LEVEL DOWN. SHORT S,H2 A0,LREFI . UPDATE PERM AREA INDEX. SHORT ED10 TZ DL . IF WE ARE BACK AT ZERO LEVEL, SHORT J ED12L . MERELY RESET LREFIP. SHORT L,M A0,LREFI SHORT S A0,LREFIP SHORT SZ LRSTKL SHORT J ED20 SHORT ED12L L A0,LREFIX . NOT AT ZERO LEVEL. SHORT L A1,2,A0 . SET STACK LENGTH SHORT S A1,LRSTKL . FROM OUTER LEVEL. SHORT A,M A0,2 . OBLITERATE SHORT S,H2 A0,LREFIX . LEVEL-STACKING ITEM. SHORT ED20. SHORT . SHORT L A0,ED13 106900 SZ FF5 RESET FF5 107000 S R15,FD4 SET FD4 107100 L B4,ED11 107200 L B6,ED12 107300 J *ED30 . ENTER CYCLE LABEL(MAYBE), END DO ITEM, & EXITLOOP LABEL(MAYBE) EDO2* S,H2 B11,ED40 . SAVE RETURN LSSL A0,6 . ED13 LEFT IN A0 SSL A0,24 . PB WAS IN S2,S3 L,H1 A3,LOOP,A0 . GET SB OR A3,(0500000) . CYCLE FLAG A A4,INTNU . # OF INTERNAL ROUTINE LMJ B11,SLT . LOOK FOR LABEL +CRLBHL . LABEL HEAD LINK J NOCYCLE . NOFIND OR A4,PS21 . SET LABEL ITEM S A5,SLOUT,*B9 . SAVE S,H1 A5,LRFITM L A5,PL AN,M A5,2 S,H2 A5,LRFITM S,H1 B1,LRFITM+1 . CURRENT SEQUENCE NUMBER SLJ FLDEF . ADD LREF ENTRY L,H2 A1,FLF . LOGICAL IF NESTING LEVEL L,M A4,1 OR,S3 A4,LGIEXT,A1 . SET FLAG FOR LABELS S,S3 A5,LGIEXT,A1 WITH LABELS WITHIN LOOP JGD A1,$-2 NOCYCLE L A0,ED13 . RESTORE ED13 S A0,SLOUT,*B9 . SET END DO ITEM OR A3,(0600000) . EXIT LOOP FLAG A A4,INTNU . # OF INTERNAL ROUTINE LMJ B11,SLT . LOOK FOR LABEL +CRLBHL . LABEL HEAD LINK J *ED40 . NOFIND/ DONE OR A4,PS21 . SET LABEL ITEM S A5,SLOUT,*B9 . SAVE S,H1 A5,LRFITM L A5,PL S,H2 A5,LRFITM S,H1 B1,LRFITM+1 . CURRENT SEQUENCE NUMBER SLJ FLDEF L A0,DL . CURRENT DO LEVEL A,M A0,1 . PREVIOUS DO LEVEL L,H2 A0,DOTAB,A0 . PREVIOUS PB L,M A4,4 . MATERIALIZATION BIT OR,S4 A4,LOOP,A0 S,S4 A5,LOOP,A0 L,H2 A1,FLF . LOGICAL IF NESTING LEVEL L,M A2,1 OR,S3 A2,LGIEXT,A1 . SET FLAG FOR LABELS S,S3 A3,LGIEXT,A1 . WITH LABELS EITHIN LOOP JGD A1,$-2 J *ED40 . DONE . 107500 . IF (---) STATEMENT SCAN 263700 . 263800 IFP* . SZ FC4 DO FLAG 264100 SZ FD4 DO FLAG 264200 S,H2 B11,IF30 264300 J IF32 264800 . 264900 IF31 S,H2 B11,IF90 SET RETURN 2 265000 IF32 S,H2 B1,IF11 SAVE SEQ CT (SP) 265100 S,H1 R15,IFDEF INDICATE AN IF STMT TO N1SCR S,S1 R15,IFDEF . FLAG TO SCAR FOR CLOSING PARENTHESIS S R15,FEB NO=SIGN FOR SCAR 265300 LMJ B11,SCAR 265400 SZ,S1 IFDEF L A0,ST ST TYPE IN ST 265500 TNE,M A0,3 265600 J IF40 LOG STATMENT 265700 TNE,M A0,1 265800 J IF50 ARITH STATEMENT 265900 L B11,IF30 JZ A0,0,B11 SLJ BUG 266100 . 266200 IF300 SZ IFDEF L A1,FLF L B11,LGIEXT+1,A1 J 0,B11 . 266600 IF301 SZ FLF YES-RETURN 2 266700 J *IF90 REENT . 266900 . LOGICAL IF 267000 IF40 L,H2 A0,FLF TZ IFLSEZ . DO NOT INCREASE LEVEL ON IFELSE J IF401 A,M A0,1 TG,M A0,10 . MAX LEVEL OF NESTING J IF401A S A0,FLF L A1,DL . CURRENT DO LEVEL S,S3 A1,LGDOTS,A0 . SAVE AS FUNCTION OF IF LEVEL S,H1 A0,FLF J IF401 IF401A LMJ B11,PERR FORM6 02,10,0 . EXCEEDED LOGICAL IF NEST LEVEL OF 10 IF402A TZ FSCLN J IF403 LMJ B11,PERR FORM6 02,38,0 ILLEGAL STMT FOLLOWS LOGICAL IF L A0,IF15 267500 OR A0,IF11 S=SP=IF11 267600 S A1,STRING,*B5 F30 ITEM(ST TYPE ST=0) 267700 J IF403 . 267900 IF401 L A0,IF17 TZ IFLSEZ A,M A0,020 WF30 . OUTPUT LOGICAL IF SEPARATOR 268110 TNZ IFLSEZ J IF4JA L A0,(0120100,0) A,M A0,0,B1 . ADD IN SEQUENCE NUMBER WF30 A,M B1,1 . LEAVE ONE SEQUENCE NUMBER FOR IF IF4JA L A1,FLF TNZ IFLSEZ SZ,H1 LGIFSB,A1 TZ IFLSEZ S,S3 A1,LGIFSB,A1 . SET FLAG FOR IFELSE SZ IFLSEZ TNZ,S3 LGIFSB,A1 J $+3 L A0,LGIFSB,A1 S A0,LGELSE,A1 . SAVE START OF IF THRU IFELSE S,H2 B1,LGIFSB,A1 SAVE TILL END L A0,IFAST TNZ,S3 LGIFSB,A1 . ASTERISK ONLY SET AT BEGINNING S,S1 A0,LGIFSB,A1 L A0,IF30 S,H2 A0,LGIEXT,A1 TNZ,S3 LGIFSB,A1 . TEST ELSE IF BIT SZ,H1 LGIEXT,A1 L A0,PLABL S A0,LGLABL,A1 L A0,(' ') TZ IFAST S A0,PLABL IF411 L,H2 A0,IF11 SP 268330 TZ,S3 LGIFSB,A1 . TEST ACTIVE ELSE IF A,M A0,1 . LEAVE SPACE FOR ELSEIF OR A0,IF13 268500 S A1,SLOUT,*B9 F30 ITEM(LOG ST TYPE) 268600 L A0,CRCRFT DO NOT ENTER $LGIF$ IN CROSS REFERENCE S A0,SVCRFT SZ CRCRFT L,H2 A12,N0LOGF OUTPUT DEFINITION POINT FOR LMJ B11,GENDP2 L A0,SVCRFT S A0,CRCRFT S B11,IFAST . INSURE FIRST PASS FLAG IS SET SZ A12 IF411J LMJ B11,PSDP A,M B1,1 S B1,SEQL L A0,MACNO SZ IFELSE L A1,FLF S,S2 A0,LGIFSB,A1 TNZ IFAST . IS FIRST PASS FLAG SET? J IF411K . NO/ CONTINUE SZ IFAST . INSURE FLAG ZOTTED L A5,LGIEXT,A1 . S A5,LGIEXT+1,A1 . LMJ B11,SGX . SAVE PLACE LMJ B11,GX . CHECK FOR EOS J IF4PR . GOT IT! LMJ B11,RGX . NOPE/ RESTORE IF411K . LMJ B11,STD ST IN A0 OR RETURN 269100 L A1,MACNO SZ,H2 GNSFL L A2,FLF TE,S2 A1,LGIFSB,A2 J PH31GJ TNZ IFELSE ELSE CLAUSE OK ON LOG. IF TNZ,S3 TST3,A0 IS THIS ALLOWABLE STAT. 269200 J IF403 YES 269300 TNZ LISTST . INLIST AND OUTLIST OK J IF402A ILLEGAL STMT ON LOGICAL IF IF403 SR R15,LSLF .IN CASE NEXT STATEMENT=GO TO CSC17 L,H2 A1,TST,A0 LMJ B11,0,A1 . SCAN STATEMENT TZ FSCLN J IF411J SZ LSLF .RESET CSC17 IF404 L,XH2 A1,FLF TLE,M A1,1 J PH301 L,H2 A0,LGIFSB,A1 L A2,MACNO TE,S2 A2,LGIFSB,A1 J PH301 L,S1 A2,LGIFSB,A1 TE,M A2,'*' J $+3 LMJ B11,PSDP J PH301 SSC A0,30 A A0,IF16 TZ,S3 LGIEXT,A1 . TEST FOR LABEL IN IF A,M A0,040 TZ,S3 LGIFSB,A1 . TEST FOR IFELSE STATEMENT A,M A0,020 . MARK AS IFELSE S A0,SLOUT,*B9 L,S3 A0,LGIEXT,A1 TZ A0 S,S3 A0,LGIEXT-1,A1 . MOVE LABEL FLAG DOWN A LEVEL TNZ,S3 LGIFSB,A1 . DO NOT CHANGE LEVEL OF IF FOR IFELSE AN,M A1,1 S,H2 A1,FLF JNZ A1,IF404 J IF300 RETURN TO 1ST CALLER 270000 IF4PR L A1,FLF . GET LEVEL L,M A0,'*' . TO SET IF NOT SET TNZ,S3 LGIFSB,A1 . TEST FOR IFELSE STATEMENT S,S1 A0,LGIFSB,A1 . IF * AN,M B1,1 . SUBTRACT OUT NON EXISTENT STATEMENT S B1,SEQL L,H1 A1,COMMAC . SIMULATE TZ,T1 COMMAC SSL A0,6 TZ,H1 CRSD1 TNZ,S6 MAFLST . LIST GENERATED STMT. TZ A1 SLJ MACLST . SEND GENERATED STATEMENT TO PHASE VI SZ,S6 MAFLST . TURN OFF FORCED LISTING FLAG. L A1,FLF TNZ,S3 LGIFSB,A1 J IF404 . J PH301 . 270100 . ARITHMETIC IF 270200 IF50 TZ IFAST . ONLY HAS MEANING WITH LOGICAL IF J IF50J LMJ B11,SGX . SAVE PLACE LMJ B11,GX . TEST FOR VOID STATEMENT J IF50J . PROBABLY INTENDED TO BE LOGICAL LMJ B11,RGX . RESTORE PLACE TNZ FRD . IS THIS IN RANGE OF A DO J IF505 NO TZ LSLF . IF AN ARITHMETIC IF IS THE LAST STATEMENT J $+3 LAST STATEMENT OF LOGICAL IF OK LMJ B11,PERR YES, ERROR 37 FORM6 1,37,0 IF505 L,H2 A12,N0LOGF . SET DEFINITION AS IF LOGICAL LMJ B11,GENDP2 L A0,IF11 . SP OR A0,IF14 270400 S A1,SLOUT,*B9 F30 ITEM(ARITH ST TYPE) 270500 LMJ B11,PSDP OUTPUT ITEM TO FILE 30 270600 L,M A0,2 N-1=2 FOR GSLR 270700 LMJ B11,GSLR GET ST LABEL AND PROCESS 270800 A,M B1,2 L A0,B1 OR A0,IF18 ST.TYP.=ARITH. IF 270820 S A1,STRING,*B5 270830 SZ IFDEF J *IF30 IF50J LMJ B11,PERR FORM6 02,15,0 . AMBIGUOUS LOGICAL/ARITHMETIC IF J *IF30 . IF SENSE LITE-IF SENSE SWITCH STATEMENT 272100 . 272200 IFSL S,H2 B11,IH30 272300 S,S2 A0,IH11 ST TYPE IN 'A0' 272310 LMJ B11,GEYE GET 'I' AND OUTPUT TO F30 272320 J IH300 ERROR 272330 J IH311 PROCESS REST OF STAT. 272340 . 272350 IFSW* S,H2 B11,IH30 272360 S,S2 A0,IH11 ST TYPE IS IN 'A0' 272400 LMJ B11,GEYE GET I,OUTPUT F30 272500 J IH300 ERROR 272600 . 272700 IH311 L FNXT,R8 RESET NEXT L A0,GXX TNZ FEOS 272900 J IH301 NOT EOS 273000 LMJ B11,PERR EOS 273100 FORM6 01,4,0 273200 J IH300 273300 IH301 TNE,M A0,')' 273400 J IH302 X=RT PARENTHESIS 273500 LMJ B11,PERR 273600 FORM6 011,9,GXX 273700 IH302 L,M A0,3 N=3 IN A0 273800 IH501 S,S3 A0,IH11 SET N IN F30 ITEM 273900 L,M A0,1 K-1 IN A0 FOR GSLR 274000 LMJ B11,GSLR GET N1 AND N2 AND PROCESS THEM 274100 L A0,SEQL SEG OF ST LABEL IN SEQL 274200 OR A0,IH11 274300 S A1,STRING,*B5 F30 ITEM(ST TYPE) 274400 SZ FC4 DO FLAG 274500 SZ FD4 DO FLAG 274600 IH300 RES 0 274700 J *IH30 REENT . 275200 . IFAC OUFL, IF MQ OUFL, IF DIVIDE CHECK 275300 . 275400 IFAO* RES 0 275500 IFQO* RES 0 275600 IFDC* S,H2 B11,IH30 275700 S,S2 A0,IH11 ST IN A0 275800 L,M A0,2 N=2 275900 J IH501 276000 . 276100 LREFR* . FILE LABEL REFERENCE IN LREF - A1 -> SYM[LABEL]. SHORT . THIS VERSION SUPPORTS SHORT LREF ORGANIZATION. SHORT . SHORT S,H2 B11,LRFXIT . SAVE RETURN. SHORT L A2,PL . PLATEAU. SHORT+ L A0,2,A1 SHORT3 TZ DL SHORT J LRF50 SHORT JB A0,0,B11 . RETURN IF Q1 = 1. SHORT A,M A0,1 . SET Q1 IN SYM W3. SHORT S A0,2,A1 . TO INDICATE ZERO-LEVEL REFERENCE.SHORT L B11,LRFORG . SINCE THIS IS THE FIRST SHORT+ L A0,LREFI . ZERO-LEVEL REFERENCE, SHORT+ AN A0,B11 . SEE IF ZERO-LEVEL SHORT+ SSC A0,1 . DEFINITION ITEM SHORT+ JZ A0,LRF10 . EXISTS. SHORT+ L R1,A0 SHORT+ L A0,0,A1 . THE LABEL. SHORT+ AN,M B11,2 SHORT+ SE,H1 A0,2,*B11 SHORT+ J LRF10 . FOUND NOTHING. SHORT+ TP,XH2 0,B11 . DEFINITION? SHORT+ J $-3 . NO, KEEP LOOKING. SHORT+ TZ,S6 1,B11 . YES, WAS IT ZERO-LEVEL? SHORT+ J LRF10 . NO, FILE REFERENCE. SHORT+ L A0,2,A1 . YES, PICK UP SYM WORD 3. SHORT3 TEP,M A0,2 . ALREADY DELETED? SHORT3 SLJ BUG . YES, SHOULDN'T HAPPEN. SHORT3 A,M A0,2 . SET Q2 BIT SHORT3 S A0,2,A1 . FOR DELETION. SHORT3 L A0,0,B11 . SET PLATEAU OF DEFINITION SHORT3 S,S6 A0,3,A1 . IN W4 OF SYM SSL A0,6 . SIMULATE S,T3 S,S5 A0,3,A1 L,H2 A0,LREFI . DELETE THE DEFINITION. SHORT3 AN,M A0,2 SHORT3 S,H2 A0,LREFI SHORT3 AN,M A0,0,B11 SHORT3 L R1,A0 . WORDS TO MOVE. SHORT3 LXI,M B11,1 SHORT3 L A0,B11 SHORT3 LXM,M B11,2,B11 . POINT OF ORIGIN SHORT3 BT A0,0,*B11 . MOVE LREF DOWN 2 WORDS. SHORT3 J *LRFXIT . (MAKE NO ENTRY.) SHORT+ LRF10 L A0,*LREFIP . PICK UP APPROP INDEX. SHORT S,H2 A2,0,A0 . PLATEAU SHORT+ L A2,DL SHORT+ A,M A2,040 SHORT+ S,S4 A2,0,A0 . MARK REFERENCE ITEM. SHORT+ S A1,1,A0 . SYM(LABEL) SHORT S,H1 B1,1,A0 . SEQ(REFERENCE). SHORT L A2,0,A1 . VALUE(LABEL). SHORT S,H1 A2,0,*A0 SHORT LRFCHK L,H2 A2,LREFI . TEST FOR LREF OVERFLOW. SHORT TG,H2 A2,LREFIX SHORT J LRF20 . BAD. SHORT LRF15 S A0,*LREFIP . GOOD, RESTORE INDEX. SHORT J *LRFXIT . RETURN. SHORT LRF20 TZ LRFOFL . ALREADY NOTED? SHORT J *LRFXIT . YES. SHORT S R15,LRFOFL . MARK OVERFLOW. SHORT LMJ B11,PERR . FILE FATAL ERROR. SHORT FORM6 012,93,('LREF ') SHORT J *LRFXIT REENT LRF50. SHORT L A4,3,A1 . EXTRACT T3 SSC A4,12 SSL A4,24 TOP,M A0,2 . IF ALREADY DELETED SHORT3 J $+3 . AND DELETED PAIR WAS AT SHORT3 TNE A2,A4 . SAME PLATEAU J 0,B11 . DO NOTHING. SHORT3 TNZ LRSTKL . NONZERO-LEVEL REFERENCE. SHORT J LRF60 . SKIP SEARCH IF THIS DE LEVEL EMPTY.SHORT TZ LRFOFL . IF TABLE CLOBBERED, SHORT J *LRFXIT . DON'T TRY IT. SHORT LXI,M B11,2 SHORT+ LXM,H2 B11,LREFIX . LAST ENTRY THIS LEVEL -2. SHORT+ L R1,LRSTKL . NUMBER OF ENTRIES. SHORT L A0,0,A1 . LABEL VALUE. SHORT LRF50J SE,H1 A0,2,*B11 . REFERENCE ALREADY FILED J LRF60 . NO SHORT L A4,0,B11 . SIMULATE TE,T3 A2,0,B11 SSC A4,12 SSL A4,24 TE A2,A4 . IF ITEM NOT AT SAME PLATEAU J LRF50J TP,XH2 0,B11 . DID WE FIND A DEFN? SHORT3 J *LRFXIT . NO, MAKE NO ENTRY. SHORT3 L A0,2,A1 . YES; SHORT3 TEP,M A0,2 . ALREADY DELETED THIS LABEL? SHORT3 J LRF51 . YES, HANDLE MULTIPLE. SHORT3 A,M A0,2 . NO; SHORT3 S A0,2,A1 . SET Q2 FOR DELETION. SHORT3 L A0,0,B11 . SET PLATEAU S,S6 A0,3,A1 . AT WHICH DEFINED SSL A0,6 . SIMULATE S,T3 S,S5 A0,3,A1 L A0,LRSTKL SHORT3 AN,M A0,1 SHORT3 S A0,LRSTKL SHORT3 LN,H2 A0,LREFIX . DELETE THE DEFINITION. SHORT3 AN,M A0,2 SHORT3 SN,H2 A0,LREFIX SHORT3 A,M A0,0,B11 SHORT3 L R1,A0 . WORDS TO MOVE. SHORT3 LXI,XM B11,*-1,*0 SHORT3 LXM,M B11,1,B11 . POINT AT W2. SHORT3 L A0,B11 SHORT3 AN,M B11,2 . AVOID NEG OFFSET. SHORT3 BT A0,0,*B11 . SCOOT STACK UP. SHORT3 J *LRFXIT SHORT3 LRF51. SHORT3 S,S5 R15,1,B11 . YES, MARK REFERENCED. SHORT+ J *LRFXIT . MAKE NO ENTRY. SHORT+ LRF60 . SHORT L A0,LRSTKL . INCR ENTRY COUNT. SHORT A,M A0,1 SHORT S A0,LRSTKL SHORT J LRF10 . GO MAKE IT. SHORT . 279500 . PAUSE STATEMENT 341100 . 341200 PAU* RES 0 ST IN A0 ON ENTRY 341300 . 341400 . 341500 . 341600 . STOP STATEMENT 341700 . 341800 STOP* RES 0 341900 S,H2 B11,PP30 342000 SZ FC4 DO FLAG 342100 SZ FD4 DO FLAG 342200 S,S2 A0,PP11 ST IN A0 342300 LMJ B11,GX J PP301 END OF STATEMENT SZ FNXT SET NEXT LMJ B11,NGX + 6 PP302 SLJ TSCSYM INSURE SPACE IS AVAILALBE L A1,CRSYM L,M A0,073 S A2,0,A1 OR A1,PP13 SZ,H2 2,A1 S,S3 A0,2,*A1 S A1,CRSYM S A2,STRING,*B5 F30 ITEM(CONST,F=0) 344600 . 344700 LMJ B11,GX J PP306 END OF STATEMENT LMJ B11,PERR 345000 FORM6 0,4,0 345100 J PP306 345200 . 345300 PP301 L A2,(' ') J PP302 PP306 L A0,SEQL 345600 OR A0,PP11 ST IN PP11 345700 S A1,STRING,*B5 F30 ITEM(ST TYPE) 345800 PP300 RES 0 345900 J *PP30 EENT . PRE-ERROR ROUTINE 347100 . 347200 PERR* S,H2 B11,PE30 347300 S A0,PE12 SAVE A0 347400 S A1,PE13 SAVE A1 347410 L A0,0,B11 347420 SSC A0,18 347500 OR,M A0,01000 A+2 RETURN 347600 S A1,PE11 347700 SSL A1,18 L=LOC OF PARA OR LOC OF SYM--- 347800 TZ,M 0,A1 CONTENTS OF B0 CAN CHANGE L A1,0,A1 347900 S A1,PE11+1 N=ERROR NO. 348000 L A1,SEQL . SEQ NO. OF LABEL TZ FPAR L A1,LISTSQ SEQUENCE NUMBER AT START OF LIST L,XH2 A0,FLF JZ A0,$+3 TN LGIFSB,A0 L,H2 A1,LGIFSB,A0 S,H1 A1,PE11 348200 LMJ B11,ERFP 348300 + PE11 348400 L B11,PE30 REENT L A0,PE12 348600 L A1,PE13 348700 J 1,B11 348800 . 348900 . PRE FUNCTION FUNCTION-SUBROUTINE PROCESSOR 349800 . 349900 PFSP* S,H2 B11,PF30 350000 S R15,FMPX SET SUBROUTINE FLAG FORTRA L,M A0,8 . GET 8 WORDS OF TABLE LMJ B11,PRQEST . GET SPACE IN SYM SLJ SYMOF . SYM OVERFLOW L A1,A0 . A1=ADDR OF TOP OF SPACE SSL A1,18 L,M A2,0 SZ 1,A1 . S1 IS # OF ARG'S, S3 IS TYPE OF ENTRY . H2 POINTS TO ARG'S SZ 2,A1 SZ 3,A1 SZ 4,A1 SZ 5,A1 SZ 6,A1 . CLEAR FORWARD LINK L B11,CRSYM S,H2 B11,7,A1 S A2,0,A1 . STORE BACKWARD LINK TZ EPPTR . ZERO MEANS FIRST TIME THRU J PF250 . NOT FIRST TIME THRU S,H1 A1,EPPTR . H1: ADDR OF FIRST ENTRY S,H2 A1,EPPTR . H2: ADDR OF LAST ENTRY J PF260 . SKIP THE NEXT BUNCH OF CODE PF250 L,H2 A2,EPPTR . A2=ADDR OF OLD LAST ENTRY S,H2 A2,0,A1 . LINK BACKWARDS TO OLD LAST ENTRY S,H2 A1,EPPTR . UPDATE ADDR OF LAST ENTRY S,H2 A1,6,A2 . LINK FORWARD TO NEW NEXT ENTRRXYYYYY PF260. TNZ FFS IS THIS 1ST STAT 350100 J PF301 NO 350200 SZ FMP SET MAIN PROGRAM FLAG 350300 S B1,SCB 350600 A,M B1,1 S+1 IN S 350700 J PF302 350800 PF301 LMJ B11,ENDSUB END PREVIOUS PROGRAM ETC. 350900 PF302 LMJ B11,GIT 351000 J PF303 EOS 351100 PF312 L,H2 B11,PF30 READY FOR EXIT 351200 TNE,M A2,3 IS ITEM=VAR NAME 351300 J 1,B11 YES 351400 LMJ B11,ERR4 351500 J *PF30 EXIT 351600 J PF312 351700 . 351800 PF303 LMJ B11,PERR 351900 FORM6 1,4,0 FOLLOWING STMT INCOMPLETE J *PF30 352100 . . PROCESS STATEMENT LABEL 355900 . 356000 PSTL* S,H2 B11,PS40 356100 L A4,PLABL S A4,F60ID REENT TNE A4,(' ') J PS401 NO 356500 TZ MACNO SLJ MCLABL TEST IF LABEL SHOULD BE RENAMED L A0,A4 L,H1 A5,COMMAC . SIMULATE TZ,T1 COMMAC SSL A5,6 TNZ,H1 CRSD1 TZ A5 J PSTL2 TNZ MACNO REENT J $+6 REENT PSTL2 L A5,A4 L,M A3,5 REENT LMJ B11,MACEBD CONVERTTO CHARACTERS REENT S A2,F60ID REENT L A0,A5 REENT TLE A0,(100000) TEST FOR MAX LABEL JNZ A0,PS402 . ALSO FLAG ZERO AS LABEL LMJ B11,PERR YES-ERROR 356900 FORM6 021,39,PLABL . MAKE LREF ENTRY 357200 PS402 S,H1 A0,LRFITM LABEL IN H1(LREF(1)) SHORT+ L A2,PL PL=PLATEAU NO. 357400 S,H2 A2,LRFITM PL IN H2(LREF(1)) SHORT+ S,H1 B1,LRFITM+1 SEQ IN H1(LREF(2)) SHORT+ . OUTPUT F30 ITEM 357800 OR A0,PS21 LABEL IS IN A0 357900 A A1,INTNU . ADD PROGRAM NUMBER TO LABEL S A1,STRING,*B5 F30 ITEM (ST. LABEL) 358000 L,H2 A1,FLF . LOGICAL IF NESTING LEVEL L,M A2,1 OR,S3 A2,LGIEXT,A1 .SET FLAG FOR LABELS S,S3 A3,LGIEXT,A1 . WITH LABELS WITHIN LOOP JGD A1,$-2 . SHORT . REMOVE COMMENT FROM NEXT CARD WHEN LREF OVERLAYS N1COM. SHORT+ . TZ FXL . DO NOT DESTROY N1COM PREMATURELY. SHORT+ SLJ FLDEF . FILE LABEL DEFN IF ANY & IF FXL ON SHORT+ J PS401 SHORT+ . SHORT+ FLDEFR DS A0,LRFSVA REENT DS A2,LRFSVA+2 SHORT+ L,S3 A0,INTNU SHORT+ LSSC A0,12 SHORT+ A A0,DL . ADD DO LEVEL. SHORT+ S,H2 A0,LRFITM+1 . (TO LREF ITEM) SHORT+ TZ DL . IF WE ARE AT ZERO LEVEL: SHORT+ J PSLR10 SHORT+ L B11,LRFORG . SET UP SEARCH OF STATIC AREA. SHORT+ L A0,LREFI SHORT+ AN A0,B11 SHORT+ SSC A0,1 SHORT+ JZ A0,PSLR05 . EMPTY. SHORT+ L R1,A0 SHORT+ L,H1 A0,LRFITM . THE LABEL. SHORT+ AN,M B11,2 SHORT+ SE,H1 A0,2,*B11 . FIND SOMETHING. SHORT+ J PSLR05 . NOFIND, MAKE STATIC ENTRY. SHORT+ TN,XH2 0,B11 . IF FOUND A DEFN, SHORT+ J PSLR05 . MAKE ENTRY. SHORT+ L,S4 A1,0,B11 . IF NOT A SHORT+ TE,M A1,040 . ZERO-LEVEL REFERENCE, SHORT+ J $-6 . KEEP GOING. SHORT+ L,H2 A1,1,B11 . SYM(REFERENCE) SHORT3 L A0,2,A1 SHORT3 TEP,M A0,2 . ALREADY DELETED? SHORT3 J PSLR01 . YES, FILE MULTIPLE DEFN. SHORT3 A,M A0,2 . NO, SET Q-BIT. SHORT3 S A0,2,A1 SHORT3 L A0,LRFITM . SET PLATEAU S,S6 A0,3,A1 . SIMULATE S,T3 SSL A0,6 S,S5 A0,3,A1 L,H2 A0,LREFI . DELETE THE REFERENCE. SHORT3 AN,M A0,2 SHORT3 S,H2 A0,LREFI SHORT3 AN,M A0,0,B11 SHORT3 L R1,A0 . WORDS TO MOVE. SHORT3 LXI,M B11,1 SHORT3 L A0,B11 SHORT3 LXM,M B11,2,B11 . POINT OF ORIGIN SHORT3 BT A0,0,*B11 . MOVE LREF DOWN 2 WORDS. SHORT3 J PS401X SHORT3 PSLR01 S,S5 R15,LRFITM+1 . MARK NEW DEFN ITEM SHORT+ DL A0,LRFITM . REFERENCED FROM SAME DO LEVEL SHORT+ DS A0,0,B11 . AND REPLACE REF ITEM WITH DEFN. SHORT+ J PS401X SHORT+ PSLR05. SHORT+ L A0,*LREFIP . ADD NEW DEFN ITEM SHORT+ DL A2,LRFITM . TO WHICHEVER PART SHORT+ DS A2,0,*A0 . WE'RE WORKING ON, SHORT+ L,M A2,PS401X . GO CHECK FOR OVERFLOW. SHORT+ S,H2 A2,LRFXIT SHORT+ J LRFCHK SHORT+ PSLR10. SHORT+ TNZ LRSTKL . SKIP SEARCH SHORT+ J PSLR20 . IF THIS LEVEL EMPTY. SHORT+ TZ LRFOFL . SKIP EVERYTHING SHORT+ J PS401X . IF TBL OVERFLOW. SHORT+ LXI,M B11,2 . SET UP FOR SEARCH. SHORT+ LXM,H2 B11,LREFIX SHORT+ L A2,LRFITM . GET PLATEAU OF DEFINITION SSC A2,12 SSL A2,24 . SIMULATE L,T3 L R1,LRSTKL SHORT+ L,H1 A0,LRFITM SHORT+ PSLR10J SE,H1 A0,2,*B11 J PSLR20 . NO FIND. SHORT+ L A3,0,B11 . IF ITEM NOT AT SAME PLATEAU SSC A3,12 SSL A3,24 . SIMULATE TE,T3 A2,0,B11 TE A2,A3 J PSLR10J TN,XH2 0,B11 . IF FOUND DEFN, SHORT+ J PSLR20 . MAKE SECOND ENTRY. SHORT+ L,H2 A1,1,B11 . SYM(REFERENCE) SHORT3 L A0,2,A1 SHORT3 TEP,M A0,2 . IF THIS LABEL ALREADY SHORT3 J PSLR01 . DELETED, FILE MULT DEFN. SHORT3 A,M A0,2 . SET Q2 SHORT3 S A0,2,A1 . FOR LABEL. SHORT3 S,S6 A2,3,A1 . SET PLATEAU OF DEFINITION SSL A2,6 . SIMULATE S,T3 A2,3,A1 S,S5 A2,3,A1 L A0,LRSTKL SHORT3 AN,M A0,1 SHORT3 S A0,LRSTKL SHORT3 LN,H2 A0,LREFIX . DELETE THE REFERENCE. SHORT3 AN,M A0,2 SHORT3 SN,H2 A0,LREFIX SHORT3 A,M A0,0,B11 SHORT3 L R1,A0 . WORDS TO MOVE. SHORT3 LXI,XM B11,*-1,*0 SHORT3 LXM,M B11,1,B11 . POINT AT W2. SHORT3 L A0,B11 SHORT3 AN,M B11,2 SHORT3 BT A0,0,*B11 . SCOOT STACK UP. SHORT3 J PS401X SHORT3 PSLR20. SHORT+ L A0,LRSTKL . ADD NEW DEFN ENTRY SHORT+ A,M A0,1 . TO DO STACK. SHORT+ S A0,LRSTKL SHORT+ J PSLR05 SHORT+ PS401X. SHORT+ DL A0,LRFSVA SHORT+ DL A2,LRFSVA+2 J *FLDEF SHORT+ . SHORT . CONVERT NEXT LABEL 358100 PS401* TZ FDASC . TEST FOR ASCII LINE J PS401A . IT WAS AN ASCII LINE L A0,NLINE+1 . GET FIRST SIX COLUMNS AND A0,(0777777777700) GET RID OF COL 6 358300 PS401B TE A1,(050505050500) J PS403 YES 358320 L A3,(' ') NO-PUT BLANKS NLABL 358330 J PS406 358340 . CONVERT LABEL--LABEL IS A0 LEFT ADJUSTED 358350 PS4033 L A3,(' ') J PS406 PS403 RES 0 PS4034 SZ A3 A3= CONVERTED LABEL L,M A4,4 A4=NO. OF POSSIBLE DIGITS-1 358380 L,M A5,9 A5=TEST FOR ALLOWABLE CHAR. 358390 PS404 SZ A1 358400 DSC A0,66 HIGH ORDER DIGIT IN A1 358405 TNE,M A1,' ' IS CHAR BLANK 358410 J PS405 YES-IGNORE BLANKS 358420 TLE,S6 A5,FLD7,A1 IS THIS A DECIMAL DIGIT 358430 J PS407 NO ERROR (IGNORE IT) 358440 MSI,M A3,10 N*10 IN A3 358450 A,S6 A3,FLD7,A1 N+DIGIT INTO A3 358460 PS405 JGD A4,PS404 DONE -NO JUMP 358470 PS406 S A3,NLABL YES-PUT LABEL 'NLABL' 358480 J *PS40 REENT PS401A SZ A1 L,Q1 A0,NLINE+1 . COLUMN 1 A,H1 A1,ASCFDASC$,A0 LSSL A1,6 L,Q2 A0,NLINE+1 . COLUMN 2 A,H1 A1,ASCFDASC$,A0 LSSL A1,6 L,Q3 A0,NLINE+1 . COLUMN 3 A,H1 A1,ASCFDASC$,A0 LSSL A1,6 L,Q4 A0,NLINE+1 . COLUMN 4 A,H1 A1,ASCFDASC$,A0 LSSL A1,6 L,Q1 A0,NLINE+2 . COLUMNN 5 A,H1 A1,ASCFDASC$,A0 LSSL A1,6 L A0,A1 . SET FOR REGISTER COMPATIBILITY J PS401B . 358500 PS407 L A1,SEQL . 8/29/63 FOR PH1-9B A,M A1,1 . 8/29/63 FOR PH1-9C S A1,SEQL . 8/29/63 FOR PH1-9D LMJ B11,PERR . 8/29/63 FOR PH1-9E FORM6 010,39,NLINE+1 . 8/29/63 FOR PH1-9F L A1,SEQL . 8/29/63 FOR PH1-9G ANA,M A1,1 . 8/29/63 FOR PH1-9H S A1,SEQL . 8/29/63 FOR PH1-9I J PS4033 . RETURN STATEMENT 379900 . 380000 RET* S,H2 B11,RT30 380100 TNZ FLF RETURN OK AFTER LOGICAL IF TNZ FRD RANGE OF DO J $+4 LMJ B11,PERR FORM6 02,37,0 IMPROPER DO ENDING J PH304 TZ FMP IS MAIN PROG. FLAG RESET 380110 J RT306 . NO SCAN RETURN STATEMENT TZ CRPRO YES-IS CR MAIN PROG. FLAG RESET 380130 J RT306 . NO SCAN RETURN STATEMENT S,H2 B11,PP30 .CHARGE TO A STOP LA,M A0,022 CSC17 SA,S2 A0,PP11 CSC17 LMJ B11,GIT CSC17 J RT307 CSC17 TNE,M A2,04 CSC17 J RT405 CSC17 RT307 LMJ B11,PERR CSC17 FORM6 0,122,0 S B11,FEOS . MAKE SCAN SKIP REST OF STATEMENT J PP301 RT306 SZ FC4 DO FLAG SZ FD4 DO FLAG 380300 L,M A0,023 RETIND S,S2 A0,RT12 SET TYPE FOR NORMAL RETURN RETIND LMJ B11,GIT 380400 J RT301 EOS 380500 TNE,M A2,4 380600 J RT302 ITEM,INTEGER CONSTANT 380700 TNE,M A2,3 380710 J RT400 380720 TNE,M A2,15 . TEST FOR LEFT PARENTHESIS RETIND J RT406 RETIND RT407 . RETIND LMJ B11,ERR1 380800 J RT301 380900 L A2,3,A1 380910 S A2,GITV 380920 RT302 L A2,GITV 381000 AND A2,(0777777700000) 381100 JZ A3,RT303 381200 LMJ B11,PERR ITEM TOO LARGE 381300 FORM6 011,29,GITV 381400 J RT301 381500 RT303 OR A2,RT11 381600 S A3,STRING,*B5 F30 ITEM(CONST,F=1) 381700 RT304 L A0,SEQL 381800 OR A0,RT12 381900 S A1,STRING,*B5 F30 ITEM(ST TYPE) 382000 J *RT30 REENT . 382200 RT301 L A0,RT13 382300 S A0,STRING,*B5 F30 ITEM(DROP OUT,DOT=1) 382400 J RT304 382500 RT400 LMJ B11,GINTV 382510 J RT302-2 382520 LMJ B11,VTF30 382530 L A0,GXX RETIND TNE A0,')' RETIND LMJ B11,GX RETIND NOP . DISCARD PARENTHESIS FOR INDIRECT RETURN RETIND J RT304 382540 RT405 L A2,GITV CSC17 TNE A2,(0) CSC17 J RT302 CSC17 J RT307 CSC17 RT406 L,M A0,44 RETIND S,S2 A0,RT12 SET TYPE FOR INDIRECT RETURN RETIND LMJ B11,GIT RETIND J RT407 RETIND TNE,M A2,3 MUST BE VARIABLE FOR INDIRECT RETURN RETIND J RT400 RETIND J RT407 RETIND . DIAGNOSTIC STATEMENT SCAN 453100 . 453200 . (FOR COMPILER TESTING ONLY) 453300 . 453400 SDBUG* S,H2 B11,SD30 453500 LMJ B11,SGX TRACE LMJ B11,GX TRACE J SD30 TRACE TNE,M A0,'E' TRACE J SDTRA TRACE LMJ B11,RGX TRACE SZ CUSFL SD SZ FNXT DO LMSC , DL A0,('ATHENA$ ') DO JPL , DL A0,('DP$ ') TZ CREMOT DS A0,RPFOR$+1 L,M A0,'O' 453700 S A0,GXX O IN GXX 453800 SR R15,FOCT OCTAL FLAG FOR GIT 453850 LMJ B11,GIT GET N 453900 SLJ BUG 454000 SZ FOCT . CLEAR OCTAL FLAG TE,M A2,4 ITEM NO = INTEGER CONSTANT 454100 J SD304 454200 L A4,GITV 454250 TNE,M A4,0100 TEST FOR SPECIAL N0MN DUMPS OF BUFFER TRACE J SD404 TRACE AND,M A4,7 454300 JZ A5,SD303 . ZERO LEVEL DUMPS TNE,M A5,2 SHORT3 J SD305 TNE,M A5,1 SHORT3 J SD305J ONLY DUMP PHASE 1 TABLES ONCE SHORT3 TE,M A5,6 J SD302 S A4,HOLOUT WRITE PHASE 6 DIAGNOSTIC ON L,M A4,034 FILE 60 S,S1 A4,HOLOUT L A0,(1,HOLOUT) L,M A1,15 . LENGTH L,M A2,0 . NO TERMINATING CONTROL WORDS L,M A3,0 . FORCE TO FIELDATA LMJ B11,W60F SD301 LMJ B11,GX 454750 J *SD30 REENT TNE,M A0,',' J SD SD30X* LMJ B11,PERR TRACE FORM6 0,27,0 454900 J *SD30 455000 SD305 S,S5 A5,CRD SHORT3 SD305J S,S6 A5,CRD ONLY DUMP TABLES ONE SHORT3 AND,M A4,0770 REMOVE JNZ A5,SD301 SHORT3 SZ CRD TURN PHASE 1 DIAGNOSTICS (SNAPS) OFF REMOVE J SD301 455100 SD302 S A4,STRING,B5 STORE ENTIRE OCTAL DIAGNOSTIC 455150 L,M A4,ID19 455200 S,S1 A4,STRING,*B5 455250 J SD301 455300 SD304 SR R15,CRD ERRONEOUS 455400 LA A4,(0340000000003) SETS ALL 455500 SA A4,STRING,*B5 DIAGNOSTIC 455550 L A4,(0340000000505) FLAG FOR PHASE 5 455600 SA A4,STRING,*B5 455650 J SD301 455700 SD303 AND,M A4,030 . MAY BE 50,60,70 SSL A5,3 L A0,A5 S R15,BGKLDG-1,A0 . SET PROPER FLAG J SD301 SD404 S A4,CRN0DP TRACE S A4,CRD J SD301 TRACE SDTRA . TRACE S A13,('SVA13 ') TRACE L,M A13,036 ALL POSSIBILITIES ON LMJ B11,GIT TRACE J SDTRX NO SPECIFICATIONS TRACE EVERY THING TRACE SZ A13 ONLY SPECIFIED CONTINGENCIES TRACE SDTRB TE,M A2,3 TRACE J SD30X TRACE L A0,GITV TRACE TNE A0,('OPTION') TRACE J SDTRC TRACE IOPROC EQU 0 DO IOPROC , TNE A0,('IO ') DO IOPROC , SLJ SDTRIO L A1,(1,0) TRACE L,M R1,4 TRACE SE A0,TRACN,*A1 TRACE J SD30X TRACE L,M A2,1 TRACE LSSC A2,0,A1 TRACE OR,M A13,0,A2 SET TRACE TYPE L A13,A14 SDTRE . LMJ B11,GX TEST FOR COMMA SEPARATING GROUP TRACE J SDTRX TRACE TE,M A0,',' TRACE J SDTRX TRACE LMJ B11,GIT TRACE J SDTRX TRACE J SDTRB TRACE SDTRX A,H2 A13,TRACF ON/OFF FLAG TRACE OR,H1 A13,TRACF SHORT JNB A13,SDTRZ SHORT SDTRY S,H1 A14,TRACF SHORT SSC A13,18 TRACE A A13,(0340000,5) MARK FOR PHASE V TRACE S A13,STRING,*B5 TRACE L A13,('SVA13 ') TRACE J SD30 TRACE SDTRZ XOR,M A13,0377 AND,H1 A14,TRACF SHORT L A14,A15 SHORT J SDTRY SHORT SDTRC L A0,GXX TRACE TE,M A0,'(' TRACE J SD30X BAD SYNTAX TRACE SDTRD L FNXT,R8 DISCARD '(' OR ',' TRACE LMJ B11,GIT TRACE J SD30X THERE MUST BE A CLOSING PARENTHESES TRACE L A0,GITV TRACE TE,M A2,3 TEST FOR VARIABLE TRACE J SD30X TRACE L A1,(1,0) TRACE L,M R1,3 TRACE SE A0,TRACO,*A1 TRACE J SD30X TRACE L,M A2,1 TRACE AN,M A1,1 TRACE LSSC A2,0,A1 TRACE L A3,CRTRAC GLOBAL TRACE FLAGS TRACE XOR,M A3,0,A2 REVERSED ON OPTION TRACE S A4,CRTRAC TRACE L,H2 A14,TRACF STOP IS ZERO IN H2 JNB A14,$+3 TNZ A13 L,M A13,036 SET ALL IF ONLY OPTIONS LSSL A2,5 OR,M A13,0,A2 L A13,A14 LMJ B11,GX TEST FOR COMMA SEPARTING OPTIONS TRACE J SD30X TRACE L A0,GXX TRACE TNE,M A0,',' TRACE J SDTRD TRACE TE,M A0,')' TRACE J SD30X BAD SYNTAX TRACE L FNXT,R8 TRACE J SDTRE LOOK FOR MORE GROUPS TRACE DO 1-IOPROC , PROC SDTRIR S A0,('SVAOIO') REENT L A4,('NERR8$') NERR8$ LMJ B11,SLT NERR8$ +CRGHL NERR8$ J $+2 NERR8$ J SDTREX NERR8 ALREADY INITIALIZED NERR8$ LMJ B11,SLTI INSERT IF NOT IN NERR8$ L,M A2,2 NERR8$ S,S3 A2,2,A1 MARK AS EXTERNAL FUNCTION NERR8$ S,H1 A2,3,A1 DEFINE SO STORAGE WILL BE ASSIGNED NERR8$ S,H2 A1,SDTRTB+8 . LOC OF NERR8 TO RELOCATE BY NERR8$ L A1,('NERR0$') NERR8$ S A1,GITV NERR8$ SLJ CM305S MAKE ENTRY FOR COMMON BLOCK NERR8$ S A2,R4 NERR8$ L B10,(1,0) SLJ CM401S MAKE ENTRY FOR VARIABLE NAME NERR8$ L A0,(-0105,-1) S A0,MLINK L,M A0,PRESYM+10 LXI,M A0,0,B10 LMJ B11,MTLT SLJ SYMOF S,H2 A1,SDTRTB+1 VARIBLE REFERENCE IN PSUEDO DATA STANERR8$ L A0,(1,SDTRTB) NERR8$ LMJ B11,WF60 ADD PSUEDO DATA STATEMENT TO F60 NERR8$ SDTREX L A0,('SVA0IO') NERR8$ J *SDTRIO NERR8$ DO IOPROC , PROC END $(2) . T SDTRTB . START OF ITEMS FOR PSUEDO DATA STATEMENT NERR8$ +030000,0 NERR8$ +020040,0 . NERR0$ REFERENCE NERR8$ +070100,0 NERR8$ +01001,0,0 . '=' OPERATOR NERR8$ +0124300,0 STATEMENT TYPE ITEM NERR8$ +0330000,0 END OF LIST NERR8$ +0470000,0 END OF VARIABLES NERR8$ +0 TEXT WORD TO RELOCATE NERR8$ +0400044,0 . RELOC 36 BITS WRT LOC OF NERR8 NERR8$ +0570000,0 NERR8$ +0330000,0 NERR8$ +0570000,0 NERR8$ +0600000,0 NERR8$ TRACO +'SHORT ' TRACE +'INDVAR' TRACE +'OCTAL ' TRACE TRACN 'IO ' TRACE 'LABELS' TRACE 'LOOPS' TRACE 'STORES' TRACE $(1) . REENT . 456700 . SCAN SENSE LIGHT I AND SENSE SWITCH I 390900 . 391000 SENL* S,H2 B11,SN30 391300 SZ FC4 DO FLAG 391400 SZ FD4 DO FLAG 391500 S,S2 A0,SN11 ST IS IN A0 391600 LMJ B11,GEYE GET I AND OUTPUT IT 391700 J SN300 ERROR 391800 L A0,SN11 391900 OR A0,SEQL S OF LABEL 392000 S A1,STRING,*B5 F30 ITEM(ST TYPE) 392100 TZ FEOS 392200 J SN300 EOS 392300 LMJ B11,PERR 392400 FORM6 0,4,0 392500 SN300 RES 0 392600 J *SN30 REENT $(2) SIXTHS FORM 6,6,6,6,6,6 . . P1TAB1,FLD2,FLD1,FLD8 . . S1 ERR2,PAR,READ,GABC CHAR, ALPHA, PUNCTUATION GX . S2 GOTO,GLD,D0 CHAR, ALPHA, NUMERIC GX . S3 CMN . S4 EQU . S5 IMP, DTYPE TYPE TABLE . S6 MN SUBRO, FUNCTION OR BLOCK DATA . P1TAB1* SIXTHS 4, 3, 4, 3, 00, 0 -SPACE 0 0 SIXTHS 4, 3, 4, 3, 00, 0 -SPACE 1 1 SIXTHS 4, 3, 4, 3, 00, 0 -SPACE 2 2 SIXTHS 4, 3, 4, 3, 00, 0 -SPACE 3 3 SIXTHS 4, 3, 4, 3, 00, 0 -SPACE 4 4 SIXTHS 4, 3, 4, 3, 00, 0 -SPACE 5 5 SIXTHS 0, 0, 0, 3,020, 0 -A 6 6 SIXTHS 0, 0, 0, 3,020, 0 -B 7 7 SIXTHS 0, 0, 0, 3,020, 0 -C 8 10 SIXTHS 0, 0, 0, 3,020, 0 -D 9 11 SIXTHS 0, 0, 0, 3,020, 0 -E 10 12 SIXTHS 0, 0, 0, 3,020, 0 -F 11 13 SIXTHS 0, 0, 0, 3,020, 0 -G 12 14 SIXTHS 0, 0, 0, 3,020, 0 -H 13 15 SIXTHS 0, 0, 0, 3,010, 0 -I 14 16 SIXTHS 0, 0, 0, 3,010, 0 -J 15 17 SIXTHS 0, 0, 0, 3,010, 0 -K 16 20 SIXTHS 0, 0, 0, 3,010, 0 -L 17 21 SIXTHS 0, 0, 0, 3,010, 0 -M 18 22 SIXTHS 0, 0, 0, 3,010, 0 -N 19 23 SIXTHS 0, 0, 0, 3,020, 0 -O 20 24 SIXTHS 0, 0, 0, 3,020, 0 -P 21 25 SIXTHS 0, 0, 0, 3,020, 0 -Q 22 26 SIXTHS 0, 0, 0, 3,020, 0 -R 23 27 SIXTHS 0, 0, 0, 3,020, 0 -S 24 30 SIXTHS 0, 0, 0, 3,020, 0 -T 25 31 SIXTHS 0, 0, 0, 3,020, 0 -U 26 32 SIXTHS 0, 0, 0, 3,020, 0 -V 27 33 SIXTHS 0, 0, 0, 3,020, 0 -W 28 34 SIXTHS 0, 0, 0, 3,020, 0 -X 29 35 SIXTHS 0, 0, 0, 3,020, 0 -Y 30 36 SIXTHS 0, 0, 0, 3,020, 0 -Z 31 37 SIXTHS 4, 3, 4, 2, 00, 0 -) 32 40 SIXTHS 1, 3, 4, 3, 00, 0 -& 33 41 SIXTHS 2, 3, 4, 3, 00, 0 -+ 34 42 SIXTHS 4, 3, 4, 3, 00, 0 -< 35 43 SIXTHS 4, 3, 4, 3, 00, 0 -= 36 44 SIXTHS 4, 3, 4, 3, 00, 0 -> 37 45 SIXTHS 4, 3, 4, 3, 00, 0 -+ 38 46 SIXTHS 4, 3, 4, 3, 00, 0 -$ 39 47 SIXTHS 4, 3, 4, 3, 00, 0 -* 40 50 SIXTHS 4, 2, 2, 1, 00, 0 -( 41 51 SIXTHS 4, 3, 4, 3, 00, 1 -SPACE 42 52 SIXTHS 4, 3, 4, 3, 00, 0 -: 43 53 SIXTHS 4, 3, 4, 3, 00, 1 -SPACE 44 54 SIXTHS 4, 3, 4, 3, 00, 0 -SPACE 45 55 SIXTHS 3, 3, 1, 0, 00, 1 -, 46 56 SIXTHS 4, 3, 4, 3, 00, 0 -SPACE 47 57 SIXTHS 0, 1, 4, 3, 00, 1 -0 48 60 SIXTHS 0, 1, 4, 3, 00, 0 -1 49 61 SIXTHS 0, 1, 4, 3, 00, 1 -2 50 62 SIXTHS 0, 1, 4, 3, 00, 0 -3 51 63 SIXTHS 0, 1, 4, 3, 00, 0 -4 52 64 SIXTHS 0, 1, 4, 3, 00, 0 -5 53 65 SIXTHS 0, 1, 4, 3, 00, 0 -6 54 66 SIXTHS 0, 1, 4, 3, 00, 0 -7 55 67 SIXTHS 0, 1, 4, 3, 00, 1 -8 56 70 SIXTHS 0, 1, 4, 3, 00, 0 -9 57 71 SIXTHS 4, 3, 4, 3, 00, 0 -' 58 72 SIXTHS 4, 3, 4, 3, 00, 0 -SPACE 59 73 SIXTHS 4, 3, 3, 3, 00, 1 -/ 60 74 SIXTHS 4, 3, 4, 3, 00, 0 -. 61 75 SIXTHS 4, 3, 4, 3, 00, 0 -SPACE 62 76 SIXTHS 4, 3, 4, 3, 00, 1 -STOP 63 77 SIXTHS 0,0,0,0,0,0 . 64 101 DEFINE FILE SIXTHS 0,0,0,0,0,0 . 65 102 FIND . . P1TAB3,TST2,FLD3,FLDG2,SLIST3,SUANT3,SCART1 . . S1 SCAR SCARY . S2 SCAR SCARQ . S3 TYPE,SUBF STATEMENT TYPE X . S4 SLIS,SCAR CHAR, DATA LITERAL SCAN GX . S5 ERR,SCAR SCAR 80 X . S6 STD,IMPL ALPHANUMERIC, PUNCTUATION GX . FORS FORM 18,6,6,6 P1TAB3* FORS 6,0,19,6 -SPACE 0 FORS 6, 0, 27, 6 -SPACE 1 FORS 6, 0, 28, 6 -SPACE 2 FORS 6, 0, 20, 6 -SPACE 3 FORS 6, 0, 21, 6 -SPACE 4 FORS 6, 0, 24, 6 -SPACE 5 FORS 6, 0, 22, 0 -A 6 FORS 6, 0, 23, 0 -B 7 FORS 6, 0, 25, 0 -C 8 FORS 6, 0, 9, 0 -D 9 FORS 6, 0, 12, 0 -E 10 FORS 6, 0, 11, 0 -F 11 FORS 6, 0, 13, 0 -G 12 FORS 6, 0, 10, 0 -H 13 FORS 6, 0, 15, 0 -I 14 FORS 6, 0, 15, 0 -J 15 FORS 6, 0, 14, 0 -K 16 FORS 6, 0, 0, 0 -L 17 FORS 6, 0, 0, 0 -M 18 FORS 6, 0, 15, 0 -N 19 FORS 6, 0, 18, 0 -O 20 FORS 6, 0, 26, 0 -P 21 FORS 6, 0, 10, 0 -Q 22 FORS 6, 0, 3, 0 -R 23 FORS 6, 0, 3, 0 -S 24 FORS 6, 0, 3, 0 -T 25 FORS 6, 0, 1, 0 -U 26 FORS 6, 0, 0, 0 -V 27 FORS 6, 0, 3, 0 -W 28 FORS 6, 0, 3, 0 -X 29 FORS 6, 0, 3, 0 -Y 30 FORS 6, 0, 3, 0 -Z 31 FORS 6, 2, 2, 4 -) 32 FORS 6, 0, 2, 6 -& 33 FORS 6, 0, 2, 6 -+ 34 FORS 6, 0, 2, 6 -< 35 FORS 6, 0, 2, 5 -= 36 FORS 6, 0, 2, 6 -> 37 FORS 6, 0, 2, 6 -+ 38 FORS 6,0,3,0 -$ 39 AREFLK FORS 6, 0, 3, 6 -* 40 FORS 6, 0, 2, 3 -( 41 FORS 2, 0, 2, 6 -SPACE 42 FORS 2, 0, 2, 6 -COLON 43 FORS 6, 0, 2, 6 -SPACE 44 FORS 6, 0, 2, 6 -SPACE 45 FORS 5, 1, 2, 2 -, 46 FORS 5, 0, 2, 6 -SPACE 47 FORS 1, 0, 2, 1 -0 48 FORS 1, 0, 2, 1 -1 49 FORS 0, 0, 2, 1 -2 50 FORS 6, 0, 2, 1 -3 51 FORS 6, 0, 0, 1 -4 52 FORS 6, 0, 0, 1 -5 53 FORS 6, 0, 0, 1 -6 54 FORS 3, 0, 0, 1 -7 55 FORS 3, 0, 0, 1 -8 56 FORS 6, 0, 0, 1 -9 57 FORS 6,0,0,7 -' 58 FORS 6, 0, 0, 6 -SPACE 59 FORS 4, 3, 0, 6 -1 60 FORS 4, 0, 0, 6 -. 61 FORS 6, 0, 0, 6 -SPACE 62 FORS 6, 0, 0, 6 -STOP 63 . . P1TAB3+64,TST3,SUANT2,FLD7 . . S1 IS CLASS OF PICTURE CHARACTER . S2 IS 1 IF CHARACTER IS ALLOWED IN PICTUR . S3 MN,IF EXECUTABLE STATEMENT . S4 SBN DELIMITER IN SUBSCRIPT X . S4 SBN,ENDSUB DELIMETER IN SUBSCRIPT . SAVED GLOBAL IMPLICIT TABLE . S5 FRM FORMAT OPERATORS GX . S6 PSTL DECIMAL DIGIT . FORS 1, 5, 10, 10 -SPACE 0 FORS 0, 5, 10, 10 -SPACE 1 FORS 1, 5, 10, 10 -SPACE 2 FORS 0, 5, 10, 10 -SPACE 3 FORS 0, 5, 10, 10 -SPACE 4 FORS 0, 5, 10, 10 -SPACE 5 FORS 0, 5, 0, 10 -A 6 +2,1,1,5,10,10 B 7 PICTUR +4,1,0,5,10,10 C 8 +4,1,0,5,1,10 D 9 PICTUR +8,1,0,5,1,10 E 10 PICTUR +9,1,0,5,1,10 F 11 PICTUR FORS 0,5,1,10 . G FORMAT FORS 0, 5, 4, 10 -H 13 +3,1,0,5,0,10 I 14 PICTUR FORS 0, 5, 0, 10 +7,1,0,5,10,10 K 16 PICTUR FORS 0,5,0,10 -L 17 FORS 0,5,0,10 -M 18 EXEC 8 FORS 0, 5, 10, 10 -N 19 FORS 1, 5, 0, 10 -O 20 FORS 1, 5, 2, 10 -P 21 FORS 0,5,13,10 Q 22 PICTUR +3,1,0,5,0,10 R 23 PICTUR +1,1,0,5,10,10 S 24 PICTUR +3,1,0,5,0,10 T 25 PICTUR FORS 0, 5, 10, 10 -U 26 +7,1,0,5,10,10 V 27 PICTUR FORS 1, 5, 10, 10 -W 28 FORS 1, 5, 3, 10 -X 29 +6,1,1,5,10,10 Y 30 PICTUR +5,1,1,5,0,10 Z 31 PICTUR FORS 0, 4, 6, 10 -) 32 +1,1,0,2,11,10 - 33 PICTUR +1,1,1,1,10,10 + 34 PICTUR FORS 0, 5, 10, 10 -< 35 FORS 1, 5, 10, 10 -= 36 FORS 1, 5, 10, 10 -> 37 FORS 1, 5, 10, 10 -+ 38 NL NON-XQTBL +1,1,1,5,10,10 $ 39 PICTUR +5,1,1,0,10,10 * 40 PICTUR FORS 1, 5, 5, 10 -( 41 FORS 1, 5, 10, 10 -SPACE 42 +2,1,1,5,10,10 : 43 PICTUR FORS 1, 5, 10, 10 -SPACE 44 FORS 1, 5, 10, 10 -SPACE 45 +2,1,1,3,9,10 , 46 PICTUR FORS 1, 5, 10, 10 -SPACE 47 FORS 1, 5, 8, 0 -0 48 FORS 1, 5, 8, 1 -1 49 FORS 1, 5, 8, 2 -2 50 FORS 1, 5, 8, 3 -3 51 FORS 1, 5, 8, 4 -4 52 FORS 1, 5, 8, 5 -5 53 FORS 1, 5, 8, 6 -6 54 FORS 1, 5, 8, 7 -7 55 FORS 1, 5, 8, 8 -8 56 +3,1,1,5,8,9 9 57 PICTUR FORS 1,5,12,10 -' 58 FORS 1,5,10,10 SPACE 59 SHORT +2,1,1,5,9,10 / 60 PICTUR +2,1,1,5,7,10 . 61 PICTUR FORS 1, 5, 10, 10 -SPACE 62 FORS 1, 5, 10, 10 -STOP 63 FORS 0,0,0,0 . 64 DEFINE FILE FORS 0,0,0,0 . 65 FIND FORM2 FORM 6,6,6,18 OPERAT* FORM2 8,10,0,0 + 032600 FORM2 8,14,0,0 - 032700 FORM2 9,12,0,0 * 032800 FORM2 9,11,0,0 / 032900 FORM2 11,13,0,0 ** 033000 FORM2 3,17,040,0 , 033100 FORM2 0,20,040,0 ( 033200 FORM2 0,15,040,0 SEMICOLON 033300 FORM2 0,16,040,0 COLON 033400 FORM2 1,21,040,0 ) 033500 FORM2 2,1,040,0 = 033600 FORM2 7,4,040,0 .EQ. 033700 FORM2 7,5,040,0 .NE. 033800 FORM2 7,7,040,0 .GT. 033900 FORM2 7,8,040,0 .GE. 034000 FORM2 7,6,040,0 .LT. 034100 FORM2 7,9,040,0 .LE. 034200 FORM2 6,22,040,0400000 .NOT. 034300 FORM2 4,2,040,0 .OR. 034400 FORM2 5,3,040,0 .AND. 034500 FORM2 10,23,040,0400000 UNARY MINUS 034600 FORM2 8,030,0,0 . CONCATENATION FORM2 3,17,040,0 . COLON OPERATOR . THIS TABLE HAS THE HOLLERITH EQUIVALENT OF ALL OPERATORS 034800 . RETURNED BY THE ROUTINE GIT. TABLE IS INDEXED BY ITEM 034900 . NUMBER -9. 035000 . 035100 OPERR* + '+ ' 035200 + '- ' 035300 + '* ' 035400 + '/ ' 035500 + '** ' 035600 + ', ' 035700 + '( ' 035800 + 0 035900 + 0 036000 + ') ' 036100 + '= ' 036200 + '.EQ. ' 036300 + '.NE. ' 036400 + '.GT. ' 036500 + '.GE. ' 036600 + '.LT. ' 036700 + '.LE. ' 036800 + '.NOT. ' 036900 + '.OR. ' 037000 + '.AND. ' 037100 +'UNMIN ' . UNARY MINUS +'// ' . CONCATENATION +': ' . STATEMENT JUMP TABLE 020200 . SLIST1,TST . S1 BDATA STMT VALID IN BLOCK DATA STMT . S2 N1LST ITEM FROM GIT, SLIST1 ITEM . S3-S6 N1MN STATEMENT JUMP TABLE STMT . . 020300 FTST FORM 6,6,24 TST* FTST 0,3,ERST ERR/R FTST 0,3,ARR ARITH OR LOG. ST 1 FTST 0,0,N1ARG ARGUMENT STMT FTST 0,0,DECODE 3 FTST 0,3,ENCODE FTST 0,3,ASG ASSIGN 5 FTST 0,3,GOTO GOTO 6 FTST 7,3,N1SCN SCAN STATEMENT FTST 7,3,N1GEN GENERATE STATEMENT FTST 0,3,IFP ARITH-LOG IF 9 FTST 0,3,IFAO IF ACC OVFL 10 FTST 0,3,IFQO IF Q OVFL 11 FTST 0,4,IFDC IF DIV CK 12 FTST 0,3,IFSL IF SENS LITE 13 FTST 0,5,IFSW IS SENSE SWITCH 14 FTST 0,1,SENL SENSE LITE 15 FTST 0,3,CALL CALL 16 FTST 0,3,PAU PAUSE 17 FTST 0,2,STOP STOP 18 FTST 0,3,RET RETURN 19 FTST 7,3,END END 20 FTST 0,3,DO DO 21 FTST 0,3,BACK BACKSPACE 22 FTST 0,3,REW REWIND 23 FTST 0,3,EFILE END FILE 24 FTST 0,3,PRI PRINT 25 FTST 0,3,PUN PUNCH 26 FTST 0,3,READ READ 27 FTST 7,0,COMP COMPILER 28 NERR8$ FTST 0,0,DEF DEFINE 29 FTST 7,5,DELETE DELETE 30 FTST 7,0,N1MAC MACRO STMT 31 NERR8$ FTST 0,0,WRI WRITE 32 FTST 0,0,WOT WOT 33 FTST 0,0,N1REG REGISTER STATEMENT REGIST FTST 0,0,WTA WRITE TAPE 35 FTST 07,0,IMPL FTST 0,0,ENTER ENTER 37 FTST 0,0,NMELT FTST 7,0,OPNIN INCLUDE 39 FTST 7,0,SDBUG DIAGNOSTIC 40 FTST 0,0,ABN ABNORMAL 41 FTST 0,0,SUBF REAL FUNCTION 42 FTST 7,0,TYPE REAL 43 FTST 0,0,SUB SUBROUTINE 44 FTST 7,0,PAR PARAMETER 45 FTST 0,0,SUBF LOGICAL FUNCTION 46 FTST 7,0,TYPE LOGICAL 47 FTST 0,0,SUBF INTEGER FUNCTION 48 FTST 7,0,TYPE INTEGER 49 FTST 0,0,SUBF FUNCTION 50 FTST 0,0,N1MON MONITOR 51 RETIND FTST 0,0,FORM FORMAT 52 FTST 0,0,EXT EXTERNAL 53 FTST 7,0,EQU EQUIVALENCE 54 FTST 7,0,TYPE . DBL. PREC. 55 FTST 0,0,SUBF . DBL. PREC. FUNC 56 FTST 7,0,DIM DIMENSION 57 FTST 7,0,DATA DATA 58 FTST 7,0,CNT CONTINUE 59 NERR8$ FTST 0,0,SUBF COMPLEX FUNC 60 FTST 7,0,TYPE COMPLEX 61 FTST 7,0,CMN COMMON 62 FTST 0,0,BDATA BLOCK DATA 63 FTST 0,0,DFILE . 64 DEFINE FILE FTST 0,0,FIND . 65 FIND . 026800 JBUG SLJ BUG DEBUG CELL 026900 . 027000 . PH1 CONSTANTS 020020 . 020030 PH11* FORM2 ID13,0,0,0 . ID=BEGIN, T=0 CASVE +0 . SAVE B5 WHILE IN SCR PH13 FORM2 ID16,0,0,0 ID=FIRST EXEC ST 020060 N1SHFT +72 . INDIRECT SHIFT VALUE . 020070 . 045300 . ARR CONSTANTS ETC 045500 . 045600 AR11 FORM2 ID1,0,0,0 ID=ST TYPE,N=0 045700 AR12 FORM2 ID16,0,0,0 ID=FIRST EXEC ST 045710 . 045800 . ASG CONSTANTS 050000 . 050100 AS11 +0 SAVE B4 AS12 +0 SAVE A12 AS14 FORM2 ID4,0,0,0 ID=ST REF, T=0, SYM(N) 050400 AS15 FORM2 ID4,1,0,0 ID=ST REF, T=1, SYM(M) 050500 AS16 FORM2 ID1,5,2,0 ID=ST TYPE, ST=ASSIGN=5, N=2,5 050600 . CALL CONSTANTS 058100 . 058200 CA11 FORM2 ID1,16,0,0 ID=ST TYPE,ST=16,N=0,S 058300 . 058400 . DO CONSTANTS 091100 . 091200 DO10 +0 SAVE B4 . 091400 . DTAB CONSTANTS 099700 . 099800 DU11 +0 SAVE B5 P DU12 +0 SAVE B6 L DU13 +0 SAVE A6 SB DU15 FORM2 ID1,21,3,0 ST = 21, ID = ST TYPE, N = 3 100200 DU16 FORM2 ID10,0,0,0 F30 GEN LABEL ITEM 100210 . 100300 . EDO CONSTANTS 107700 . 107800 ED11 +0 SAVE B4 ED12 +0 SAVE B6 ED13 +0 F30 ITEM . 108200 . 253300 . 271000 . IFP CONSTANTS 271200 . 271300 IF11 +0 SP(SEG COUNT) IF13 FORM2 ID1,3,0,0 ID=ST TYPE,ST=LOG ST,N=0,SP+1 271500 IF14 FORM2 ID1,1,0,0 ID=ST TYPE,ST=ARITH ST,N=0,SP+1 271600 IF15 FORM2 ID1,0,0,0 ID=ST TYPE,ST=0(ERROR),N=0,S 271700 IF16 FORM2 ID2,0,0,1 ID=LOG IF SEPARATOR, T=1 271800 IF17 FORM2 ID2,0,0,0 ID=LOG IF SEPARATOR, T=0 271810 IF18 FORM2 ID1,9,3,0 ID=10,TYPE=9,N=3 271820 . 271900 . 275000 . IFSL CONSTANTS 276300 . 276400 IH11 FORM2 ID1,0,0,0 ID=ST TYPE,ST,N,S 276500 . 276600 . PAR CONSTANTS 340910 . 340920 PA11 +0 SIGN . 340940 . 346100 . PAU CONSTANTS 346300 . 346400 PP11 FORM2 ID1,0,1,0 ID=ST TYPE,ST,N=1,S 346500 PP13 FORM2 ID7,0,0,0 ID=CONST,F=0,,SYM(C) 346700 . 346900 . PERR CONSTANTS 349100 . 349200 PE11 +0 +0 PE12 +0 PE13 +0 . 349600 . 352200 . PFSP CONSTANTS 352400 . 352500 PF30 J $ 352600 . 352700 . 355100 . 358540 . PSTL CONSTANTS 358560 . 358570 INTNU* . S3 IS CURRENT INTERNAL ROUTINE NUMBER +0 PS21 FORM6 ID12,0,0 ID=ST LABEL(F30 ITEM) 358600 LRFSVA RES 4 SHORT+ LRFITM +0 SHORT+ +0 SHORT+ . 358700 . 382600 . RET CONSTANTS 382800 . 382900 RT11 FORM2 ID7,1,0,0 ID=CONST ITEM,F=1,,ITEM 383000 RT12 FORM2 ID1,19,1,0 ID=ST TYPE,ST=RETURN,N=1,S 383100 RT13 FORM2 ID3,1,0,0 ID=DROP OUT,DOT=1 383200 . 405600 . 392800 . SENL CONSTANTS 393000 . 393100 SN11 FORM2 ID1,0,1,0 ID=ST TYPE,ST,N=1,S 393200 . VTF30 CONSTANTS 452800 . 452900 VT11 FORM6 ID6,0,0 ID=NON IND VAR,,SYM 452910 VT12 FORM6 ID5,0,0 ID=IND VAR,,PB(M) 452920 $(2) . EENT AR30 J $-$ EENT AS30 J $-$ EENT N1FL +0 EENT CA30 J $-$ EENT CCE1 +0 EENT CNT90 J $-$ EENT DATA5 J $-$ EENT DEXIT J $-$ EENT DT30 J $-$ EENT ED30 J $-$ EENT ED40 J $-$ . ED2 RETURN IF30 J $-$ EENT IF90 J $-$ EENT IF16A* +0 SAVE COMPLETE LOGICAL IF FOR END OF LOGICAL IF IH30 J $-$ EENT LRFXIT* J $-$ . ALSO SLJ HERE FOR ERROR MESSAGE EENT J LRF20 EENT PP30 J $-$ EENT PE30 +0 EENT PF330 +0 . USED IN PFSP EENT +0 EENT FLDEF J $-$ EENT J FLDEFR EENT PS40* J $-$ RT30 J $-$ EENT SD30 J $-$ EENT DO IOPROC ,SDTRIO J $-$ DO IOPROC , J SDTRIR SN30 J $-$ EENT SYMOF* J $-$ EENT J SYMOFA EENT IFELSE* +0 . NON ZERO FOR ELSE CLAUSE ON LOGICAL IF. END .