*DECK PPEND 
USETEXT CCTTEXT 
USETEXT DNTEXT
USETEXT PPTEXT
PRGM PPEND; 
         BEGIN
*CALL DPPPDDATA 
*CALL PPCOMMON2 
*CALL AUXTVALS
*CALL DNATVALS
*CALL PLTVALS 
         XREF PROC SETRTN;
         CONTROL EJECT; 
SUB9: 
#UPDATE CCT ROUTINE#
         #GAURD AGAINST DECLARATIVES WITHOUT END DECLARATIVES#
         IF PDADDRESS NQ 0
         THEN BEGIN 
              #THE BRANCH AROUND DECLARATIVES COMES HERE# 
              ERROR(SEVERE,858,LINE$,0);
              NGLABELDEF((NEXTPNAT)); 
              SET(PN$PROCKIND,PNAT$,PNATLENGTH,1);
              AUXTLENGTH = AUXTLENGTH + 1;
              SET(AX$TTYPE,AUX$,AUXTLENGTH,AUXGTEXT); 
              SET(AX$GTEXTPTR,PNAT$,PNATLENGTH,AUXTLENGTH); 
              NGLABELDEF(PDADDRESS);
              END 
          #IF SEGMENTATION WAS USED MAKE SURE THERE#
          #IS A SECTION WITH SEGMENT NUMBER 100 AT END# 
  
          IF CCTSEGMENTS[0] 
          THEN BEGIN
                    #MUST ADD NEW SECTION#
                   NGGTX(GVERB,(NEXTPNAT),GPROC); 
                    SET(PN$PROCKIND,PNAT$,PNATLENGTH,1);
                    SET(PN$SEGMENTNO,PNAT$,PNATLENGTH,100); 
                    AUXTLENGTH = AUXTLENGTH + 1;
                    SET(AX$TTYPE,AUX$,AUXTLENGTH,AUXGTEXT); 
                    SET(AX$GTEXTPTR,AUX$,AUXTLENGTH,G); 
                    SET(PN$AUXREF,PNAT$,PNATLENGTH,AUXTLENGTH); 
                   SET(PN$PREVSECTN,PNAT$,CCTRPSECTNAM,PNATLENGTH); 
               END
         ELSE BEGIN 
              #THIS PNAT TERMINATES REPORT SECTION GTEXT, IF ANY       #
              #OTHERWISE IT IS REDUNDANT# 
              NGGTX(GVERB,(NEXTPNAT),GPROC);
              END 
         NG($END$); 
         FOR I = MBACHAIN 
         WHILE I NQ 0 
         DO BEGIN 
            REG1 = GET(FST$BIG$FLD,AUX$,I); 
            IF GET(PN$ALTERED,PNAT$,REG1) EQ 0
            THEN BEGIN
                 REG2 = GET(AX$TSECOND,AUX$,I); 
                 ERROR(SEVERE,118,REG2,8);
                 END
            I = GET(AX$TNEXTPTR,AUX$,I);
            END 
         FOR I = ALTEREDCHAIN 
         WHILE I NQ 0 
         DO BEGIN 
            REG1 = GET(FST$BIG$FLD,AUX$,I); 
            IF GET(PN$ALTERABLE,PNAT$,REG1) EQ 0
            THEN BEGIN
                 FOR REG2 = GET(PN$AUXREF,PNAT$,REG1) 
                 WHILE REG2 NQ 0
                 DO BEGIN 
                    REG2 = FINDAUX(WASALTERED,REG2);
                    IF REG2 NQ 0
                    THEN BEGIN
                         REG3 = GET(FST$BIG$FLD,AUX$,REG2); 
                         REG4 = GET(SEC$BIG$FLD,AUX$,REG2); 
                         ERROR(SEVERE,117,REG3,REG4); 
                         REG2 = GET(AX$TNEXTPTR,AUX$,REG2); 
                         END
                    END 
                 SET(PN$ALTERED,PNAT$,REG1,0);
                 END
            I = GET(AX$TNEXTPTR,AUX$,I);
            END 
         CCTGTEXTLEN = G; 
         CCTDNATLEN = DNATLENGTH; 
         CCTPNATLEN = PNATLENGTH; 
         CCTAUXTLEN = AUXTLENGTH; 
         CCTLATLEN = LATLENGTH; 
         #REMEMBER TWO RFT ENTRIES ARE ALLOCATED FOR EACH SUBSCRIPT#
         CCTRFTLEN = RFTLENGTH + 1; 
         CCTMAXMNEM = CSTMAXNUM;
          #ADD CCTMSECLEN[SREGMSEC] INTO THE BYTE OFFSET OF DEBUG-ITEM# 
          #AND ITS SUBORDINATES.                               #
          # THIS WAY DEBUG-ITEM WILL BE MOVED AT THE END OF SREGMSEC# 
          TEMP1=CCTMSECLEN[SREGMSEC]; 
         FOR I = DEBUGITEM
         STEP 1 
         UNTIL DEBUGNUMCON
         DO BEGIN 
            J = GET(DN$BYTEOFFS,DNAT$,I) + TEMP1; 
            SET(DN$BYTEOFFS,DNAT$,I,J); 
            END 
          #INCREMENT CCTMSECLEN[SREGMSEC] BY THE ITEM LENGTH OF#
          #DEBUG-ITEM.# 
          TEMP1=GET(DN$ITMLEN,DNAT$,DEBUGITEM); 
          CCTMSECLEN[SREGMSEC] = CCTMSECLEN[SREGMSEC] + TEMP1;
     IF CCTDEBUGMODE[0] 
     THEN 
         BEGIN
         REG1 = GET(L$DNAT,LAT$,DLATSPACE); 
         LITERALDNAT(DEBUGITEM,REG1); 
         REG1 = GET(L$DNAT,LAT$,DLATSPROGRAM);
         LITERALDNAT(DEBUGCONTS,REG1);
         REG1 = GET(L$DNAT,LAT$,DLATFTHROUGH);
         LITERALDNAT(DEBUGCONTS,REG1);
         REG1 = GET(L$DNAT,LAT$,DLATUSEPROC); 
         LITERALDNAT(DEBUGCONTS,REG1);
         REG1 = GET(L$DNAT,LAT$,DLATPLOOP); 
         LITERALDNAT(DEBUGCONTS,REG1);
         REG1 = GET(L$DNAT,LAT$,DLATSORTINP); 
         LITERALDNAT(DEBUGCONTS,REG1);
         REG1 = GET(L$DNAT,LAT$,DLATSORTOUT); 
         LITERALDNAT(DEBUGCONTS,REG1);
         REG1 = GET(L$DNAT,LAT$,DLATMERGEOUT);
         LITERALDNAT(DEBUGCONTS,REG1);
         END
         CMM$FGR(MGROUPNUMBER); 
         SETRTN;
         STOP;
         END
         TERM 
