*DECK RANALYZ 
USETEXT CCTTEXT 
USETEXT DNTEXT
USETEXT RPTEXT
    PRGM RANALYZ; 
          BEGIN 
  # THIS ROUTINE CALLS AFTER-ALL-REPORTS-TIE-UP AND EXITS              #
  # IF ALL REPORT SECTION DNATS HAVE BEEN ANALYZED.                    #
  # ELSE, IT CALLS -REPORT DESCRIPTION PROCESSING ROUTINE AND          #
  #                 RMASSAGER TO DO PROCESSING FOR AN RD LEVEL ITEM    #
  #                -LEVEL-01-PROCESSING ROUTINE TO DO PROCESSING FOR   #
  #                 A REPORT GROUP.                                    #
          XREF   PROC         GETNEXT     ; 
          XREF   PROC         RTINITIATE  ; 
          XREF   PROC         RWSET1      ; 
          XREF   PROC         INTERCEPT   ; 
          XREF   PROC         PCLC$RT     ; 
          XREF   PROC         CODECL      ; 
          XREF   PROC         CNTRLCL     ; 
          XREF   PROC         PAGECL      ; 
          XREF   PROC         IRT$RT      ; 
          XREF   PROC         LVL01CL     ; 
          XREF   PROC         MASSAGE     ; 
          ITEM   I     ,
                 $TEMP$;
          DEF    GETQ         #GETQUICK#; 
          DEF    GET          #GETFIELD#; 
          XREF   PROC  DISPLAY;        #DISPLAYS MESSAGE# 
          XREF   PROC  OVERRTN;        #RETURN FROM OVERLAY#
  
          ITEM   SECTIONMSG  C(10)  = "*COBRA...*"; 
  
*CALL RPCOMM
*CALL DNATVALS
*CALL FDRDT1
*CALL GETSET
*CALL TABLNAMES 
          CONTROL EJECT;
PROC RDPROCESS; 
          BEGIN 
  # THIS ROUTINE CALLS ROUTINES TO DO ANALYSIS ON THE FOLLOWING        #
  # RD CLAUSES--CODE, CONTROL, PAGE. IT COMPLETES THE DNAT             #
  # ENTRIES FOR LINE-COUNTER AND PAGE-COUNTER AND STARTS CONSTRUCTION  #
  # OF THE INFO-REPORT-TABLE -IRT.                                     #
          PCLC$RT;           #PAGE-COUNTER, LINE-COUNTER# 
          CODECL      ; 
          CNTRLCL     ; 
          PAGECL      ; 
          IRT$RT; 
          CURRDDNAT   = DNATPOINTER;
          DNATPOINTER = CURRDDNAT + 3 ; 
          END   #RDPROCESS# 
          #  START OF EXECUTION    #
          $BEGIN
             DISPLAY(2,SECTIONMSG,0,10);      #PRINT SECTION MESSAGE# 
          $END
          CONTROL EJECT;
  #( THIS USED TO BE IN ONCE-ONLY ON STAR)# 
  # ALLOCATE INITIAL ENTRIES FOR MOST OF THE REPORT TABLES.            #
          RTINITIATE ( CIDTLINK     ) ; 
          RTINITIATE ( CDILINK      ) ; 
          RTINITIATE ( CONTROLSLINK ) ; 
          RTINITIATE ( IPCTLINK     ) ; 
          RTINITIATE ( IRTLINK      ) ; 
          RTINITIATE ( RGTLINK      ) ; 
          RTINITIATE ( RHRGLINK     ) ; 
          RTINITIATE ( RHLNLINK     ) ; 
          RTINITIATE ( RHPLLINK     ) ; 
          RTINITIATE ( PHRGLINK     ) ; 
          RTINITIATE ( PHLNLINK     ) ; 
          RTINITIATE ( PHPLLINK     ) ; 
          RTINITIATE ( PFRGLINK     ) ; 
          RTINITIATE ( PFLNLINK     ) ; 
          RTINITIATE ( PFPLLINK     ) ; 
          RTINITIATE ( RFRGLINK     ) ; 
          RTINITIATE ( RFLNLINK     ) ; 
          RTINITIATE ( RFPLLINK     ) ; 
          RTINITIATE ( DEPLLINK     ) ; 
          RTINITIATE ( DELNLINK     ) ; 
          RTINITIATE ( DERGLINK     ) ; 
          RTINITIATE ( GRINDLINK    ) ; 
          RTINITIATE ( CHPLLINK     ) ; 
          RTINITIATE ( CHLNLINK     ) ; 
          RTINITIATE ( CHRGLINK     ) ; 
          RTINITIATE ( CFPLLINK     ) ; 
          RTINITIATE ( CFLNLINK     ) ; 
          RTINITIATE ( CFRGLINK     ) ; 
          RTINITIATE ( CROSFOOTLINK ) ; 
          RTINITIATE ( SUMCNTRLINK  ) ; 
          RTINITIATE ( ROLFRWDLINK  ) ; 
          RTINITIATE ( ARESETLINK   ) ; 
          RTINITIATE ( RESETBLINK   ) ; 
          RTINITIATE ( ISUBTLINK    ) ; 
          RTINITIATE ( PROGRDLINK   ) ; 
  # UPON TABLE IS INITIALISED, BUILT, AND USED IN RGEN. # 
  
   #SAVE BEGINNING INDECIES OF CIDT, CDI AND PROGRAM-RD TABLES# 
  
          CCTCIDTADDR = NEXTCIDTPTR;
          CCTRDCDIADDR = NEXTRDCDIPTR;
          CCTRWTABADDR  = NEXTPRGRDPTR; 
          CONTROL EJECT;
  # BEGIN MAINLINE #
