. EQU'S FOR REGISTERS AND J-DESIGNATORS PREQ . HOLL PICKS UP N CHARACTERS AND STORES THEM LEFT JUSTIFIED 122500 . IN (N+5)/6 WORDS. 122600 . CALLING SEQUENCE--A3 FIRST STORE LOCATION, A4=N 122700 . 122800 . M LMJ B11,HOLL 122900 . M+1 END OF STATEMENT RETURN 123000 . M+2 NORMAL RETURN 123100 . 123200 $(1) HOLL* . SCAN A HOLLERITH STRING S B11,HOLLEX L A0,(EX HOLL90,A2) TZ FDASQT . TEST IF ASCII ALLOWED L A0,(EX AHOLL90,A2) S A0,HOLLEQ S,H1 A4,HCTYP . SAVE COUNT JGD A4,$+2 . DECREMENT J QUOT6+1 . COUNT IS ZERO GXRTRN ' ',';','@' LXI,M A3,1 L,H2 A0,HCTYP TE,M A0,'R' J HOLL1 . NOT AN 'R' STRING SZ 0,A3 . ZERO FILL L,H1 A1,HCTYP SZ A0 L,M A2,6 . HOLERITH CHARACTERS PER WORD TZ FDASQT . TEST ASCII STRINGS L,M A2,4 . ASCII CHARACTER PER WORD DI A0,A2 L,M A2,5 . JGD COUNT FOR FIELDATA TZ FDASQT . TEST ASCII STRINGS L,M A2,3 . JGD COUNT FOR ASCII JZ A1,HOLL2 L A2,A1 AN,M A2,1 J HOLL2 HOLL1 L,M A2,5 . JGD COUNT FOR FIELDATA TZ FDASQT . TEST ALLOWED ASCII STRINGS L,M A2,3 . JGD COUNT FOR ASCII HOLL2 LMJ B11,GX J QUOT4 . PREMATURE EOS EX HOLLEQ . CORRECT FOR ASCII OR FIELDATA JGD A2,HOLL3 . TEST END-OF-WORD LMJ A0,OUTHOL JGD A4,HOLL1 . TEST END-OF-STRING LMJ A0,UNMODE J QUOT6+1 HOLL3 JGD A4,HOLL2 . TEST END-OF-STRING L,H2 A1,HCTYP L,M A0,' ' TNE,M A1,'L' . ZERO FILL 'L' STRINGS L,M A0,0 EX HOLLEQ . CORRECT FOR ASCII OR FIELDATA JGD A2,$-1 LMJ A0,UNMODE J QUOT6 HOLL90 S,S6 A0,0,*A3 125200 S,S5 A0,0,A3 125300 S,S4 A0,0,A3 125400 S,S3 A0,0,A3 125500 S,S2 A0,0,A3 125600 S,S1 A0,0,A3 125700 AHOLL90 S,Q4 A0,0,*A3 S,Q3 A0,0,A3 S,Q2 A0,0,A3 S,Q1 A0,0,A3 . NOTE THAT GXB MUST RESTORE. QUOTE WILL . . QUOTE MOVES N CHARACTERS (NIN A4) TO WORDS . SPECIFIED IN A3, IE HOLL WITH GXB SET FOR QUOTES. . A LMJ B11,QUOTE . A+1 EOS . A+2 NORMAL RETURN . QUOTE* . SCAN A QUOTE STRING S B11,HOLLEX . SLJ TON$ L A0,(EX HOLL90,A2) . FOR FIELDATA TZ FDASQT . TEST ALLOWED ASCII STRINGS L A0,(EX AHOLL90,A2) . FOR ASCII S A0,HOLLEQ L,M A0,5 . FIELDATA CHARACTERS PER WORD TZ FDASQT L,M A0,3 . ASCII CHARACTERS PER WORD S,H2 A0,ASFDCT L,M A0,072 . FIELDATA QUOTE CHARACTER TZ FDASQT L,M A0,047 . ASCII QUOTE CHARACTER S,H1 A0,ASFDCT GXRTRN ' ',';','@' . SET CHAR MODES L,M A4,2000 LXI,M A3,1 QUOT1 L,M A2,5 . JGD COUNT FOR FIELDATA TZ FDASQT . TEST ALLOWED ASCII STRINGS L,M A2,3 . JGD COUNT FOR ASCII QUOT2 LMJ B11,GX J QUOT4 . PREMATURE EOS TNZ,H1 HMCQNT . ONLY CHECK AT GIVEN LEVEL? J QUOT25 . NO/ ALL LEVELS L,H2 A1,HMCQNT . YES/ GET LEVEL TE A1,MCQNT . RIGHT LEVEL? J QUOT3 . NO/ CONTINUE QUOT25 TNE,H1 A0,ASFDCT . TEST FOR QUOTE CHARACTER J QUOTQ . FOUND QUOTE QUOT3 EX HOLLEQ . CORRECT FOR ASCII OR FIELDATA JGD A4,$+1 JGD A2,QUOT2 . TEST END-OF-WORD LMJ A0,OUTHOL J QUOT1 QUOT4 LMJ A0,UNMODE . RESTORE MODES J *HOLLEX . ERROR RETURN QUOTQ LMJ B11,GX . GET BEYOUND QUOTE J QUOT7 . EOS OK TNE,H1 A0,ASFDCT . TEST FOR QUOTE CHARACTER J QUOT3 . DOUBLE QUOTE SZ FNXT . RE-GET LAST TNZ FDASQT . TEST IF ASCII CHARACTERS ALLOWED J QUOT9J L,H1 A0,ASCFDASC$,A0 . CONVERT GXX TO FIELDATA S A0,GXX QUOT9J LMJ A0,UNMODE . IN NORMAL MODE LMJ B11,GX J QUOT5 . SEMI-: EOS SZ FNXT . SET NEXT FOR CALLER QUOT5 TNE,H2 A2,ASFDCT J QUOT5A L,M A0,05 . FIELDATA BLANK TZ FDASQT . TEST ALLOWED ASCII STRINGS L,M A0,040 . ASCII BLANK EX HOLLEQ JGD A2,$-1 QUOT5A TNE,M A4,2000 J *HOLLEX VOID QUOTE STRING QUOT6 LMJ A0,OUTHOL L,M A0,0 SN A0,0,A3 . STRING TERMINATION L B11,HOLLEX J 1,B11 . NORMAL RETURN QUOT7 LMJ A0,UNMODE . RESTORE MODES J QUOT5 UNMODE . RETURN TO NORMAL MODE SZ HMCQNT . CLEAR LEVEL CHECK L,M R9,1 L A1,MCQNT AN,M A1,2 TN A1 S,S2 R9,MQTB+1,A1 GXABSB ' ',';','@' J 0,A0 OUTHOL . TEST FOR 14 WORDS AND WRITE TNZ DTAHLF TLE A3,(1,HOLOUT+15) J 0,A0 S A0,OUTX L A0,(1,HOLOUT) DS A2,HOLA2 . SAVE REGISTERS USED IN CALLING SEQ L,M A1,15 . LENGTH OF IMAGE L,M A2,0 . NO TRAILING CONTROL WORDS L,H1 A3,FDASC . SET BY USER SYNTAX LMJ B11,W60F . PLACE IMAGE IN F60 DL A2,HOLA2 . RESTORE REGISTERS AN,M A3,14 J *OUTX $(2) . HOLLEX +0 HOLA2 +0 . SAVES A2 THRU W60F +0 . SAVES A3 THRU W60F HOLLEQ EX HOLL90,A2 ASFDCT +0 . NUMBER CHARACTERS PER WORD OUTX + 0 END