*DECK LVL01CL 
USETEXT RPTEXT
PROC LVL01CL;   #CYR31# 
          BEGIN 
  
          #LEVEL 01 PROCESSING ROUTINE# 
          #THIS ROUTINE#
          #- CALLS ROUTINES THAT PERFORM ANALYSIS ON ALL# 
          #CLAUSES THAT COMPRISE (OR AT LEAST APPEAR TO)# 
          #1  REPORT GROUP# 
          #-# 
          #- UPDATES  DNATPOINTER#
  
          #ROUTINES CALLED BY LEVEL01PROCG# 
         XREF   PROC          F$ANALY;
         XREF   PROC          CLAUSEC  ;
         XREF   PROC          GANALYZ;
         XREF   PROC          REPORTG;
         XREF   PROC          XFORM;
  
  
  
  
          ITEM   $TEMP$,
                $DUMMY$;
  
          XREF   PROC         INTERCEPT;
          XREF   FUNC         PLTCNVRT I; 
          XREF   PROC         RWSET    ;
          XREF   PROC         RWSET1   ;
          XREF   PROC         GETNEXT  ;
          XREF   FUNC         RP$AUXPTR;
          XREF   FUNC         RWGET    ;
          XREF   FUNC         RWGET1   ;
  
          DEF    GET          #GETFIELD#; 
          DEF    SET          #SETFIELD#; 
          DEF    GETQ         #GETQUICK#; 
  
*CALL RPCOMM
*CALL GETSET
*CALL TABLNAMES 
  
          CONTROL EJECT;
  
  # * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *#
  # * #   EPTRACE("LVL01CL")                                       # * #
  # * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *#
  
  
  
          #LEVEL01PROCG  PROCEDURES -#
  
          #INITIALIZE SWITCHES  -#
  
          ANALONLYREPT  = 0;
  
          #WHEN LEVEL01PROCG IS CALLED  BY R-ANALYZER-CONTROL-# 
          #ROUTINE,  MIGHT NOT BE SITTING AT A  01 LEVEL DNAT ENTRY#
          #-JUST KNOW THAT IT IS NOT AN RD# 
          #NOR DOES THIS ROUTINE KNOW (ON ENTRANCE) WHETHER AN RD HAS#
          #EVER BEEN ENCOUNTERED/PROCESSED. THIS ROUTINE WILL PROCESS#
          #WHATEVER APPEARS TO BE 1 REPORT GROUP--IE. ALL THOSE DNAT# 
          #ENTRIES FROM THE ONE POINTED TO BY DNATPOINTER ON ENTRANCE#
          #TO THIS ROUTINE  UP TO ONE CONTAINING AN 01 OR RD LEVEL.#
          IF RDOCURDSWTCH EQ 0
          THEN
              GOTO  SETAOSWITCH;
          #HAVE ENCOUNTERED A REPORT# 
          #GROUP DNAT PRIOR TO ANY RD DNAT -- THUS IMPOSSIBLE#
          #TO PRODUCE A REPORT SO WILL SET FOR ANALYSIS ONLY.X# 
          #REMINDER NOTE# 
          #THE SYNTAX TABLES WOULD HAVE FOUND THE REPORT GROUP# 
          #CLAUSE OUT OF CONTEXT AND ISSUED A DIAG. -BUT, A NEW#
          #DEFINITION POINT IS ESTABLISHED AND THE CLAUSE COM-# 
          #MAND TURNS THE SYNTAX-ONLY FLAG OFF - THUS, DATA THAT# 
          #CAN BE ANALYZED HAS LIKELY BEEN STORED IN THIS DNAT.#
          IF  INHIBITABLDF EQ 1 
              #EG.- PAGE CLAUSE CONSIDERED UNDEFINED# 
  
              OR
              NOFDFLAG  EQ 1
              #WOULD MEAN, FOR EG., THAT COULD NOT PUT MSEC OR# 
              #BYTE-OFFSET INTO ANY PRINT LINE ITEM#
  
          THEN
