IBM Mainframe Forum Index
 
Log In
 
IBM Mainframe Forum Index Mainframe: Search IBM Mainframe Forum: FAQ Register
 

Check GDG Limits


IBM Mainframe Forums -> JCL & VSAM
Post new topic   Reply to topic
View previous topic :: View next topic  
Author Message
chavinash2004

New User


Joined: 30 Jun 2010
Posts: 37
Location: hyderabad

PostPosted: Thu Oct 14, 2010 11:29 am
Reply with quote

I have a requirement that to verify the GDG limit for lot of GDG's. I used to go manually by taking each GDG base and in file-aid i saw the limit. I have nearly 2500 GDG bases. It will take lot of time to check manually. So anybody please explain me is there any UTILITY or any short cut way to check the limit of GDG's.
Back to top
View user's profile Send private message
mallik4u

New User


Joined: 17 Sep 2008
Posts: 75
Location: bangalore

PostPosted: Thu Oct 14, 2010 3:37 pm
Reply with quote

Check the following loaction for "Report on GDG base limits".

ftp.software.ibm.com/storage/dfsort/mvs/sorttrck.pdf
Back to top
View user's profile Send private message
Kausar.S

New User


Joined: 01 Oct 2010
Posts: 4
Location: Mysore

PostPosted: Thu Oct 14, 2010 4:40 pm
Reply with quote

Yes.you can use LISTCAT thru IDCAMS utility. For example:

//KJCLGDG JOB(T,DN,RDS), 'KAUSAR',CLASS=S,
// MSGCLASS=0,REGION=0M
//************************************************************
//PS010 EXEC PGM=IDCAMS
//************************************************************
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
LISTCAT ENTRIES(B052SKM.NA.XKAUSAR7.STATS) ALL
LISTCAT ENTRIES(B052SKM.NA.XKAUSAR8.STMTEXT) ALL
/*

It will list out all information(Attributes,History etc..)
Hope it helps.
Back to top
View user's profile Send private message
Pete Wilson

Active Member


Joined: 31 Dec 2009
Posts: 580
Location: London

PostPosted: Fri Oct 15, 2010 2:30 pm
Reply with quote

You can be a bit more specific with LISTCAT:
//STEP1 EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//X DD SYSOUT=*
//SYSIN DD *
LISTC GDG ALL OUTFILE(X) CAT(USERCAT.NAME)
/*

Even better if you have FDREPORT which provides a nice formatted report (run same JCL with XHELP ALL in the sysin to get a printed manual if required):
//GDGBASES EXEC PGM=FDREPORT
//SYSPRINT DD SYSOUT=0
//SYSOUT DD SYSOUT=0
//SYSUDUMP DD SYSOUT=0
//ABRMAP DD SYSOUT=*
//ABRSUM DD SYSOUT=*
//SORTLIB DD DSN=SYS1.SORTLIB,DISP=SHR
//SYSIN DD *
REPORT FIELD=(NAME,GDGLIMIT,GDGFLAGS,GDGENTRY)
XSELECT=HLQ1.**
XSELECT=HLQ2.**
SORT FIELD=(NAME)
SUMM FIELD=(GDGLIMIT)
PRINT SUM=YES,SORT=YES,DATATYPE=CATALOG,RPTYPE=TABLE,
ENABLE=(FASTPATH,GDGBASEONLY,ALLFILTER)
Back to top
View user's profile Send private message
Pete Wilson

Active Member


Joined: 31 Dec 2009
Posts: 580
Location: London

PostPosted: Fri Oct 15, 2010 2:41 pm
Reply with quote

Sorry there's a syntax error in the FDREPORT

Should be XSELECT XDSN=HLQ1.** etc
Back to top
View user's profile Send private message
chavinash2004

New User


Joined: 30 Jun 2010
Posts: 37
Location: hyderabad

PostPosted: Fri Oct 15, 2010 4:11 pm
Reply with quote

Kausar.S and Pete Wilson.i got the information.
Back to top
View user's profile Send private message
expat

Global Moderator


Joined: 14 Mar 2007
Posts: 8797
Location: Welsh Wales

PostPosted: Fri Oct 15, 2010 4:24 pm
Reply with quote

I would use a REXX here, because it will be quite easy to tailor if you needed to change the LIMIT or other attributes. The code below is list only.
Code:
/* REXX ** INVOKE CSI VIA BATCH REXX PROCESS
           GDG DEFINITIONS FROM CATALOG ENTRIES ONLY                 */
SIGNAL ON SYNTAX NAME ERR
 "EXECIO * DISKR CATIN ( STEM CAT. FINIS"
 DO KCNT = 1 TO CAT.0
 KEY = SUBSTR(CAT.KCNT,1,44)
