         SYSTEM   SIG7FDP
*
*        GRPIND
*        SUBROUTINE TO GENERATE MOVES FOR GROUP INDICATE ITEMS
*        FOR THE FIRST PRINTING AFTER A NEW PAGE OR CONTROL BREAK
*           ALSO GENERATES MOVES TO CLEAR THE SAME FIELDS
*               LINKAGE BAL,11 GRPIND
*               P01DE POINTS TO THE DE SOURCE STRING
*                      WHICH MAY CONTAIN GRP IND ITEMS
*               P01GRV POINTS TO THE GRP IND VALUE STRING
*                      WHICH ONLY CONTAINS GRP IND ITEMS
*               KB     CONTAINS THE LAST USED PROC REF NUMBER
*
*
         REF      P01DE,P01GRV,PC01,WRRGF
         REF      PDBK
         DEF      GRPIND,CLUSTR,OBJCL,TAG,JUMP,MOVCL,SUBJCT
GRPIND   STW,11   GIEXIT
         LI,1     -1                SET PHASE INDICATOR TO MOVE DE SOURC
NXTPHS   AI,1     1
         B        PHAS,1
PHAS     B        IMOVE             INITIATE MOVES AND POINT TO DE SOURC
         B        VMOVE             POINT TO GRP IND VALUES
         B        ICLEAR            INITIATE CLEARS AND POINT TO DE SOUR
         B        VMOVE             POINT TO GRP IND VALUES
         LI,4     'J'               OUTPUT JUMP CLUSTER TO C:RJ
         BAL,12   JUMP
         B        *GIEXIT           EXIT
VMOVE    LI,3     P01GRV            POINT TO GRP IND VALUE STRING
         B        TRYNXT
ICLEAR   LI,4     'A'               OUTPUT JUMP CLUSTER TO C:RA
         BAL,12   JUMP
         BAL,12   TAG               GENERATE TAG FOR CLEARS
         LI,2     -7
         STH,10   *PC01,2
         B        DESORC
JUMP     LI,2     9
         STB,4    CCRA,2
         LI,4     BA(CCRA)
         BAL,11   WRRGF
         B        *12
TAG      LI,2     1
         LH,10    PDBK,2               GET LAST PROC REF NUMBER
         AI,10    1
         STH,10   PDBK,2
         LI,2     3
         STH,10   TAGCLS,2          OUTPUT PROC REF LABEL CLUSTER
         LI,4     BA(TAGCLS)
         BAL,11   WRRGF
         B        *12               RETURN WITH PR REF NO IN 10
IMOVE    BAL,12   TAG               GENERATE TAG FOR MOVES
         LI,2     -8                POINT TO CURRENT 01
         STH,10   *PC01,2           STORE REF NO FOR MOVES
*
DESORC   LI,3     P01DE             POINT TO DE SOURCE STRING
TRYNXT   LW,3     *3                TEST IF LAST DESCRIPTOR IN STRING
         LS,3     AMASK
         BCR,3    NXTPHS            BRANCH IF END OF STRING
*                                   OTHERWISE R3 CONTAINS ADDR OF DESCRI
         LW,5     GMASK
         LS,5     *3
         BCR,3    TRYNXT            IF NOT GRP IND TRY NXT DESCRIPTOR
*        AT THIS POINT R1 INDICATES PHASE, R3 POINTS TO DESCRIPTOR
*
*        GENERATE SUBJECT CLUSTER
         CI,1     2
         BCS,1    SMOVES
SBLANK   LI,4     BA(MFBL)
         BAL,11   WRRGF
         B        OBJKL
SMOVES   LI,4     X'5E'
         LI,9     -9
         BAL,11   SUBJCT
OBJKL    LW,6     3
         LI,7     MOVCL             OBJECT OF MOVE - CLUSTER
         LW,5     OBJMV
         BAL,11   OBJCL
         LI,4     BA(MOVCL)
         BAL,11   WRRGF
         B        TRYNXT
*
*        SUBROUTINE TO MOVE FROM A TRAILER STORED BACKWARDS
*              BY HALF WORD TO CLUSTER STORED FORWARD.
*              R15 IS H BYTE
*              R4 IS CONTROL BYTE
*              R6  IS HALF WORD LOC OF TRAILER TYPE & SIZE
*              R7  IS HALF WORD LOC OF CLUSTER
*              BAL,11 CLUSTR
CLUSTR   LH,9     0,6               LOAD TYPE AND NUMBER HALF WDS
         LI,5     2
         LB,10    9,5               TYPE
         LI,5     3
         LB,8     9,5               NUMBER HALF WDS
         LI,9     0
         STH,9    1,7               CLEAR FIELD E
         S,7      1                 GET BYTE ADDR
         CI,10    3
         BCS,2    DTA               IF DATA CLUSTER
         LI,12    2                 IF INTEGER CLUSTER
         AI,10    X'D0'
         B        MVC
DTA      LI,12    3
         AI,10    X'84'
