Introduction to MVS 2 - The Console =================================== Like all the other OSes you're probably familiar with, MVS also has a 'console'. Unlike those other OSes, a console is *required* in MVS, and there may be more than one. Historically, the console(s) were 3270 terminals connected to the physical machine. Today, they're virtual consoles connected via the HMC (Hardware Management Console - a LAN-connected x86 machine running a custom linux with a number of mainframe management software applications installed). Shoutout to any AIX/iOS admins reading, who also probably have HMCs. Unix is generally pretty happy running without a console, as it's used mainly for informational read-only messages and lots of places I've worked at redirected console output elsewhere (eg. to a file). If MVS cannot find a console, a couple of things might happen, depending on what you're doing at the time: - IPL (Initial Program Load ie. boot) will fail very early on or - The system will eventually grind to a halt (the console output will be buffered while no display device is available) IPL Time -------- In common with other systems, the console is used to display boot-time information. Below is a small and probably mostly-incomprehensible extract from an OS/390 system: IEF403I IEESYSAS - STARTED - TIME=23.29.16 IRR813I NO PROFILE WAS FOUND IN THE STARTED CLASS FOR 411 CATALOG WITH JOBNAME CATALOG. RACF WILL USE ICHRIN03. IEF403I IEESYSAS - STARTED - TIME=23.29.16 IWM041I WORKLOAD MANAGEMENT ADDRESS SPACE MODIFY COMMAND AVAILABLE IEF196I IEF237I 0A80 ALLOCATED TO SYS00001 IEF196I IEF237I 0A80 ALLOCATED TO SYS00002 IEF196I IEF237I 0A80 ALLOCATED TO IEFPARM All the messages are prefixed with a message ID. More details on them can be found in the numerous 'Messages Guide' manuals. Taking an example above, 'IRR813I' (and copy-pasting from the relevant manual): "IRR813I NO PROFILE WAS FOUND IN THE STARTED CLASS FOR member-name [WITH JOBNAME jobname]. RACF WILL USE ICHRIN03. Explanation An MVS START command was processed and the STARTED class is active. One of the following problems occurred: o The STARTED class is SETROPTS RACLISTed, but no profile was found to assign security information for the procedure or job being started. o A profile to assign security information for the procedure or job being started is defined, but the STARTED class for SETROPTS RACLISTed is not, or for SETROPTS RACLIST REFRESHed is not on the system where the START command was issued. System action RACF uses the information in the started procedures table (ICHRIN03) to assign security information for this started procedure or job. Operator response Notify the systems programmer or security administrator. Tell them the member name and job name (if any) contained in the message text. System programmer response Do one of the following tasks: o The security administrator responsible for profiles in the STARTED class did not define a profile to be used when starting the indicated procedure or job. Inform the administrator that this message occurred so a profile can be defined, if one is wanted. o Profiles exist or are defined in the STARTED class for the indicated procedure or job, but the security administrator has not SETROPTS RACLISTed or SETROPTS RACLIST REFRESHed the STARTED class. Inform the administrator that this message occurred so the STARTED class can be SETROPTS RACLISTed or SETROPTS RACLIST REFRESHed." Pretty thorough, right? I love the MVS docs. Operator Requests ----------------- Originally, mainframe systems required a number of 'operations' staff to keep the thing running - loading and unloading tapes and disk packs, tending to printers and print jobs, and so on. Ops were requested to perform various jobs via the system console - the system might ask for a particular tape volume to be mounted in a particular drive, for instance. Once the manual labour had been completed, the operator would need to reply to the request via the console so that the system could resume the job that was requesting the resource. This sort of request/reply pattern is still used in MVS, but day-to-day is generally handled by automation applications. There are still some difficult or undesirable-to-automate conditions of course, and most installations will still have a (reduced) number of operators. The operator requests look something like this: *06 ICK003D REPLY U TO ALTER VOLUME A8F CONTENTS, ELSE T 06 is the operator request ID ICK003D is the message ID The rest of the line is the message text. In this case, a request to confirm alteration of the disk volume at address A8F. To respond to this, an operator would enter at the console: R 6,U to confirm ('Reply U to alter...'), and the operation would proceed. '6' is the request ID ('06' is also acceptable input), and the response is 'U'. As you might guess, a response of: R 6,T in this particular example would cancel the request (and the job which is the source of the request gets to deal with that however it sees fit). Other Facilities ---------------- The console also provides an interface to query and modify the state of the system. There are a whole bunch of commands available, and interested/insomniac readers are directed to the 'MVS System Commands' reference at [1]. For the purposes of demontration however, I'll show you the 'DISPLAY' and 'VARY' commands in action. The DISPLAY command will unsurprisingly let you see the status of various aspects of the system. Here's an example of querying the devices present at a particular set of hardware addresses: 00- 11.29.25 D U,,,0130,8 11.29.25 IEE457I 11.29.25 UNIT STATUS 532 UNIT TYPE STATUS VOLSER VOLSTATE 0130 3380 O WRK000 PUB/RSDNT 0131 3380 A WRK001 PUB/RSDNT 0132 3380 A WRK002 PUB/RSDNT 0133 3380 A WRK003 PUB/RSDNT 0134 3380 A WRK004 PUB/RSDNT 0135 3380 F-NRD /RSDNT 0136 3380 F-NRD /RSDNT 0137 3380 F-NRD /RSDNT The VARY command sets a device (or range of devices) online or offline: - 11.32.56 V 0133,OFFLINE 11.32.56 IEF524I 0133, VOLUME WRK003 PENDING OFFLINE 00- 11.33.05 D U,,,0130,8 11.33.05 IEE457I 11.33.05 UNIT STATUS 545 UNIT TYPE STATUS VOLSER VOLSTATE 0130 3380 O WRK000 PUB/RSDNT 0131 3380 A WRK001 PUB/RSDNT 0132 3380 A WRK002 PUB/RSDNT 0133 3380 A-PND WRK003 PUB/RSDNT 0134 3380 A WRK004 PUB/RSDNT 0135 3380 F-NRD /RSDNT 0136 3380 F-NRD /RSDNT 0137 3380 F-NRD /RSDNT 00- 11.36.35 V 0133,ONLINE 11.36.35 IEE302I 0133 ONLINE 11.36.35 IOS452I 0133,01, OPERATIONAL PATH ADDED TO PATH GROUP There's loads more to dig into here, but I think that's quite enough about the console for the time being eh? [1] https://www-01.ibm.com/servers/resourcelink/svc00100.nsf/pages/zOSV2R3sa380666/$file/ieag100_v2r3.pdf