Console message automation on MVS3.8J

Like many of the old timer MVS sysprogs and operators out there when I discovered the hercules emulator that lets you run your old MVS system at home I was overjoyed, and immediately wasted many happy months playing with it.

Of course as the last available release for home hobbiests was MVS3.8J.
The trouble with continuing to work with MVS is that you just expect the tools you are familiar with to be available; hiccup; where is MPF.

Didn’t take long to figure (there are enough enthusiest sites out their after all) out that lots of assembler coding in the user exit IEECVXIT was where all the message automation was done. So off I went, happily codeing away and CLPA’ing changes (and compressing PDS’s when a change wasn’t picked up).
But eventually I was starting to get into rather complicated things, lots of getmains/freemains appearing in the user exit for needed work space whilst keeping it re-entrant, but heck I love assembler, this is fun isn’t it. Anyway, as always happens even I eventually made a programming error.

I can confidently say that making an error in IEECVXIT code is an impressive event, after all it is the message automation routine. The error causes the exit to create a system dump, which of course generates messages to be processed by the badly coded user exit which causes a system dump…., the dump datasets allocated filled up within seconds generating dump dataset full messages, processed by the user exit which tries to create more dumps… sigh.
But the system kept running !, I logged into TSO, submitted the job to lodge the prior version of IEECVXIT, shutdown and IPL’ed with a CLPA and all was well again.

So why mention all that. It’s because I decided that what I was trying to do in IEECVXIT was just getting too complicated to risk being in a user exit, plus I was starting to exceed the size limits imposed on the code in the user exit. I needed another solution.

MPF on the later releases of MVS is nice, but I don’t think much of the syntax needed in the MPFnn files.
IEECVXIT is the only place available in MVS3.8J to change routing codes or supress messages.
But what about another way of reading and processing the messages.

I spent weeks in IMON trying to find a memory area that looked like a console message so I could automate messages without needing IEECVXIT. No joy there but I was also still searching the web for MVS3.8J utilities and discovered that Greg Price had a version of SPY for MVS3.8J, a console screen scraper, there were my messages to automate. Gregs site (http://www.pycroft6.com.au/vs2mods/) is actually offline as I type this entry, hope it’s temporary.

Obviously a message automation tool using a console screen scraper can only process the action/attention messages (other messages would scroll off the screen and may be missed between poll intervals), but it could both run as an STC and use files, IEECVXIT being forbidden to do any IO limits its use for changing rules without IPLing again. So if I based a program on the SPY utility (minus all the TSO screen handling/display code needed by the SPY utility) a nice started task program could monitor the action/attention messages on a console and take actions on them based on a file based ruleset. Now did I want that ?.

Of course I did, beats filling up all the dump datasets. So I wrote my own message automation STC,
My MMPF solution (Marks/My MPF). All the screen scraping code is based on Gregs code (will insert link if http://www.pycroft6.com.au/vs2mods/ comes back online) for SPY, I just linked in message parsing code (for the &WORD1-&WORD20 etc insertions into commands to be execute in response) and of course all the STC bits and pieces like
F STCXXX,MMPF=nn
yes you can change rulesets on the fly it can use datasets remember; testing new rules has never been easier, no IPLing anyway. And best of all as a screenscraper app only working on action/attention if your new rule does not work, well it will still be on the screen won’t it, change your test rule member and load it in until it does.

Anyway, there may be better solutions out there, but there is more detailed information on My MMPF solution if you want it, and if you run MVS 3.8J at home of course :-).

About mark

At work, been working on Tandems for around 30yrs (programming + sysadmin), plus AIX and Solaris sysadmin also thrown in during the last 20yrs; also about 5yrs on MVS (mainly operations and automation but also smp/e work). At home I have been using linux for decades. Programming background is commercially in TAL/COBOL/SCOBOL/C(Tandem); 370 assembler(MVS); C, perl and shell scripting in *nix; and Microsoft Macro Assembler(windows).
This entry was posted in MVS3.8J. Bookmark the permalink.