*DECK,FLSTAT                                                             FLBLOCK
PRGM FLSTAT ; 
 #                                                                       CIM0718
* *   FLSTAT - UTILITY TO OUTPUT FILE STATISTICS                         CIM0718
* *   C.MCDONALD                                                         CIM0718
* *   A.F.R.BROWN (MODS TO CALL KEYTEST)
* 1DC FLSTAT                                                             CIM0718
*                                                                        CIM0718
* DC  FUNCTION                                                           CIM0718
*                                                                        CIM0718
*     UTILITY THAT OUTPUTS STATISTICAL INFORMATION CONCERNING A USERS    CIM0718
*     CRM FILE.                                                          CIM0718
*                                                                        CIM0718
* DC  ENTRY CONDITIONS                                                   CIM0718
*                                                                        CIM0718
*     THE USERS CRM FILE MUST BE DEFINED.                                CIM0718
* 
*     THE CONTROL STATEMENT FORMAT IS 
*       FLSTAT( LFN1, LFN2 )
*         LFN1 - LOGICAL FILE NAME OF CRM FILE. 
*         LFN2 - LOGICAL FILE NAME OF OUTPUT FILE, DEFAULT IS OUTPUT. 
*     OR, FOR THE SPECIAL CASE OF JUST CHECKING RMKDEF STATEMENTS 
*       FLSTAT( LFN1, LFN2, RMKDEF ) OR FLSTAT( LFN1,,RMKDEF )
*         THIS WILL READ RMKDEF STATEMENTS FROM FILE -INPUT-, THEN READ 
*         THE FIRST 20 RECORDS FROM FILE LFN1 AND COPY THEM TO FILE LFN2
*         (DEFAULT -OUTPUT- ) AS PRINTABLE LINES, WITH A KIND OF
*         UNDERLINING. THE FIELD DEFINED BY THE FIRST RMKDEF STATEMENT
*         HAS 1S PRINTED UNDER IT, THE FIELD FOR THE SECOND RMKDEF
*         STATEMENT HAS 2S PRINTED UNDER IT, AND SO ON UP TO 9 RMKDEF 
*         STATEMENTS. IF A RECORD IS LONGER THAN 1000 CHARACTERS, ONLY
*         THE FIRST 1000 ARE PRINTED. WHEN AN RMKDEF STATEMENT INDICATES
*         REPEATING GROUPS, THIS IS IGNORED, AND ONLY THE FIRST FIELD 
*         CONTAINING THE ALTERNATE KEY IS MARKED. THIS IS INTENDED TO BE
*         A QUICK CHECK ON THE RKW, RKP, AND KL PARAMETERS IN THE 
*         RMKDEF STATEMENTS, NOT AN EXHAUSTIVE VERIFICATION.
*                                                                        CIM0718
* DC  EXIT CONDITIONS                                                    CIM0718
*                                                                        CIM0718
*     FILE STATISTICS HAVE BEEN OUTPUT TO A USER SPECIFIED FILE OR       CIM0718
*     TO OUTPUT.                                                         CIM0718
*                                                                        CIM0718
* DC  ERROR CONDITIONS                                                   CIM0718
*                                                                        CIM0718
*     FLSTAT ABORTS WITH AN INFORMATIVE DAYFILE MESSAGE WHEN             CIM0718
*      - NO INPUT FILE IS SPECIFIED.                                     CIM0718
*      - THE INPUT FILE ORGANIZATION IS UNKNOWN.
*                                                                        CIM0718
* DC  CALLED ROUTINES                                                    CIM0718
*                                                                        CIM0718
*     FILESQ - CRM FTNIF ROUTINE.                                        CIM0718
*     OPENM  - CRM FTNIF ROUTINE.                                        CIM0718
*     CLOSEM - CRM FTNIF ROUTINE.                                        CIM0718
*     GET    - CRM FTNIF ROUTINE.                                        CIM0718
*     PUT    - CRM FTNIF ROUTINE.                                        CIM0718
*     XCDDL  - CONVERTS INTEGER TO ITS DECIMAL DISPLAY CODED EQUIVALENT. CIM0718
*     CFG    - CONVERTS FLOATING POINT NUMBER TO G (DISPLAY) FORMAT.
*     MESSAGE - OUTPUTS ERROR MESSAGES TO THE USERS DAYFILE.             CIM0718
*     KEYTEST - DOES ALL THE WORK IF THE THIRD PARAMETER IS RMKDEF. 
*                                                                        CIM0718
* DC  DESCRIPTION 
* 
*       -ABORT WITH DAYFILE MESSAGE IF NO CRM FILE IS SPECIFIED.
*       -READ CRM FILE FSTT AND CHECK THAT IT IS A DA, IS, AK, OR MIP 
*        FILE FSTT.  IF NOT, ABORT WITH DAYFILE MESSAGE.
*       -IF 3RD PARAMETER IS ((RMKDEF)), CLOSE THE FILE, AND CALL 
*        KEYTEST, PASSING PARAMETERS THAT INDICATE WHETHER THE FILE 
*        IS IS, DA, OR AK (OTHERWISE KEYTEST WOULDNT KNOW HOW TO SET
*        THE FIT FOR RE-OPENING IT AS AN AAM FILE, THE USER NOT BEING 
*        REQUIRED TO USE A FILE CARD TO SET FO.)
*       -DEPENDING ON FILE ORGANIZATION, OUTPUT RELEVANT STATISTICS TO
*        THE USERS OUTPUT FILE. 
* 
 #                                                                       CIM0718
                                                                         CIM0718
