I *think* that 99% of all code written to process a PDS directory works correctly with a PDSE directory. DFSMS simulates the 256-byte directory blocks and so forth. Perhaps read-only -- not sure you can update a PDSE directory as though it were a PDS -- but that is irrelevant here.
Charles -----Original Message----- From: IBM Mainframe Discussion List [mailto:[email protected]] On Behalf Of CM Poncelet Sent: Thursday, December 12, 2019 1:48 PM To: [email protected] Subject: Re: Looking for a utility to create a master listing of all PDS members on a system (Here it is again, without the line numbers in cols 73-80:) FWIW This program dumps all members' names in a PDS. It can be modified to display any other PDS directory data, and can be invoked recursively (e.g. from REXX) to process any number of PDS datasets. No idea whether it can process PDSEs (I wrote it in the 1980's), but it might do. "EQUREGS" is a macro to copy in the register equates: MACRO EQUREGS R0 EQU 0 REDEFINE REGISTERS R1 EQU 1 ... AR0 EQU 0 <etc.> MEND HTH / Cheers, Chris Poncelet (retired sysprog) ********************************************************************* * LIST ALL MEMBERS OF A PDS * * * * * * * ********************************************************************* * PRINT NOGEN PDSMEM CSECT EQUREGS * ********************************************************************* ******** START OF MACROS ******************************************** ********************************************************************* * MACRO &L READREC &FILE &L READ DECB,SF,&FILE,BUFFER,256 CHECK DECB,DSORG=ALL MEND * MACRO &L WRITEREC &FILE &L PUT REPORT,OUTPUT MEND * ********************************************************************* ******** END OF MACROS ********************************************** ********************************************************************* * DIRECT DSECT DATA DS XL2 LENGTH OF THIS DIRECTORY BLOCK NAME DS CL8 NAME OF THIS/NEXT MEMBER TTR DS XL3 TRACK ADDRESS OF MEMBER C DS X 0:ALIAS;1-2:#UBLOCKS;3-7:#HALFWORDS * PDSMEM CSECT STM R14,R12,12(R13) SAVE REGISTERS LR R11,R15 LOAD ENTRY POINT ADDRESS USING PDSMEM,R11 BASE REGISTER = R11 ST R13,SAVEBLK+8 BACKWARD POINTER LR R6,R13 LA R13,SAVEBLK OUR SAVE AREA ST R13,4(,R6) FORWARD POINTER * START OPEN (PDS,(INPUT)) OPEN DIRECTORY OPEN (REPORT,(OUTPUT)) OPEN LIST OF MEMBERS FILE * USING DIRECT,R9 BASE DIRECTORY BUFFER ON R9 * NEXTREC READREC PDS READ DIRECTORY BLOCK LA R9,BUFFER-2 MAP DSECT OVER IT LESS 'DATA' LENGTH LH R7,DATA+2 LOAD BUFFER LENGTH INTO R7 AR R7,R9 R7 <- END OF BUFFER ADDRESS LA R9,2(,R9) R9 <- START OF BUFFER ADDRESS NEXT CLR R9,R7 AT END OF BUFFER? BE NEXTREC - YES: READ NEXT DIRECTORY BLOCK MVC C_S,C - NO: CHECK WHETHER ALIAS NI C_S,B'10000000' ALIAS? BNE SKIP - YES: SKIP THIS ENTRY CLI NAME,X'FF' - NO: END OF DIRECTORY? BE EOJ - YES: TERMINATE MVC OUTPUT,NAME - NO: TAKE THIS MEMBER NAME WRITEREC AND WRITE IT TO REPORT SKIP MVC C_S,C FIND OFFSET TO NEXT MEMBER NAME NI C_S,B'00011111' ZERO-OUT IRRELEVANT BITS XR R8,R8 CLEAR R8 FOR USE AS WORK REGISTER ICM R8,B'0001',C_S R8 <- NUMBER OF HALFWORDS SLL R8,1 R8 <- NUMBER OF BYTES LA R9,12(R8,R9) R9 <- ADDRESS-2 OF NEXT MEMBER NAME B NEXT GO PROCESS NEXT MEMBER NAME * EOJ CLOSE (PDS,,REPORT) CLOSE FILES * FINISH L R13,SAVEBLK+8 RESTORE CALLER'S R13 LM R14,R12,12(R13) RESTORE REGISTERS XR R15,R15 CLEAR RETURN CODE BR R14 RETURN TO CALLER * ********************************************************************* ******** FILES ****************************************************** ********************************************************************* * REPORT DCB DDNAME=REPORT, X DSORG=PS, X MACRF=(PM) PUT AND MOVE TRANSMITTAL * PDS DCB BLKSIZE=256, X DDNAME=PDS, X DSORG=PSU, X EODAD=EOJ, X RECFM=VB, X MACRF=(R) READ * ********************************************************************* ******** STORAGE **************************************************** ********************************************************************* * * RECORDS * CNOP 0,4 OUTPUT DS CL8 REPORT OUTPUT FIELD BUFFER DS CL256 DIRECTORY BLOCK INPUT FIELD * * CONSTANTS * LTORG * * WORKING STORAGE * C_S DS X FOR ANALYSING THE 'C' FIELD * SAVEBLK DC 18F'0' 18 FULLWORDS INITIALISED TO X'00' * ********************************************************************* ******** THAT'S IT ************************************************** ********************************************************************* * END PDSMEM > On 12/12/2019 17:22, Charles Mills wrote: >> I think IBM has a problem with making something free that used to be >> charged. Not sure exactly what the problem is; perhaps a fear that those who >> paid years ago will want their money back. It is solvable by creating a new >> free offering that is a lot like, but not exactly the same as, the former >> paid offering, but that is an additional internal hurdle to be overcome. >> >> Charles >> >> >> -----Original Message----- >> From: IBM Mainframe Discussion List [mailto:[email protected]] On >> Behalf Of R.S. >> Sent: Thursday, December 12, 2019 9:14 AM >> To: [email protected] >> Subject: Re: Looking for a utility to create a master listing of all PDS >> members on a system >> >> W dniu 2019-12-11 o 17:01, Paul Gilmartin pisze: >>> On Wed, 11 Dec 2019 10:40:33 -0500, Don Leahy wrote: >>> >>>> I have a rexx program that reads in a list of data set names and / or masks >>>> and creates a “master” member list consisting of all of the PDS/E members >>>> found in the data sets. The output is a file containing the member name, >>>> the DSN, last update date (from ISPF stats, if available) and the number of >>>> lines in the member. >>>> >>> Grrr... >>> FAMS keeps timestamps for PDSE members with microsecond precision. >>> The interface spec is available for a price, perhaps NDA. >>> >>> It boggles the mind that a vendor would keep customers' file timestamps >>> secret. >> It's both: funny and annoying. PDSE is almost 40 years old, AFAIK and >> many features of it is still secret, not in use, etc. Note, it's not >> discussion about source code, it is about really basic features. >> I can't imagine any reason to keep it secret. >> > > ---------------------------------------------------------------------- > For IBM-MAIN subscribe / signoff / archive access instructions, > send email to [email protected] with the message: INFO IBM-MAIN > . > ---------------------------------------------------------------------- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [email protected] with the message: INFO IBM-MAIN ---------------------------------------------------------------------- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [email protected] with the message: INFO IBM-MAIN
