List of datasets created before the date specified

Ask/Clarify the questions on TSO, CLIST & REXX

Moderators: Veera, Moderator Group

Post Reply
phaniyelugula
Member
Posts: 20
Joined: Mon Dec 30, 2013 6:03 pm

List of datasets created before the date specified

Post by phaniyelugula » Wed Jan 15, 2014 4:17 pm

Hi All,

I am trying to the list of datasets with the follwoing requirements.

Input 1 – Date in the format of mm/dd/yyyy
Input 2 – High level qualifier of the dataset.

Output : List of datasets created before the date specified in Input 1 with high level quali-fier provided in Input 2.

but i dont have any idea of how to get it, I have tried it using JCL, But it is not possible.Can any one help me on this.

Thanks in advance

DikDude
Moderator
Posts: 1001
Joined: Fri Jul 22, 2011 8:39 am
Location: usa

Post by DikDude » Wed Jan 15, 2014 9:50 pm

First you neet to get a list of all of the datasets showing dsn and create date.

Then you need to pass this list creating a new list of those created before the specified date.

Suggest you arrange the dates as yyyy/mm/dd for ease of comparison.
Last edited by DikDude on Tue Jan 21, 2014 10:39 pm, edited 1 time in total.
Have a good one

phaniyelugula
Member
Posts: 20
Joined: Mon Dec 30, 2013 6:03 pm

Post by phaniyelugula » Mon Jan 20, 2014 5:33 pm

Here is the code i have written and its working fine..

May be it will b helpful to other. If there is any simple code for doing the same, Please share it.

Thanks in advance

Code: Select all

/*                      REXX                                   */       00010014
/*          Getting HLQ from user		*/
SAY "ENTER A LETTER TO DISPLAY ALL THE DATASET"                         00030001
PARSE UPPER PULL HLQ                                                    00040001
/* Validating HLQ	*/
IF DATATYPE(HLQ,A)¬=1 THEN DO                                           00041024
   SAY 'INVALID HIGH LEVEL QUALIFIER'                                   00042011
   LEAVE                                                                00043011
END                                                                     00044011
IF INDEX(HLQ,'.')¬=0 THEN DO                                            00045025
 SAY 'INVALID HIGH LEVEL QUALIFIER'                                     00046025
 LEAVE                                                                  00047025
END                                                                     00048025
/* getting date from user	*/
SAY "ENTER DATE IN MM/DD/YYYY FORMAT"                                   00050001
PULL USERDATE                                                           00060001
/* Validating date using user defined function VALIDATE	*/
IF ¬VALIDDATE(USERDATE) THEN DO                                         00070013
   SAY 'DATE IN INVALID FORMATE'                                        00080013
   LEAVE                                                                00090013
END                                                                     00100013
/* Creating dataset and checking deleting it if already present*/
USER = SYSVAR(SYSUID)                                                   00110019
REPORT=USER||'.DATASET.REPORT'                                          00120019
DATA = SYSDSN("'"REPORT"'")                                             00130019
IF DATA = 'OK' THEN                                                     00140019
DO                                                                      00150019
X = MSG('OFF')                                                          00160019
"DELETE ('"REPORT"')"                                                   00161019
X = MSG('ON')                                                           00162019
END                                                                     00163019
"ALLOC DD(DDIN) DA('"REPORT"')",                                        00164019
" NEW LRECL(80) RECFM(F B) DSORG(PS) REUSE",                            00165019
"SPACE(2,1) TRA"                                                        00166019
DS=STRIP(HLQ||".*")                                                     00170001
/* Searching for HLQ datasets and short listing according to date */
"ISPEXEC LMDINIT LISTID(IDV) LEVEL(&DS)"                                00180001
DO FOREVER                                                              00190001
"ISPEXEC LMDLIST LISTID("IDV") OPTION(LIST) DATASET(DSVAR)"             00200020
 IF RC = 0 THEN                                                         00210001
 DO                                                                     00220001
  DSINFO=LISTDSI("'"DSVAR"'")                                           00241001
  IF  DSINFO == 0 THEN                                                  00243001
  DO                                                                    00244001
    PARSE VAR  SYSCREATE 1 CC 3 YY '/' DDD .                            00246001
    JDATE = YY||DDD                                                     00246101
    GDATE = DATE('U',JDATE,'J')                                         00246301
    IF SUBSTR(GDATE,7,2)>20 THEN                                        00246501
       GDATE=SUBSTR(GDATE,1,6)||19||SUBSTR(GDATE,7,2)                   00246601
    ELSE                                                                00246701
       GDATE=SUBSTR(GDATE,1,6)||20||SUBSTR(GDATE,7,2)                   00246801
    FUN_RESULT= DATECOMP("'"USERDATE"'","'"GDATE"'")                    00247001
    IF FUN_RESULT=='DISPLAY' THEN DO                                    00247219
       QUEUE " "SYSDSNAME                                               00247419
       N = QUEUED()                                                     00247519
       "ALLOC F(OUT) DS('"REPORT"') MOD REUSE"                          00247619
       "EXECIO" N "DISKW OUT(FINIS "                                    00247719
       "FREE F(OUT)"                                                    00247819
    END                                                                 00247919
  END                                                                   00248001
 END                                                                    00290001
 ELSE LEAVE                                                             00300001
