$(1) PREQ . DEFINE THE REGISTERS . SCAN 'LIST' ROUTINE 125890 LIT STACK EQU LSTACK . . CALLING SEQUENCE - A LMJ B11,SLIS . A+1 NORMAL RETURN . . THIS ROUTINE SCANS BOTH I/O LISTS AND DATA STATEMENT . LISTS AND LITERALS. WHEN AN I/O LIST IS SCANNED THE FILE 30 . ITEMS FOR THE LIST ARE LEFT IN TABLE 'SLOUT' INDEXED BY B9. . WHEN A DATA STATEMENT IS SCANNED, THE ITEMS FOR THE DATA . LIST AND LITERALS ARE SENT TO FILE 60. . BEFORE ENTERING SET 'LIST'= 0, FOR DATA STATEMENT . = 1, FOR INPUT LIST . = 2, FOR OUTPUT LIST . TWO PASSES ARE MADE ON I/O AND DATA LISTS. DURING THE FIRST . PASS POLISH IS GENERATED IN 'STRING' FOR LIST VARIABLES AND . THEIR SUBSCRIPTS AND PARENTHESES ARE MARKED EITHER AS . REDUNDANT OR INDICATING A LOOP. THE LOOP PARAMETERS ARE . SAVED IN TABLE 'DOPAR'. DURING THE SECOND PASS THE ITEMS FOR . THE LOOPS ARE MERGED WITH THE 'STRING' ITEMS AND STORED . IN 'SLOUT' . SLIS* S B4,SLISS 125900 S B6,SLISS+1 126000 S B7,SLISS+2 126100 S B8,SLISS+3 126200 S B10,SLISS+4 126300 S B11,SLISS+5 126400 S B1,LISTSQ SAVE START OF STATEMENT FOR DIAGNOSTIC SZ A13 L A0,GXX TNE,M A0,')' LR FNXT,R8 L A0,CRSPSU SAVE GENERALIZED SUBSRCIPT FLAG S A0,SVCRSP L A6,LIST 127200 L,M A8,'(' 127300 L,M A9,1 127400 L,M A10,2 127500 L A0,LIST 127600 SSC A0,12 127610 A,M A0,0,B1 127700 A A0,(0124300,0) 127710 S A0,STYPE STATEMENT TYPE ITEM 127800 SLIS3 S B5,STRIN SAVE I 127900 L B7,(1,0) L=0 128000 L B8,(1,0) N=0 128100 L B10,(1,1) P=1 128200 SZ COMFG FLAG TO SECOND PASS AS TO HOW CONTROL GOT THERE SZ PRFLG GENSUB SZ A7 RESET PRECE 128300 S R15,FPAR 128400 SZ FOCT 128500 SLIS4 SZ CALM RESET CALM 128600 SLIS5 LMJ B11,SGX3 . RETURN TO SCAN EXPRESSION S B5,STNGPT . SAVE FOR RESAN AS EXPRESSION LMJ B11,GIT J SLIS40 EOS, START PASS 2 128800 L,S2 A1,SLIST1,A2 128900 TZ A1 129000 J SLIS18,A1 BRANCH ON ITEM 129100 . ITEM IS A VARIABLE 129200 SLIS6 JZ A7,SLIS6T IS PRECE SET LMJ B11,PERR -YES ERROR--COMMA MISSING FORM6 0,156,0 SLIS6T LMJ B11,GLG SEARCH SYM NOP 0,0 -NOT IN 129400 L,H1 A2,2,A1 129500 AND,M A2,070 129510 TNE,M A3,060 . TEST CHARACTER VARIABLES J SLIS22J JNZ A3,SLS6T 129520 SLIS7J LMJ B11,DTYPE DETERMINE TYPE 129530 TNE,M A0,060 . TEST CHARACTER J SLIS22J A A2,A0 129540 S,H1 A2,2,A1 129550 SLS6T AND,M A2,7 129600 JNZ A3,SLIS9 IS CLASS VARIABLE 129700 SLIS7 AU A1,(020040,0) -YES 129800 L A0,GXX 129810 TNE,M A0,044 129820 J SLIS12 X='=' 129830 TNZ,H2 3,A1 IS VARIABLE DIMENSIONED 129900 J SLIS11 -NO DL A3,(000300000020300000000000) . OPERATORS +-*/ DSL A3,0,A0 TZ LIST . LIST=0 FOR DATA STMTS JB A4,SLIS11 TE A8,GXX IS X=( 130100 J SLIS13 -NO, IMPLIED ARRAY 130200 SZ FNXT . REREAD PARENTHESIS GENSUB S,H1 R15,EQTFLG GENSUB S R15,FEB GENSUB S R15,GEICFL MAKE COMMA A SEPARATOR GENSUB S,H1 B5,GEICFL SAVE CURRENT STRING POINTER S R15,PARFLG GENSUB TNZ LIST IF DATA STMT, LIST=0 S R15,CRSPSU DON'T ALLOW GEN.SUB.IN DATA STMTS LMJ B11,SCAR GENSUB SZ FEB GENSUB L A0,SVCRSP RESTORE ORIG. GEN.SUB. FLAG S A0,CRSPSU L A0,PARFLG SCAN RETURN CHARACTER GENSUB S A0,GXX PAST SUBSCRIPT IN PARFLG GENSUB SZ FNXT GENSUB L,H1 A0,GEICFL S,S2 A6,STRING,A0 SET LIST TYPE FOR DP INFO L,M A2,040 S,S3 A2,STRING,A0 FLAG FOR N6DSP AS TO VARIABLE TYPE SZ GEICFL CLEAR SPECIAL TREATMENT OF COMA GENSUB SZ EQTFLG GENSUB SZ PARFLG GENSUB L,S3 A2,SUBT2+1 VARIABLE COUNT IN ZERO LEVEL SUBSCRIPT A A2,(1,0) TE,M A6,2 READ OR DATA STATEMENT TG A2,B7 -YES,DOES THE VAR SUB COUNT EXCEDE THE J SLIS8 -NO LOOP LEVEL LMJ B11,PERR -YES FORM6 0,212,0 REDUNDANT PARENTHESIS SLIS8 L A0,GXX DL A1,(000300000020300000000000) . +,-,*-/,. TNZ FEOS DSL A1,0,A0 IF OPERATOR FOUND TREAT TZ LIST . NO EXPRESSIONS IN DATA STATEMENTS JB A2,SLIS22 VARIABLE AS PART OF EXPRESSION S R15,A7 SLS8 S R8,STRING,*B5 . DROP OUT ITEM S A9,STRING,*B5 . END OF LIST ITEM J SLIS4 130900 SLIS9 TE,M A3,5 IS CLASS ARGUMENT 131000 J SLS10 -NO AND,M A2,01000 -YES 131200 JNZ A3,SLIS10 IS ARGUMENT VARIABLE 131300 TZ LIST -YES, IS THIS A DATA STATEMENT 131400 J SLIS7 --NO 131500 LMJ B11,PERR FORM6 031,17,SYMV SZ ST J SLIS77 SLS10 TE,M A3,7 IS CLASS UNASSIGNED J SLS101 -NO AND A2,(077) TNE,M A3,067 . TEST CHARACTER J SLIS22J . IT WAS FIRST USE OF CHARACT TNE,M A3,077 NAMELIST J SLIS10 AND A2,(0777070) S,H1 A3,2,A1 J SLIS7 SLS101 TE,M A3,6 IS CLASS INTRINSIC FUNCTION J SLS10J TNE A8,GXX . IF INTRINSIC FUNCTION NAME J SLIS22 . FOLLOWED BY PARENTHESIS DO NOT DEINTRINSIFY AND,M A2,01000 . TEST IF FUNCTION REFERENCED JNZ A3,SLS10P SLJ DEINTX MAKE SURE LOCAL NAME FOR INTRINSIC J SLIS7J SLS10P LMJ B11,PERR FORM6 032,52,SYMV . FUNCTION $ REFERENCED ILLEGALLY J SLIS4 SLS10J TE,M A3,4 J SLIS10 NO ERROR L A0,GXX TE,M A0,'=' J SLIS10 ERROR IF PARAMETER NOT IN FRONT OF EQUALS S,H1 A1,VARLIT MARK LOCATION OF PARAMETER L,M B4,DOPAR,B10 S,H2 B4,VARLIT J SLIS7 TREAT PARAMETER AS VARIABLE . UNDIMENSIONED VARIABLE 132000 SLIS11 TNE,M A0,'(' . IS UNDIMENSIONED VARIABLE SUBSCRIPTED J SLS12 S A2,STRING,*B5 S,S2 A6,STRING-1,B5 TZ,M 0,B7 ZERO PARENTHESIS LEVEL TNE,M A6,2 TEST FOR READ DATA J SLIS8 132500 LMJ B11,PERR FORM6 0,212,0 REDUNDANT PARENTHESIS J SLIS8 SLS12 L,H1 A2,2,A1 AND,M A2,7 GET CLASS TE,M A3,5 IS IT A DUMMY ARGUMENT J SLS12A L,M A3,011 DUMMY ARGUMENT USED AS FUNCTION S,S2 A3,2,A1 IN A WRITE LIST J SLIS22 SLS12A . AND A2,(0770070) A,M A3,0102 CHANGE TO FUNCTION S,H1 A3,2,A1 J SLIS22 . THIS IS A LOOP -- PICK UP PARAMETERS 132600 SLIS12 TNZ,M 0,B7 . IS PAREN LEVEL=0 J SLS21A . YES, FATAL ERROR S,H1 A3,LSTPAR SAVE TYPE OF INDEX VAR. S,H2 A1,LSTPAR L A0,N1FIX S A0,TYPEIV L,H1 A0,STACK,B7 . M(L) L FNXT,R8 RESET NEXT S,H2 B10,STACK,A0 K(M(L))=P S A2,DOPAR,B10 133000 L,M B4,DOPAR,B10 133100 LMJ B11,GABC GET DO PARAMETERS 133200 L,H1 A0,LSTPAR IF N1DO FOUND $, LSTPAR IS ZERO TE,M A0,4 IS TYPE A PARAMETER J $+3 LMJ B11,PERR FORM6 031,247,LSTPAR PARAMETER NOT LEGAL INDEX VAR. TZ LIST . LIST=0 FOR DATA STATEMENTS DO LMSC , TNZ,S2 U1110A . REENTRANT LIBRARY DO JPL , TNZ,M JPL . ALWAYS SHORT IO LISTS J SLS12Q L,M R1,7 L A2,(1,0) L,H2 A0,SHLSTB SHSLJ L,S1 A1,STRING,A0 TE A1,SHLSTB+1,*A2 J SLS12Q TE,M A1,3 J $+4 L,H2 A1,STRING,A0 . MAKE SURE SIZE IS ELEMENT TYPE TE A1,LSELSZ J SLS12Q . IT WAS NOT A,M A0,1 JGD R1,SHSLJ A,M A0,1 . SKIP STATEMENT TYPE HOLDER TE,M A0,0,B5 J SLS12Q L,M B4,DOPAR,B10 . RESTORE B4 L,H1 A0,1,B4 . SIMULATE L,T1 SSL A0,6 . TEST INITIAL VALUE TE,M A0,0301 J SLS12Q L,H1 A0,2,B4 . SIMULATE L,T1 SSL A0,6 . TEST FINAL VALUE TE,M A0,0301 J SLS12Q L,H1 A0,3,B4 . SIMULATE L,T1 SSL A0,6 . TEST INCREMENT TE,M A0,0301 J SLS12Q LXM,H2 B5,SHLSTB L A2,STRING+1,B5 . OFFSET ITEM L A1,STRING,B5 . GET NAME OF ARRAY SN A6,STRING,*B5 . FLAG FOR SHORT LIST S A2,STRING,*B5 . COPY OFFSET ITEM L A0,1,B4 . INITIAL VALUE S A0,STRING,*B5 L A0,2,B4 . FINAL VALUE S A0,STRING,*B5 L A0,3,B4 . INCREMENT VALUE S A0,STRING,*B5 S A1,STRING,*B5 . GET NAME OF ARRAY LXI,M A0,030100 LXM A0,LSELSZ S A0,STRING,*B5 . PRODUCT OF DIMENSIONS L,H1 A0,STACK,B7 SZ,H2 STACK,A0 . CLEAR FLAG WHICH SAID IT WAS A LOOP L,H2 A12,LSTPAR . SYM LOC OF INDEX VARIABLE LMJ B11,GENDP2 J SLIS21 SLS12Q . A,M B10,4 133300 S A10,STRING,*B5 END OF LOOP INDICATOR J SLIS21 . DIMENSIONED VARIABLE WITH NO SUBSCRIPTS -- IMPLIED LOOP 133800 SLIS13 TZ,H2 DUMVAR IMPLIED ARRAY 134100 J SLS13 -YES 134020 SLJ TSCSYM L A3,CRSYM -NO 134030 L R1,('I$ ') 134040 S R1,0,A3 134050 L R1,(010,0) 134060 S R1,2,A3 SET INTEGER MODE 134070 S,H2 A3,DUMVAR 134080 SZ 1,A3 134090 SZ 3,*A3 134092 S A3,CRSYM 134094 SLS13 L,S2 A4,2,A1 134100 AND,M A4,7 NUMBER OF DIMENSIONS 134200 AN,M A5,1 134300 L,M A4,1 134400 L,H2 A0,3,A1 DIMENSION LOCATION 134500 A A0,(1,0) 134600 L A2,(1,0) 134700 SLIS14 TE,S1 A9,0,A0 CTABD J SLIS25 VARIABLE DIMENSION 134900 TZ,S2 0,A0 . IS DIM A PARAM? CTABD J $+3 PARDIM MSI,H2 A4,0,*A0 . NO CTABD J $+2 PARDIM MSI,H2 A4,*0,*A0 . YES USE CURRENT VALUE CTABD JGD A5,SLIS14 135100 SLIS15 TZ,M 0,A2 ANY VARIABLE DIMENSIONS 135200 J SLIS26 -YES 135300 LMJ B11,SLIS84 FORM CONSTANT ITEM 135400 TNZ,S2 GEICFL . NO IMPLIED SHORT CHARACTER LISTS DO LMSC , TNZ,S2 U1110A . REENTRANT LIBRARY DO JPL , TNZ,M JPL . ALWAYS SHORT IO LIST J $+3 TZ LIST J SLU5A . FORM SHORT LIST IF NOT DATA SLIS16 S,H2 B10,STACK+1,*B8 K(N+1)=P,N=N+1 SZ STRING,*B5 135600 L A0,(030100,1) 135700 L A2,DUMVAR 135800 S A2,DOPAR,*B10 135900 S A0,DOPAR,*B10 136000 S A4,DOPAR,*B10 136100 S A0,DOPAR,*B10 136200 L A0,B10 . TEST FOR DOPAR TABLE OVERFLOW ANA,M A0,DOPAR . SUBTR ABS ADR TLE A0,(1,DOPARL-1) J SLS16 . NO OVERFLOW LMJ B11,PERR . OVERFLOW FORM6 012,93,GA18 . FATAL ERROR J PH500 . CONTINUE PHASE 1, SCAN ONLY SLU5A SN A6,STRING,*B5 . FLAG FOR SHORT LIST L A0,(040104,1) . OFFSET OF MINUS ONE L,S3 A2,2,A1 . GET TYPE SSL A2,3 L,M A3,030 SSL A3,0,A2 JNB A3,$+2 LXM,M A0,2 . CHANGE OFFSET TO MINUS 2 S A0,STRING,*B5 L A0,(030100,1) . INITIAL VALUE S A0,STRING,*B5 S A4,STRING,*B5 . FINAL VALUE S A0,STRING,*B5 . INCREMENT VALUE A A1,(020040,0) S A1,STRING,*B5 . NAME OF ARRAY S A0,STRING,*B5 . PRODUCT OF DIMENSIONS J SLIS4 SLS16 A A1,(020040,0) . VARIABLE ITEM TNZ,S2 GEICFL . TEST CHARACTER VARIABLE J SLS16Q L A3,(020000,0) A,H2 A3,CRFLD . CREATE A SUBSTRING REFERENCE S A3,STRING,*B5 SLS16Q S A1,STRING,*B5 136400 S,S2 A6,STRING-1,B5 ATTACH PSEUDO S.T. TO ITEM L,XM A3,-1 . VALUE OFF OFFSET TNZ CRMXOF S,H2 A3,CRMXOF . INITIALIZE IF ONLY USE L A3,(040104,1) OFFSET ITEM 136500 S A3,STRING,*B5 136600 S A2,STRING,*B5 DUMMY INDUCTION VARIABLE 136700 L,H1 A2,2,A1 MODE WORD 136800 AND,M A2,070 SELECT T 136900 TNE,M A3,060 J SLIS17Y . GO FIND LENGTH OF CHARACTER L A2,(040100,0) 137000 SSL A2,0,A3 137100 L A3,(030100,2) 137110 JB A2,SLIS17 137200 AN,M A3,1 137300 SLIS17 S,H2 A3,STRING-2,B5 OFFSET 137400 S A3,STRING,*B5 S(I)=2 (OR 1), I=I+1 137500 L A0,(0101440,0) S A0,STRING,*B5 * L A0,(0102300,0) SUBSCRIPT + 137700 S A0,STRING,*B5 137710 L A0,(0101740,0) L,S3 A2,2,A1 . TYPE AND MODE FIELD LSSL A2,6 ALIGN WITH S5 A A0,A2 . GIVE TYPE OF VARIABLE TO N3SA S A0,STRING,*B5 COLON ITEM TNZ,S2 GEICFL . TEST IMPLIED CHARACTER ARRAY J SLIS17Q S,S1 R15,CRCHAR . BRING N$CHAR INTO EXECUTION L,H2 A3,3,A1 . POINTER TO CHARACTER ATTRIBUTES L,S2 A4,2,A1 . NUMBER OF DIMENSIONS IF ANY AND,M A4,7 . ISOLATE DIMENSIONS A A3,A5 . COMPUTE ADDRESS OF CHARACTER PACKET AU A3,(070000,0) . PASS CHARACTER LOCATION PACKET S A4,STRING,*B5 L A4,(0102100,014) . CHARACTER COMMA OPERATOR S A4,STRING,*B5 L A0,(030100,1) . REPRESENTS FIRST CHARACTER POSISITION S A0,STRING,*B5 S A4,STRING,*B5 . INSERT COMMA OPERATOR L A0,1,A3 . FILE ITEM REPRESENTING LENGTH S A0,STRING,*B5 S A4,STRING,*B5 . INSERT COMMA OPERATOR L A0,(0102000,00) . FUDGE UP COLON FOR SUBSTRING A,H2 A0,CRFLD S A0,STRING,*B5 SLIS17Q SZ,H1 GEICFL . CLEAR IMPLIED ARRAY FLAG S R8,STRING,*B5 DROP OUT ITEM 137810 S A9,STRING,*B5 137900 S A10,STRING,*B5 138000 J SLIS4 138100 SLIS17Y LMJ B11,CHGTLN . GO DETERMINE LENGTHG OF CHARACTER L A3,(030100,0) . MASK FOR CONSTANT ITEM A A3,A4 . ADD CHARACTER ELEMENT LENGTH J SLIS17 SLIS18 SLJ BUG VARIABLE--SHOULD NOT HAPPEN 138200 J SLIS19 ( 138300 J SLIS21 ) 138400 J SLIS22 OTHER 138500 J SLIS30 . /--START PASS 2 (IF DATA) . ITEM =, 138600 SZ A7 , 138700 TZ CALM 138800 J SLIS23 138900 S R15,CALM 139000 TNZ LIST J SLIS5 TEST FOR NON DATA STATEMENT TZ,M 0,B7 J SLIS5 ONLY PUT OUT CODE FOR WHOLE GROUPS L A0,B5 TEST FOR A LEADING COMMA TNE A0,STRIN J SLIS5 S R15,COMFG FLAG TO SECOND PASS THAT STATEMENT IS NOT OVER J SLIS40 . ITEM =( 139200 SLIS19 JNZ A7,SLIS20 IS PRECE SET 139300 S R15,CALM -NO 139400 SZ STRING,*B5 139500 SZ,H2 STACK+1,*B8 K(N+1)=0, N=N+1 S,H1 B8,STACK+1,*B7 M(L+1)=N, L=L+1 S B7,PRFLG GENSUB S,H2 B5,SHLSTB . SAVE B5 J SLIS5 139800 SLIS20 LMJ B11,PERR ILLEGAL ( 140000 FORM6 0,74,0 140100 SZ A7 . RESET PRECE J SLIS19+1 140200 . ITEM =) 140300 SLIS21 TZ,M 0,B7 JGD B7,SLS21 L=L-1 SLS21A LMJ B11,PERR . NEGATIVE PARANHISIS LEVEL FORM6 02,78,0 'DO' AT LEVEL 0 SZ ST J SLIS77 SLS21 S R15,A7 SET PRECE J SLIS4 SLIS22J . S,S1 R15,CRCHAR . SHOW THAT CHARACTER APPEARED IN IO AND,M A2,7 . TEST FOR VARIABLE TE,M A3,5 . TEST FOR DUMMY ARGUMENT JNZ A3,SLIS22Q AND,M A2,0700 . TEST IF ANY DIMENSIONS JZ A3,SLIS22Q . NO L A0,GXX TNE A0,A8 . TEST IF ARRAY FOLLOWED BY "(" J SLIS22Q . YES S,S2 R15,GEICFL . SET IMPLIED ARRAY FLAG J SLIS13 . GO GENERATE IMPLIED DO SLIS22Q . J SLIS22K SLIS10 . SLIS22 . NORMALLY ILLEGAL LIST ITEMSARE HERE SCANNED AS EXPRESSIONS SZ,H1 GEICFL . CLEAR IMPLIED ARRAY FLAG TNZ LIST . NOTHING VALID IN DATA STATEMENTS J SL22JA . ERROR MESSAGE SLIS22K LMJ B11,RGX3 L B5,STNGPT S,H2 R15,GEICFL . MAKE COMMA A SEPARATOR LN A0,LIST S,S1 A0,GEICFL . FLAG AS DATA STATEMENT S R15,FEB S R15,PARFLG LMJ B11,SCAR SZ FEB L A0,PARFLG . SCAN RETURN CHARACTER TZ FSCLN L,XM A0,-2 S A0,GXX L A1,A15 . RELOAD SYM POINTER FOR IMPLIED LOOP SZ FNXT SZ GEICFL SZ PARFLG S R15,A7 . SET PRECE J SLS8 SL22JA LMJ B11,PERR FORM6 0,75,0 J SLIS4 SLIS23 LMJ B11,PERR , PRECEDED BY , OR ( 141000 FORM6 0,77,0 141100 J SLIS5 141200 SLIS25 L R1,0,*A0 CTABD S R1,VARDIM,*A2 141900 JGD A5,SLIS14 142000 SLIS26 LMJ B11,SLIS84 FORM CONSTANT ITEM 142100 L A3,(1,0) S A4,SLISFV+1,*A3 STORE CONSTANT PART AN A2,(1,1) SLIS27 L A0,VARDIM,A2 A A0,(07700,0) FLAG FOR VARIBLE DIMENSION S A0,SLISFV+1,*A3 L A0,(0101440,0) S A0,SLISFV+1,*A3 JGD A2,SLIS27 L A4,(0400000,1) FLAG FOR PHASE 111 TO PICK EXP NUM S A4,SLISFV+1,*A3 A,M A3,1 S,H2 A3,SLISFA J SLIS16 143400 . PASS 2 143500 SLIS30 TZ LIST . IF SLASH, MUST BE DATALIST J SLIS22 . OR IT IS AN ILLEGAL ITEM SLIS40 L B8,(1,0) 143600 L B10,STRIN 143700 L,M A11,0,B5 143800 SZ A12 S B10,B5 143900 TZ,M 0,B7 IS PAREN LEVEL 0 J SLS588 SLIS41 TNE,M A11,0,B10 144400 J SLIS51 144500 TZ STRING,*B10 144600 J SLIS43 144700 TNZ,H2 STACK+1,*B8 IS K(N+1)=0 J SLIS41 -YES, THIS IS NOT A LOOP 144900 L,H2 A0,STACK,B8 K(N) JZ A6,SLIS42 IS THIS A DATA STATEMENT 145100 L,M B4,DOPAR,A0 -NO 145200 L,M B6,SLOUT,B9 145300 LMJ B11,DTAB OUTPUT DO PARAMETERS 145400 S,H2 B1,STYPE 145500 TNZ SLISFA TEST FOR EXP INITIAL VALUE J SLIS41 L,H2 R1,SLISFA L A0,(1,SLISFV) L A1,(1,0) LXM,M A1,SLOUT,B9 A B9,R1 BT A1,0,*A0 MOVE TO SLOUT SZ SLISFA J SLIS41 145600 SLIS42 L,H2 A1,DOPAR,A0 145700 A A1,(0170000,0) BEGIN DO ITEM 145800 S A1,SLOUT,*B9 145900 TNZ,H2 VARLIT J $+3 L,M A1,SLOUT,B9 S,H2 A1,VARLIT L A1,DOPAR+1,A0 A 146000 S A1,SLOUT,*B9 146100 L A1,DOPAR+2,A0 B 146200 S A1,SLOUT,*B9 146300 L A1,DOPAR+3,A0 C 146400 S A1,SLOUT,*B9 146500 J SLIS41 146600 SLIS43 TP STRING-1,B10 J SLSQA . SPECIAL SHORT IO FORM TE A10,STRING-1,B10 J SLIS46 146800 TZ STRING-2,B10 146900 J SLIS44 147000 LMJ B11,PERR 147100 FORM6 0,80,0 147200 SLIS44 JZ A6,SLIS45 147300 LMJ B11,EDO OUTPUT END DO FOR I/O LIST 147400 S A0,SLOUT,*B9 147500 TNZ LSLF . I/O STATEMENT OBJECT OF LOG IF J SLIS41 . NO TNZ DL . YES, IS THIS AN INNER DO J SLIS41 . NO L,H2 A1,0,B4 . SYM TAB REF OF IND VAR L,T3 A0,2,A1 . YES, OPTIMAL INNER LOOP L,M A3,2 OR,S4 A3,LOOP,A0 . C2=1 SA,S4 A4,LOOP,A0 J SLIS41 SLIS45 L A0,(0200000,0) END DO FOR DATA LIST 147700 S A0,SLOUT,*B9 147800 J SLIS41 147900 SLIS46 L A0,STRING-1,B10 148000 TE,S1 A10,STRING-1,B10 IS S(J) A VARIABLE 148100 J SLIS48 -NO 148200 JZ A6,SLIS50 148300 TN,XH2 2,A0 -YES, IS IT INDUCTION VARIABLE 148400 J SLIS47 --NO 148500 L,S3 A3,2,A0 AND,M A3,070 . EXTRACT TYPE SSL A4,3 TE,M A4,1 . TEST FOR INDUCTION VARIABLE? J SLIS47 . NOT AN INTEGER INDUCTION VARIABLE AND,M A3,7 TE,M A4,5 TEST FOR DUMMY ARGUMENT JNZ A4,SLIS48 . NOT A VARIABLE BUT A FUNCTION AND A0,(077,0400000) SELECT SIGN AND FLAGS 148600 L,H2 A3,2,A0 . SIMULATE A,T3 SSC A3,12 SSL A3,24 A A1,A3 A A1,(010000,0) INDUCTION VARIABLE ITEM 148800 S A1,STRING-1,B10 148900 TEP A1,(040,0) . SIMULATE TP,T2 J SLS49 -NO 148920 TZ,H1 INDUCE -YES 148930 J SLIS81 ERROR, 2 IV'S IN PRODUCT 148940 S,H1 R15,INDUCE SET INDUCE 148950 S,H2 B9,INDUCE SAVE IV LOCATION 148960 J SLS47 SLIS47 L,S3 A1,STRING-1,B10 . SIMULATE TN,T2 TOP,M A1,040 . IS THIS A SUBSCRIPT VARIABLE J SLS47 -YES TE,S2 A9,STRING-1,B10 SHOULD A DEF.PT. BE GENERATED J SLS47 -NO TP,XH2 2,A0 IS THIS AN INDUCTION VARIABLE 149400 J SLIS49 -YES,ERROR 149500 L,M A12,0,A0 SYM(V) 149600 SLS47 L,S2 A0,STRING-1,B10 TE,M A0,077 TEST FOR VARIABLE DIMENSION SZ,S2 STRING-1,B10 SLIS48 L A0,STRING-1,*B10 149800 S A0,SLOUT,*B9 149900 TZ,H1 INDUCE INDUCE SET 149910 J SLIS82 -YES, EXCHANGE CONSTANT AND IV 149920 SLS48 TE A9,STRING-1,B10 IS S(I)=1 150000 J SLIS46 -NO 150100 L A0,(0100100,0) =ITEM 150300 S A0,SLOUT,*B9 150400 L A0,STYPE STATEMENT TYPE ITEM 150500 S A0,SLOUT,*B9 150600 TZ A12 LMJ B11,GENDP2 SZ A12 SLS4Q A,M B1,1 S,H2 B1,STYPE 150620 SZ FC4 150650 SZ FD4 150660 TNZ LIST J SLIS41 TZ DL ONLY EMPTY BUFFERS WHEN LOOP LEVEL IS ZERO J SLIS41 TNZ PRFLG TEST FOR REDUDNANT PARENTHESIS GENSUB TNZ COMFG J SLIS41 SLS48A S R15,FEB . INHIBIT TRACE LMJ B11,PSDP . EMPTY STRING AND SLOUT BUFFERS J SLIS3 J SLIS3 SLS49 TE,M A6,1 150710 J SLS47 SLIS49 S,H2 A0,SYMV 150800 LMJ B11,PERR 150900 FORM6 031,81,SYMV 151000 J SLS47 SLIS50 L A1,2,A0 DATA STATEMENT 151200 OR,M A1,0100000 SET I4 151300 S A2,2,A0 151400 J SLIS48 151500 SLSQA L A0,STRING+4,B10 S A0,SLOUT,*B9 . NAME OF ARRAY L A0,STRING,B10 S A0,SLOUT,*B9 . OFFSET ITEM L A0,STRING+1,B10 S A0,SLOUT,*B9 . INITIAL VALUE L A0,STRING+2,B10 S A0,SLOUT,*B9 . FINAL VALUE L A0,STRING+3,B10 . INCREMENT VALUE S A0,SLOUT,*B9 L A0,STRING+5,B10 . PRODUCT OF DIMENSIONS S A0,SLOUT,*B9 LN A0,STRING-1,B10 . LIST FLAG L A1,(01260) A A1,A0 . INPUT/OUTPUT FLAG LSSL A1,6 A,M A1,6 . NO OF ITEMS IN STATEMENT TYPE LSSL A1,18 A A1,B1 . SEQUENCE NUMBER S A1,SLOUT,*B9 . STATEMENT TYPE ITEM A,M B10,6 . INCREMENT PAST LIST TE,M A0,1 J SLS4Q L,H2 A12,STRING-2,B10 LMJ B11,GENDP2 J SLS4Q SLIS51 TZ COMFG J SLS48A L A0,(0330000,0) END OF LIST ITEM TNZ LISTST .NO END OF LIST FOR INLIST OR OUTLIST S A0,SLOUT,*B9 151700 JNZ A6,SLIS77 151800 . GET DATA LITERALS LMJ B11,SLSLIT J SLS777 SLSLIT* S,H2 B11,SLS776 SZ FPAR S R15,FOCT 152000 SLS51 L,M A0,1 S A0,CONSUM SLIS52 SZ MINUS 152100 SLIS53 SZ OCTINT . CLEAR OCTAL INTEGER FLAG SLS53K L,M A0,0,B9 TNZ VARLIT TLE,M A0,15 J SLS53J TEST IF THERE IS ENOUGH WORDS IN SLOUT L A0,(030000,0) TO MOVE SOME TO F60 S A0,SLOUT L A0,(1,SLOUT) L,M A1,15 . LENGTH OF IMAGE L,M A2,0 . NO TRAILING CONTROL WORDS L,M A3,0 . FORCE TO FIELDATA LMJ B11,W60F . MOVE IMAGE TO F60 AN,M B9,14 LR R1,0,B9,M L A0,(1,SLOUT+1) L A1,(1,SLOUT+15) BT A0,0,*A1 J SLS53K SLS53J . LMJ B11,GIT . GET NEXT ITEM J SLIS74 END OF STMNT SEP28 L,S2 A1,SCAR2,A2 JZ A1,SLIS54 152500 J SLIS61,A1 BRANCH ON ITEM 152600 SLIS54 L A3,(0520000,0) REAL CONSTANT S A3,SLOUT,*B9 152800 A A13,CONSUM ONE WORD FOR REAL L A3,GITV 152900 TZ MINUS 153000 LNA A3,GITV 153100 S A3,SLOUT,*B9 153200 SLIS55 L,S4 A1,SLIST3,A0 153300 L FNXT,R8 RESET NEXT J SLIS56,A1 BRANCH ON X 153500 SLIS56 J SLIS71 -X=OTHER 153600 J SLS51 -X=, J SLIS71 -X=) 153800 SLIS57 J SLIS74 -X=/ 15390 SLIS58 LMJ B11,PERR MORE LEFT PARENTHESES THAN FORM6 0,79,0 RIGHT PARENTHESIS J SLIS74 . TRANSFER VECTOR FOR LITERAL ITEMS 155600 SLIS61 SLJ BUG IT CANT HAPPEN 155700 J SLIS74 / 155800 J SLIS53 + 155900 J SLIS65 - 156000 J SLIS66 INTEGER 156100 J SLIS68 LOGICAL 156200 J SLIS69 DOUBLE PRECISION 156300 J SLS69J COMPLEX J SLIS71 OTHER 156500 J SLSQ QUOTE L A4,GITV VARIABLE 156600 LMJ B11,SLT SEARCH LOCAL TABLE 156700 + CRLHL 156800 J SLIS64 NOT IN 156900 SLIS62 L,H1 A2,2,A1 157000 AND,M A2,7 157100 TNE,M A3,4 157200 J SLIS63 157300 LMJ B11,PERR VARIABLE NAME AS LITERAL 157400 FORM6 011,87,GITV J SLIS67 INSERT HOLLERITH NAME 157600 SLIS63 L A0,3,A1 VARIABLE IS A PARAMETER 157700 L,S2 A2,2,A1 SET BIT TO SHOE REFERENCE OR,M A2,020 S,S2 A3,2,A1 S A0,GITV 157800 L A0,GXX J SLIS66 SLIS64 LMJ B11,SLT SEARCH GLOBAL TABLE 158000 + CRGHL 158100 J SLIS62+4 NOT IN 158200 J SLIS62 IN 158300 SLIS65 S R15,MINUS ITEM=- 158400 J SLIS53 158500 SLIS66 L A2,GITV TNE,M A0,'H' J SLIS72 HOLLERITH CONSTANT 158700 TG,M A2,7 J $+5 TNE,M A0,'L' J SLIS72 TNE,M A0,'R' J SLIS72 TNE,M A0,'*' 158710 J SLIS83 REPEAT COUNT 158720 SLIS67 L A1,(0510000,0) INTEGER CONSTANT TZ OCTINT . WAS THIS AN OCTAL INTEGER L A1,(0510000000001) LIKE O77777 ETC. A A13,CONSUM ONE WORD FOR INTEGER S A1,SLOUT,*B9 158900 L A1,GITV 159000 TZ MINUS 159100 LNA A1,GITV 159200 S A1,SLOUT,*B9 159300 L A0,GXX 159400 J SLIS55 159500 SLIS68 L A1,(0530000,0) LOGICAL CONSTANT S A1,SLOUT,*B9 159700 A A13,CONSUM ONE WORD FOR LOGICAL L,M A1,1 .TRUE. VALUE 159800 L A2,('TRUE ') 159900 TE A2,GITV 160000 L,M A1,0 .FALSE. VALUE 160100 S A1,SLOUT,*B9 160200 J SLIS55 160300 SLS69J L A1,(0550000,0) COMPLEX J $+2 SLIS69 L A1,(0540000,0) DOUBLE PRECISION TZ OCTINT A,M A1,1 SHOW OCTAL S A1,SLOUT,*B9 OR COMPLEX CONSTANT 160500 A A13,CONSUM TWO WORDS FOR DOUBPLE PRECISION A A13,CONSUM L A3,GITV 160600 L A4,GITV+1 160700 TNZ MINUS 160800 J SLIS70 160900 LNA A3,GITV 161000 LNA A4,GITV+1 161100 SLIS70 S A3,SLOUT,*B9 161200 S A4,SLOUT,*B9 161300 J SLIS55 161400 SLIS71 TZ FEOS END OF STATEMENT J SLS71 -YES, MISSING SLASH LMJ B11,PERR -NO, ILLEGAL LITERAL FORM6 0,88,0 J SLIS52 SLS71 LMJ B11,PERR FORM6 0,131,0 J SLIS74 SLIS72 L FNXT,R8 RESET NEXT S A0,HCTYP L,M A1,0 161910 L,M A5,0,A2 SSC A5,18 . SAVE NUMBER OF CHARACTERS IF CHARACTER TNZ FDASQT . TEST PERMITTED STRINGS J SLS72FD A,M A2,3 DI,M A1,4 . NUMBER OF WORDS J SLS72AS SLS72FD . A,M A2,5 162000 DI,M A1,6 162100 SLS72AS TG,M A1,221 J SLIS78 162300 L A3,A1 MSI A3,CONSUM A A13,A3 A A1,A5 . ADD NUMBER OF CHARACTERS A A1,(0560000,0) 162400 S A1,SLOUT,*B9 F60 DATA HOLLERITH ITEM 162500 L A4,GITV 162600 L,M A3,SLOUT,B9 162700 A,M B9,0,A1 162800 S R15,DTAHLF LMJ B11,HOLL 162900 J SLIS73 END OF STATEMENT, ERROR 163000 SZ DTAHLF LMJ B11,GX GET NEXT CHARACTER 163100 J SLS71 A CLOSING SLASH IS MISSING J SLIS55 163300 . HOLLERITH DISPLAYED BY QUOTES SLSQ RES 0 SZ SLOUT,B9 SAVE SPACE L,M A3,SLOUT+1,B9 STARTING PLACE FOR QUOTE STRING S R15,DTAHLF KEEP FROM WRITING INDIVIDUAL RECORDS LMJ B11,QUOTE J SLIS73 END OF STATEMENT SZ DTAHLF L,M A2,2000 AN A2,A4 L,M A1,0 L,M A5,0,A2 SSC A5,18 . SAVE NUMBER OF CHARACTERS TNZ FDASQT . TEST PERMITTED STRINGS J SLSQFD A,M A2,3 . ROUND NUMBER OF WORDS DI,M A1,4 J SLSQB SLSQFD A,M A2,5 DI,M A1,6 SLSQB TG,M A1,221 J SLIS78 L A3,A1 MSI A3,CONSUM A A13,A3 A A1,A5 . ADD IN NUMBER OF CHARACTERS A A1,(0560000,0) LENGTH OF HOLERITH CONSTANTS IN WORDS TZ FDASQT . TEST FOR ASCII STRINGS A A1,(04000,0) . FLAG AS ASCII S A1,SLOUT,B9 A,M B9,1,A1 L A0,GXX TNE,M A0,' ' L FNXT,R8 LMJ B11,GX . NEXT CHARACTER J SLIS73 J SLIS55 SLIS73 LMJ B11,PERR 163400 FORM6 01,72,0 163500 SZ ST IGNORE STATEMENT 163510 SZ DTAHLF SLIS74 L A1,(0570000,0) 163600 S A1,SLOUT,*B9 END OF DATA ITEM 163700 SZ FOCT TNZ,H2 VARLIT J *SLS776 REENT L,H2 A0,VARLIT L,H1 A1,VARLIT L A2,(030100,0) AU A2,3,A1 CURRENT VALUE S A3,0,A0 INITIAL VALUE FOR LOOP A A3,A13 AN,M A3,1 S A3,1,A0 SET FINAL VALUE INTO DOTAB L A3,3,A1 A A3,A13 INCREMENT PARAMETER BY LENGTH OF CONSTANT S A3,3,A1 SZ VARLIT J SLS776 SLS777 TNZ FEOS J SLIS3 163900 L A1,(0600000,0) END OF DATA STATEMENT 164000 S A1,SLOUT,*B9 164100 SLIS77 L B4,SLISS 164200 L B6,SLISS+1 164300 L B7,SLISS+2 164400 L B8,SLISS+3 164500 L B10,SLISS+4 164600 L B11,SLISS+5 164700 SZ FPAR RESET FPAR 165500 J 0,B11 RETURN 165700 SLIS78 LMJ B11,PERR 165800 FORM6 01,85,0 165900 SZ ST 166000 J SLIS77 166100 SLIS81 S,H2 A0,SYMV MORE THAN ONE INDUCTION 166102 LMJ B11,PERR VARIABLE IN SUBSCRIPT PRODUCT 166104 FORM6 030,44,SYMV 166106 J SLIS48 166108 SLIS82 L,M A0,3 166110 SZ,H1 INDUCE L,M A1,12 TE,S2 A1,STRING,B10 J SLIS46 TE,S1 A0,STRING-2,B10 IS S(J-2) CONSTANT 166112 J SLIS46 -NO 166114 L,H2 A0,INDUCE -YES, EXCHANGE V(H-1) 166116 SZ INDUCE 166117 L A1,SLOUT-1,B9 AND V(H') 166118 L A2,SLOUT,A0 166120 S A1,SLOUT,A0 166122 S A2,SLOUT-1,B9 166124 J SLS48 166126 SLIS83 L FNXT,R8 RESET NEXT L A1,(0500000,0) REPEAT COUNT ITEM 166130 A,H2 A1,GITV 166132 S,H2 A1,CONSUM S A1,SLOUT,*B9 166134 J SLIS52 166136 SLS588 LMJ B11,PERR FORM6 0,79,0 SZ ST J SLIS77 . THIS SUBROUTINE FORMS A CONSTANT ITEM FOR A POSITIVE CONSTANT IN A4. SLIS84* TG,M A4,04000 J SLIS85 166300 A A4,(030100,0) IMMEDIATE CONSTANT 166400 J 0,B11 166500 SLIS85 S,H2 B11,SLIS86 166600 S A1,ST11 S A2,ST12 LMJ B11,SLT 166700 + CRIHL 166800 LMJ B11,SLTI 166900 L,M A4,0,A1 167000 A A4,(030000,0) REFERENCED CONSTANT 167100 L,M A2,013 S,S3 A2,2,A1 L A1,ST11 L A2,ST12 J *SLIS86 REENT $(2) SLS776 J $-$ REENT SLIS86 J $-$ REENT ST11 +0 CONSUM +0 LSTPAR* . OCTINT* +0 . FLAG FOR OCTAL CONSTANT IN DATA STATEMENT ST12 +0 COMFG +0 PRFLG +0 NON ZERO FOR REDUNDANT PARENTHESIS GENSUB SVCRSP +0 . SAVES CRSPSU WHEN IN DATA STMTS SHLSTB +0 . SAVES B5 AT OPENING PARENTHESIS +2 . NAME OF ARRAY +4 . OFFSET ITEM +2 . OFFSET PLUS +3 . CONSTANT +8 . MULTIPLY +8 . OFFSET OPERATOR +8 . SUBSCRIPT OPERATOR +7 . DUMMY FOR LEFT OF EQUALS END