. STATEMENT TYPE DETERMINATOR . $(1) PREQ STD* S,H2 B11,ST111 SET UP RETURN TNZ FSCLN J N1STDA S B11,FSCLNG GLOBAL SEMI-COLON FLAG GXRTRN ';' SZ FEOS SZ FSCLN LMJ B11,GX J EOST ILLEGAL END OF STATEMENT TNE,M A0,';' J N1STDA LMJ B11,PERR FORM6 012,48,GXX USE A SEPARATOR INSTEAD OF $ J PH301 EOST LMJ B11,PERR FORM6 1,4,0 FOLLOWING STMT IS INCOMPLETE J PH301 N1STDA GXABSB,ALL TZ MACNO J N1STDB L,H1 A0,COMMAC . SIMULATE TZ,T1 SSL A0,6 TZ,H1 CRSD1 TNZ,S6 MAFLST TZ A1 N1STDB SLJ MACSGX . SAVE FOR LISTING SZ FEOS SZ LIST L,M A0,0,B1 TLE,H2 A0,SEQNO L B1,SEQNO . FORCE ASCENDING SEQUENCE NUMBERS S,H2 B1,SEQNO SAVE FOR CROSS REFERENCE S,H2 B1,SEQL SZ LSSV DS A10,ST2 S B10,ST4 SZ A10 SET FOR NO PARENTHESES L,M A11,1 SET FLAG FOR NO 'D0' L,M R4,RGXTT SLJ RMGSV . SAVE START OF STATEMENT . . DOES STATEMENT BEGIN WITH 'DO' . SZ STFLF SECTRY L B4,(1,0) . INDEX TO SAVE FIRST SIX CHARACTERS L A0,(' ') S A0,MACTES LMJ B11,GX DOES STATEMENT BEGIN WITH 'DO' J ST5 EOS EX MACVEC,*B4 L,M B10,6 TE,M A0,'D' TEST FOR 'D' J ST6 NO L,M B10,5 YES LMJ B11,GX J ST5 EOS EX MACVEC,*B4 TE,M A0,'O' TEST FOR 'O' J ST6 NO SZ A11 YES, SO SET FLAG L,M B10,4 . . TEST IF STATEMENT BEGINS WITH MORE THAN 6 ALPHAMERICS . ST6 . TNZ STFLF TNZ,S6 SCNBRK J ST6B GXRTRN ' ' ST6B TZ A11 J ST6A ST10 LMJ B11,GX READ NEXT CHARACTER J ST5 EOS TP GXASCV . TEST FOR ASCII CHARACTERS L,H1 A0,ASCFDASC$,A0 . CONVERT TO FIELDATA EX MACVEC,*B4 ST6A L,S6 A1,FLD3,A0 TG,M A1,2 J ST99 JUMP IF NOT ALPHANUMERIC JGD B10,ST10 JUMP FOR FEWER THAN 7 ALPHAMERICS TZ,S6 SCNBRK . TEST FOR ALLOWING LONG NAMES J ST10 . CONTINUE LOOKING FOR NON ALPHANUMERIC . . NON-ARITHMETIC STATEMENT . ST5 L,M R4,RGXTT . RESET MARKER SLJ RMGRS LMJ B11,NAR GO TO NON-ARITHMETIC SCANNER J ST100 . . ARITHMETIC ENTRANCE . ST11 L,M R4,RGXTT . RESET MARKER SLJ RMGRS L,M A0,1 SET FOR ARITHMETIC STATEMENT ST100 S A0,ST SAVE STATEMENT TYPE DL A10,ST2 L B10,ST4 J *ST111 REENT . . TEST FOR COMMON OR DATA STATEMENT . ST99 GXABSB ' ' TNE,M A0,' ' . TEST FOR BLANK AS SEPARATOR J ST99B TNE,M A0,'/' J ST5 JUMP TO NON-ARITHMETIC SINCE IS . DATA OR COMMON STATEMENT L,M B10,0 INITIALIZE HOLLERITH INDEX J *ST21,A1 BRANCH ON X ST99B L A0,MACTES TNE A0,('PARAME') J ST5 . ASSUME A PARAMETER STATEMENT TE A0,('DEFINE') TNE A0,('MACRO ') J ST5 . ASSUME A MACRO STATEMENT L,M R4,RGXTT SLJ RMGRS . RESET TO BEGINNING OF STATEMENT SZ ST . CLEAR OUT CELL AS FLAG FOR VOISD STATE LMJ B11,NARLNM TNE,M A0,59 J ST100 . EXECUTE CONTINUE STATEMENT AND EXIT TZ ST . TEST IF ANYTHING MATCHED J ST100 S B11,STFLF FLAG FOR LONG NAME L,M R4,RGXTT . RESET TO BEGINNING OF STATEMENT SLJ RMGRS J SECTRY . TRY TO SCAN STATEMENT IGNORING BLANKS . . X IS ALPHABETIC . ST1111 JGD B10,ST12 JUMP IF MAY BE HOLLERITH . . READ PAST ALPHANUMERICS . ST16 L,M B10,0 INITIALIZE HOLLERITH INDEX ST13 LMJ B11,GX READ CHARACTER J ST15 EOS L,S6 A1,FLD3,A0 TG,M A1,2 J *ST21,A1 CHARACTER NOT ALPHANUMERIC J ST13 JUMP FOR MORE ALPHAMERICS . . END OF STATEMENT DECISION WHEN READING PAST '=' POSSIBLE . ST15R GXABSB ' ',';','@' ST15 TE,M A11,2 J ST5 JUMP TO NON-ARITHMETIC RETURN J ST11 JUMP TO ARITHMETIC RETURN . . X IS 'H' . ST12 TE,M A0,'H' . TEST FOR H OR R TNE,M A0,'R' J ST12A TE,M A0,'L' J ST16 ST12A . SZ A0 YES, SO SET CHARACTER COUNT TO 0 L A1,(1,0) J ST18 . . CONVERT NUMBER OF CHARACTERS TO OCTAL . ST17 MSI,M A0,10 ST18 AA A0,STNUM,*A1 JGD B10,ST17 JUMP IF CHARACTERS LEFT TO CONVERT LX B10,A0 J ST19 . . READ PAST HOLLERITH CHARACTERS . ST30 GXRTRN ' ',';','@' LMJ B11,GX REENT J ST15R ST19 JGD B10,ST30 JUMP IF MORE TO READ PAST GXABSB ' ',';','@' . . X IS 'OTHER' . ST9 L,M B10,0 INITIALIZE HOLLERITH INDEX TNE,M A11,2 J $+3 TNZ A10 PTHER BEFORE PARENTHEISI J ST5 IS NON ARITHMETIC ST31 LMJ B11,GX J ST15 EOS ST45 L,S6 A1,FLD3,A0 J *ST21,A1 BRANCH ON X . . X IS NUMERIC . ST32 TLEM,M B10,4 ARE THERE TOO MANY DIGITS J $+2 NO J ST16 YES, SO READ OVER ALPHAMERICS AX,M B10,1 ANA,M A0,060 YES, SO CONVERT AND SAVE COUNT S A0,STNUM-1,B10 J ST31 . . X IS ( . ST34 AA,M A10,1 INCREASE PARENTHESES COUNTER J ST9 . . X IS ) . ST35 ANA,M A10,1 JP A10,ST38 JUMP IF PAREN COUNT OK SZ A10 ST38 L,M B10,0 INITIALIZE HOLLERITH INDEX LMJ B11,GX J ST15 EOS L,S6 A1,FLD3,A0 TG,M A1,2 IS THIS 'IF' STATEMENT J *ST21,A1 NO J ST5 YES . . X IS COMMA . ST33 JZ A10,ST5 JUMP IF COMMA NOT IN PAREN . TO NON-ARITHMETIC EXIT J ST9 . . X IS = . ST36 JNZ A10,ST5 JUMP TO NON-ARITHMETIC EXIT . IF EQUAL SIGN ENCLOSED IN PAREN JNZ A11,ST11 JUMP TO ARITHMETIC IF . STATEMENT DID NOT BEGIN WITH 'DO' SZ B10 SET HOLERITH INDEX L,M A11,2 SET FLAG FOR FREE EQUAL SIGN J ST31 . . X IS ' . ST40 GXRTRN ' ',';','@' ST40J LMJ B11,GX . IS THERE ANOTHER QUOTE J ST15R TP GXASCV L,H1 A0,ASCFDASC$,A0 TE,M A0,072 J ST40J LMJ B11,GX YES, SO IS THIS PAIR OF QUOTES J ST15R TNE,M A0,072 J ST40J GXABSB ' ',';','@' . NO, SO THIS IS END OF HOLLERITH L,M B10,0 INITIALIZE HOLLERITH INDEX L,S6 A1,FLD3,A0 J *ST21,A1 BRANCH ON X $(2) . REENT ST2 +0 SAVE A10 ST3 +0 SAVE A11 ST4 +0 SAVE B10 $(1) . REENT ST21 J ST1111 X IS ALPHABETIC J ST32 NUMERIC J ST33 COMMA J ST34 LEFT PAREN J ST35 RIGHT PAREN J ST36 EQUAL SIGN J ST9 . OTHER J ST40 . QUOTE MACVEC . S,S1 A0,MACTES S,S2 A0,MACTES S,S3 A0,MACTES S,S4 A0,MACTES S,S5 A0,MACTES S,S6 A0,MACTES LX,M B4,6 . ONLY SAVE SIX CHARACTERS $(2) . STNUM +0 SAVE HOLLERITH COUNT +0 +0 +0 ST111 J $-$ EENT MACTES +0 STFLF +0 . IF NON ZERO ON SECOND PASS END