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
List of datasets created before the date specified
Moderators: Veera, Moderator Group
-
- Member
- Posts: 20
- Joined: Mon Dec 30, 2013 6:03 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.
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
-
- Member
- Posts: 20
- Joined: Mon Dec 30, 2013 6:03 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
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('B',YYYY||MM||'01','S')-1 /* GET DATE FOR 1ST OF MONTH -1 */00620012
NEWDATE=DATE('S',BASE+DD,'B') /* ADD DAY OF MONTH, CONVERT BACK 00640012
TO YYYYMMDD */00650012
INDATE= SUBSTR(INDATE,5,4)||SUBSTR(INDATE,1,4) 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
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
- Cobol Interview Questions
50+ Interview Questions - JCL Interview Questions
50+ Interview Questions - DB2 Interview Questions
100+ Interview Questions - CICS Interview Questions
70+ Interview Questions - VSAM Interview Questions
27 Interview Questions
Other References
Mainframe Tools and others
- XPEDITER Reference
Explains how we can debug a program - FILEAID Reference
Explains how to browse , edit and delete datasets - Change Man Reference
Quick Start tutorial on Changeman - Abend Reference
Important Abend codes explained - FaceBook Page
MainframeGurukul FaceBook Page - LinkedIn Page
MainframeGurkul Linkedin Page