PREQ P$IRCB PROCESSOR INTERFACE DEFINITIONS SNOOP EQU 0 . THIS ROUTINE TESTS TO SEE IF A GIVEN MACRO IS AVAILABLE . IF IT IS A FILE IS OPENED TO READ IT FROM THE DRUM AND THE . OTHER INITIAL BOOKEEPING IS SET UP ARGB2 EQUF 0 CURRENT VALUE OF B2 ARGL EQUF 50,0,H2 . LENGTH OF ARGUMENT ARGB3 EQUF 25 CURRENT VALUE OF B3 ARGSP EQUF 50,0,H1 . SEPARATOR OF ARGUMENT ARGB4 EQUF 50,0,H2 ARGB5 EQUF 75 VALUE OF B2 FOR SUBFIELD ARGB6 EQUF 100 VALUE OF B3 FOR SUBFIELD ARGB7 EQUF 125,0,H2 . R5 SAVE FOR SUBSCAN MBFMAX EQUF 125,0,H1 . WORDS ALLOCATED FOR BUFFER ARGTW3 EQUF 50 ENTIRE THIRD WORD OF ARG TBL9 M S ZLNL EQU SNLX8+1 . LOC OF ZERO LEVEL NLINE SAVE REN EQU 2 $(REN) . FINDM* S,1 B11,FEXIT SAVE RETURN POINT L,H1 A0,COMMAC . SIMULATE A TZ,_T1 SSL A0,6 TZ,H1 CRSD1 TNZ,S6 MAFLST . LIST GENERATED STMT TZ A0 SLJ MACLST . SEND GENERATED STMT TO PHASE VI SZ,S6 MAFLST . TURN OFF FORCED LISTING L,M R4,RGXTT SLJ RMGRS . SET SCAN TO START OF STATEMENT LMJ B11,GX J *FEXIT SZ FNXT GXRTRN ' ',';','@' S,S5 R15,SCNBRK L A2,GXASCVB . FORCE FIELDATA CHARACTER S A2,GXASCV . EVEN THO BLANK IS RETURNED LMJ B11,GIT J *FEXIT SZ,S5 SCNBRK . CLEAR BLANK DELIMITER FLAG S,S1 A0,MCFLG1 . SAVE TERMINATING CHARACTER TE,M A2,3 J FEXIT GXABSB ' ',';','@' L A2,MJPTST . COUNT MACRO CALLS AN,M A2,1 JZ A2,MSER16 S A2,MJPTST L A0,GITV LMJ B11,OPNMAC J *FEXIT NAME OF MACRO CAN NOT BE FOUND REENT L A2,MCENT AN,M A2,1 S A2,MCENT TP A2 J MSER16 LOOPING IN MACRO TZ FSCLNG WAS THERE A PRIOR SEMI-COLON J FINDM4 . YES TZ,H1 FLF . PROCESS LABEL EXCEPT IN LOGICAL IF J FINDM4 TN,XH2 CRPRO . ALREADY SET? J FINDM2 . YES L A0,PH11 . BEGINNING PROGRAM ITEM WF30 . SZ,H2 CRPRO FINDM2 LMJ B11,PSTL FINDM4 LMJ B11,PSDX L A0,MACNO L A1,MCLBLX S A1,MCLBLT,A0 A,M A0,1 TG,M A0,9 J FIND99 NESTED LEVEL EXCEEDED S A0,MACNO L A4,GITV S A4,MACRNM-1,A0 SAVE NAME OF MACRO TE,M A0,1 AT FIRST LEVEL SAVE INCLUDE FLAGS J FIND3 L,S1 A2,TFDA$ . SAVE TFDA$ AT FIRST LEVEL. EXEC 8 S A2,MACDSV EXEC 8 L,M A2,1 S,S1 A2,TFDA$ FIND3 . . . THE NEXT SECTION SAVES SBUF SO THE ARGUMENTS OF A DEFINE MAY BE . SCANNED TZ ARGSRT-1,A0 . TEST IF LEVEL ASSIGNED SPACE YET J FIND3M . IT WAS L,M A0,150 . LENGTH OF REQUIRED TABLE LMJ B11,MPRQST . GET PERMANENT MACRO SPACE J FIND3L . SPACE NOT THERE SSL A0,18 . GET LOWEST ADDRESS L A3,MACNO S A0,ARGSRT-1,A3 FIND3M . L A4,FDASQT . SET IS ASCII ALLOWED IN QUOTES L A3,MACNO . CURRENT MACRO LEVEL S,S1 A4,MCFDAS-1,A3 . SAVE FIELDATA/ASCII STATE L,S1 A4,MZFDAS . STATE OF CURRENT MACRO TZ FDASCZ . SEE IF ASCII ALLOWED IN MAIN ELEMENT S A4,FDASQT . SET FOR THIS MACRO JZ A4,FIND3MA . MACRO IS IN FIELDATA TNZ FDASCZ J FIND3MA . ELEMENT IS FIELDATA L A0,(NOP 0,0) . ALLOW ASCII IN HOLERITH S A0,FDASCN J FIND3MB FIND3MA L A0,GXASCVB . PROHIBIT ASCII IN HOLERITH S A0,FDASCN FIND3MB L A0,N1STLG REQUEST SAVE AREA LMJ B11,MPRQST J FIND3L CAN'T GET IT SSL A0,18 LOWEST ADDR L A3,MACIX S,H2 A0,MCSTLG,A3 SAVE LOC OF S.A. LXI,M A0,1 L,M A1,MBFTBL,A3 INITIALIZE MAC BUFFER CHAIN. LSSL A1,18 S A1,MBFTBL,A3 L A1,(1,SBUF) L,M A5,0,A0 L R1,N1STLG S,H1 R1,MCSTLG,A3 L A4,MCLVOU S,S1 A4,MCSTLG,A3 L A4,MCQNT . LENGTHOF PUSHDOWN AT START OF MACRO S,S1 A4,LGDOTS,A3 . SAVE INDEXED BY MACRO LEVEL SZ GNSFL SZ MCLVOU BT A0,0,*A1 SZ MCLCPT,A3 AN,M A3,1 L A4,B3 COMPUTE RELATIVE POSISTION IN SBUF AN,M A4,SBUF TO START SCANNING ARGUMENTS A A4,A5 S A4,MW,A3 CURRENT WORD POSISTION AT THIS MACRO LEVEL TZ MCNT S B3,MW,A3 L,M A4,0,B2 S B2,MC,A3 S R5,MR,A3 L A5,MCNT S,H1 A5,MR,A3 L A1,GXABDL . ALLOW DELTA EXPANSION S A1,GXSDEL S A1,GXDEL TZ MCNT J FIND5 ANU A4,GXB2 L,M A4,0 DI,H2 A4,GXTRCZ L A5,R5 A,M A5,1 MSI,M A5,6 AN A5,A4 S A5,MR,A3 MSI,H2 A4,GXTRMZ A A4,GXSMB2 S A4,MC,A3 FIND5 L,M A2,49 . LENGTH ONE THIRD ARG TABLES L A1,ARGSRT,A3 START OF ARGUMENT TABLES FOR LEVEL LXI,M A1,1 SZ 0,*A1 SZ 0,*A1 SZ 0,*A1 JGD A2,$-3 L A0,PLABL SAVE LABEL TO TEST AT END OF MACRO FOR ENDING DO L S A0,MACLBL,A3 . SZ,S2 MACLBL,A3 J PH301 FIND3L LMJ B11,PERR FORM6 2,118,0 J PH500 SKIP THRU REST OF PROGRAM . THIS SECTION IS CALLED WHEN THE END OF A SUBSTITUTION STRING IS FOUND MACCED* S A3,('MCSVA3') L A3,MCQNT AN,M A3,2 JN A3,SCN95 . BAD LEVEL S A3,MCQNT . MQTB INDEX L A0,MCLVOU AN,M A0,1 AN,S3 A0,MQTB+1,A3 JN A0,SCN95 . BAD LEVEL S A0,MCLVOU JNZ A0,MACED1 . NOT OUTERMOST DELTA L A0,GXSB2 S A0,GXB2 . RETURN TO NORMAL BI-LINK L A0,GXTRCZ S A0,GXSKIP L,S2 A0,MQTB+1,A3 L A1,GXRTN,A0 S A1,GXHOL L A0,GXHOL TE A0,GXTRMZ . IF GXHOL WAS A SKIP J MACED1 L A0,GXSKIP . SET IT TO NEW SKIP S A0,GXHOL MACED1 L A0,GXABDL S A0,GXSDEL . ALLOW DELTA EXPANSION S A0,GXDEL L,H2 B3,MQTB,A3 RESET SCAN INDEX TO THEIR POSITION LXI,M B3,1 L,H1 B2,MQTB,A3 L,S5 A0,MQTB+1,A3 . SIMULATE L,T3 R5,MQTB+1,A3 LSSL A0,6 A,S6 A0,MQTB+1,A3 S A0,R5 L,S4 A0,MQTB+1,A3 S A0,MCNT L A3,('MCSVA3') TNZ ARFL1 J 0,B2 J *ARFL1 RETURN TO PICK UP DIMENSION INFORMATION FIND99 LMJ B11,PERR FORM6 020,245,0 J *FEXIT N1SCN* . THIS SECTION PROCESSES A SCAN STATEMENT . THE SYNTAX OF A SCAN STATEMENT IS AS FOLLOWS . SCAN N,/ S1/, /S2/,.../SN/ . N IS THE ARGUMENT THAT IS BEING SCANNED . S1 TO SN ARE THE SEPARATORS THAT TERMINATE CURRENT FLD S,H2 B11,SC90X AN,M B1,1 S,H2 B1,SEQNO SZ SCNGEN FLAG FOR GENING A SCAN SZ,S4 SCNBRK . CLEAR BRACKET MODE SZ SCNEQF L A0,MCLVOU AN,H1 A0,GNSFL S,H2 A0,SCNGEN SZ SCNOF MACRO LEVEL OFFSET SZ SCANSB CLEAR FLAG FOR SUBFIELD SCANNING SCNAST LMJ B11,GX . GET CHARACTER TO TEST FOR SUBFIELD J SCN98 BAD SYNTAX TE,M A0,'*' J $+3 S,H1 A0,SCNGEN J SCNAST TNE,M A0,'(' J SCNA A SUBFIELD IS BEING DEFINED TE,M A0,',' A LEADING COMMA WOULD BE OK SZ FNXT SCNB LMJ B11,SCEX SCAN ARGUMENT NUMBER J SCN98 BAD SYNTAX L A5,A3 S A5,SCNAR ARGUMENT NUMBER TG,M A5,1 TG,M A5,26 J SCN96 ONLY 25 ARGUMENTS ALLOWED L A0,PARFLG SZ PARFLG SZ STFUFL TE,M A0,',' J SCN98 BAD SYNTAX SZ N1SEP SZ N1SEP+1 SZ FNXT USE NEXT CHARACTER SCN1 LMJ B11,GX J SCN99 ERROR IF EOS TNE,M A0,'(' J SCN1P SCN1Q TNE,M A0,'=' SCAN FOR LENGTH J SCN1L TNE,M A0,':' J SCNCL . GO SCAN EXPRESSION TE,M A0,'/' J SCN97 GXRTRN ' ',';','@','^' LMJ B11,GX J SCN99 EARLY EOS TP FDASCN . TEST FOR ASCII IMAGES L,H1 A0,ASCFDASC$,A0 . CONVERT ASCII TO FIELDATA L A7,A0 . SAVE FOR POTENTIAL RANGE SCAN L,M A5,1 SZ A4 LDSL A4,0,A0 SET BIT FOR EACH SEPARATOR OR A5,N1SEP+1 S A6,N1SEP+1 OR A4,N1SEP S A5,N1SEP SCN1N . RETURN FROM RANGE CODE GXABSB ' ',';','@','^' LMJ B11,GX J SCN99 TE,M A0,'/' J SCN99 LMJ B11,GX J SCN2 FINISHED WITH SEPARATOR LIST TNE,M A0,'-' . TEST FOR RANGE J SCN1M TE,M A0,',' J SCN98 J SCN1 SCN1M LMJ B11,GX J SCN99 TE,M A0,'/' J SCN97 GXRTRN ' ',';','@','^' LMJ B11,GX J SCN99 L,M A9,1 . POTENTIAL INCREMENT L A8,A0 . LAST VALUE TG A7,A8 LN A9,A9 . REVERSE SEQUENCE L A0,A7 SCN1R . ENTRY HERE TO INCREMENT A A0,A9 SET TO NEXT POINT L,M A5,1 SZ A4 LDSL A4,0,A0 SET BIT FOR EACH SEPARATOR OR A5,N1SEP+1 S A6,N1SEP+1 OR A4,N1SEP S A5,N1SEP TNE A0,A8 . TEST FOR LAST POINT J SCN1N J SCN1R . GO INCREMENT TO NEXT SCN1P LMJ B11,SCEX J SCN98 JP A3,$+3 LN A3,A3 SSC A3,18 S A3,SCNOF OFFSET TO MACRO LEVEL L A0,PARFLG SZ PARFLG SZ STFUFL TE,M A0,')' TEST FOR CLOSING PARENTHESES J SCN98 LMJ B11,GX J SCN98 TE,M A0,',' J SCN98 LMJ B11,GX J SCN98 J SCN1Q SCNA LMJ B11,GX J SCN98 TNE,M A0,'C' J $+3 TE,M A0,'I' J SCN98 S,S6 A0,SCANSB . SET FLAG FOR SCANNING A SUBFIELD SSL A0,6 S,S5 A0,SCANSB . SIMULATE S,T3 LMJ B11,GX J SCN98 TE,M A0,',' J SCN98 LMJ B11,SCEX GET MAJOR ARGUMENT NUMBER TO RESCAN J SCN98 TG,M A3,1 TG,M A3,26 J SCN96 . ARG OUT OF RANGE S,S4 A3,SCANSB SSL A3,6 S,S3 A3,SCANSB . SIMULATE S,T2 A3,SCANSB L A0,PARFLG TEST TERMINATOR OF EXPRESSION SZ PARFLG TE,M A0,')' J SCNC SCND LMJ B11,GX J SCN98 TE,M A0,',' J SCN98 J SCNB SCNC TE,M A0,',' J SCN98 LMJ B11,SCEX J SCN98 S,S2 A3,SCANSB SSL A3,6 S,S1 A3,SCANSB . SIMULATE S,T1 L A0,PARFLG SZ PARFLG TE,M A0,')' J SCN98 J SCND . THIS SECTION OF THE SCAN STATEMENT SKIPS EXPRESSIONS BY . FINDING THE MATCHING DELIMITER. THESE DELIMITERS MAY BE . NESTED TO ANY DEPTH. SCNCL LMJ B11,GX . IF EOS HERE USE PREIOUS DEFINITIONS J SCNCLC SZ FNXT . USE CHARACTER AGAIN L,M A0,63 N1SEPX EQUF TST,0,S3 SZ N1SEPX,A0 . CLEAR TABLE FOR DELIMITERS JGD A0,$-1 L,M A4,1 . SAVES STATES OF TERMINATORS SCNCLL GXRTRN ' ',';','@' LMJ B11,GX J SCN99 . PREMATURE E.O.S. TE,M A0,072 . TEST FOR QUOTE J SCN97 . IMPROPER SYNTAX LMJ B11,GX J SCN99 . PREMATURE E.O.S. OR A4,N1SEPX,A0 S A5,N1SEPX,A0 GXABSB ' ',';','@' LMJ B11,GX J SCN99 TE,M A0,072 J SCN99 . SYNTAX ERROR LMJ B11,GX J SCNCLB . TEST IF E.O.S. OK TNE,M A0,':' J SCNCLA TE,M A0,',' J SCN97 . SYNTAX ERROR XOR,M A4,2 . FLIP FROM BEGINNING SEPARATOR S A5,A4 J SCNCLL SCNCLA AND,M A4,2 . TEST IF COLON ATER DELIMITER JZ A5,SCN99 . SYNTAX ERROR XOR,M A4,6 . FLIP TO HIGHER PRECEDENCE L A4,A5 J SCNCLL SCNCLB AND,M A4,2 JZ A5,SCN99 . PREMATURE E. O. S. SCNCLC . LN A11,(0) . SCAN IS COMPLETE WHEN A11 IS +0 TZ,S1 SCNBRK L,S1 A11,SCNBRK . IF USERS LEVEL USE IT SZ,S1 SCNBRK . CLEAR AFTER USING IT L,M A13,0 . FLAG FOR HIGHER PRECEDENCE SEPARATORS SN,S4 A13,SCNBRK . FLAG FOR BRACKET MODE OF SCANNING J SCN2 . THIS NEXT SECTION DOES THE ACTUAL SCAN SCNCLJ L A3,N1SEPX,A0 JZ A3,SCN5A SSL A3,1 A ONE BIT IS IN ALL COMMANDS TLE,M A3,2 JNZ A13,SCN5A . IH HIGH ACTIVE IGNORE LOW EX SCNTTZ,A3 . ALTER LEVEL SCNCLQ TN A11 . TEST FOR NO DELIMITERS JNZ A11,SCN5A J SCN4 SCNTTZ A,M A11,1 . INCREASE LOW ORDER AN,M A11,1 . DECREASE LOW ORDER A,M A13,1 . INCREASE HIGH ORDER J SCNHE . DECREASE HIGH ORDER SCNHE JZ A13,SCNSME AN,M A13,1 . DECREASE HIGH LEVEL J SCNCLQ SCNSME A,M A13,1 J SCNCLQ SCN2 . AT THIS POINT THE ARGUMENT IS SCANNED AND ITS START, LENGTH . AND TERMINATOR ARE SAVED IN TABLES INDEXED BY ARGUMENT NUMBER TNZ,H1 SCNGEN . TEST FOR SCAN BY EXCLUSION J $+4 DL A0,N1SEP SN A0,N1SEP SN A1,N1SEP+1 TZ FSCLN LMJ B11,SGX . SAVE POINTERS FOR NEXT STMTS SZ FEOS CLEAR END OF STATEMENT BEFORE RESCAN LR FNXT,R8 . FORCE IT TO GET A CHARACTER GXRTRN,ALL . RETURN EVERYTHING L A3,MACNO AN,M A3,1 AN,XH2 A3,SCNGEN AN,H2 A3,SCNOF . OFFSET TO DEFINITION JN A3,SCN95 . BAD LEVEL L A1,ARGSRT,A3 A A1,SCNAR . ARGTBL INDEX A,H2 A3,SCNOF . RETURN LEVEL AN,H1 A3,SCNOF TZ SCANSB J SCN2A . SUBSCAN INITIALIZATION L B2,MC,A3 L B3,MW,A3 L,H2 A9,MR,A3 S A9,R5 TNZ,H1 SCNEQF . NO INCREMENT ON EQUALS SIGN AN,M A9,1 . ONE LESS CHAR COUNT L,H1 A0,MR,A3 S A0,MCNT TNZ A0 L,M R5,5000 INFINITE AT ZERO MACRO LEVEL SCN2B . S A9,A10 TNZ SCNEQF J $+3 TG,XH2 A9,SCNEQF L,XH2 A9,SCNEQF . USE LEAST COUNT S B2,ARGB2,A1 . INITIALIZE ARGTBL ENTRY S B3,ARGB3,A1 S B2,ARGB5,A1 . AND SUBSCAN ENTRY S B3,ARGB6,A1 L A0,GXSMB2 S A0,GXB2 SZ A7 COUNTS LENGTH OF ARGUMENT SZ A8 JN A9,SCN3 ARGUMENT LENGTH ZERO ))) SCN5 TNZ R5 J SCN3 . TREAT 0 AS END OF STMT LMJ B11,GX J SCN3 SPECIAL CASE IF EOS TERMIATED TP FDASCN . TEST FOR ASCII CHARACTERS L,H1 A0,ASCFDASC$,A0 TZ SCNEQF J SCN5A TZ,S4 SCNBRK J SCNCLJ . DO BRACKET MODE OF SCAN TE,M A0,' ' J SCR5A JZ A8,SCN5A SCR5A L,M A8,1 ONLY STOP ON BLANK AFTER NON BLANK SZ A4 L,M A5,1 LDSL A4,0,A0 SEE IF CHARACTER IS SEPARATOR AND A5,N1SEP+1 JNZ A6,SCN4 AND A4,N1SEP JNZ A5,SCN4 SCN5A A,M A7,1 TLE A9,A7 J SCN3Y SIMULATE END OF STATEMENT ON END OF ARGUMENT J SCN5 SCN3Y . TLE,XH2 A7,SCNEQF AN,M A7,1 SCN3 LN,M A0,1 USE MINUS ONE FOR EOS SEPARATOR SCN4 L A3,MACNO AN,M A3,1 AN,XH2 A3,SCNGEN AN,H2 A3,SCNOF L A1,ARGSRT,A3 A A1,SCNAR . ARGTBL INDEX A,H2 A3,SCNOF AN,H1 A3,SCNOF L A9,A10 AN A9,A7 TNZ,H1 SCNGEN J $+3 AN,H2 B2,GXSKIP A,M A9,1 TP A9 SZ A9 TZ SCANSB J SCN4K . SUBSCAN COMPLETION S B2,MC,A3 . SAVE POINTERS S B3,MW,A3 S,H2 A9,MR,A3 SCN4J . S A0,ARGSP,A1 . COMPLETE ARGTBL ENTRY S A7,ARGL,A1 S A7,ARGB7,A1 L A0,GXSB2 S A0,GXB2 SZ MBFMAX,A1 SC90 . TZ FSCLN LMJ B11,RGX J *SC90X REENT SCN1L . LMJ B11,SCEX GET LENGTH FOR SCAN J SCN98 S,H1 B11,SCNEQF AN,M A3,1 SUBTRACT SO TEST AT END OF SCAN2 WORKS S,H2 A3,SCNEQF J SCN2 SCN2A . SUBSCAN INITIALIZATION L A2,SCANSB . SIMULATE AN,T1 SSA A2,24 AN A3,A2 . OFFSET JN A3,SCN95 . BAD LEVEL L A2,ARGSRT,A3 L,S3 A4,SCANSB . SIMULATE A,T2 A2,SCANSB LSSL A4,6 A,S4 A4,SCANSB A A2,A4 L A4,SCANSB SSC A4,12 SSL A4,24 . SIMULATE L,T3 A4,SCANSB TE,M A4,'I' A,M A2,75 L B2,ARGB2,A2 L B3,ARGB3,A2 L A9,ARGL,A2 S A9,R5 TZ A9 . DECREMENT SO NEGATIVE TEST WILL WORK TNZ,H1 SCNEQF AN,M A9,1 S R15,MCNT J SCN2B SCN4K . SUBSCAN COMPLETION L A2,SCANSB SSA A2,24 . SIMULATE AN,T1 AN A3,A2 L A2,ARGSRT,A3 L,S3 A4,SCANSB . ARGTBL INDEX LSSL A4,6 . SIMULATE A,T2 A2,SCANSB A,S4 A4,SCANSB A A2,A4 S B2,ARGB5,A2 S B3,ARGB6,A2 S A9,ARGB7,A2 J SCN4J SCN99 LMJ B11,PERR FORM6 1,4,0 INPROPER EOW J SC90 SCN98 LMJ B11,PERR FORM6 2,231,0 BAD SYNTAX IN SCAN STATEMENT J SC90 SCN93 LMJ B11,PERR M S FORM6 1,236,0 M S J SC90 M S SCN94 L,S3 A0,SCANSB . UNDEF ARG SCAN LSSL A0,6 . SIMULATE L,T2 A,S4 A0,SCANSB S A0,MAPAR LMJ B11,PERR FORM6 021,192,MAPAR J SC90 SCN97 LMJ B11,PERR FORM6 2,233,0 J SC90 SCN96 LMJ B11,PERR FORM6 2,232,0 J SC90 GXCDEL* . THIS SECTION PERFORMS THE DELTA SUBSTITUTION . HAS THE FOLLOWING FORMAT . ^N SUBSTITUTE IN NTH ARGUMENT . ^L,N SUBSTITUTE IN LENGTH OF NTH ARGUMENT . ^SN SUBSTITUTE IN SEPARATOR AFTER NTH ARGUMENT . ^D,N SUBSTITUTE IN DIMENSION OF NTH ARGUMENT . ^D(M)N SUBSTITUTE IN VALUE OF MTH DIMENSION OF NTH ARGUMENT . THE COMPLETE SUBSTITUION STRING IS TERMINATED BY A PERIOD . THE LETTERS L,S AND D MUST BE FOLLOWED BY A COMMA OR L PAREN S B1,('SVB1 ') TN MCRCLV J GX5JAA . RECURSING L B1,GXMSPC . BREAK POINT S B1,GXMODE . CHARACTER MODES L B1,GXHOL . UNTIL SUBSTITUTION L A0,GXSKIP TNE A0,B1 . IF SKIP MODE L B1,GXTRMZ . ASSURE IT'S ON DELTA BI-LINK S B1,GXMODE+1 L B1,GXSCLN S B1,GXMODE+2 GXABSB ' ',';','@' GX5JAA L A0,MCRCLV A,M A0,19 TG,M A0,57 J GX5J98 . RECURSION LEVEL EXCEDED S A0,MCRCLV S A0,B1 J DO 7 , S A0+J-1,SV+J-1,B1 S R6,SV+11,B1 S B11,SV+9,B1 L A0,('SVB1 ') S A0,SV+13,B1 L A0,ARFL S A0,SV+14,B1 L A0,ARFL1 S A0,SV+15,B1 L A0,ARFL2 S A0,SV+16,B1 L A0,ARSUM MAC+- S A0,SV+17,B1 MAC+- SZ ARSUM MAC+- L A0,ARSUM1 S A0,SV+18,B1 SZ ARSUM1 SZ ARFL NON ZERO FOR SPECIAL TYPES OF ARGUMENTS SZ ARFL1 SZ ARFL2 GX5KJ SZ A6 GX5K. LMJ B11,GX J GX5J99 TE,M A0,'-' MAC+- TNE,M A0,'+' MAC+- J GX5JA MAC+- TE,M A0,'/' SECOND SEPARAPTR IN X SUBSTITUTION DELTAX TNE,M A0,'.' J GX5JA ARGUMENT NUMBER TNE,M A0,',' J GX5JB FIRST LETTER TELLS TYPE OF FIELD TNE,M A0,'(' J GX5JC START OF DIMENSION TEST TNE,M A0,' ' . TEST FOR BLANK J GX5BL GX5BLA SZ A5 LDSL A5,6 TZ A5 J GX5K98 >6 CHAR. A A6,A0 J GX5K GX5JA S,S1 A0,ARSUM MAC+- TNZ A6 J GX5K99 L A5,A6 MAC+- GX5JA1 AND A5,(0770000,0) TZ A6 J GX5JM LSSL A5,6 A,M A5,5 J GX5JA1 GX5BL TNZ MG33 J GX5BLA J GX5K . GX5K98 DSL A5,6 ITM TOO LONG. S A6,MAPAR LMJ B11,PERR FORM6 011,194,MAPAR DELABO L,M A0,0 RETURN MASTER SPACE. J GXB3C GX5K99 LMJ B11,PERR NULL ITEM. FORM6 01,195,0 J DELABO GX5JM . AT THIS POINT A5 CONTAINS EITHER A PARAMETER OR A NUMBER . STRING IN CHARACTERS TO BE CONVERTED INTO BINARY TN A5 J GX5JP TEST IF PARAMTERER IS IN SYMBOL TABLE L,M A0,0 GX5JD L,M A4,0 LDSL A4,6 TNE,M A4,5 J GX5JE AN,M A4,48 MSI,M A0,10 A A0,A4 J GX5JD GX5JE L,S2 A2,ARSUM . LAST OPERATOR. MAC+- TNE,M A2,'-' . SIGN CURRENT OPERAND MAC+- LN A0,A0 . BY PREVIOUS OPERATOR MAC+- A,XH2 A0,ARSUM1 . AND TACK ON PREVIOUS SUM S,H2 A0,ARSUM1 . SAVE CURRENT SUM L,S1 A2,ARSUM . SAVE CURRENT OPERATOR TO USE MAC+- S,S2 A2,ARSUM . FOR NEXT OPERAND. MAC+- TNE,M A2,'/' DELTA J *ARFL SECOND SEPARATOR IN X SUBSTITUTION DELTA TE,M A2,'.' . DOES THIS TERMINATE INDEX FLD? MAC+- J GX5KJ . NO, CONTINUE. MAC+- TZ ARFL MAC+- J $+3 TG,M A0,25 J GX5J9 . AT THIS POINT A0 HAS THE ARGUMENT NUMBER AND THE SCAN INDICIES ARE . SET TO READ THIS ARGUMENT L A1,MACIX INDEX INTO MACRO TABLES AN,M A1,1 AN A1,MCLVOU LEVELS TO MOVE OUT JN A1,GX5J94 L A1,ARGSRT,A1 A A1,A0 S A1,ARGTBP POINTER TO ARG TABLE S,S2 A0,MCFLG1 . SAVE ARGUMENT NUMBER L A3,ARFL TZ A3 J 0,A3 L A3,MACNO M S L,S1 A2,MCSTLG,A3 BIAS AT START OF MACRO M S TNZ MCLVOU M S S A2,MCDEAN M S GX5JK L B1,MCRCLV SLJ GXADV TNZ ARGB2,A1 M S J GX5J9 UNDEFINED ARGUMENT L B2,ARGB2,A1 L B3,ARGB3,A1 B3 SETTING FOR THIS ARGUMENT L R5,ARGL,A1 GX5JJ . MAKE MQTB ENTRY S R15,MCNT L A3,MCQNT . MQTB INDEX L A2,SV+7,B1 . B2 S,H1 A2,MQTB,A3 L A2,MCDEAN S,S3 A2,MQTB+1,A3 L A2,SV+8,B1 . B3 S,H2 A2,MQTB,A3 L A2,SV+12,B1 . MCNT S,S4 A2,MQTB+1,A3 L A2,SV+10,B1 . R5 S,S6 A2,MQTB+1,A3 SSL A2,6 . SIMULATE S,T3 S,S5 A2,MQTB+1,A3 A,M A3,2 S A3,MCQNT L A0,GXSMB2 . MOVE TO DELTA BI-LINK S A0,GXB2 L A0,GXTRMZ S A0,GXSKIP TZ ARFL1 . IF WE'RE RETURNING J GX5KAA . POSTPONE RESTORE L A0,MCRCLV AN,M A0,19 . DECREASE LEVEL S A0,MCRCLV L A0,SV+16,B1 S A0,ARFL2 L A0,SV+15,B1 S A0,ARFL1 L A0,SV+14,B1 S A0,ARFL L A0,SV+17,B1 MAC+- S A0,ARSUM MAC+- L A0,SV+18,B1 S A0,ARSUM1 GX5KA TN MCRCLV . AT OUTER MOST DELTA J GX5KB GX5KAA L A0,GXMODE S A0,GXMSPC L A0,GXMODE+1 L,M A1,0 TNE A0,GXTRCZ L,M A1,1 TNE A0,GXTRMZ L,M A1,2 S,S2 A1,MQTB-1,A3 TNZ SUBLCN S A0,GXHOL L A0,GXMODE+2 S A0,GXSCLN GX5KB L,M A0,1 A A0,MCDEAN M S SZ MCDEAN M S A A0,MCLVOU LEVEL TO MOVE OUT IF DELTA S A0,MCLVOU FOUND WHILE SCANNING ARG TLE A0,MACNO J $+4 L A0,GXRTN . AT SOURCE LEVEL S A0,GXSDEL . RETURN DELTAS S A0,GXDEL TNZ FDASCZ . TEST FOR ASCII LINE J GX5KBA . CONVERT GXLOC TO ASCII DL A0,GXLOC . TRANSFER TO N0RGSA DS A0,N0RGSA L A0,(1,N0RGSA) . WORD FETCH INDEX L A1,(1,0) . CHARACTER FETCH INDEX L A2,(1,GXLOC) . WORD STORE INDEX L A3,(1,0) . CHARACTER STORE INDEX L A4,R5 . CHARACTER COUNT TG,M A4,13 L,M A4,12 JGD A4,$+1 EX GX5LD,*A1 . GET A FIELDATA CHARACTER L B11,A5 . USE AS INDEX FOR CONVERSION L,H2 A5,ASCFDASC$,B11 . CONVERT TO ASCII STORE EX GX5ST,*A3 . STORE AN ASCII CHARACTER JGD A4,$-4 . LOOP ON ALL CHARACTERS GX5KBA J DO 7 , L A0+J-1,SV+J-1,B1 L B11,SV+9,B1 L R6,SV+11,B1 L B1,SV+13,B1 SR R8,FNXT SZ SUBLCN J GX GX5LD L,S1 A5,0,A0 L,S2 A5,0,A0 L,S3 A5,0,A0 L,S4 A5,0,A0 L,S5 A5,0,A0 LMJ B11,$+1 LXM,M A1,0 L,S6 A5,0,*A0 J 0,B11 GX5ST S,Q1 A5,0,A2 S,Q2 A5,0,A2 S,Q3 A5,0,A2 LMJ B11,$+1 LXM,M A3,0 S,Q4 A5,0,*A2 J 0,B11 $(REN) . GX5JP L A4,A5 S A4,MAPAR SAVE NAME FOR DIAGNOSTIC PURPOSES LMJ B11,SLT +CRLHL J GX5JF GX5JG L A0,3,A1 VALUE OF PARAMETER J GX5JE GX5JF LMJ B11,SLT +CRGHL J $+2 J GX5JG GO GET VALUE OF PARAMETER S A4,MAPAR LMJ B11,PERR FORM6 011,228,MAPAR MAC+- SZ A0 . RETURN A ZERO J GX5JE . AT THIS POINT A SPECIAL TYPE OF SUBSTITUTION HAS BEEN FOUND THE SPECIAL . LETTERS ARE L,S AND D. THE D COMES IN TWO FORMS GX5JB . TLE,M A6,6 J GX5K99 TG,M A6,040 J GX5K99 L A0,A6 EX $-5,A0 J GXA1 . A RETURN CHAR VAL J GXBSUB . B J GXC1 . C SUBSTITUTE SINGLE CHAR J GXJB3 . D RETURN DIMENSION NUMBER J GX5JBE E UNASSIGNED J GX5JBE F UNASSIGNED J GX5JBE G UNASSIGNED J GX5JBE H UNASSIGNED J GXIC1 . I RETURN INTEGER VALUE J GX5JBE J UNASSIGNED J GX5JBE K UNASSIGNED J GXJB1 L RETURN LENGTH J GXMSUB . M J GXNB1 . N SUBSTITUTE NTH LOCAL NAME J GXOC1 . O OCTAL EDITING J GX5JBE . P UNASSIGNED J GX5JBE . Q UNASSIGNED J GXR1 . R CONVERTED LABEL FOR LIST J GXJB2 . RETURN SEPARATOR J GX5JBE . T UNASSIGNED J GXU1 . RETURN NEXT UNIQUE NAME J GXV1 . RETURN NEXT MACRO REUSABLE NAME J GXW1 . RETURN NEXT MACRO RECUR REUSABLE NAME J GXX1 . X J GX5JBE . Y UNASSIGNED J GX5JBE . Z UNASSIGNED GX5JBE S A6,MAPAR UNKNOWN LMJ B11,PERR FORM6 011,229,MAPAR W,A,I J DELABO GXJB1 . AT THIS POINT THE LENGTH IS SUBSTITUTED FOR AN ARGUMENT SZ A6 CLEAR PREVIOUS CHARACTER L,M B11,$+3 S B11,ARFL J GX5K L A0,ARGL,A1 LENGTH OF NTH ARGUMENT TNZ ARGB2,A1 GIVE BACK IMPOSSIBLE LENGTH FOR L,M A0,9999 UNDEFINED ARGUMENT J GXB3C3 ZERO IS VALID LENGTH GXB3C S A0,GXLOC SZ ARFL1 CLEAN UP FLAGS ON EEOR JZ A0,GXB3C1 GXB3C3 L,M A3,5 LMJ B11,MACEBD EXEC 8 S A2,GXLOC EXEC 8 GXB3C1 SLJ GXADV ADVANCE TO NEXT CHARACTER L A1,GXLOC GXB3D L,M A5,6 JZ A1,GXB3D1 TEST FOR MASTER SPACE FAULT CHARACTER SZ A0 LDSL A0,6 AN,M A5,1 DECREASE POTENTIAL NUMBER OF CHARACTERS JZ A0,$-2 DSL A0,6 A,M A5,1 S A1,GXLOC GXB3D1 TNZ GXLOC L,M A5,1 J GXNB2X GXADVR L B1,MCRCLV REENT L A0,MCNT S A0,SV+12,B1 L A1,ARGTBP S B2,SV+7,B1 S B3,SV+8,B1 S R5,SV+10,B1 S R6,SV+11,B1 J *GXADV GXNB1 . AT THIS POINT SUBSTITUTE NTH LOCAL LABEL SZ A6 L,M B11,$+3 S B11,ARFL J GX5K . AT THIS POINT A0 HAS LOCAL LABEL NUMBER S A0,MCLCID NUMBER IDENTIFIER OF LOCAL NAME SLJ GXADV L A0,MACIX AN,M A0,1 AN A0,MCLVOU LEVELS TO GO OUT L A0,MCLCPT,A0 POINTER TO START OF LOCAL NAMES THIS MACRO A A0,MCLCID LOCAL NAME NUMBER L A0,MCLCNM,A0 S A0,GXLOC L,M B3,GXLOC L B2,GXSMB2 . DELTA BI-LINK L,M R5,6 . 6 CHARS J GX5JJ GXJB2 . AT THIS POINT THE SEPARATOR IS SUBSTITUTED FOR AN ARG SZ A6 L,M B11,$+3 S B11,ARFL J GX5K SLJ GXADV TNZ,S2 MCFLG1 . TEST FOR ARG ZERO J GXJB2A L A0,ARGSP,A1 SEPARATOR OF NTH ARGUMENT GXJB2C . S,S1 A0,GXLOC . L A5,('-1') . TP A0 . S,T1 A5,GXLOC L,M A5,1 . TP A0 . L,M A5,2 L,M B3,GXLOC L B2,GXSMB2 . DELTA BI-LINK S A5,R5 J GX5JJ GXJB2A L,S1 A0,MCFLG1 . TERMINATING CHARACTER J GXJB2C GXJB3 . AT THIS POINT THE NUMBER OF DIMENSIONS ARE RETURNED SZ A6 L,M B11,GXB3Q S B11,ARFL J GX5K GXB3Q L,M B11,GXB3B S B11,ARFL1 L,M B11,GXB3AA L A0,SV+9,B1 S B11,SV+9,B1 S A0,ARFL4 L A1,ARGTBP TZ ARGB2,A1 J GX5JK SZ ARRNME UNDEFINED ARGUMENT. LMJ B11,PERR FORM6 1,236,0 J GXB3B BYPASS SUBST ATTEMPT. . AT THIS POINT THE FIRST CHARACRER IN THE NAME OF THE ARRAY HAS BEEN . SCANNNED GXB3AA NOP . ALLOW FOR EOS RETURN L A6,(' ') S A6,ARRNME FOR NULL NAME DETECTION. GXB3A TZ A0 EOS TNE,M A0,' ' IGN BLANK J GXB3AB SZ A5 LDSL A5,6 TE,M A5,' ' J GXB3AX A A6,A0 S A6,ARRNME GXB3AB LMJ B11,GX NOP . J GXB3A GXB3AX LMJ B11,PERR NAME TOO LONG FORM6 011,194,ARRNME LMJ B11,GX FLUSH REST OF NAME. NOP. J $-2 SHOULD VANISH. GXB3B . AT THIS POINT THE NAME OF THE ARRAY HAS BEEN SCANNED AND IS IN A6 L A0,ARFL4 L B1,MCRCLV S A0,SV+9,B1 SZ ARFL4 L A4,ARRNME SZ ARFL SZ ARFL1 TZ A4 CHK FOR NULL NAME. TNE A4,(' ') J GX5K99 AND A4,(0770000,0) TE A5,(050000,0) J $+3 LSSC A4,6 J $-4 S A4,ARRNME LMJ B11,SLT +CRLHL SEARCH LOCAL TABLE J GXB3K NOT IN LOCAL TABLE S A1,ARRAYN ADDRESS OF DIMENSIONED VARIABLE GXB3L L A1,ARRAYN L,S3 A4,2,A1 . TEST IF ONLY TYPED L,M A3,0 . SET NUMBER OF DIMENSIONS TO ZERO AND,M A4,7 TNE,M A5,7 . TEST UNASSIGNED TYPE J GXB3L1 L,S2 A2,2,A1 AND,M A2,7 EXTRACT NUMBER OF DIMENSIONS GXB3L1. SZ ARFL SZ ARFL1 L A0,A3 TZ ARFL2 PARTICULAR DIMENS? J GXB3L2 YES S A0,GXLOC NO, ALLOW FOR UNDIMENS. J GXB3C3 GXB3L2. L A2,3,A1 LOCATION IN CTAB OF DIMENSIONS A A2,ARFL2 DIMENSION AN,M A2,1 CTABD SZ ARRAYN L,H2 A0,0,A2 . CONSTANT OR SYM TABLE LOC OF VAR CTABD L,M A4,1 TE,S1 A4,0,A2 . DIMENSION, A VARABLE? CTABD J $+4 . YES PARDIM TZ,S2 0,A2 . NO, PARAMETER? CTABD L,H2 A0,0,A0 . YES, USE CURRENT VALUE. PARDIM J GXB3C PARDIM L A1,0,A0 NAME OF VARIALBE S A1,GXLOC J GXB3C1 GX5JC . AT THIS POINT CODE MUST BE SET UP TO FIND A PARTICULAR DIMESNION TE,M A6,'D' J GX5JBE WRONG SUBST. LMJ B11,GX J GX5J99 ERROR IF EOF TNE,M A0,' ' IGNORE BLANKS J $-3 TG,M A0,'9'+1 J GX5J96 AN,M A0,48 DIMENSION NUMBER OUT OF RANGE JN A0,GX5JMM GX5JS S A0,ARFL2 LMJ B11,GX J GX5J99 ERROR IF E. O. S. TE,M A0,')' J GX5J96 J GXJB3 GX5JMM A,M A0,48 SZ A6 GX5JL A A6,A0 LMJ B11,GX J GX5J99 ERR OR IF E O S TNE,M A0,' ' IGNORE BLANKS. J $-3 TNE,M A0,')' J GX5JL1 SZ A5 LDSL A5,6 JZ A5,GX5JL J GX5K98 TOO LONG GX5JL1 TNZ A6 J GX5K99 NULL L A5,A6 AND A5,(0770000,0) LEFT JUSTIFY PARAMETER NAME JNZ A6,$+4 LSSL A5,6 A,M A5,5 J $-4 L A4,A5 S A4,MAPAR NAME OF PARAMETER LMJ B11,SLT +CRLHL J GX5JQ GX5JR L A0,3,A1 VALUE OF PARAMETER S A0,ARFL2 J GXJB3 GX5JQ LMJ B11,SLT +CRGHL J $+2 J GX5JR LMJ B11,PERR FORM6 021,228,MAPAR J GX5J96 GXU1 L A0,MAUNQ NEXT AVAILABLE IDENTIFIER A,M A0,1 S A0,MAUNQ L,M A3,3 EXEC 8 LMJ B11,MACEBD EXEC 8 S A2,GXLOC EXEC 8 L A0,MAUPFX PREFIX FOR UNIQUE NAMES. M S S,S2 A0,GXLOC SSL A0,6 S,S1 A0,GXLOC . SIMULATE S,T1 SLJ GXADV GXNB2 L,M A5,6 . 6 CHARS GXNB2X. . HERE FOR DIFFERENT LENGTHS. W,A,I L B3,(1,GXLOC) W,A,I L B2,GXSMB2 . DELTA BI-LINK S A5,R5 . CHAR COUNT L A0,GXLOC TLE,M A5,7 TE A0,(' ') IF ALL BLANKS RETURN S A5,SUBLCN SUPPRESS BLANKS IN NAME L A3,GXTRMZ S A3,GXHOL J GX5JJ . OCT GXOC1. SUBSTITUTE 12-CHARACTER OCTAL VALUE OF IDENT. OCT . OCT LMJ B11,GXW1X . COME BACK LATER. OCT L A2,A0 OCT L,M A3,11 OCT LDSL A0,6 OCT SSL A1,3 OCT LDSL A1,3 OCT JGD A3,$-3 OCT DA A0,(0606060606060606060606060) OCT DS A0,GXLOC OCT J GXIC2 OCT . W,A,I GXW1. SUBSTITUTE RECURSIVELY-REUSABLE NAME (FLOATED ON MACNO) ^W,N. W,A,I . W,A,I L,M B11,GXW1A W,A,I GXW1X S,H2 B11,ARFL W,A,I SZ A6 W,A,I J GX5K W,A,I . W,A,I GXR1. SUBSTITUTE LABEL, RENAMED IF MALSTA ON (EDIT GENERATED) RSUB . RSUB LMJ B11,GXW1X . COME BACK RSUB TP A0 J $+3 TNZ MALSTA RSUB J GXIC1X . NORMAL SCAN RSUB GXR2 L A4,A0 THE LABEL SLJ MCLABL RENAMED IF NECESSARY RSUB L A0,A4 RSUB J GXIC1X EDIT IT RSUB GXBSUB LMJ B11,GXW1X J GXR2 GXMSUB L A0,MLBLIM AN,M A0,1 J GXIC1X . RSUB GXA1. . ^A,IDENT. - SUBSTITUTE 6-CHAR VALUE OF IDENT WITH BLANK SUPPR W,A,I . W,A,I LMJ B11,GXW1X . COME BACK WHEN PERIOD READ. W,A,I S A0,GXLOC . 6 CHARACTERS. W,A,I SLJ GXADV . GO HAND W,A,I J GXNB2 . THEM OVER. W,A,I GXC1 LMJ B11,GXW1X S A0,GXLOC SLJ GXADV L A5,(1,1) J GXNB2X . W,A,I GXIC1. ^I,IDENT. - SUBSTITUTE 12-CHAR SIGNED DECIMAL CONVERSION OF W,A,I . IDENT WITH BLANKS SUPPRESSED. W,A,I . W,A,I LMJ B11,GXW1X . EN PASSANT W,A,I GXIC1X. RSUB L A1,(' ') W,A,I S A1,GXLOC . ASSUME 6 DIGITS, POSITIVE. W,A,I TN A0 . INSERT SIGN IF NEG. W,A,I J $+4 W,A,I L,M A1,'-' W,A,I S,S6 A1,GXLOC W,A,I LN A0,A0 W,A,I DSL A0,36 W,A,I DI A0,(1000000) W,A,I S A1,GXLOC+1 . SAVE LEAST SIGNIF. W,A,I L,M A4,' ' 0-FILL TNZ A0 . >= 10**6? W,A,I J $+8 . NO 0-FILL L,M A3,5 . YES, CONVERT MOST SIGNIF PART W,A,I LMJ B11,MACEBD W,A,I LSSC A2,6 . ATTACH SIGN. W,A,I L A3,GXLOC W,A,I LDSC A2,30 W,A,I S A3,GXLOC W,A,I L,M A4,'0' . SET FOR ZERO FILL. 0-FILL L A0,GXLOC+1 . CONVERT LEAST SIGNIF. W,A,I L,M A3,5 W,A,I LMJ B11,MACEBZ 0-FILL S A2,GXLOC+1 W,A,I GXIC2. OCT SLJ GXADV . GO HAND IT OVER. W,A,I L,M A5,12 . 12 CHARS J GXNB2X W,A,I . W,A,I GXV1 . AT THIS POINT SUBSTITUTE MACRO REUSABLE NAME SZ A6 L,M B11,GXV1A S B11,ARFL J GX5K GO SCAN IDENTIFIER NUMBER . W GXW1A. ADD MACNO TO QUALIFICATION OF ^V FOR ^W. W . W L,S6 A2,MACNO W AN A2,MCLVOU W LSSL A2,24 . PUT IN S2 OF SEARCH WORD A A0,A2 W . W GXV1A . AT THIS POINT A0 CONTINAS MACRO IDENTIFIER NUMBER S A0,MCLCID SLJ GXADV L A0,MACIX AN A0,MCLVOU L A4,MCLCID . DELTA V NUMBER L A5,MACRNM-1,A0 . MACRO NAME FOR QUALIFICATION DS A4,N0RGSA L,S5 A0,MAUPFX . FIRST CHARACTER OF COMPILER ASSIGNED N S,S1 A0,N0RGSA S B6,N0RGSA+2 L,M B6,N0RGSA L,M A5,2 LMJ B11,SL2N . SEARCH SYMBOL TABLE +CRLNHL . HEADLINK FOR LONG NAMES LMJ B11,SLTIN L B6,N0RGSA+2 L A0,0,A1 . COMPILER ASIGNED NAME S A0,GXLOC J GXNB2 GXX1 . ^X,S/L. USED TO DESIGNATE PIECES OF MACRO BUFFER DELTAX L,M B11,GXX1A DELTAX S B11,ARFL DELTAX J GX5KJ GO SCAN 'S' GXX1A S,H2 A0,GXSTPS SAVE STARTING POSISTION DELTAX L,M B11,GXX1B DELTAX S B11,ARFL DELTAX J GX5KJ GO SCAN 'L' GXX1B S,H1 A0,GXSTPS SAVE LENGTH OF SUBSTITUTION DELTAX L A1,MCDELX INDEX INTO ARGUMENT TABLES DELTAX SLJ GXADV DELTAX L,H2 A2,GXSTPS STARTING POSISTION DELTAX DSL A2,36 DELTAX DI,M A2,6 DELTAX L B3,ARGB3,A1 B3 SETTING FOR ARGUMENT DELTAX A B3,A2 ADVANCE FOR OFFSET DELTAX MSI,H2 A3,GXTRMZ A A3,GXSMB2 S A3,B2 L,H1 R5,GXSTPS J GX5JJ DELTAX N1GEN* L A0,GXX AN,M B1,1 S,H2 B1,SEQNO S,H2 B11,GE90 LMJ B11,PSDX . CLEAR OUT LABEL IF ANY LMJ B11,GX J GEN98 TE,M A0,'(' J GEN99 L A0,GENNO A,M A0,1 S A0,GENNO TG,M A0,9 J GEN96 TOO MANY NESTED GENERATES TZ G32,A0 . TEST IF SPACE ASSIGNED FOR THIS LEVEL J GEN3M . IT WAS L,M A0,36 LMJ B11,MPRQST . GET SOME SPACE J FIND3L . SPACE NOT THERE SSL A0,18 L A3,GENNO S A0,G32,A3 GEN3M . SLJ MINSPX GEN2 L A3,GENNO S A1,GENPAR,A3 SAVE SYMBOL TABLE LOCATION OF PARAMETER SZ GLABL,A3 L A2,FLF S A2,GLFL,A3 . LOGICAL IF FLAG L,M A4,014 MARK FOR INTEGER PARAMETER S,S3 A4,2,A1 LMJ B11,GX J GEN98 TE,M A0,',' J GEN99 BAD SYNTAX LMJ B11,SCEX EVALUATE EXPRESSION J GEN95 ERROR IN PARAMETER EXPRESSION L A1,GENNO L A1,GENPAR,A1 S A3,3,A1 SET INITIAL VALUE OF PARAMETER L A0,PARFLG SZ PARFLG TE,M A0,',' J GEN99 NO COMMA SN,H2 A0,GEICFL LMJ B11,SCEX EVALUATE EXPRESSION FOR INCREMENT J GEN95 ERROR IN PARAMETER EXPRESSION SZ GEICFL L A1,GENNO S A3,GENINC,A1 L A0,PARFLG SZ PARFLG TE,M A0,',' J GEN99 NO COMMMA . TE NEXT SECTION SAVES THE CHARACTER FLAGS SO THAT THE TEST EXPRESSION . XAN BE SCANNED IF REQUIRED L R4,G32,A1 W SLJ RMGSV ONE TABLE SAVE AREA PER GENERATE LEVEL W SN,H2 A0,GEICFL LMJ B11,SCEX J GEN95 ERROR IN PARAMETER EXPRESSION SZ GEICFL L A1,GENNO L A5,LOAR S A5,GLR,A1 SAVE WEATHER LOGICAL OR ARITHEMETIC S A3,GNUM,A1 NUMBER OF TIMES TO DO GENERATION SZ GTEST,A1 CLEAR COUNT TO AVOID LOOS FLAG DELTAX TNZ A5 JZ A3,GEG2 JN A3,GEG2 TZ A5 JZ A3,GEG2 GEN2L L A0,PARFLG TEST FOR FINAL SEPARATOR SZ PARFLG TE,M A0,')' J GEN99 BAD SYNTAX NO CLOSING PARENTHESIS L A0,MCLVOU SAVE SO SCAN CAN TELL OCT S,H1 A0,GNSFL IF IT IS BEING GENED OCT GXRTRN ' ',';','@' GEN2M LMJ B11,SGX CTABD LMJ B11,GX CTABD J GEVOID CTABD L A0,GXX CTABD TE,M A0,'*' . FIRST CHARACTER ASTEISK RSUB J $+4 RSUB S,S6 A0,MAFLST SET TO LIST RSUB LMJ B11,GX RSUB J GEN99 RSUB TE,M A0,' ' J GEN2J PICK UP LABEL GXABSB ' ',';','@' LMJ B11,GX GO TO NEXT BLANK CHARACTER J GEVOID VOID TNE,M A0,072 J GENDG LMJ B11,RGX RESET FOR ALL OTHER SCANS GEN2K L B5,(1,0) RSUB L A1,GENNO . THE NEXT SECTION SAVES THE CHARACTERS FLAGS SO THA T E TEST EXPRESSION . CAN BE RESCANNED IF REAUIRED TZ GLR,A1 DO NOT SAVE IF LOGICAL AND EXPHAS TO BE RESW J $+3 W L R4,G32,A1 W SLJ RMGSV W GXABSB ' ',';','@' L A0,MACNO MACRO LEVEL AT WHICH GNERETE WAS INVOLED S A0,G49,A1 A,M B1,1 INCREASE SEQUENCE NUMBER OCT TNZ,S6 MAFLST IF SCAN IS SET AT ASTERISK IT MUST VOID J $+3 BE SKIPPED BEFORE SCANNING STAEMENT VOID LMJ B11,GX VOID SLJ BUG VOID LMJ B11,GX VOID SLJ BUG VOID SZ FNXT VOID GENLBL L A1,GENNO L A0,PLABL TNZ GLABL,A1 S A0,GLABL,A1 L A0,(' ') S A0,PLABL J PH301G GN300 LMJ B11,EPH1 J GN300 GEN2J LMJ B11,RGX VOID L A1,GENNO VOID TZ GLR,A1 VOID J $+3 VOID L R4,G32,A1 VOID SLJ RMGSV VOID L A0,MACNO VOID S A0,G49,A1 VOID LMJ B11,GX VOID SLJ BUG VOID TE,M A0,'*' VOID SZ FNXT VOID LMJ B11,GIT RSUB J GEN99 EOS IS BAD TE,M A2,4 J GEN94 GXABSB ' ',';','@' L FNXT,R8 VOID LMJ B11,GX VOID J GEVOID VOID SZ FNXT VOID L A4,GITV RSUB L A3,MACNO TNZ,S2 MACLBL-1,A3 S,H2 A4,MACLBL-1,A3 S,S2 A3,MACLBL-1,A3 FLAG FOR HAVING BEEN SET L B5,(1,0) RSUB L,M B11,GENLBL S,H2 B11,PS40 J PSTL+2 GENDG SZ HOLOUT OCT LMJ B11,RGX MACDIA L A1,GENNO DO NOT SAVE IF LOGICAL EXPRESSION HAS MACDIA TZ GLR,A1 HAS TO BE RESCANNED MACDIA J $+3 MACDIA L R4,G32,A1 MACDIA SLJ RMGSV MACDIA L A0,MACNO MACRO LEVEL AT WHICH GENERATE WAS INVOLMACDIA S A0,G49,A1 MACDIA GXABSB ' ',';','@' TNZ,S6 MAFLST MACDIA J $+3 MACDIA LMJ B11,GX MACDIA SLJ BUG MACDIA LMJ B11,GX MACDIA SLJ BUG IMPOSSIBLE MACDIA S,H2 B1,HOLOUT SET SEQUENCE NUMBER OCT L A3,MCQNT . DELTA DEPTH LXI,M A3,1 . SET FLAG S A3,HMCQNT . SAVE FOR QUOTE L,M A3,HOLOUT+1 LMJ B11,QUOTE GET QUOTE STRING J GENDXB EOS BEFORE END OF QUOTE L,M A15,2000 AN A15,A4 COMPUTE LENGTH OF ARGUMENT S,H2 A15,F60ID . LENGTH OF MESSAGE TG,M A15,108 J GENDXA L A0,GXX L,M A3,0 RSUB TE,M A0,',' J GENDGG . DEFAULT TO MACRO DIAGNOSTIC RSUB LR FNXT,R8 THRO COMMA AWAY LMJ B11,SCEX GET SEVERITY FLAG J GENDXB TE,M A3,5 CONSIDER NONMACRO SEQUENCE. W TNE,M A3,2 S A3,CRFL SET FATAL ERROR FLAG L,H1 A4,CRE . SIMULATE L,T1 SSL A4,6 A,M A4,1 TE,M A3,4 W TNE,M A3,1 S,S2 A4,CRE . INCREASE ERROR COUNT SSL A4,6 S,S1 A4,CRE GENDGG. RSUB A,M A3,5 CONVERT TO MACRO AND,M A3,7 DIAGNOSTIC SEQUENCE. S,S3 A4,HOLOUT GENDGA L,M A0,9 S,S1 A0,HOLOUT F60ID L A0,(1,HOLOUT) L,M A1,15 . LENGTH OF IMAGE L A2,(1,F60ID) . ONE WORD OF LENGTH INFODS L,M A3,0 . SET TO FIELDATA LMJ B11,W60F . MOVE IMAGE TO F60 L,H2 A4,F60ID . LAST LENGTH AN,M A4,84 S,H2 A4,F60ID . SET NEW LENGTH JN A4,GEGJA . TEST FOR SEMICOLON L,M R1,4 L A0,(1,HOLOUT+1) L A1,(1,HOLOUT+16) BT A0,0,*A1 RSUB J GENDGA+2 GEGJA TNZ FSCLN . TEST FOR STATEMENT PAST QUOTE J GEGEN J PH301 GO PARSE FOLLOWING STATEMENTS GENDXA LMJ B11,PERR FORM6 0,255,0 J GEG2 LENGTH OF DIAGNOSTIC TOO LONG GENDXB LMJ B11,PERR FORM6 1,256,0 ERROR IN SEVERITY FIELD J GEG2 GEN97 LMJ B11,PERR FIRST ARGUMENT NO PARAMETER FORM6 2,241,0 J GEN90 GEN99 LMJ B11,PERR BAD SYNTAX FORM6 2,239,0 J GEN90 GXB3K LMJ B11,SLT +CRGHL SEARCH GLOBAL TABLE J $+3 S A1,ARRAYN J GXB3L L,M A3,0 ASSUME ZERO DIM FOR UNKNOWN TNZ ARFL2 IF JUST WANTS NO OF DIM, J GXB3L1 RETURN ZERO TO HIM. LMJ B11,PERR FORM6 12,237,GITV L,M A0,0 J GXB3C GX5J9 LMJ B11,PERR FORM6 1,236,0 L,M A0,0 RETURN MASTER SPACE J GXB3C GX5J96 LMJ B11,PERR FORM6 2,238,0 L,M A0,0 RETURN MASTER SPACE J GXB3C GX5J94 LMJ B11,PERR FORM6 2,253,0 L,M A0,0 RETURN MASTER SPACE J GXB3C GX5J98 LMJ B11,PERR SECOND ^ BEFORE FIRST PERIOD FORM6 2,234,0 SLJ MACRGX OCT SZ B9 . COULD HAVE BEEN DESTROYED BY MACRO BUF L B1,('SVB1 ') . RESTORE SEQUENCE NUMBER J PH301 GO TO NEXT STATEMENT OCT GX5J99 LMJ B11,PERR FORM6 2,235,0 L,M A0,0 RETURN MASTER SPACE J GXB3C GEN95 LMJ B11,PERR FORM6 2,244,0 SZ GEICFL J GEG2 . TERMINATE ACTIVE GENERATE GEN98 LMJ B11,PERR PREMATURE EOS FORM6 2,4,0 J GEN90 GEN94 LMJ B11,PERR FORM6 2,243,0 J GEN90 GEN96 LMJ B11,PERR TO MANY NESTED GENERATE STATEMENTS FORM6 2,240,0 GEN90 . SZ GENNO SZ MCNT OCT SZ MCQNT OCT SZ MCLVOU OCT SZ MCRCLV OCT J *GE90 REENT MACRGR L,M R4,RGXTC REENT SLJ RMGRS W J *MACRGX MACSGR TNZ FSCLNG TZ,H1 FLF J MACSGX RSUB L,M R4,RGXTC W SLJ RMGSV W J *MACSGX MACLSR L A0,ST TZ MACNO J $+3 TNZ,H1 GNSFL J *MACLST JZ A0,*MACLST TE,M A0,20 END OCT TNE,M A0,7 J *MACLST SCAN TE,M A0,59 J $+2 TZ,S6 MAFLST PRINT CONTINUES WITH 0 IN COL. 6 TNE,M A0,8 J *MACLST GENERATE SLJ MACRGX RESTORE CHARACTER SCAN AT TOP OF RECORD L A0,(0120000,0) ACWRI S A0,CRSTED S A0,MACBF1-1 RESET CONTROL ITEM ACWRI L,M A0,13 L A1,(' ') TZ FDASQT L A1,(040040040040) S A1,MACBF1+1,A0 JGD A0,$-1 SZ MG33 S B11,MALSTA FLAG TO SKIP COMMAND S B5,('SVB5 ') S B6,('SVB6 ') L B5,(1,0) WORD INDEX L B6,(1,0) CHARACTER INDEX TZ FDASQT J AMACLB L A0,(' ') S A0,MACBF1 INITIALIZE COLUMNS 1 TO 6 GXRTRN ' ',';','@' MACLA . MACLAA LMJ B11,GX J MACLES END OF STATEMENT TZ MG33 J $+3 TNE,M A0,' ' SKIP LEADING BALNKS J MACLAA SN,H2 A0,MG33 EX MCST,*B6 S B5,MG32 FLAG FOR ONE CHARACTER IN RECORD J MACLA MACLES L B5,('SVB5 ') L B6,('SVB6 ') DO 1-SNOOP , PROC L A0,SICNT SZ SICNT L,M A3,5 LMJ B11,MACEBD S A2,MACBF1+11 DO SNOOP , PROC END AMACLC S,H2 B1,MACBF1-1 L A0,(1,MACBF1-1) L,M A1,15 . LENGTH OF IMAGE L,M A2,0 . NO TRAILING CONTROL WORDS L,M A3,0 . FORCE TO FIELDATA TZ MG32 LMJ B11,W60F . PLACE IMAGE IN F60 SZ MALSTA SZ ST SZ GXDMPS . CLEAR GXDBUF GXABSB ' ',';','@' SZ MG33 J MACLST MCST S,S1 A0,MACBF1+1,B5 S,S2 A0,MACBF1+1,B5 S,S3 A0,MACBF1+1,B5 S,S4 A0,MACBF1+1,B5 S,S5 A0,MACBF1+1,B5 SLJ MCSTJ MCSTJR S,S6 A0,MACBF1+1,*B5 REENT L B6,(1,0) L A0,B5 TE A0,(1,13) J MCSTJ DO 1-SNOOP , PROC L A0,SICNT SZ SICNT L,M A3,5 LMJ B11,MACEBD S A2,MACBF1+11 DO SNOOP , PROC END S,H2 B1,MACBF1-1 . SAVE SEQUENCE # L A0,(1,MACBF1-1) 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 L,S6 A0,MACBF1 A,M A0,1 S,S6 A0,MACBF1 UP CONTINUATION CUNT L A0,(' ') REENT S A0,F60ID CLEAR LABEL FIELD REENT L B5,(1,0) SZ MG32 L,M A0,13 L A1,(' ') S A1,MACBF1+1,A0 JGD A0,$-1 J *MCSTJ AMACLB L A0,(040040040040) . ASCII BLANKS S A0,MACBF1 . INITIALIZE COLUMNS 1 TO 4 S,H1 A0,MACBF1+1 . INITIALIZE COLUMNS 5 AND 6 A,M B6,2 . SET TO COLUMN 3 GXRTRN ' ', ';', '@' AMACLA LMJ B11,GX . GET NEXT CHARACTER J MACLES . END OF STATEMENT TZ MG33 J $+3 TNE,M A0,040 . SKIP LEADING BLANKS J AMACLA SN,H2 A0,MG33 EX AMCST,*B6 S B5,MG32 . FLAG FOR ONE CHARACTER IN RECORD J AMACLA AMCST S,Q1 A0,MACBF1+1,B5 S,Q2 A0,MACBF1+1,B5 S,Q3 A0,MACBF1+1,B5 SLJ AMCSTJ AMCSTJR S,Q4 A0,MACBF1+1,*B5 L B6,(1,0) L A0,B5 TE A0,(1,13) J AMCSTJ S,H2 B1,MACBF1-1 . SAVE SEQUENCE NUMBER L A0,(1,MACBF1-1) L,M A1,15 . LEMGTH L,M A3,1 . SHOW AS ASCII L,M A2,0 . NO TRAILING CONTROL WORDS LMJ B11,W60F . PLACE IMAGE IN F60 L,Q2 A0,MACBF1+1 . COLUMN 6 ( CONTINUATION MARK ) TNE,M A0,040 . FIRST CARD HAS BLANK L,M A0,0100 . SET TO ONE LESS THAN LETTER A A,M A0,1 . SET TO NEXT LETTER S,Q2 A0,MACBF1+1 . UP CONTINUATION COUNT L A0,(' ') S A0,F60ID . CLEAR LABEL FIELD L B5,(1,0) SZ MG32 L,M A0,13 L A1,(040040040040) S A1,MACBF1+1,A0 JGD A0,$-1 J *AMCSTJ . EXEC 8 MACEBD* . THIS ROUTINE CONVERTS BINARY TO FD VALUE IN AO LENG-1 IN A3W . RESULT IN A2. EXEC 8 . EXEC 8 L,M A4,' ' ZERO FILL CHARACTER. 0-FILL MACEBZ. HERE FOR NON-BLANK FILL (SET IN A4) 0-FILL S,H2 B11,MACEBX EXEC 8 SZ A2 EXEC 8 DSL A0,36 EXEC 8 J $+3 EXEC 8 LSSC A2,6 EXEC 8 SZ A0 EXEC 8 DI A0,MACEBT,A3 EXEC 8 TZ A3 EXEC 8 TZ A0 EXEC 8 L,M A4,'0' . START EDITING ZEROS FIRST NONZERO. EXEC 8 A A0,A4 EXEC 8 A A2,A0 EXEC 8 JGD A3,$-8 EXEC 8 J *MACEBX REENT MACEBT +1 EXEC 8 +10 EXEC 8 +100 EXEC 8 +1000 EXEC 8 +10000 EXEC 8 +100000 EXEC 8 $(2) . REENT MG33 +0 LEADING BLANK SWITCH MG32 +0 ONE CHARACTER ON LINE SWITCH $(REN) . . MCLABL . THIS TESTS IF A LAEL SHOULD BE RENAMED REENT . LABELS SHOULD BE RENAMED IF THEY ARE ABOVE 10000 MCLBR TP A4 J $+3 TLE A4,MLBLIM J *MCLABL TOP,M A4,0400000 . PHONEY BIT SET? TNE A4,('FR/FL') J *MCLABL J DO 4 , S A0-1+J,SVA-1+J L A0,MACNO AN,M A0,1 L A0,MCLBLT,A0 INDEX TO FIRST LOCAL LABEL TO LOOK AT MCLAB1 TNE A0,MCLBLX J MCLB2 NO LOCAL LABELS L A1,MCLY,*A0 . SIMULATE TE,XH1 SSA A1,18 TE A4,A1 J MCLAB1 L,H2 A4,MCLY-1,A0 PICK UP NEW NAME MCLB J DO 4 , L A0-1+J,SVA-1+J J *MCLABL MCLB2 L A1,MCLBZ NEXT AVAILABLE RENAME AU,M A1,1 S A2,MCLBZ SET TO NEXT POINTER S,H1 A4,MCLY,A0 S,H2 A2,MCLY,*A0 TLE A0,(1,MCLYL) J MCLB3 THERE IS STILL ROOM FOR LOCAL LABEL LMJ B11,PERR FORM6 2,242,0 TOO MANY LOCAL LABELS J *MCLABL MCLB3 S A0,MCLBLX UPDATE POINTER TO LOCAL LABEL TABEL L A4,A2 J MCLB GEVOID LMJ B11,RGX VOID L A1,GENNO VOID TZ GLR,A1 VOID J $+3 VOID L R4,G32,A1 VOID SLJ RMGSV VOID L A0,MACNO VOID S A0,G49,A1 VOID GEGEN* . THIS SECTION IS ENTERED AT THE END OF A STATEMENT WHEN . IN THE GENERATE MODE. IT TESTS TO SEE IF THE CURRENT . STATEMENT SHOULD BE GENERATED MOE TIMES AND IF NOT IT BACKS . DOWN A GENERATE LEVEL GEG3 L A0,GENNO GENERATE LEVEL L A1,MACNO IF A MACRO IS INVOLED BY GENERATE IT HAS SZ,H1 GNSFL OCT TE A1,G49,A0 TO BE COMPLETED BEFORE GENERATE PROCESSING J PH305J CAN CONTINUE . HAVE TO UPDATE PARAMETER VALUE TO USE IN TEST EXPRESSION TNZ GLR,A0 J GEG1 EXPRESSION TO BE GENERATED A FIXED NUMBER OF TIME L,M A1,8 S A1,ST L A1,GENPAR,A0 SYMTABLE LOC OF PARAMETER L A2,3,A1 A A2,GENINC,A0 S A2,3,A1 UPDATED VALUE OF PARAMETER L R4,G32,A0 LOCATION OF SAVE AREA W SLJ RMGRS RESTORE CHARACTER SCANNING W SN,H2 A0,GEICFL LMJ B11,SCEX J GEN95 ERROR IN PARAMETER EXPRESSION L A1,GENNO RESTORE A1 SZ GEICFL L A5,GTEST,A1 REENT A,M A5,1 REENT S A5,GTEST,A1 REENT TLE,M A5,250 REENT JNZ A3,GEN2L GENERATE STATEMENT AGAIN GEG2 SLJ GEG2Z J PH301 GEG2ZR L A0,GENNO AN,M A0,1 L A1,GLABL+1,A0 S A1,PLABL L A2,GLFL+1,A0 . LOGICAL IF FLAG TLE,M A2,1 J IF300 L A3,MACNO TE,S2 A3,LGIFSB,A2 J IF300 IF404 L,XH2 A1,FLF JZ A1,IF300 L,H2 A4,LGIFSB,A1 L,S1 A2,LGIFSB,A1 TNE,M A2,'*' J IF300 L A5,LGELSE,A1 . RESTORE START TZ,S3 LGIFSB,A1 . OF IF AS IT WAS AT S,H2 A5,LGIFSB,A1 . BEGINNING OF IF SSC A4,30 A A4,(0240000,1) TZ,S3 LGIEXT,A1 . TEST FOR LABEL INSIDE IF A,M A4,040 TZ,S3 LGIFSB,A1 . TEST FOR IFELSE STATEMENT A,M A4,020 S A4,SLOUT,*B9 L A4,DL . CURRENT DO LEVEL TNE,S3 A4,LGDOTS J $+3 LMJ B11,PERR FORM6 2,11,0 TNZ,S3 LGIFSB,A1 . TEST FOR IFELSE STAT AN,M A1,1 SZ,S3 LGIFSB,A1 S,H2 A1,FLF TP A1 J IFLEVA JNZ A1,IF404 IF300 . SZ PARFLG W S A0,GENNO L B5,(1,0) L A1,MCLVOU OCT S,H1 A1,GNSFL OCT JNZ A0,GEG3 GEG2J L A1,DL JZ A1,GEG2Z L A2,PLABL TE,H1 A2,DOTAB,A1 J *GEG2Z LMJ B11,EDO LMJ B11,EDO2 . MORE PROCESSING J GEG2J IFLEVA LMJ B11,PERR FORM6 2,5,0 . ENDIF STMT NOT BALANCED J IF300 GEG1 . THIS POINT IS REACHED WHEN AN OBJECT OF A GENERATE STATEMENT SHOULD . BE DONE A FIXED NUMBER OF TIMES. THIS NUMBER IS DECREASED . BY ONE AND IF STILL GREATER THAN ZERO THE STATEMENT IS GENERATED AGAIN L A1,GENPAR,A0 SYM TABLE LOC OF PARAMETER L A2,3,A1 A A2,GENINC,A0 S A2,3,A1 UPDATED VALUE OF PARAMETER L A1,GNUM,A0 INCREMENT PARAMETER BEFORE TESTING OCT AN,M A1,1 OCT S A1,GNUM,A0 OCT L R4,G32,A0 W SLJ RMGRS RESTORE CHARACTER SCANNING W JZ A1,GEG2 DECREASE GENERATE LEVEL OCT J GEN2M MAPBIG LMJ B11,PERR FORM6 2,241,0 COR J PH500 N1MAC* . THIS PROCESSES VARIANTS ON MACRO STATEMENT . MACRO NAME N=^U, . THIS FORM EQUIVALENCES THE LOCAL IDENTIFIER N WITH A UNIQUE NAME. . THE LOCAL NAME MAY THEN BE REUSED WITHIN THE MACRO ^N,N. S,H2 B11,N1MC90 SZ MSJMPF LMJ B11,NGX +4 SSL A2,18 L,M R1,MSNAML . NUMBER OF ENTRIES AN,M B1,1 . DO NOT INCREASE SEQUENCE NUMBER ON MAC S,H2 B1,SEQNO L A0,(1,0) SE,H1 A2,MCNMTZ,*A0 J MSUNR L,H2 A1,MCNMTZ-1,A0 . ADDRESS OF CPDE FOR THIS FUNCTION J 0,A1 . TRANSFER TO DIRECTIVE MCNMTZ . LIST OF MACRO DIRECTIVES +'DRO',MDROP . MACRO DROP CODE +'RES',MREST . MACRO RESTORE CODE +'SCA',MSCAN . SET LEVEL FOR BRACKET SCAN +'NAM',MSNAM . MACRO NAME +'STR',MSTRUC . SET LEVEL OF INDENTATION +'OPT',MOPTN . PASS ON OPTION LETTERS +'LON',MLONG . LONG NAME CAPABILITY +'UNI',MSUNQ . MACRO UNIQUE +'LAB',MSLAB . MACRO LABELS +'ABO',MSABO . MACRO ABORT +'NEX',MSNXT . MACRO NEXT +'REA',MSRD . MACRO READ +'JUM',MSJMP . MACRO JUMP +'IDE',MSID . MACRO IDENTIFY +'BUF',MSBUF . MACRO BUFFER +'FIL',MSFIL . MACRO FILEE +'WRI',MSWRIT . MACRO WRITE +'MAX',MSMAXL . MACRO MAX LABEL +'DEF',MSDEF . MACRO DEFINE +'DUM',MSDUMP . MACRO DUMP +'MJT',MJTEST . MACRO TEST NUMBER OF MACRO CALLS +'DEL',MSDEL . MACRO DELETE A COMPLETED MACRO +'INS',MTINST . MACRO INSTRUCTION COUNT FROM SNOOPY +'IGN',MIGNORE . MACRO IGNORE PROGRAM STRUCTURE TO THIS MSNAML EQU $-MCNMTZ MSUNR S A2,MSARG M S LMJ B11,PERR M S FORM6 012,145,MSARG UNRECOGNIZABLE MAC DIRECTIVE9 M S J *N1MC90 M S MSDUMP LMJ B11,MSEQX DO 1-SNOOP , PROC TNE,M A1,0 J MSDMP0 TNE,M A1,1 J MSDMP1 DO SNOOP , PROC END SLJ MSDMP J *N1MC90 $(2) MSDMP + 0777760,0 J MSDMPR $(REN) MSDMPR L R15,MSDMP SLJ N0RGSV LMJ B11,N1DMP + MSDMP + N0RGSA + PL + 0 + 0 SLJ N0RGRS L,M R15,1 J *MSDMP DO 1-SNOOP , PROC MSDMP0 SLJ TOFF$ J *N1MC90 MSDMP1 SLJ SNOOPY +02,0 J *N1MC90 DO SNOOP , PROC END MSFIL . MACRO FILE STATEMENT MACWRI L B11,N1MC90 MACWRI L A2,COMP-1 MACWRI TNE A2,('COMP ') MACWRI J COMFIL MACWRI LMJ B11,PERR MACWRI FORM6 1,220,0 MACWRI J N1MC90 MACWRI MSWRIT . MACRO WRITE STATEMENT MACWRI LMJ B11,MSRNM TE A0,('E ') SLJ NA3ER L A0,GXX TE,M A0,'(' SLJ MSER6 L FNXT,R8 MACWRI LMJ B11,SCEX MACWRI J MSER9 MACWRI S A3,FILUN . SAVE FILE NUMBER MACWRI TN A3 MACWRI TG,M A3,32 FILE NUMBER OUT OF RANGE MACWRI J MWERA MACWRI TNZ,S1 MACWRI,A3 MACWRI J MWERB UNIT NUMBER UNDEFINED MACWRI L A0,PARFLG MACWRI SZ PARFLG MACWRI TE,M A0,',' MACWRI SLJ MSER6 BAD PUNCTUATION SZ SCNOF MACWRI LMJ B11,SCEX MACWRI J MSER9 MACWRI S A3,SCNAR SAVE MACRO BUFFER NUMBER MACWRI TG,M A3,1 TG,M A3,26 J MSER3 BAD ARG NO. L A0,PARFLG MACWRI TE,M A0,',' MACWRI J MWRA NO OFFSET GIVEN MACWRI SZ PARFLG LMJ B11,SCEX MACWRI J MSER9 BAD EXPRESSION MACWRI S A3,SCNOF MACWRI MWRA L A0,PARFLG MACWRI TE,M A0,')' MACWRI SLJ MSER6 BAD PUNCT L A0,MACNO MACWRI AN A0,SCNOF MACWRI TLE,M A0,1 IF MACRO LEVEL PLUS OFFSET IS OUT OF MACWRI L,M A0,1 RANGE SET TO BOUNDARY CONDITIONS MACWRI TG,M A0,9 MACWRI L,M A0,8 MACWRI L A1,SCNAR MACWRI L A8,SCNAR A A1,ARGSRT-1,A0 MACWRI S A1,MCDELX TNZ MBFMAX,A1 J MSER14 ARG NOT A BUFFER. LMJ B11,GX DELTAX J $+5 EOS OK / NO RHS. TNE,M A0,'=' DELTAX J WRFRHS RIGHT HAND SIDE HAS TO BE SCANNED DELTAX SLJ MSER6 J WRFRHS L A3,FILUN MACWRI L,S1 A4,MACWRI,A3 MACWRI L A1,MCDELX S A1,A12 TNE,M A4,2 MACWRI J WRFILE MACWRI J WRELMT MACWRI . THIS SECTION PROCESSES A MACRO WRITE FOR A UNIT HAT IS A FILE MACWRI . ON ENTRY A1 IS POINTING AT CORRECT ARGUMENT TABLE MACWRI WRFILE . MACWRI L A2,ARGL,A1 LENGTH OF ARG IN CHAR L A0,ARGB3,A1 START OF ARG DSL A2,36 MACWRI A,M A3,5 ROUND DI,M A2,6 GET LENGTH IN WORDS MACWRI TG,M A2,64 MACWRI J MWERI L A4,(0150100,0) MACWRI S A4,MACBF1-1 SET F60 ID FOR FILE WRITE MACWRI L A4,FILUN SET MACRO UNIT MACWRI S,S3 A4,MACBF1-1 MACWRI A A0,A2 MACWRI AN,M A0,1 COMPUTE LAST WORD IN BUFFER MACWRI L A5,(' ') MACWRI TE A5,0,A0 MACWRI J $+4 MACWRI AN,M A0,1 SQUUZE TRAILING BLANKS FROM IMAGE MACWRI AN,M A2,1 MACWRI J $-4 MACWRI TP A2 MACWRI L,M A2,0 MACWRI S,H2 A2,MACBF1-1 SET LENGTH OF IMAGE MACWRI SZ MACBF1 MACWRI S,S2 A2,MACBF1 SET CONTROL WORD AT START OF FILE MACWRI L,M A4,13 MACWRI TG A4,A2 MACWRI L A4,A2 MACWRI L A3,ARGB3,A1 L A0,(1,MACBF1+1) L R1,A4 MACWRI WRFA BT A0,0,*A3 MOVE ITEM TO BUFFER L A0,(1,MACBF1-1) MACWRI DS A2,WRA2 . SAVE REGISTERS THRU CALL 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 . INSERT ITEM IN F60 DL A2,WRA2 . RESTORE REGISTERS L A1,A12 AN A2,A4 MACWRI JZ A2,*N1MC90 FINISHED MACWRI L,M A4,14 MACWRI TG A4,A2 MACWRI L A4,A2 MACWRI L R1,A4 MACWRI L A0,(1,MACBF1) J WRFA MACWRI . THIS SECTION PROCESSES LONG NAMES (OVER 6 CHARACTERS) MLONG LMJ B11,GX . LOOK FOR PARENTHESIS J MSER9 TE,M A0,'(' SLJ MSER6 . BAD PUNCTUATION L,M A9,1 . SET FLAG FOR RETURN J MSUBFL . GO SCAN AS A MACRO BUFFER STMT MLONGC L A10,B6 . SAVE B6 L A1,A7 . GET START OF ARGUMENT ENTRY L B6,ARGB3,A1 . GET START OF LONG STRING L A5,ARGL,A1 . GET LENGTH OF ARGUMENT DSL A5,36 DI,M A5,6 . GET LENGTH IN WORDS TZ A6 A,M A5,1 . GET TRUE WORD COUNT LMJ B11,SL2N . SEARCH LONG NAME TABLE +CRLNHL . HEADLINK FOR LONG NAMES LMJ B11,SLTIN . INSERT IN SYMBOL TABLE L B6,A10 . RESTORE B6 L A7,0,A1 . COMPILER GENERATED NAME SLJ MINSPX . GO SCAN OFF PARAMETER S A7,3,A1 . SET PAR TO COMPILER GENRTED NAME J *N1MC90 . ON ENTRY TO SEARCH ROUTINE, LENGTH IS IN A5 AND SYMBOL IN GITV . ON ENTRY LOCATION OF STRING IS IN B6 SL2N* L A0,(1,1) L,H2 A1,0,B11 . LOC OF HEADLINK S A1,SRV SL2N1 L,H2 A1,1,A1 . RIGHT LINK TO A1 S A1,SRV,*A0 TNE,M A1,CRLC . LAST LINK J 1,B11 . SYMBOL IS NOT PRESENT SL2N2 L,S2 R1,2,A1 . SET TO SCAN THRU SYMBOL JGD R1,$+1 . GET LENGTH L A2,(1,0) L A3,(1,0) A,M A3,3,A1 . GET LOCATION OF FIRST WORD A,M A2,0,B6 . ADD IN START OF STRING SL2N6 L R2,0,*A3 L A4,0,*A2 TNE A4,R2 J SL2N4 . TEST FOR LENGTH OF STRING TG A4,R2 J SL2N1 . GO TRY ANOTHER VARIABLE SL2N7 SA,H1 A0,SRV,A0 . GET LEFT LINK L,H1 A1,1,A1 . GET LEFT LINK S,H2 A1,SRV,*A0 . INSERT IN TABLE TE,M A1,CRLC J SL2N2 J 1,B11 . NO MORE ENTRIES NOT IN TABLE SL2N4 L,M A4,0,A3 AN,M A4,3,A1 TG A4,A5 J $+2 J SL2N8 . NEW STRING EXHUSTED TNE A4,A5 J 2,B11 . ENTRY WAS FOUND JGD R1,SL2N6 J SL2N7 . NEW STRING IS LONGER SL2N8 JGD R1,SL2N6 J SL2N1 . SEARCH RIGHT LINK SLTIN* TG A0,(1,20) . TEST FOR OVERFLOWS IN PUSHDOWM +0 . ERROR OUT S A0,R1 . SAVE WHILE ACQUIRING SPACE L A0,A5 . LENGTH OF SYMBOL A,M A0,3 . CONTROL WORDS ASSOCIATED WITH SYMBOL L R3,B11 . SAVE EXIT ADDRESS LMJ B11,MPRQST SLJ SYMOF . SYMBOL TABLE FULL...CRASH SSC A0,18 L A1,A0 . LOWEST ADDRESS TO STORE SYMBOL SZ 1,A1 . CLEAR LINK WORD SZ 2,A1 . CLEAR FLAG WORD S,S2 A5,2,A1 . SAVE LENGTH OF ENTRY AN,M A5,1 L A2,(1,0) AU,M A2,3,A1 . SET INDEX INTO ENTRY A,M A2,0,B6 L A4,0,*A2 . MOVE ENTRY INTO SYMBOL TABLE S A4,0,*A3 JGD A5,$-2 L A0,MAUNQ A,M A0,1 S A0,MAUNQ S A1,R2 . SAVE SYMBOL TABLE INDEX L,M A3,3 LMJ B11,MACEBD L B11,R3 L A1,R2 S A2,0,A1 . BUILD NAME IN SYMBOL TABLE ENTRY L A0,MAUPFX S,S2 A0,0,A1 . SIMULATE S,T1 SSL A0,6 S,S1 A0,0,A1 L,S1 A0,3,A1 . FIRST LETTER OF STRING S,S1 A0,0,A1 . MOVE SO TYPING RULES WILL WORK LXI,M A1,-1 S A1,NOSTB L A0,R1 . RESTORE INDEX TO SAVE TABLE AN,M A0,1 S,H2 A1,SRV,A0 J SLTINX . THIS SECTION PROCESSES THE MACRO STATEMENT . IT'S SYNTAX IS MACRO SCAN N . WHERE N IS THE NUMBER OF LEFT DELIMITERS THE NEXT . BRACKET SCAN SHOULD ASSUME THAT IT HAS ALREADY SEEN MSCAN LMJ B11,SCEX . GET VALUE OF SCAN LEVEL J MSER9 . ERROR BAD EXPRESSION S,S1 A3,SCNBRK J *N1MC90 MJTEST LMJ B11,MSEQX S A1,MJPTST . NUMBER OF ALLOWED MACRO JUMPS J *N1MC90 MSDEL . REMOVE AN INITIAL MACRO FROM STORAGE LMJ B11,MSEQX TE A0,('TE ') SLJ NA3ER MSDELU* L,M B11,N1MC90-1 LXI,M B11,0100 . FLAG FOR CALL FROM MACRO S B11,SYMALT L A2,MLBHL . HEADLINKS FOR MACROS IN STORAGE MSDEL1 TNZ A2 J N1MC90 . NO SUCH MACRO TNE A1,1,A2 J NSALC3 . FOUND NOW RELEASE STORAGE L,H2 A2,0,A2 J MSDEL1 MIGNORE LMJ B11,MSEQX S A1,FXL . ALLOW ANY MACRO STATEMENTS J *N1MC90 . THIS STATEMENT SETS THE INDENTATION LEVEL WHEN MACROS . GENERATE STRUCTURES THRU TRANSFERS WITHOUT . USING EITHER LOGICAL IFS OR DO LOOPS . ITS SYNTAX IS MACRO STRUCTURE = LEVEL MSTRUC LMJ B11,MSEQX S,S3 A1,SCNBRK . SAVE INCREMENT TO INDENTATION LEVEL J *N1MC90 . THIS SECTION ALLOWS THE NON ARITHMETIC STATEMENTS . TO BE FORGOTTEN SO THEY CAN BE CODED AS MACROS. MREST LN,M A0,1 . REST FLAG J $+2 . MERGE MDROP L,M A0,1 . DROP FLAG S A0,MDRFG . SAVE MDRLOOP L A0,MDRFG . RESTORE FLAG LMJ B11,NARM . GET TYPE LN,M A2,0 . ALL 1'S L A3,MDRFG . RESTORE FLAG TN A3 . FILL WITH SIGN SZ A2 . POSITIVE TE,M A0,0 . DO NOT DROP ILLEGAL STATEMENTS TNE,M A0,59 . MANY STATS HAVE SAME # AS CONTINUE J MDRNEXT . SKIP UPDATE LDSC A2,0,A0 . SHIFT JN A2,$+4 . RESTORE OR A3,STDMSK+1 OR A2,STDMSK J $+3 . CONTINUE AND A3,STDMSK+1 . AND A2,STDMSK . DS A3,STDMSK . SAVE VALUES MDRNEXT LMJ B11,GX . MORE? J *N1MC90 TE,M A0,',' J $-3 J MDRLOOP . LOOP . THIS SECTION PROCESSES A MACRO WRITE FOR A UNIT THAT IS A FORTRAN PRMACWRI . ON ENTRY A1 IS POINTING AT CORRECT ARGUEMENT TABLE MACWRI WRELMT . MACWRI L A2,ARGL,A1 LENGTH IN CHAR L A0,ARGB3,A1 START + INCREMENT DSL A2,36 MACWRI A,M A3,5 ROUND WORD COUNT UP DI,M A2,6 MACWRI L A4,(0150000,0) MACWRI S A4,MACBF1-1 SET F60 ID FOR ELEMENT WRITER MACWRI L A4,FILUN SET MACRO UNIT MACWRI S,S3 A4,MACBF1-1 MACWRI L A11,A2 MACWRI L,M A10,12 12 WORDS FOR FIRST IMAGE WREA TG A2,A10 L A2,A10 AN A11,A2 MACWRI S A0,A9 SAVE START B3. A A0,A2 SQUEEZE TRAILING BLANKS FROM IMAGE MACWRI AN,M A0,1 MACWRI L A5,(' ') MACWRI TE A5,0,A0 MACWRI J $+4 MACWRI AN,M A0,1 MACWRI AN,M A2,1 MACWRI J $-4 MACWRI SZ F60ID MACWRI TE,M A10,11 J WREB WORKING ON FIRST IMAGE. JZ A2,*N1MC90 AU,M A2,1 LEAVE SPACE FOR COLUMNS 1 TO 6 MACWRI S,S2 A3,F60ID SET CONTROL WORD MACWRI S,H2 A3,MACBF1-1 L A5,(' $') CONTINUATION CHARACT(ER S A5,MACBF1 SET COLUMNS 1 TO 6 MACWRI L A3,(1,MACBF1+1) START OF BUFF FOR CONTINUATIONS WREA1 L A0,A9 INITIAL B3 A A9,A2 ADVANCE B3. LR R1,A2 LENGTH OF IMAGE MACWRI BT A3,0,*A0 L A0,(1,MACBF1-1) MACWRI DS A2,WRA2 . SAVE REGISTERS THRU CALL L,M A1,15 . LENGTH OF IMAGE L,M A2,0 . NO TERMINATING CONTROL IMAGES L,M A3,0 . FORCE TO FIELDATA LMJ B11,W60F . INSERT IMAGE IN F60 DL A2,WRA2 . RESTORE REGISTERS JZ A11,*N1MC90 DONE L A2,A11 L A0,A9 RESTORE NEXT B3. J WREA DO NEXT IMAGE WREB S,S2 A2,F60ID HERE FOR FIRST IMAGE ONLY. S,H2 A2,MACBF1-1 L,M A10,11 11 WORDS FOR CONTINUATIONS L A3,(1,MACBF1) FIRST IMAGE STARTS IN COL 1 J WREA1 . MWERA LMJ B11,PERR OUT OF RANGE MACWRI FORM6 1,191,0 MACWRI J N1MC90 MACWRI MWERB LMJ B11,PERR NOT DEFINED MACWRI FORM6 1,184,0 MACWRI J N1MC90 MWERI LMJ B11,PERR RECORDS TOO LONG MACWRI FORM6 1,189,0 MACWRI J N1MC90 MACWRI . M S WRFRHS. MACRO WRITE FROM RIGHT-HAND SIDE ... . ONLY A SINGLE IMAGE OF AN ELEMENT MAY BE WRITTEN. . FILES ARE NOT YET SUPPORTED. . L A3,FILUN L,S1 A4,MACWRI,A3 TNE,M A4,2 J MWERI RHS ON FILE IS BAD. S R15,MWRFLG SET FLAG FOR BUFFER CODE. . S B8,A12 S B9,A13 L,M A10,0 WORD INDEX L B8,(1,0) CHAR INDEX L,M A6,14 MAX WIRD COUNT L B9,(1,MACBF1) PSEUDO-BUFFER BASE. J MSBF40 GO PROCESS RHS. . WRFRH2 TNZ,M 0,B8 IF NOTHING STORED IN AN,M A10,1 LAST WORD, IGNORE. TP A10 J WRFRH3 NULL RHS. L,M A0,MACBF1 A A0,A10 LOC OF LAST WORD. A,M A10,1 L A5,(' ') SQUEEZE OFF BLANKS. TE A5,0,A0 J $+4 AN,M A0,1 AN,M A10,1 J $-4 TP A10 WRFRH3 L,M A10,0 SZ F60ID S,S2 A10,F60ID SET WORD COUNT. L A0,(0150000,0) S A0,MACBF1-1 L A0,FILUN S,S3 A0,MACBF1-1 L A0,(1,MACBF1-1) 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 . PLACE IMAGE IN F60 L B8,A12 L B9,A13 J *N1MC90 . MSNAM. MACRO NAME STATEMENT M S . M S LMJ B11,GX J MAC99 TNE,M A0,'(' J N1MACD SZ FNXT USE CHARACTER AGAIN LMJ B11,GIT J MAC99 TE,M A2,4 TEST FOR INTEGER IDENTIFER NUMEER J MAC99P L A0,GITV N1MACE TG,M A0,MCLCLG OCT J MAC98 IDENTIFER OUT OF RANGE L A5,GXX TE,M A5,'=' J MAC99 S A0,MCNLDI S R8,R6 THROW EQUAL AWAY LMJ B11,GIT GET UNIQUE NAME J MAC99 TNE,M A2,15 TEST FOR '(' PARDIM J N1MACP PARDIM TE,M A2,16 TEST FOR QUOTE J N1MACA L,M A3,HOLOUT LMJ B11,QUOTE J MAC99 L,M A15,2000 AN A15,A4 TG,M A15,7 J MAC99 L A0,HOLOUT J $+2 N1MACA L A0,GITV L A1,MCNLDI L A2,MACNO TG A1,MCLCPT,A2 SAVE HIGHEST LOCAL LABEL NUMBER S A1,MCLCPT,A2 A A1,MCLCPT-1,A2 ADD START OF THIS MACRO TG,M A1,MCLCLG OCT J MAC97 LOCAL LENGTH EXCEEDED S A0,MCLCNM,A1 J *N1MC90 N1MACD LMJ B11,SCEX J MAC99 L A0,PARFLG SZ PARFLG TE,M A0,')' J MAC99 S A3,GITV L A0,A3 J N1MACE MAC99P TE,M A2,3 J MAC99 WAS NOT VARIABLE EITHER LMJ B11,GLG1 J MAC99 NO IN L,S3 A0,2,A1 TE,M A0,014 TEST FOR PARAMETER J MAC99 L A0,3,A1 S A0,GITV J N1MACE N1MACP LMJ B11,SCEX EVALUATE CHARACTER EXPRESSION PARDIM J MAC99 PARDIM L A0,PARFLG PARDIM SZ PARFLG PARDIM TE,M A0,')' PARDIM J MAC99 PARDIM S A3,GITV PARDIM J N1MACA PARDIM . M S MSDEF . 'MACRO DEFINE = EXP' . LMJ B11,MSEQX TE A0,('NE ') SLJ NA3ER L A10,A1 SAVE NAME OF MACRO . L,M A0,10 LMJ B11,MPRQST J MSDMEM NO SPACE, FATAL SSL A0,18 LOC OF NEW CTL BLOCK L A1,MLBHL LINK INTO QUEUE LXI,M A1,0101 IN FRONT OF ALL ELSE S A1,0,A0 SET RESP CNT NONZERO SO S,H2 A0,MLBHL WE NEVER RELEASE S A10,1,A0 SZ 2,A0 L A1,('MACDEF') MARK SPECIAL S A1,3,A0 L,M A9,2,A0 LOC OF FIRST LAST LINE J MSDEF5 . MSDEF5 S R15,DELFLG MARK DELETE LN,M A0,1 S,H1 A0,DELAB NEG IS FLAG FOR GS DELETE CODE S,H2 A9,DELAB J *N1MC90 . MSDMEM LMJ B11,PERR FORM6 012,93,('MACTXT') J MSABO1 MSLAB. 'MACRO LABELS = EXP' M S . M S LMJ B11,MSEQX SCAN REMAINDER OF STMT. M S TE A0,('LS ') M S SLJ NA3ER MISSPELLED. M S TG,M A1,1 M S TG A1,(100000) M S J MSER1 NOT WITHIN RANGE. M S AN,M A1,1 M S S A1,MCLBZ SET NEXT RENAME -1. M S J *N1MC90 DONE. M S . M S MSMAXL. 'MACRO MAXLABEL = EXP' . LMJ B11,MSEQX TE A0,('ABEL ') SLJ NA3ER A,M A1,1 S A1,MLBLIM SET NEW RENAME CRITERION J *N1MC90 . MSUNQ. 'MACRO UNIQUE = EXP' M S . M S LMJ B11,MSEQX M S TE A0,('UE ') M S SLJ NA3ER M S SSL A1,24 USE HIGH-ORDER 2 CHAR M S S A1,MAUPFX SET NEW UNIQUE PREFIX. M S J *N1MC90 M S MOPTN LMJ B11,NGX +2 TE A2,('ON ') J MSUNR SLJ MINSPX . GO SCAN AND INSERT A PARAMETER L A4,SPARTBL . ORIGINAL OPTION LETTERS AND A4,(0377,0777777) L,H1 A4,COMMAC . TEST FOR START EDIT GENERATED SSL A4,6 TZ A4 . SIMULATE TZ,T1 COMMAC A A5,(0400,0) TZ,H1 CRSD1 . TEST FOR START EDIT GENERATE A A5,(01000,0) S A5,3,A1 . PLACE OPTION LETTER IN PARAMETER J *N1MC90 MTINST SLJ MINSPX L A0,SICNT . INSTRUCTION COUNT FROM SNOOPY S A0,3,A1 J N1MC90 . OCT MSRD. 'MACRO READ' - SKIP AND LIST NEXT SOURCE LINE. OCT . OCT L,M A2,250 S A2,MCENT LMJ B11,GX OCT J $+2 OCT SLJ MSER7 ENDS BADLY. OCT L A0,INCTYP SSL A0,*INCLVL TOP,M A0,1 J MSER2 ZERO-LEVEL INCLUDE ACTIVE. BAD. OCT TZ INCEOF OCT J MSER4 ATTEMPT TO READ PAST EOF. OCT L A8,ZLNL-1 OCT L A0,B1 OCT LXI,M A0,1 OCT S A0,ZLNL-1 F60 ID. OCT L A0,(1,ZLNL-1) OCT L A5,ZLNL . MOVE COLUMNS 1 TO 5 S A5,F60ID MSRDJ L,M A1,15 . LENGTH L A2,(3,F60ID) . SPECIAL INFO FOR END OF RECORD L,M A3,0 . FORCE TO FIELDATA LMJ B11,W60FS S A8,ZLNL-1 RESTORE PRECEDING WORD. OCT L A0,(14,ZLNL) L,M B10,SIRXX . SIR DATA AREA LXI,M B11,JPL$PIRCB$ . BLOCK CONTAINING SIR$ S A0,SIRLNG . SAVE LENGTH OF IMAGE TO BE LIJ B11,BGETSR$ LMJ B11,CCE CONTROL CQRD ERROR OCT S R15,INCEOF END OF FILE. OCT S,H2 A0,FDASC . SET WHETHER IS FD OR ASC S A1,SIRCNT S A1,ZLNL-1 . PLACE CONTROL WORD IN F60 DS A2,F60ID . SAVE SIR$ EDITING INFORMATION S A4,F60ID+2 SSA A1,30 L A0,(1,ZLNL-1) . SET FOR CALL ON W60FS TZ A1 . TEST END OF FILE JN A1,MSRDJ . PLACE CONTROL IN F60 AND GET NEW IMAGE SZ,S1 SIRCNT . REMOVE PROBLEM FROM 077 AT END S,H2 A3,ZLNL+13 J *N1MC90 DONE. OCT . OCT MSJMP. 'MACRO JUMP = EXP' OCT . OCT S R15,MSJMPF LMJ B11,MSEQX OCT TE A0,(' ') OCT SLJ NA3ER OCT S A1,A12 . SAVE NAME OF MACRO TO LOAD L A10,A12 TZ FEOS J MSJMP9 . NO DELETE L A0,PARFLG TE,M A0,',' SLJ MSER6 . BAD PUNCTUATION LMJ B11,SCEX J MSER9 SM A3,DELAB S R15,DELFLG L A0,PARFLG . TEST FOR IDENTIFY ON JUMP COMMAND TE,M A0,',' J MSJMP8 LMJ B11,SCEX . SCAN OFF IDENTIFY EXPRESSION J MSER9 S A3,A10 MSJMP8 TNZ FEOS SLJ MSER7 . BAD SYNTAX MSJMP9 L A0,MACNO OCT TNZ A10 . IF NO NAME GIVEN L A10,MACRNM-1,A0 . USE CURRENT LINE S A10,MACRNM-1,A0 L A2,MCENT AN,M A2,1 S A2,MCENT TP A2 J MSER16 LOOPING IN MACRO L A2,MJPTST . COUNT ALLOWED CALLS AN,M A2,1 JZ A2,MSER16 S A2,MJPTST L A2,(' ') S A2,NLINE+1 . BLANK OUT WAITING LABEL L A0,A12 LMJ B11,GETRW . TEST FOR SAME MACRO J $+2 . AND RESET TO LINE ONE IF SAME1I J MSJMQ7 LMJ B11,INCPOP EXEC 8 FORM. OCT L A0,A12 LMJ B11,OPNMAC OCT J MSJMP2 NOT THERE. OCT L A0,MACNO RESET LABEL RENAME TABLE INDEX. OCT L A0,MCLBLT-1,A0 OCT S A0,MCLBLX OCT MSJMP7 TNZ GENNO . TEST IF GENERATE SHOULD BE CLOSED J *N1MC90 DONE. OCT L A0,GENNO L A1,MACNO TE A1,G49,A0 J *N1MC90 SLJ GEG2Z . CLOSE ACTIVE GENERATES J *N1MC90 MSJMQ7 L A0,(' ') S A0,NLABL SZ FCPEND L,M A0,(' ') L A2,(1,NLINE+1) L,M R1,11 BT A2,0,*A0 . BLANK OUT WAITING IMAGE J MSJMP7 MSJMP2 LMJ B11,PERR OCT FORM6 012,165,GITV CAN'T OPEN ZE MACRO. OCT J MSABO1 ABORT HERE. OCT . M S MSID. 'MACRO IDENTIFY = EXP' M S . M S LMJ B11,MSEQX M S TE A0,('TIFY ') M S SLJ NA3ER M S L A0,MACNO M S S A1,MACRNM-1,A0 CHANGE MACRO NAME. M S J *N1MC90 M S . M S MSABO. 'MACRO ABORT' M S . M S LMJ B11,MSRNM SCAN REMAINDER OF NAME M S TE A0,('T ') M S SLJ NA3ER M S TNZ FEOS M S SLJ MSER7 M S MSABO1. OCT L,M A0,1 FLAG NORMAL M S S A0,FEND END OF PROGRAM AND PRAY. M S J *N1MC90 M S . M S MSNXT. MACRO NEXT = EXP M S . M S LMJ B11,MSEQX M S TE A0,(' ') M S SLJ NA3ER M S TG,M A1,1 M S TG,M A1,26 M S J MSER3 ARG NO. OUT OF RANGE M S L A0,MACNO M S AN A0,MCLVOU TP A0 SLJ BUG A A1,ARGSRT-1,A0 ARG TABLE INDEX. M S L A0,(0,-1,80) TZ INCEOF ZERO LENGTH IF OCT L A0,(-1,0) . SET SEPARATOR AND LENGTH S A0,ARGTW3,A1 SET LENGTH,SEPARATOR,R5. M S S A0,ARGB7,A1 R5 FOR SUBSCAN. M S L A0,(1,ZLNL) S A0,ARGB3,A1 SET WORD INDEX M S S A0,ARGB6,A1 FOR 0-LEVEL NLINE SAVE. M S L A0,GXSMB2 S A0,ARGB2,A1 FIRST CHARACTER. M S S A0,ARGB5,A1 M S SZ MBFMAX,A1 SHOW NOT BUFFER. M S J *N1MC90 M S . M S MSBUF. 'MACRO BUFFER (I:C,N [,LENGTH] ) = STRING [+STRING]...M S . M S LMJ B11,MSRNM M S TE A0,('ER ') M S SLJ NA3ER M S L A0,GXX M S TE,M A0,'(' M S SLJ MSER6 BAD PUNCTUATION M S L FNXT,R8 SKIP SEPARATOR M S LMJ B11,GIT M S J MSER5 EOS M S L A6,GITV M S TE,M A2,3 M S J $+5 L A6,GITV M S TE A6,('I ') M S TNE A6,('C ') M S J $+3 M S SLJ MSER8 NOT I OR C M S L A6,('C ') ASSUME C M S AN A6,('C ') I = NONZERO, C = 0 M S L FNXT,R8 SKIP SEPARATOR M S L A0,GXX M S TE,M A0,',' M S SLJ MSER6 BAD PUNCT M S L,M A9,0 . FLAG FOR MACRO BUFFER MSUBFL . ENTRY FOR MACRO LONG LMJ B11,SCEX M S J MSER9 BUM EXPRESSION M S TG,M A3,1 M S TG,M A3,26 M S J MSER3 INVLAID ARG NO. M S L A8,A3 SAVE ARG NO M S SZ A7 ZERO OFFSET. BUFOFS L,S6 A0,PARFLG BUFOFS TNE,M A0,')' BUFOFS J MSBF05 NO OFFSET FIELD. BUFOFS TE,M A0,',' BUFOFS SLJ MSER6 BAD PUNCT. BUFOFS LMJ B11,SCEX BUFOFS J MSER9 BAD OFFSET EXPR. BUFOFS TP A3 CANNOT OFFSET TO AN J MSER14 INNER MACRO TNZ A3 J $+3 TZ A6 SLJ MSER17 . AN ATTEMP IS BEING MADE TO INITIALIZE . A BUFFER AT AN OUTER MACRO LEVEL L A7,A3 SET OFFSET. BUFOFS MSBF05. BUFOFS L A0,MACNO M S AN A0,A7 OFFSET BUFOFS TLE,M A0,1 IF TOO FAR OUT, BUFOFS L,M A0,1 PILE UP AT FIRST MACRO LEVEL. BUFOFS L A7,A8 COMPUTE BUFOFS A A7,ARGSRT-1,A0 ARG TBL INDEX BUFOFS JNZ A9,MLONGC . RETURN TO MACRO LONG L,S6 A0,PARFLG SEPARATOR M S TNE,M A0,')' M S J MSBF10 NO LENGTH. M S TE,M A0,',' M S SLJ MSER6 BUM PUNCT M S LMJ B11,SCEX GET LENGTH IN CHARACTERS M S J MSER9 YETCH M S . M S . LENGTH SPECIFIED. SEE IF APPROPRIATE AND SET. M S . M S TG,M A3,1 M S TG,M A3,04000 M S J MSER10 OUT OF RANGE M S L,M A2,0 M S A,M A3,5 M S DI,M A2,6 WORD COUNT IN A2. M S JNZ A6,$+3 IF 'C'-TYPE, M S SLJ MSER11 EDIT DIAGNOSTIC, M S J MSBF10 BYPASS ALL INITIALIZATION. M S L A1,A7 INDEX ARG TBLS M S TG A2,MBFMAX,A1 M S TNE A2,MBFMAX,A1 IF LENGTH UNCHANGED OR SHORTER, M S J MSBF10 DON'T REALLOCATE OR CHANGE LNG. M S L A9,A2 SAVE LENGTH TZ MBFMAX,A1 SLJ MSER12 REDEFINING LENGTH L A0,A9 A,M A0,1 LMJ A3,SYMAAF J $+3 LDSL A0,36 J $+4 LMJ B11,MPRQST J MSER13 UNAVAILABLE --- SSL A0,18 L A1,MACNO L,H1 A2,MBFTBL,A1 LINK PREVIOUS BUFFER S,H2 A0,0,A2 TO NEW ONE. SZ 0,A0 SET LENGTH OF NEW BUF S,H1 A9,0,A0 S,H1 A0,MBFTBL,A1 NEW LAST BUFFER. L A1,A7 INDEX ARG TABLES A A0,(1,1) SKIP CONTROL WORD. S A0,ARGB3,A1 SET NEW BUFFER ORIGIN S A9,MBFMAX,A1 BUFFER WORD LIMIT. L A0,GXSMB2 S A0,ARGB2,A1 L A0,(-1,0 . SEPARATOR AND LENGTH S A0,ARGTW3,A1 LET LENGTH AND SEPARATOR M S . M S . REINITIALIZE BUFFER FILL IF I-FORM. M S . M S MSBF10 L A1,A7 INDEX ARG TABLES M S TNZ MBFMAX,A1 ABORT IF M S J MSER14 ARG NOT A BUFFER M S TNZ A6 M S J MSBF20 NOT I-FORM M S L A0,ARGB2,A1 INITIALIZE SUBSCAN M S S A0,ARGB5,A1 JUST TO BE HELPFUL. M S L A0,ARGB3,A1 M S S A0,ARGB6,A1 M S L A0,ARGB4,A1 M S S A0,ARGB7,A1 M S SZ ARGL,A1 . M S . SCAN REMAINDER THROUGH = AND SET FOR BUFFER FILLING. M S . M S MSBF20 L,S6 A0,PARFLG EXPRESSION TERMINATOR M S TNE,M A0,')' M S J MSBF22 NORMAL M S SLJ MSER6 BAD PUNCT M S L,S6 A0,PARFLG TRY =. M S J $+3 M S MSBF21 SLJ MSER6 BAD PUNCTUATION M S L A0,GXX M S TNE,M A0,'=' M S J MSBF30 FOUND THE =. M S LMJ B11,GX M S J MSER5 NO = BEFORE EOS M S J $-4 SEE IF =. M S MSBF22 LMJ B11,GX M S J MSER5 M S TE,M A0,'=' M S J MSBF21 NEXT CHAR NOT =. M S . M S MSBF30 L A1,A7 . ARG TBL INDEX S B8,A12 M S S B9,A13 M S L A10,ARGL,A1 M S DSL A10,36 M S L,M A6,6 . FIELDATA CHARACTERS PER WORD TZ FDASQT L,M A6,4 . ASCII CHARACTERS PER WORD DI A10,A6 . A10 IS WORD INDEX (0-REL) L B8,A11 M S LXI,M B8,1 B8 IS UP-GOING CHAR INDEX (0-5) M S L A6,MBFMAX,A1 A6 IS MAX WORD COUNT (1-REL) M S L B9,ARGB3,A1 B9 IS ABS BUFFER POINTER. M S A B9,A10 M S SZ MWRFLG INDICATE NOT WRITE9 TZ FDASQT J AMSBF40A . GO PROCESS IN ASCII . M S . THIS SECTION DOES THE STRING SCAN. M S . M S GXRTRN ' ' MSBF40 GXRTRN '^' L,M A14,'+' MSBF41 LMJ B11,GX M S J MSBFND TNE,M A0,' ' J MSBF41 TE,M A0,'-' TNE,M A0,'*' J MSBF42 TE,M A0,'/' TNE,M A0,'+' J MSBF42 TNE,M A0,'^' M S J MSBF50 STARTING A SUBSTITUTION M S TNE,M A0,072 M S J MSBF60 STARTING A QUOTE STRING M S EX MSBFST,*B8 STORE NON-QUOTED LITERAL CHAR. M S J MSBF41 MSBF42 S A0,A14 SAVE CONCATENATION OPERATOR CATOPR J MSBF41 CATOPR . M S . ENCOUNTERED A DELTA SUBSTITUTION. M S . M S MSBF50 GXABSB '^' GXRTRN ';','@' L A0,GXDEL TE A0,GXABDL J MSER15 SZ FNXT L A11,MCQNT L,M A15,99 . IMPOSIBLE CHAR TE,M A14,'+' L,M A15,' ' . CHAR TO SKIP MSBF51 L,M A8,2000 . MAX COUNT MSBF52 LMJ B11,GX . GET CHAR J MSBFND EOS OK. M S TNE A0,A15 JGD A8,MSBF52 . IGNORE & COUNT BLANKS TE,M A8,2000 . SKIP ANY BLANKS? TE,M A14,'/' . YES/DELETE TRAILING BLANKS? J MSBF53 . NOPE/ CONTINUE LN A8,A8 . YES/ PUT 'EM BACK A,M A8,1999 . ALL A8 OF 'EM L A14,A0 . SAVE NEXT CHARACTER L,M A0,' ' . BLANK FILL TG A11,MCQNT . WILL IT FIT? J MSBF67 . OOPS/ NO IT WON'T EX MSBFST,*B8 . YES IT WILL JGD A8,$-3 . PUT 'EM ALL BACK L A0,A14 . RESTORE NON BLANK CHAR L,M A14,'/' . RESTORE CONECTIVE MSBF53 TNE,M A14,'*' . L,M A15,99 . STOP SKIP TG A11,MCQNT . WILL IT FIT? J MSBF67 . OOPS/ NO IT WON'T EX MSBFST,*B8 STORE SUBSTITUTED CHAR. M S J MSBF51 M S . M S . ENCOUNTERED A QUOTE STRING. DO IT IBM-STYLE. M S . M S MSBF60 TNE,M A14,'-' J MSBF61 GXABSB '^' . DONT EXPAND DELTA'S GXRTRN ';','@' MSBF61 LMJ B11,GX M S J MSER15 EOS (NONFATAL) M S TNE,M A0,072 M S J MSBF65 QUOTE. M S MSBF62 EX MSBFST,*B8 STORE CHARACTER. M S J MSBF61 GET NEXT. M S MSBF65 LMJ B11,GX QUOTE. M S J MSBFND EOS AFTER TERM QUOTE OK. M S TNE,M A0,072 M S J MSBF62 TWO QUOTES = ONE. M S MSBF67 TE,M A0,' ' UNLESS CHAR WAS BLANK, M S SZ FNXT RESCNA NEXT CHAR M S GXABSB ';','@' J MSBF40 END OF QUOTE STRING. M S . M S MSBFST LMJ B11,MSBFCH EX TABLE FOR BUFFER STORES. M S S,S2 A0,0,B9 M S S,S3 A0,0,B9 M S S,S4 A0,0,B9 M S S,S5 A0,0,B9 M S LMJ B11,$+1 M S S,S6 A0,0,*B9 M S A,M A10,1 M S LXM,M B8,0 M S J 0,B11 M S . M S MSBFCH TG A10,A6 M S J $+5 TOO LONG. M S L R1,(' ') BLANK ENTIRE WORD FOR M S S R1,0,B9 FOR MACRO WRITE TO PRINTER. M S S,S1 A0,0,B9 M S J 0,B11 M S LXM,M B8,0 RESET CHAR INDEX LMJ B11,PERR M S FORM6 01,144,0 EXCEEDED BUFFER LENGTH9 M S . M S MSBFND TZ MWRFLG J WRFRH2 WAS MACRO WRITE MSI,M A10,6 XOMPUTE CHAR POS'N A,M A10,0,B8 TO SAVE. M S L A1,A7 M S S A10,ARGL,A1 M S S A10,ARGB7,A1 L B8,A12 M S L B9,A13 M S J *N1MC90 END MAC BUFFER PROCESSING. M S AMSBF40A GXRTRN 05 . RETURN BLANKS AMSBF40 GXRTRN 0136 . RETURN DELTA CHARACTER ASCII L,M A14,'+' AMSBF41 LMJ B11,GX J MSBFND TNE,M A0,' ' J AMSBF41 TE,M A0,'-' TNE,M A0,'*' J AMSBF42 TE,M A0,'/' TNE,M A0,'+' J AMSBF42 TNE,M A0,' ' J AMSBF50 . STARTING A SUBSTITUTION TNE,M A0,047 . ASCII QUOTE J AMSBF60 . STARTING A QUOTE STRING EX AMSBFST,*B8 . STORE NON-QUOTED LITTERAL CHARACTER J AMSBF41 AMSBF42 S A0,A14 . SAVE CONCATENATION OPERATOR J AMSBF41 . . ENCOUNTERED A DELTA SUBSTITUTION . AMSBF50 GXABSB 05 . ABSORB BLANKS FIELDATA GXRTRN 073, 0 . RETURN SEMICOLON/MASTERSPACE L A0,GXDEL TE A0,GXABDL J MSER15 SZ FNXT L A11,MCQNT L,M A15,0777 . IMPOSSIBLE CHAR TE,M A14,'+' L,M A15,' ' . CHARACTER TO SKIP AMSBF51 L,M A8,2000 . MAX COUNT AMSBF52 LMJ B11,GX . GET CHAR J AMSBFND . EOS OK TNE A0,A15 JGD A8,AMSBF52 . IGNORE AND COUNT BLANKS TE,M A8,2000 . SKIP ANY BLANKS TE,M A14,'/' J AMSBF53 . NOPE CONTINUE LN A8,A8 . YES PUT EM BACK A,M A8,1999 . ALL A8 OF EM L A14,A0 . SAVE NEXT CHARACTER L,M A0,' ' . BLANK FILL TG A11,MCQNT . WILL IT FIT J AMSBF67 . OPPS/ NO IT WONT EX AMSBFST,*B8 . YES IT WILL JGD A8,$-3 . PUT EM ALL BACK L A0,A14 . RESTORE NOW BLANK CHAR L,M A14,'/' . RESTORE CONNECTOR AMSBF53 TNE,M A14,'*' L,M A15,0777 . STOP SKIP TG A11,MCQNT . WILL IT FIT J AMSBF67 . OOPS NO IT WONT EX AMSBFST,*B8 . STORE SUBSTITUTED CHAR J AMSBF51 ASCII . ENCOUNTERED A QUOTE STRING...DO IT IBM STYLE AMSBF60 TNE,M A14,'-' J AMSBF61 GXABSB 04 . DONT EXPAND DELTAS GXRTRN 073,0 . RETURN SEMICOLON AND MASTER SPACE AMSBF61 LMJ B11,GX J MSER15 . EOS...NON FATAL TNE,M A0,047 . ASCII QUOTE J AMSBF65 . QUOTE AMSBF62 EX AMSBFST,*B8 . STORE CHARACTER J AMSBF61 . GET NEXT AMSBF65 LMJ B11,GX . QUOTE J AMSBFND . EOS AFTER TERM QUOTE OK TNE,M A0,047 J AMSBF62 . TWO QUOTES = ONE AMSBF67 TE,M A0,040 . UNLESS CHAR WAS BLANK SZ FNXT L,H1 A0,ASCFDASC$,A0 . CONVERT TO FIELDATA S A0,GXX . SET FOR RETURN TO FIELDATA GXABSB 073,0 . SEMICOLON/MASTERSPACE J AMSBF40 AMSBFST LMJ B11,AMSBFCH . EX TABLE FOR BUFFER STORES S,Q2 A0,0,B9 S,Q3 A0,0,B9 LMJ B11,$+1 S,Q4 A0,0,*B9 A,M A10,1 LXM,M B8,0 J 0,B11 AMSBFCH TG A10,A6 J $+5 . TOO LONG L R1,(' ') . BLANK ENTIRE WORD S R1,0,B9 . FOR MACRO WRITE TO PRINTER S,S1 A0,0,B9 J 0,B11 LXM,M B8,0 . RESET CHAR INDEX LMJ B11,PERR FORM6 01,144,0 . EXCEEDED BUFFEER LENGTH J MSBFND AMSBFND TZ MWRFLG . TEST FOR MACRO WRITE J WRFRH2 . IT WAS A MACRO WRITE MSI,M A10,4 . COMPUTE CHARACTER POSITION A,M A10,0,B8 L A1,A7 S A10,ARGL,A1 S A10,ARGB7,A1 L B8,A12 L B9,A13 J *N1MC90 . END OF MACRO BUFFER PROCESSING FIELDATA . M S MSRNM. SCAN REMAINDER OF NAEM, RETURN IN A0 M S . M S S,H2 B11,MSRNX M S L,M A8,0 M S MSRN1 LMJ B11,GX M S J MSRN2+1 EOS, TERMINATE. M S TG,M A0,'A' M S TG,M A0,'Z'+1 M S J MSRN2 NONALPHA TERM M S LSSL A8,6 M S A A8,A0 M S J MSRN1 M S MSRN2 SZ FNXT RESCAN SEPARATOR M S L,M A7,0 M S MSRN3 LDSC A7,6 M S TNZ A7 M S J MSRNY DSC A7,6 M S L A0,A8 J *MSRNX MSRNY . A,M A8,' ' M S J MSRN3 M S . M S MSEQX. SCAN REMAINDER OF NAME, RETURN IT IN A0; FIND = AND M S . EXPRESSION, RETURN VALUE IN A1, IF ANY. M S . M S S,H2 B11,MSEQQ M S LMJ B11,MSRNM . A8 NOW HAS NAME M S LMJ B11,GX M S J MSER9 EOS IS BAD. M S TE,M A0,'=' M S SLJ MSER6 BAD PUNCTUATION M S LMJ B11,SCEX M S J MSER9 M S L A12,A3 M S TZ MSJMPF . EOS NOT REQUIRED J $+3 TNZ FEOS M S SLJ MSER7 M S L A1,A12 M S L A0,A8 J *MSEQQ MINSPR . SCAN AND INSERT A PARAMETER LMJ B11,GIT . GET PARAMETER NAME J MSER5 . EARLY E.O.S. TE,M A2,3 J GEN97 . NOT A VARIABLE LMJ B11,GLG J $+4 L,M A4,014 TE,S3 A4,2,A1 . TEST IF ENTERED AS PARAMETER J MSER9 . NOT A PARAMETER L,M A4,014 . ID FOR PARAMETER S,S3 A4,2,A1 . MARK AS PARAMETER J MINSPX . M S MSER1 S A1,MSARG M S LMJ B11,PERR M S FORM6 021,39,MSARG INVALID STMT NO M S J *N1MC90 M S MSER2 LMJ B11,PERR M S FORM6 02,125,0 STMT BAD WHEN ZERO-LEVEL INCLUDE ACT BUFOFS J *N1MC90 M S MSER3 S A1,MSARG M S LMJ B11,PERR M S FORM6 021,124,MSARG INVALID ARG NO M S J *N1MC90 M S MSER4 LMJ B11,PERR M S FORM6 02,126,0 ATTEMPT TO READ PAST EOF IN SOURCE. BUFOFS J PH401 PREVENT INFINITE LOOP MSER5 LMJ B11,PERR M S FORM6 01,1,0 PREMATURE EOS. M S J *N1MC90 MSER6R S A0,MSARG LMJ B11,PERR M S FORM6 010,9,MSARG IMPROPER PUNCTUATION J *MSER6 MSER7R LMJ B11,PERR FORM6 0,4,0 BAD END OF STATEMENT M S J *MSER7 MSER8R S A6,MSARG LMJ B11,PERR M S FORM6 011,128,MSARG GARB WHERE I/C EXPECTED. M S J *MSER8 M S MSER9 LMJ B11,PERR M S FORM6 01,197,0 CONST EXP NOT FOUND WHERE EXPECTED. M S J *N1MC90 M S MSER10 S A3,MSARG M S LMJ B11,PERR M S FORM6 021,129,MSARG BAD LENGTH FIELD M S J *N1MC90 MSR11R LMJ B11,PERR FORM6 0,140,0 LENGTH FLD NONSENSE HERE. M S J *MSER11 MSR12R LMJ B11,PERR FORM6 0,141,0 REDEFINING BUF LNG. M S J *MSER12 M S MSER13 MSI,M A2,6 M S A A2,A3 M S AN,M A2,5 M S S A2,MSARG M S LMJ B11,PERR M S FORM6 022,142,MSARG OUT OF CORE M S J *N1MC90 M S MSER14 S A8,MSARG M S LMJ B11,PERR M S FORM6 021,143,MSARG ARG NOT A BUFFER M S J *N1MC90 M S MSER15 LMJ B11,PERR M S FORM6 0,72,0 EOS BEFORE HOLL FLD END M S J MSBFND MSER16 LMJ B11,PERR FORM6 02,225,0 ENDLESS LOOP IN MACRO J PH401 END IT ALL MSER17R LMJ B11,PERR FORM6 01,16,0 J *N1MC90 . M S MAC99 LMJ B11,PERR FORM6 1,246,0 BAD SYNTAX IN MACRO NAME J N1MC90 SKIP REST OF STATEMENT MAC98 LMJ B11,PERR FORM6 1,251,0 . IDENTIFIER OUT OF RANGE J N1MC90 MAC97 LMJ B11,PERR FORM6 1,252,0 . LOCAL LABEL TABLE EXCEEDED J N1MC90 SCN95 LMJ B11,PERR IMPROPER MACRO SCAN LEVEL FORM6 2,253,0 SLJ MACRGX RESTORE LEVEL BUFOFS J SC90 $(2) . WRA2 +0 . SAVES A2 THRU W60F CALL +0 . SAVES A3 THRU W60F CALL FEXIT J $-$ T MSJMPF +0 SC90X J $-$ T MINSPX J $-$ J MINSPR GXADV J $-$ T J GXADVR T GE90 J $-$ T MACRGX* J $-$ T J MACRGR T MACSGX* J $-$ T J MACSGR T MACLST* J $-$ T J MACLSR T MCSTJ J $-$ T J MCSTJR T AMCSTJ J $-$ J AMCSTJR MCLABL* J $-$ T J MCLBR T MACEBX J $-$ T N1MC90* J $-$ MSRNX J $-$ T MSARG +0 T MSEQQ J $-$ T MSER6 J $-$ T J MSER6R T MSER7 J $-$ T J MSER7R T MSER8 J $-$ T J MSER8R T MSER11 J $-$ T J MSR11R T MSER12 J $-$ T J MSR12R T MSER17 J $-$ J MSER17R MDRFG + 0 . MJPTST +1000000 GEG2Z* J $-$ J GEG2ZR END