links
email me
PDS2PDS Blog
REXX
Other ISPF Applications
Personal MVS/ISPF Sites
What is PDS2PDS?
PDS2PDS is an ISPF utility that will show you the member lists of two partitioned datasets side by side and let you operate on them. You can copy or move members from one PDS to the other. You can do things like delete, rename, edit, view, or browse members of either PDS.
Pattern matching can be used to initially select members from the partitioned datasets. This works the same as with any other ISPF member display. For instance, you could enter a member name pattern of AB* to show only those members beginning with the letters AB. You can specify different patterns for each PDS.
After pattern matching has been used to choose which members will be selected from the PDS, member matching can be used to specify which of these selected members will be shown in the member list display. You can show only those members that exist in both datasets, or you can show only those members that exist in one or the other dataset. Several other member matching criteria are available.
Once the member list display is shown, global commands will let you perform operations on every member of the PDS or you can use line commands to operate on individual members.
A New Version of PDS2PDS is in Development
I'm working on a new version of PDS2PDS which will be version 4. The current version 3.02 (now known as the previous version) hasn't been updated since around 1999.
The previous versions were written in REXX with a couple of COBOL subroutines used where speed was needed.
Version 4 will be 99 and 44/100% pure Enterprise COBOL. There will be one REXX exec used to start the utility. The REXX exec will issue the necessary LIBDEF and TSOLIB commands to establish the working environment then it will call the main COBOL program. The main program will call other COBOL routines as needed.
The PDS2PDS Blog
I have created a place here for posting progress reports as work on the application continues. I won't be posting every day, but I hope to post once a week or so.
New Features
Some of the new features are:
- The application is being completely rewritten using Enterprise COBOL
- The application will work with Model 5 (or other) 132-column 3270 displays
- You can change dataset names, member matching parameters, and the Include/Exclude field from the member list panel. Previously you had to exit the Member List display and return to the main display to change these parameers.
- I've added a PROMPT field like you see on other ISPF panels. This field will be used to display the status of command operations (copy, rename, move, etc.) and will allow the user to enter a new member name when you want to copy or move member 'A' to the other PDS but you want to rename it to 'B'. The field will also be used to enter a new member name for the Rename command.
- A new command called Swap will be added. This will let you swap a member (line command) or members (global command) between datasets.
- The whole application executes faster than before. The REXX code wasn't really all that slow, but there is a noticeable difference now in how fast the screens come back after changing the operating parameters to show different information. The whole thing is just a bit more 'snappy'.
A Bit of History
Here's a short history of the evolution of the utility.
Sometime in the late 1980's I came across a utilty for DOS based PC's. This utilty (I think it was called LIST) would show two disk subdirectories side by side and you could copy or move files between them, or you could rename or delete files in either subdirectory.
I decided that would be a pretty neat thing for the mainframe. At the time I was living in my hometown of Huntsville, AL, and working for McCormack & Dodge on the HR:M Payroll software. (Before that, and before it was HR:M, the payroll system was owned by CARS/Dyatron, and before that General Computer Services. But I digress...)
Anyway, at that time we were using VM/CMS and not TSO for program development. I wanted to learn REXX, so I wrote the very first version called CMSMATCH to show two VM minidisks side-by-side. This worked ok, but it wasn't great, so after I wrote it I used it a lot but didn't really work on it any more.
In 1996 I came to work for SAS (formerly SAS Institute) where I still work today. SAS has both VM/CMS and TSO, so I dusted off the old CMSMATCH utility and rewrote it to work under ISPF. This first version was called PDSMATCH. Between then and 1999 I did keep working on it, changing the name to the very clever (I thought) PDS2PDS and in 1999 the last version (3.02) was written.
Why a New Version Now?
Good Question.
Even though the REXX-based version of the utility works well, I never was quite satisfied with it. The big omission was not writing it to work with Model 5 or other wide-column displays. The 80-column screen is really limiting when trying to view two member lists and all of their stats side-by-side.
Also, in the past seven years, I've learned a lot more about writing ISPF-based applications. Improvements in COBOL (address pointers, etc.), the availability of LE/370 callable services, and (Oh Happy, Happy Day!) the ability to imbed REXX code in ISPF panels, or to call REXX programs from ISPF Panels allow one to do things in COBOL and ISPF that couldn't be done years ago.
Besides, I just thought it would be fun to write a serious ISPF utility in COBOL. I don't want to start a religious war, because every language has its place, and some languages can do things that others cannot, but not everything has to be done in Assembler or C (or ALGOL, or Autocoder, or RPG, or... :)
So (to paraphrase) we have the technology. I can rebuild him. I can make him better, smarter, and faster than he was before.
Here are some screen captures of the new panels, using a 132-column display (and showing that I once worked in the SYSTEM 2000 (S2K) Database Management Software group):