CONTROL FTNCALL ;                                                        CIM0718
      BEGIN                                                              CIM0718
CONTROL NOLIST ;         #SUPPRESS LIST OF FIT,FSTT, + ARRAY DEF DECKS #
*CALL AAMDEFS                                                            RJC0927
*CALL AAMFITHD
*CALL AAMFITDCL 
*CALL AAMFSTT                                                            CIM0718
CONTROL LIST ;           #RESUME LISTING #
  
      DEF FSTTCHSZ #SZFSTT*10# ;   # FSTT CHARACTER SIZE               # RJC0927
      DEF CIRBUFSZ #127# ;   # CIR BUFFER FOR 126 WORD FSTT # 
  
# THE FOLLOWING DEF CONTROLS THE CONDITIONAL COMPILATION OF CODE THAT  #
# OUTPUTS NON-STANDARD FILE STATISTICS.  THE VALUE OF -STATS- IS       #
# DETERMINED BY -UPDATE- DIRECTIVES.                                   #
  
*IF DEF,STATS 
*ENDIF
*IF -DEF,STATS
*ENDIF
  
      XREF                                                               CIM0718
          BEGIN                                                          CIM0718
          PROC FILESQ ;                                                  CIM0718
          PROC XCDDL ;                                                   CIM0718
          PROC CFG ;
          PROC CLOSEM ;                                                  CIM0718
          PROC OPENM ;                                                   CIM0718
          PROC GET ;                                                     CIM0718
          PROC PUT ;                                                     CIM0718
          PROC MESSAGE ;                                                 CIM0718
          PROC KEYTEST ;
          END                                                            CIM0718
      BASED ARRAY CCPARAM S(1) ;                                         CIM0718
          BEGIN                                                          CIM0718
          ITEM INFILE  C(02,00,07) ;                                     CIM0718
          ITEM OUTFILE C(03,00,07) ;                                     CIM0718
          ITEM PAR3 C(04,00,07) ; 
          ITEM PARAMCT I(52,42,18) ;                                     CIM0718
          END                                                            CIM0718
      ARRAY FIT  S(35) ; ;                                               CIM0718
      ARRAY FSTT S(SZFSTT) ; ;                                           RJC0927
      ARRAY BUF S(CIRBUFSZ) ; ; 
      ARRAY [0:0] ;                                                      CIM0718
          BEGIN                                                          CIM0718
          ITEM LFN I(00,00,60) = [0] ;                                   CIM0718
          ITEM FN  C(00,00,03) = ["LFN"] ;                               CIM0718
          END                                                            CIM0718
      ARRAY [0:0] ;                                                      CIM0718
          BEGIN                                                          CIM0718
          ITEM MRL I(00,00,60) = [0] ;                                   CIM0718
          ITEM ML  C(00,00,03) = ["MRL"] ;                               CIM0718
          END                                                            CIM0718
      ARRAY [0:0] ;                                                      CIM0718
          BEGIN                                                          CIM0718
          ITEM FL  I(00,00,60) = [0] ;                                   CIM0718
          ITEM CFL C(00,00,02) = ["FL"] ;                                CIM0718
          END                                                            CIM0718
      ARRAY [0:0] ;                                                      CIM0718
          BEGIN                                                          CIM0718
          ITEM BT  I(00,00,60) = [0] ;                                   CIM0718
          ITEM CBT C(00,00,02) = ["BT"] ;                                CIM0718
          END                                                            CIM0718
      ARRAY [0:0] ;                                                      CIM0718
          BEGIN                                                          CIM0718
          ITEM RT  I(00,00,60) = [0] ;                                   CIM0718
          ITEM CRT C(00,00,02) = ["RT"] ;                                CIM0718
          END                                                            CIM0718
      ARRAY [0:0] ;                                                      CIM0718
          BEGIN                                                          CIM0718
          ITEM C   I(00,00,60) = [0] ;                                   CIM0718
          ITEM CHC C(00,00,01) = ["C"] ;                                 CIM0718
          END                                                            CIM0718
      ARRAY [0:0] ;                                                      CIM0718
          BEGIN                                                          CIM0718
          ITEM Z   I(00,00,60) = [0] ;                                   CIM0718
          ITEM CHZ C(00,00,01) = ["Z"] ;                                 CIM0718
          END                                                            CIM0718
      ARRAY [0:0] ;                                                      CIM0718
          BEGIN                                                          CIM0718
          ITEM U   I(00,00,60) = [0] ;                                   CIM0718
          ITEM CHU C(00,00,01) = ["U"] ;                                 CIM0718
          END                                                            CIM0718
      ARRAY [0:0] ;                                                      CIM0718
          BEGIN                                                          CIM0718
          ITEM INPUT I(00,00,60) = [0] ;                                 CIM0718
          ITEM INPT  C(00,00,05) = ["INPUT"] ;                           CIM0718
          END                                                            CIM0718
      ARRAY [0:0] ;                                                      CIM0718
          BEGIN                                                          CIM0718
          ITEM OUTPUT I(00,00,60) = [0] ;                                CIM0718
          ITEM OUTPT  C(00,00,06) = ["OUTPUT"] ;                         CIM0718
          END                                                            CIM0718
      ARRAY [0:0] ;                                                      CIM0718
          BEGIN                                                          CIM0718
          ITEM N  I(00,00,60) = [0] ;                                    CIM0718
          ITEM OF C(00,00,01) = ["N"] ;                                  CIM0718
          END                                                            CIM0718
      ARRAY [0:0] ; 
          BEGIN 
          ITEM BFS I(00,00,60) = [0] ;
          ITEM CBF C(00,00,03) = ["BFS"] ;
          END 
      ARRAY [0:0] ; 
          BEGIN 
          ITEM FWB I(00,00,60) = [0] ;
          ITEM CFW C(00,00,03) = ["FWB"] ;
          END 
      ARRAY DFMSG1 [0:0] P(3) ;                                          CIM0718
          BEGIN                                                          CIM0718
          ITEM DYFMSG1 C(00,00,28) = ["NO INPUT FILE SPECIFIED"] ;       CIM0718
          ITEM MSGTRM1 I(02,48,12) = [O"0000"] ;                         CIM0718
          END                                                            CIM0718
      ARRAY DFMSG2 [0:0] P(4) ;                                          CIM0718
          BEGIN                                                          CIM0718
          ITEM DYFMSG2 C(00,00,38) =                                     CIM0718
                                   ["INPUT FILE ORGANIZATION UNKNOWN"] ; CIM0718
          ITEM MSGTRM2 I(03,48,12) = [O"0000"] ;                         CIM0718
          END                                                            CIM0718
                                                                         CIM0718
      ITEM I I ;             #INDUCTION VARIABLE#                        CIM0718
      ITEM INLFN  I = 0 ;    #INPUT FILE NAME FROM USER CONTROL CARD#    CIM0718
      ITEM OUTLFN I = 0 ;    #OUTPUT FILE NAME#                          CIM0718
      ITEM RESULT C(10) ;    #CONVERSION RESULT#                         CIM0718
      ITEM RESLT2 C(10) ;    #CONVERSION RESULT2# 
      ITEM BITCNT I ;        #BIT COUNT OF CONVERSION RESULT#            CIM0718
      ITEM ISFILE  B = FALSE ;   #TYPE OF FILE ORGANIZATION FLAG#        CIM0718
      ITEM MIPFILE B = FALSE ;   #TYPE OF FILE ORGANIZATION FLAG#        CIM0718
      ITEM DAFILE  B = FALSE ;   #TYPE OF FILE ORGANIZATION FLAG#        CIM0718
      ITEM AKFILE  B = FALSE ;   #TYPE OF FILE ORGANIZATION FLAG#        CIM0718
                                                                         CIM0718
      ITEM MSG1  C(30) = "1STATISTICS FOR FILE" ;                        CIM0718
      ITEM MSG2  C(30) = "-ORGANIZATION-------" ; 
      ITEM MSG3  C(30) = " CREATION DATE------" ; 
      ITEM MSG4  C(30) = " DATE OF LAST CLOSE-" ; 
      ITEM MSG5  C(30) = " TIME OF LAST CLOSE-" ; 
      ITEM MSG6  C(20) = " FILE IS MIPPED" ;                             RJC1010
      ITEM MSG7  C(20) = " FILE IS NOT MIPPED" ;                         RJC1010
      ITEM MSG46 C(30) = " COLLATION IS STANDARD" ; 
      ITEM MSG47 C(30) = " COLLATION IS USER DEFINED" ; 
      ITEM MSG8  C(30) = " FILE IS DISASSOCIATED" ;                      CIM0718
      ITEM MSG9  C(20) = " FILE IS COMPRESSED" ;                         CIM0718
      ITEM MSG10 C(40) = " SYSTEM COMPRESSION ROUTINE" ;
      ITEM MSG11 C(30) = " FILE WAS NOT CLOSED PROPERLY" ;               CIM0718
      ITEM MSG12 C(20) = " FILE IS CHECKSUMMED" ;                        CIM0718
      ITEM MSG13 C(20) = " FILE IS RUINED" ;                             CIM0718
      ITEM MSG14 C(40) = " ALL 15 INDEX LEVELS ARE FILLED" ;             CIM0718
      ITEM MSG15 C(30) = " PRIMARY KEY INFORMATION" ;                    RJC1010
      ITEM MSG16 C(30) = "   KEY IS NOT EMBEDDED" ;                      CIM0718
      ITEM MSG17 C(40) = "   STARTING WORD POSITION ------" ;            CIM0718
      ITEM MSG18 C(40) = "   STARTING CHARACTER POSITION -" ;            CIM0718
      ITEM MSG19 C(40) = "   TYPE --" ;                                  CIM0718
      ITEM MSG20 C(40) = "   LENGTH IN CHARACTERS --------" ;            CIM0718
      ITEM MSG21 C(30) = " MAXIMUM RECORD SIZE" ;                        RJC1010
      ITEM MSG22 C(30) = " MINIMUM RECORD SIZE" ;                        CIM0718
      ITEM MSG23 C(20) = " TOTAL TRANSACTIONS" ;                         RJC1010
      ITEM MSG24 C(34) = "   NUMBER OF PUTS ------" ; 
      ITEM MSG25 C(34) = "   NUMBER OF GETS ------" ; 
      ITEM MSG26 C(34) = "   NUMBER OF DELETES ---" ; 
      ITEM MSG27 C(34) = "   NUMBER OF REPLACES --" ; 
      ITEM MSG48 C(34) = "   NUMBER OF GETNEXTS --" ; 
      CONTROL IFEQ STATS,1 ;
      ITEM MSG49 C(34) = "   NUMBER OF SEEKS -----" ; 
      ITEM MSG50 C(34) = "   NUMBER OF GETNRS ----" ; 
      CONTROL ENDIF ; 
      ITEM MSG28 C(34) = " NUMBER OF BLOCKS-------" ; 
      ITEM MSG29 C(34) = " NUMBER OF EMPTY BLOCKS-" ; 
      ITEM MSG30 C(30) = " BLOCK SIZE IN PRUS-----" ; 
      ITEM MSG31 C(34) = " NUMBER OF DATA RECORDS-" ; 
      ITEM MSG32 C(42) = " FILE LENGTH IN PRUS" ; 
      ITEM MSG33 C(40) = " NUMBER OF INDEX LEVELS IN USE" ; 
      ITEM MSG44 C(50) = " MAX NUMBER OF LEVEL 2 INDEX LEVELS" ;
      ITEM MSG45 C(50) = " MAX NUMBER OF LEVEL 3 INDEX LEVELS" ;
      ITEM MSG36 C(30) = " ALTERNATE KEY INFORMATION" ;                  RJC1010
      ITEM MSG37 C(40) = "   NULL SUPPRESSION IS SPECIFIED" ;            CIM0718
      ITEM MSG38 C(40) = "   SCC SUPPRESSION IS SPECIFIED" ;             CIM0718
      ITEM MSG39 C(40) = "   CHARACTERS IN LARGEST KEY--" ;              CIM0718
      ITEM MSG40 C(30) = " PRIMARY KEY INFORMATION" ;                    RJC1010
      ITEM MSG41 C(30) = "   NUMBER OF UNIQUE --" ;                      CIM0718
      ITEM MSG42 C(30) = "   NUMBER OF -IS-   --" ;                      CIM0718
      ITEM MSG43 C(30) = "   NUMBER OF FIFO   --" ;                      CIM0718
      ITEM MSG53 C(20) = " CIO CALLS FOR FILE" ;                         RJC1010
      ITEM MSG54 C(34) = "   NUMBER OF READS -----" ; 
      ITEM MSG56 C(34) = "   NUMBER OF WRITES ----" ; 
      ITEM MSG57 C(34) = "   NUMBER OF RECALLS ---" ; 
      ITEM MSG58 C(34) = "   NUMBER OF REWRITES --" ; 
      ITEM MSG59 C(40) = " NUMBER OF RECORDS PER BLOCK ----- " ;         RJC0927
      ITEM MSG60 C(42) = " NUMBER OF OVERFLOW BLOCKS ------- " ;
      ITEM MSG61 C(42) = " NUMBER OF HOME BLOCKS ----------- " ;
      ITEM MSG62 C(54) = " NUMBER OF DATA RECORDS AT LAST OPEN -------";
      ITEM MSG63 C(54) = " NUMBER OF OVERFLOW RECORDS AT LAST OPEN ---";
      ITEM MSG64 C(54) = " NUMBER OF OVERFLOW BLOCKS AT LAST OPEN ----";
      ITEM MSG65 C(44) = " NUMBER OF OVERFLOW RECORDS ------ " ;
      ITEM MSG70 C( 5) = "     " ;                                       RJC1010
                                                                         CIM0718
      PROC WRITEMSGGRP1 ;                                                CIM0718
          BEGIN                                                          CIM0718
          C<21,07>MSG1 = C<00,07>INLFN ;                                 CIM0718
          PUT( FIT, MSG1, 30 ) ;                                         CIM0718
                                                                         CIM0718
          C<21,05>MSG2 = C<05,05>FSHEADW ;                               CIM0718
          PUT( FIT, MSG2, 30 ) ;                                         CIM0718
                                                                         CIM0718
          C<20,10>MSG3 = C<00,10>FSFILDAT ; 
          PUT( FIT, MSG3, 30 ) ;
                                                                         CIM0718
          C<20,10>MSG4 = C<00,10>FSTERMDAT ;                             CIM0718
          PUT( FIT, MSG4, 30 ) ;                                         CIM0718
                                                                         CIM0718
          C<20,10>MSG5 = C<00,10>FSTERMTIM ;                             CIM0718
          PUT( FIT, MSG5, 30 ) ;                                         CIM0718
          END #WRITEMSGGRP1#                                             CIM0718
                                                                         CIM0718
      PROC WRITEMSGGRP2 ;                                                CIM0718
          BEGIN                                                          CIM0718
          IF FSNCLSFLG OR FSOPENFLG                                      CIM0718
          THEN                                                           CIM0718
              BEGIN                                                      CIM0718
              PUT( FIT, MSG11, 30 ) ;                                    CIM0718
              END                                                        CIM0718
          IF FSCKSUMFLG                                                  CIM0718
          THEN                                                           CIM0718
              BEGIN                                                      CIM0718
              PUT( FIT, MSG12, 20 ) ;                                    CIM0718
              END                                                        CIM0718
          IF FSRUINFLG                                                   CIM0718
          THEN                                                           CIM0718
              BEGIN                                                      CIM0718
              PUT( FIT, MSG13, 20 ) ;                                    CIM0718
              END                                                        CIM0718
          IF(FSINXFUL EQ 1) AND (ISFILE OR MIPFILE)                      RJC0927
          THEN                                                           CIM0718
              BEGIN                                                      CIM0718
              PUT( FIT, MSG14, 40 ) ;                                    CIM0718
              END                                                        CIM0718
          END #WRITEMSGGRP2#                                             CIM0718
                                                                         CIM0718
      PROC WRITEMSGGRP3 ;                                                CIM0718
          BEGIN                                                          CIM0718
          PUT( FIT, MSG70, 5 ) ;                                         RJC1010
          PUT( FIT, MSG15, 30 ) ;                                        CIM0718
          IF FSKEYPOS EQ 10 AND ISFILE
          OR FSPKP EQ 10 AND MIPFILE
          THEN
              BEGIN 
              PUT( FIT, MSG16, 30 ) ; 
              END 
          ELSE
              BEGIN 
          IF ISFILE OR DAFILE OR AKFILE                                  RJC0927
              THEN
                  BEGIN 
                  XCDDL( FSKEYLOC, RESULT, BITCNT ) ; 
                  XCDDL( FSKEYPOS, RESLT2, BITCNT ) ; 
                  END 
              IF MIPFILE
              THEN
                  BEGIN 
                  XCDDL( FSPKW, RESULT, BITCNT ) ;
                  XCDDL( FSPKP, RESLT2, BITCNT ) ;
                  END 
  
              C<33,05>MSG17 = C<0,5>RESULT ;
              PUT( FIT, MSG17, 40 ) ; 
              C<33,05>MSG18 = C<0,5>RESLT2 ;
              PUT( FIT, MSG18, 40 ) ; 
              END 
  
          IF ISFILE OR MIPFILE    #KEY TYPE NOT RELEVANT TO AK OR DA   # RJC0927
          THEN                                                           RJC0927
              BEGIN                                                      RJC0927
              IF FSKEYTYPE EQ 1 AND ISFILE                               RJC0927
              OR FSPKT EQ 1 AND MIPFILE                                  RJC0927
              THEN                                                       RJC0927
                  BEGIN                                                  RJC0927
                  C<11,17>MSG19 = "COLLATED SYMBOLIC" ;                  RJC0927
                  END                                                    RJC0927
              IF FSKEYTYPE EQ 2 AND ISFILE                               RJC0927
              OR FSPKT EQ 2 AND MIPFILE                                  RJC0927
              THEN                                                       RJC0927
                  BEGIN                                                  RJC0927
                  C<11,17>MSG19 = "INTEGER" ;                            RJC0927
                  END                                                    RJC0927
              IF FSKEYTYPE EQ 3 AND ISFILE                               RJC0927
              OR FSPKT EQ 3 AND MIPFILE                                  RJC0927
              THEN                                                       RJC0927
                  BEGIN                                                  RJC0927
                  C<11,17>MSG19 = "UNSIGNED" ;                           RJC0927
                  END                                                    RJC0927
                                                                         RJC0927
              PUT( FIT, MSG19, 40 ) ;                                    RJC0927
              END                                                        RJC0927
  
          IF ISFILE OR DAFILE OR AKFILE                                  RJC0927
          THEN
              BEGIN 
              XCDDL( FSKEYSIZE, RESULT, BITCNT ) ;
              END 
          IF MIPFILE
          THEN
              BEGIN 
              XCDDL( FSPKL, RESULT, BITCNT ) ;
              END 
  
          C<33,05>MSG20 = C<0,5>RESULT ;
          PUT( FIT, MSG20, 40 ) ; 
  
          END #WRITEMSGGRP3#                                             CIM0718
                                                                         CIM0718
      PROC WRITEMSGGRP4 ;                                                CIM0718
          BEGIN                                                          CIM0718
        #THIS IS THE BLOCK AND RECORD INFO PROC - MORE INFO USED ON DA # RJC0927
                                                #AND AK THAN IS AND MIP# RJC0927
          XCDDL( FSBLKCNT, RESULT, BITCNT ) ;                            CIM0718
          C<25,09>MSG28 = C<00,09>RESULT ;
          PUT( FIT, MSG70, 5 ) ;                                         RJC1010
          PUT( FIT, MSG28, 34 ) ; 
                                                                         CIM0718
          XCDDL( FSMTBCNT, RESULT, BITCNT ) ;                            CIM0718
          C<25,09>MSG29 = C<00,09>RESULT ;
          PUT( FIT, MSG29, 34 ) ; 
                                                                         CIM0718
          XCDDL( FSBLKSIZ, RESULT, BITCNT ) ;                            CIM0718
          C<25,05>MSG30 = C<00,05>RESULT ;                               CIM0718
          PUT( FIT, MSG30, 30 ) ; 
                                                                         CIM0718
          XCDDL( FSRECCNT, RESULT, BITCNT ) ;                            CIM0718
          C<25,09>MSG31 = C<00,09>RESULT ;
          PUT( FIT, MSG31, 34 ) ; 
                                                                         RJC0927
          IF AKFILE OR DAFILE                                            RJC0927
          THEN                                                           RJC0927
              BEGIN                                                      RJC0927
              IF AKFILE                                                  RJC0927
              THEN                                                       RJC0927
                  BEGIN                                                  RJC0927
                  XCDDL( FSBKFACTR, RESULT, BITCNT ) ;                   RJC0927
                  C<35,05>MSG59 = C<00,05>RESULT ;                       RJC0927
                  PUT( FIT, MSG59, 40 ) ;                                RJC0927
                  END                                                    RJC0927
              ELSE IF DAFILE                                             RJC0927
              THEN                                                       RJC0927
                  BEGIN                                                  RJC0927
                  XCDDL( FSOBCNT, RESULT, BITCNT ) ;                     RJC0927
                  C<35,07>MSG60 = C<00,07>RESULT ;
                  PUT( FIT, MSG60, 42 ) ; 
                                                                         RJC0927
                  XCDDL( FSHBCNT, RESULT, BITCNT ) ;                     RJC0927
                  C<35,07>MSG61 = C<00,07>RESULT ;
                  PUT( FIT, MSG61, 42 ) ; 
                                                                         RJC0927
                  XCDDL( FSOLDRC, RESULT, BITCNT ) ;                     RJC0927
                  C<45,09>MSG62 = C<00,09>RESULT ;
                  PUT( FIT, MSG62, 54 ) ; 
                                                                         RJC0927
                  XCDDL( FSOORCNT, RESULT, BITCNT ) ;                    RJC0927
                  C<45,09>MSG63 = C<00,09>RESULT ;
                  PUT( FIT, MSG63, 54 ) ; 
                                                                         RJC0927
                  XCDDL( FSOOBCNT, RESULT, BITCNT ) ;                    RJC0927
                  C<45,07>MSG64 = C<00,07>RESULT ;
                  PUT( FIT, MSG64, 52 ) ; 
                  END                                                    RJC0927
                                                                         RJC0927
              XCDDL( FSORCNT, RESULT, BITCNT ) ;                         RJC0927
              C<35,09>MSG65 = C<00,09>RESULT ;
              PUT( FIT, MSG65, 44 ) ; 
              END                                                        RJC0927
          END #WRITEMSGGRP4#                                             CIM0718
                                                                         CIM0718
      PROC WRITEMSGGRP5 ;                                                CIM0718
          BEGIN                                                          CIM0718
          XCDDL( FSNXTPRU - 1, RESULT, BITCNT ) ;                        CIM0718
          C<22,07>MSG32 = C<0,7>RESULT ;
          PUT( FIT, MSG70, 5 ) ;                                         RJC1010
          PUT( FIT, MSG32, 42 ) ; 
          END #WRITEMSGGRP5#                                             CIM0718
  
      PROC WRITEMSGGRP6 ; 
          BEGIN 
  
          PUT( FIT, MSG70, 5 ) ;                                         RJC1010
          PUT( FIT, MSG53, 20 );
  
          XCDDL ( FSREADCNT, RESULT, BITCNT ) ; 
          C<25,09>MSG54 = C<0,9>RESULT ;
          PUT( FIT, MSG54, 34) ;
  
          XCDDL ( FSWRITCNT, RESULT, BITCNT ) ; 
          C<25,09>MSG56 = C<0,9>RESULT ;
          PUT( FIT, MSG56, 34 );
  
          XCDDL ( FSRCLCNT, RESULT, BITCNT ) ;
          C<25,09>MSG57 = C<0,9>RESULT ;
          PUT( FIT, MSG57, 34 );
  
          XCDDL ( FSRWRCNT, RESULT, BITCNT ) ;
          C<25,09>MSG58 = C<0,9>RESULT ;
          PUT( FIT, MSG58, 34 );
          END  # WRITEMSGGRP6  #
                                                                         CIM0718
      P<FSTT$AA> = LOC( FSTT ) - 3 ;   #FLSTAT EXECUTION BEGINS HERE#    CIM0718
      P<FIT$AA> = LOC( FIT ) ;
      P<CCPARAM> = 0 ;                                                   CIM0718
      IF PARAMCT EQ 0                                                    CIM0718
      THEN                             #ERROR - NO INPUT FILE SPECIFIED# CIM0718
          BEGIN                                                          CIM0718
          MESSAGE( DFMSG1 ) ;                                            CIM0718
          END                                                            CIM0718
                                                                         CIM0718
      C<0,7>INLFN = INFILE ;                                             CIM0718
      FILESQ( FIT,                                                       CIM0718
              LFN, INLFN,                                                CIM0718
              BT,  C,                                                    CIM0718
              RT,  U,                                                    CIM0718
              FWB, BUF, 
              BFS, CIRBUFSZ,
              MRL, FSTTCHSZ ) ; 
      FTPDF = 1 ;            # DONT PROCESS FILE CC THAT MAY BE PRESENT#
      OPENM( FIT, INPUT ) ;                                              CIM0718
      GET( FIT, FSTT, 0, 0, 0, FSTTCHSZ ) ; 
      CLOSEM( FIT ) ;                                                    CIM0718
                                                                         CIM0718
      IF C<00,10>FSHEADW EQ "SAAM/IS"                                    CIM0718
      THEN                                                               CIM0718
          BEGIN                                                          CIM0718
          ISFILE = TRUE ;                                                CIM0718
          END                                                            CIM0718
      IF C<00,10>FSHEADW EQ "SAAM/MIP"                                   CIM0718
      THEN                                                               CIM0718
          BEGIN                                                          CIM0718
          MIPFILE = TRUE ;                                               CIM0718
          END                                                            CIM0718
      IF C<00,10>FSHEADW EQ "SAAM/DA"                                    CIM0718
      THEN                                                               CIM0718
          BEGIN                                                          CIM0718
          DAFILE = TRUE ;                                                CIM0718
          END                                                            CIM0718
      IF C<00,10>FSHEADW EQ "SAAM/AK"                                    CIM0718
      THEN                                                               CIM0718
          BEGIN                                                          CIM0718
          AKFILE = TRUE ;                                                CIM0718
          END                                                            CIM0718
                                                                         CIM0718
      IF  NOT ISFILE                                                     CIM0718
      AND NOT MIPFILE                                                    CIM0718
      AND NOT DAFILE                                                     CIM0718
      AND NOT AKFILE                                                     CIM0718
      THEN                   #ERROR - INPUT FILE ORGANIZATION UNKNOWN#
          BEGIN                                                          CIM0718
          MESSAGE( DFMSG2 ) ;                                            CIM0718
          END                                                            CIM0718
                                                                         CIM0718
      IF PARAMCT EQ 1                                                    CIM0718
      THEN                                                               CIM0718
          BEGIN                                                          CIM0718
          C<0,6>OUTLFN = "OUTPUT" ;                                      CIM0718
          END                                                            CIM0718
      ELSE                                                               CIM0718
          BEGIN                                                          CIM0718
          C<0,7>OUTLFN = OUTFILE ;                                       CIM0718
          END                                                            CIM0718
      IF PARAMCT GR 2 AND C<0,6>PAR3[0] EQ "RMKDEF" 
      THEN
          BEGIN 
          CLOSEM ( FIT ) ;
          KEYTEST ( ISFILE , DAFILE , AKFILE ) ;
          RETURN ;
          END 
      FILESQ( FIT,                                                       CIM0718
              LFN, OUTLFN,                                               CIM0718
              BT , C,                                                    CIM0718
              RT , Z,                                                    CIM0718
              FL , 50 ) ;                                                CIM0718
      OPENM( FIT, OUTPUT, N ) ;                                          CIM0718
      FOR I = 1 STEP 1 UNTIL 7 DO                                        CIM0718
          IF C<I,1>INLFN EQ O"00" 
          THEN                                                           CIM0718
              BEGIN                                                      CIM0718
              C<I,1>INLFN = " " ;                                        CIM0718
              END                                                        CIM0718
                                                                         CIM0718
      IF ISFILE OR DAFILE OR AKFILE                                      RJC0927
      THEN                                                               CIM0718
          BEGIN                                                          CIM0718
          WRITEMSGGRP1 ;                                                 CIM0718
                                                                         CIM0718
          IF FSMIPWORD NQ 0                                              CIM0718
          THEN                                                           CIM0718
              BEGIN                                                      CIM0718
              PUT( FIT, MSG70, 5 ) ;                                     RJC1010
              PUT( FIT, MSG6, 20 ) ;                                     CIM0718
              END                                                        CIM0718
          ELSE                                                           CIM0718
              BEGIN                                                      CIM0718
              PUT( FIT, MSG70, 5 ) ;                                     RJC1010
              PUT( FIT, MSG7, 20 ) ;                                     CIM0718
              END                                                        CIM0718
          IF FSMIPWORD EQ 0 AND FSPT2SZ NQ 0                             CIM0718
          THEN                                                           CIM0718
              BEGIN                                                      CIM0718
              PUT( FIT, MSG8, 30 ) ;                                     CIM0718
              END                                                        CIM0718
          IF FSCOMPACT NQ 0                                              CIM0718
          THEN                                                           CIM0718
              BEGIN                                                      CIM0718
              PUT( FIT, MSG9, 20 ) ;                                     CIM0718
              IF FSSYSCOMP NQ 0                                          CIM0718
              THEN                                                       CIM0718
                  BEGIN                                                  CIM0718
                  XCDDL( FSSYSCOMP, RESULT, BITCNT ) ;                   CIM0718
                  C<29,05>MSG10 = C<00,05>RESULT ;                       CIM0718
                  PUT( FIT, MSG10, 40 ) ;                                CIM0718
                  END                                                    CIM0718
              END 
          IF ISFILE          #COLLATION NOT RELEVANT TO DA OR AK       # RJC0927
          THEN                                                           RJC0927
              BEGIN                                                      RJC0927
              IF FSDCOLTAB                                               RJC0927
              THEN                                                       RJC0927
                  BEGIN                                                  RJC0927
                  PUT( FIT, MSG46, 30 ) ;                                RJC0927
                  END                                                    RJC0927
              ELSE                                                       RJC0927
                  BEGIN                                                  RJC0927
                  PUT( FIT, MSG47, 30 ) ;                                RJC0927
                  END                                                    RJC0927
              END                                                        RJC0927
                                                                         CIM0718
          WRITEMSGGRP2 ;                                                 CIM0718
          WRITEMSGGRP3 ;                                                 CIM0718
                                                                         CIM0718
          XCDDL( FSMAXREC, RESULT, BITCNT ) ;                            CIM0718
          C<22,05>MSG21 = C<0,5>RESULT ;
          PUT( FIT, MSG70, 5 ) ;                                         RJC1010
          PUT( FIT, MSG21, 30 ) ;                                        CIM0718
                                                                         CIM0718
          XCDDL( FSMINREC, RESULT, BITCNT ) ;                            CIM0718
          C<22,05>MSG22 = C<0,5>RESULT ;
          PUT( FIT, MSG22, 30 ) ;                                        CIM0718
                                                                         CIM0718
          PUT( FIT, MSG70, 5 ) ;                                         RJC1010
          PUT( FIT, MSG23, 20 ) ;                                        CIM0718
                                                                         CIM0718
          XCDDL( FSPUTCNT, RESULT, BITCNT ) ;                            CIM0718
          C<25,09>MSG24 = C<0,9>RESULT ;
          PUT( FIT, MSG24,  34 ) ;
                                                                         CIM0718
          XCDDL( FSGETCNT, RESULT, BITCNT ) ;                            CIM0718
          C<25,09>MSG25 = C<0,9>RESULT ;
          PUT( FIT, MSG25, 34 ) ; 
                                                                         CIM0718
          XCDDL( FSDELCNT, RESULT, BITCNT ) ;                            CIM0718
          C<25,09>MSG26 = C<0,9>RESULT ;
          PUT( FIT, MSG26, 34 ) ; 
                                                                         CIM0718
          XCDDL( FSREPCNT, RESULT, BITCNT ) ;                            CIM0718
          C<25,09>MSG27 = C<0,9>RESULT ;
          PUT( FIT, MSG27, 34 ) ; 
  
          XCDDL( FSGTNCNT, RESULT, BITCNT ) ; 
          C<25,09>MSG48 = C<0,9>RESULT ;
          PUT( FIT, MSG48, 34 ) ; 
  
          WRITEMSGGRP6; 
  
          CONTROL IFEQ STATS,1 ;
          XCDDL( FSSEEKCNT, RESULT, BITCNT ) ;
          C<25,09>MSG49 = C<0,9>RESULT ;
          PUT( FIT, MSG49, 34 ) ; 
  
          XCDDL( FSGTNRCNT, RESULT, BITCNT ) ;
          C<25,09>MSG50 = C<0,9>RESULT ;
          PUT( FIT, MSG50, 34 ) ; 
          CONTROL ENDIF ; 
                                                                         CIM0718
          WRITEMSGGRP4 ;                                                 CIM0718
          WRITEMSGGRP5 ;                                                 CIM0718
  
          IF ISFILE          #INDEX INFO NOT RELEVANT TO AK OR DA      # RJC0927
          THEN                                                           RJC0927
              BEGIN                                                      RJC0927
              XCDDL( FSNDXLVLS, RESULT, BITCNT ) ;                       RJC0927
              C<33,05>MSG33 = C<0,5>RESULT ;                             RJC0927
              PUT( FIT, MSG33, 40 ) ;                                    RJC0927
              END                                                        RJC0927
                                                                         RJC0927
          CLOSEM( FIT, N ) ;                                             CIM0718
          END                                                            CIM0718
      IF MIPFILE                                                         CIM0718
      THEN                                                               CIM0718
          BEGIN                                                          CIM0718
          WRITEMSGGRP1 ;                                                 CIM0718
          WRITEMSGGRP2 ;                                                 CIM0718
          WRITEMSGGRP3 ;                                                 CIM0718
                                                                         CIM0718
          PUT( FIT, MSG70, 5 ) ;                                         RJC1010
          PUT( FIT, MSG36, 30 ) ;                                        CIM0718
                                                                         CIM0718
          IF B<00,01>FSSCCWD EQ 1                                        CIM0718
          THEN                                                           CIM0718
              BEGIN                                                      CIM0718
              PUT( FIT, MSG37, 40 ) ;                                    CIM0718
              END                                                        CIM0718
                                                                         CIM0718
          IF FSSCCLG                                                     CIM0718
          THEN                                                           CIM0718
              BEGIN                                                      CIM0718
              PUT( FIT, MSG38, 40 ) ;                                    CIM0718
              END                                                        CIM0718
                                                                         CIM0718
          XCDDL( FSMXALTKY, RESULT, BITCNT ) ;                           CIM0718
          C<31,05>MSG39 = C<00,05>RESULT ;                               CIM0718
          PUT( FIT, MSG39, 40 ) ;                                        CIM0718
                                                                         CIM0718
          PUT( FIT, MSG70, 5 ) ;                                         RJC1010
          PUT( FIT, MSG40, 30 ) ;                                        CIM0718
                                                                         CIM0718
          XCDDL( FSKDUNCT, RESULT, BITCNT ) ;                            CIM0718
          C<23,05>MSG41 = C<00,05>RESULT ;                               CIM0718
          PUT( FIT, MSG41, 30 ) ;                                        CIM0718
                                                                         CIM0718
          XCDDL( FSKDISCT, RESULT, BITCNT ) ;                            CIM0718
          C<23,05>MSG42 = C<00,05>RESULT ;                               CIM0718
          PUT( FIT, MSG42, 30 ) ;                                        CIM0718
                                                                         CIM0718
          XCDDL( FSKDFICT, RESULT, BITCNT ) ;                            CIM0718
          C<23,05>MSG43 = C<00,05>RESULT ;                               CIM0718
          PUT( FIT, MSG43, 30 ) ;                                        CIM0718
  
          WRITEMSGGRP6; 
  
                                                                         CIM0718
          WRITEMSGGRP4 ;                                                 CIM0718
          WRITEMSGGRP5 ;                                                 CIM0718
  
          XCDDL( FSPT2SZ, RESULT, BITCNT ) ;
          C<37,05>MSG44 = C<0,5>RESULT ;
          PUT( FIT, MSG44, 45 ) ; 
  
          XCDDL( FSPT3SZ, RESULT, BITCNT ) ;
          C<37,05>MSG45 = C<0,5>RESULT ;
          PUT( FIT, MSG45, 45 ) ; 
          CLOSEM( FIT, N ) ;                                             CIM0718
          END                                                            CIM0718
      END                                                                CIM0718
TERM
