*DECK RP
USETEXT CCTTEXT 
USETEXT RPTEXT
PROC RP;
          BEGIN 
          CONTROL FTNCALL;    #SELECT FORTRAN CALLING SEQUENCE# 
  # * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *#
  # *                                                                 *#
  # *  THIS IS THE MAIN ROUTINE OF RPARSER.  IT CALLS DRIVER TO DO    *#
  # *  SYNTAX ANALYSIS OF THE REPORT SECTION. DURING SYNTAX ANALYSIS, *#
  # *  PERTINENT INFO IS STORED IN THE RPAUX TABLE.  WHEN SYNTAX      *#
  # *  ANALYSIS IS COMPLETE, RANALYZER IS CALLED.  RANALYZER TRANS-   *#
  # *  FORMS THE RPAUX TABLE INTO THE VARIOUS REPORT TABLES AND       *#
  # *  DOES OTHER PROCESSING SIMILAR TO DANALYZER.  THE NEXT PHASE,   *#
  # *  RGEN, READS THE REPORT TABLES AND PRODUCES CTEXT.              *#
  # *                                                                 *#
  # *  RPARSER INITIALIZATION IS DONE BY THE ROUTINE RP$SECTIONRT.    *#
  # *  THIS IS A SUBROUTINE IN R$SUBS  AND IS CALLED FROM THE SYNTAX  *#
  # *  TABLES AT THE POINT WHERE THE DATA DEF FOR THE REPORT SECTION  *#
  # *  HEADER IS RECOGNIZED.  THE INITIALIZATION IS DONE THERE BECAUSE*#
  # *  AT THAT POINT THE 1ST DNAT IN THE REPORT SECTION IS KNOWN AND  *#
  # *  AN RPAUXPTR TABLE ENTRY CAN BE ALLOCATED FOR EACH DNAT IN THE  *#
  # *  REPORT SECTION.  THIS TABLE IS A LINK BETWEEN A DNAT ENTRY AND *#
  # *  THE RAPUX ENTRIES ASSOCIATED WITH THAT DNAT ENTRY.             *#
  # *                                                                 *#
  # * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *#
  
          $BEGIN
  
          XREF   PROC         RPADUMP;
          XREF   PROC         RPDUMP ;
  
          ITEM   TEMP,
                 TEMP1; 
  
  
          COMMON PARAMS;
          ARRAY  [0:7]; 
             ITEM  PARAMC   C(0, 0, 10);
          $END
  
