Kevin Miner
Theropod
Published in
4 min readMay 3, 2022

--

IPL z/OS without an automation or an HMC .

🖥 🖥 🖥 🖥

It was a cold, dark, and stormy late winter night, the kind of night that cuts through a winter coat to drain all the heat from your body. Or, it was a hot and muggy late summer night, the kind of night without a breath of wind where the air weighs on you like a blanket and just taking out the trash can make one break out in a sweat. In reality, it probably wasn’t either of those but many of the good mystery novels I’ve read have a catching start that I’ve always wanted to try. Plus, the small town I live in has many nights like these, so to me this seems like a good way to start this story.

In truth, it was a late night in my air-conditioned home office, and I was shutting down z/OS systems to power cycle a processor. Like other discoveries it started with a mistake (and I am well known for making mistakes). In this instance, my mistake was misspelling a parameter on the V XCF command. Did you know if you type in the command

V XCF,system name,IFFLINE z/OS will respond with the message

IXC370I THE VARY XCF COMMAND COULD NOT BE PROCESSED: THE ONLY ALLOWABLE OPTIONS ARE OFFLINE, RETAIN, REIPL, SADMP AND FORCE.

Recognizing my mistake, I typed in the command correctly and created a mental reminder to look up the REIPL parameter in the morning. Bright and early the next day (after lunch), my research of this message led me to the scintillating Statements and parameters for DIAGxx in the z/OS MVS Initialization and Tuning Reference manual, where I learned of the AUTOIPL parameter. To my astonishment, I read that I could specify the load address, load parameter and load type in parmlib! For a guy who likes mystery novels, the storylines began to play out in my mind. Just imagine, the ability to specify in parmlib the parameters most often used on the Hardware Management Console (HMC) Recovery Load panel. If this truly worked as advertised, it could be possible to not only IPL a system but also to change the IPL address for a system without accessing the HMC (Cue foreboding organ music).

Now for the reality of the implementation, in our environment we use two IPL volumes for each system, but this will also work in a shared SYSRES configuration as long the two volumes have uniquely identifiable volsers. Our SYSRES naming pattern is IPLx10 and IPLx20. While I realize how technically advanced and exciting that may sound, but often the simplest approach is the easiest. The volser names are the key, and the magic is in the IEASYMxx and DIAGxx member of parmlib. First, the IEASYMxx which has the following entries:

· SYSDEF SYMDEF(&ALTIPL.=’20') /* Alt IPL vol suffix */ [1]

· SYSDEF SYMDEF(&SYSR2.=’&SYSR1(1:4).&ALTIPL(-2:2).’)

· SYMDEF(&ACTDIAG.=’&SYSR1(4:2)’) /* DIAG Suffix active IPL */

· SYMDEF(&ALTDIAG.=’&SYSR2(4:2)’) /* DIAG Suffix alternate IPL*/

[1] Please note the &ALTIPL will be the opposite of the &SYSR1 suffix. If &SYSR1 is IPLx10, the &ALTIPL will be 20. When &SYSR1 is IPLx20, the &ALTIPL will be 10.

Before you point out the violation of IBM recommendations for system symbol names by creating a symbol with a SYS prefix, I plead guilty as charged. This seemed like the best choice to me, so it’s what I used. In case you are unfamiliar with IEASYMxx syntax, &SYSR2 is the first four characters of &SYSR1 and the last two characters of &ALTIPL. Again, I realize &ALTIPL is only two characters, so file this coding choice under “Technical Dad Jokes”. Don’t skip over what’s next; the &ACTDIAG/&ALTDIAG is the key to changing the IPL address (Did you catch the unexpected plot twist here?).

Since a picture is better than my story telling, I will use our z/OS system that uses the IPL610/IPL620 SYSRES pair.

· IPL610, device address 7D98 and the DIAG61 parmlib member is the matched pair.

· IPL620, device address 7EC2 and the DIAG62 parmlib member is the matched pair.

Our DIAGxx members are set up as follows:

· DIAG61 has the entry “AUTOIPL SADMP(NONE) MVS(7D98,7D19DTM1)”.

· DIAG62 has the entry “AUTOIPL SADMP(NONE) MVS(7EC2,7D19DTM1)”.

· DIAG55, our DIAGxx member used at IPL, has the entry
AUTOIPL SADMP(7E85,SMSYSC4) MVS(LAST).”

If the system is re-IPLed without a SET DIAG command, the SYSRES used will be the one used for the last IPL. This eliminates the need to know the IPL address, so it’s one less thing to remember. If one were to issue the z/OS command, SET DIAG=&ALTDIAG, (and yes that is the actual syntax), the DIAGxx associated with &SYSR2 is used. Now the IPL address of the alternate SYSRES will be used when the z/OS command
V XCF,system-name,OFFLINE,REIPL is issued.

As I look out the window of my home office, it is a sunny spring day with just a few clouds throwing their shadows across the yard. Glancing at the azaleas that need trimming, the most ironic plot twist of all crossed my mind. If I were a better typist, would I have seen the path of IPLing without an HMC? Maybe next time I’ll share the story of how we’ve automated the clean shutdown and IPL of a z/OS system without an automation tool, but for now I have azaleas and an extension cord that needs trimming.

--

--

Kevin Miner
Theropod

Currently in IBM DFSMS Device Services Test. System programmer since 1983. Worked for a large zOS customer 1983–1999 then IBM 1999 — current.