*                 CATALOG NO. 704905 - SIGMA 5/7 BPM M:JOBR
       CSECT       1
         SYSTEM    BPM
         SYSTEM   SIG7FDP
DEBUG    EQU      0
*
*
*        JOB AND FIN CONTROL COMMAND PROCESSOR'S
*
*
         PAGE
*                 SYMBOLIC REGISTER DEF'S.
R0       EQU      0
R1       EQU      1
R2       EQU      2
R3       EQU      3
R4       EQU      4
R5       EQU      5
R6       EQU      6
R7       EQU      7
SR1      EQU      8
SR2      EQU      9
SR3      EQU      10
SR4      EQU      11
D1       EQU      12
D2       EQU      13
D3       EQU      14
D4       EQU      15
         PAGE
*                 CHANGE STACK POINTER AMOUNT SPEC. BY 1ST ARGUMENT.
*                 SECOND ARGUMENT SPEC. AVAILABLE REGISTER.
BUMP     CNAME
         PROC
LF       LI,AF(2) AF(1)
         MSP,AF(2)  TSTACK
         PEND
*                 PUSH OR PULL N WORDS SPECIFIED BY 1ST ARGU4ENT INTO
*                 REG'S STARTING AT 2ND ARGUMENT.
PUSH     CNAME    X'9',X'B'
PULL     CNAME    X'8',X'A'
         PROC
         DO       NUM(AF)=1
LF       GEN,1,7,4,3,17 0,NAME(1),AF(1),0,TSTACK
         ELSE
         DO       AF(1)=1
LF       GEN,1,7,4,3,17  0,NAME(1),AF(2),0,TSTACK
         ELSE
         DO       AF(1)=16
LF       LCI      0
         ELSE
LF       LCI      AF(1)
         FIN
         GEN,1,7,4,3,17  0,NAME(2),AF(2),0,TSTACK
         FIN
         FIN
         PEND
         PAGE
         DEF      JOBR
         DEF      DATEON            LOGON DATE TO BE USED IN LOGRT
         DEF      LGNTM             LOGON TIME TO BE USED IN LOGRT
         DEF      USRNM             USER NAME TO BE USED IN LOGRT
         DEF      EXTACC            EXT. ACC. INFO. TO BE USED IN LOGRT
         DEF      W120
         DEF      WSNSCAN
         SPACE    3
         REF      TSTACK
         REF      LISTDATE,GETACCN,HEXCK,EOCCSCAN
         REF      CHARSCAN,HEXSCAN
         REF      PLB,CSL,BAPLB
         REF      ACCN,UNAME,PRT
         REF      JOBCCLF,BLNKERCD,COMERCD,NAMERCD
         REF      HEXERCD
         SREF     M:ACINIT          FOR INSTALLATION ACCOUNTING RNT.
         REF      INSTARCD          DEF IN CCITABLS,INSLTN ACCT CHECK CODE
         REF      RPERCD            RIGHT PAREN. ERROR CODE
         REF      SYNTXER           SYNTAX ERROR IN EXT.ACC.INFO
         REF      SCCLF,LIST
         REF      TOPPAGE
         REF      CHSTSCAN                                              905
         REF      LOGRT
         REF      DECCNV            J:TIME DLTD
         REF      HEXBCD,BLANK
         REF      J:JIT
*
         REF      J:ASSIGN
         REF      J:CCBUF
         REF      WSNERCD
         REF      J:DWSK
         REF      Y008
         REF      Y00FF
         REF      CCBEF
         REF      J:TELFLGS
         REF      JRBID
         REF      CCLFLAGS
         REF      CCI50
         REF      CCREAD
         REF      EXITM
         PAGE
K1       EQU      1
K2       EQU      2
K3       EQU      3
KC       EQU      X'C'
K40      EQU      X'40'
KBLANK   EQU      ' '
BPERL    EQU      140               # BYTES PER LINE             MAGIC
ORIGIN   EQU      3                 ORIGINAL BYTE OFFSET
WIDTH    EQU      13+4              TOTAL WIDTH
ACTWID   EQU      13                CHARACTER WIDTH
HIGH     EQU      12                CHARACTER HEIGHT
LNTOLN   EQU      BPERL-ACTWID      # TO ADD TO SET TO NEXT LINE
LISTDATA EQU      0                 DON'T LIST  EQU 0,LIST  EQU POS.
*
CORE     EQU      0                 BYTE DISPLACEMENT
SPIN     EQU      1
T9T      EQU      2
T7T      EQU      3
KEOB     EQU      X'26'             END OF BUFFER
FORSEC   EQU      0                 SET TO 1 FOR ELAP TIME IN MIN AND SEC
         PAGE