MVC      AW,8     12
         STB,8    0,7               STORE HALF WD COUNT
         AI,7     1
         STB,4    0,7
         AI,7     1
         STB,10   0,7               STORE DATA REF TYPE
         AI,7     1
         STB,15   0,7
         S,7      X'7F'
         AW,7     8
         AI,7     -2
         STH,8    0,7               STORE HALF WD COUNT
         SW,7     8
         SW,8     12
         AW,7     12
         AI,8     -1
MVH      AI,7     1                 MOVE HALF WORD DATA
         AI,6     -1
         LH,9     0,6
         STH,9    0,7
         AI,8     -1
         BCS,2    MVH
         B        *11
*
*        SUBROUTINE TO MOVE OBJECT DATA FROM DESCRIPTOR TO CLUSTER
*              R6 IS WORD ADDRESS OF DESCRIPTOR
*              R7 IS WORD ADDRESS OF CLUSTER
*              R5 IS BFH FIELDS
*              BAL,11 OBJCL
*
OBJCL    LB,9     *6                COLUMN NO
         AW,9     -4,6              BASE,OFFSET
         STW,9    2,7
         STW,5    0,7
         LW,9     -5,6              DDB, SIZE
         STW,9    3,7
         LI,5     16
         LI,12    0
         STW,12   4,7               CLEAR
         STW,12   5,7               CLEAR
         LW,5     IMASK
         LS,5     *6                CLASS
         S,5      X'77'
         CI,1     2
         BCS,1    CLAS
         LW,5     ANCLAS
CLAS     OR,5     RDATA
         LI,12    9
         STW,5    1,7
         CI,1     2
         BCR,1    NOED              IF EQUAL OR GREATER
         LI,5     -22
         LB,9     *6,5              TYPE - TEST FOR EDITING FIELD
         CI,9     6
         BCS,3    NOED              NO EDITING
         LI,5     -21               HALF WDS EDITING PLUS ONE
         LB,8     *6,5
         AI,8     -1
         AW,12    8
         S,6      1
         LW,5     7
         S,5      1
         AI,5     8
MVE      LH,9     -6,6              MOVE EDIT FIELD
         STH,9    0,5
         AI,6     -1
         AI,5     1
         AI,8     -1
         BCS,2    MVE
NOED     STB,12   *7
         S,7      1
         AW,7     12
         AI,7     -1
         STH,12   0,7
         B        *11
*        OUTPUT CLUSTERS FOR SUBJECT
*        R3 = LOC OF DESCRIPTOR
*        R4 = CONTROL BYTE
*        R9 = -5 FOR ADDENDS OR -9 FOR SOURCE DE GRPIND
SUBJCT   STW,11   SBJXIT
         STW,4    CONTRL
         LW,2     3
         AI,2     -1
         LB,14    *2                NUMBER OF TRAILERS
         S,14     X'17C'            NUMB OF TRAILERS
         S,15     X'64'
         S,2      1
         AW,2     9
         LI,4     2
TRLR     LH,9     0,2
         LB,9     9,4
         CI,9     X'C'              IS IT DATA NAME REF
         BCR,3    SUBJJ
         LH,9     0,2
         LS,9     NMASK             COUNT
         SW,2     9                 POINT TO NEXT TRAILER
         AI,14    -1
         BCS,2    TRLR              TRY NEXT  TRAILER
         DATA     0
*      COMPOSE SUBJ CLUSTER
*
SUBJJ    S,15     1                 DOUBLE
         S,15     4
         LW,4     CONTRL
         AI,4     X'80'
TRLRS    LW,6     2                 MOVE TO SUBJ CLUSTER
         LI,7     HA(MOVCL)
         BAL,11   CLUSTR
         LI,4     BA(MOVCL)
         BAL,11   WRRGF
         AI,14    -1
         BCR,2    *SBJXIT
         LH,7     0,2
         LS,7     NMASK
         SW,2     7
         LW,4     CONTRL
         LI,15    0
         B        TRLRS
GIEXIT   DATA     0
TAGCLS   DATA     X'08F39996'       PROC REF TAG CLUSTER
         DATA     X'00000000'       TAG NUMBER IN RIGHT HALF WORD
         DATA     0
         DATA     X'00000008'
AMASK    DATA     X'0001FFFF'
GMASK    DATA     X'00E00000'
NMASK    DATA     X'000000FF'
IMASK    DATA     X'001E0000'
CCRA     DATA     X'06DBA480'       GO TO EXTERNAL
         DATA,1   X'05'
         DATA,4   'C:RR'
         DATA,1   'A'
         DATA,2   X'0006'
MOVCL    DATA     0                 MOVE SUBJECT CLUSTER
         DATA     0
         DATA     0
         DATA     0
         DATA     0
         DATA     0
         DATA     0
         DATA     0
         DATA     0
         DATA     0
         DATA     0
         DATA     0
         DATA     0
         DATA     0
         DATA     X'0000000C'
MFBL     DATA     X'03DE3100'       MOVE BLANKS SUBJ CLUSTER
         DATA     X'00030000'
ANCLAS   DATA     X'00000100'
RDATA    DATA     X'0000B000'
OBJMV    DATA     X'005E9081'
SBJXIT   DATA     0
CONTRL   DATA     0
         END
