{{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