SETAOSWITCH:  
              ANALONLYREPT  = 1;
  
          #THIS SWITCH(ANALONLYREPT)# 
          #WILL TELL ALL REPORT GROUP ROUTINES# 
          #THAT THERE IS NO SENSE IN BUILDING ANY#
          #TABLES - THAT THERE IS A USER ERROR OF#
          #SUCH MAGNITUDE THAT IT"S NOT POSSIBLE# 
          #TO PRODUCE ANY REPORT FROM THE SECTION#
          #OF DATA CURRENTLY UNDER ANALYSIS.# 
  
          #INITIALIZATION FOR REPORT GROUP PROCESSING -#
          #*# 
          #1) DNATPOINTER#
          #DURING THE COURSE OF THE REPORT PARSER PHASE#
          #DNATPOINTER WILL ALWAYS  POINT   TO 1 OF THE 4#
          #FOLLOWING POSSIBILITIES# 
          #A) THE FIRST REPORT SECTION DNAT INDICATED IN# 
          #THE CTEXT FROM S-SCANNER#
          #X# 
          #B) DNAT ENTRY FOR AN RD# 
          #X# 
          #C) THE FIRST DNAT ENTRY OF A REPORT GROUP# 
          #X# 
          #D) LSTRSDNATIND# 
          #X(IE.-IT WILL NOT BE BUMPED TO POINT TO EACH DNAT# 
          #ENTRY PROCESSED)#
          #NOW, -#
          #WHEN HAVE REACHED THIS POINT IN THE PROCESSING#
          #THERE ARE JUST 2 OF THE 4 POSSIBILITIES LEFT#
          #FOR DNATPOINTER,  NAMELY A AND C#
          #IF A (FIRST RS DNAT INDEX ENCOUNTERED BY#
          #SYNTAX CHECK)- THEN THERE IS A USER ERROR# 
          #INVOLVED, OF COURSE. (FIRST SHOULD BE AN RD)#
          #IF C (FIRST DNAT ENTRY OF AN ASSUMED REPORT# 
          #GROUP), -THEN IT WAS UPDATED TO THAT BY# 
          #RPTDESCRPROS.X#
          #2) A REPORT GROUP LEVEL ANALYZE ONLY SWITHC. # 
          #  RPARSER SHOULD GO AHEAD AND BUILD THE TABLES#
          #FOR A PARTICULAR REPORT GROUP IF THE ONLY ERROR IN#
          #THAT R.G. IS THAT THERE ARE NO LINE NUMBERS  THAT,#
          #PARTICULAR REPORT GROUP IS THEN CONSIDERED "ALIVE"#
          #BUT JUST NOT PRINTABLE.  HOWEVER, IF ENCOUNTER#
          #THAT INDICATE THAT#
          #TABLES FOR THIS PARTICULAR REPORT GROUP SHOULD NOT#
          #BE BUILT, WILL SET ANALONLYRGRP  SWITCH ON.X#
          #THE PURPOSE OF THIS IS TO TRY TO PRINT THE REPORT# 
          #INCLUDING ALL "GOOD" REPORT GROUPS  AND OMITTING#
          #ANY "BAD" REPORT GROUPS....OF COURSE, THIS IS# 
          #DEPENDENT UPON AT LEAST 1 DETAIL REPORT GROUP# 
          #(BELONGING TO CURRENT RD) BEING GOOD, FOR IF A#
          #DETAIL GROUP IS BAD, 0ES INSTEAD OF PARAGRAPH# 
          #NAMES WILL BE INSERTED INTO THE DETAIL DNAT AS A#
          #SIGNAL THAT NO "PERFORM" CAN/IS TO  BE GENERATED#
          #WHEN A "GENERATE DETAIL." IS ENCOUNTERED IN THE# 
          #PROCEDURE DIVISION.# 
          ANALONLYRGRP = 0; 
          #(INITIALIZE SWITCH TO OFF FOR CURRENT REPORT GROUP)# 
  
  
          #CALL ROUTINES TO DO REPORT GROUP ANALYSIS# 
  
          F$ANALY;
          #THIS ROUTINE WILL SET SOME INDICATORS TO TELL# 
          #LEVEL01PROCG WHETHER IT ENCOUNTERED# 
          #THE LSTRSDNATIND  OR  A LEVEL 01 OR RD#
          #DNAT  AND IF SO -- WHERE.# 
          CLAUSEC;
          GANALYZ;
          REPORTG;
          XFORM;
  
          #UPDATE DNATPOINTER#
  
  
          # UPDATE DNATPOINTER TO POINT TO THE 01 # 
          #OR RD LEVEL DNAT THAT WAS ENCOUNTERED# 
  
          DNATPOINTER = UPDATE4DNATP; 
ENDLEVEL01: 
  
  # * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *#
  # * #   EXTRACE("LVL01CL")                                       # * #
  # * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *#
  
          END #LVL01CL# 
          TERM
