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
 

 

Problem with SYSDSN parameter for GDGs

 
Post new topic   Reply to topic    IBMMAINFRAMES.com Support Forums -> CLIST & REXX
View previous topic :: :: View next topic  
Author Message
maheshk84

New User


Joined: 04 Jan 2006
Posts: 22
Location: Chennai

PostPosted: Fri Aug 19, 2011 9:41 pm    Post subject: Problem with SYSDSN parameter for GDGs
Reply with quote

Hi All, My mainframe team does a lot of testing and for that purpose we need to create test GDGs. The GDG creation job is done manually.
While reviewing we always find out that few GDG names will be incorrect. Like production GDGs are mentioned and JCL scan (!JCK) does not identify it..

Code:

VIEW       X11421.REINS.JCLS(G5R01GDG) - 01.28                 LAST CC WAS  00
Command ===>                                                  Scroll ===> CSR 
****** ***************************** Top of Data ******************************
==MSG> CAY6000 1 STATEMENT FLAGGED IN JOB "G5R01GDG" MAXIMUM SEVERITY WAS 0   
==MSG>                                                                         
==MSG>                                                                         
==MSG>                                                                         
000001 //G5R01GDG JOB (5R01,5R01),PROD,CLASS=A,MSGCLASS=J,                     
000002 //        REGION=2048K,MSGLEVEL=(1,1),USER=H5R01                       
000003 /*JOBPARM ROOM=OVER,S=04A8                                             
000004 //*********************************************************************
000005 //JOBLIB   DD DSN=PRODPLS.SARE.LOAD,DISP=SHR                           
000006 //         DD DSN=PRODPLS.SARC.LOAD,DISP=SHR                           
000007 //*********************************************************************
000008 //STEP00   EXEC PGM=IDCAMS                                             
==MSG> //STEP00   EXEC PGM=IDCAMS                                             
==MSG> CAY6092I JOBLIB/STEPLIB NOT REQUIRED FOR PROGRAM "IDCAMS"               
==MSG>                                                                         
000009 //SYSPRINT DD   SYSOUT=*                                               
000010 //SYSIN    DD   *                                                       
000011   DEFINE GDG(NAME(A.ERCE0102.BACKUP) -                                 
000012               LIMIT(24) SCRATCH)                                       
000013 /*       


So, I created a GDGCHK macro which works fine as shown below

Code:

VIEW       X11421.REINS.JCLS(G5R01GDG) - 01.28                 Pls chk the job
Command ===>                                                  Scroll ===> CSR 
****** ***************************** Top of Data ******************************
000001 //G5R01GDG JOB (5R01,5R01),PROD,CLASS=A,MSGCLASS=J,                     
000002 //        REGION=2048K,MSGLEVEL=(1,1),USER=H5R01                       
000003 /*JOBPARM ROOM=OVER,S=04A8                                             
000004 //*********************************************************************
000005 //JOBLIB   DD DSN=PRODPLS.SARE.LOAD,DISP=SHR                           
000006 //         DD DSN=PRODPLS.SARC.LOAD,DISP=SHR                           
000007 //*********************************************************************
000008 //STEP00   EXEC PGM=IDCAMS                                             
000009 //SYSPRINT DD   SYSOUT=*                                               
000010 //SYSIN    DD   *                                                       
000011   DEFINE GDG(NAME(A.ERCE0102.BACKUP) -                                 
==MSG> GDG INDEX A.ERCE0102.BACKUP ALREADY EXISTS                             
000012               LIMIT(24) SCRATCH)                                       
000013 /*                                                                     


but the SYSDSN parameter recalls all the migrated versions of the GDG. Hence, consuming more time. The code is provided below.

Code:

/*--------------------------- REXX -----------------------------------*/
/*  REXX MACRO : GDGCHK                                               */
/*  AUTHOR     : CTS.  JULY 2011.                                     */
/*  PURPOSE    : TO CHECK THE EXISTENCE OF ALL THE GDGS IN THE JCL    */
/*--------------------------------------------------------------------*/
ADDRESS ISREDIT                                                         
"MACRO PROCESS"                                                         
/* ------------------------------------------------------------ */     
/* LOOP THROUGH THE JOB */                                             
"(CURRLN) = LINENUM .ZCSR"            /* CURRENT LINE           */     
"(LASTLN) = LINENUM .ZLAST"           /* LAST LINE NUMBER       */     
I = 0                                                                   
GDG_EXIST_CNT = 0                                                       
DO FOREVER                                                             
   I = I + 1                                                           
   IF I > LASTLN THEN LEAVE                                             
   "(LINE)  = LINE " I                                                 
   LINE  = SUBSTR(LINE,1,72)                                           
   WORD1 = SUBWORD(LINE,1,1)                                           
   WORD2 = SUBWORD(LINE,2,1)                                           
   UPPER WORD1 WORD2                                                   
   PARSE VAR WORD2 'GDG(NAME('DSN')'                                   
   IF WORD1 \= 'DEFINE' & WORD2 \= 'GDG' THEN ITERATE                   
   CALL CHECK_GDG                                                       
END                                                                     
ADDRESS ISPEXEC                                                         
IF GDG_EXIST_CNT = 0 THEN DO                                           
   ZEDSMSG = "     GDGs Ok     "                                       