*        JOBR -   JOB CONTROL COMMAND PROCESSOR-
*        PERFORMS ENDJOB FUNCTIONS, PROCESSES JOB CC, AND OUTPUTS
*        TIME AND DATE.
*        ENTER WITH
*                 (R5) = JIT POINTER
*                 (R7) = CC PARAMETER LIST
*                 (SR1)= CUR CHAR
*        IF JOB CC IS IN ERROR, THE ABORT FLAG IS SET IN THE JIT
*
JOBR     EQU      %
         PUSH     SR4
         CSECT    0
         BOUND    8
TYMBUF   RES      4                 TIME DATA BUFFER
*
RESOURCE DATA     0
*
DATEON   DATA     0                 START DATE IN YY,DD(BIN.,JULIAN)
LGNTM    DATA     0                 LOGON TIME
USRNM    DO1      3                 USER NAME
         DATA     X'40404040'
EXTACC   DO1      6                 EXT. ACC. INFO.
         DATA     X'40404040'
         USECT    JOBR
*        *        *                 *
JOBR5    EQU      %
         PUSH     3,SR1             WILL BE WRITTEN OVER BY M:TIME
         M:TIME   TYMBUF,TUN        GET TIME IN BINARY AND EBCDIC
         STW,SR1  DATEON
         DO       FORSEC
         LB,R1    SR2               LOAD BIN HRS
         MI,R1    60*60             CVRT TO SECS
         STW,R1   LGNTM             SAVE
         SLS,SR2  8                 GET MINS TO BYTE 0
         LB,R1    SR2               GET MINS
         MI,R1    60
         AWM,R1   LGNTM             ADD TO CONVERTED HRS
         SLS,SR2  8                 SHIFT IN SECS
         LB,R1    SR2               GET THEM
         AWM,R1   LGNTM             ADD TO CONVERTED HRS & MINS
         FIN
         PULL     3,SR1
*
         DO       FORSEC=0
         LD,D1    TYMBUF            HRS. AND MINS. TO D1,D2
         LI,R0      2               CONVERT
         LI,R1      D1                     TO
         BAL,SR4    DECCNV                   BINARY.
         MI,R3      60              HOURS TO MINUTES.
         STW,R3   LGNTM             SAVE IN DATA AREA
         SLD,D1     24              POSITION
         LI,R0      2                       TO
         BAL,SR4    DECCNV                    CONVERT MINUTES.
         AWM,R3   LGNTM             SAVE TOTAL IN MINUTES
         FIN
*
         LD,D1    XES               INITIALIZE ACCT. #
         LCI      2                                    TO
         STM,D1   ACCN,R5                                XXXXXXXX.
         STM,D1   UNAME,R5          INIT. NAME TO XXXXXXXX.
         CI,SR1   KBLANK            CHECK IF CUR CHAR IS A BLANK
         BNE      JOBR100           ERROR IF NOT A BLANK
         BAL,SR4  GETACCN           GET ACCOUNT NUMBER
         BCS,8    JOBR200           BRANCH IF ILLEGAL ACCN
         LCI      K2                MOVE
         LM,R2    PLB,R7                ACCOUNT
         STM,R2   ACCN,R5                      NUMBER TO JIT
         LI,SR2   ','
         BAL,SR4  CHARSCAN          CHECK FOR COMMA
         BCS,8    JOBR120
         BAL,SR4  CHSTSCAN          GET NAME FIELD                      905
         BCS,8    JOBR130           BRANCH IF NOT A LEGAL NAME
         LW,R1    CSL,R7            (R1) = LENGTH OF NAME
         CI,R1    KC                CHECK IF NAME <= 12 CHAR
         BG       JOBR130           ERROR IF NOT
         LCI      K3                MOVE
         LM,R2    PLB,R7                USER'S
         STM,R2   USRNM               NAME TO DATA AREA
         STM,R2   UNAME,R5          **FOR TESTING ONLY**
*EXT. ACC. FIELD IN JOB COMMAND CARD
*  '(' AND ')' ARE ASSUMED TO BE DELIMITERS
*
*
         LI,R1    6                 CLEAR THE
         LW,R2    BLANK                 EXT. ACC. FIELD
         STW,R2   EXTACC-1,R1              TO
         BDR,R1   %-1                          BLANKS
