*DECK DB$COUT 
USETEXT UTCITTX 
USETEXT MDBCMTX 
      PROC DB$COUT; 
 #
  
  *   DB$COUT - PUT STATISTICS ON OUTPUT FILE    PAGE  1
  *   STEVEN P. LEVIN                            DATE  02/03/76 
  
  DC  PURPOSE 
  
      PUT SUCCESSFUL CST BUILDER COMPLETION STATISTICS ON OUTPUT FILE.
  
  DC  ENTRY CONDITIONS
  
      AT THE TIME DB$COUT IS CALLED, THE CST SHOULD HAVE BEEN ALREADY 
      SUCCESSFULLY BUILT AND WRITTEN TO THE MASTER DIRECTORY FILE.
      THE FOLLOWING COMMON ITEMS SHOULD HAVE BEEN GIVEN VALID VALUES: 
      CONNBEXA - CONSTRAINT-INVOLVED NUMBER OF EXTENDED AREA ENTRIES
      CONSTNUM - CONSTRAINT INTEGRITY TABLE NUMBER OF RELEVANT ENTRIES
      LENTHCST - WORD LENGTH OF THE CST IN THE MASTER DIRECTORY FILE
      LENTOCAP - WORD LENGTH TO THE MAPPING CAPSULE TABLE 
      LENTOCON - WORD LENGTH TO THE FIRST CONSTRAINT WORK BLOCK 
      LENTOOPT - WORD LENGTH TO THE PROCEDURE OPTION TABLE
      LENTOREC - WORD LENGTH TO THE FIRST RECORD WORK BLOCK 
      LENTOREL - WORD LENGTH TO THE FIRST RELATION WORK BLOCK 
      MCLENARE - MAPPING CAPSULE TABLE LENGTH OF AREA CAPSULE ENTRIES 
      MCLENREC - MAPPING CAPSULE TABLE LENGTH OF REC CAPSULE ENTRIES
      MCLENTOT - MAPPING CAPSULE TABLE LENGTH OF TOTAL CAPSULE ENTRIES
      MCNUMARE - MAPPING CAPSULE TABLE NUMBER OF AREA CAPSULE ENTRIES 
      MCNUMREC - MAPPING CAPSULE TABLE NUMBER OF REC CAPSULE ENTRIES
      NAMESCHE - BLANK-FILLED SCHEMA NAME 
      NAMESUBS - BLANK-FILLED SUBSCHEMA NAME
      OUTTIME  - CP TIME IN SECONDS AT CST BUILDER START (FOR OUTPUT) 
      OUTWARN  - TRUE IFF WARNING FOR SCHEMA DATES OR TIMES DIFFERENT 
      PLCURENT - PRIVACY LOCK TABLE CURRENT LENGTH IN WORDS 
      PLNUMBER - PRIVACY LOCK TABLE NUMBER OF ENTRIES 
      POCURENT - PROCEDURE OPTION TABLE CURRENT LENGTH IN WORDS 
      PONUMBER - PROCEDURE OPTION TABLE NUMBER OF ENTRIES 
      SBNUMARE - SUBSCHEMA TOTAL NUMBER OF AREA ENTRIES 
      SBNUMREC - SUBSCHEMA TOTAL NUMBER OF RECORD ENTRIES 
      SBNUMREL - SUBSCHEMA TOTAL NUMBER OF RELATION ENTRIES 
      WRNMSGCTR- WARNING MESSAGE COUNTER FOR MASTER DIRECTORY UTILITY 
  
  DC  EXIT CONDITIONS 
  
      UPON NORMAL RETURN FROM DB$COUT, THE OUTPUT FILE WILL CONTAIN 
      SUCCESSFUL CST BUILDER COMPLETION STATISTICS FOR THE CST BUILT. 
      ALSO, THE OUTPUT FILE MAY CONTAIN SOME SPECIAL WARNING MESSAGES.
  
  DC  CALLING ROUTINES
  
      DB$CBLD - CONDENSED SCHEMA/SUBSCHEMA TABLE BUILDER MAIN MODULE
  
  DC  CALLED ROUTINES 
  
      DB$CDIS - FUNCTION TO CONVERT A NUMBER INTO DISPLAY CODE
      DB$EPRT - UTILITY PROC TO ENSURE PRINTING OF AN (ERROR) MESSAGE 
      DB$UENL - UTILITY PROC TO ENSURE THERE ARE ENOUGH LINES ON PAGE 
      DB$UPRT - UTILITY PROC TO PRINT A MESSAGE (LINE) ON OUTPUT FILE 
      SECOND  - FORTRAN LIBRARY SUBPROGRAM FOR CENTRAL PROCESSOR TIME 
  
  DC  NON-LOCAL VARIABLES 
  
      WRNMSGCTR- WARNING MESSAGE COUNTER FOR MASTER DIRECTORY UTILITY 
  
  DC  DESCRIPTION 
  
      FILL IN NAMES IN THE OUTPUT MESSAGE SUBSCHEMA AND SCHEMA LINES. 
      CALL DB$UENL, AND OUTPUT STATISTICS, SUBSCHEMA AND SCHEMA LINES.
      OUTPUT CATEGORY AND ENTRY STATISTICS TABLE COLUMN HEADER LINES. 
      FILL IN AND OUTPUT THE AREA, AREA CAPSULE, AND CONSTRAINT LINES.
      FILL IN AND OUTPUT THE GENERAL, LOCK AND PROCEDURE DETAIL LINES.
      FILL IN AND OUTPUT REC, REC CAPSULE, AND RELATION DETAIL LINES. 
      FILL IN AND OUTPUT THE TOTAL LINE, WITH A ROUNDOFF-BASED LENGTH.
      IF THE CST TOTAL LENGTH IS SUFFICIENTLY LARGE, OUTPUT A WARNING.
      IF THE CST NON-CAPSULE SIZE IS SUFFICIENTLY BIG, OUTPUT WARNING.
      IF THE CST MAP CAPSULE SIZE IS SUFFICIENTLY BIG, OUTPUT WARNING.
      IF SCHEMA DATES OR TIMES ARE DIFFERENT, OUTPUT A WARNING LINE.
      FILL IN AND OUTPUT SECONDS LINE, OUTPUT A BLANK LINE AND RETURN.
  
 #
        CONTROL EJECT;
  
        BEGIN                # DB$COUT #
  
