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