Portal | Manuals | References | Downloads | Info | Programs | JCLs | Mainframe wiki | Quick Ref
IBM Mainframe Computers Forums Index
 
Register
 
IBM Mainframe Computers Forums Index Mainframe: Search IBM Mainframe Forum: FAQ Memberlist Profile Log in to check your private messages Log in
 
How to find the limit of GDGs

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

New User


Joined: 16 Jun 2005
Posts: 63

PostPosted: Fri Jan 25, 2008 2:46 pm    Post subject: How to find the limit of GDGs
Reply with quote

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
View user's profile Send private message

expat

Global Moderator


Joined: 14 Mar 2007
Posts: 8619
Location: Back in jolly old England

PostPosted: Fri Jan 25, 2008 5:10 pm    Post subject:
Reply with quote

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
View user's profile Send private message
Phrzby Phil

Active Member


Joined: 31 Oct 2006
Posts: 967
Location: Richmond, Virginia

PostPosted: Fri Jan 25, 2008 7:09 pm    Post subject:
Reply with quote

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
View user's profile Send private message
Prabha
Warnings : 2

New User


Joined: 05 Dec 2005
Posts: 79

PostPosted: Wed Jan 30, 2008 5:16 pm    Post subject: Reply to: How to find the limit of GDGs
Reply with quote

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
View user's profile Send private message
Phrzby Phil

Active Member


Joined: 31 Oct 2006
Posts: 967
Location: Richmond, Virginia

PostPosted: Wed Jan 30, 2008 9:06 pm    Post subject:
Reply with quote

Please show me a 3.4 screen with the GDG base you have used.
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 Split files upto certain limit based ... bubbu75 DFSORT/ICETOOL 5 Tue Nov 14, 2017 11:11 pm
This topic is locked: you cannot edit posts or make replies. Limit access to certain RACF group cvnlynn CLIST & REXX 5 Wed Aug 23, 2017 2:28 am
No new posts Can we limit length in concatenation ... balaji81_k DB2 7 Tue Aug 22, 2017 2:50 am
No new posts Command to find TMEMBER name for a TPIPE Siva NKK Kothamasu IMS DB/DC 0 Wed Aug 16, 2017 6:08 pm
No new posts find RACF group for access to spooled... jzhardy JCL & VSAM 1 Mon May 08, 2017 11:46 am

Facebook
Back to Top
 
Job Vacancies | Forum Rules | Bookmarks | Subscriptions | FAQ | Polls | Contact Us