# THE FOLLOWING ARE EXTERNALLY REFERENCED FUNCTIONS, PROCS AND ARRAYS#
  
        XREF FUNC DB$CDEB C(10);  # TO DECIMAL WITH LEADING BLANKS #
        XREF FUNC DB$CDEC C(10);  # TO DECIMAL WITH LEADING ZEROS # 
        XREF FUNC DB$COCB C(10);  # TO OCTAL WITH LEADING BLANKS #
        XREF PROC DB$EPRT;   # UTILITY PROC TO ENSURE PRINTING A LINE#
        XREF PROC DB$UENL;   # UTILITY PROC TO ENSURE ENOUGH LINES #
        XREF PROC DB$UPRT;   # UTILITY PROC TO PRINT A LINE ON OUTPUT#
        XREF PROC SECOND;    # FORTRAN LIBRARY SUBPROGRAM FOR CP TIME#
        XREF ARRAY DB$RA0;;  # COMPASS ENTRY POINT AT ADDRESS RA + 0 #
  
        CONTROL NOLIST;      # COMDECKS UTCDFDCLS UTCITDCLS MDBCMDCLS#
*CALL UTCDFDCLS 
        CONTROL LIST;        # RESUME THE LISTING OF THE SOURCE CODE #
  
# THE FOLLOWING LOCAL ITEMS ARE COUNTS, FLAGS, AND TEMPORARIES #
  
        ITEM TEMPINT I;      # A TEMPORARY SIGNED INTEGER VARIABLE #
        ITEM TOTPCENT I;     # TOTAL PERCENT OF WORDS IN THE CST #
        ITEM USEDTIME R;     # CENTRAL PROCESSOR TIME USED IN SECONDS#
  
