MVS TOOLS AND TRICKS OF THE TRADE FEBRUARY 2007 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. *** By Sam Golob and Courtney Taylor *** TECHNOLOGY BREEDS TECHNOLOGY Today's topic needs a bit of introductory explanation. The idea of "technology breeds technology" is something like the idea of "knowledge breeds knowledge", but the two concepts are not exactly alike, and there is a big basic difference between them. Nevertheless if you know about the idea of "knowledge breeds knowledge", then you can grasp what is meant by "technology breeds technology". And "technology breeds technology" is a very important idea to understand well. That's why I felt it was necessary to write an article about it. The idea of "technology breeds technology" is very close to the life of an MVS systems programmer. What is meant by "knowledge breeds knowledge?" It simply means that when you learn a fact or a principle, and you know it, you can then build on knowing that fact or principle to learn yet another fact or yet another principle. And the new knowledge which came from previous knowledge builds up piece by piece, so that you eventually accumulate a big body of knowledge after you started out with just a little bit. For example, when you start to learn a new language, you learn a few words first. When you know how to say a few things, you can then build on it, by asking how to say a few more things, and eventually, you can speak the language quite well. So you see that a bit of knowledge can be exploited to acquire more knowledge, and eventually, when you follow the path out, you acquire a lot of knowledge and become quite an expert on the subject. Technology is like that, but instead of consisting of isolated or small pieces of knowledge alone, each "piece of technology" or "level of technology" is a complete tool, or a complete piece of machinery, which works by itself as a separate entity. To show this better, if you'd say that if a piece of knowledge can be symbolized by knowing how to use a particular Assembler language instruction, then a piece of technology would be like having a complete, working Assembler language program or tool, that has already been completely debugged, and it is known to work well. Once you have the complete program in place and you can use it, you have acquired some technology (even if you wrote the program yourself). And then you can use this "technology" that you acquired by writing or by using that program, to write and use more programs. And so, having some technology, breeds acquiring more technology. It's like accumulating knowledge, but to be more exact, it's more like accumulating tools. A "piece of technology" is already a complete working tool or set of tools, and it is not just "an isolated piece of knowledge." A NEW ENVIRONMENT We tend to feel the "lack of technology" and "the need for more technology" when we are entering a new environment, where things are not as familiar to us as they were before. Most of us have changed jobs during our careers. Even though the new shop is an MVS shop, and the old shop was an MVS shop, they usually were by no means identical. And we had to take quite a bit of time to accommodate ourselves to the new place. Furthermore, in many instances, the new place did not own or license proprietary software (or hardware) tools which the old place had. So we had to learn to do without some of the "technology" that we previously were familiar with. Of course, the new place would often have licensed other proprietary software tools, so now, we would have the opportunity to take advantage of learning and using new "technology" also. See what I mean? I'm trying to show you how to look at an MVS (or any other) environment in "technology" terms. A case in point, which shows this principle very dramatically, is the "hobbyist MVS environment" which involves being able to run ancient MVS 3.8, under the Hercules emulator, on your PC at home. IBM used to be primarily a hardware company, in the business of selling their large computers, and they conveniently provided the software which ran on their machines for no extra charge. (The computers, then, were expensive enough so that IBM could do very well on the hardware money alone.) Then around 1978, following a lawsuit, IBM was forced to charge money for the system software they had developed. But the software developed before that, would remain free. This is why it is possible to legally run a free version of MVS, using an S/390 instruction emulator which was developed to run on a PC. The "ancient MVS" of the mid-1970s is still, indeed, free software. But of course, the "technology" of 1975-era MVS is not the same as ours. Many pieces of MVS that we are now familiar with, are conspicuously missing. For example, ISPF came later, so ISPF is not there. Most of us would have a very hard time using MVS under TSO on a system that doesn't have ISPF. But if you run "hobbyist MVS", then you are forced to do just that. Therefore, there was an effort to develop "replacement technology" to try and get around the fact that all the "ISPF technology" was missing. Rob Prins (of the Netherlands) brought his "RPF" package back, which was an ISPF-like file editor and utilities package he had developed in the early 1980s. (See CBT Tape Files 415 or 417 to get the RPF package(s).) And Greg Price added an ISPF-like file editor extension to his REVIEW (TSO-based) browsing program (CBT File 134). So with these "new technologies", it would then be possible to approximate some of the advantages of having the ISPF technology available, which we all now pretty much take for granted on an MVS system. THE MVS DEVELOPER ENVIRONMENT While I'm here, I feel it is very important to discuss the "MVS Developer" environment that many of us work in. This environment is where many of the "new technologies" that we use, are born. Of course, every computer system requires a development environment. People always have to develop new software packages (i.e. "technologies") for computer systems, so that your everyday work on the system is made easier. For example, I remember the FSE (Full Screen Edit) package for MVT, which was better than (line mode) TSO EDIT by a long shot. But ISPF (for MVS) was a lot better than FSE. FSE was a "technology" that had to be developed by a private software company. So you see why this area is so relevant to today's topic. And private software companies outside of IBM, had many difficulties. In former times, MVS software required very expensive machines to run on. You couldn't write MVS software unless you had a 5-million dollar or 10-million dollar machine to run it on. So the software developers (and software development companies) for the MVS environment either had to be very rich (which most of them weren't), or they had to contract for computer time from very large companies, which had the use of these machines. I personally think that this situation set the precedent, to explain why most commercial MVS software today is so very expensive to license. At that time, the software was very expensive to develop. Then, in the early 1990s, IBM addressed the "low-end machine problem" for developers, by coming up with the PC-based P/390 machines, that depended on a special hardware card which ran the S/390 instruction set (under OS/2) on a PC. All of a sudden, the P/390s went out of style. This was for an obvious reason. By the year 2000, IBM had started the process of adding hundreds of new hardware instructions to its instruction set, and if you would try and make these new instructions execute on a hardware card, you'd have to come out with a new hardware card every year. Therefore IBM gave up on its P/390s and Multiprise successor machines, inadvertently leaving the developers in the lurch. (I remember it well. I asked them about the low-end machines, and they wouldn't give me an answer.) But meanwhile, Fundamental Software (FLEX-ES) had come out with their new "hardware emulation technology" to run S/390 hardware instructions in emulation mode on an ordinary unmodified PC. Hardware instruction emulation was nothing new. In the old days before System 360, IBM would always have some emulation technology which would run the previous system's hardware instructions on the new machine. But this time, IBM was taken by surprise. In their big effort to add new hardware capabilities to the new "z" machines, they left the low-end software developers hanging. So IBM turned to the most "established" company that had already developed a relatively inexpensive system which could help the developers. And IBM contracted to the FLEX people, to produce the emulation software solution that would satisfy all the low-end developer needs. But I wouldn't be surprised if IBM might yet announce their own low-end solution. Who knows? Technology does not stand still, and anything can happen. BACK TO SOFTWARE TOOLS I'd like to share one of my recent experiences which reflects the concept of "technology breeding technology". As (I hope) you might have heard, I'm busy trying to extend my free BRODCAST Dataset management package (CBT Tape File 247) into a commercial product. (In contrast with the current trends, I intend to make it VERY inexpensive.) By the way, if you want to access the free tools in the CBT Tape collection, please do a www.google.com search on "CBT Tape", and the correct website should come out at, or near, the top. In the process of developing an "industrial strength" version of my BRODCAST package, I wrote a program (called BDMINIT) which is driven by SYSIN keywords, that allows you to create a BRODCAST Dataset of any size. The BDMINIT program calculates all the necessary quantities you'll need, and it tailors itself to any geometry of CKD DASD. Also, it does not rely on any BRODCAST Dataset management facility or BRODCAST utility that comes from IBM. In other words, if you want 200 Notices, you don't have to zap some IBM module. You merely have to code NOTIFY=200 in a SYSIN card. With just your own SYSIN input, all the calculations and initializations for the entire new BRODCAST Dataset are automatically done for you. And the program makes sure you've allocated enough space on DASD. So now I have technology that allows me to quickly create a BRODCAST Dataset of any size. I made one that is 3000 cylinders, with space for 10000 users and over 2 million messages. And I made another one that is one track, with space for 9 users and 21 messages. They both work. I switched my system to use both of them, using the new PARMLIB UPDATE(xx) facility that allows you to switch the active BRODCAST Dataset on your MVS system. Making both of these datasets just took a matter of minutes (mainly for formatting the large one). Using this new technology which I now have in my pocket, I can test my other BRODCAST programs, such as my souped up BRODCAST Dataset SCAN program (called BDMSCAN), on a tailor made BRODCAST Dataset which I can whip up on short notice. The technology that allowed me to instantly create any size BRODCAST Dataset, then helped me to fix my other programs, and develop even more technology for handling the BRODCAST Dataset or any copies thereof. The technology that I myself created, is breeding more and more technology that I hope many of us will be able to eventually use. Here's another thought. Any software tool that you use in your work, whether it be commercial software from IBM or another vendor, or free software that comes from the CBT Tape Utilites collection or any other place, can rightfully be considered "a piece of technology." And you, yourself, use these pieces of technology to either write your own programs, or to do something to maintain your system. I'd challenge anybody working in this field to prove that he or she has NOT INNOVATED some new technique or has NOT WRITTEN any new program, even if it was a CLIST or a REXX. That is next to impossible. You can't do this work without doing any innovating or creating! And much of the innovating and creating, when you think about it, involves making new "technology", even if it is just putting together a cleverly crafted JCL stream. And to do all this, we use our existing "technology". So just in doing our everyday work, we see, indeed, that "technology breeds technology." SUMMARY Today, my purpose is merely to rephrase some facts that we already know. But it comes with the intent of making us focus on the progress we are making, and on the "technological" advances we are living through and participating in. When we look at our work in this way, we see that it is an exciting and satisfying job that we do. Besides that, whether we realize it or not, we are constantly contributing to making our own work easier, and everyone else's work, too. The mechanism we employ, is to "use technology to create new technology." That is really what we are doing, most of the time. In this definition, the word "technology" means any finished tool or creation, which we can use to do some work. All of our work is done with tools. And each of the tools is "a piece of technology". When we do our work, the tools we are using are either employed to create something else, say another tool, or to create a technique to use the tools. So whether we know it or not, we are constantly using "technology" to create "technology". Because we often don't realize we are doing this, I feel I have to bring it out into the open. Big technological advances, such as the creation of a new database system or a new way to store your data, pique your attention. But we should all be aware of the small technological advances, which we are all contributing to, every day. Old technology breeds new technology constantly, as long as someone is working at it. I wish all of you the best of everything, and I am happy to "see" all of you here today. Please come and visit us again, next month.