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