# THE FOLLOWING LOCAL ITEMS ARE TEXTS TO FILL IN WARNING MESSAGES # 
  
        ITEM WARNTOTL C(64) =          # WARNING TOTAL LENGTH TEXT #
   "FOR CDCS CORE LENGTH NOTE CST TOTAL SIZE OF          OCTAL WORDS";
        ITEM WARNNONC C(64) =          # WARNING NON-CAPSULE LENGTH # 
   "CST SIZE EXCLUDING CAPSULES NEAR MAXIMUM OF          OCTAL WORDS";
        ITEM WARNCAPS C(64) =          # WARNING MAP CAPSULE LENGTH # 
   "CST SIZE OF ALL CAPSULES IS NEAR MAXIMUM OF          OCTAL WORDS";
        ITEM WARNSCHE C(64) =          # WARNING SCHEMA NOT PRIOR ONE#
   "CURRENT SCHEMA MAY NOT BE PRIOR ONE USED FOR MD AND/OR SUBSCHEMA";
  
# THE FOLLOWING LOCAL ARRAY IS FOR THE OUTPUT MESSAGE SUBSCHEMA LINE #
  
        ARRAY MESUBSCH[0:0] P(5);      # MESSAGE SUBSCHEMA LINE # 
  
          BEGIN              # MESUBSCH ARRAY # 
  
            ITEM MESUBSCA C(0,0,11) = [" SUBSCHEMA "];     # CONSTANT#
            ITEM MESUBNAM C(1,6,30) = [" "];     # FILLED IN BY NAME #
            ITEM MESUBSCB C(4,6,9) = ["         "];        # CONSTANT#
  
          END                # MESUBSCH ARRAY # 
  
# THE FOLLOWING LOCAL ARRAY IS FOR THE OUTPUT MESSAGE SCHEMA LINE # 
  
        ARRAY MESCHEMA[0:0] P(5);      # OUTPUT MESSAGE SCHEMA LINE # 
  
          BEGIN              # MESCHEMA ARRAY # 
  
            ITEM MESCHEMB C(0,0,11) = [" OF SCHEMA "];     # CONSTANT#
            ITEM MESCHNAM C(1,6,30) = [" "];     # FILLED IN BY NAME #
            ITEM MESCHEMC C(4,6,9) = ["         "];        # CONSTANT#
  
          END                # MESCHEMA ARRAY # 
        CONTROL EJECT;
  
# THE FOLLOWING LOCAL ARRAY IS FOR A STATISTICS TABLE DETAIL LINE # 
  
        ARRAY MEDETAIL[0:0] P(7);      # OUTPUT MESSAGE DETAIL LINE # 
  
          BEGIN              # MEDETAIL ARRAY # 
  
            ITEM MEDETAIA C(0,0,1) = [" "];      # CARRIAGE CONTROL # 
            ITEM MEDECATE C(0,6,12) = ["            "];    # FILL IN #
            ITEM MEDETAIB C(1,18,1) = [" "];     # CONSTANT BLANK # 
            ITEM MEDEENTR C(1,24,6) = ["      "];          # FILL IN #
            ITEM MEDETAIC C(2,0,2) = ["  "];     # CONSTANT BLANKS #
            ITEM MEDEOCTL C(2,12,8) = ["        "];        # FILL IN #
            ITEM MEDETAID C(3,0,4) = ["    "];             # CONSTANT#
            ITEM MEDEDECI C(3,24,6) = ["      "];          # FILL IN #
            ITEM MEDETAIE C(4,0,7) = ["       "];          # CONSTANT#
            ITEM MEDECENT C(4,42,3) = ["   "];   # FILL IN PERCENT #
            ITEM MEDETAIF C(5,0,20) = [" (ROUNDOFF OCCURRED)"]; 
  
          END                # MEDETAIL ARRAY # 
  
# THE FOLLOWING LOCAL ARRAY IS FOR AN OUTPUT MESSAGE WARNING LINE # 
  
        ARRAY MEWARNIN[0:0] P(8);      # OUTPUT MESSAGE WARNING LINE #
  
          BEGIN              # MEWARNIN ARRAY # 
  
            ITEM MEWARNIA C(0,0,16) = [" ***** WARNING, "]; 
            ITEM MEWATEXT C(1,36,64) = [" "];    # FILLED IN BY TEXT #
            ITEM MEWAOCTL C(6,0,8) = ["        "];         # FILL IN #
  
          END                # MEWARNIN ARRAY # 
  
