Message Processing Facility exits can be useful, especially if a site has no console automation product, to automate responses to important console messages. If console messages are left totally unsuppressed then the console could become flooded with irrelevant or unimportant messages and the important messages may be missed in the chaos. IBM do supply a list of messages that are candidates for message suppression but it is up to a site to decide whether to be aggressive with message suppression, or to be conservative.


The usual disclaimers apply to all our code samples (including the MACROs).

This page contains MPF exit code to perform particular tasks that are useful at our site, you need to consider if they are relevant to your site and please, check with your site System Programmers before attempting to install any of these exits. You will need to change the in-use PARMLIB member in order to implement any of these exits so you are not likely to have access to this unless you are a System Programmer anyway!

These MPF exits should be assembled and linked into a library that is defined in the LNKLST concatenation.

All of these exits are available in one transmitted partitioned dataset from here.

If you prefer it in IEBUPDTE format then it too is available. The link for this is here.

  Stopping An External Writer When It is Waiting For Work  
  There is a good chance that linklist will need to be refreshed after you add this exit into it.

Also the following definition should be added to the MPF member in order to activate the exit.

IEF176I,SUP(NO),USEREXIT(IEF176IX)

Here is some sample External Writer JCL


//RWTR     PROC
//IEFPROC EXEC PGM=IASXWR00,REGION=64K,PARM='PR,IEFSD094'
//IEFRDER DD UNIT=SYSALLDA,DSN=
your.output.dataset,
// DCB=(BLKSIZE=3059,LRECL=133,RECFM=FB),DISP=(,CATLG),
// SPACE=(CYL,(5,1),RLSE),VOL=SER=
volser

This MPF exit will shutdown an external writer when it issues the IEF176I WAITING FOR WORK message.

The code uses SVC 34 to issue a stop (P) command for the writer. The code, as written, will check that the output class being spooled off is either class R or class L (usually the SYSLOG output class).

The code is fully functional and working but caution should be used before implementing this exit to ensure that output isn't discarded or overwritten.

Note that the sample JCL uses a separator routine (IEFSD094) which may or may not be installed at your site. Replace the output class being spooled but remember that the exit code will also need changing to reflect the change in output class.

IEF176IX is available from here.



 

 


 

  Automatically Issue a Start For a Printer  
  There is a good chance that linklist will need to be refreshed after you add this exit into it.

Also the following definition should be added to the MPF member in order to activate the exit.

$HASP190,SUP(NO),USEREXIT(HASP190X)

This MPF exit will issue a start command ($SPRTx) for a printer when $HASP190 is issued for it.

Back in the day operators had to physically load the FCB (Forms Control Buffer) using a paper tape loop and ready the printer with the correct paper, print chain etc. nowadays all that stuff is usually done by the printer and so operator interaction is less likely to be required. However, sometimes it is so further checking in the MPF exits may be required but it should be pretty intuitive as to how this can be done. If you need any further assistance though, please feel free to contact us.

HASP190X is available from here.



 

 


 

  Automatically Reply "Y" To Shutdown zFS  
  There is a good chance that linklist will need to be refreshed after you add this exit into it.

Also the following definition should be added to the MPF member in order to activate the exit.

BPXI078D,SUP(NO),USEREXIT(BPXI078D)

This MPF exit will reply "Y" to the message to shutdown the z/OS zFS service.

This is usually only done at shutdown or to restart a zFS service, the premise is that if you are shutting it down you want that to happen as quickly as possible. There may be times when you didn't intend to issue the shutdown in the first place but in our case we only ever want it to close down.

BPXI078D is available from here.



 

 


 

  Automatically Reply "D" To delete a dump  
  There is a good chance that linklist will need to be refreshed after you add this exit into it.

Also the following definition should be added to the MPF member in order to activate the exit.

IEA793A,SUP(NO),USEREXIT(IEA793AX)

This MPF exit will reply "D" to the message that indicates that a dump cannot be taken.

This is usually because the disk containing the dump datasets is full.

The message itself is:

nn IEA793A NO DUMP DATA SETS AVAILABLE FOR DUMPID...

