*DECK INITCCT 
USETEXT CCTTEXT 
          PROC INITCCT; 
 #        INITCCT - INITIALIZE CCT                                     #
          BEGIN 
  
          DEF CCTFIRSTTAB  #CCTCTEXTLEN#;  #FIRST ZEROED ITEM#
  
          ITEM CCTINDEX U;
          ITEM CURRSIZE U;
          ITEM  SAVEFIPSLEV;
          ITEM  SAVEANSIDIAG; 
          ITEM  SAVEAPO B;
          ITEM  SAVEFDLLEN; 
          ITEM  SAVEDIAGLV; 
          ITEM  SAVESSNAME C(30); 
          XREF FUNC GETCMU B; 
          XREF FUNC GETCSET;
          XREF FUNC GETOS;
          XREF ITEM SORTLIB C(10);
          BASED ARRAY DUMARRAY [0:1000] S(1); 
              ITEM CCTITEM  U(0,0,60);
          ARRAY SVCCTBITS [0] S(1); 
              BEGIN 
              ITEM SAVEBITS  U(0,0,60) = [0]; 
              END 
 #     START PROGRAM                                                   #
  
          SAVEBITS = CCTFLAGINFO;  # SAVE CCT FLAG WORD - THIS WORD IS #
                                   # INITIALIZED BY COBOL5             #
          IF CCT1STCOMPIL 
          THEN
              BEGIN   #FIRST COMPILE IN COMPILE UNIT# 
 #     SET TO CLEAR OUT ENTIRE CCT #
              P<DUMARRAY> = LOC(CCTENTRIES);
              CURRSIZE = LOC(CCTLASTITEM) - LOC(CCTENTRIES);
              END 
          ELSE
              BEGIN 
 #     SET TO CLEAR ONLY ITEMS LOCAL TO A PROGRAM # 
              P<DUMARRAY> = LOC(CCTFIRSTTAB); 
              CURRSIZE = LOC(CCTLASTITEM) - LOC(CCTFIRSTTAB); 
#      SAVE ANY ITEMS WHICH MUST LAST OVER COMPILATIONS                #
              SAVEFDLLEN = CCTFDLTLEN;
              SAVEDIAGLV = CCTDIAGLEVEL;
              SAVESSNAME = CCTSSNAME; 
              SAVEANSIDIAG = CCTANSIDIAG; 
              SAVEFIPSLEV = CCTFIPSLEVEL; 
              SAVEAPO = CCTAPO; 
              END 
          FOR CCTINDEX = 0 STEP 1 UNTIL CURRSIZE DO 
              CCTITEM [CCTINDEX] = 0; 
  
 #        SET ALL ITEMS WHICH CARRY BETWEEN STACKED COMPILES           #
  
 #     PROCESS THE BIT ITEMS                                           #
  
          CCTFLAGINFO = SAVEBITS[0];
           CCTAPO = SAVEAPO;
          CCTSUBSOPTIM = TRUE;
          CCTDECPTCOMM = FALSE; 
          CCTREPORTSEC = FALSE; 
          CCTDEBUGMODE = FALSE; 
          CCTSUBPROGR = FALSE;
          CCTSIGNLEAD = FALSE;
          CCTSIGNSEPAR = FALSE; 
          CCTHILO = FALSE;
          CCTQUOTEAPOS = CCTAPO;
          CCTSECTION = FALSE; 
          CCTALTER = FALSE; 
          CCTGOTO = FALSE;
          CCTGOTODEPND = FALSE; 
          CCTALTINDSEG = FALSE; 
          CCTANALSO = FALSE;
          CCTSEGMENTS = FALSE;
          CCTDBTBSTATS = FALSE; 
          CCTABORT = FALSE; 
          CCTTIMRPT = FALSE;
          CCTMIPOO = FALSE; 
          CCTSMVERB = FALSE;
          CCTNOSTERM = FALSE; 
          CCTANSIDIAG = SAVEANSIDIAG; 
          CCTFDLTLEN = SAVEFDLLEN;
          CCTDIAGLEVEL = SAVEDIAGLV;
          CCTSSNAME = SAVESSNAME; 
              CCTFIPSLEVEL = SAVEFIPSLEV; 
  
 #     SET UP MISCELLANEOUS FIELDS                                     #
  
          CCTSEGLIMIT = 50;          #DEFAULT SEGMENT LIMIT IS 50#
          CCTCURRSIGN [0] = O"53";   #CURRENCY SIGN SYMBOL IS $#
          CCTDECPOINT [0] = O"57";   #DECIMAL POINT IS .# 
          CCTIPCSET = GETCSET;     #SET IP.CSET CHARACTER SET#
          CCTCMU = GETCMU;    # SET CMU ON OR OFF FLAG #
          IF CCT1STCOMPIL 
          THEN
              BEGIN 
              CCTSSNAME = "       ";
              CCTSCHNAME = "       "; 
              IF GETOS EQ 1 
              THEN
                  CCTOSISNOS = TRUE;    # SET OPERATING SYS TO NOS# 
              IF C<0,6>SORTLIB EQ "SRTLIB"
              THEN
                  CCTSORT4 = TRUE;
              END 
          ELSE
              BEGIN 
              CCTSUBPROGR = TRUE;   # SET AS SUBPROGRAM # 
              END 
  
          RETURN; 
          END 
          TERM