# THE FOLLOWING LOCAL ARRAY IS FOR THE OUTPUT MESSAGE SECONDS LINE #
  
        ARRAY MESECOND[0:0] P(4);      # OUTPUT MESSAGE SECONDS LINE #
  
          BEGIN              # MESECOND ARRAY # 
  
            ITEM MESECONA C(0,0,22) = [" THE CST BUILDER USED "]; 
            ITEM MESECINT C(2,12,4) = ["    "];  # FILL IN AN INTEGER#
            ITEM MESECONB C(2,36,1) = ["."];     # CONSTANT DEC POINT#
            ITEM MESECFRA C(2,42,3) = ["   "];   # FILL IN A FRACTION#
            ITEM MESECONC C(3,0,10) = [" SECONDS  "];      # CONSTANT#
  
          END                # MESECOND ARRAY # 
        CONTROL EJECT;
  
# FILL IN THE NAMES IN THE OUTPUT MESSAGE SUBSCHEMA AND SCHEMA LINES #
  
        MESUBNAM[0] = NAMESUBS;        # BLANK-FILLED SUBSCHEMA NAME #
        MESCHNAM[0] = NAMESCHE;        # BLANK-FILLED SCHEMA NAME # 
  
# CALL DB$UENL, AND OUTPUT STATISTICS, SUBSCHEMA, AND SCHEMA LINES #
  
        IF OUTWARN OR LENTHCST GR DFCSTMAX / 4   # IF WARNING MESSAGE#
          OR MCLENTOT GR (3 * DFCAPMAX) / 4      # WILL BE OUTPUT # 
            THEN             # WARNING MESSAGE(S), SO ENSURE OUTPUT # 
              BEGIN 
                XCALL DB$UENL(22);     # ENSURE 22 LINES LEFT ON PAGE#
                XCALL DB$EPRT          # STATISTICS LINE FOR WARNINGS#
                      ("0CST BUILDER STATISTICS / WARNINGS FOR",38);
                XCALL DB$EPRT(MESUBSCH,50);      # SUBSCHEMA LINE # 
                XCALL DB$EPRT(MESCHEMA,50);      # OUTPUT SCHEMA LINE#
              END 
            ELSE             # NO WARNING MESSAGE, OUTPUT NOT ENSURED#
              BEGIN 
                XCALL DB$UENL(18);     # ENSURE 18 LINES LEFT ON PAGE#
                XCALL DB$UPRT          # STATISTICS LINE (NO WARNING)#
                      ("0CST BUILDER STATISTICS FOR THE CST FOR",39); 
                XCALL DB$UPRT(MESUBSCH,50);      # SUBSCHEMA LINE # 
                XCALL DB$UPRT(MESCHEMA,50);      # OUTPUT SCHEMA LINE#
              END 
  
# OUTPUT THE CATEGORY AND ENTRY STATISTICS TABLE COLUMN HEADER LINES #
  
        XCALL DB$UPRT        # OUTPUT THE CATEGORY COLUMN HEADER LINE#
          (" CATEGORY    ENTRIES     ----WORDS IN THE CST-----",50);
        XCALL DB$UPRT        # OUTPUT THE ENTRY COLUMN HEADER LINE #
          (" OF ENTRY    IN  CST     OCTAL   DECIMAL   PERCENT",50);
  