We only use this exit on our test and development systems as we really don't care about the dumps on these systems. Please follow our own sites standards when considering using this MPF exit.

IEA793AX is available from here.



 

 


 

  Automatically Issue a Refresh For LLA  
  There is a good chance that linklist will need to be refreshed after you add this exit into it.

Also the following definition should be added to the MPF member in order to activate the exit.

ASLLLA1R,SUP(NO),USEREXIT(ASLLLA1R)

The following is an example of how to use this exit. Notice that the final step will only execute if all previous steps returned a condition code of 0.

//PROCLIB JCLLIB ORDER=ABBYDALE.DEVL.JCL
//ASMMPF   EXEC ASMDOC,
//         LPARM='LIST,LET,NCAL,AC=1,MAP',
//         SOURCE='ABBYDALE.MPF.SOURCE',
//         LOADLIB='SYS1.LINKLIB',
//         LOADLIB='SYS1.LINKLIB',
//         MEM=ASLLLA1R
//REFRESH  EXEC PGM=BSLBR14,PARM='COND=0,NOWAIT',COND=(0,NE)
//SYSIN    DD *
ASLLLA1R ISSUE REFRESH FOR LLA

This MPF exit will issue a refresh for LLA when the message ASLLLA1R is issued.

Now given that ASLLLA1R isn't a standard IBM message and indeed stands no chance of being issued in the normal scheme of things, however, if you need something to issue the message then BSLBR14 is worth a look at.

Details of BSLBR14(ASLBR14) are available from here. The format of the message doesn't really matter as long as ASLLLA1R are the first 8 characters.

If you wish to use a different message identifier you need only change the MPF list member. It is recommended that you use this exit with some caution but we use it to refresh LLA when we assemble a new program/exit that resides in the LINKLIST chain.

There is a different version of the MPF exit (ASLLLA2R) which contains a table of authorised jobnames. If the jobname issuing the ASLLLA1R message isn't contained within the table, then the refresh won't be issued.

ASLLLA1R is available from here.

ASLLLA2R is available from here.



 

 


 

  Make the Text of IKT002I More Readable  
  There is a good chance that linklist will need to be refreshed after you add this exit into it.

Also the following definition should be added to the MPF member in order to activate the exit.

IKT002I,SUP(NO),USEREXIT(IKT002IX)
This simple MPF exit will change the text of the IKT002I message when the reason code is '04' to a more reasonable explanation. i.e. TSO is already running.

It will change the message:

IKT002I TCAS IS TERMINATING, REASON CODE= 04

which is basically saying that TSO is already active and change the message to:

IKT002I TSO ALREADY ACTIVE. REQUEST IGNORED

While this may seem like a fairly trivial exit it does demonstrate how to change the text of a message using a message processing exit.

IKT002IX is available from here.

 

 


 

  Cutting SMF Records At CICS Start and End  
  There is a good chance that linklist will need to be refreshed after you add this exit into it.

Also the following definitions should be added to the MPF member in order to activate the exit.

DFHSI1517,SUP(NO),USEREXIT(DFHS517X)
DFHTM1703,SUP(NO),USEREXIT(DFHS517X)

These definitions will cause the MPF exit to cut an SMF record when the CICS system is started (Control is being given to CICS) or stopped (CICS is being terminated).

You probably already use things like SMF type 30 records to report CICS start and end times but for more accurate service level times this exit will report the times that a CICS system is actually up. A CICS regions is not truly available to users until the "Control is being given to CICS" message is issued.

In a similar, but often a less obvious way, a CICS system is unusable after the "Termination in Progress" message is issued.

Of course the sample code provided will work for cutting a SMF record for any message you wish to cut an SMF record for.

The exit also shows how to build and issue a Write To Operator (WTO) in a MPF exit.

DFHS517X is available from here.

 

 


 

 
 


If you need any support or assistance with any of the code on this site
or
if you would like to contact us, please click here

follow us on facebook
Follow us on Facebook

 

Number of unique visitors 456

Copyright © Abbydale Systems LLC 2015-2024

Abbydale Systems LLC Lic. 802696149. All rights reserved.

Last modified : Tuesday 3rd of May 2022