// EXEC LIBR,SIZE=256K
ACC S=NEWLIB2.REXX
CATALOG VSAMSUMM.PROC REPLACE=YES
/*----------------------------------------------------------------*/
/* VSAMSUMM - THIS PROGRAM WILL PRINT A SUMMARY OF ALL OF THE     */
/*            VSAM CATALOGS ALLOCATED TO THE SPECIFIED VSAM       */
/*            MASTER CATALOG.                                     */
/*----------------------------------------------------------------*/
/*====================>    MODULE HISTORY    <====================*/
/*----------------------------------------------------------------*/
/* 20020301 -CXK- NEW PROGRAM                                     */
/*----------------------------------------------------------------*/
/* USAGE: // EXEC REXX=VSAMSUMM,PARM='MASTER CATALOG NAME'        */
/*----------------------------------------------------------------*/
PARSE UPPER ARG CATNAME

IF CATNAME = '' THEN DO
   SAY 'ERROR: NO VSAM MASTER CATALOG SPECIFIED'
   EXIT 12
END

SAY ' '
SAY '                        VSAM CATALOG SUMMARY'
SAY ' '
SAY ' '
SAY ' MASTER CATALOG:' CATNAME
SAY ' '
SAY RIGHT('TOTAL',61) RIGHT('TRACKS',10) RIGHT('PCT',10),
    RIGHT('VOLUME',10)
SAY LEFT(' USER CATALOG',50) RIGHT('TRACKS',10) RIGHT('USED',10),
    RIGHT('USED',10) RIGHT('COUNT',10)
SAY LEFT(' ',94,'-')

Y=REXXIPT('SYSIPT.')
Y=OUTTRAP('SYSLST.','*','NOCONCAT')

SYSIPT.0 = 1
SYSIPT.1 = ' LISTCAT CATALOG('||CATNAME||') ALL'
ADDRESS LINK 'IDCAMS MARGINS(1 80)'
IF RC != 0 THEN DO
   SAY 'ERROR RC=' RC
   DO J=1 TO SYSLST.0
      SAY SYSLST.J
   END J
   EXIT 16
END

CATLGS.0 = 0
CATINDX = 0

DO J=1 TO SYSLST.0
   IF (SUBSTR(SYSLST.J,1,11) = 'USERCATALOG') THEN DO
      CATINDX = CATINDX + 1
      CATLGS.0 = CATINDX
      CATLGS.CATINDX = WORD(SYSLST.J,3)
   END
END

DO J=1 TO CATLGS.0
   TOTTRAK = 0
   TOTUSED = 0
   VOLCNT = 0
   Y=REXXIPT('SYSIPT.')
   Y=OUTTRAP('SYSLST.','*','NOCONCAT')

   SYSIPT.0 = 1
   SYSIPT.1 = ' LISTCAT SPACE CATALOG('||CATLGS.J||') ALL'
   ADDRESS LINK 'IDCAMS MARGINS(1 80)'

   DO K=1 TO SYSLST.0
      IF (SUBSTR(SYSLST.K,1,6) = 'VOLUME') THEN DO
         VOLCNT = VOLCNT + 1
      END

      IF (SUBSTR(SYSLST.K,8,12) = 'TRACKS-TOTAL') THEN DO
         TRACKS = STRIP(SUBSTR(SYSLST.K,20,12),'L','-')
         TOTTRAK = TOTTRAK + TRACKS
      END

      IF (SUBSTR(SYSLST.K,8,11) = 'TRACKS-USED') THEN DO
         USED = STRIP(SUBSTR(SYSLST.K,19,13),'L','-')
         TOTUSED = TOTUSED + USED
      END
   END

   PCTUSED = ( ( TOTUSED / TOTTRAK ) * 100 )

   SAY ' '||LEFT(CATLGS.J,49) RIGHT(TOTTRAK,10) RIGHT(TOTUSED,10),
       RIGHT(FORMAT(PCTUSED,3,1),10,' ') RIGHT(VOLCNT,10)
END

EXIT
/+
/*
// LIBDEF *,SEARCH=NEWLIB2.REXX
// OPTION NODUMP
// EXEC REXX=VSAMSUMM,PARM='SYSTEM.CELLULAR.VSAM.MASTER.CATALOG'
/*

    Source: geocities.com/vmvse/files

               ( geocities.com/vmvse)