The Irony

Wednesday, July 18th, 2012


Changing the logon screen on the mainframe (z/OS VTAM) in ADCD

Sunday, June 17th, 2012

That mainframe login screen can go by many names (VTAM screen, 3270 screen, Telnet screen) but whatever you call it its just the screen used to log on. As with everything in the mainframe world it is ludicrously, stupidly hard to get a straight answer. For example, look at this question in google groups to a really simple question: Manuals on modifying VTAM logon screen? How many pages do you think that is? It’s really not nearly as difficult as these idiots make it look like, but at least these folks where helpful compared to this forum post where a guy gets mocked for a simple question “How to change the logon screen?“.

Anyways, enough complaining about the lack of “community” in the mainframe community and lets get down to business. Changing the logon screen from this:


to this


The easiest way to explain this is that the screen you see is contained in a dataset in assembly, for exampled ADCD.Z111S.VTAMLIB(USSN):

and you need some JCL to generate this crap. The first think you’ll want to do is look at the proclibs for VTAM (ugh, just writing that sentence hurt, I mean, proclib? vtam? who named these things). So look at :


and you should see something like:

remember these settings. You’ll also want to look at:


where you hopefully see

so great, now we can make a JCL to change that horrible screen. Just take this JCL:

USSVTAM2 (also available here:

Now the easiest way to deal with this is like so:

  • You can edit the lines that begin with C’
  • Each line on the screen is equal to two lines in this JCL
  • At the very bottom is the dataset you want the compiled screen to go in to (around line 190) in this example its ADCD.Z111S.VTAMLIB(USSN). (ADCD.Z111S.VTAMLIB the the line below it has USSN(R)).

Once you’ve made the changes you want (and making sure you have the right permissions) you just submit the job (type ‘sub’ in the command line) and then you need to reset VTAM to load this screen. Easy peasy from the  master console:

F vtam_proc_name,TABLE,OPTION=LOAD,NEWTAB=table_name
Based on the JCL above it would be:

And you're done! No go check your awesome new logon screen!

Debian in Hercules

Thursday, February 23rd, 2012

Installing Linux on the mainframe is too hard you say?

It’s not so bad. All you do it get the files you need (there’s only three files you need from debian’s site). Create two fake DASD files and startup the emulator.

Then, we just turn on the mainframe

and tell it to IPL 000c (which is the card reader, which the startup files for Debian/390 is in)

To which it boots a normal-ish looking debian install

you basically just setup the networking and then tell it a password to connect and finish the install

it looks no different than a normal install

where you select the harddrives and format them

install the packages you wanted

and setup the default user

Then you reboot, and IPL the DASD you installed this shit on and…


anyway, there, Linux running on z/OS emulator. Maybe I’ll fuck around with this later

Any other requests? This was actually a nice challenge. I guess I could try and setup VM or DOS…


Saturday, February 18th, 2012

So we’ve played a lot of great games time to see who made these games.

Now we load our VT100 terminal client and dial in to the mainframe

okay that sucked, let’s try a different connection…

time to eat up some cycles

finally now let’s see

Saturday, February 18th, 2012



Saturday, February 18th, 2012

So today let’s talk about Mainframe security. 

Those of you not in the know, so about 97% of YosPos, mainframes didn’t initially come with any security of any kind. So about mid 1970 RACF was released and the people rejoiced because now they could finally limit access to things like datasets, resources.. whatever. The problem, it was made by, for, and of, spergs. But because the system we emulate is such an old shit box it doesn’t come with racf but the much older SYS1.UADS. 

Let’s launch our TN3270 emulator and I’ll show you what I mean

then we just logon as yospos

and here we…

Uh oh… that’s not good… wait I hear the printer

Cos what?


I’ve been infected

Cos Log

**dot matrix printer noise**

Saturday, February 18th, 2012

So we tried klingon and had no idea what the hell was going on. But when you look at it on CBT tape it sounds like it’s the sequel to startrek. 

Now I’m pretty sure startrek is installed but lets see. First we need to connect with a TN3270, luckily I found a freeware one.

So we just browse on over to SYS1.CMDPROC

And there we go, STARINIT, STARTREK and STARRANK, let’s give this thing a try….

we exit back to the prompt and type ‘starinit’ to get everything setup

and we run startrek to give it a sh-


maybe I can fix this, taking a look at the launch script…

welp.. just so this isn’t a shit update (hint: they’re all shit) let’s upload and execute a job that will print on my printer. 

So, we make a job

and then, using the built in FTP server, we upload it and execute it using AAINTRDR

it executed the job and after giving the printer a bit of time….


So, being the classy guy I am on this historical operating system that deserves our respect and addoration, what else would I do…

How I really feel about mainframes

Check out the whole printed job log: YOSGOAT.PDF, you have know idea the level of satisfaction I get from feeding through that garbage through this ancient OS. 

Next Time:


Wednesday, February 15th, 2012

So I heard someone had made klingon playable on MVS 380 so I downloaded their files and powered on the mainframe and logged on

First launching my ever reliable TN3270 emulator

whoa wrong IPL, lemme IPL the right one

after a bit…

this looks awful, after some research I found out I can customize this screen, 10 mins and an ASCII generator and here we go

now thats a welcome screen.

Alright so we got the right one but it still shows the default logon screen, let’s change that to something better

ahh much better

so we log on with the default account herc01, how boring let’s make a yospos account

and change the password

so we log off and back on with yospos and browse on over to the dataset with klingon (just to confirm it’s there)

we then exit and at the TSO “prompt” we type KLIGNON, we get some nice graphics that I’m too slow to capture but you can see them in this tape file

So here we are

who needs instructions

a new game because I’ve never launched it before but I know I’ll be great at it

and we start the game

to be honest this is the best looking game I’ve seen on the mainframe, I’m actually surprised by this. I didn’t read the instructions so I don’t know what the fuck is happening but still, a decent game I guess. Better than Chess for sure.

W.O.P.R. Dreams

Thursday, February 9th, 2012

So we got chess working but it really bugged me that there was no Tic Tac Toe. 

Maybe there’s an old Tic Tac Toe game on CBT



So all the CBT tapes are included in YOSPOS/380 the trick is finding out which dataset. After much digging I found out it’s on CBTCOV so time to load up the TN3270 and connect to YOSPOS/380



Then we logon as yospos

We’re presented with RPF. Which is a freeware version of ISPF, which is like your BBS menus but for mainframes. To look at a dataset we select 

To view a dataset we pick option 3 (a listing of utilities), followed by option 4

which brings us here:

Now, this probably means nothing to you but think of “level” as the root folder on the mainframe. So we put CBTCOV as the root level 

and get presented

We can see that File 160 holds our Tic Tac Toe, so we open file 160 for viewing with the ‘b’ for browse I think

We then see the “members” of File 160. On the mainframe you can have a file that’s partitioned in to multiple parts and each part is a member. TEC012 holds our game so we “browse” that file, which really means “view”. 

And we see this game in all it’s glory!

what the shit, god damned fortran is awful

So now let’s try and compile this bugger now that we know where it is, lets take a look at the hello world fortran example

Welp, this is awful and confusing, sorry folks no Tic Tac Toe, you’ll need to relive your W.O.P.R. fantasies elsewhere cause I’m not dealing with this shit

Would You Like to Play a Game

Saturday, February 4th, 2012

Tic Tac Toe? A game for babies, now Chess, that’s a mans game. 

Let’s install DUCHESS


a chess program running on an IBM 370/168 under the MVS operating system, developed by three graduate students at the Duke University in the 70s, Eric Jensen, Tom Truscott and Bruce Wright. Duchess was one of the strongest programs of its time. In 1977, it was runner up at the Second World Computer Chess Championship in Toronto, behind Chess 4.6 winning from Kaissa, and tied first with Chess 4.6 at the Eighth North American Computer-Chess Championship, runner up due to tie breaking points. At the Third World Computer Chess Championship in Linz 1980, Duchess became third only losing from Belle. Duchess played seven ACM North American Computer Chess Championships from 1974 to 1981.

So first thing we need to do is download DUCHESS

Once that’s done we need to make some changes to the JCL file… 

//             COND=(0,NE),REGION=4096K,NOTIFY=HERC01
//*  __________________________________________________________________

The trick here is finding a volume serial number that’s available for use. So lets logon to YOSPOS/380

Exiting to TSO we launch VOLS which shows me all the available volumes

Not knowing what the fuck any of this means I picked MVSRES cause one of my datasets is on that volume. And then uploaded the JCL file.

DUCHESS also comes with an AWS file. This is a TAPE image file that you mount from the console. First you turn on the tape drive

Then we submit the job and some messages come flying across the master console

The job installs DUCHESS then unmounts the tape. 

So lets play some chess

Ugh. Looking at the help file I can see the current board:

Luckily there’s an image update so it looks less shitty. It comes as a simple JCL so it’s uploaded then submitted, then you change the DUCHESS member in SYS2.CMDPROC from DUCHESS6 to DUCHESSG

… and…. didn’t work, it’s supposed to look like this:

But it, much like everything else, doesn’t work. But anyway Chess is now installed, fuck you Tic Tac Toe.

Game Day

Saturday, February 4th, 2012

Well then, lets get some classic gaming up in here. 

You saw worm:

What else can we play on this… there’s a classic game called ADVENT, otherwise known as Colossal Cave Adventure

Colossal Cave Adventure (also known as ADVENT, Colossal Cave, or Adventure) gave its name to the computer adventure game genre. It was originally designed by Will Crowther, a programmer and caving enthusiast who based the layout on part of the Mammoth Cave system in Kentucky. The Colossal Cave subnetwork has many entrances, one of which is known as Bedquilt. Crowther reproduced portions of the real cave so faithfully that cavers who have played the game can easily navigate through familiar sections in the Bedquilt region on their first visit.

Its the first real text adventure game as it’s claimed that the term ‘Text Adventure” was born of this game. Really it did start the whole genre. If you’ve read Clifford Stoll’s book “Silicon Snake Oil” he devotes basically a whole book about how going outside in a real cave is better than playing ADVENT (he’s the dude who wrote Cuckoo’s Egg). 

Word is that this game is included with the install. So let’s give it a go shall we…

and nothing happens, well not nothing but nothing in my TSO screen anyway.  Let’s just check the master console:

I see this, repeated over and over again until,

my World Trade Organization buffer is 100% filled. And nothing accepts any input. Welp

And we’re back in business. So someone had this same problem on the mailing list and it’s because some chucklefuck thought it would be a good idea to put a system command in SYS1.CMDLIB (or something) with the name ADVENT and then the game also had the name ADVENT so they were conflicting. It also didn’t help that the text for the game wasn’t “mounted”. So to remedy that we enter:




which allocated the DASD (or “mounted”) the files we needed to be able to play the game, then we just run the game from it’s specific location instead of the one in our “path”. 

(except I fucked up and put “adventure” instead of “advent” but I fixed that the next line).

but then I remembered I hate text adventure games (premptive: mlyp)

If anyone is interested in playing go ahead, I just used the YOSPOS account to load ADVENT so if you really need to read about exploring a cave go for it. 

Next Time:

The Pride Parade Ends

Saturday, February 4th, 2012

Alright, let’s change the pride parade  logon screen:

through some research found out there’s a REXX script(?) to take an ASCII file and make it so lets try to do this.

Using the examples provided I changed the screen:

and ran the script:

The REXX file for those interested

which turned my nice screen in to the ASM needed

Luckily I found out that there’s a JCL file to make the change I needed to make. And even better its available in the JCL folder so I can edit it in a modern editor instead of that line-by-line editor. I just replace the assembly already in there and we’re ready to go:

the JCL for those who are curious

Alright, so we got JCL, otherwise known as Job Control, file now we just need to upload it. Since this is the mainframe world you can’t just FTP, oh no, you use IND$FILE:

So let’s do this, you enter transfer on x3270 which asks you a bunch on questions

and transfers the file to a dataset on the mainframe

So it was at this point I was starting to feel confident, 2.5 days with this monster and I new enough to upload the file, browse to it using RPF and then submit the job to be run

goddamnit, it was at this point that I was about the rage quit when I though about just running it through the “command prompt”, not expecting it to work but whatever


lets reboot VTAM, but I don’t know how to do that, probably “v net” on the master console or something. Anyway, I just reboot the mainframe and here we go:

next up

Saturday, February 4th, 2012

PROC 0                 /* NO PARAMETERS REQUIRED */


EXIT                   /* RETURN TO TSO READY PROMPT */

Change the rainbow bright logon

Friday, February 3rd, 2012

So I was thinking about changing TURNKEY to YOSPOS/380. Should be easy enough right…. WRONG!

The standard network solicitor (NETSOL) sign-on screen is rather boring. I have written a little REXX procedure to help me in defining 3270 data streams, and used this for a homegrown SDF (Screen Definition Facility). The first screen designed was a logon screen for the Tur(n)key system. This job (mvs0080) will modify the local NETSOL macro, and includes SYS1.UMODMAC(TURNKEY), the actual screen definition. Run this job, stop, then start VTAM, and you will see the new LOGON screen.

By modifying SYS1.UMODMAC(TURNKEY) you can provide your own screen. I have included the REXX script as file NETSOL.REX in directory REXX on the CDROM. You will also see one or two other sample screens.

So now maybe we should take a look at SYS1.UMODMAC(TURNKEY)

* »»»»»»»»»»» Sample Screen Layout ««««««««««««

* ----+----1----+----2----+----3----+----4----+----5----+----6----+---
*             Welcome to MVS3.8J, running under the Hercules emulator
*     TT      UU    UU   RR    RR   NNN    NN   KK  KK     EE
*     TT      UU    UU   RR    RR   NNNN   NN   KK KK      EE
*     TT      UU    UU   RRRRRRR    NN NN  NN   KKKK       EEEEEEE
*     TT      UU    UU   RRRR       NN  NN NN   KK  KK     EE
*     TT      UU    UU   RR  RR     NN   NNNN   KK   KK    EE
*     TT      UU    UU   RR   RR    NN    NNN   KK    KK   EE
*     TT       UUUUUU    RR    RR   NN     NN   KK     KK  EEEEEEE   Y
*                        !      _,,,---,,_                brought to
*                 ZZZzz /,'.-'`'    -.  ;-;;,              Volker Band
*                      !,4-  ) )-,_. ,( (  ''-'            vbandke bsp
*                     '---''(_/--'  `-'_)
*  Logon ===>


alright pretty easy, let me just PGDN

$SBA  (01,12)
$SF   (SKIP)
DC    C'Welcome to MVS3.8J, running under the'
DC    C' '
DC    C'Hercules'
DC    C' '
DC    C'emulator'
$SBA  (01,68)
$SF   (SKIP)
$SBA  (5,1)
DC    X'2842F1'
$SBA  (5,10)
$SF   (SKIP)
$SBA  (5,12)
DC    X'2842F2'
DC    C'UU'
$SBA  (5,15)
$SF   (SKIP)
$SBA  (5,18)
DC    C'UU'
$SBA  (5,21)
$SF   (SKIP)
$SBA  (5,23)
DC    X'2842F3'
$SBA  (5,31)
$SF   (SKIP)
$SBA  (5,34)
DC    X'2842F4'
DC    C'NN'
$SBA  (5,37)
$SF   (SKIP)
$SBA  (5,41)
DC    C'NN'
$SBA  (5,44)
$SF   (SKIP)
$SBA  (5,46)
DC    X'2842F5'
DC    C'KK'
$SBA  (5,49)
$SF   (SKIP)
$SBA  (5,51)
DC    C'KK'
$SBA  (5,54)
$SF   (SKIP)
$SBA  (5,57)
DC    X'2842F6'
$SBA  (5,66)
$SF   (SKIP)
$SBA  (5,68)
DC    X'2842F7'
DC    C'YY'
$SBA  (5,71)
$SF   (SKIP)
$SBA  (5,74)
DC    C'YY'
$SBA  (5,77)
$SF   (SKIP)
$SBA  (6,4)
DC    X'2842F1'
DC    C'TT'
$SBA  (6,7)
$SF   (SKIP)
$SBA  (6,12)
DC    X'2842F2'
DC    C'UU'
$SBA  (6,15)
$SF   (SKIP)
$SBA  (6,18)
DC    C'UU'
$SBA  (6,21)
$SF   (SKIP)
$SBA  (6,23)
DC    X'2842F3'
it goes on like this for a fucking while, UGH

Time to Log On

Friday, February 3rd, 2012

Anyway, now that you’ve got some shit running you’ve got to initialize the terminals…

working in this makes Linux look like some pro level shit

alright, now to a civilized OS where I can use a good TN3270 emulator to connect, 

and get the same hercules screen as before, welp,  now you have to “CLEAR” your screen, whatever that means

anywho, TSO requires a password so I give it “yospos”

and get logged in straight to RPF (a ripoff of SDSF)

which I promptly exit (by pressing x) so I can get to TSO “prompt”

and now time to play some games


note, those are F keys, not 1, 2, 3 etc. The game, like almost everything in MVS is unuseable.

Meet YosPos380

Thursday, February 2nd, 2012

Meet Hercules. It’s unironically pretty awesome in that it emulates old mainframes but this is YosPos so let’s get on with it.

Once you figure out what you need you load hercules for the first time and look at this shit

Thankfully there’s a GUI interface that isn’t shit so we’ll use that. 


great its still shit, let just load a conf file (which tells hercules how many terminals to connect, tape drives, printers, dasd’s etc) and get started

I set this up using the MVS Turnkey and MVS380 shadow files. It was a disgusting pain in my ass. 

Ok, so I loaded the conf file and nothing. Oh right you gotta turn on the mainframe

still nothing… well now you have to connect a 3270 terminal,  I’ll just load the best, free one for XP

great! but pressing enter or anything on this screen gets me a beep…. because my mainframe still isn’t doing shit. It’s on but I haven’t told it to boot yet. I’ll just remedy that

now the mainframe is running, lemme check my 3270 console

that’s all you get cause eventhough I told the MF to boot I need to tell it to do more stuff from this, the master console (hence the r 00,cpla. But that was a typo, let’s try again with r 00,clpa)

at last something is happening!

my card punchers, DASDs etc all come online, great! Just look at all this shit thats going on

it’s even nicer from cathode

The Mainframe is a POS

Thursday, February 2nd, 2012

What follows is a series of posts I did at something awful about setting up and finally getting running a mainframe implementation. 

Keep in mind that this is satire and not an attack on the amazing work that the people at Hercules or Fish have done. It’s to poke fun at the mainframe world which always takes itself so seriously, to the point of ridiculousness. 

I also use it to vent my frustrations from having to deal with mainframe people (especial folks from IBM) as I conduct detailed mainframe reviews.