*
         LI,R4    0                 PROB:ONLY NAME-ACC ON JOB CC
         BAL,SR4  SCCLF             FIX IT:DONT LIST ON OC(OR ANTHG)
*
         LI,SR2   '('               CHECK FOR PRESENCE OF EXT.ACC. FIELD
         BAL,SR4  CHARSCAN
         BCS,8    JOBR2
         BAL,SR4  CHSTSCAN          GET EXT. ACC. FIELD
         BCS,12   JOBREXT1          NOT LEGAL ACCT. FIELD
         LW,R1    CSL,R7            (R1)=LENGTH OF EXT.ACC. IN BYTES
         CI,R1    24                CHECK IF EXCEEDS MAX
         BLE      %+2
         LI,R1    24                IF>24,ONLY WANT 24
         LI,R3    BAPLB             EXTACC SHOULD NOW BE IN CC PAREMETER LIST
         LI,R4    0                 COUNT FOR WDS STORED
EXT1     LB,R2    *R7,R3            EXTRACT FROM CCPL
         STB,R2   EXTACC,R4         STORE INTO AREA FOR EXTACC
         AI,R4    1
         CW,R4    R1                SEE IF ALL MOVED
         BGE      %+3
         AI,R3    1
         B        EXT1
         LI,SR2   ')'               CHECK FOR RIGHT PAREN.
         BAL,SR4  CHARSCAN
         BCS,8    JOBREXT2          EXTACC NOT ENDED WITH RHT PAREN.
* I BELIEVE THE CODE I REMOVED HERE IS NOW UNUSED -- SMK
JOBR2    EQU        %
         LI,SR1   0                 SET CURR. CHAR. TO 0
         LI,SR3    0
*
* NOW THAT JOB COMMAND SYNTAX IS CORRECT, LOG USER ON.
*
*
         PUSH     5,R4              SR2 WILL BE USED TO HOLD ERRCODE
         BAL,11    LOGRT
         PULL     5,R4
*
         LI,SR4   X'8000'           IF WSN, WAS IT VALID
         CW,SR4   J:TELFLGS
         BANZ     JOBR300           NO, ERROR
*
         AI,SR3    0
         BGZ      JOBRACC           ERROR, DONT GEN. ACCNTG. RECORD
         BLZ      JOBRACC5          ERROR, GEN. ACCTNG. RECORD
* NOW THAT THE AUTHORIZATION CHECHS ARE MADE, EXIT TO THE INSTALLATION
* JOB INITIATION ACCOUNTING ROUTINE VIA SREF M:ACINIT (IF NONE,
* BECOMES NOP) VIA REGISTER 15.
* REGISTER 3 CONTAINS THE ADDRESS OF THE LOGON RECORD,REGISTER 5 THAT OF
* THE JIT. THE INSTALLATION CAN THAEN POLICE THE JOB OR MODIFY THE JIT.
***UPON RETURN, IF R3 SET TO ZERO, THE JOB WILL BE ABORTED***
***REGISTERS EXCEPT R3 ARE EXPECTED TO BE INTACT***
*
JOBOK    LI,15    M:ACINIT
         BEZ      %+4               NOT THERE
         BAL,15   *15
         CI,R3    0
         BE       JOBRINS
*
         DO       DEBUG
         NOP
         ELSE
         BAL,SR4  HERALD            PRINT ID AND ACCT. #
         FIN
         BAL,SR4  EOCCSCAN          SKIP TO END OF CONTROL COMMAND
         PULL     SR4
         AI,SR4   5
         B        *SR4
*
         PAGE
JOBR100  EQU      %
         LI,SR3   BLNKERCD          (SR3) = BLANK ERR CODE
         B        JOBR200
*
JOBR120  EQU      %
         LI,SR3   COMERCD           (SR3) = COMMA ERR CODE
         B        JOBR200
*
JOBR130  EQU      %
         LI,SR3   NAMERCD           (SR3) = NAME ERR CODE
         B        JOBR200
*
*
JOBR160  EQU      %
         LI,SR3   HEXERCD           (SR3) = HEX ERR CODE
         B        JOBR200
*
*
JOBREXT1 EQU      %
         LI,SR3   SYNTXER           (SR3)=EXT.ACC.SYNTAX CODE
         B        JOBR200