# FILL IN AND OUTPUT AREA, AREA CAPSULE, AND CONSTRAINT DETAIL LINES #
  
        TOTPCENT = 0;                  # TOTAL PERCENT OF CST WORDS # 
        MEDECATE[0] = "AREA";          # FILL IN DETAIL LINE CATEGORY#
        MEDEENTR[0] = DB$CDEB(SBNUMARE + CONNBEXA,6); 
        TEMPINT = LENTOREC - DFCSTFIX;           # WORDS FOR AREAS #
        MEDEOCTL[0] = DB$COCB(TEMPINT,8);                  # OCTAL #
        MEDEDECI[0] = DB$CDEB(TEMPINT,6);                  # DECIMAL #
        TEMPINT = ((TEMPINT * 100.0) / LENTHCST) + 0.5;    # PERCENT #
        MEDECENT[0] = DB$CDEB(TEMPINT,3);                  # OF WORDS#
        TOTPCENT = TOTPCENT + TEMPINT; # TOTAL PERCENT OF CST WORDS # 
        XCALL DB$UPRT(MEDETAIL,50);    # OUTPUT THE AREA DETAIL LINE #
        MEDECATE[0] = "AREA CAPSULE";  # FILL IN DETAIL LINE CATEGORY#
        MEDEENTR[0] = DB$CDEB(MCNUMARE,6);                 # ENTRIES #
        MEDEOCTL[0] = DB$COCB(MCLENARE,8);                 # OCTAL #
        MEDEDECI[0] = DB$CDEB(MCLENARE,6);                 # DECIMAL #
        TEMPINT = ((MCLENARE * 100.0) / LENTHCST) + 0.5;   # PERCENT #
        MEDECENT[0] = DB$CDEB(TEMPINT,3);                  # OF WORDS#
        TOTPCENT = TOTPCENT + TEMPINT; # TOTAL PERCENT OF CST WORDS # 
        XCALL DB$UPRT(MEDETAIL,50);    # OUTPUT THE AREA CAPSULE LINE#
  
        MEDECATE[0] = "CONSTRAINT";     # FILL IN DETAIL LINE CATAGORY #
        MEDEENTR[0] = DB$CDEB(CONSTNUM,6);                 # ENTRIES   #
        TEMPINT = LENTOOPT - LENTOCON;          # WORDS FOR CONSTRAINT #
        MEDEOCTL[0] = DB$COCB(TEMPINT,8);                  # OCTAL     #
        MEDEDECI[0] = DB$CDEB(TEMPINT,6);                  # DECIMAL   #
        TEMPINT = ((TEMPINT * 100.0) / LENTHCST) + 0.5;   # PERCENT    #
        MEDECENT[0] = DB$CDEB(TEMPINT,3);                  # OF WORDS  #
        TOTPCENT = TOTPCENT + TEMPINT;  # TOTAL PERCENT OF CST WORDS   #
        XCALL DB$UPRT(MEDETAIL,50);     # OUTPUT CONSTRAINT DETAIL LINE#
  
# FILL IN AND OUTPUT THE GENERAL, LOCK, AND PROCEDURE DETAIL LINES #
  
        MEDECATE[0] = "GENERAL";       # FILL IN DETAIL LINE CATEGORY#
        MEDEENTR[0] = "     1";        # ONE GENERAL ENTRY IN THE CST#
        IF MCLENTOT EQ 0     # CHECK IF THERE ARE NO MAPPING CAPSULES#
          THEN TEMPINT = DFCSTFIX + 1;           # FIXED + CHECKSUM # 
          ELSE TEMPINT = DFCSTFIX + 3;           #+CHECKSUMS+CAP HEAD#
        MEDEOCTL[0] = DB$COCB(TEMPINT,8);                  # OCTAL #
        MEDEDECI[0] = DB$CDEB(TEMPINT,6);                  # DECIMAL #
        TEMPINT = ((TEMPINT * 100.0) / LENTHCST) + 0.5;    # PERCENT #
        MEDECENT[0] = DB$CDEB(TEMPINT,3);                  # OF WORDS#
        TOTPCENT = TOTPCENT + TEMPINT; # TOTAL PERCENT OF CST WORDS # 
        XCALL DB$UPRT(MEDETAIL,50);    # OUTPUT GENERAL DETAIL LINE # 
        MEDECATE[0] = "LOCK";          # FILL IN DETAIL LINE CATEGORY#
        MEDEENTR[0] = DB$CDEB(PLNUMBER,6);                 # ENTRIES #
        MEDEOCTL[0] = DB$COCB(PLCURENT,8);                 # OCTAL #
        MEDEDECI[0] = DB$CDEB(PLCURENT,6);                 # DECIMAL #
        TEMPINT = ((PLCURENT * 100.0) / LENTHCST) + 0.5;   # PERCENT #
        MEDECENT[0] = DB$CDEB(TEMPINT,3);                  # OF WORDS#
        TOTPCENT = TOTPCENT + TEMPINT; # TOTAL PERCENT OF CST WORDS # 
        XCALL DB$UPRT(MEDETAIL,50);    # OUTPUT THE LOCK DETAIL LINE #
        MEDECATE[0] = "PROCEDURE";     # FILL IN DETAIL LINE CATEGORY#
        MEDEENTR[0] = DB$CDEB(PONUMBER,6);                 # ENTRIES #
        MEDEOCTL[0] = DB$COCB(POCURENT,8);                 # OCTAL #
        MEDEDECI[0] = DB$CDEB(POCURENT,6);                 # DECIMAL #
        TEMPINT = ((POCURENT * 100.0) / LENTHCST) + 0.5;   # PERCENT #
        MEDECENT[0] = DB$CDEB(TEMPINT,3);                  # OF WORDS#
        TOTPCENT = TOTPCENT + TEMPINT; # TOTAL PERCENT OF CST WORDS # 
        XCALL DB$UPRT(MEDETAIL,50);    # OUTPUT PROCEDURE DETAIL LINE#
  