MODRSNRC = SUBSTR(' ',1,4)
CSIFILTK = SUBSTR(KEY,1,44)
CSICATNM = SUBSTR(' ',1,44)
CSIRESNM = SUBSTR(' ',1,44)
CSIDTYPS = 'B               '
CSICLDI  = SUBSTR('Y',1,1)
CSIRESUM = SUBSTR(' ',1,1)
CSIS1CAT = SUBSTR(' ',1,1)
CSIRESRV = SUBSTR(' ',1,1)
CSINUMEN = '0003'X
CSIFLD1  = 'VOLSER  '
CSIFLD2  = 'GDGLIMIT'
CSIFLD3  = 'GDGATTR '
CSIOPTS  = CSICLDI || CSIRESUM || CSIS1CAT || CSIRESRV
CSIFIELD = CSIFILTK || CSICATNM || CSIRESNM || CSIDTYPS || CSIOPTS
CSIFIELD = CSIFIELD || CSINUMEN || CSIFLD1 || CSIFLD2 || CSIFLD3
WORKLEN = 65536
DWORK = '00010000'X || COPIES('00'X,WORKLEN-4)
RESUME = 'Y'
CATNAMET = SUBSTR(' ',1,44)
DNAMET = SUBSTR(' ',1,44)
DO WHILE RESUME = 'Y'
 ADDRESS LINKPGM 'IGGCSI00  MODRSNRC  CSIFIELD  DWORK'
 RESUME = SUBSTR(CSIFIELD,150,1)
 USEDLEN = C2D(SUBSTR(DWORK,9,4))
 POS1=15
 DO WHILE POS1 < USEDLEN
   IF SUBSTR(DWORK,POS1+1,1) = '0'
    THEN DO
         CATNAME=SUBSTR(DWORK,POS1+2,44)
         IF CATNAME <> CATNAMET THEN DO
          END
         POS1 = POS1 + 50
         END
   DNAME = SUBSTR(DWORK,POS1+2,44)
   IF SUBSTR(DWORK,POS1+1,1) = 'C' THEN DTYPE = 'CLUSTER '
    ELSE IF SUBSTR(DWORK,POS1+1,1) = 'D' THEN DTYPE = 'DATA    '
    ELSE IF SUBSTR(DWORK,POS1+1,1) = 'I' THEN DTYPE = 'INDEX   '
    ELSE IF SUBSTR(DWORK,POS1+1,1) = 'A' THEN DTYPE = 'NONVSAM '
    ELSE IF SUBSTR(DWORK,POS1+1,1) = 'H' THEN DTYPE = 'GDS     '
    ELSE IF SUBSTR(DWORK,POS1+1,1) = 'B' THEN DTYPE = 'GDG     '
    ELSE IF SUBSTR(DWORK,POS1+1,1) = 'R' THEN DTYPE = 'PATH    '
    ELSE IF SUBSTR(DWORK,POS1+1,1) = 'G' THEN DTYPE = 'AIX     '
    ELSE IF SUBSTR(DWORK,POS1+1,1) = 'X' THEN DTYPE = 'ALIAS   '
    ELSE IF SUBSTR(DWORK,POS1+1,1) = 'U' THEN DTYPE = 'UCAT    '
    ELSE DTYPE = '        '
    POS1 = POS1 + 46
    NUMVOL = C2D(SUBSTR(DWORK,POS1+4,2))/6
    POS2 = POS1+10
    DO I = 1 TO NUMVOL
      POS2 = POS2 + 6
    END
    POS2   = POS1 + C2D(SUBSTR(DWORK,POS1,2)) - 2
    GDGLIM = C2D(SUBSTR(DWORK,POS2,1))
    POS2   = POS2 + 1
    GDGA   = X2B(C2X(SUBSTR(DWORK,POS2,1)))
    GDGA1  = SUBSTR(GDGA,1,1)
    GDGA2  = SUBSTR(GDGA,2,1)
    GDAT1 = 'NOEMPTY'
    IF GDGA1  = '1' THEN DO
      GDAT1 = 'EMPTY  '
    END
    GDAT2 = 'SCRATCH'
    IF GDGA2  = '0' THEN DO
      GDAT2 = 'NOSCR  '
    END
    IF DNAMET <> DNAME THEN DO
     IF DTYPE = 'GDG     ' THEN DO
      ATTRIB = GDAT1 GDAT2
      SAY LEFT(DNAME,44) "LIM =" RIGHT(GDGLIM,3) "   "ATTRIB
     END
     DNAMET=DNAME
    END
    POS1 = POS1 + C2D(SUBSTR(DWORK,POS1,2))
  END
END
END
"EXECIO 0 DISKW CARDOUT ( FINIS"
EXIT
 /*   STANDARD ERROR ROUTINE - CHANGE SAY VARIABLES AS REQUIRED.     */
ERR:
  SIGNAL OFF SYNTAX
  DROPBUFF
  SAY RIGHT(SIGL,4) ">>>" SOURCELINE(SIGL)
  SAY "   "
  SAY "ERROR ROUTINE HAS BEEN ENTERED"
  SAY "   "
  SAY "NAME     " DNAME
  SAY "GDGLIM   " GDGLIM
  SAY "   "
  TRACE I
  INTERPRET SOURCELINE(SIGL)
  SAY RIGHT(RC,4) ">>>" ERRORTEXT(RC)
Back to top
View user's profile Send private message
View previous topic :: :: View next topic  
Post new topic   Reply to topic View Bookmarks
All times are GMT + 6 Hours
Forum Index -> JCL & VSAM

 


Similar Topics
Topic Forum Replies
No new posts SCOPE PENDING option -check data DB2 2
No new posts Check data with Exception Table DB2 0
No new posts How to check whether who renamed the ... JCL & VSAM 3
No new posts No ++JCLIN, APPLY CHECK job JCL & VSAM 1
No new posts EMPTY file check scenario JCL & VSAM 6
Search our Forums:

Back to Top