*
JOBREXT2 EQU      %
         LI,SR3   RPERCD            (SR3)=RIGHT PAREN. ERROR CODE
         B        JOBR200
*
JOBRINS  EQU      %
         LI,SR3   INSTARCD          WILL OUTPUT'ABORTED BY INSTALLATION
         B        JOBR200           ,SEE SOMEBODY'
JOBR200  EQU      %
         LW,R1    =X'08000000'      L/BIT 4
         STS,R1   J:ASSIGN          S/BIT 4 (FLUSH BIT) IN J:ASSIGN
         DO       DEBUG
         NOP
         ELSE
         BAL,SR4  HERALD            PRINT ID AND ACCT.  #
         FIN
         BAL,SR4  EOCCSCAN          *PRINT CC ON ABORT
         PULL     SR4
         B        *SR4
JOBR300  EQU      %
         LI,SR3   WSNERCD           (SR3) = WSN ERROR CODE
         B        JOBR200
JOBRACC  RES       0
* INDICATE TO LOGOFF THAT USER IS INVALID OR A/M COULDN'T BE CREATED
* AND NO ACCTNG. RECORD IS TO BE GENERATED. IF SR3>0 DONT GENERATE RECD.
* IF SR3<0 GENERATE ACCNTG. RECORD.
         LI,SR3   K40
         STB,SR3  J:JIT+UNAME
JOBRACC5 EQU      %
         LW,SR3   SR2               SR2 CONTAINS ERROR CODE FROM LOGRT
         B         JOBR200
         PAGE
*
*        GET PAGE PLIST
GPGE     GEN,8,24 8,1
*
*        FREE PAGE PLIST
FPGE     GEN,8,24 9,1
         PAGE
         BOUND    8
XES      TEXT     'XXXXXXXX'
W500     TEXTC    'LDEV'
SPACE    TEXTC    ' '
IDEQ     GEN,24,8 'ID=',0
1STWD    GEN,8,24 133,'   '
         PAGE
*
*  *  *       BLOCK  PRINT  SYS  ID  AND  JOB  ACCT.  #
*
HERALD   EQU      %
         PUSH     16,R0             SAVE REGS
         BAL,SR4  PRNTSID           PRINT SYSTEM ID
         LCI      K2
         LM,D1    ACCN,R5           LOAD ACCT.  #
         PUSH     2,D1              REMEMBER ACCOUNT #
         BAL,SR4  PRNTACNT          PRINT ACCOUNT #
         LI,R4    K2
         BAL,SR4  TOPPAGE           SKIP TO TOP OF FORM
         BAL,SR4  PRNTSID
         PULL     2,D1              GET ACCOUNT # BACK
         BAL,SR4  PRNTACNT          PRINT ACCOUNT AGAIN
         LI,R4    2
         BAL,SR4  TOPPAGE
         BAL,SR4  LISTDATE
         LI,R4    JOBCCLF
         BAL,SR4  SCCLF
         PULL     16,R0             RESTORE REGS
         B        *SR4
         PAGE
PRNTSID  EQU      %
         PUSH     SR4
         LW,D1    *R5               GET SYSTEM ID FROM JIT
         SLS,D1   16
         BAL,D4   HEXBCD
         SLD,D1   -24
         AW,D1    IDEQ              ADD IN 'ID=' FIELD
         LI,4     7                 SET # CHARS TO PRINT
PRNTSID1 BAL,SR4  BLKPRT
         PULL     SR4
         B        *SR4
PRNTACNT EQU      %
         PUSH     SR4
         LI,4     8                 SET # CHARS TO PRINT
         B        PRNTSID1
* * * * * * * * *
         LOCAL    L1,L2,L3,L4,L5
BLKPRT   EQU      %                 BLOCK PRINT ROUTINE
         PUSH     16,R0             SAVE ALL REGS
         CAL1,8   GPGE              GET A PAGE OF STORAGE
         LW,1     SR2               SR2 HAS ADDRESS
         LI,2     511
         LW,3     BLANK
         STW,3    *1,2              BLANK ALL OF STORAGE
         BDR,2    %-1
         LW,3     1STWD
         LI,SR1   HIGH
         STW,3    *1,2              INITIALIZE ALL BYTE COUNTS
         AI,2     BPERL/4
         BDR,SR1  %-2
         LI,R3    ORIGIN            SET STARTING BYTE DISP
