         SYSTEM   SIG7FDP
*
*        ADDEND ANALYSIS ROUTINE
*        BAL,11   SUMS
*        USES STRINGS PRDE,PRADD,PRSUM,PNEXT
*        USES KB
*
         REF      PRDE,PRADD,PRSUM,PNEXT
         REF      PDBX,DIAG
         DEF      SUMS
SUMS     STW,11   SUMXIT
         LI,3     PRADD
LADD     LW,3     *3
         LS,3     AMASK
         BCR,3    *SUMXIT
         LI,15    0
         STW,15   MATCH01
         STW,15   OKADFG            SET FLAG TO SAY NO MATCH
LSUM     LI,1     PRSUM
         LI,0     0                 FLIP FLOP
         B        LSRC
SRCDET   LI,1     PRDE
         LI,0     1
LSRC     LW,1     *1
         LS,1     AMASK
         BCS,3    SRCH
         CI,0     0
         BCR,3    SRCDET
OKADND   LW,14    OKADFG            SEE THAT ADDEND HAS
         BCS,3    LADD              BEEN LINKED TO SOURCE
ERRR     LW,15    -3,3              GET LINE NUMBER FROM ADDEND
         STW,15   PDBX              SAVE FOR DIAG
         LI,1     196
         BAL,11   DIAG
         B        LADD
SRCH     LI,2     1                 SEARCH FOR REF TRAILER
         LW,14    -5,3              MATCH ADDEND BASE & OFFSET
         LB,15    *1,2              GRP IND FLAG
         CI,15    X'1F'
         BCR,2    TRY
         LI,4     -22               DESCRIPTOR IS GRP IND
         LB,13    *1,4              LOAD TRAILER TYPE
         AI,4     1
         CI,13    X'C'
         BCR,3    TBOFST
         LB,15    *1,4              NUMBER OF HALF WDS
         S,15     1                 DOUBLE
         SW,4     15
TBOFST   AI,4     -4
         S,4      X'7F'             GET HALF WORD OFFSET
         LH,15    *1,4
         LI,2     1
         STH,15   MLT,2
         AI,4     -1
         LH,15    *1,4
         STH,15   MLT               STORE HALFS OF MATCH WORD
         CW,14    MLT
         BCS,3    LSRC              NO MATCH
         AI,4     3
         CI,13    X'C'
         BCR,3    MMATCH
         AI,15    -16
         B        MMATCH
TRY      CW,14    -5,1
         BCS,3    LSRC              NO MATCH
         LI,4     -7                POSSIBLE MATCH
MMATCH   LI,2     -4
         LB,15    *1,2
         BAL,11   MATCH
         BAL,11   LINK              MATCH
         B        LSRC
*
*        SUBROUTINE TO COMPARE TRAILERS OF TWO DESCRIPTORS
*                BY HALF WORD
*                R3 IS WRD BASE ADDRESS OF ADDEND DESCRIPTOR
*                R1 IS WRD BASE ADDRESS OF CANDIDATE DESCRIPTOR
*                R4 IS HALF WORD OFFSET OF TYPE & SIZE OF
*                       FIRST DATA TRAILER OF CANDIDATE
*                R15 IS 16X NUMBER OF DATA REF TRAILERS
*                       OF CANDIDATE + NUMBER OF SUBSCRIPTS
*                BAL,11 MATCH
*                MATCH RETURN
*                NO MATCH RETURN
*
MATCH    LI,2     -4
         CB,15    *3,2
         BCS,3    NOMTCH            NO MATCH
         LI,2     -7                HALF WORD OFFSET OF ADDEND
         AI,15    -16
NWTRLR   LH,13    *1,2              LOAD NUMB OF HALF WORDS IN TRAILER
         LS,13    B3MASK
QMATCH   LH,14    *1,2
         CH,14    *3,4
         BCS,3    NOMTCH            NO MATCH
         AI,2     -1
         AI,4     -1
         AI,13    -1
         BCS,2    QMATCH
         AI,15    -16               NUMB OF TRAILERS
         BCR,1    NWTRLR
         LI,2     -8                TEST SUM UPON OF ADDEND
         LB,15    *3,2
         BCR,3    *11               IF ZERO - MATCHES
         LI,13    X'1FFFF'          LINK TO 01
         LS,13    -1,1
         CB,15    *13,2             COMPARE WITH REP GRP NO OF 01 DSCPTR
         BCR,3    *11               MATCHES
NOMTCH   AI,11    1
         B        *11
LINK     LI,14    1
         AWM,14   OKADFG
         LI,13    X'1FFFF'          GET 01 OF SOURCE
         LS,13    -1,1
         CW,13    MATCH01
         BCR,3    *11               SKIP
         STW,13   MATCH01           SAVE 01
         CW,14    OKADFG
         BCR,3    ONEMM             ONLY ONE MATCH
         STW,3    SAV3
         BAL,12   COPY              COPY ADDEND DESCRIPTOR
         BAL,14   ONEM
         LW,3     SAV3
         B        *11
ONEMM    BAL,14   ONEM
         B        *11
ONEM     LI,15    X'1FFFF'          MATCH
         LS,15    -2,1              TEST LINK ADDR OF SUM
         LI,13    X'1FFFF'
         LW,12    3
         STS,12   -2,1
         LW,12    15
         STS,12   -2,3
         B        *14
*
*        SUBROUTINE TO COPY ADDEND DESCRIPTOR
*        R3 IS LOC OF ADDEND,OLD    -OUT EXIT NEW
*        PNEXT IS FIRST AVAILABLE SPACE
*        BAL,12 COPY
*
COPY     LW,4     PNEXT
         LI,15    4
         LI,2     -4
         LB,14    *3,2              NUMBER OF TRAILERS
CPY      LW,13    0,3
         STW,13   0,4
         AI,3     -1
         AI,4     -1
         AI,15    -1
         BCS,3    CPY
         AI,14    -16
         S,3      1
         S,4      1
NWCPY    LH,9     0,3
         LS,9     B3MASK
QCOPY    LH,13    0,3
         STH,13   0,4
         AI,3     -1
         AI,4     -1
         AI,9     -1
         BCS,2    QCOPY
         AI,14    -16
         BCR,1    NWCPY
         LW,3     PNEXT
         LI,15    X'1FFFF'          CLEAR LINK
         LI,14    0
         STS,14   -2,3
         AI,4     -1
         S,4      X'7F'
         STW,4    PNEXT
         B        *12
SUMXIT   DATA     0
MLT      DATA,2   0
MRT      DATA,2   0
OKADFG   DATA     0
SAV3     DATA     0
B3MASK   DATA     X'000000FF'
AMASK    DATA     X'0001FFFF'
MATCH01  DATA     0
         END