*CALL DNATVALS
*CALL RPCOMM
*CALL OVLCOM
          XREF   PROC LOVER;
          $BEGIN
            XREF   PROC  DEBUG;      #DEBUG DRIVER# 
          $END
  
  # CHECK DEBUG PARAMS HERE # 
  
          $BEGIN
          #DEBUGGING PARAMETERS FOR RPARSER/RANALYZ:                   #
          #  1. RPSET- TRACE ALL MODIFICATIONS TO REPORT TABLES IN     #
          #            RPARSER.                                        #
          #  2. RPALL- TRACE ALL REFERENCES TO REPORT TABLES IN RPARSER#
          #  3. RASET- TRACE ALL MODIFICATIONS TO REPORT TABLES IN     #
          #            RANALYZ.                                        #
          #  4. RAALL- TRACE ALL REFERENCES TO REPORT TABLES IN RANLAYZ#
          #  5. RPRPADMP-  DUMP RP AUX TABLE AFTER RPARSER.            #
          #  6. RARPADMP-  DUMP RP AUX TABLE AFTER RANALYZ.            #
          #  7. RPDMP-     DUMP REPORT TABLES AFTER RANALYZ.           #
          #  8. MOD NAME-  CAN BE ANY MODULE NAME IN RPARSER/RANALYZ.  #
          #             -  TRACE ALL REFERENCES TO REPORT TABLES       #
          #                WHILE THE NAMED MODULE IS EXECUTING.        #
          #                                                            #
          #EXCEPT FOR RPRPDMP, RARPDMP, AND RPDMP, ALL PARAMETERS      #
          #CAUSE A TRACE OF ALL MODULE CALLS.  SO DOES ANY STRING      #
          #OTHER THAN THOSE NAMED ABOVE.                               #
          DEBUG$$ = FALSE;
          DEBUG$F1 = 0;   #CLEAR ALL FLAGS #
          IF CCTCHKOUT[0] EQ 0
             OR  PARAMC[0] EQ " " 
          THEN
              GOTO NODEBUG; 
          TEMP1 = 0;
          FOR TEMP = 0 STEP 1 WHILE TEMP LQ 7 
                                AND PARAMC[TEMP] NQ " " DO
              BEGIN 
              IF PARAMC[TEMP] EQ "RPALL"
              THEN
                  BEGIN 
                  DEBUG$$ = TRUE; 
                  DB$RPALL = 1; 
                  DB$RPSET = 1; 
                  TEST TEMP;
                  END 
             IF PARAMC[TEMP] EQ "RPSET" 
             THEN 
                 BEGIN
                  DEBUG$$ = TRUE; 
                 DB$RPSET = 1;
                 TEST TEMP; 
                 END
              IF PARAMC[TEMP] EQ "RAALL"
              THEN
                  BEGIN 
                  DEBUG$$ = TRUE; 
                  DB$RAALL = 1; 
                  DB$RASET = 1; 
                  TEST TEMP;
                  END 
              IF PARAMC[TEMP] EQ "RASET"
              THEN
                  BEGIN 
                  DEBUG$$ = TRUE; 
                  DB$RASET = 1; 
                  TEST TEMP;
                  END 
              IF PARAMC[TEMP] EQ "RPRPADMP" 
              THEN
                  BEGIN 
                  DB$RPRPADMP = 1;
                  TEST TEMP;
                  END 
              IF PARAMC[TEMP] EQ "RARPADMP" 
              THEN
                  BEGIN 
                  DB$RARPADMP = 1;
                  TEST TEMP;
                  END 
              IF PARAMC[TEMP] EQ "RPDMP"
              THEN
                  BEGIN 
                  DB$RPDUMP = 1;
                  TEST TEMP;
                  END 
  
              #ELSE IT MUST BE A MOD NAME#
              DEBUG$$ = TRUE; 
              DEBUG$WORD [ TEMP1 ] = PARAMC [ TEMP] ; 
              TEMP1 = TEMP1 + 1;
              END  # OF FOR TEMP LOOP # 
  
           #STORE BLANK DELIM IN DEBUG$WORD # 
          IF TEMP1 LQ 7 
          THEN
              DEBUG$WORD [ TEMP1 ] = " " ;
NODEBUG:  
  
  
          DB$ALL = DB$RPALL;
          DB$SET = DB$RPSET;
          $END
  
          LOVER(RPDR);
          CCTRPAUXLEN = CCTRWTABLEN;
          $BEGIN
          DB$ALL = 0; 
          DB$SET = 0; 
          IF DB$RPRPADMP EQ 1 
          THEN
              RPADUMP;
          DB$ALL = DB$RAALL;
          DB$SET = DB$RASET;
          $END
          LASTAUXENTRY = CCTAUXTLEN;
          LOVER(RANAL); 
          # UPDATE CCT FIELDS # 
          CCTDNATLEN    = LASTDNATINDX; 
          CCTAUXTLEN    = LASTAUXENTRY; 
          CCTCIDTLEN    = NUMCIDTNTRYS; 
          CCTLATLEN     = LASTLATINDEX; 
          CCTLATDDLNGT  = LASTLATINDEX; 
          CCTPLTLEN = RPPLTOFFSET - 1;
          CCTPNATLEN    = LASTPNATINDX; 
          CCTRDCDILEN   = NUMRDCDINTRY; 
          CCTMSECLEN[RDMSEC] = RDLBYTOFFSET;
          $BEGIN
          DB$ALL = 0; 
          DB$SET = 0; 
          IF DB$RARPADMP EQ 1 
          THEN
              RPADUMP;
          IF DB$RPDUMP EQ 1 
          THEN
              RPDUMP; 
          $END
          END 
          TERM
