*DECK CBCLNUP 
USETEXT TSBP2CM 
      PROC CBCLNUP; 
      BEGIN 
 #
* *   CBCLNUP 
* *   C O GIMBER                                 10.16.74 
* 
* DC  PURPOSE 
* 
*     THIS ROUTINE ADDS THE DBP TABLE TO THE SUBSCHEMA AND GENERATES
*     THE OMIT TABLE IN THE SUBSCHEMA.
* 
 #
  
# EXTERNAL REFERENCES#
      XREF PROC CBCKBUF;     #BUFFER MANAGER ROUTINE# 
      XREF PROC DDLPRNT;
      XREF ITEM FIRSTWORD;             # CONTAINS THE WORD ADDRESS OF  #
                                       # REALM LIST.                   #
      XREF ITEM SBSCHMA;               # FIRST WORD ADDRESS OF THE     #
                                       # SUB-SCHEMA DURING THE FIRST   #
                                       # PASS.                         #
      XREF ITEM RELFLAG B;             # TRUE = RELATION DIVISION SPEC.#
# LOCAL DECLARATIONS# 
      ITEM INDEX2;           #GENERAL INDEX#
      ITEM OMINDEX;          #INDEX INTO OMIT TABLE#
  
      CONTROL EJECT;
      AREAOFFSET = SBCWFRSTAREA[0]; # GET THE WORD ADDRESS OF THE 1ST  #
              # REALM IN THE SUB-SCHEMA.                               #
      FOR INDEX = 1 STEP 1 UNTIL SBCWNUMAREAS[0] DO # SCAN THRU THE    #
             # REALM ENTRIES CHECKING IF RECORD MAPING IS NEEDED.      #
        BEGIN 
          KEYMESSAGE = " "; 
          IF SBARNOMAPIND[AREAOFFSET] THEN
            BEGIN 
            C<0,68>KEYMESSAGE = "               *****       RECORD MAPPI
NG IS NOT NEEDED FOR REALM -";
            C<70,SBARLENGCHAR[AREAOFFSET]>KEYMESSAGE =
          SBARNAME30[AREAOFFSET+SBARNAMEPTR[AREAOFFSET]]; 
            DDLPRNT(KEYMESSAGE,100);
            END 
           ELSE 
            BEGIN 
            C<0,64>KEYMESSAGE = "               *****       RECORD MAPPI
NG IS NEEDED FOR REALM -";
            C<66,SBARLENGCHAR[AREAOFFSET]>KEYMESSAGE =
          SBARNAME30[AREAOFFSET+SBARNAMEPTR[AREAOFFSET]]; 
            DDLPRNT(KEYMESSAGE,100);
            END 
          AREAOFFSET = SBARNEXT[AREAOFFSET];
        END 
# ADD THE DBP TABLE TO THE SUBSCHEMA# 
      IF DBPLSTL GQ 0 THEN
        BEGIN 
        CBCKBUF(P<SUBSCHEMA>,SBCWSBLENG[0]+DBPLSTL+2);
        INDEX2 = SBCWSBLENG[0]+1; 
        FOR INDEX=DBPLSTL STEP -1 UNTIL 0 DO
          SBWORD[INDEX2+INDEX] = DBPWORD[INDEX];
        SBWORD[SBCWSBLENG[0]] = 0;
        SBHEADER[SBCWSBLENG[0]] = O"30";
        SBWC[SBCWSBLENG[0]] = DBPLSTL+1;
        CBCKBUF(P<DBPLST>,0); 
        SBCWDBPLENG[0] = DBPLSTL+1; 
        SBCWDBPADDR[0] = SBCWSBLENG[0]; 
        SBCWSBLENG[0] = SBCWSBLENG[0]+DBPLSTL+2;
        END 
      ELSE
        BEGIN 
        SBCWDBPLENG[0] = 0; 
        SBCWDBPADDR[0] = 0; 
        END 
# UPDATE THE NO-MAP AND NO-LOG FLAGS IN SBSCH CONTROL WORDS#
      IF NOT OM$LOGGING THEN
        SBCWNOLOG[0] = TRUE;
      IF NOT
      (OM$NOTIDENT
      OR OM$ITMDBP
      OR OM$CKDBP 
      OR OM$OCCRDBI)
      THEN
        SBCWNOMAP[0] = TRUE;
      FIRSTWORD = LOC(REALMLST); # STORE THE WORD ADDRESS OF THE REALM #
                                 # LIST. THE FIRST ARRAY IN CORE.      #
      SBSCHMA = LOC(SUBSCHEMA); # RE-ADJUST ADDRESS OF SUB-SCHEMA IN   #
                                # CORE TO REFLECT PASS2 PROCESSING.    #
      RETURN; 
      END 
      TERM; 
