{{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: LISTRING864)}} ====== LISTRING864 ====== (George Source) **Macros used:** [[george:macro:ABANDCOM|ABANDCOM]], [[george:macro:ALTLEN|ALTLEN]], [[george:macro:AND|AND]], [[george:macro:BC|BC]], [[george:macro:BS|BS]], [[george:macro:BSXD|BSXD]], [[george:macro:CLOSE|CLOSE]], [[george:macro:COMERR|COMERR]], [[george:macro:DO|DO]], [[george:macro:ELSE|ELSE]], [[george:macro:ELSF|ELSF]], [[george:macro:EMPTY|EMPTY]], [[george:macro:ERROR|ERROR]], [[george:macro:FI|FI]], [[george:macro:FREECORE|FREECORE]], [[george:macro:FREELINK|FREELINK]], [[george:macro:HUNT|HUNT]], [[george:macro:IF|IF]], [[george:macro:LADDP|LADDP]], [[george:macro:LF|LF]], [[george:macro:MFREE|MFREE]], [[george:macro:MHUNT|MHUNT]], [[george:macro:MHUNTW|MHUNTW]], [[george:macro:OR|OR]], [[george:macro:QKTABSET|QKTABSET]], [[george:macro:QKTABULATE|QKTABULATE]], [[george:macro:REPEAT|REPEAT]], [[george:macro:SEGENTRY|SEGENTRY]], [[george:macro:SETNCORE|SETNCORE]], [[george:macro:SFCA|SFCA]], [[george:macro:SPARANOX|SPARANOX]], [[george:macro:STEP|STEP]], [[george:macro:STEPAGAIN|STEPAGAIN]], [[george:macro:TESTBRKIN|TESTBRKIN]], [[george:macro:TESTREP|TESTREP]], [[george:macro:THEN|THEN]], [[george:macro:UP|UP]], [[george:macro:VSKIP|VSKIP]], [[george:macro:WHILE|WHILE]] 22FL #OPT K0LISTRING = 0 22^= #LIS K0LISTRING 23DW #SEG LISTRING [ COMM 23YG 8HLISTRING 24D6 [ 24XQ SEGENTRY K1LISTRING,Z1LISTRING [ CONTEXT "FROM" & "TO" FOR LISTFILE 25CB SEGENTRY K2LISTRING,Z2LISTRING [ CONTEXT SELECTION TRANSLATION 25X2 SEGENTRY K3LISTRING,Z3LISTRING [ FILE EMPTY DETECTED BY LISTPARS/LIST 262X ...[ 266S ...[ENTRY POINTS K50,K51,K52,K53 USED BY LFALLTRANS MACRO 26=P ...[ 26BL [ 26W= [ 27*W [*********************************************************************** 27TG [ 28*6 [ PRESET DATA 28SQ [ 29#B [*********************************************************************** 29S2 [ 2=?L PDELIM 14H/?'<>;:=!£&+"0 2=R= PC #43 2?=W PS #63 2?QG P74 #74 2#=6 PEMPTY 11,#42,10HFILE EMPTY 2#PQ PLINE 18,#42,17HLINE NUMBER ERROR 2*9B PSPECSTR 18,#42,17HSPECIFIED STRING 2*P2 PNOTFOUND 10,10H NOT FOUND 2B8L TAB48 [ INVALID CHARACTERS IN 48 CHAR SET 2BN= #12,#13,#14,#16,#17 2C7W #21,#22,#23,#25 2CMG #40 2D76 #73,#74,#75,#76,#77 2DLQ [ 2F6B #DEF TAB48LEN = 0? - TAB48 2FL2 PNEWLINES #76327632 2G5L [ 2GK= [*********************************************************************** 2H4W [ 2HJG SNONSPACE 2J46 [ 2JHQ [*********************************************************************** 2K3B [ 2KH2 [ MOVE X3 TO NEXT NON SPACE CHARACTER 2L2L [ 2LG= [ X4 = LENGTH OF DATA 2L^W [ 2MFG WHILE TRUE 2M^6 SBN 4 1 2NDQ AND 4,NZ [ MORE CHARACTERS 2NYB BCHX 3 £ 2PD2 LDCH 0 0(3) 2PXL SBN 0 #20 2QC= AND 0,ZE [ SPACE 2QWW DO 2RBG REPEAT 2RW6 EXIT 6 0 2S*Q [ 2STB [*********************************************************************** 2T*2 [ 2TSL SFREELINK 2W#= [ 2WRW [*********************************************************************** 2X?G [ 2XR6 [ FORGET DOWN FROM LISTFILE 2Y=Q [ 2YQB FREELINK 2^=2 EXIT 7 0 2^PL [ 329= [ 32NW [*********************************************************************** 338G [ 33N6 STEP 347Q [ 34MB [*********************************************************************** 3572 [ 35LL [ GET NEXT RECORD OF FILE 366= [ 36KW [ ON EXIT 375G [ X1 -> GOUT / INFO 37K6 [ X3 - FIRST WORD OF DATA 384Q [ ZERO IF END OF FILE 38JB [ X4 - LENGTH OF DATA IN CHARS 3942 [ 39HL SBX 6 FX1 3=3= LDX 1 AWORK1(2) 3=GW STEP 0(1) 3?2G TESTBRKIN ZBREAKIN 3?G6 ADX 6 FX1 3?^Q [ 3#FB STEPA 3#^2 [ 3*DL [ SAME EXCEPT AFTER STEPAGAIN 3*Y= [ 3BCW MHUNT 1,GOUT,INFO 3BXG IF 3,NZ [ NOT END OF FILE 3CC6 THEN 3CWQ IF BS,1,BLFBASIC [ BASIC FILE 3DBB THEN 3DW2 LDCT 0 #600 3F*L ANDX 0 1(3) 3FT= SLC 0 2 [ USED CHARACTERS 3G#W IF 0,ZE [ USED ALL 4 CHARS 3GSG THEN 3H#6 LDN 0 4 3HRQ FI 3J?B LDEX 4 0(3) 3JR2 SLL 4 2 3K=L SBN 4 12 [ TWO WORDS OF RED TAPE AND LAST W 3KQ= ADX 4 0 [ DATA LENGTH 3L9W ADN 3 2 [ -> DATA 3LPG ELSE 3M96 LDEX 4 0(3) 3MNQ SLL 4 2 3N8B SBN 4 4 [ DATA LENGTH 3NN2 ADN 3 1 [ -> DATA 3P7L FI 3PM= FI 3PQB ... IF 4,NG 3PTG ... THEN 3PYL ... STOZ 4 3Q3Q ... FI 3Q6W EXIT 6 0 3QLG [ 3R66 [ 3RKQ [*********************************************************************** 3S5B [ 3SK2 SMATCH 3T4L [ 3TJ= [*********************************************************************** 3W3W [ 3WHG [ MATCH RECORD AGAINST CONTEXT STRING 3X36 [ 3XGQ [ X1 -> CONTEXT STRING ( FIRST WORD ) 3Y2B [ X3 -> RECORD ( DATA ) 3YG2 [ X5 -> LENGTH OF STRING 3Y^L [ 3^F= WHILE TRUE 3^YW LDCH 0 1(1) 42DG LDCH 2 0(3) 42Y6 AND 0,E,2 [ CHARS SAME 43CQ DO 43XB BCHX 1 £ 44C2 BCHX 3 £ 44WL REPEAT CT 5 45B= LDX 2 FX2 45TW EXIT 6 0 46*G [ 46T6 [ 47#Q [*********************************************************************** 47SB [ 48#2 SCONTEXT 48RL [ 49?= [*********************************************************************** 49QW [ 4==G [ SEARCH FILE FOR CONTEXT STRING 4=Q6 [ 4?9Q [ X5 = DISPLACEMENT TO CONTEXT DATA 4?PB [ 4#92 [ ON EXIT 4#NL [ X1 -> GOUT / INFO 4*8= [ X2 = FX2 4*MW [ X3 = ZERO IF END OF FILE 4B7G [ X5 = NO. OF RECORDS SKIPPED 4BM6 [ 4C6Q SBX 7 FX1 4CLB STO 5 AWORK2(2) [ DISPLACEMENT TO FIRST WORD OF STRING 4D62 STOZ 5 [ RECORDS 4DKL WHILE 3,NZ [ NOT END OF FILE 4F5= STO 5 ACOMMUNE1(2) 4FJW MHUNT 1,GOUT,INFO 4G4G ADX 1 AWORK2(2) [ -> FIRST WORD OF STRING 4GJ6 ADN 1 A1 4H3Q LF 1,FLFSTRLEN,5 [ STRING LENGTH 4HHB IF BS,1,BLFCSEARCH [ "C" 4J32 THEN 4JGL WHILE 4,GE,5 [ RECORD LENGTH >= STRING LENGTH 4K2= STO 5 ACOMMUNE2(2) 4KFW STO 3 ACOMMUNE3(2) 4K^G STO 1 ACOMMUNE4(2) 4LF6 CALL 6 SMATCH 4LYQ AND 5,NZ [ NOT MATCH 4MDB DO 4MY2 LDX 1 ACOMMUNE4(2) 4NCL LDX 3 ACOMMUNE3(2) 4NX= LDX 5 ACOMMUNE2(2) 4PBW SBN 4 1 [ START FROM NEXT CHAR 4PWG BCHX 3 £ 4QB6 REPEAT 4QTQ ELSE 4R*B IF BS,1,BLFSSEARCH [ "S" 4RT2 THEN 4S#L WHILE TRUE 4SS= LDCH 0 0(3) 4T?W SBN 0 #20 4TRG AND 0,ZE [ SPACE 4W?6 DO 4WQQ BCHX 3 £ 4X=B REPEAT CT 4 4XQ2 FI 4Y9L IF 4,GE,5 [ ENOUGH CHARS LEFT IN RECORD 4YP= THEN 4^8W CALL 6 SMATCH 4^NG FI 5286 FI 52MQ LDX 0 5 537B LDX 5 ACOMMUNE1(2) 53M2 AND 0,NZ [ MATCH NOT FOUND 546L DO 54L= CALL 6 STEP 555W ADN 5 1 55KG REPEAT 5656 MHUNT 1,GOUT,INFO 56JQ ADX 7 FX1 56L3 ... EXIT 7 0 56M# ...[ 56NK ...[ 56PW ...[*************************************************************** 56R7 ...[ 56SD ... SEGENTRY K53LISTRING 56TP ...STORETRANS 56X2 ...[ 56Y? ...[*************************************************************** 56^J ...[ 572T ...[ STORES LINES SKIPPED IN ALFTRANS OF ACTLF 5746 ...[ X1 - POINTER TO GOUT/INFO BLOCK 575C ...[ X5 - CONTAINS NUMBER OF LINES SKIPPED 576N ...[ CALLED ON X7 577^ ...[ 579= ... IF BC,1,BLFREST2 57=H ... LDCH 0 ATYPE(2) 57?S ... SBN 0 ACTLF/64 57*5 ... AND 0,ZE 57BB ... THEN 57CM ... STO 5 ALFTRANS(2) 57DY ... FI 57G9 ... EXIT 7 0 57J2 [ 583L [ 58H= [*********************************************************************** 592W [ 59GG SERROR 5=26 [ 5=FQ [*********************************************************************** 5=^B [ 5?F2 [ ADD ERROR LINE TO HEADING BLOCK 5?YL [ 5#D= [ X6 - ERROR MESSAGE 5#XW [ 5*CG [ ON EXIT 5*X6 [ X1 -> LENGTH OF LINE 5BBQ [ X3 -> NEXT CHARACTER POSITION 5BWB [ 5CB2 SBX 7 FX1 5CTL MHUNTW 1,GOUT,INFO 5D*= BS 1,BLFFRTOER [ ERROR FOUND 5DSW HUNT 1,ADATA,HEADING 5F#G IF 1,NG [ BLOCK NOT ALREADY SET UP 5FS6 THEN 5G?Q SETNCORE HEADCNT-A1+27,1,ADATA,HEADING 5GRB LDN 0 HEADCNT 5H?2 STO 0 HEADREC(1) 5HQL ELSF TRUE 5J== LDX 0 ALOGLEN(1) 5JPW SBX 0 HEADREC(1) 5K9G SBN 0 27+1 5KP6 AND 0,NG [ NOT ENOUGH ROOM 5L8Q THEN 5LNB LDX 4 HEADREC(1) 5M82 ADN 4 27 5MML ALTLEN 1,4,ADATA,HEADING 5N7= MHUNT 1,ADATA,HEADING 5NLW FI 5P6G ADX 1 HEADREC(1) [ -> LENGTH OF RECORD 5PL6 LDX 3 1 [ -> FIRST FREE WORD 5Q5Q LDX 2 6 5QKB ADX 2 FX1 5R52 SMO 0(2) 5RJL MVCH 2 7 [ MOVE STRING AND ITS LENGTH IN 5S4= LDX 2 FX2 5SHW LDX 0 ATYPE(2) 5T3G SRL 0 12 5TH6 SBN 0 ACTLF+GREMOTE 5W2Q IF 0,ZE [ REMOTE LISTFILE 5WGB THEN 5X22 SMO FX1 5XFL LDX 0 PNEWLINES 5X^= STO 0 1(1) [ PFCC TO N/L N/L 5YDW LDN 0 3 5YYG ADS 0 0(1) [ CHAR COUNT 5^D6 FI 5^XQ ADX 7 FX1 62CB EXIT 7 0 62X2 [ 63BL [ 63W= [ 64*W [ WW WW W 64TG [ WW WW WW 65*6 [ WW WW WWW 65SQ [ WWWW WW 66#B [ WWWWW WW 66S2 [ WW WW WW 67?L [ WW WW WW 67R= [ WW WW WW 68=W [ 68QG Z1LISTRING 69=6 [ 69PQ [ ANALYSE CONTEXT FROM AND TO PARAMETERS 6=9B [ 6=P2 [ ENVIRONMENT ON ENTRY 6?8L [ X4 = CONTAINS FROM / TO MARKER ( B0 SET = FROM ) 6?N= [ X5 = LENGTH OF KEYWORD 6#7W [ CPB / CUNI GENERATED BY PARABEG EXISTS 6#MG [ GOUT / INFO EXISTS 6*76 [ 6*LQ STO 4 AWORK1(2) [ FROM / TO MARKER 6B6B [ 6BL2 [ GET COMPLETE PARAMETER WITH ALL SPACES 6C5L MHUNT 3,CPB,CUNI [ REST OF FROM/TO PARAMETER 6CK= LDX 4 JPARNUM(3) 6D4W FREECORE 3 6DJG LDN 3 0 6F46 SPARANOX 4,3 [ GET COMPLETE PARAMETER 6FHQ MHUNT 2,CPB,CUNI 6G3B LDX 4 ANUM(2) 6GH2 ANDN 4 #7777 [ X4 = LENGTH OF PARAMETER 6H2L [ 6HG= [ GET FIRST CHARACTER AFTER KEYWORD 6H^W [ MUST IGNORE SPACE CHARS 6JFG LDN 3 APARA(2) 6J^6 DO 6KDQ CALL 6 SNONSPACE 6KYB BZE 4 ZNULL [ J IF NO MORE CHARACTERS IN PARAMETE 6LD2 REPEAT CT 5 6LXL LDCH 0 0(3) [ FIRST CHAR AFTER KEYWORD 6MC= IF 0,E,PC(1) [ "C" 6MWW THEN 6NBG BSXD 7,BLFCSEARCH [ X7 BECOMES GHEAD + D 6NW6 CALL 6 SNONSPACE 6P*Q BZE 4 ZNULL 6PTB ELSF 0,E,PS(1) [ "S" 6Q*2 THEN 6QSL BSXD 7,BLFSSEARCH 6R#= CALL 6 SNONSPACE 6RRW BZE 4 ZNULL 6S?G ELSE 6SR6 BSXD 7,BLFSEARCH 6T=Q FI 6TQB [ 6W=2 [ FIND DELIMITING CHAR 6WPL LDCH 0 0(3) 6X9= WHILE TRUE 6XNW LDCH 5 PDELIM(1) 6Y8G BZE 5 ZNOTDELIM [ J IF TABLE EXHAUSTED 6YN6 AND 0,U,5 [ NOT DELIMITER 6^7Q DO 6^MB REPEAT CHX 1 7272 [ 72LL [ LOOK FOR TRAILING DELIMITER 736= BCHX 3 £ [ SKIP FIRST DELIMITER 73KW SBN 4 1 745G BZE 4 ZUNPAIR [ J IF NO MORE CHARS 74K6 LDX 1 3 754Q SBX 3 2 [ START DISPLACEMENT IN CPB/CUNI 75JB LDN 6 0 [ NO. OF CHARS IN STRING 7642 WHILE TRUE 76HL LDCH 0 0(1) 773= AND 0,U,5 [ NOT DELIMITER 77GW DO 782G ADN 6 1 78G6 BCHX 1 £ 78^Q REPEAT CT 4 79FB BZE 4 ZUNPAIR [ J IF TRAILING DELIMITER NOT FOUND 79^2 SBN 4 1 7=DL WHILE 4,NZ [ MORE CHARACTERS 7=Y= DO 7?CW BCHX 1 £ 7?XG LDCH 0 0(1) 7#C6 SBN 0 #20 7#WQ BNZ 0 ZUNPAIR [ J IF MORE NON-SPACE CHARS 7*BB REPEAT CT 4 7*W2 BZE 6 ZNULL [ J IF NULL STRING 7B*L SBN 6 41 7BT= BPZ 6 ZTOOLONG [ J IF STRING > 40 CHARS 7C#W ADN 6 41 7CSG ORS 6 7 [ STRING LENGTH FOR GHEAD + D 7D#6 [ 7DRQ [ PUT IN GOUT/INFO 7F?B MHUNT 2,GOUT,INFO 7FR2 LDX 5 ALOGLEN(2) 7G=L SMO FX2 7GQ= LDX 0 AWORK1 7H9W IF 0,NG [ FROM 7HPG THEN 7J96 STO 5 GFLI(2) [ POINTER TO CONTEXT STRING 7JNQ BS 2,BLFFRCTEXT 7K8B ELSE 7KN2 STO 5 GNLI(2) 7L7L BS 2,BLFTOCTEXT 7LM= FI 7M6W ADN 6 4+3 [ CHARS TO WORDS + 1 7MLG SRL 6 2 7N66 ADX 5 6 7NKQ ALTLEN 2,5,GOUT,INFO 7P5B MHUNT 2,GOUT,INFO 7PK2 LDX 4 A1(2) [ OLD RECORD LENGTH -> START OF NEW STRI 7Q4L LDX 5 ALOGLEN(2) 7QJ= STO 5 A1(2) [ NEW RECORD LENGTH 7R3W ADX 2 4 7RHG STO 7 A1(2) [ GHEAD+D 7S36 ADN 2 A1+1 7SGQ MHUNT 1,CPB,CUNI 7T2B ADX 1 3 [ X1 -> START POINTER 7TG2 ANDN 7 #7777 7T^L SMO 7 7WF= MVCH 1 0 7WYW MFREE CPB,CUNI 7XDG UP 7XY6 [ 7YCQ [ 7YXB [ 7^C2 [ WW WW WWWWW 7^WL [ WW WW WW WW 82B= [ WW WW WW 82TW [ WWWW WW 83*G [ WWWWW WWWWW 83T6 [ WW WW WW 84#Q [ WW WW WW 84SB [ WW WW WWWWWWWW 85#2 [ 85RL Z2LISTRING 86?= [ 86QW [ 87=G [ CONVERT CONTEXT SELECTION TO LINES SELECTION 87Q6 [ LEAVING FILE POSITIONED AT FIRST RECORD TO BE LISTED 889Q [ 8992 MHUNT 1,GOUT,INFO 89NL STOZ AWORK1(2) [ FILE DEPTH 8=8= IF BS,1,BLFSETUP [ SETUP FILE 8=MW THEN 8?7G LDN 0 1 8?M6 STO 0 AWORK1(2) 8#6Q FI 8#LB CALL 6 STEP 8*62 BZE 3 ZFILEEMPTY 8*KL [ 8B5= [ CONVERSION CODE 8BJW LDX 0 GFLI(1) 8C4G ADN 0 2 8CJ6 BZE 0 ZLINEERROR [ J IF ERROR FOUND BY PRE 8.63 LISTRING 8D3Q [ 8F32 [ END OF CONVERSION CODE 8FGL [ 8G2= IF BS,1,BLFFRCTEXT [ "FROM" CONTEXT SEARCH 8GFW THEN 8G^G LF 1,FLFFRNUM,5 8HF6 CALL 7 SCONTEXT 8HYQ BZE 3 ZCONTEXTERR [ J IF STRING NOT FOUND 8JDB STO 5 GFLI(1) [ CONVERT TO "FROM" LINES 8JQR ... SEGENTRY K50LISTRING 8K58 ... NULL 8KCL ELSF +GFLI(1),NZ [ "FROM" LINES 8KX= THEN 8L#= ... LF 1,FLFFRNUM,5 [ NO. OF LINES TO BE SKIPPED 8LP= ... SEGENTRY K51LISTRING 8M6= ... NULL 8MH= ... WHILE 5,PZ 8MY= ... AND 5,NZ [ LINES TO BE SKIPPED 8N*B DO 8NT2 ... LDX 1 5 8P#L SBN 1 4095 [ MAX LINES SKIPPED IN ONE GO 8PS= IF 1,PZ 8Q?W THEN 8QRG LDN 1 4095 8R?6 ELSE 8RQQ ADN 1 4095 8S=B FI 8SQ2 ... SBN 5 4095 8T9L LDX 3 AWORK1(2) 8TP= VSKIP 0(3),0(1) 8W8W BZE 3 ZLINEERROR [ J IF END OF FILE 8WNG TESTREP ENDFILE,ZLINEERROR 8X86 REPEAT 8XMQ FI 8Y7B MHUNT 1,GOUT,INFO 8YM2 IF BS,1,BLFTOCTEXT [ "TO" CONTEXT SEARCH 8^6L THEN 8^L= LF 1,FLFTONUM,5 925W SFCA AWORK1(2),3 92KG QKTABSET 3,AWORK3(2),AWORK4(2) [ SAVE TABS TO START POSITION 9356 LDX 1 AWORK1(2) 93JQ STEPAGAIN 0(1) 944B CALL 6 STEPA 94J2 CALL 7 SCONTEXT 953L BZE 3 ZCONTEXTERR [ J IF STRING NOT FOUND 95H= ADN 5 1 [ INCLUSIVE 962W STO 5 GNLI(1) [ CONVERT TO "LINES" 96GG SBN 5 1 9726 ADX 5 GFLI(1) 97*T ... SEGENTRY K52LISTRING 97PJ ... NULL 985? ... SFCA AWORK1(2),3 98F2 QKTABULATE 3,AWORK3(2),AWORK4(2) [ RESET TO START POINT 98YL ELSF BS,1,BLFTO [ "TO" NUMBER 99D= THEN 99XW ... LF 1,FLFFRNUM,5 9=CG ... LF 1,FLFTONUM,4 9=X6 SBX 4 5 9?BQ BNG 4 ZLINEERROR [ J IF "TO" < "FROM" 9?WB ADN 4 1 [ INCLUSIVE 9#B2 STO 4 GNLI(1) [ CONVERT TO "LINES" 9#TL FI 9**= LDX 2 FX2 9*SW IF BS,2,BLFFREADERR [ READ ERROR - FLAG M 9B#G THEN 9BS6 MHUNT 1,GOUT,INFO 9C?Q BS 1,BLFCORRUPT 9CRB BC 2,BLFFREADERR 9D?2 FI 9DQL UP 9F== [ 9FPW [ 9G9G [ 9GP6 [*********************************************************************** 9H8Q [ 9HNB [ ERROR CONDITIONS 9J82 [ 9JML [*********************************************************************** 9K7= [ 9KLW ZNULL 9L6G CALL 7 SFREELINK 9LL6 COMERR JNULLPAR 9M5Q [ 9MKB ZNOTDELIM 9N52 ZUNPAIR 9NJL CALL 7 SFREELINK 9P4= COMERR ERUNPAIR 9PHW [ 9Q3G ZTOOLONG 9QH6 CALL 7 SFREELINK 9R2Q COMERR ALFSTRBIG 9RGB [ 9S22 ZBREAKIN 9SFL [ ASSUMED LF TO MONITORING FILE ONLY 9S^= CALL 7 SFREELINK 9T94 ... CLOSE 9TDW ABANDCOM 9TYG [ 9WD6 [ 9WXQ [ 9XCB [ 9XX2 [ WW WW WWWWWWWW 9YBL [ WW WW WW 9YW= [ WW WW WW 9^*W [ WWWW WWW 9^TG [ WWWWW WW =2*6 [ WW WW WW WW =2SQ [ WW WW WW WW =3#B [ WW WW WWWWWW =3S2 [ =4?L [ =4R= Z3LISTRING =5=W [ =5QG [ =6=6 ZFILEEMPTY =6PQ [ =79B [ MAIN FILE IS EMPTY =7P2 [ =88L LDN 6 PEMPTY [ "FILE EMPTY" =8N= CALL 7 SERROR =97W UP =9MG [ ==76 [ ==LQ ZLINEERROR =?6B [ =?L2 [ =#5L [ LINE NUMBER ERROR =#K= [ =*4W LDN 6 PLINE [ "LINE NUMBER ERROR" =*JG CALL 7 SERROR =B46 UP =BHQ [ =C3B [ =CH2 ZCONTEXTERR =D2L [ =DG= [ SPECIFIED STRING NOT FOUND =D^W [ =FFG LDN 6 PSPECSTR [ "SPECIFIED STRING" =F^6 CALL 7 SERROR =GDQ MHUNT 2,GOUT,INFO =GYB SMO FX2 =HD2 ADX 2 AWORK2 [ -> THE STRING =HXL LDX 5 1 [ -> LENGTH OF ERROR LINE =JC= ADN 2 A1 =JWW LF 2,FLFSTRLEN,4 =KBG ADS 4 0(1) [ ADD IN LENGTH =KW6 ADN 2 1 =L*Q SMO FX2 =LTB LDX 0 ATYPE =M*2 SRL 0 12 =MSL SBN 0 ACTLF+GREMOTE =N#= IF EITHER,0,ZE [ REMOTE LISTFILE =NRW MHUNT 1,GOUT,INFO =P?G LDCH 0 GOPTY(1) =PR6 SBN 0 1 =Q=Q OR 0,ZE [ PAPER TAPE PUNCH =QQB THEN =R=2 [ CONVERT #74 - #77 TO #7664 - #7667 =RPL LDX 1 FX1 =S9= DO =SNW LDCH 0 0(2) =T8G IF 0,L,P74(1) =TN6 THEN =W7Q MVCH 2 1 =WMB ELSE =X72 LDN 0 #76 =XLL DCH 0 0(3) [ #76 =Y6= BCHX 3 £ =YKW LDCH 0 0(2) =^5G SBN 0 #10 =^K6 DCH 0 0(3) [ #7N -> #6N ?24Q BCHX 2 £ ?2JB BCHX 3 £ ?342 LDN 0 1 ?3HL SMO 5 ?43= ADS 0 0 [ INCREMENT LENGTH ?4GW FI ?52G REPEAT CT 4 ?5G6 ELSF TRUE ?5PY ... LDX 6 2 ?5^Q ... LDX 2 FX2 ?69J ... LADDP ,0 ?6FB ... SMO 0 ?6P8 ... LDX 0 AREPERT ?6^2 ... SLL 0 13 ?78S ... LDX 2 6 ?7DL AND 0,NG [ 48 CHARACTER SET ?7Y= THEN ?8CW DO ?8XG LDN 6 TAB48LEN ?9C6 LDCH 0 0(2) ?9WQ LDX 1 FX1 ?=BB WHILE 0,U,TAB48(1) [ NOT INVALID IN 48 CHAR SET ?=W2 DO ??*L ADN 1 1 ??T= REPEAT CT 6 ?##W IF 6,ZE [ VALID IN 48 CHAR SET ?#SG THEN ?*#6 MVCH 2 1 ?*RQ ELSE ?B?B LDN 0 #20 [ REPLACE BY " " ?BR2 DCH 0 0(3) ?C=L BCHX 2 £ ?CQ= BCHX 3 £ ?D9W FI ?DPG REPEAT CT 4 ?F96 ELSE ?FNQ SMO 4 ?G8B MVCH 2 0 [ STRING ?GN2 FI ?H7L LDX 1 FX1 ?HM= LDN 2 PNOTFOUND+1(1) [ "NOT FOUND" ?J6W LDX 4 PNOTFOUND(1) ?JLG SMO 4 ?K66 MVCH 2 0 ?KKQ SMO 5 ?L5B ADS 4 0 [ ADD IN LENGTH ?LK2 UP ?M4L [ ?MJ= #END ^^^^ ...555244500003