*DECK CTBUILD 
USETEXT DNTEXT
USETEXT RPTEXT
PROC CTBUILD; 
          BEGIN 
          ITEM
                 F1CNTRLAUXIN I,
                 LCNTRLAUXIND I,
                 CIDNATPTR    I,
                 $TEMP$       I,
                 AUXINDEX     I;
  
  
          XREF   PROC         INTERCEPT;
          XREF   PROC         RWSET    ;
          XREF   PROC         RWSET1   ;
          XREF   PROC         GETNEXT  ;
          XREF   FUNC         RP$AUXPTR;
          XREF   FUNC         RWGET    ;
          XREF   FUNC         RWGET1   ;
          XREF PROC COPYD4; 
  
          DEF    GET          #GETFIELD#; 
          DEF    SET          #SETFIELD#; 
          DEF    GETQ         #GETQUICK#; 
  
            CONTROL NOLIST; 
*CALL RPCOMM
*CALL AUXT1 
*CALL AUXTVALS
*CALL DNATVALS
*CALL GETSET
*CALL TABLNAMES 
  
  
          CONTROL EJECT;
  
  # * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *#
  # * #   EPTRACE("CTBUILD")                                       # * #
  # * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *#
  
  
          STRTCURCONTB = NEXTCNTRLPTR;
          F1CNTRLAUXIN =  2 + RP$AUXPTR(DNATPOINTER); 
          IF RWGET(NUMCONTRLIDS,F1CNTRLAUXIN) EQ 0
          THEN
              GOTO  MAKEEOCDELIM; 
          #BUILD CONTROLSLINK ENTRIES#
  
          LCNTRLAUXIND = RWGET(NUMCONTRLIDS,F1CNTRLAUXIN) -1  + 
                             F1CNTRLAUXIN;
          CURRCIDTPTR = CIDTPTRCURRD; 
          FOR AUXINDEX =  F1CNTRLAUXIN   STEP 1 UNTIL 
              LCNTRLAUXIND DO 
              BEGIN 
              GETNEXT(CONTROLSLINK);
              RWSET1(CTDATA  #CURRCNTRLPTR#,0); 
              RWSET1(CTDATA1  #CURRCNTRLPTR#,0);
              RWSET1(CTDATA2  #CURRCNTRLPTR#,0);
              RWSET1(CTDATA3  #CURRCNTRLPTR#,0);
              #0-OUT NEW ENTRY# 
              RWSET1(GEN$DUMCFBIT  #CURRCNTRLPTR#,99);
              CIDNATPTR = RWGET(CONTIDNATPTR,AUXINDEX); 
              RWSET1(CID$DNAT  #CURRCNTRLPTR#,CIDNATPTR); 
              #IF CONTROL ID = FINAL  SET C-ID-PREV-VALU-DNAT = 0#
  
              IF CIDNATPTR EQ 0 
              THEN
                  RWSET1(CID$PREVALUE  #CURRCNTRLPTR#,0); 
              ELSE
                  #ELSE CREATE NEW PREVIOUS-VALUE-BUCKET# 
                  BEGIN 
                  LASTDNATINDX = LASTDNATINDX + 1;
                  COPYD4 (CIDNATPTR,LASTDNATINDX);
  
                  #ALLOCATE SPACE IN RDMSEC.  START ON WORD # 
                  #BOUNDARY IN CASE THE CONTROL DID.        # 
  
                  #BUILD AN AUX ENTRY ONTO THE DNAT OF THE CURRENT #
                  #RD CONTAINING DNAT AND PREVIOUS VALUE DNAT OF THE #
                  #CONTROL ITEM. #
  
                  LASTAUXENTRY = LASTAUXENTRY + 1;
                  SET(AX$TTYPE,AUX$,LASTAUXENTRY,AUXCDI); 
                  $TEMP$ = RWGET1(CIDTCONTRLID  #CURRCIDTPTR#); 
                  SET(AX$CDIDNAT,AUX$,LASTAUXENTRY,$TEMP$); 
                  SET(AX$PVCDIDNAT,AUX$,LASTAUXENTRY,LASTDNATINDX); 
                  $TEMP$ = GETQ(DN$AUXREF,DNAT$,DNATPOINTER); 
                  SET(AX$TNEXTPTR,AUX$,LASTAUXENTRY,$TEMP$);
                  SET(DN$AUXREF,DNAT$,DNATPOINTER,LASTAUXENTRY);
  
                  SET(DN$LEVEL,DNAT$,LASTDNATINDX,01);
                  SET(DN$MAJMSEC,DNAT$,LASTDNATINDX,RDMSEC);
                  RDLBYTOFFSET = ((RDLBYTOFFSET + 9 ) / 10 ) * 10;
                  SET(DN$LONGOFF,DNAT$,LASTDNATINDX,RDLBYTOFFSET);
                  RDLBYTOFFSET = RDLBYTOFFSET + GETQ(DN$ITMLEN, 
                                 DNAT$,LASTDNATINDX); 
  
          SET(DN$SYNC,DNAT$,LASTDNATINDX,0);
          SET(DN$SYNCRGHT,DNAT$,LASTDNATINDX,0);
                  RWSET1(CID$PREVALUE  #CURRCNTRLPTR#,LASTDNATINDX);
                  #PUT PREVIOUS-VALUE-DNAT INTO CIDTLINK ALSO#
                  RWSET1(CIDTPREVALUE  #CURRCIDTPTR#,LASTDNATINDX); 
                  CURRCIDTPTR = RWGET1(CIDTLINK  #CURRCIDTPTR#);
                  END 
              END 
MAKEEOCDELIM: 
          GETNEXT(CONTROLSLINK);
          RWSET1(EOCDELIMITER  #CURRCNTRLPTR#,1); 
  
  # * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *#
  # * #   EXTRACE("CTBUILD")                                       # * #
  # * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *#
  
          END #CTBUILD# 
          TERM
