|
View previous topic :: View next topic
|
| Author |
Message |
Mr.Niceguy
New User
Joined: 16 Jun 2005 Posts: 63
|
|
|
|
Hi all,
I have nearly 20,000 GDG bases. Is there any way to list out the limit of all those GDGs in single stretch or by batch instead of finding limits one by one or manually? |
|
| Back to top |
|
 |
expat
Global Moderator

Joined: 14 Mar 2007 Posts: 8797 Location: Welsh Wales
|
|
|
|
Here's one I prepared earlier .................
You will need to cut & paste to a notepad on your PC to get the formatting right, and then transfer to the mainframe into a PDS, and there you go.
JCL
| Code: |
//STEP0020 EXEC PGM=IKJEFT01,PARM='CSIGDGS'
//SYSEXEC DD DSN=your REXX library,DISP=SHR
//SYSOUT DD SYSOUT=*
//SYSTSPRT DD SYSOUT=*
//SYSTSIN DD DUMMY
//CATIN DD *
HLQ1.**
HLQ2.**
HLQ3.**
|
And the REXX
| Code: |
/* REXX ** GDG ATTRIBUTES VIA BATCH REXX PROCESS */
"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
CATNAMET = CATNAME
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
SAY LEFT(DNAME,38) "LIMIT = " GDGLIM
END
DNAMET=DNAME
END
POS1 = POS1 + C2D(SUBSTR(DWORK,POS1,2))
END
END
END
|
|
|
| Back to top |
|
 |
Phrzby Phil
Senior Member
Joined: 31 Oct 2006 Posts: 1055 Location: Richmond, Virginia
|
|
|
|
If the base names fit patterns, you can use the IDCAMS LISTCAT command wildcarded, then use SORT or any other program you wish to filter the lines you want:
LISTCAT GDG ENTRIES (HLQ.NODE2.NODE3.* ) ALL
You want these lines from each part of the report:
GDG BASE ------ HLQ.NODE2.NODE3.whatever
LIMIT-----------------10 SCRATCH NOEMPTY |
|
| Back to top |
|
 |
Prabha Warnings : 2 New User
Joined: 05 Dec 2005 Posts: 79
|
|
|
|
I tried like this
//STEP1 EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
LISTCAT GDG ENTRIES(UKTEST.W.PRM6.Z18.G848.AU04.*) ALL
/*
But this is not showing limit of gdg..
The result i got is
******************************** Top of Data *********************
IDCAMS SYSTEM SERVICES
LISTCAT GDG ENTRIES(UKTEST.W.PRM6.Z18.G848.AU04.*) ALL
IDCAMS SYSTEM SERVICES
THE NUMBER OF ENTRIES PROCESSED WAS:
AIX -------------------0
ALIAS -----------------0
CLUSTER ---------------0
DATA ------------------0
GDG -------------------0
INDEX -----------------0
NONVSAM ---------------0
PAGESPACE -------------0
PATH ------------------0
SPACE -----------------0
USERCATALOG -----------0
TAPELIBRARY -----------0
TAPEVOLUME ------------0
TOTAL -----------------0
THE NUMBER OF PROTECTED ENTRIES SUPPRESSED WAS 0
IDC0001I FUNCTION COMPLETED, HIGHEST CONDITION CODE WAS 0
IDC0002I IDCAMS PROCESSING COMPLETE. MAXIMUM CONDITION CODE WAS 0 |
|
| Back to top |
|
 |
Phrzby Phil
Senior Member
Joined: 31 Oct 2006 Posts: 1055 Location: Richmond, Virginia
|
|
|
|
| Please show me a 3.4 screen with the GDG base you have used. |
|
| Back to top |
|
 |
cbhavsar
New User
Joined: 31 May 2018 Posts: 1 Location: USA
|
|
|
|
expat,
Thank you for sharing rexx code for GDGs limit for IBM z/OS 2.2
(1) first I ran in to line 37 and 86 issue where for not equal
you had as ^= which replaced with <>
so code changed from from ^= to <>Error running CSIGDGS, line 37: Invalid character in program
Error running CSIGDGS, line 86: Invalid character in program
(2) There after my batch job ending good but no output?
I tried below two/three approaches but no O/P
am I missing anything here ??
//STEP0020 EXEC PGM=IKJEFT01,PARM='CSIGDGS'
//SYSEXEC DD DSN=SYS2.STORMGMT.REXX,DISP=SHR
//SYSOUT DD SYSOUT=*
//SYSTSPRT DD SYSOUT=*
//SYSTSIN DD DUMMY
//CATIN DD *
#CBHA.**
/*
//STEP0020 EXEC PGM=IKJEFT01,PARM='CSIGDGS'
//SYSEXEC DD DSN=SYS2.STORMGMT.REXX,DISP=SHR
//SYSOUT DD SYSOUT=*
//SYSTSPRT DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//CATIN DD DISP=MOD,DSN=PDM.MVSD.CATRPT
//SYSTSIN DD *
#CBHA.STOREDGE.HMIG@POL
/*
//STEP0020 EXEC PGM=IKJEFT01,PARM='CSIGDGS'
//SYSEXEC DD DSN=SYS2.STORMGMT.REXX,DISP=SHR
//SYSOUT DD SYSOUT=*
//SYSTSPRT DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//CATIN DD DISP=MOD,DSN=PDM.MVSD.CATRPT
//SYSTSIN DD *
#CBHA.STOREDGE.HMIG@POL
/* |
|
| Back to top |
|
 |
Robert Sample
Global Moderator

Joined: 06 Jun 2008 Posts: 8700 Location: Dubuque, Iowa, USA
|
|
|
|
cbhavsar, did you notice the date of the posts you replied to?
| Quote: |
| Thank you for sharing rexx code for GDGs limit for IBM z/OS 2.2 |
That code was written LONG, LONG, LONG before z/OS 2.2 was released -- the post is 10 years old, so it was most likely done on z/OS 1.10 or earlier. |
|
| Back to top |
|
 |
steve-myers
Active Member
Joined: 30 Nov 2013 Posts: 917 Location: The Universe
|
|
|
|
The real question here is what do you want to do with this information. 20,000 lines of GDG base names and their corresponding limit is just about useless. In your shoes I'd want to know, perhaps- Which GDGs are active (perhaps based on the LAST ALTER date)
- Which GDGs have no data sets associated with them.
|
|
| Back to top |
|
 |
|
|
 |
All times are GMT + 6 Hours |
|