These are notes from a z/OS and Mainframe basics class I took in August. I’m no expert and if I got something wrong, feel free to leave a comment.
Desktop PCs have won people’s hearts because, with the right software, “they could do anything”. Servers, too, are known for the variety of tasks they can handle: Set them up to be web servers, mail servers, domain name servers, file servers…
Mainframes, on the other hand, specialize in only two tasks, but they do them on a huge scale: Batch jobs and online transactions.
Online transactions are all tasks that require a real-time, interactive response to user requests. Think of administrator web interfaces, or ATMs. One common transaction server is CICS (Customer Information Control System).
In contrast, a batch job is your typical non-interactive “mass production” task. An example for this would be a national census. You give the mainframe a set of instructions (a script), connect a gigantic database with input data, press a button, it processes everything (sorting, counting, etc), and “two weeks later”, you come back and pick up the output. — Not because processing was slow, but because there was so much data!
As you would expect of a computer program, a job consists of several steps: Usually something like “read data, select records, write, sort, calculate results, format, print.” Historically, one step corresponded to one punch card. One job –what we would nowadays consider one small program– corresponded to one stack of punch cards. Now, a batch (of punch cards, literally,) is a series of said jobs, that depend on one another. Batches are controled by a workload scheduler, whereas the Job Entry Subsystem (JES) handles job submissions (JES2 on single machines, JES3 on clusters).
The whole mainframe business feels as if punch cards never really left. :-) They just went with time and are now hanging out on the mainframes hard drive in digitized form. Unsurprisingly, z/OS’s Job Control Language (JCL) still calls the first statement of each program “job card”. And just as unsurprisingly, the rows and columns in every JCL script still mimic the traditional 80-byte punch card layout. But did you ever notice that, by default, even today’s terminals (DOS, as well as Linux) still have 80 columns?
These 80 columns also make up the length of the punch card’s “nine-edge”, which is the side that used to go into the card reader first. Now I finally get the joke that Hollerith was buried “face down, nine-edge first”…
Update: I found out why it’s called the nine-edge. The rows are numbered from e.g. 0-9, so the side that is closer to row number 9 is the 9 edge.