ALAS822

(George Source)

Macros used: ACROSS, ALTLEN, ALTLENG, ANSOK2, BRUSEN, BS, BXE, BXGE, BXL, CHARMOVE, ENDREC, FINDPB, FJOCA, FREECORE, GEOERR, HUNTW, JBC, JBS, JBSC, MFREEW, MHUNT, MHUNTW, MHUNTX, MONOUT, NAME, OUTEXES, PHOTO, RESET, SEGENTRY, SETPARAM, SETREP, SETUPCORE, SHORTEN, TAB, TESTMOVE, TESTRPN2, UP, XYZ

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
  • Last modified: 17/01/2024 11:55
  • by 127.0.0.1