MVS TOOLS AND TRICKS OF THE TRADE MAY 1999 Sam Golob MVS Systems Programmer P.O. Box 906 Tallman, New York 10982 Sam Golob is a Senior Systems Programmer. He also participates in library tours and book signings with his wife, author Courtney Taylor. Sam can be contacted at sbgolob@cbttape.org. Information about the CBT MVS Tapes can be found on the web, at http://www.cbttape.org. HIGHLIGHTS OF CBT TAPE VERSION 420 Way back in time, when Arnie Casinghino edited the CBT MVS Tape, I used to drool for a new version, more than a kid would look forward to a new bike. What new goodies, tools, and thingies did it have? Did Bruce Leland and Steve Smith add more doo-dads to the PDS command? (Nowadays, John Kalinich does that.) Would I get some new invention that would revolutionize my work? There's no telling what I'd find. Somebody should have taken a few pictures of the smile on my face, at the very moment I opened any new CBT Tape package. Nowadays, when the shoe's on the other foot, I always try and multiply my own expression of happiness by several thousand, as I picture everybody else getting a package of new CBT Tape stuff. I want to make sure that every single person out there, is as happy getting a new version, as I used to be. I think, with this new CBT Tape Version 420, not too many people will be disappointed. Figure 1 contains a summary of all the file changes to Version 420, and you can see at a glance that there's a lot to look at and explore. Today, we'll start a quick tour of some of the highlights (with more next month), and we'll see a lot of new ways to expand our tool collection and our skills. WHAT'S REALLY NEW? Probably the first thing you'll notice as you look at File 001 (the documentation) of Version 420, is that it's now in mixed case. Not only does lower case type make the documentation easier to read, it makes it possible to accurately display Internet addresses, so that everyone will be able to find them. The other piece of news about File 001 (currently more than 33000 lines long) is that you can now make a pds out of it. On File 004, there is a new ISPF edit macro called CBTUPDTE, which inserts a whole bunch of IEBUPDTE "./ ADD NAME=" cards into the CBT Tape Documentation, so you can create a partitioned dataset with small pieces of the text as separate members. I hope this will help more people profit from the wealth of documentation that's in there. There are a few more CBT doc manipulation tools on Files 006 and 130. As far as new utilities are concerned, it's tough to decide where to start. I guess the best place is File 365, where we have a beautiful new package from Ron MacRae of Amdahl UK, which helps us better to transmit MVS data over the Internet. By now, many of us know that TSO XMIT will take almost any MVS-based disk data, and will re-package it into convenient 80-byte records for neat transmission to almost anywhere. The format for doing so is TSO XMIT node.userid DATASET(your.dataset) OUTDATASET(your.seq.FB80.XMIT.output) . The trick to realize is, that once you've coded the OUTDATASET parameter, it doesn't matter where the destination "node.userid" is. The XMIT command (in that case) will only reformat the data, but it won't send it out. You yourself can now download the reformatted data to a pc, attach it to an Internet email or FTP it, so it eventually reaches another MVS system somewhere in the world. On the MVS receiving end, after they get the new data, they do a TSO RECEIVE INDATASET(this.new.data) against it. Problem is, we're never 100 percent sure that not one single byte of the RECEIVEd data was altered during the physical transmission. Experienced users of this method (like me) will know that if there was some alteration of the data file by the time it got to the receiving MVS system, the TSO RECEIVE command might not work properly. But that condition won't catch all the possible errors. It's only an indication that there's some header or trailer information missing. The alteration of a byte or two of the actual data, will give absolutely no indication that anything's wrong. You're never really sure you've gotten absolutely the same data that the sender sent. A second problem, or more accurately, a "difficulty" in this method, is the complexity of coding the TSO XMIT command for many files, if a lot of them have to be sent. On the MVS RECEIVEing end, how do we know that if the sender sent 100-or-so files, one of them is not missing? Besides the complexity of doing 100-or-so TSO RECEIVE commands, one after the other, we're never sure we've actually gotten all the files across from the sender. Ron MacRae's package solves all this. Ron works for Amdahl UK, and his unit is responsible for supporting their product called ObjectSTAR. Ron's unit has to ship PTFs out over the Internet, and they have to be accurate, byte-for-byte. They also have to receive entire dumps and diagnostic data from customers, over the Internet. All of it has to be right, with no data altered in the transmission, otherwise the problem diagnosis might be wrong, and things could be badly messed up. Sometimes very large amounts of data have to be (accurately) sent. Ron's solution to this problem is a package called OSTARXMT, which consists of two REXX execs and an optional assembler program. Amdahl UK has graciously consented to make this system public, with the condition that it not be sold, and we owe them a big "thank you". A lot of people, in a lot of places, are going to get a lot of benefit from this system. The two REXX execs, called OSTARXMT and OSTARREC (for "transmit" and "receive") are self-contained. Here's how the system works. OSTARXMT is run against one or more datasets that are to be sent out. OSTARXMT invokes TSO XMIT "under the covers", for each dataset to be sent in the package, and bundles the XMIT-format data for each dataset, so it goes together in one file, one dataset after another. Then, to each 80-byte record of the XMIT-format data, eight bytes of error-checking data are appended at the end, resulting in records that have 88 bytes of data. In other words, the dataset made by OSTARXMT has LRECL 88. Since this is a special format, a special MVS suffix is assigned: ".XMT". The single ".XMT" file, possibly containing many datasets, is now sent out, anywhere in the world, eventually reaching another MVS system that has the OSTARREC exec installed. The recipient executes OSTARREC against the XMT file, and (in the simplest case) gets a series of TSO RECEIVE INDATASET prompts for each file included in the bundle. OSTARREC will not work, unless every byte of data is accurate, as indicated by the 8 error-checking bytes in each record. After each TSO RECEIVE command has executed, you are assured that you have, byte-for-byte, the same data that the sender sent. Furthermore, since the data came in one package, none of the individual datasets is missing. Sometimes all of this OSTARXMT activity will create a very large single package to be transmitted. Some compression of the package is needed. For a first cut, Ron has incorporated the free IBM compression utility called TRSMAIN into his system. TRSMAIN is a load module that can be obtained from the following IBM site (as of this writing): ftp://service.boulder.ibm.com/s390/mvs/tools/packlib When you put the TRSMAIN load module into one of the load libraries on your system, you indicate its presence by editing the OSTARXMT and OSTARREC execs to show the library where TRSMAIN is located. OSTARXMT will then optionally use TRSMAIN to create a compressed version of the package to be sent, suffixed by the special suffix: ".XM1". When OSTARREC goes against a file with suffix ".XM1", it will invoke TRSMAIN (which also has to be present on the receiving MVS system) automatically to decompress the file, before invoking the rest of the processing on the resulting ".XMT" file. In practice, this is very automatic and convenient, though it may take some time. You might run it with TSO-in-batch, so it doesn't tie up your terminal. For large files, the error-checking process, done by OSTARXMT and OSTARREC, might be slow, because of the slowness in REXX program execution. To solve that problem, Ron MacRae wrote an assembler program called OSTAREDC, which does the same error checking at assembler speed (usually over 95 percent faster). You edit the two REXX execs to tell them where to look for the OSTAREDC load module, and all error checking is then automatically done at super-speed instead of at REXX speed. This package is "very cool". There are at least two other new "data packaging" related systems on CBT Tape Version 420. One has been added to File 171, and is a package called FX, a sort-of-substitute for IBM's old BDT (Bulk Data Transmission) package. FX works on MVS systems that are connectible using LU 6.2. The other is the BACKDSNS program that's on Randy Hall's new file, File 354. BACKDSNS will look at a list of datasets and create backup JCL for them. Randy's new file contains a bunch of other new goodies too, that are very much worth looking at. SO WHAT ELSE IS NEW? What else is new? Much more than I can talk about in this small space, and I'll have to continue next time. However, there are some special items that I'd especially recommend trying. One of them is a neat system of REXX execs by Willy Jensen of Harders Jensen in Denmark. Willy's system can be found on File 349, and allows you to modify your active ISPF command table entries "on the fly". This lets a systems programmer come into a new shop, or just tailor an ISPF session's "special commands" according to preference, without affecting anyone else's sessions at all. The package consists of two REXX execs, ISPCMDL to list your ISPF session's command table entries, and ISPCMDU, to update them on the fly. Another little gimmick comes from Joerg Berning in Germany and consists of a REXX exec called LISTVTOC, to do a track extent map of a disk volume. The result of the map is ISPF edited and displayed on your screen, so you can do a CREATE to save it. LISTVTOC is quick and neat, but you have to try it for yourself, to see if it is useful for your own purposes. Currently, the absolute track values are displayed in decimal. I myself would alternatively like to also see CCHHR and TTR displays too. Maybe Joerg will add these eventually, but his program, as it stands, is quite unique, and very useful. LISTVTOC is on File 344 of the CBT Tape. If your shop is small and you don't have a multi-session manager package, or you want to set up a VTAM multi-session manager program for yourself, NETSOL is back, fixed to run on OS/390. NETSOL used to be on the CBT Tape, many years back. It was fixed and spruced up, and now it's available for your use again. NETSOL is on File 356 of the CBT Tape. I'll continue this topic next time. Meanwhile, look at Figure 1 for what's new, and go to the Online Home of the CBT Tape, to get what you want. The Online CBT Tape files can be accessed from www.naspa.net, by clicking on "Online CBT". Good luck and good hunting! We'll see you next month. * * * * * * * * * * * * * * * * * * * * * * * * Figure 1. Summary of File Changes in Version 420 of the CBT Tape. File Number Quick Summary of Contents or Changes ----------- ------------------------------------ 001 Documentation File is now in mixed case. 004 CBTUPDTE edit macro - IEBUPDTE separators in File 001. 006 Tools to manipulate File 001 and improve readability. 035 Load module library. Latest version of PDS 8.5 etc. 071 Updated documentation of other tapes. JES3 Tape. 118 SMP/E SMPPTFIN pre-processing. Upgrade to COBOL/370. 120 More of these articles. (MVS Tools and Tricks) 130 Former File 006. Loads File 001 into INFO/MVS database. 134 Greg Price source. Latest version of REVIEW, etc. 135 Greg Price load modules. SHOWMVS load module, etc. 166 Vinh Vu's collection, updated. 171 LU 6.2 Bulk Data transmitter. With DITTO, DISASM etc. 182 PDS package. Version 8.5, update 8, from John Kalinich. 183 Gilbert Saint-flour collection. New SHOWMVS program. 296 Utilities that work with PDS 8.5, and standalone too. 300 Update to CDSCB for Y2K. With zillion other TSO pgms. 311 Refresh of Dave Alcock's large utility collection. 312 Lionel Dyck's ISPF FTP Batch interface, and XMITIP. 321 Roland Schiradin's COBOL load module analysis pgm. 338 Gilbert Saint-flour and Larry Williams - P390 tools. 344 REXX exec from Joerg Berning to do a VTOC track map. 347 Look at load library and list COBOL compile options. 348 Pgms to list pds members in alphabetical order. 349 Change your ISPF command table options on the fly. 350 JES2 exits. Convert JCL from Mellon Mods to SCHENV=. 351 Programs to list currently installed LE level. 354 Randy Hall collection of programs. New. BACKDSNS etc. 355 KONCAT (concatenation program) from Kaiser Permanente. 356 NETSOL (VTAM multi-session manager). Works for OS/390. 357 PDSGEN, PDSLIST programs from Carl Hafner of Steli. 358 SYSOUT writer from Eric Bielefeld. 361 Frank Johnston programs. Multi-string scanner, etc. 362 Frank Johnston load modules. 363 ISPF/PDF Data Set Name change exit. (ISPF exit 16) 364 Control Card Subsystem. Works for OS/390. 365 Error-check multiple-file TSO XMIT pkg from Ron MacRae. 369 Multiple changes to DSPACE program from Dale Vick.