SWITCHINIT: 
          RDOCURDSWTCH = 0; 
          F1STRDSWITCH = 0; 
RPTGROUPLOOP: 
  # DNATPOINTER AND LSTRSDNATIND ARE SET IN R$SUBS.  DNATPOINTER POINTS#
  # TO THE DNAT OF THE FIRST ITEM IN THE REPORT SECTION.               #
          IF FNDLSTRSDNAT EQ 1
          THEN
              BEGIN 
              IF RGOCCURRED EQ 1
              THEN
                  # A REPORT GROUP DID OCCUR #
                  MASSAGE   ;  #WHICH CALLS AFTER-ALL-REPORT-GROUPS-RT #
              # PERFORM FINAL CLEANUP # 
              # ADD A DELIMITER ENTRY # 
              # TO PROGRAM-RD-TABLE   # 
              GETNEXT(PROGRDLINK);
              RWSET1(PROGRD$DELIM  #CURRPRGRDPTR#, 0 ) ;
              # DIAGNOSE NAMES THAT WERE IN A REPORTS ARE CLAUSE       #
              # BUT WERE NOT REPORTS (DNAT LEVEL NQ RDLEVEL)           #
              FOR I = 1 STEP 1 UNTIL LASTFDRDNTRY DO
                  BEGIN 
                  IF GETQ(FR$CHECKBIT,FDRDT$, I) EQ 0 
                  THEN
                      BEGIN 
                      $TEMP$ = GETQ ( FR$FILENAME, FDRDT$, I ) ;
                      # LINE NUMBER OF THE FD WILL APPEAR IN THE       #
                      # MESSAGE                                        #
                      CALLTDIAG ( $TEMP$ , 93 ) ; 
                      END 
                  END  # FOR I #
               GOTO RANALRET; 
              END 
          IF GETQ ( DN$LEVEL, DNAT$, DNATPOINTER ) NQ RDDESCR 
          THEN
              BEGIN 
              RGOCCURRED = 1;    #REPORT GROUP ENCOUNTERED# 
              LVL01CL     ;      #BUMPS DNATPOINTER TO NEXT DNAT AFTER #
                                 #THE REPORT GROUP.                    #
              GOTO RPTGROUPLOOP;
              END 
          # ELSE LEVEL IS RD #
          RDOCURDSWTCH = 1; 
          # WE MUST CALL MASSAGE    FOR PREVIOUS REPORT UNLESS         #
          # IT HAD NO REPORT GROUPS OR WAS THE FIRST REPORT.           #
          IF F1STRDSWITCH EQ 1  #THIS SWITCH IS RATHER BACKWARD.       #
             AND
             RGOCCURRED   EQ 1
          THEN
              BEGIN 
              RGOCCURRED = 0; 
              MASSAGE   ; 
              END 
          F1STRDSWITCH = 1; 
          RDPROCESS;
          GOTO RPTGROUPLOOP;
    RANALRET: 
           OVERRTN; 
          END  # RANALYZER #
          TERM
