Portal | Manuals | References | Downloads | Info | Programs | JCLs | Master the Mainframes
IBM Mainframe Computers Forums Index
 
Register
 
IBM Mainframe Computers Forums Index Mainframe: Search IBM Mainframe Forum: FAQ Memberlist Usergroups Profile Log in to check your private messages Log in
 

 

Check GDG Limits

 
Post new topic   Reply to topic    IBMMAINFRAMES.com Support Forums -> JCL & VSAM
View previous topic :: :: View next topic  
Author Message
chavinash2004

New User


Joined: 30 Jun 2010
Posts: 13
Location: hyderabad

PostPosted: Thu Oct 14, 2010 11:29 am    Post subject: Check GDG Limits
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    Post subject:
Reply with quote

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

ftp://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    Post subject:
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 User


Joined: 31 Dec 2009
Posts: 440
Location: London

PostPosted: Fri Oct 15, 2010 2:30 pm    Post subject:
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 User


Joined: 31 Dec 2009
Posts: 440
Location: London

PostPosted: Fri Oct 15, 2010 2:41 pm    Post subject:
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: 13
Location: hyderabad

PostPosted: Fri Oct 15, 2010 4:11 pm    Post subject: thanks
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: 8593
Location: Back in jolly old England

PostPosted: Fri Oct 15, 2010 4:24 pm    Post subject:
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    IBMMAINFRAMES.com Support Forums -> JCL & VSAM All times are GMT + 6 Hours
Page 1 of 1

 

Search our Forum:

Similar Topics
Topic Author Forum Replies Posted
No new posts Check if any Detail records and extra... V S Amarendra Reddy SYNCSORT 19 Mon May 08, 2017 8:54 pm
No new posts Check Binary Values for symbols gandikk CA Products 3 Tue Mar 21, 2017 5:11 am
No new posts What is the command to check MODE of ... rohanthengal CLIST & REXX 7 Fri Nov 18, 2016 1:48 pm
No new posts Check System time(Minute) Using TIME1... balaji81_k DFSORT/ICETOOL 5 Fri Nov 11, 2016 10:53 am
No new posts Syntax to check the first 4 digits of... kshirabdhi DFSORT/ICETOOL 10 Tue May 03, 2016 12:21 pm


Facebook
Back to Top
 
Mainframe Wiki | Forum Rules | Bookmarks | Subscriptions | FAQ | Tutorials | Contact Us