PREQ . THIS CONTAINS CODE FOR ALL THE I/O DIRECTVES $(2) RW11 +0120001000000 TN11 +030000000000 TN30 J $ $(1) . BACKSPACE T 385700 . 385800 BACK* . L,M A0,22 ST=22 386000 J RW40 386200 . END FILE T 386600 . 386700 EFILE* . L,M A0,24 ST=24 386900 J RW40 387100 . 387200 . 387700 . 373700 . PRINT F,LIST 373800 . 373900 PRI* S,H2 B11,RD30 374000 L,M A0,25 ST=25 374100 S A0,ST 374200 PR40 L,M A0,2 374300 S A0,LIST 2=PUTPUT 374400 SZ A13 CLEAR FNO FLAG J RD51 374500 . 374600 . 374700 . 374800 . 374900 . PUNCH F,LIST STATEMENT 375000 . 375100 PUN* S,H2 B11,RD30 375200 L,M A0,26 375300 S A0,ST J PR40 375500 . 375600 . 375700 DECODE* L,M A2,1 DECODE IS INPUT J $+2 ENCODE* L,M A2,2 ENCODE IS OUTPUT S A2,LIST SET LIST FOR SLIS A,M A2,41 SUBTYPE S A2,ST INTO ST S,H2 B11,RD30 LMJ B11,GX J RD301 EOS TE,M A0,'(' J ND50 LMJ B11,PSDP LMJ B11,SGX3 SAVE SCANNING POINT S R15,FEB S,H1 B5,GEICFL S,H2 R15,GEICFL S R15,PARFLG SZ A10 USED TO COUNT ARGUMENTS S R15,FRMFLG S R15,UNTFMT FLAG N1SCR - SCANNING UNIT/FORMAT L A0,LIST S A0,('SVLIST') SZ LIST L FNXT,R8 J IOCA2 . GO COUNT ARGUMENTS IOCA LMJ B11,SCAR FIRST COUNT ARGS TO SEE WHAT IS WHAT L A0,PARFLG IOCA3 L FNXT,R8 A,M A10,1 4 ARGS IS COMPLETE TE,M A10,4 TE,M A0,',' 3 ARGS IS SIZE BUT NO TRANS J IOCA4 2 IS UNIT AND FORMAT IOCA2 . ENTRY POINT TO COUNT FIRST ARGUMENT LMJ B11,GX GET NEXT CHARACTER J RD301 SZ FNXT SET TO RE-READ THE LAST CHAR TE,M A0,'/' J IOCAX L FNXT,R8 IT'S A SLASH, GET NEXT CHAR LMJ B11,GX J RD301 J IOCA3 IOCAX TLE,M A10,2 ARE WE AT 3RD ARGUMENT J IOCA NO LMJ B11,SGX1 SAVE CURRENT POSITION LMJ B11,NGX6 GET NEXT 4 CHARACTERS +4 TNE A2,('END= ') J IOCA4 TNE A2,('ERR= ') J IOCA4 LMJ B11,RGX1 RESTORE TO BEGINNING OF 3RD ARG J IOCA IOCA4 . LMJ B11,RGX3 RESTORE SCANNING TO START OF FIRST ARG SZ FRMFLG SZ UNTFMT L A0,('SVLIST') S A0,LIST LXM,H1 B5,GEICFL TNE,M A10,2 NUMBER OF ARGUMENTS DO LMSC , J IOUNV . TWO ARGUMENT FORM (BUFFER,FORMAT) DO JPL , J IOCB . (FORMAT, BUFFER) IOCA1 TLE,M A10,3 J IOCB L A0,(070000,075) CODE FOR LENGTH/SIZE LMJ B11,SCIOX SCAN SIZE EXPRESSION L FNXT,R8 AN,M B5,1 IOCB SZ A13 NO CONTINGENCIES YET LMJ B11,FNO GET FORMAT REFERENCE L FNXT,R8 S,H2 B11,ENDEX DO NOT IFIX BUFFER ARG L A0,LIST TNE,M A0,2 ENCODE IS 2 S,H1 B11,ENDEX PUT OUT DEFINITION POINT L A0,(070000,076) CODE FOR UNIT S,H1 A0,UNTFMT INDICATE UNIT BEING SCANNED LMJ B11,SCIOX LR FNXT,R8 TE,M A10,4 J IOCC NO TRANS TO SCAN L,H2 A0,ENDEF DEF. PT. FOR BUFFER SZ ENDEF S,H1 A0,ENDEF DEF. PT. FOR TRANS GOES IN H2 L A0,(070000,074) S,H1 B11,ENDEX PUT OUT DEF. PT. LMJ B11,SCIOX L FNXT,R8 AN,M B5,1 BACK OFF DROP OUT ITEM IOCC L,M A13,2 SZ ENDEX TLE,M A10,3 J $+4 L A0,(070500,0) SIZE IS SIMULATED WITH LENGTH S A0,STRING,*B5 A,M A13,1 TE,M A10,4 J $+4 L A0,(071100,0) S A0,STRING,*B5 A,M A13,1 L A0,GXX TE,M A0,')' LMJ B11,FNO J RD62 IOUNV S,H2 B11,ENDEX DO NOT IFIX ENCODE BUFFER ARG L A0,LIST TNE,M A0,2 ENCODE IS 2 S,H1 B11,ENDEX PUT OUT DEF. PT. LMJ B11,TNO SCAN UNIT SZ ENDEX L A0,GXX TNE,M A0,',' J RD73 MAKE LIKE YOU'RE A READ ND50 LMJ B11,PERR FORM6 012,1,GITV ILLEGAL USE OF ITEM J RD300 . 375800 . READ---STATEMENT 358900 . 359000 READ* S,H2 B11,RD30 359100 SZ A13 FNO FLAG LMJ B11,SGX MARK GX(1) 359200 LMJ B11,GX 359300 J RD301 EOS 359400 L,M A2,1 359600 S A2,LIST LIST=1=INPUTST FOR LIST SCAN ROU. 359700 TNE,M A0,'(' J RD70 TNE,M A0,'T' J RD40 TNE,M A0,'I' J RD302 J RD50 . 359900 RD301 LMJ B11,PERR 360000 FORM6 01,4,0 360100 J RD300 360200 . 360300 RD302 LMJ B11,NGX (X=I) ARE NEXT CHARACTERS'NPUTTAPE360400 + 8 360500 TNE A2,('NPUTTA') 360600 TE A3,('PE ') 360700 J RD50 NO- IS READ F,LIST 360800 J RD60 YES- IS READ INPUT TAPE T,F,LIST 360900 . 361000 RD40 LMJ B11,NGX6 (X=T) ARE NEXT CHARS APE 361100 + 3 361200 TE A2,('APE ') 361300 J RD50 NO - IS READ F, LIST 361400 LMJ B11,SGX1 YES - MARK GX(2) 361500 L A1,('TAPE ') 361600 S A1,GITV 361700 L,M A5,2 1 IN K 361800 RD404 LMJ B11,GX 361900 J RD301 EOS 362000 TNE,M A0,',' 362100 J RD401 X= COMM 362200 L,S1 A1,FLD1,A0 362300 JNZ A1,RD80 (X=OTHER) IS READ TAPE T, LIST 362400 RD402 TNE,M A5,2 X=ALPHANUMERIC 362500 S,S5 A0,GITV APREND X TO 'TAPE' - -K=1 362600 TNE,M A5,1 K=0 362700 S,S6 A0,GITV 362800 JGD A5,RD404 362900 J RD80 K=2 - IS READ TAPE T,LIST 363000 . 363100 RD401 LMJ B11,GLG1 (X=COMMA) 363200 J RD80 NOT IN- IS READ TAPE T,LIST 363300 L,H1 A2,2,A1 IN-GET MADE 363400 AND,M A2,01007 363500 JZ A3,RD50 C=0,F=0,IS READ F,LIST 363600 TNE,M A3,5 363700 J RD50 (C=5,F=0)-IS READ F,LIST 363800 J RD80 (C=OTHERETC)-IS READ TAPE T,LIST 363900 . 364000 . 364100 . 364200 RD60 L,M A0,29 THIS IS READ'INPUT TAPE T,F,LIST'(364300 S A0,ST 364400 RD61 LMJ B11,TNO THIS RIT AND WOT-GET TAPE NUMBER 364500 TZ FEOS 364700 J RD301 EOS 364800 TE,M A0,',' 365000 LMJ B11,ERR2 365100 LMJ B11,FNO X=COMMA - GET FORMAT REF 365200 L,M A13,2 RD62 S,S3 A13,STRING,B5 S,H2 B1,STRING,B5 S IN B1 365500 L A3,ST ST 365600 S,S2 A3,STRING,B5 365700 L,M A0,ID1 S,S1 A0,STRING,*B5 F30 ITEM, ST TYPE A,M B1,1 S+1 IN S 366000 L,S5 A1,CRJOPT . TEST FOR LIST DIRECTIV SZ,S5 CRJOPT JNZ A1,RD62X TNE,M A3,047 SKIP SLIS ON J RD622 TNE,M A3,050 J RD62A WRITE NAMELIST LMJ B11,SLIS SCAN LIST 366010 L,H1 A12,ENDEF ENCODE BUFFER SYM LOC JZ A12,$+2 THERE IS NONE LMJ B11,GENDP2 PUT OUT DEF. PT. AFTER LIST SCAN L,H2 A12,ENDEF ENCODE/DECODE TRANS DEF. PT. JZ A12,$+2 LMJ B11,GENDP2 SZ ENDEF RD62X LMJ B11,PSDP . OUTPUT F30 ITEMS J RD300 RETURN TO CALLER 366100 RD62A L,M A0,0,B1 A A0,(0124500,0) J RD622+2 . 366200 RD622 L,M A0,0,B1 A A0,(0124400,0) INPUT LIST ITEM S A0,SLOUT,*B9 TO SLOUT BEHIND D.P. ITEMS L A1,SYMV L,H1 A0,3,A1 S,S3 A0,SLOUT-1,B9 A,M B1,1 L A0,(0330001,0) S A0,SLOUT,*B9 LMJ B11,PSDP LMJ B11,GX J RD300 . 366300 . 366400 RD80 LMJ B11,RGX1 THIS IS READ TAPE T,LIST 366500 L,M A0,27 RESET GX(2) 366600 S A0,ST ST=27 366700 RD81 LMJ B11,TNO GET UNIT 366800 L,M A13,1 J RD62 367100 . 367200 . 367300 . 367400 RD50 LMJ B11,RGX IS READ F,LIST 367500 L,M A0,31 367600 S A0,ST ST=31 367700 RD51 LMJ B11,FNO GET FORMAT REF 367800 L,M A13,1 J RD62 368000 . 368100 . 368200 . 368300 . THIS IS'READ(' 368400 . 368500 RD70 LMJ B11,TNO -GET TAPE NO 368600 TNE,M A0,')' 368900 J RD71 X=RT,0AREN 369000 TE,M A0,072 QUOTE J RD70A L,M A0,46 DIRECT ACCESS READ(N'R,FMT) RD70B S A0,ST S,H2 A0,IODEFX SAVE ST - FNO MAY CHANGE IT L A0,(070000,075) CODE FOR RECORD (SIZE) LMJ B11,SCIOX SCAN RECORD EXPRESSION LR FNXT,R8 SKIP NEXT CHARACTER AN,M B5,1 BACK OUT DUMMY ITEM L A1,(070500,0) CODE FOR RECORD (SIZE) S A1,STRING,*B5 TNE,M A0,')' J RD62-1 NO FORMAT PRESENT L,M A13,1 LMJ B11,FNO A,M A13,1 L,H2 A0,IODEFX RESTORE ST S A0,ST J RD62 RD70A TE,M A0,',' LMJ B11,ERR2 369200 L,M A0,28 THIS IS READ(UNIT,F)LIST 369300 S A0,ST ST,28 369400 RD73 L,M A13,1 SET FLAG FOR FNO LMJ B11,FNO SCAN FORMAT J RD62 370200 . 370300 . 370400 . 370500 RD71 L,M A0,30 THIS IS'READ(UNIT) 370600 S A0,ST 370700 RD711 L,M A13,1 J RD62 370900 . 378200 . 378300 . 378400 RD300 RES 0 ALL I/O RETURN HERE 378500 SR,S3 R15,CRREFL . SHOW THAT IO STMT OCCURRED L A0,ST . STATEMENT TYPE L A1,(020600,0) . PUNCH, PRINT, READ 25,26,31 SSL A1,0,A0 JB A1,$+2 . ALL IO BUT THESE HAVE UNITS SR,S4 R15,CRREFL . SHOW IO WITH UNIT OCCURRED SZ FC4 DO FLAG 378600 SZ FD4 DO FLAG 378700 SZ LIST J *RD30 REENT . 378900 . 371200 . REWIND T 383500 . 383600 REW* . L,M A0,23 ST=23 383800 RW40 S,S2 A0,RW11 384000 S,H2 B11,RD30 LMJ B11,TNO GET TAPE NO. 384100 TZ FEOS 384300 J RW41 384400 LMJ B11,PERR 384500 FORM6 0,4,0 384600 RW41 S,H2 B1,RW11 S IS IN B1 384700 L A0,RW11 384800 S A0,STRING,*B5 F30 ITEM(ST TYPE) 384900 J RD300 FIND* S,H2 B11,RD30 L,M A0,48 STATEMENT TYPE S A0,ST LMJ B11,GX J RD301 EOS TE,M A0,'(' LMJ B11,ERR2 USE SEPARATOR INSTEAD OF $ L FNXT,R8 OR $ IS IMPROPER PUNCTUATION LMJ B11,TNO SCAN UNIT L FNXT,R8 TE,M A0,072 SHOULD BE QUOTE LMJ B11,ERR2 BAD PUNCTUATION L A0,(070000,075) CODE FOR RECORD (SIZE) LMJ B11,SCIOX SCAN RECORD EXPRESSION LR FNXT,R8 SKIP NEXT CHARACTER AN,M B5,1 BACK OUT DUMMY ITEM L A1,(070500,0) CODE FOR RECORD (SIZE) S A1,STRING,*B5 L A1,(0126002,0) A,M A1,0,B1 S A1,STRING,*B5 TE,M A0,')' J RD301 LMJ B11,PSDP OUTPUT F30 ITEMS J RD300 . GET TAPE NUMBER 442200 . 442300 TNO* S,H2 B11,TN30 442400 LMJ B11,PSDP OUTPUT LABEL IF ANY L A0,(070000,076) CODE ITEM FOR UNIT S,H1 A0,UNTFMT INDICATE UNIT BEING SCANNED LMJ B11,SCIOX LR FNXT,R8 J *TN30 . 445800 . 371300 . WRITE OUTPUT TAPE STATEMENT 371400 . 371500 WOT* S,H2 B11,RD30 371600 SZ A13 FNO FLAG L,M A0,33 371700 S A0,ST ST=33 371800 L,M A0,2 371900 S A0,LIST 2=OUTPUT 372000 J RD61 372100 . 372200 . 375900 WRI* S,H2 B11,RD30 THIS IS WRITE ( 376000 SZ A13 FNO FLAG L,M A0,2 376100 S A0,LIST 2=OUTPUT 376200 LMJ B11,TNO GET TAPE NO. 376300 TZ FEOS EOS 376600 J RD301 376700 TNE,M A0,')' 376800 J WR31 X=RT,PAREN 376900 TE,M A0,072 QUOTE J WRIAB L,M A0,47 DIRECT ACCESS WRITE (N'R,FMT) J RD70B WRIAB . TE,M A0,',' X=COMMA 377000 LMJ B11,ERR2 NO 377100 L,M A0,32 IS WRITE(UNIT,F)LIST 377200 S A0,ST ST=32 377300 J RD73 377400 . 377500 . 377600 . 377700 WR31 L,M A0,34 IS WRITE(UNIT)LIST 377800 S A0,ST ST=34 377900 J RD711 378000 . 378100 . 372500 . WRITE TAPE T,LIST STATEMENT 372600 . 372700 WTA* S,H2 B11,RD30 372800 SZ A13 FNO FLAG L,M A0,35 ST=35 372900 S A0,ST 373000 L,M A0,2 373100 S A0,LIST 2=OUTPUT 373200 J RD81 373300 SCIOX* . SCAN AN EXPRESSION IN IO STATEMENTS WHERE RESULT IS INTEGER S,H2 B11,SCIXX S,H1 B5,GEICFL SAVE LOCATION IN STRING S,H2 R15,GEICFL MAKE COMMA SEPARATOR S R15,FEB L,XM A1,-2 EOS FLAG S A1,PARFLG S A0,STRING,*B5 CODE ITEM FOR TYPE OF EXPRESSION TZ,H2 ENDEX DO NOT IFIX ENCODE/DECODE BUFFER ARG J $+3 L A0,N1FIX S A0,STRING,*B5 SX B5,('SAVEB5') L A0,LIST S A0,('SVLIST') SZ LIST S R15,SBSCRP . ALLOW SUBSCRIPTS TO BE TERMS LMJ B11,SCAR SZ UNTFMT SZ SBSCRP L A0,('SVLIST') S A0,LIST TNZ,H1 ENDEX DEFINITION POINT REQUIRED J SCIO2 L A1,('SAVEB5') L,H2 A12,STRING,A1 GET SYM ADDRESS L,S1 A0,STRING,A1 GET TYPE OF ITEM TE,M A0,2 WAS IT A VARIABLE J SCIO2 S,H2 A12,ENDEF SAVE FOR DEF. PT. AFTER LIST SCAN LMJ B11,GENDP2 GENERATE DEFINITION POINT SCIO2 TZ,H2 ENDEX J $+4 L A0,(0102000,0) FUNCTION OPERATOR A,H2 A0,N1FIX S A0,STRING,*B5 L A0,(0100100,0) S A0,STRING,*B5 L A0,(0120100,0) STATEMENT TYPE ITEM A,M A0,0,B1 SEQUENCE NUMBER A,M B1,1 S A0,STRING,*B5 L A0,(1,STRING) A,H1 A0,GEICFL L A1,F30I L,M A2,0,B5 AN,H1 A2,GEICFL TLE A1,A2 LMJ B11,WNF30F S A2,R1 AN A1,R1 S A1,F30I L A1,F30J BT A1,0,*A0 S A1,F30J LXM,H1 B5,GEICFL L A0,(070000,0) DUMMY ITEM TYPE TO STAND FOR ARG S A0,STRING,*B5 L A0,PARFLG TERMINATING CHARACTER TNZ FEOS TZ FSCLN L,XM A0,-2 S A0,GXX SZ FNXT SZ FEB SZ GEICFL SZ PARFLG J *SCIXX . DEFINE FILE 3(500,132,L,NV),4( ... ) DFILE* S,H2 B11,RD30 L,M A0,45 S A0,ST LMJ B11,PSDP OUTPUT F30 ITEMS LMJ B11,GIT GET NEXT ITEM, UNIT J RD301 ERROR TNE,M A2,3 INTEGER VARIABLE J DFIL6 TE,M A2,4 INTEGER CONSTANT J DFERR1 INT CONST OR VAR NAME EXPECTED L A4,GITV DFIL8 AND A4,(0777700,0) JZ A5,DFIL5 LMJ B11,PERR FORM6 011,33,GITV INTEGER TOO LARGE J RD300 DFIL5 LMJ B11,SLT +CRIHL LMJ B11,SLTI INSERT IN SYM L,M A4,013 CLASS 3, TYPE 1 S,S3 A4,2,A1 OR A1,TN11 J DFIL9 DFIL7 L A4,3,A1 S A4,GITV J DFIL8 USE PARAMETER AS INTEGER DFIL6 LMJ B11,GINTV GET INTEGER VARIABLE J DFIL7 PARAMETER AU A1,(020000,0) DFIL9 S A2,STRING,*B5 L A0,GXX L FNXT,R8 SKIP NEXT CHARACTER TE,M A0,'(' LMJ B11,ERR2 L A0,(070000,075) CODE FOR RECORD LMJ B11,SCIOX L FNXT,R8 AN,M B5,1 TE,M A0,',' LMJ B11,ERR2 L A0,(070000,074) CODE FOR RECORD SIZE LMJ B11,SCIOX L FNXT,R8 AN,M B5,1 TE,M A0,',' LMJ B11,ERR2 LMJ B11,SGX1 SAVE POSITION LMJ B11,GIT GET NEXT ITEM J RD301 EOS TE,M A2,3 VARIABLE J DFIL2 L A4,GITV L,M R1,6 SIX ENTRIES IN TABLE L A3,(1,0) SE A4,DFTAB,*A3 SEARCH FOR V,U,M,L,F,E J DFIL2 NO FIND LMJ B11,SLT SEARCH SYM +CRBHL BOOLEAN-HOLLERITH HEAD LINK LMJ B11,SLTI INSERT IN SYM TABLE L,M A4,04063 L,S1 B11,2,A1 S,H1 A4,2,A1 S,S1 B11,2,A1 A A1,TN11 J DFIL3 DFIL2 LMJ B11,RGX1 RESTORE POSITION L A0,(070000,077) CODE FOR FORMAT S,H2 A0,ENDEX DO NOT IFIX ARGUMENT LMJ B11,SCIOX SZ ENDEX AN,M B5,1 BACK OUT DUMMY ITEM L A1,(070000,0) CODE FOR FORMAT TO STRING DFIL3 L FNXT,R8 L A0,(070500,0) CODE FOR SIZE (MAX NO. RECORDS) S A0,STRING,*B5 L A0,(071100,0) CODE FOR TRANS (RECORD SIZE) S A0,STRING,*B5 S A1,STRING,*B5 LMJ B11,GIT GET ASSOCIATED VARIABLE J RD301 EOS LMJ B11,GINTV INTEGER VARIABLE J DFERR2 IT WAS A PARAMETER AU A1,(020000,0) S A2,STRING,*B5 L,M A12,0,A1 LMJ B11,GENDP2 PUT OUT DEFINITION POINT L A0,(0125505,0) STMT TYPE, SUB TYPE, NO. ITEMS A,M A0,0,B1 S A0,STRING,*B5 LMJ B11,PSDP OUTPUT F30 ITEMS L FNXT,R8 L A0,GXX TE,M A0,')' J RD301 ERROR LMJ B11,GX J RD300 WERE DONE TE,M A0,',' MORE J RD301 ERROR L FNXT,R8 A,M B1,1 UP SEQUENCE NO. J DFILE+1 DFERR1 LMJ B11,PERR FORM6 011,32,GITV VAR OR INT SHOULD BE USED INSTEAD OF $ J RD300 DFERR2 LMJ B11,PERR FORM6 011,247,GITV PARAMETER $ IS BEING REDEFINED J RD300 $(2) . REENT RD30 J $-$ REENT IODEFX J $-$ SCIXX J $-$ DFTAB 'V ' TABLE OF LEGAL FORMAT CODES 'U ' FOR DEFINE FILE STATEMENT 'M ' 'L ' 'F ' 'E ' ENDEX* +0 . NON ZERO FOR ENCODE/DECODE FORMAT AND BUFFER ARG'S ENDEF +0 . SAVES SYM LOC OF ENCODE BUFFER FOR DEF. PT. . 373400 . 373500 . 373600 END