L4       LB,SR1   D1                GET CHAR TO PRINT
         LI,SR2   ' '               LOAD ALTERNATE CHARACTER
         LI,2     TABSIZE
         CB,SR1   TAB,2             FIND PROPER CONVERSION TABLE
         BE       %+2
         BDR,2    %-2
         LW,D3    R3                REMEMBER STARTING WORD
         LW,2     TABADS,2          GET ADDRESS OF TABLE
         LI,7     1                 GET 1ST OFFSET
         LB,0     *2                GET # BYTES IN TABLE
         LI,SR3   ACTWID            GET # CHARS PER LINE
L2       LB,D4    *2,7              GET # CHARS THE SAME
         BEZ      CHANGE            CHANGE CHARACTER
L1       STB,SR1  *1,3              STORE A CHAR
         AI,3     1                 INCR DISP
         BDR,SR3  L3                LOOP FOR 1 LINE
         AI,3     LNTOLN            CHANGE TO NEXT LINE OF THIS CHAR
         LI,SR3   ACTWID            RE-INIT COUNTER
L3       BDR,D4   L1                LOOP ON # CHARS THE SAME
CHANGE   XW,SR1   SR2               CHANGE CHARACTERS
         AI,7     1
         BDR,R0   L2                GET NEXT CONTROL BYTE
         LW,R3    D3                RESET START
         AI,R3    WIDTH             SKIP TO NEXT CHAR
         SLD,D1   8                 SHIFT NEXT CHAR INTO PLACE
         BDR,4    L4                LOOP ON # CHARS TO PRINT
         LI,SR1   HIGH              # LINES TO PRINT
         LW,R2    R1                SET ADDRESS
L5       LI,D4    3                 BYTE DISP.
         LI,R4    K2                DEVICE
         BAL,SR4  LIST              PRINT IT
         AI,R2    BPERL/4           INCREMENT BUFFER
         BDR,SR1  L5
         LI,R2    6                 UPSPACE
         M:PRINT  (MESS,SPACE)             PRINTER
         BDR,R2   %-1                                8 LINES.
         CAL1,8   FPGE              RELEASE DATA BUFFER
         PULL     16,R0
         B        *SR4
         PAGE
*SCAN JOB CARD FOR POSSIBLE WORK STATION NUMBER
*PRIORITY MUST BE SPECIFIED OR WSN IS LOST
WSNSCAN  EQU      %
         PUSH     SR4               SAVE RETURN ADDRESS
         LI,R3    0                 PRESET WORK STATION
         STW,R3   J:DWSK            .NUMBER TO ZERO.
         STW,R3   J:DWSK+1
* WSN PRESENCE ASSUMED IF THREE COMMAS ENCOUNTERED.
         LI,D2    0                 ZERO OUT COMMA COUNT.
W000     EQU      %
         LI,SR1   0
         BAL,SR4  CHSTSCAN          GET FIELD.
         CI,SR1   ','               WAS DELIM. A COMMA.
         BNE      W005              NO
         AI,D2    1                 YES
W005     EQU      %
         CI,SR1   ' '               SCAN COMPL. IF BLANK.
         BE       W007
         CI,SR1   KEOB              SCAN COMPL. IF END OF BUFFER.
         BE       W007
         CI,SR1   '.'
         BNE      W000              NEITHER PRESENT
W007     EQU      %
         CI,D2    3                 WERE THREE COMMAS ENCOUNTERED.
         BL       W110              NO, HENCE NO WSN SPECIFIED.
         LW,R2    PLB,R7            YES, STORE WORK
         LW,R3    PLB+1,R7          .STATION
         STD,R2   J:DWSK            ..NUMBER.
W100     EQU      %
         LI,R3    X'4000'           SET 'LDEV
         STS,R3   J:TELFLGS         .CALLED' BIT ON.
         LD,R6    W500              CALL
         PULL     SR4
         B        EXITM             .LDEV.
W110     EQU      %
         LW,R1    Y00FF             TEST FOR REMOTE BATCH ID.
         LS,R1    JRBID,R5
         BNEZ     W100              .BATCH ID. -YES.
         PULL     SR4
W120     EQU      %
         LW,R1    Y008              REREAD JOB CARD
         STS,R1   CCBEF,R5          SET CC BUF FULL FLAG
         LI,R2    0
         LI,R3    X'100'            SET FLAG TO 'PRINT'
         STS,R2   CCLFLAGS,R5
         BAL,SR4  CCREAD
         LI,SR4   CCI50             SET JOBR EXIT
         B        JOBR
