TechInfo:OS:IBM Mainframes:OS/360 Installation
WORK IN PROGRESS - 10/31/2014
This page will take the user, step-by-step, through the generation of an OS/360 MVT system with HASP and TSO configured for six terminals under the Hercules emulator. The information and JCL scripts here come from various sources, but most of it was originally from Jay Maynard's excellent Introduction to Generating and Running OS/360 on Hercules pages. None of this is my original work; I've merely abbreviated it, made a few minor changes, added some steps from other sources, and come up with a procedure that results in my desired configuration. The most significant modification I've made to Jay's procedure is configuring TCAM to support multiple terminals. This is intended as a quick-start guide; readers are urged to refer to Jay's site above for an in-depth description of each step in the process.
The steps detailed below resulted, for me, in a fully functional OS/360 MVT system with HASP, multi-terminal TSO, and some extra DASD for work space. I'm running hercules v3.07 under Solaris 10 on UltraSPARC, but other UNIX platforms should be identical. I have no idea if any of this would be different under Windows.
The first thing to do, of course, is to build and install hercules. I'll leave this as an exercise for the reader. Next, download Jay's JCL files, control files, and HASP distribution, os360ctl.tar.gz, here. We'll be using most of those files as they are, but we'll make a few changes as described below.
You will also need an OS/360 distribution in the correct format. These instructions are written for the CBT CDROM distribution, which is available here. In case this link becomes broken at some point, there's a copy available on my server here. This one has been extracted from CDROM and had its file permissions fixed to be UNIX-friendly, but is otherwise unmodified from the original.
Before we get started, it will be necessary to have an understanding of some basic concepts regarding both Hercules and OS/360.
First, the OS/360 MFT/MVT family and the later MVS operating systems are commonly referred to simply as OS. I will follow this convention in this document.
Next, during interaction with MFT/MVT/MVS, OS will issue operator requests on the system console, to which it expects responses. These requests always start with an asterisk in the first column and are followed by a two-digit number, and will generally follow this form:
*00 IEE801D CHANGE PARTITIONS- REPLY YES/NO (,LIST)
You must type your response in this form:
The two digit number ("00" in the example above) will increment with subsequent operator requests. This allows OS to have several outstanding operator requests, and allows you to direct your responses to a specific one. This is often a point of confusion because it is so very foreign to people who have limited experience with this family of operating systems.
The next important concept pertains to jobstreams. In the instructions below you will be instructed to submit a jobstream. On a real mainframe, this would be done by loading a deck of punched cards into a card reader and pressing an "interrupt" button. Here, we have text files which hold the former contents of those punched card decks, and we load it into the reader by telling Hercules the channel address of the virtual card reader (00c) and the path to the file containing the card images. By card images we don't mean photographic images, but byte-for-byte copies of what the actual punched cards contained. These are ordinary text files, and by convention have an extension of ".jcl". To load a deck into the Hercules virtual card reader, we type a command of this form at the Hercules console:
devinit 00c /path/to/file.jcl
In the instructions below, <cr> means "the return key". This may be obvious to most of us, but there are a lot of Windows users out there.
Building the base OS/360 MVT system
The first thing you'll need to do is extract os360ctl.tar.gz and your OS/360 distribution in a work directory. Your directory structure should look like this:
$ ls OS360/ os360mvt/
Change to the os360mvt directory and follow the instructions below.
- Run the makedasd script. It will prompt you for the location of your OS/360 distribution files. If your directory structure is set up as detailed above, the answer will be "../OS360". The makedasd script will now create and load the DASD files, which will take a few seconds and create a lot of console output.
- Obtain the current day of year, which you will use below. On modern UNIX systems, use this command: date +"%j"
- Start hercules by typing hercules -f gen.cnf.
- Get a system console on the emulated System/370 by typing telnet localhost 3270 in another window.
- Back in the hercules window, type ipl 150. MFT will start, and ask you to "SPECIFY SYSTEM PARAMETERS" in your 3270 console window. Just hit return here.
- Now, also in your 3270 console window, type the following commands to MFT. Some of them will produce some output and some will not; this is correct behavior.
r 00,yes r 00,p0=(a,512k),p1=(a,512k),end t date=75.nnn,q=(,f) <--- for "nnn" here, enter the three-digit day of year r 00,u mn jobnames,t mn status s wtr.p0,00e s init.p1,,,a s rdr.p1,00c
Now we have a running MFT system. Note that rdr has issued a mount request on the system console: "*IEF233A M 350,SCRTCH,,RDR,P1 P01". To satisfy this request, issue this command to MFT in your 3270 console window:
and then trigger an interrupt for device 350 by typing "i 350<cr>" on the hercules console.
Next, we submit a JCL jobstream that initializes the system catalog. This is done by handing a text file to the system's virtual card reader. The text file contains card images which appear to the system to be a stack of punched cards. At the Hercules console, type "devinit 00c filename". Due to the reader (rdr) and initiator (init) tasks started above, the MFT system will begin processing the jobstream as soon as it is handed to the virtual card reader. Watch the MFT console for job start and end messages.
Using one of the methods described above, submit jobstream "jcl/ctlgwrk.jcl". It will issue a mount request: "*IEF233A M 151,SCRTCH,,CTLGWRK,CTLGWRK P01". Respond to this request by issuing this command on the 3270 console:
and then trigger an interrupt on device 151. The system will process the job and print "IEF404I CTLGWRK ENDED P01" on the system console when processing is complete. Now we can get down to business. Submit the following jobstreams in the order listed below. The next-to-last jobstream, stage2.jcl, will require you to send device interrupts 41 times for device 351. Do this when it stops processing and prints a line on the console that starts with "*IEF533A M 351". To send these interrupts from the Hercules console, type "i 351<cr>".
devinit 00c jcl/ctlg3330.jcl devinit 00c jcl/fixnip.jcl devinit 00c jcl/fixgenlb.jcl devinit 00c jcl/hasphook.jcl devinit 00c jcl/stage1.jcl devinit 00c jcl/stage2.jcl devinit 00c jcl/mvtsetup.jcl
Now shut down the MFT system by typing the following on the 3270 console (telnet session):
p 00e z eod
Wait for "IEE334I HALT EOD SUCCESSFUL", and exit hercules. You should now have an operational OS/360 MVT system contained in the dasd/* files. It might be a good idea to make a snapshot of those files now.
Starting the OS/360 MVT system
Our next step is to boot the MVT system that we just created. IBM's term for "boot" is IPL, for Initial Program Load. IPLing a system like this is somewhat more involved than bringing up a PC. Here are the required steps:
- Start hercules with the mvt.cnf file: hercules -f mvt.cnf
- Start a 3270 emulator, pointed at port 3270 of the host running hercules. This will become the MVT system console. I recommend x3270, with this command line:
x3270 -model 3279-2 -port 3270 -sb -sl 96 -tn IBM-3279 localhost:3270 &
- In the hercules window, type: ipl 350. This will start MVT, which will print a sign-on message to the console.
- Hit <cr> on the 3270 console, then type the following:
r 00,'no' mn jobnames,t mn status k s,del=rd,seg=19,con=n,rtme=001 r 00,'date=75.nnn,q=(,f)' (when prompted to "REPLY WITH SET PARAMETERS OR U", for "nnn", enter the three-digit day of year) r 00,q=(,f) (when prompted to "REPLY WITH SET PARAMETERS OR U") r 01,u (when prompted to "SPECIFY JOB QUEUE PARAMETERS") (it will run for a little while here; wait until it's idle) s init s wtr,00e r 02,pn (when prompted to "SPECIFY UCS PARAMETER") s rdr,00c k e,1
MVT is now up and running, and ready to process JCL jobs. The next step is to install HASP.
this section is incomplete
devinit 00c haspjcl/i01alcin.jcl devinit 00c haspjcl/i02alcsp.jcl devinit 00c haspjcl/i03load.jcl devinit 280 tapes/hasp4.aws devinit 280 tapes/h4supb.aws devinit 00c haspjcl/i04procs.jcl devinit 00c haspjcl/i06wto2.jcl devinit 00c haspjcl/i07htso.jcl devinit 00c haspjcl/p01gen.jcl devinit 00c haspjcl/p02rfit.jcl devinit 00c haspjcl/p03umods.jcl devinit 00c haspjcl/p04asm.jcl devinit 00c haspjcl/p05lsvc.jcl devinit 00c haspjcl/p06lhasp.jcl
The IPL process is a bit different for a HASP-enabled system.
s hasp r nn,format,noreq # only for first hasp ipl r nn,noreq # after first hasp ipl
Setting up TSO
Installing TSO for a single terminal
The TSO/TCAM-related JCL files supplied in os360ctl.tar.gz generate a TCAM installation capable of supporting a single terminal; see below for multi-terminal support. I performed these steps using HASP. Note that you'll need to change the card reader's intrq parameter to eof when using HASP; I edited my .cnf file to make this change after installing HASP.
If desired, you can do this without HASP; just feed the JCL files to the standard MVT rdr task as you did before. If you do it that way, however, you'll need to start a writer for the punch with s wtr,00d,,b.
First, run jobs jcl/tcamprcs.jcl and jcl/tsosetup.jcl, which add the TCAM and TSO JCL procs to SYS1.PROCLIB. Next, run the Stage 1 TCAM generation job, jcl/tcamstg1.jcl. This creates assembler output on the punch device at 00d. Take that output from whatever file is tied to your 00d punch device (pch00d.txt by default) and insert it into jcl/tcamstg2.txt at the obvious location using a text editor to create jcl/tcamstg2.jcl, and run that job.
Assuming these run to completion without errors, your single-terminal TSO/TCAM installation is now complete and ready to start.
Installing TSO for multiple terminals
At least two other people have come up with ways to generate multi-terminal setups; I've seen pages by Mike Ross and Wolfgang Schafer detailing this.
(this section is incomplete)
s tcam s tso,,,(,,form=all) # ",,,(,,form=all)" only required for first startup f tso,users=16 s brdr
(to be continued, 10/31/2014)