*DECK RPTEXIT 
USETEXT TCLFN 
USETEXT TCMMDEF 
USETEXT TENVIRN 
USETEXT TREPORT 
USETEXT TXSTD 
      PROC RPTEXIT; 
  
#----------------------------------------------------------------------#
#                                                                      #
#  THE FOLLOWING PROCS ARE XDEF"D WITHIN THIS DECK:                    #
#                                                                      #
#     RPTCLR                       SETS *RPTFLAG* FALSE. INDICATES WE  #
#                                  ARE NO LONGER BUILDING REPORT TABLES#
#     RPTEXIT                      EXIT SYNTAX TO APPROPRIATE REPORT   #
#                                  PREPARATION OVERLAY                 #
#     RPTSET                       SETS *RPTFLAG* TRUE. INDICATES WE   #
#                                  ARE ACTIVELY BUILDING REPORT TABLES #
#                                                                      #
#----------------------------------------------------------------------#
  
      BEGIN 
  
      XREF ITEM RPTFLAG      B;    # TRUE IF IN THE MIDDLE OF PREPARING#
                                   # REPORT TABLES FOR EXECUTION       #
      XREF ITEM RPTOVL       I;    # INDICATES PRIMARY OVERLAY LEVEL   #
                                   # TO BE USED WITH THE REPORT TABLES #
                                   # BEING BUILT.                      #
      XREF ITEM SM$GROUPID   I;    # CURRENT GROUP ID FOR SYNTAX STUFF #
  
      XREF PROC EXIT10;            # LOAD OVERLAY TO EXIT (1,0)        #
      XREF PROC WRITE;             # WRITE A LINE TO THE USER          #
  
  
      DEF PRECOMP$OVL #O"01"#;     # SECONDARY OVERLAY LEVEL FOR SYNTAX#
                                   # OF *PREPARE/PREVIEW/COMPILE*      #
  
  
#----------------------------------------------------------------------#
#     P R I N T P S                                                    #
  
#     PRINT OUT PREFACE AND SUMMARY NAMES.                             #
                                                                         XXXX 
       PROC PRINTPS;       BEGIN                                         XXXX 
                 ARRAY WSAA S(4);                                        XXXX 
                 ITEM WSA0 C(0,0,10),                                    XXXX 
                      WSA1 C(1,0,10),                                    XXXX 
                      WSA2 C(2,0,10);                                    XXXX 
           ITEM RC,I;                                                    XXXX 
                                                                         XXXX 
                                                                         XXXX 
           WSA0[0]=" PREFACES/";                                         XXXX 
           WSA1[0]="SUMMARIES ";                                         XXXX 
           WSA2[0]="          ";                                         XXXX 
           WRITE(WSAA,20,RC);                                            XXXX 
           FOR I=0 STEP 1 UNTIL 9 DO                                     XXXX 
               BEGIN                                                     XXXX 
               IF RPTNAME[I] NQ ILFN[IPRE]      THEN                     XXXX 
                   BEGIN                                                 XXXX 
                   IF B<0,42>RPTNAME[I] EQ 0  # IF END OF LIST         #
                     AND I EQ 1               # FIRST TIME THRU        #
                   THEN 
                       BEGIN                                             XXXX 
                       WSA0[0]=" (NONE)";                                XXXX 
                       WRITE(WSAA,10,RC);                                XXXX 
                       RETURN;
                       END
  
                   IF B<0,42>RPTNAME[I] EQ 0
                   THEN      # IF AT END OF LIST                       #
                     BEGIN
                     RETURN;
                     END
                   C<1,7>WSA0[0]=RPTNAME[I];                             XXXX 
                   IF TEXTFG[I] AND RPTNAME[I] EQ "ATEXT" AND RPTLEN[I]  XXXX 
                   EQ 5 THEN C<1,7>WSA0[0]=" (TEXT)";                    XXXX 
                   C<8,2>WSA0[0]="  ";                                   XXXX 
                   WSA1[0]="   FROM   ";                                 XXXX 
                   C<0,7>WSA2[0]=FROMLFN[I];                             XXXX 
                   WRITE(WSAA,30,RC);                                    XXXX 
                   END                                                   XXXX 
               END                                                       XXXX 
          RETURN; 
          END 
  
  
  
  
#----------------------------------------------------------------------#
  
  
  
  
#----------------------------------------------------------------------#
#                                                                      #
#     R P T C L R                                                      #
#                                                                      #
# SETS *RPTFLAG* FALSE. INDICATES WE ARE NO LONGER BUILDING REPORT     #
# TABLES.                                                              #
  
      XDEF PROC RPTCLR; 
      PROC RPTCLR;
      BEGIN 
      RPTFLAG = FALSE;             # NO LONGER BUILDING REPORT TABLES  #
      STDNO;                       # NORMAL RETURN TO SYNTAX DRIVER    #
      END 
  
  
  
  
#----------------------------------------------------------------------#
#                                                                      #
# START OF EXECUTABLE CODE FOR    R P T E X I T                        #
  
      BEGIN 
      IF RPTOVL EQ O"12"           # IF *COMPILE*                      #
      THEN
        BEGIN 
        PRINTPS;                   # PRINT REQUIRED PREFACE/SUMMARY RPT#
        END 
  
      RPTFLAG = FALSE;             # NO LONGER BUILDING REPORT TABLES  #
      IF NOT NONEMPTYRPT THEN      # IF REPORT IS EMPTY...             #
        BEGIN 
        FULLSYNTX = FALSE;
        READFROM = S"INPUT";
        IF SM$GROUPID NQ 0 THEN    # IF GROUP ID HAS BEEN ALLOCATED... #
           BEGIN
           CMM$FGR(SM$GROUPID);    # FREE GROUP OF BLOCKS              #
           SM$GROUPID = 0;         # INDICATE NO GROUP ID ALLOCATED    #
           END
        STDNO;
        END 
  
      PRIMARY = RPTOVL;            # SELECT APPROPRIATE OVERLAY        #
      SSECONDAR = PRECOMP$OVL;     # SET SO ENTER PREPARE OVERLAY UPON #
                                   # RETURN FROM REPORT PREPARATION    #
      EXIT10;                      # LOAD EXECUTION OVERLAY            #
      END 
  
  
  
  
#----------------------------------------------------------------------#
#                                                                      #
#     R P T S E T                                                      #
#                                                                      #
# SETS *RPTFLAG* TRUE. INDICATES WE ARE ACTIVELY BUILDING REPORT TABLES#
  
      XDEF PROC RPTSET; 
      PROC RPTSET;
      BEGIN 
      RPTFLAG = TRUE;              # ACTIVELY BUILDING REPORT TABLES   #
      STDNO;                       # NORMAL RETURN TO SYNTAX DRIVER    #
      END 
  
  
  
  
#----------------------------------------------------------------------#
  
  
      END 
      TERM