# FILL IN AND OUTPUT THE REC, REC CAPSULE, AND RELATION DETAIL LINES #
  
        MEDECATE[0] = "REC";           # FILL IN DETAIL LINE CATEGORY#
        MEDEENTR[0] = DB$CDEB(SBNUMREC,6);                 # ENTRIES #
        TEMPINT = LENTOREL - LENTOREC;           # WORDS FOR RECORDS #
        MEDEOCTL[0] = DB$COCB(TEMPINT,8);                  # OCTAL #
        MEDEDECI[0] = DB$CDEB(TEMPINT,6);                  # DECIMAL #
        TEMPINT = ((TEMPINT * 100.0) / LENTHCST) + 0.5;    # PERCENT #
        MEDECENT[0] = DB$CDEB(TEMPINT,3);                  # OF WORDS#
        TOTPCENT = TOTPCENT + TEMPINT; # TOTAL PERCENT OF CST WORDS # 
        XCALL DB$UPRT(MEDETAIL,50);    # OUTPUT THE REC DETAIL LINE # 
        MEDECATE[0] = "REC CAPSULE";   # FILL IN DETAIL LINE CATEGORY#
        MEDEENTR[0] = DB$CDEB(MCNUMREC,6);                 # ENTRIES #
        MEDEOCTL[0] = DB$COCB(MCLENREC,8);                 # OCTAL #
        MEDEDECI[0] = DB$CDEB(MCLENREC,6);                 # DECIMAL #
        TEMPINT = ((MCLENREC * 100.0) / LENTHCST) + 0.5;   # PERCENT #
        MEDECENT[0] = DB$CDEB(TEMPINT,3);                  # OF WORDS#
        TOTPCENT = TOTPCENT + TEMPINT; # TOTAL PERCENT OF CST WORDS # 
        XCALL DB$UPRT(MEDETAIL,50);    # OUTPUT THE REC CAPSULE LINE #
        MEDECATE[0] = "RELATION";      # FILL IN DETAIL LINE CATEGORY#
        MEDEENTR[0] = DB$CDEB(SBNUMREL,6);                 # ENTRIES #
        TEMPINT = LENTOCON - LENTOREL;         # WORDS FOR RELATIONS   #
        MEDEOCTL[0] = DB$COCB(TEMPINT,8);                  # OCTAL   #
        MEDEDECI[0] = DB$CDEB(TEMPINT,6);                  # DECIMAL #
        TEMPINT = ((TEMPINT * 100.0) / LENTHCST) + 0.5;    # PERCENT #
        MEDECENT[0] = DB$CDEB(TEMPINT,3);                  # OF WORDS#
        TOTPCENT = TOTPCENT + TEMPINT; # TOTAL PERCENT OF CST WORDS # 
        XCALL DB$UPRT(MEDETAIL,50);    # OUTPUT RELATION DETAIL LINE #
  
# FILL IN AND OUTPUT THE TOTAL LINE, WITH A LENGTH BASED ON ROUNDOFF #
  
        MEDECATE[0] = "TOTAL";         # FILL IN DETAIL LINE CATEGORY#
        MEDEENTR[0] = DB$CDEB((SBNUMARE + CONNBEXA) + MCNUMARE
                              + CONSTNUM + 1 + PLNUMBER 
                              + PONUMBER + SBNUMREC + MCNUMREC
                              + SBNUMREL,6);               # ENTRIES #
        MEDEOCTL[0] = DB$COCB(LENTHCST,8);                 # OCTAL #
        MEDEDECI[0] = DB$CDEB(LENTHCST,6);                 # DECIMAL #
        MEDECENT[0] = DB$CDEB(TOTPCENT,3);                 # PERCENT #
        IF TOTPCENT EQ 100   # CHECK IF TOTAL PERCENT OF WORDS IS 100#
          THEN XCALL DB$UPRT(MEDETAIL,50);       # NORMAL TOTAL LINE #
          ELSE XCALL DB$UPRT(MEDETAIL,70);       # ROUNDOFF OCCURRED #
  