END                                                                     00310001
"ISPEXEC VIEW DATASET('"REPORT"')"                                      00311023
EXIT                                                                    00320001
/* Procedure to compare Creation date with user entered date */
DATECOMP: PROCEDURE                                                     00330012
PARSE ARG DATE1,DATE2                                                   00340001
DATE1 = SPACE(TRANSLATE(DATE1,'','/'),0)                                00350001
DATE2 = SPACE(TRANSLATE(DATE2,'','/'),0)                                00360001
DATE1 = SUBSTR(DATE1,6,4)||SUBSTR(DATE1,2,4)                            00370010
DATE2 = SUBSTR(DATE2,6,4)||SUBSTR(DATE2,2,4)                            00380010
IF DATE1>DATE2 THEN                                                     00390007
   RETURN 'DISPLAY'                                                     00400001
ELSE                                                                    00410001
   RETURN 'DONTDISPLAY'                                                 00420007
EXIT                                                                    00430006
/* Procedure to validate date entered by user	*/
VALIDDATE: PROCEDURE    /* RETURN 1 FOR VALID YYYYMMDD, OR 0         */ 00440012
INDATE=ARG(1)                                                           00450012
/* ALL NUMERIC AND CORRECT LENGTH ?                                  */ 00460012
IF TRANSLATE(INDATE,'00000000000','0123456789/') \='0000000000' THEN DO 00470016
  RETURN 0                                                              00490012
END                                                                     00500015
/* IS MONTH VALID ?                                                  */ 00510012
PARSE VAR INDATE MM '/' DD '/' YYYY                                     00520012
INDATE = SPACE(TRANSLATE(INDATE,'','/'),0)                              00540012
IF MM <1 | MM > 12 THEN DO                                              00550012
  RETURN 0                                                              00570012
  END                                                                   00580012
/* NOW TURN DATE INTO NUMBER OF DAYS, AND BACK, THEN COMPARE.        */ 00590012
/* THIS IS DONE THIS WAY TO LET REXX WORRY ABOUT LEAP YEARS          */ 00600012
/* AND THE NUMBER OF DAYS IN EACH MONTH                              */ 00610012
 BASE=DATE&#40;'B',YYYY||MM||'01','S'&#41;-1  /* GET DATE FOR 1ST OF MONTH -1 */00620012
 NEWDATE=DATE&#40;'S',BASE+DD,'B'&#41;        /* ADD DAY OF MONTH, CONVERT BACK 00640012
                                         TO YYYYMMDD                  */00650012
 INDATE= SUBSTR&#40;INDATE,5,4&#41;||SUBSTR&#40;INDATE,1,4&#41;                         00670012
 IF NEWDATE \= INDATE THEN            /* IF NEW YYYYMMDD DOESN'T MATCH  00700012
                                         ORIGINAL                     */00710012
   RETURN 0                           /* BAD DATE - DAY OF MONTH        00720012
                                         INVALID FOR THIS MONTH       */00730012
 RETURN 1 /* IF WE GOT HERE, IT IS VALID */                             00740012

DikDude
Moderator
Posts: 1001
Joined: Fri Jul 22, 2011 8:39 am
Location: usa

Post by DikDude » Tue Jan 21, 2014 10:41 pm

Good to hear it is working - thank you for posting your solution :)

dd

Post Reply

FREE TUTORIALS

Tutorials
Free tutorials from mainframegurukul
  • JCL Tutorial
    Covers all important JCL concepts.
  • Cobol Tutorial
    This tutorials covers all Cobol Topics from STRING to COMP-3.
  • DB2 Tutorial
    DB2 Tutorial focuses on DB2 COBOL Programming.
  • SORT Tutorial
    This Tutorial covers all important aspects of DFSORT with examples
  • CICS Tutorial
    This CICS tutorial covers CICS concepts and CICS Basics, CICS COBOL Programming.
Interview
Mainframe Interview questions



Other References
Mainframe Tools and others