****
         DO       LISTDATA=0
         FIN
      DO  LISTDATA>0
         PAGE
      FIN
*        BLOCK PRINT DATA
* * * * * * *
A        DATA,1   21,0,1,11,1,15,9,4,9,4,9,30,9,4,9,4,9,4,9,4,9,2
         BOUND    4
B        DATA,1   19,12,1,15,9,4,9,4,9,14,1,12,1,2,9,4,9,4,9,27
         BOUND    4
C        DATA,1   23,0,1,11,1,15,9,4,11,2,11,2,11,2,11,2,11,2,11,2,9,15;
                  ,1,11
         BOUND    4
D        DATA,1   23,11,2,12,1,2,9,4,9,4,9,4,9,4,9,4,9,4,9,4,9,14,1,11
         BOUND    4
E        DATA,1   17,28,11,2,11,2,11,8,5,8,5,2,11,2,11,2,11,26
         BOUND    4
F        DATA,1   19,28,11,2,11,2,11,8,5,8,5,2,11,2,11,2,11,2,11,2
         BOUND    4
G        DATA,1   27,0,1,11,1,15,9,4,9,4,11,2,11,2,6,4,1,2,6,7,9,;
                  4,8,16,1,9,1,2
         BOUND    4
H        DATA,1   21,2,9,4,9,4,9,4,9,4,9,30,9,4,9,4,9,4,9,4,9,2
         BOUND    4
I        DATA,1   25,0,2,8,5,8,8,2,11,2,11,2,11,2,11,2,11,2,11,2,11,;
                  2,8,8,5,8
         BOUND    4
J        DATA,1   23,0,11,2,11,2,11,2,11,2,11,2,11,2,11,2,11,4,9,4,9,;
                  15,1,11
         BOUND    4
K        DATA,1   41,2,9,4,8,2,1,2,6,2,3,2,4,2,5,2,2,2,7,4,9,4,9,2,2,2,;
                  7,2,4,2,5,2,6,2,3,2,8,2,1,2,9,2
         BOUND    4
L        DATA,1   21,2,11,2,11,2,11,2,11,2,11,2,11,2,11,2,11,2,11,2,9,28
         BOUND    4
M        DATA,1   37,2,9,5,7,7,5,6,1,2,3,2,1,4,2,2,1,2,2,4,3,3,3,4,4,1,;
                  4,4,9,4,9,4,9,4,9,4,9,2
         BOUND    4
N        DATA,1   37,2,9,5,8,6,7,4,1,2,6,4,2,2,5,4,3,2,4,4,4,2,3,4,5,2,;
                  2,4,6,2,1,4,7,6,8,5,9,2
         BOUND    4
O        DATA,1   23,0,1,11,1,15,9,4,9,4,9,4,9,4,9,4,9,4,9,4,9,15,1,11
         BOUND    4
P        DATA,1   19,12,1,15,9,4,9,4,9,27,1,2,11,2,11,2,11,2,11,2
         BOUND    4
Q        DATA,1   27,0,1,11,1,15,9,4,9,4,9,4,9,4,9,4,9,4,4,2,3,4,5,2,2,;
                  15,1,11
         BOUND    4
R        DATA,1   29,12,1,15,9,4,9,4,9,27,1,2,6,2,3,2,7,2,2,2,8,2,1,2,8;
                  ,2,1,2,8,2
         BOUND    4
S        DATA,1   21,0,1,11,1,15,9,4,11,2,11,12,2,12,11,2,11,4,9,15,1,11
         BOUND    4
T        DATA,1   23,12,1,12,6,2,11,2,11,2,11,2,11,2,11,2,11,2,11,2,11,;
                  2,11,2
         BOUND    4
U        DATA,1   23,2,9,4,9,4,9,4,9,4,9,4,9,4,9,4,9,4,9,4,9,15,1,11
         BOUND    4
V        DATA,1   41,2,9,4,9,2,1,2,7,2,2,2,7,2,3,2,5,2,4,2,5,2,5,2,3,2,;
                  6,2,3,2,7,2,1,2,8,2,1,2,9,3,11,1
         BOUND    4
W        DATA,1   35,2,9,4,9,4,9,4,9,4,9,4,9,4,3,3,3,4,2,2,1,2,2,4,1,2,;
                3,2,1,6,5,7,7,5,9,2
         BOUND    4
