As you've probably heard, most of the people working on mainframes are old -- really old. Colleges have all but abandoned teaching mainframe skills to their students, exacerbating the looming mainframe skills shortage. Big iron also suffers from an image problem, lacking in glamour and press ink. But that doesn't mean we can't take college recruits and turn them into excellent mainframers. In this column I'll outline some mainframe basics that a newbie must master.
There are substantial differences of structure between the mainframe and other platforms, beginning with a flat file naming system that uses catalogs instead of directories. Then there the features all platforms share that are named a little differently. For instance, a mainframe has address spaces instead of processes, and tasks in lieu of threads. Finally, there are the unique concepts, such as a job entry subsystem, along with its host of initiators.
COBOL and other essential mainframe languages
If I could teach mainframe beginners only one language, it would be
Given time and money, I would also teach them PL/1. It looks enough like pseudo code to be easy to learn and serves as an introduction to structured programming. A mainframe programmer may also apply its concepts and structures to other procedural languages, such as Rexx or C.
Data management on the mainframe
Another interesting thing about mainframes is that data sets have built-in structures with record formats, logical record lengths and block sizes. Indeed, it may be difficult for people used to stream I/O to understand why block size is important, given the type of direct-access storage device (DASD) devices we have now. We also need to teach the concept of a volume and the idea of space management.
That's the easy part. Next comes teaching young people about partitioned data sets (PDS), both extended and foreshortened, along with all the virtual storage access method (VSAM) subspecies. Even though applications are moving away from pure VSAM, it is still the data set type underlying database management systems (DBMs) such as DB2. I would not include specific information about DB2 assuming most colleges already teach students how relational DBMs work. There should be some information about IBM's Information Management System (IMS). I don't think students are exposed hierarchical databases, and this one is important to a lot of big shops.
Mainframe programming tools
A good grounding in Time Sharing Option (TSO) and other tools, such as Interactive System Productivity Facility (ISPF), will go a long way to jump start a student's usefulness on the host platform. He or she will become acquainted with the tools and methods for development as well as how to submit and review job output. This may also be the right place to teach Job Control Language (JCL).
As a last word on this subject, I would encourage teaching how basic ISPF works without any fancy workbenches or automated tools. I say this because I've seen many cases where new programmers are trained on workbenches that leave them ignorant of what goes on behind the scenes. Then, when the workbench breaks or they have to do something out of the ordinary, they don't know how to proceed.
Mainframe systems programming
The more technically minded may want to go directly into system programming and administration. For these folks, I would begin with a course in Assembler. Not only does it teach mainframe hardware internals, but it also reveals what a complied program looks like and comes in handy when reading dumps.
Speaking of dumps, an introduction to Interactive Problem Controls System (IPCS) fits into the curriculum as well. Besides problem determination, I encourage students to rummage through the dump looking for system control blocks and get a feel for how it is put together.
Finally, time permitting, beginners should learn about systems management. Here someone might learn a generic form of maintenance methodology designed to minimize downtime while enabling ease of backout. And for those who deserve punishment, I recommend a survey of SMP/E.
Teaching graduates mainframe skills brings up the question of whether it's easier to go from the mainframe to another platform or vice versa. For me it seems fairly easy to learn Unix after working on mainframes once you map out the similarities and differences, but that may be because of my own biases and experience. At any rate, the survival of the mainframe, both short and long term, partially depends on our ability to replace our own gray heads.
ABOUT THE AUTHOR: For 24 years, Robert Crawford has worked off and on as a CICS systems programmer. He is experienced in debugging and tuning applications and has written in COBOL, Assembler and C++ using VSAM, DLI and DB2.
What did you think of this feature? Write to SearchDataCenter.com's Matt Stansberry about
your data center concerns at firstname.lastname@example.org.
This was first published in March 2009