END                                                                     
ELSE DO                                                                 
   ZEDSMSG = " Pls chk the job "                                       
END                                                                     
   "SETMSG MSG(ISRZ001)"                                               
EXIT 0                                                                 
/* ------------------------------------------------------------ */     
CHECK_GDG:                                                             
   /* CHECK IF GDG EXISTS */                                           
   ADDRESS TSO                                                         
   DSN = STRIP(DSN)                                                     
   RC = SYSDSN("'"DSN"'")                                               
   /* IF GDG FOUND */                                                   
   IF (RC = 'OK') THEN DO                                               
      GDG_EXIST_CNT = GDG_EXIST_CNT + 1                                 
      MSG = "'GDG INDEX" DSN "ALREADY EXISTS'"                         
      "ISREDIT LINE_AFTER " I "= MSGLINE" MSG                           
      RETURN                                                           
   END                                                                 
RETURN                                                                 


Please let me know if there is any solution to just check the existence of the GDG base without recalling its migrated versions. Tried LISTDSI as well but not working.[/code]
Back to top
View user's profile Send private message

dick scherrer

Site Director


Joined: 23 Nov 2006
Posts: 19270
Location: Inside the Matrix

PostPosted: Fri Aug 19, 2011 9:54 pm    Post subject:
Reply with quote

Hello,

One way might be using a LISTCAT.
Back to top
View user's profile Send private message
Akatsukami

Global Moderator


Joined: 03 Oct 2009
Posts: 1746
Location: Bloomington, IL

PostPosted: Fri Aug 19, 2011 9:59 pm    Post subject:
Reply with quote

Code:
/* Rexx */                                       
/* Written Heisei 23.8.19 by Akatsukami-sama */ 
  trace o                                       
  arg dsn .                                     
  myrc = 0                                       
  x = outtrap("LISTC.")                         
  "LISTCAT ENTRIES('"dsn"')"                     
  x = outtrap("OFF")                             
                                                 
  do i = 1 to listc.0                           
    if (pos("GDG BASE",listc.i)¬=0) then myrc = 1
  end                                           
                                                 
  return myrc                                   
Back to top
View user's profile Send private message
maheshk84

New User


Joined: 04 Jan 2006
Posts: 22
Location: Chennai

PostPosted: Fri Aug 19, 2011 10:17 pm    Post subject:
Reply with quote

Thanks Dick and Akatsukami. The macro worked fine with LISTCAT. My CHECK_GDG routine modified as shown below.

Code:

/* ------------------------------------------------------------ */   
CHECK_GDG:                                                           
   /* CHECK IF GDG EXISTS */                                         
   ADDRESS TSO                                                       
   DSN = STRIP(DSN)                                                 
   X = OUTTRAP("LISTC.")                                             
   "LISTCAT ENTRIES('"DSN"')"                                       
   X = OUTTRAP("OFF")                                               
   DO J = 1 TO LISTC.0                                               
     IF (POS("GDG BASE",LISTC.J)¬=0) THEN DO                         
        GDG_EXIST_CNT = GDG_EXIST_CNT + 1                           
        MSG = "'GDG INDEX" DSN "ALREADY EXISTS'"                     
        "ISREDIT LINE_AFTER " I "= MSGLINE" MSG                     
        LEAVE                                                       
     END                                                             
   END                                                               
RETURN                                                               
/* ============================================================ */   
Back to top
View user's profile Send private message
dick scherrer

Site Director


Joined: 23 Nov 2006
Posts: 19270
Location: Inside the Matrix

PostPosted: Fri Aug 19, 2011 10:27 pm    Post subject: Reply to: Problem with SYSDSN parameter for GDGs
Reply with quote

Good to hear it is working - thank you for letting us know icon_smile.gif

d
Back to top
View user's profile Send private message
dbzTHEdinosauer

Global Moderator


Joined: 20 Oct 2006
Posts: 6966
Location: porcelain throne

PostPosted: Fri Aug 19, 2011 10:39 pm    Post subject:
Reply with quote

maheshk84,

The code works, but
had you implemented Akatsukami's suggestion as he gave it
a separate, CALLed Script,
you would have had
  • a routine that could be called by any script
  • less code in your current script


reusable code is a habit you should develop.
Back to top
View user's profile Send private message
maheshk84

New User


Joined: 04 Jan 2006
Posts: 22
Location: Chennai

PostPosted: Sat Aug 20, 2011 12:18 am    Post subject:
Reply with quote

Thanks for the suggestion dbzTHEdinosauer. I will modify my code accordingly.
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 -> CLIST & REXX All times are GMT + 6 Hours
Page 1 of 1

 

Search our Forum:

Similar Topics
Topic Author Forum Replies Posted
No new posts SYMNAMES problem jacobdng DFSORT/ICETOOL 7 Thu Dec 22, 2016 7:47 am
No new posts DDNAME parameter mistah kurtz JCL & VSAM 6 Mon Dec 19, 2016 4:41 pm
No new posts Execessive parameter issue Sumeendar JCL & VSAM 5 Mon Dec 19, 2016 4:35 pm
No new posts Problem in writing Output file vickey_dw COBOL Programming 5 Mon Nov 14, 2016 11:14 pm
No new posts TOT & DATE parameter in ICEMAN hemanthj642 DFSORT/ICETOOL 4 Mon Nov 14, 2016 5:19 am


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