X        DATA,1   43,2,9,2,1,2,7,2,3,2,5,2,5,2,3,2,7,2,1,2,9,3,10,3,9,;
                  2,1,2,7,2,3,2,5,2,5,2,3,2,7,2,1,2,9,2
         BOUND    4
Y        DATA,1   31,2,8,2,2,2,6,2,4,2,4,2,6,2,2,2,8,4,10,2,11,2,11,2,;
                  11,2,11,2,11,2,11,2
         BOUND    4
Z        DATA,1   23,25,1,2,7,2,10,2,10,2,10,2,10,2,10,2,10,2,10,2,7,2,;
                  1,25
         BOUND    4
#0       DATA,1   31,0,3,7,5,9,3,2,7,2,1,2,9,4,9,4,9,4,9,4,9,4,9,2,1,2,;
                  7,2,3,9,5,7
         BOUND    4
#1       DATA,1   25,0,5,2,10,3,9,4,11,2,11,2,11,2,11,2,11,2,11,2,11,2,;
                  11,2,11,2
         BOUND    4
#2       DATA,1   23,0,1,11,1,15,9,2,11,2,11,2,10,2,9,2,9,2,9,2,9,2,9,26
         BOUND    4
#3       DATA,1   23,0,1,11,1,15,9,2,11,2,11,2,8,4,9,4,12,2,11,2,11,15,;
                  1,11
         BOUND    4
#4       DATA,1   31,0,7,2,10,3,9,4,8,2,1,2,7,2,2,2,6,2,3,2,5,2,4,2,4,;
                  26,7,2,11,2,11,2
         BOUND    4
#5       DATA,1   17,28,11,2,11,2,11,12,1,13,11,2,11,4,9,15,1,11
         BOUND    4
#6       DATA,1   19,0,1,27,11,2,11,2,11,12,1,15,9,4,9,4,9,15,1,11
         BOUND    4
#7       DATA,1   23,25,1,2,7,2,10,2,10,2,10,2,11,2,10,2,11,2,10,2,11,2;
                  ,11,2
         BOUND    4
#8       DATA,1   25,0,1,11,1,15,9,4,9,4,9,2,1,11,2,11,1,2,9,4,9,4,9,15;
                  ,1,11
         BOUND    4
#9       DATA,1   19,0,1,11,1,15,9,4,9,4,9,15,1,12,11,2,11,2,11,27
         BOUND    4
COLON    DATA,1   13,0,18,3,10,3,10,3,62,3,10,3,10,3
         BOUND    4
MONEY    DATA,1   45,0,1,11,1,15,2,2,1,2,2,4,2,2,1,2,4,2,2,2,1,2,4,12,2;
                 ,12,4,2,1,2,2,2,4,2,1,2,2,4,2,2,1,2,2,15,1,11
         BOUND    4
EQUAL    DATA,1    5,0,39,26,26,26
         BOUND    4
ULINE    DATA,1   3,0,130,26
         BOUND    4
ASTERISK DATA,1   41,2,9,2,1,2,7,2,3,2,5,2,5,2,3,2,7,2,1,2,4,26,4,2,1,;
                  2,7,2,3,2,5,2,5,2,3,2,7,2,1,2,9,2
         BOUND    4
NUMBER   DATA,1   33,0,9,2,1,1,8,2,1,2,7,2,1,2,1,26,4,2,1,2,7,2,1,2,5,;
                  28,1,2,8,1,1,2,10,2
         BOUND    4
AT       DATA,1   44,0,3,7,5,9,3,2,7,2,1,2,2,5,2,4,1,7,1,4,1,2,3,2,1,4,;
                  1,2,3,4,1,2,1,8,2,2,2,6,4,2,12,9,5,7,3
         BOUND    4
DASH     DATA,1   3,0,65,26
         BOUND    4
TAB      TEXT     'ZYXWVUTSRQPONMLKJHGFECBA9876543210:%ID= *#@-'
TABSIZE  EQU      (4*(ABSVAL(%)-ABSVAL(TAB)))-4
TABADS   DATA     Z,Y,X,W,V,U,T,S,R,Q,P,O,N,M,L,K,J,H,G,F,E,C,B,A,#9,#8
         DATA     #7,#6,#5,#4,#3,#2,#1,#0,COLON,MONEY,I,D,EQUAL,BLKS
         DATA     ULINE,ASTERISK,NUMBER,AT,DASH
BLKS     DATA     0
         END