# IF THE CST TOTAL LENGTH IS SUFFICIENTLY LARGE OUTPUT A WARNING LINE#
  
        IF LENTHCST GR DFCSTMAX / 4              # IF CST LENGTH BIG #
          THEN               # OUTPUT CST TOTAL LENGTH WARNING LINE # 
            BEGIN 
              MEWATEXT[0] = WARNTOTL;            # TOTAL LENGTH TEXT #
              MEWAOCTL[0] = DB$COCB(LENTHCST,8);           # CST SIZE#
              XCALL DB$EPRT(MEWARNIN,80);        # OUTPUT THE WARNING#
              WRNMSGCTR = WRNMSGCTR + 1;         # WARN MESSAGE COUNT#
            END 
  
# IF THE CST NON-CAPSULE LENGTH IS SUFFICIENTLY LARGE, OUTPUT WARNING#
  
        IF LENTOCAP GR (3 * DFCSTMAX) / 4        # IF > (3*MAXIMUM)/4#
          THEN               # OUTPUT NON-CAPSULE LENGTH WARNING LINE#
            BEGIN 
              MEWATEXT[0] = WARNNONC;            # NON-CAPSULE TEXT # 
              MEWAOCTL[0] = DB$COCB(DFCSTMAX,8);           # MAXIMUM #
              XCALL DB$EPRT(MEWARNIN,80);        # OUTPUT THE WARNING#
              WRNMSGCTR = WRNMSGCTR + 1;         # WARN MESSAGE COUNT#
            END 
  
# IF THE CST MAP CAPSULE LENGTH IS SUFFICIENTLY LARGE, OUTPUT WARNING#
  
        IF MCLENTOT GR (3 * DFCAPMAX) / 4        # IF > (3*MAXIMUM)/4#
          THEN               # OUTPUT MAP CAPSULE LENGTH WARNING LINE#
            BEGIN 
              MEWATEXT[0] = WARNCAPS;            # MAP CAPSULE TEXT # 
              MEWAOCTL[0] = DB$COCB(DFCAPMAX,8);           # MAXIMUM #
              XCALL DB$EPRT(MEWARNIN,80);        # OUTPUT THE WARNING#
              WRNMSGCTR = WRNMSGCTR + 1;         # WARN MESSAGE COUNT#
            END 
  
# IF THE SCHEMA DATES OR TIMES ARE DIFFERENT, OUTPUT A WARNING LINE # 
  
        IF OUTWARN           # IF SCHEMA DATES OR TIMES ARE DIFFERENT#
          THEN               # OUTPUT SCHEMA NOT PRIOR WARNING LINE # 
            BEGIN 
              MEWATEXT[0] = WARNSCHE;            # SCHEMA PRIOR TEXT #
              XCALL DB$EPRT(MEWARNIN,80);        # OUTPUT THE WARNING#
              WRNMSGCTR = WRNMSGCTR + 1;         # WARN MESSAGE COUNT#
            END 
  
# FILL IN AND OUTPUT THE SECONDS LINE, OUTPUT A BLANK LINE AND RETURN#
  
        XCALL SECOND(USEDTIME,DB$RA0); # CP TIME USED PUT IN USEDTIME#
        USEDTIME = USEDTIME - OUTTIME; # TIME SINCE CST BUILDER START#
        TEMPINT = USEDTIME;            # REAL TO INTEGER TRUNCATION # 
        MESECINT[0] = DB$CDEB(TEMPINT,4); # INTEGER TO DECIMAL, BLANK#
        TEMPINT = 1000 * (USEDTIME - TEMPINT);   # FRACTIONAL PART #
        MESECFRA[0] = DB$CDEC(TEMPINT,3); # INTEGER TO DECIMAL, ZERO #
        XCALL DB$UPRT(MESECOND,40);    # OUTPUT THE USED SECONDS LINE#
        XCALL DB$UPRT("  ",2);         # OUTPUT COMPLETELY BLANK LINE#
  
        RETURN;              # STATISTICS ARE NOW ON THE OUTPUT FILE #
  
        END                  # DB$COUT #
  
      TERM
