Show pageBacklinksBack to top This page is read only. You can view the source, but not change it. Ask your administrator if you think this is wrong. {{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: ALAS822)}} ====== ALAS822 ====== (George Source) **Macros used:** [[george:macro:ACROSS|ACROSS]], [[george:macro:ALTLEN|ALTLEN]], [[george:macro:ALTLENG|ALTLENG]], [[george:macro:ANSOK2|ANSOK2]], [[george:macro:BRUSEN|BRUSEN]], [[george:macro:BS|BS]], [[george:macro:BXE|BXE]], [[george:macro:BXGE|BXGE]], [[george:macro:BXL|BXL]], [[george:macro:CHARMOVE|CHARMOVE]], [[george:macro:ENDREC|ENDREC]], [[george:macro:FINDPB|FINDPB]], [[george:macro:FJOCA|FJOCA]], [[george:macro:FREECORE|FREECORE]], [[george:macro:GEOERR|GEOERR]], [[george:macro:HUNTW|HUNTW]], [[george:macro:JBC|JBC]], [[george:macro:JBS|JBS]], [[george:macro:JBSC|JBSC]], [[george:macro:MFREEW|MFREEW]], [[george:macro:MHUNT|MHUNT]], [[george:macro:MHUNTW|MHUNTW]], [[george:macro:MHUNTX|MHUNTX]], [[george:macro:MONOUT|MONOUT]], [[george:macro:NAME|NAME]], [[george:macro:OUTEXES|OUTEXES]], [[george:macro:PHOTO|PHOTO]], [[george:macro:RESET|RESET]], [[george:macro:SEGENTRY|SEGENTRY]], [[george:macro:SETPARAM|SETPARAM]], [[george:macro:SETREP|SETREP]], [[george:macro:SETUPCORE|SETUPCORE]], [[george:macro:SHORTEN|SHORTEN]], [[george:macro:TAB|TAB]], [[george:macro:TESTMOVE|TESTMOVE]], [[george:macro:TESTRPN2|TESTRPN2]], [[george:macro:UP|UP]], [[george:macro:XYZ|XYZ]] <code - ALAS822.txt>22FL #LIS K0ALAS>K0ALLGEO>K0GREATGEO>K0COMMAND 22^= #SEG ALAS [ BILL IZATT 23DW 8HALAS [CENT SECTION 20.2.74 23YG [ ENTRY POINT. THIS LOCATION MUST REMAIN FIXED 24D6 SEGENTRY K1ALAS,QENTRY1 24XQ SEGENTRY K2ALAS,QENTRY2 [PARAMETER SUBST. ROUTINE 25CB 25X2 # THIS SEGMENT ASSEMBLES A COMPLETE COMMAND IN A COMDAT/CBUFF 26BL # BLOCK HANDLING CONVERSION TO CARD IMAGE IN THE PROCESS. 26W= # THE COMMAND IS THEN TRANSFERRED TO THE CURRENT CLB BLOCK,ANY 27*W # PARAMETER SUBSTITUTION BEING EFFECTED IN THE PROCESS. 27TG # CONTROL IS THEN PASSED TO THE SEGMENT ALASB 28*6 # 28SQ # 29#B # THIS SECTION LOOKS FOR A MULTILINE COMMAND 29S2 #DEF SIZOFCPB = +APARAFIR-A1+21 2=?L ...#DEF VCMULTI = +APARAFIR-A1+2*4+3 2=HD ...#DEF VMAXCLB = 450+ALB 2=R= MINUS1 #77777777 2?=W PERCENT #25 [ % 2?QG QUEST #17 [ ? 2#=6 QUOTES #22 [ " 2#PQ TAB 2*9B RHB #31 [ ) 2*P2 SB0B1 #60000000 2B8L SCOLON #13 [ ; 2BN= SOL #37 [ / 2C7W SPACE #20 2CMG Y #71 [ Y 2D76 ZPLUS1 #73 2DLQ Z10 +10 2F6B Z25 +25 2FL2 ZA #41 [ A 2G5L ZAPOST #27 [ ' 2GK= ZLHB #30 [ ( 2GT4 ...ZCONTINUED 4H.... [.... 2H4W PARIDERR +JPARIDERR 2HJG NOTATNERR +JNOTATNERR 2J46 VJMAXREC +JMAXREC 2JHQ MASKINIS #57777777 2K3B MXCHMESS +JMAXCHARS [EXCEEDED MAX NO OF CHARS IN COMMAND 2KH2 MAXCHAR +1801 2L2L THASH #23 2LG= SEVFOUR #74 2L^W SEVSIX #76 2MFG TWOSCORE #40 2M^6 THIRTEEN #13 2NDQ TWEN4 #24 2NYB THIRTWO #32 2PD2 THYPHEN #35 2PXL TFSTOP #36 2QC= XALASBLK 2QWW #HAL CBUFF+COMDAT,CLB [O/P & I/P BLOKS USED BY ALAS IN PS 2RBG QENTRY1 2RW6 POSSE 2S*Q LDN 0 1 2STB ORS 0 EXT+9(2) [DENOTES ANALYSIS STARTED 2T*2 LDX 7 GSIGN 2TSL ANDX 7 EXT+9(2) [LOAD PT OR C LIKE INDICATOR 2W#= MHUNTW 3,ADATA,CREADL [FIND ADATA/CREADL 2WRW LDX 4 A1(3) [LOAD CHARACTER COUNT 2X?G LDCT 5 #100 2XR6 ANDX 5 EXT+11(2) [ISOLATE MULTILINERY BIT 2Y=Q BZE 5 TERMED [J IF NO MULTILINERY 2YQB MHUNTW 2,COMDAT,CBUFF 2^=2 LDX 5 ALOGLEN(2) [GET SIZE OF BUFFER 2^PL ADX 5 ALOGLEN(3) [ADD SIZE OF READLINE 329= LDX 3 2 32NW ALTLEN 3,5,COMDAT,CBUFF 338G MHUNTW 3,COMDAT,CBUFF 33N6 LDX 5 A1(3) [LOAD NO OF CHARS IN BUFFER 347Q ADN 3 CPDATA [SET X3 TO START OF DATA AREA 34MB MHUNTW 2,ADATA,CREADL 3572 ADN 2 CPDATA [START OF READLINE AREA 35LL SRC 5 2 [UPDATE POINTER 366= ADX 3 5 [TO NEW BUFFER AREA 36KW BPZ 7 PT [J IF PT LIKE 375G LDX 5 4 [RELOAD NO OF CHARS IN READLINE 37K6 ST LDCH 0 0(2) [ THIS ROUTINE TRANSFERS 384Q BCHX 2 £ [ ALL THE CHARACTERS FROM 38JB DCH 0 0(3) [ THE READLINE BLOCK 3942 BCHX 3 £ [ TO THE BUFFER BLOCK 39HL BCT 4 ST [J IF NORE CHARACTERS TO MOVE 3=3= BRN X3 3=GW PTL STOZ A1(3) [CLEAR WORD FOR CHAR COUNT 3?2G ADN 3 CPDATA [SET X3 TO START OF DATA 3?G6 LDX 2 3 [COPY INTO X2 3?^Q PT LDN 5 0 [INITIAL CHAR COUNT 3#FB SCAN LDCH 0 0(2) [GET NEXT CHAR 3#^2 BCHX 2 £ 3*DL TXL 0 SEVFOUR(1) 3*Y= BCS X1 [J IF NOT ALPHA,BETA OF 3BCW TXU 0 SEVSIX(1) 3BXG BCS X2 [J IF NOT DELTA 3CC6 BCT 4 STT [J IF NOT END OF LINE 3CWQ BRN X3 3DBB STT LDCH 0 0(2) [GET NEXT CHAR 3DW2 BCHX 2 £ 3F*L TXL 0 TWOSCORE(1) 3FT= BCS W108 [J IF LESS THAN #40 3G#W ORN 0 #14 [FORM TRUE CHARACTER 3GSG BRN X1 3H#6 W108 TXU 0 THIRTEEN(1) 3HRQ BCC X3 [J IF TERMINATOR 3J?B TXU 0 TWEN4(1) 3JR2 BCC X3 3K=L TXL 0 TFSTOP(1) 3KQ= BCC WOOF [J IF NOT TERMINATOR 3L9W TXL 0 THIRTWO(1) 3LPG BCC X3 [J IF TERMINATOR 3M96 WOOF TXU 0 TAB(1) 3MNQ BCS X2 [J IF NOT TAB 3N8B LDN 0 #20 [FORM TRUE CHARACTER 3NN2 X1 DCH 0 0(3) [STORE 3P7L BCHX 3 £ 3PM= ADN 5 1 [ADD TO COUNT 3Q6W X2 BCT 4 SCAN [J IF MORE TO ANALYSE 3QLG X3 HUNTW 3,ADATA,CREADL [LOOK FOR READLINE 3R66 BNG 3 XP [J IF NOT THER 3RKQ FREECORE 3 [FREE IT 3S5B XP MHUNTW 3,COMDAT,CBUFF [GET BUFFER BLOCK 3SK2 ADS 5 A1(3) [UPDATE ITS CHAR COUNT 3T4L X42 LDX 2 3 [SAVE POINTER COMDAT//CBUFF 3TJ= SMO FX2 3W3W LDX 7 EXT+4 3WHG BZE 5 XED [J IF LINE OF NO CHARACTERS 3X36 BPZ 7 XYZ [J IF NOT 1ST RECORD OF COMMAND 3XGQ SMO FX2 3Y2B STOZ EXT+4 [ZEROISE COUNT FOR RECORDS 3YG2 ADN 3 CPDATA [SET TO START OF LINE 3Y^L LDX 6 5 3^F= X44 LDCH 0 0(3) 3^YW BCHX 3 £ [UPDATE POINTER 42DG TXU 0 SPACE(1) 42Y6 BCC X43 [J IF SPACE CHAR 43CQ TXU 0 THASH(1) 43XB BCS X55 [J IF NOT LINE OF COMMENT 44C2 LDN 7 2 44WL VJMAX 45B= LDX 3 FX2 45TW OUTEXES A1(2),A1+2,COMDAT,CBUFF 46*G MFREEW COMDAT,CBUFF 46T6 ACROSS ALASB,4 47#Q X43 BCT 6 X44 47SB BRN X45 48#2 X55 LDX 3 2 [RESET X3 TO POINT TO COMDAT/CBUFF 48RL SMO FX2 49?= LDX 6 EXT+11 [GET CONTENTS OF EXT+11 49QW LDX 4 MASKINIS(1) 4==G SMO FX2 [MASK OUT B1 4=Q6 ANDS 4 EXT+11 [ 1.E. THE INT. ISS. BIT 4?9Q SLL 6 1 4?PB BNG 6 XED [J IF COMMAND INT ISSUED TO 4#92 [ OMIT CHECK FOR MULTILINERY 4#NL XYZ LDN 6 1 4*8= LDX 4 A1(3) [COUNT OF CHARS IN /CBUFF BLOCK 4*MW SBN 4 1 4B7G SRC 4 2 4BM6 ... ADX 3 4 [SET X3 TO POINT TO LAST CHARACTER 4C6Q ... ADN 3 CPDATA [ OF COMMAND 4CLB X4 LDCH 0 0(3) [LOAD CHAR 4D62 SLC 3 2 [ THIS ROUTINE GOES 4DKL SBN 3 1 [ BACK TO GET ANOTHER 4F5= SRC 3 2 [ LINE IF THE LAST NON 4FJW TXU 0 SPACE(1) [ SPACE CHAR IS A HYPHEN 4G4G BCS X5 4GJ6 SBS 6 A1(2) [REDUCE CHAR COUNT IN /CBUFF 4H3Q BCT 5 X4 [J IF COUNT UNEXPIRED 4HHB X5 TXU 0 THYPHEN(1) 4J32 BCS XED [J IF CHAR NOT A HYPHEN 4JGL BPZ 7 X6 [J IF NOT 1ST RECORD 4K2= SMO FX2 4KFW LDX 0 CONTEXT 4K^G ANDN 0 #20 4LF6 BZE 0 XNOP [J IF NOT OPERATOR 4LYQ SMO FX2 4MDB LDX 0 CPLEV 4MY2 BNZ 0 XNOP 4NCL MONOUT JMULTILL [MULTILINE ILLEGAL FROM OPS CONSOLE 4NX= BRN X17 4PBW XNOP 4PWG LDCT 5 #100 4QB6 SMO FX2 4QTQ ORS 5 EXT+11 [SET B2 -> MULTILINERY 4R*B BRN X6 4RT2 XED LDN 6 0 [ 4S#L BNG 7 X6 [J IF 1ST RECORD 4SS= LDCT 5 #100 4T?W SMO FX2 4TRG ERS 5 EXT+11 [UNSET MULTILINE BIT 4W?6 X6 SBS 6 A1(2) [REDUCE CHAR COUNT 4WFB ... JBC X7,FX2,EXCOMERR [J IF COMERR BIT NOT SET 4WML ... LDN 5 64 4WTW ... STO 5 A1(2) [RESET O/P POINTER TO 64 4X46 ...X7 LDX 5 A1(2) 4X=B BNZ 5 X16 [J IF COUNT NOT ZERO 4XQ2 BZE 6 X45 4Y9L LDCT 5 #100 4YP= SMO FX2 4^8W ERS 5 EXT+11 4^NG X45 FREECORE 2 5286 X17 ENDREC 59GG TERMED 5=26 LDX 5 4 5=FQ LDX 2 GSIGN 5=^B SMO FX2 5?F2 STO 2 EXT+4 5?YL NAME 3,COMDAT,CBUFF [RENAME 5#D= BPZ 7 PTL [J IF PAPER TAPE LIKE 5#XW BRN X42 5*7N ...X16 BXL 5 MAXCHAR(1),X15 [J IF COMMAND NOT TOO LONG 5*CG ... BS FX2,EXCOMERR [SET COMERR BIT 5*M# ...X15 LDX 7 5 [SAVE COPY OF CHAR COUNT 5*X6 ADN 5 3 5BBQ ... SRL 5 2 [CALCULATE NO. OF WORDS 5BWB ADN 5 2 [2 WORD RECORD HEADER 5CB2 LDX 3 2 5CTL ALTLEN 3,5,COMDAT,CBUFF 5FS6 BNZ 6 X17 [J IF MULTILINERY 5G?Q MHUNTW 3,CPB,CALAS 5GRB LDN 5 1 5H?2 ANDX 5 CPBPROGLEV(3) 5HQL BZE 5 ZZZ [J IF 1ST DELIM BIT UNSET 5J== LDN 5 2 5JPW ANDX 5 CPBPROGLEV(3) 5K9G BNZ 5 ZZZ [J IF 2ND DELIM BIT ALREADY SET 5KP6 LDN 5 2 5L8Q ERS 5 CPBPROGLEV(3) [SET 2ND DELIM BIT 5LNB ZZZ LDX 1 FX1 5M82 LDX 2 FX2 5MML LDX 0 XALASBLK(1) 5N7= STO 0 ACOMMUNE1(2) 5NLW LDN 0 CPDATA 5P6G STO 0 ACOMMUNE2(2) 5PL6 LDN 0 CLBFIR 5Q5Q STO 0 ACOMMUNE3(2) 5QKB LDX 0 7 5R52 STO 0 ACOMMUNE4(2) 5RJL LDX 0 GSIGN 5S4= STO 0 ACOMMUNE5(2) 5SHW BRN QENTRY2 5T3G VP0 MFREEW COMDAT,CBUFF 5TH6 LDX 7 ACOMMUNE2(2) 5W2Q SBN 7 CLBFIR 5WGB SLC 7 2 [CHAR. COUNT OF COMMAND 5X22 MHUNT 3,CLB 5XFL STO 7 APTBEPAR(3) 5X^= STO 7 APARANUM(3) 5Y57 ... JBS XTL3,2,EXCOMERR [JUMP IF COMMAND TOO LONG BEFORE 5Y94 ... [PARAMSUB 5Y#^ ... TESTRPN2 OK,VP1 5YDW ...XTL3 5YJR ... CALL 6 SHORTEN 5YNN ... MHUNTW 3,CLB 5YSK ... LDX 7 APTBEPAR(3) 5YYG BZE 7 X17 5^D6 ... BXGE 7 MAXCHAR(1),XTL1 627J ... JBSC XTL,2,EXCOMERR [J IF COMERR BIT SET AND CLEAR IT 62CB ACROSS ALASB,1 62D* ...XTL1 62F# ... LDN 7 64 [ADJUST CHAR COUNT TO TRUNCATED 62G? ... STO 7 APTBEPAR(3) [COMMAND LENGTH 62H= ...XTL 62J9 ... LDX 4 ZCONTINUED(1) [ FIRST 60 CHARACTERS HAVE BEEN 62K8 ... LDN 5 CLBFIR+15 [ IGNORED AND AN ERROR SIGNALLED 62M6 ... SMO 5 62P4 ... STO 4 0(3) [SET 16TH WORD OF COMMAND TO '....' 62R2 ... SMO FX2 62SY ... STO 5 ACOMMUNE2 [RESET ADDRESS OF O/P STRING 64*W LDX 7 MXCHMESS(1) 64TG BRN VP7 65*6 ...VP1 CALL 6 SHORTEN 65SQ ... LDX 7 PARIDERR(1) 66#B TESTRPN2 NALL,VP7 [NOT ALLOWED AT THIS LEVEL 66S2 LDX 7 NOTATNERR(1) 67?L VP7 ACROSS ALASB,3 67#7 ...[ 67#N ...[ SUBROUTINE TO SHORTEN CLB IF TOO LONG 67*9 ...[ 67*Q ...SHORTEN 67B? ... LDX 7 ACOMMUNE2(2) 67BS ... SLC 7 2 67C* ... ADN 7 3 67CW ... SRL 7 2 67DC ... SBN 7 A1 [X7 = REQUIRED LOGICAL LENGTH 67DY ... MHUNTW 3,CLB 67FF ... LDN 5 AVELINE+ALB [X5 = MIN LOGICAL LENGTH 67G2 ... TXL 7 5 67GH ... BCC SH1 [BR IF REQ LEN > OR = MIN 67H4 ... LDN 7 AVELINE+ALB [SET REQ LEN = MIN 67HK ... BRN SH2 67J6 ...SH1 67JM ... LDN 5 VMAXCLB+1 [X5 = MAX CLB LENGTH + 1 67K8 ... TXL 7 5 67KP ... BCS SH2 [BR IF REQ LEN < OR = MAX 67L= ... LDN 7 24 [X7 = LEN TRUNCATED COMMAND 67LR ...SH2 67M# ... TXL 7 ALOGLEN(3) 67MT ... BCC SH3 [BR IF REQ LEN = LOG LEN (CANNOT BE > 67NB ... ALTLEN 3,7 [ALTER LOGICAL LENGTH TO REQUIRED LEN 67NX ...SH3 67PD ... EXIT 6 0 67P^ ...[ 67QG ...[ 67R= [ *********************************************** 68=W [ 68QG [ START OF PARAMSUB ROUTINE 69=6 [ THIS SUBROUTINE PERFORMS PARAMETER SUBSTITUTION 69PQ [ (USING SPECIFIED CPB/CALAS BLOCK IN THE CPA) 6=9B [ WHILE COPYING A CHARACTER STRING FROM ONE 6=P2 [ BLOCK TO ANOTHER. 6?8L [ ON ENTRY, ACOMMUNE1 B0-11 HOLDS I/P BLOCK TYPE 6?N= [ B12-23 HOLDS O/P BLOCK TYPE 6#7W [ ACOMMUNE2 HOLDS ADDRESS OF I/P STRING IN BLOCK 6#MG [ ACOMMUNE3 HOLDS ADDRESS OF O/P STRING IN BLOCK 6*76 [ ACOMMUNE4 HOLDS CHAR. COUNT OF I/P STRING 6*LQ [ IF NEG., THE COUNT IS HELD IN A1 6B6B [ ACOMMUNE5 HOLDS DEPTH OF CPB/CALAS BLOCK 6BL2 [ DURING THIS SEGMENT: 6C5L [ AWORK1 B0=0 IF SUBST. FROM IST CPB/CALAS 6CK= [ =1 IF SUBDT. FROM 2ND CPB/CALAS 6D4W [ B2-23 HOLDS ADDRESS OF I/P BLOCK 6DJG [ AWORK2 HOLDS I/P MODIFIER 6F46 [ AWORK3 HOLDS O/P MODIFIER (CURRENT) 6FHQ [ AWORK4 HOLDS ADDRESS OF O/P BLOCK (CURRENT) 6G3B [ X7 B0=0 IF 'SP' STRING NOT BEING PROCESSED 6GH2 [ =1 IF 'SP' STRING IS BEING PROCESSED 6H2L [ B2-23 CURRENT I/P CHAR. COUNT 6HG= [ ACOMMUNE1 B0-11=I/P BLOCK TYPE/SUBTYPE 6H^W [ B12-23=O/P BLOCK TYPE/SUBTYPE 6JFG [ ACOMMUNE5 I/P CHAR. COUNT AT LAST % 6J^6 [ -IN CASE OF ERRORS 6KDQ [ 6KYB [ RESET - ALTERS THE LENGTH OF O/P BLOCK AND 6LD2 [ RESETS THE I/P AND O/P MODIFIERS 6LXL [ ON ENTRY ON EXIT 6MC= [ X0 - X0 * 6MWW [ X1 - X1 FX1 6NBG [ X2 FX2 X2 FX2 6NW6 [ X3 - X3 - 6P*Q [ X4 LOGLEN REQUIRED X4 - 6PTB [ X5 - X5 0 IF NO BLOCKS MOVED 6Q*2 [ X6 LINK ADDRESS X6 LINK ADDRESS 6QSL [ X7 BO=SP SWITCH X7 B0=SP SWITCH 6R#= RESET SBX 6 FX1 6RRW PHOTO 5 6S?G STO 3 ACOMMUNE9(2) 6SR6 LDX 3 AWORK4(2) [ADDR. OF O/P BLOCK 6T=Q ALTLENG 3,4,RFS [ALTER LENGTH OF O/P BLOCK 6TQB LDX 3 ACOMMUNE9(2) 6W=2 ADX 6 FX1 6WPL RESET1 6X9= TESTMOVE 5,RESET8 [J IF NOBLOCKS MOVED 6XNW RESET2 6Y8G LDN 5 1 6YN6 MHUNTX 1,ACOMMUNE1(2) [FIND I/P BLOCK 6^7Q LDXC 0 AWORK1(2) [OLD ADDR OF I/P BLOCK 6^MB BCC £ 7272 SBX 1 0 72LL ADS 1 AWORK1(2) [RESET I/P BLOCK ADDRESS 736= ADS 1 AWORK2(2) [RESET I/P MOD 73KW LDN 1 AWORK3(2) 745G BPZ 7 RESET6 [J IF NOT PROCESSING SP STRING 74K6 MHUNTW 1,CPB,CMULTI 754Q SBX 1 AWORK4(2) 75JB ADS 1 AWORK3(2) [RESET O/P MOD. (PREVIOUS) 7642 ADS 1 AWORK4(2) [RESET O/P BLOCK ADDRESS (PREVIOUS) 76HL LDX 1 AWORK4(2) 773= ADN 1 A1 77GW RESET6 782G LDX 0 ACOMMUNE1(2) 78G6 SLL 0 12 78^Q MHUNTX 2,0 [FIND O/P BLOCK 79FB SBX 2 1(1) 79^2 ADS 2 0(1) [RESET O/P MODIFIER (CURRENT) 7=DL ADS 2 1(1) [RESET O/P BLOCK ADDRESS (CURRENT) 7=Y= BRN RESET9 7?CW RESET8 7?XG LDN 5 0 [SET NO BLOCKS MOVED INDICATOR 7#C6 RESET9 7#WQ LDX 1 FX1 7*BB LDX 2 FX2 7*W2 EXIT 6 0 7B*L [ S/R USED BY ALTLENG 7BT= RFS BNG 7 RFS2 7C#W LDX 0 ACOMMUNE1(2) 7CSG SLL 0 12 7D#6 MHUNTX 2,0 [REFIND O/P BLOCK 7DRQ EXIT 1 0 7F?B RFS2 MHUNTW 2,CPB,CMULTI 7FR2 EXIT 1 0 7G=L [ TESTLEV - TESTS FOR TOP BREAK-IN LEVEL 7GQ= [ AND COMMAND PROCESSOR LEVEL ZERO 7H9W [ ON ENTRY ON EXIT 7HPG [ X0 - X0 * 7J96 [ X1 - X1 - 7JNQ [ X2 - X2 - 7K8B [ X3 - X3 - 7KN2 [ X4 - X4 - 7L7L [ X5 - X5 - 7LM= [ X6 LINK ADDR X6 LINK ADDR 7M6W [ X7 - X7 - 7MLG TESTLEV 7N66 SMO FX2 7NKQ LDX 0 CPLEV 7P5B BZE 0 XERR2 [J IF CPL=0 7PK2 SMO FX2 7Q4L LDX 0 EXT+10 7QJ= ANDN 0 #7777 7R3W BZE 0 TLEV1 [J IF NO BREAK-IN 7RHG SMO FX2 7S36 TXU 0 CPLEV 7SGQ BCC XERR2 [J IF TOP BREAK-IN LEVEL 7T2B TLEV1 EXIT 6 0 [NOT CPL=0 OR TOP BREAKIN LEVEL 7TG2 7T^L QENTRY2 7WF= [ START - INITIALISES THE MODS. AND INDICATORS ETC. 7WYW [ ON ENTRY, ACOMMUNE1 B0-11 HOLDS I/P BLOCK TYPE 7XDG [ B12-23 HOLDS O/P BLOCK TYPE 7XY6 [ ACOMMUNE2 HOLDS ADDRESS OF I/P STRING IN BLOCK 7YCQ [ ACOMMUNE3 HOLDS ADDRESS OF O/P STRING IN BLOCK 7YXB [ ACOMMUNE4 HOLDS CHAR. COUNT OF I/P STRING 7^C2 [ IF NEG., THE COUNT IS HELD IN A1 7^WL [ ACOMMUNE5 HOLDS DEPTH OF CPB/CALAS BLOCK 82B= [ ON EXIT, X1 FX1 82TW [ X2 I/P MOD 83*G [ X3 O/P MOD 83T6 [ X7 I/P CHAR. COUNT + INDS. 84#Q START LDX 4 ACOMMUNE5(2) 84SB STO 4 AWORK1(2) 85#2 LDX 4 ACOMMUNE1(2) 85RL MHUNTX 3,4 [GET ADDRESS OF I/P BLOCK 86?= LDX 6 A1(3) 86QW ORS 3 AWORK1(2) [SAVE ADDR. OF I/P BLOCK 87=G ADX 3 ACOMMUNE2(2) 87Q6 STO 3 AWORK2(2) [SAVE ADDR. OF I/P STRING 889Q SLL 4 12 88PB MHUNTX 3,4 8992 STO 3 AWORK4(2) [SAVE ADDR OF O/P BLOCK 89NL ADX 3 ACOMMUNE3(2) 8=8= STO 3 AWORK3(2) [SAVE ADDR OF O/P STRING 8=MW LDX 7 ACOMMUNE4(2) 8?7G BPZ 7 START4 [J IF X7 HOLD I/P CHAR. COUNT 8?M6 LDX 7 6 [GET I/P CHAR. COUNT 8#6Q BNG 7 XERR91 [J IF INVALID COUNT 8#LB START4 8*62 BZE 7 STOP [J IF I/P CHAR. STRING EMPTY 8*KL LDX 4 ACOMMUNE3(2) [THE NEXT INSTRUCTIONS 8B5= SLC 4 2 [SET X4 TO LOGICAL LENGTH 8BJW ADX 4 7 [REQUIRED BY O/P STRING 8C4G SBN 4 A1*4-3 8CJ6 SRL 4 2 8D3Q SMO AWORK4(2) 8DHB LDX 5 ALOGLEN [GET ACTUAL LOGICAL LENGTH OF O/P 8F32 TXL 5 4 8FGL BCC START6 [J IF O/P BLOCK SIZE IS SUFFICIENT 8G2= CALL 6 RESET [RESET I/P, O/P MODIFIERS 8GFW LDX 3 AWORK3(2) 8G^G START6 8HF6 LDX 2 AWORK2(2) [LOAD I/P MODIFIER 8HYQ 8JDB 8JY2 8KCL [ TRAN - TRANSFERS CHARACTERS TO THE O/P FIELD 8KX= [ WHILE TESTING FOR PARAMETERS 8LBW [ ON ENTRY ON EXIT 8LWG [ X0 - X0 - 8MB6 [ X1 FX1 X1 FX1 8MTQ [ X2 I/P MOD X2 I/P MOD 8N*B [ X3 O/P MOD X3 O/P MOD 8NT2 [ X4 - X4 - 8P#L [ X5 - X5 CURRENT CHAR. 8PS= [ X6 - X6 - 8Q?W [ X7 I/P CHAR. COUNT X7 I/P CHAR. COUNT 8QRG TRAN LDCH 5 0(2) [GET NEXT CHAR. FROM I/P 8R?6 TXU 5 PERCENT(1) 8RQQ BCC PERCEN [J IF % 8S=B BNG 7 STOPSP [J IF WITHIN 'SP' STRING 8SQ2 TRAN2 DCH 5 0(3) [PUT CURRENT CHAR. IN O/P 8T9L BCHX 3 £ [UPDATE O/P MODIFIER 8TP= TRAN4 BCHX 2 £ [UPDATE I/P MODIFIER 8W8W BCT 7 TRAN [UPDATE I/P CHARACTER COUNT 8WNG BNG 7 XERR1 [J IF PROCESSING 'SP' PARAMETER 8X86 8XMQ 8Y7B 8YM2 [ STOP - STORES INFORMATION FOR THE CALLING 8^6L [ CHAPTER, AND RETURNS TO IT 8^L= [ ON ENTRY ON EXIT 925W [ X0 - 92KG [ X1 - ACOMMUNE1=REL. ADDR. OF CHAR. 9356 [ X2 - FOLLOWING LAST CHAR. 93JQ [ X3 O/P MOD OF O/P. 944B [ X4 - 94J2 [ X5 - 953L [ X6 - 95H= [ X7 SP INDICATORS 962W STOP LDX 2 FX2 [REPLY OK 96GG ANSOK2 9726 STOP1 BZE 7 STOP4 [J IF CPB/CMULTI NOT SETUP 97FQ MFREEW CPB,CMULTI [ FREE CPB/CMULTI USED BY SP 97^B STOP4 SBX 3 AWORK4(2) [CALCULATE AND STORE RELATIVE ADDR. 98F2 STO 3 ACOMMUNE2(2) [OF CHAR. AFTER LAST CHAR. OF O/P 98YL LDX 1 FX1 99D= BRN PSEND 99XW [ PERCEN - DETERMINES THE PARAMETER TYPE 9=CG [ ON ENTRY ON EXIT 9=X6 [ X0 - X0 - 9?BQ [ X1 FX1 X1 FX1 9?WB [ X2 I/P MOD X2 I/P MOD 9#B2 [ X3 O/P MOD X3 O/P MOD 9#TL [ X4 - X4 - 9**= [ X5 CURRENT CHAR. X5 CURRENT CHAR. 9*SW [ X6 - X6 - 9B#G [ X7 I/P CHAR. COUNT X7 I/P CHAR. COUNT 9BS6 [ ACOMMUNE5 HOLDS CHAR COUNT AT % 9C?Q PERCEN 9CRB SMO FX2 [SAVE COUNT OF CHARS LEFT 9D?2 STO 7 ACOMMUNE5 [IN CASE OF ERROR 9DQL BCHX 2 £ [UPDATE I/P MODIFIER 9F== BCT 7 PERCEN1 [UPDATE I/P CHAR. COUNT 9FPW BRN XERR1 [ERROR IF % IS LAST CHAR. OF I/P 9G9G PERCEN1 9GP6 LDCH 5 0(2) [GET NEXT CHAR. OF I/P 9H8Q TXU 5 SPACE(1) 9HNB BCC PERCEN [J IF SPACE 9J82 TXL 5 ZA(1) 9JML BCS PERCEN2 [ J IF CURRENT CHAR. NOT ALPHABETIC 9K7= TXL 5 Y(1) 9KLW BCS XATOX [ J IF CURRENT CHAR. = A TO X 9L6G TXL 5 ZPLUS1(1) 9LL6 BCS YORZ 9M5Q BRN XERR1 9MKB PERCEN2 9N52 TXU 5 ZLHB(1) 9NJL BCC XDLM [ JUMP IF ( 9P4= TXU 5 QUOTES(1) 9PHW BCC XDLM [ JUMP IF " 9Q3G TXU 5 SOL(1) 9QH6 BCC XDLM [ JUMP IF / 9R2Q TXU 5 QUEST(1) 9RGB BCC XDLM [ JUMP IF ? 9S22 TXU 5 ZAPOST(1) 9SFL BCC XDLM [ JUMP IF ' 9S^= TXL 5 Z10(1) 9TDW BCS XDGT [J IF CURRENT CHAR. IS DIGIT 9TYG TXU 5 SCOLON(1) 9WD6 BCC STARTSP [ J IF CURRENT CHAR=; (START OF 'SP') 9WXQ TXU 5 PERCENT(1) 9XCB BCC TRAN2 [ J IF CURRENT CHAR.=% 9XX2 BRN XERR1 9YBL 9YW= 9^*W 9^TG [ XATOX - SKIPS TO THE REQUIRED PARAMETER =2*6 [ ON ENTRY ON EXIT (TO OUT) =2SQ [ X0 - X0 * =3#B [ X1 FX1 X1 FX1 =3S2 [ X2 I/P MOD X2 ADDR. OF PARAM. FOR SUBST. =4?L [ X3 O/P MOD X3 O/P MOD =4R= [ X4 - X4 0 IF PARAM FOUND (PB TYPE) =5=W [ X5 CURRENT CHAR.(A-X) X5 * =5QG [ X6 - X6 COUNT OF CHARS. IN PARAM =6=6 [ X7 I/P CHAR. COUNT X7 I/P CHAR. COUNT =6PQ XATOX CALL 6 TESTLEV =79B SBN 5 32 [X5=PARAM COUNT (IE. POSN. OF PARAM) =7P2 SMO FX2 =88L STO 2 AWORK2 [SAVE I/P MOD =8N= LDX 2 FX2 =97W STO 3 AWORK3(2) [SAVE O/P MOD =9MG XATOX2 ==76 LDX 6 AWORK1(2) [CPB/CALAS POSN IND ==LQ FINDPB 2,XERR92,6 [GET ADDR. OF REQD. CPB/CALAS BLOCK =?6B SMO FX2 =?L2 STO 2 ACOMMUNE2 [SAVE ADDR. OF PARAMETER BLOCK =#5L ADN 2 APARAFIR =#K= BRN XATOX7 =*4W XATOX4 =*JG SLC 2 2 [SET X2 TO ADDRESS - =B46 ADN 2 7 [NEXT PARAMETER - =BHQ ADX 2 6 [IN THE - =C3B SRL 2 2 [CPB/CALAS BLOCK =CH2 XATOX7 =D2L LDX 6 0(2) [GET COUNT OF CHARS. IN NEXT PARAM. =DG= TXU 6 MINUS1(1) =D^W BCC OUT9 [ J IF NO PARAMETER =FFG ANDN 6 #7777 [PICK UP COUNT OF CHARS. IN PARAM =F^6 BCT 5 XATOX4 [J IF NOT REQUIRED PARAMETER =GDQ LDN 4 0 =GYB =HD2 =HXL =JC= [ OUT - COPIES A SUBSTITUTED PARAMETER TO =JWW [ THE O/P FIELD =KBG [ ON ENTRY ON EXIT (TO TRAN4) =KW6 [ X0 - X0 * =L*Q [ X1 FX1 X1 FX1 =LTB [ X2 ADDR. OF PARAM X2 I/P MOD =M*2 [ X3 O/P MOD X3 O/P MOD =MSL [ X4 PARAM BLOCK TYPE X4 * =N#= [ X5 - X5 * =NRW [ X6 NO. OF CHARS IN PAR. X6 =P?G [ X7 I/P CHAR. COUNT X7 I/P CHAR. COUNT =PR6 [ ACOMMUNE2=ADDR. OF PARAM. BLOCK =Q=Q OUT LDX 0 GSIGN =QQB ORS 0 0(2) [SET PARAM. ACCESSED BIT OF CPB/CALAS =R=2 ADN 2 1 [X2=ADDR. OF PARAMETER STRING =RPL OUT1 BZE 6 OUT9 [J IF PARAMETER EMPTY =S9= LDX 5 3 =SNW SLC 5 2 =T8G ADX 5 6 =TN6 SMO 7 =W7Q ADN 5 3 [X5=EXTRA CHARS REQD IN O/P BLOCK =WMB SRL 5 2 =X72 ... SBN 5 A1-1 =XLL SMO FX2 =Y6= LDX 0 AWORK4 =YKW SBX 5 0 =^5G SMO 0 =^K6 LDX 0 ALOGLEN ?24Q TXL 0 5 ?2JB BCC OUT8 [J IF OP BLOCK LARGE ENOUGH ?342 SMO FX2 ?3HL STO 2 ACOMMUNE3 [SAVE ADDR. OF PARAM STRING ?43= LDX 2 FX2 ?4GW STO 4 ACOMMUNE4(2) [SAVE PARAMETER BLOCK TYPE ?52G STO 6 ACOMMUNE6(2) [SAVE COUNT OF CHARS. IN PARAMETER ?5G6 LDX 4 5 ?5^Q CALL 6 RESET [RESET I/P AND O/P MODIFIERS ?6FB LDX 6 ACOMMUNE6(2) ?6^2 LDX 2 ACOMMUNE3(2) ?7DL BZE 5 OUT8 ?7Y= OUT4 LDX 2 FX2 ?8CW LDX 3 AWORK3(2) ?8XG LDX 5 ACOMMUNE3(2) ?9C6 SBX 5 ACOMMUNE2(2) [SET REL. ADDR. OF PARAM. IN BLOCK ?9WQ SMO ACOMMUNE4(2) ?=BB BRN OUT6 ?=W2 OUT6 BRN OUT61 ??*L BRN OUT62 ??T= BRN OUT63 ?##W BRN OUT7 ?#SG OUT61 LDX 4 AWORK1(2) ?*#6 FINDPB 2,XERR92,4 [GET ADDRESS OF CPB/CALAS ?*RQ BRN OUT7 ?B?B OUT62 FJOCA 2 [GET ADDRESS OF JOBBLOCK ?BR2 BRN OUT7 ?C=L OUT63 MHUNTW 2,CPB,CMULTI [GET ADDRESS OF CPB/CMULTI ?CQ= OUT7 ADX 2 5 [RESET ADDRESS OF PARAMETER ?D9W OUT8 CHARMOVE 2,6 ?DPG OUT9 LDX 2 FX2 ?F96 LDX 2 AWORK2(2) ?FNQ BRN TRAN4 ?G8B ?GN2 ?H7L ?HM= [ XDGT - GETS THE PARAMETER REPEAT COUNT ?J6W [ ON ENTRY ON EXIT (TO XDLM1) ?JLG [ X0 - X0 - ?K66 [ X1 FX1 X1 FX1 ?KKQ [ X2 I/P MOD X2 I/P MOD ?L5B [ X3 O/P MOD X3 O/P MOD ?LK2 [ X4 - X4 PARAMETER REPEAT COUNT ?M4L [ X5 CURRENT CHAR. X5 CURRENT CHAR. ?MJ= [ X6 - X6 - ?N3W [ X7 I/P CHAR. COUNT X7 I/P CHAR. COUNT ?NHG XDGT LDX 4 5 ?P36 XDGT4 BCHX 2 £ [UPDATE I/P MODIFIER ?PGQ BCT 7 XDGT6 [UPDATE I/P CHAR. COUNT ?Q2B BRN XERR1 ?QG2 XDGT6 LDCH 5 0(2) [GET NEXT CHAR. OF I/P ?Q^L TXU 5 SPACE(1) ?RF= BCC XDGT4 [J IF SPACE ?RYW XDGT7 TXL 5 Z10(1) ?SDG BCC XDGT9 [J IF NOT A DIGIT ?SY6 BZE 4 XDGT ?TCQ MPA 4 Z10(1) [FORM PARAMETER REPEAT COUNT ?TXB TXL 5 Z25(1) ?WC2 BCC XERR1 [J IF PARAM REPEAT COUNT>24 ?WWL BRN XDGT ?XB= XDGT9 TXU 5 ZLHB(1) ?XTW BCC XDLM1 [ JUMP IF ( ?Y*G TXU 5 QUOTES(1) ?YT6 BCC XDLM1 [ JUMP IF " ?^#Q TXU 5 SOL(1) ?^SB BCC XDLM1 [ JUMP IF / #2#2 TXU 5 QUEST(1) #2RL BCC XDLM1 [ JUMP IF ? #3?= TXU 5 ZAPOST(1) #3QW BCC XDLM1 [ JUMP IF ' #4=G BRN XERR1 [J IF NOT PARAMETER DELIMITER #4Q6 #59Q #5PB #692 [ XDLM - EXTRACTS THE PARAMETER IDENTIFIER #6NL [ ON ENTRY AT XDLM1 ON EXIT #78= [ X0 - X0 * #7MW [ X1 FX1 X1 FX1 #87G [ X2 I/P MOD X2 FX2 #8M6 [ X3 O/P MOD X3 ADDR. OF PARAM. IDENT. #96Q [ X4 PARAM REPEAT COUNT X4 PARAMETER REPEAT COUNT #9LB [ X5 CURRENT CHAR. X5 * #=62 [ X6 - X6 NO. OF CHARS IN PARAM. IDENT. #=KL [ X7 I/P CHAR. COUNT X7 I/P CHAR. COUNT #?5= XDLM LDN 4 1 [SET PARAMETER REPEAT COUNT #?JW XDLM1 CALL 6 TESTLEV [CHECK CPL ETC. ##4G SMO FX2 ##J6 STO 3 AWORK3 #*3Q LDN 6 0 [SET COUNT OF UNCLOSE DELIMITERS #*HB TXU 5 ZLHB(1) #B32 BCS XDLM3 [J IF NOT ( #BGL LDN 6 1 [SET COUNT OF UNCLOSED DELIMITERS #C2= LDX 5 RHB(1) [RESET TERMINATING DELIMITER TO ) #CFW XDLM3 BCHX 2 £ [UPDATE I/P MOD #C^G BCT 7 XDLM4 [UPDATE I/P CHAR. COUNT #DF6 BRN XDLMER1 #DYQ XDLM4 LDCH 0 0(2) [NEXT CHAR OF IP #FDB TXU 0 SPACE(1) #FY2 BCC XDLM3 [J IF CURRENT CHAR. IS A SPACE #GCL TXU 0 5 #GX= BCC XDLM7 [J IF TERMINATING DELIMITER #HBW BZE 6 XDLM5 [J IF OPENING DELIMITER NOT ( #HWG TXU 0 ZLHB(1) #JB6 BCS XDLM5 #JTQ ADN 6 1 [UPDATE COUNT OF UNCLOSED DELIMITERS #K*B XDLM5 DCH 0 0(3) [PUT CURRENT CHAR IN O/P BLOCK #KT2 BCHX 3 XDLM3 [UPDATE O/P MOD. #L#L XDLM7 BZE 6 XDLM9 [J IF NOT (--) TYPE PARAMETER #LS= BCT 6 XDLM5 [UPDATE COUNT OF UNCLOSED DELIMITERS #M?W XDLM9 SMO FX2 #MRG STO 2 AWORK2 #N?6 LDX 2 FX2 #NQQ LDX 6 3 #P=B SLC 6 2 #PQ2 LDX 5 AWORK3(2) #Q9L SLC 5 2 #QP= SBX 6 5 [PRODUCE COUNT OF CHARS. IN PARAMETER #R8W LDX 3 AWORK3(2) #RNG BNZ 6 XDM [ J IF EMPTY STRING #S86 LDX 5 4 [POSITION OF PARAMETER (IE. A COUNT) #SMQ BRN XATOX2 #T7B #TM2 #W6L #WL= XDLMER1 #X5W SMO FX2 #XKG LDX 3 AWORK3 #Y56 BRN XERR1 #YJQ [ XDM - SEARCHES THE CPB/CALAS BLOCK #^4B [ FOR THE PARAMETER #^J2 [ ON ENTRY ON EXIT *23L [ X0 - X0 * *2H= [ X1 FX1 X1 FX1 *32W [ X2 FX2 X2 ADDR. OF PARAM FOR SUBST. *3GG [ X3 ADDR OF PARAM IDENT. X3 O/P MOD *426 [ X4 PARAM REPEAT COUNT X4 PARAM BLOCK TYPE (ZERO) *4FQ [ X5 - X5 * *4^B [ X6 PARAM IDENT CHAR CNT X6 NO. OF CHARS. IN PARAM *5F2 [ X7 I/P CHAR COUNT X7 I/P CHAR COUNT *5YL XDM STO 6 ACOMMUNE6(2) [SAVE SIZE OF PARAM STRING *6D= STO 7 ACOMMUNE7(2) [SAVE I/P CHAR COUNT *6XW LDX 7 4 *7CG FINDPB 3,XERR92,AWORK1(2) [GET ADDRESS OF REQD. CPB/CALAS *7X6 STO 3 ACOMMUNE2(2) [SAVE ADDRESS OF CPB/CALAS *8BQ ADN 3 APARAFIR [GET ADDRESS OF 1ST PARAM IN BLOCK *8WB BRN XDM2 *9B2 XDM1 SLC 3 2 [UPDATE - *9TL ADX 3 6 [PAMETER MOD. - *=*= ADN 3 3 [TO NEXT PARAM - *=SW SRL 3 2 [IN CPB/CALAS *?#G XDM2 SMO FX2 *?S6 STO 3 ACOMMUNE3 *#?Q LDX 6 0(3) *#RB ADN 3 1 **?2 TXU 6 MINUS1(1) **QL BCC XDM9 [ J IF PARAM DOES NOT EXIST *B== ANDN 6 #7777 *BPW BZE 6 XDM2 [ J IF PARAM EMPTY *C9G SMO FX2 *CP6 LDX 5 ACOMMUNE6 *D8Q TXL 6 5 [J IF PARAM STRING IN CALAS IS LESS- *DNB BCS XDM1 [THAN PARAM STRING IN I/P BLOCK *F82 SMO FX2 *FML LDX 2 AWORK3 *G7= XDM5 LDCH 0 0(3) [GET NEXT CHAR OF PARAM IN CALAS *GLW BCHX 3 £ [UPDATE PARAM MOD. *H6G TXU 0 SPACE(1) *HL6 BCC XDM6 [J IF SPACE *J5Q LDCH 4 0(2) [GET NEXT CHAR. FROM I/P *JKB BCHX 2 £ [UPDATE I/P MOD *K52 TXU 4 0 *KJL BCS XDM7 [ J IF CHARS DO NOT MATCH *L4= BCT 5 XDM6 [ J IF MORE CHARS. IN STRING *LHW BCT 7 XDM7 [ J IF THIS IS NOT REQ. PARAM *M3G BCT 6 XDM8 [ J IF SOME CHARS LEFT IN PARAM *MH6 BRN XDM8 [ J - PARAM EMPTY *N2Q XDM6 BCT 6 XDM5 [UPDATE CHAR COUNT OF PARAM (CALAS) *NGB ... BRN XDM1 *P22 XDM7 SBN 6 1 *PFL BRN XDM1 *P^= XDM8 LDX 0 GSIGN *QDW SMO FX2 *QYG LDX 2 ACOMMUNE3 *RD6 ORS 0 0(2) [SET PARAM ACCESSED BIT IN CPB/CALAS *RXQ XDM85 LDX 2 3 *SCB SMO FX2 *SX2 LDX 3 AWORK3 *TBL SMO FX2 *TW= LDX 7 ACOMMUNE7 [RESTORE I/P CHAR COUNT *W*W LDN 4 0 [SET PARAM BLOCK TYPE *WTG BRN OUT1 *X*6 XDM9 LDN 6 0 *XSQ BRN XDM85 *Y#B *YS2 *^?L *^R= [ YORZ - FINDS THE JOB NAME B2=W [ ON ENTRY ON EXIT B2QG [ X0 - X0 * B3=6 [ X1 FX1 X1 FX1 B3PQ [ X2 I/P MOD X2 ADDR. OF PARAM FOR SUBST B49B [ X3 O/P MOD X3 O/P MOD B4P2 [ X4 - X4 PARAM BLOCK TYPE (1) B58L [ X5 CURRENT CHAR. X5 * B5N= [ X6 - X6 PARAM CHAR. COUNT B67W [ X7 I/P CHAR COUNT X7 I/P CHAR COUNT B6MG YORZ SBN 5 #71 B776 SMO FX2 B7LQ STO 2 AWORK2 B86B LDX 2 FX2 B8L2 STO 3 AWORK3(2) B95L BRUSEN YORZ1 [J IF IN NO USER CONTEXT B9K= FJOCA 2 [GET ADDRESS OF JOBBLOCK B=4W SMO FX2 B=JG STO 2 ACOMMUNE2 B?46 LDN 4 1 B?HQ ADN 2 JNAME [GET ADDRESS OF JOB NAME B#3B BZE 5 YORZ2 B#H2 ADN 2 JUSER-JNAME B*2L BRN YORZ2 B*G= YORZ1 BZE 5 XERR0 B*^W STO 2 ACOMMUNE2(2) BBFG LDN 4 3 BB^6 ADN 2 CPREFIX [GET ADDRESS OF USER NAME BCDQ YORZ2 LDN 6 12 [SET X6 - BCYB LDN 3 11 [TO COUNT OF - BDD2 YORZ4 SRC 3 2 [CHARS IN - BDXL SMO 2 [JOBNAME/USERNAME BFC= LDCH 0 0(3) BFWW TXU 0 SPACE(1) BGBG BCC YORZ8 BGW6 SMO FX2 BH*Q LDX 3 AWORK3 BHTB BRN OUT1 BJ*2 YORZ8 SLC 3 2 BJSL SBN 3 1 BK#= BCT 6 YORZ4 BKRW GEOERR 1,USERJOB BL?G BLR6 BM=Q BMQB [ STARTSP - GETS A CPB/CMULTI BLOCK IN PREPARATION BN=2 [ FOR THE 'SP' PARAMETER BNPL [ ON ENTRY ON EXIT BP9= [ X0 - X0 * BPNW [ X1 FX1 X1 FX1 BQ8G [ X2 I/P MOD X2 I/P MOD BQN6 [ X3 O/P MOD X3 O/P MOD BR7Q [ X4 - X4 * BRMB [ X5 - X5 * BS72 [ X6 - X6 * BSLL [ X7 I/P CHAR COUNT X7 I/P CHAR COUNT BT6= STARTSP BTKW SMO FX2 BW5G STO 2 AWORK2 BWK6 BNG 7 XERR1 [J IF PROCESSING 'SP' STRING BX4Q LDX 2 FX2 BXJB STO 3 AWORK3(2) BY42 SMO 7 BYHL LDN 4 VCMULTI B^3= SRL 4 2 B^GW LDX 0 7 C22G SLC 0 1 C2G6 BNG 0 STARTSP4 [J IF CPB/CMULTI SETUP C2^Q LDX 6 ACOMMUNE1(2) C3FB LDX 5 ACOMMUNE5(2) C3^2 SETUPCORE 4,3,CPB,CMULTI [SETUP CMULTI WITH LOGICAL LENGTH=30 C4DL STO 6 ACOMMUNE1(2) C4Y= STO 5 ACOMMUNE5(2) C5CW CALL 6 RESET2 [RESET I/P AND O/P MODS C5XG BRN STARTSP6 C6C6 STARTSP4 C6WQ MHUNTW 3,CPB,CMULTI [FIND ADDRESS NEW O/P BLOCK C7BB PHOTO 5 C7W2 ALTLENG 3,4,RFS2 [ALTER LENGTH OF CPB/CMULTI C8*L MHUNTW 3,CPB,CMULTI C8T= CALL 6 RESET1 [REFIND I/P AND O/P BLOCKS IF MOVED C9#W STARTSP6 C9SG LDX 5 AWORK3(2) C=#6 STO 5 A1(3) [SAVE PREVIOUS O/P MODIFIER C=RQ LDX 5 AWORK4(2) C??B STO 5 A1+1(3) [SAVE PREVIOUS O/P BLOCK ADDRESS C?R2 LDX 5 ACOMMUNE5(2) C#=L STO 5 A1+2(3) [SAVE CHAR COUNT IN CASE OF ERROR C#Q= ORX 7 SB0B1(1) [SET SP BIT AND CPB/CMULTI BIT C*9W STO 3 AWORK4(2) [SAVE ADDRESS OF O/P BLOCK C*PG ADN 3 APARAFIR+1 CB96 STO 3 AWORK3(2) [SAVE NEW O/P MOD. CBNQ LDX 2 AWORK2(2) [RESTORE I/P MOD. CBS9 ...STARTSP7 [REMOVE SPACE AFTER ';' CBXN ... BCHX 2 £ CC37 ... BCT 7 STARTSP8 CC6L ... BRN XERR1 CC=5 ...STARTSP8 CC*J ... LDCH 0 0(2) CCF3 ... BXE 0 SPACE(1),STARTSP7 [J IF NO MORE SPACES AFTER ';' CCJG ... BRN TRAN CCN2 CD7L CDM= CF6W [ STOPSP - CONVERTS A 'SP' PARAMETER CFLG [ ON ENTRY ON EXIT CG66 [ X0 - X0 * CGKQ [ X1 FX1 X1 FX1 CH5B [ X2 I/P MOD X2 ADDR. OF PARAM FOR SUBST. CHK2 [ X3 O/P MOD X3 O/P MOD CJ4L [ X4 - X4 PARAM BLOCK TYPE (2) CJJ= [ X5 - X5 * CK3W [ X6 - X6 NO. OF CHARS IN PARAM CKHG [ X7 I/P CHAR COUNT X7 I/P CHAR COUNT CL36 STOPSP CLGQ TXU 5 SCOLON(1) CM2B BCS TRAN2 [J IF NOT END OF 'SP' STRING CMG2 SMO FX2 CM^L STO 2 AWORK2 CNF= LDX 2 FX2 CNYW LDX 4 3 CPDG SBX 4 AWORK4(2) CPY6 SBN 4 APARAFIR+1 CQCQ SLC 4 2 CQXB LDX 1 AWORK4(2) CRC2 STO 4 APARAFIR(1) [SET CHAR COUNT (FOR SETPARAM SEG.) CRWL ERX 7 GSIGN CSB= LDX 3 A1(1) CSTW STO 3 AWORK3(2) [RESET O/P MODIFIER CT*G LDX 0 A1+1(1) CTT6 STO 0 AWORK4(2) [RESET O/P BLOCK ADDRESS CW#Q LDX 3 A1+2(1) CWSB STO 3 ACOMMUNE5(2) CX#2 BZE 4 XERR0 [J IF NO CHARS. IN OP STRING CXRL PHOTO 5 CY?= LDX 6 ACOMMUNE1(2) CYQW SETPARAM STOPSP8 [PRODUCE SP STRING IN CPB/CMULTI C^=G STO 6 ACOMMUNE1(2) C^Q6 CALL 6 RESET1 [RESET I/P AND O/P MODIFIERS D29Q LDX 3 AWORK3(2) D2PB MHUNTW 2,COMDAT,CSETP D392 NAME 2,CPB,CMULTI [RENAME COMDAT/CSETP TO CPB/CMULTI D3NL LDX 6 ANUM(2) D48= ANDN 6 #7777 [GET COUNT OF CHARS IN SP STRING D4MW SMO FX2 D57G STO 2 ACOMMUNE2 D5M6 ADN 2 APARA [GET ADDRESS OF SP STRING D66Q LDN 4 2 D6LB BRN OUT1 D762 STOPSP8 [ERROR ACTION D7KL STO 6 ACOMMUNE1(2) [RESET ACOMMUNE D85= STO 3 ACOMMUNE5(2) [AFTER COORD D8JW SMO 7 D94G LDN 7 0 D9J6 D=3Q D=HB D?32 [ XERR - SETS A REPLY AND D?GL [ COMPLETES THE TRANSFER TO THE O/P BLOCK D#2= [ ON ENTRY ON EXIT D#FW [ X0 - X0 * D#^G [ X1 - X1 * D*F6 [ X2 I/P MOD X2 I/P MOD D*YQ [ X3 O/P MOD X3 O/P MOD DBDB [ X4 - X4 ERROR INDICATOR DBY2 [ X5 - X5 * DCCL [ X6 - X6 * DCX= [ X7 I/P CHAR COUNT X7 - DDBW XERR CALL 6 RESET1 DDWG XERR0 LDX 3 AWORK3(2) DFB6 LDX 2 AWORK2(2) DFTQ XERR1 SETREP IPID [REPLY - INCORRECT PARAMETER IDENT. DG*B BRN XERR4 DGT2 XERR2 SETREP NALL [REPLY - NOT ALLOWED AT THIS LEVEL DH#L XERR4 BPZ 7 XERR6 [J IF NOT PROCESSING SP STRING DHS= SMO FX2 DJ?W LDX 3 AWORK4 DJRG LDX 5 A1+2(3) [I/P CHAR COUNT AT START OF SP DK?6 LDX 6 A1+1(3) [O/P BLOCK ADDR DKQQ SMO FX2 DL=B STO 6 AWORK4 DLQ2 LDX 3 A1(3) [O/P MOD DM9L BRN XERR61 DMP= XERR6 SMO FX2 DN8W LDX 5 ACOMMUNE5 [I/P CHAR COUNT AT START OF SP DNNG XERR61 DP86 SMO 5 DPMQ LDN 5 0 [COUNT WITH INDS. REMOVED DQ7B SMO 7 DQM2 LDN 6 0 [CURRENT CHAR. COUNT DR6L ERX 7 6 [SP. INDICATORS (COUNT=0)) DRL= SBX 6 5 DS5W SLC 2 2 DSKG ADX 2 6 DT56 SRC 2 2 DTJQ BZE 5 XERR9 [J IF CHAR. COUNT IS ZERO DW4B LDN 6 511 DWJ2 XERR7 TXL 5 6 DX3L BCC XERR8 DXH= LDX 6 5 DY2W XERR8 SMO 6 DYGG MVCH 2 0 [MOVE REST OF I/P TO O/P BLOCK D^26 SBX 5 6 D^FQ BNZ 5 XERR7 D^^B XERR9 LDX 2 FX2 F2F2 BRN STOP1 F2YL XERR91 F3D= GEOERR 1,RECLESS [NEGATIVE I/P CHARACTER COUNT F3XW XERR92 F4CG GEOERR 1,NOCALAS [THE CPB/CALAS BLOCK DOES NOT EXIST F4X6 F5BQ F5WB F6B2 PSEND F6TL LDX 0 XALASBLK(1) F7*= BXE 0 ACOMMUNE1(2),VP0 F7SW UP F8#G [ END OF PARAMSUB ROUTINE F8S6 [ F9?Q #END ^^^^ ...144503560013 </code> Last modified: 17/01/2024 11:55by 127.0.0.1 Log In