z/OS MVS Installation Exits
Previous topic | Next topic | Contents | Contact z/OS | Library | PDF


IEAVMXIT — Installation-Specified MPF Exits

z/OS MVS Installation Exits
SA23-1381-00

Topics for This Exit Appear as Follows:

The IEAVMXIT installation exit or an MPF installation exit (one that you specify on the USEREXIT parameter in an MPFLSTxx member of SYS1.PARMLIB) allows you to modify message processing in a system or sysplex. IEAVMXIT is the general-purpose exit routine that does processing that is common to many messages (WTOs). An MPF exit routine does processing that is specific to a certain type of message or a particular message ID.

For information on the MPFLSTxx member of SYS1.PARMLIB, see z/OS MVS Initialization and Tuning Reference.

You can use IEAVMXIT or an MPF exit routine to:
  • Modify the presentation of messages by:
    • Changing the text and descriptor codes of selected messages.

      Changing the descriptor code can alter the retention of the message on a console screen and in the Action Message Retention Facility (AMRF). It can also affect the color of a message when it is displayed on a console with color capabilities.

    • Changing the color, intensity, and highlighting of messages.
  • Modify the routing of messages by:
    • Changing the routing codes of selected messages.
    • Changing either the console name or the console ID to which the message is queued.
    • Selectively routing messages to a specific console.
    • Queuing messages to a particular active console.
    • Queuing messages by routing codes.
    • Directing messages to hardcopy only.
    • Indicating whether or not to broadcast a message to active consoles.
    • Reducing message traffic at specific consoles by redirecting some traffic.
    • Indicating whether or not the message should be routed to the consoles that requested to see the message as the result of a MONITOR command.
  • Reduce operator workload through message suppression or automation by:
    • Selectively suppressing (filtering) occurrences of messages. (MPF suppresses all occurrences of a particular message.)
    • Performing error thresholding.
    • Indicating whether or not the action message retention facility (AMRF) is to retain an action message.
    • Overriding message processing facility (MPF) suppression.
    • Handling the common requests (WTORs) from the system.
    • Altering the automation token specified in the MFPLSTxx member of SYS1.PARMLIB.
    • Indicating whether to consider a message for automation.
    • Deleting a message

If an IEAVMXIT message exit already exists in the installation and you require that the installation uses message flood automation, you can either integrate the existing IEAVMXIT with message flood automation, or call message flood automation from IEAVMXIT. For more details about customizing the IEAVMXIT, see z/OS MVS Planning: Operations.

Installing the Exit Routine

IEAVMXIT: The IEAVMXIT exit routine is an installation-coded module. When you install this exit routine you must name it IEAVMXIT.

Specify whether you want to have IEAVMXIT active or not active at IPL by specifying either (Y) or (N) on the UEXIT keyword on the INIT statement of the CONSOLxx parmlib member. If you do not specify the UEXIT keyword, the system assumes the default, which is UEXIT(Y), and activates IEAVMXIT if it is installed.

You must provide your own IEAVMXIT routine if you specify UEXIT with the (Y) option or expect the system to default to (Y).

If your IEAVMXIT routine is active at IPL, it will be invoked for all of the messages that were issued during IPL and NIP. This invocation is done after NIP is over, when the messages are re-issued to be recorded in the hardcopy log.

Operators can use the CONTROL M command to change the online status of IEAVMXIT.

You can insert your IEAVMXIT exit routine into the control program by:
  • Linkediting it into the LNKLST. Use 31-bit addresses in the routine and assemble it with AMODE 31 and RMODE ANY.
  • Activating it with the CONTROL M, UEXIT=Y command.

MPF Exit Routine: When an MPF exit routine is installed, its address is located during the processing of the SET MPF command (and the associated processing of the specified MPFLSTxx member of SYS1.PARMLIB). When the MPF exit routine is to be invoked, its address is passed to the installation exit interface, and the exit routine is invoked via standard linkage.

Do not use the name IEAVMXIT as the name of an MPF exit that you specify in the MPFLSTxx parmlib member.

Operators can use the SET MPF command to change the online status of MPF exit routines.

You can insert MPF exit routines into the control program by following these steps:

  1. Link-edit them into Start of change an APF-authorized library that is part of the LNKLST concatenation End of change. Use 31-bit addresses in the routines and assemble them with AMODE 31 and RMODE ANY.
  2. Put the name of each MPF exit routine you write into the MPFLSTxx parmlib member. Specify the name of the exit routine on the USEREXIT parameter of the message ID entry for each message the exit routine is to process.
  3. Activate the MPFLSTxx member with a SET MPF=xx command.

Replacing the Exit Routine Without a Re-IPL:

There may be times when you need to replace IEAVMXIT or an MPF exit routine, either because you want to add functions to the routine or because the routine abended when it was processing a particular message. Depending on whether the routine is IEAVMXIT or an installation-specified MPF exit routine, the procedures are as follows:

IEAVMXIT: To replace your IEAVMXIT exit routine with a fresh copy, take the following steps:
  • Linkedit the new copy of IEAVMXIT into the LNKLST.
  • Refresh LLA with the MODIFY LLA,REFRESH command.
    If you make the message exit available by changing the libraries referred to in the LINKLIST concatenation, you must issue the
    SETPROG LNKLST, UPDATE, JOB=CONSOLE
    command to cause the Console address space to use the new LINKLIST concatenation. The K M command runs in the Console address space.
  • Reload and reactivate the exit routine using the K M, UEXIT=Y command.
MPF Exit Routine: To replace an MPF exit routine with a fresh copy, take the following steps:
  • Link-edit the new copy of the exit routine into Start of change an APF-authorized library that is part of the LNKLST concatenation End of change.
  • Refresh LLA with the MODIFY LLA,REFRESH command.
    If you make the message exit available by changing the libraries referred to in the LINKLIST concatenation, you must issue the
    SETPROG LNKLST, UPDATE, JOB=*MASTER*
    command to cause the Master Schedule address space to use the new LINKLIST concatenation. The SET MPF command runs in the Master Schedule address space.
  • Reload and reactivate the exit routine using the SET MPF=xx command.

Exit Routine Environment

The IEAVMXIT and MPF exit routines receive control in the following environment:
  • Enabled for interrupts.
  • In supervisor state with PSW key 0.
  • In AMODE 31 and RMODE ANY.
  • With no locks held; they MUST return control with no locks held.
  • Address space of the WTO issuer.

Exit Recovery: The IEAVMXIT and MPF exit routines must provide their own level of recovery because, with one exception, the system does not continue to pass control to an exit routine after it abnormally terminates.

The exception is when an exit routine is to be deactivated (via the CONTROL M command for IEAVMXIT, and the SET MPF command for MPF exit routines) and the contents of the exit routine's individual data area are nonzero. In this case, the routine is given control before it is deactivated, so that it can clean up any work areas it may have created.

For information on how to reactivate the exit routine if it abnormally terminates, see Replacing the Exit Routine Without a Re-IPL:.

For information on the individual data area, see Programming Considerations.

Exit Routine Processing

The IEAVMXIT and MPF exit routines get control during MPF processing. The IEAVMXIT and MPF exit routines are mutually exclusive. For a particular message ID, if you have not named an MPF exit routine to do specific processing, IEAVMXIT, the general-purpose exit routine, receives control.

The control program calls IEAVMXIT or an MPF exit routine for all single-line messages. For a multiple-line message, the program calls the exit routine only for the first line of the message, unless the routine requests minor-line processing. When the exit routine requests minor-line processing, all minor lines will be processed. The default is to bypass minor-line processing.

Message Processing Considerations: Your exit will receive all of the parameters of the message in a parameter list that is known as the CTXT. The CTXT is mapped by macro IEZVX100 that is found in the SYS1.MODGEN system library. When planning to write the IEAVMXIT or an MPF exit routine, you should consider carefully the steps that are necessary to process the message. One step might be sufficient to obtain your desired result; other cases might require several steps.

Request Processing: Your exit can examine all of the attributes of a message and can alter almost all of them. To alter an attribute of a message, you must alter the attribute in the CTXT parameter list and indicate through a "request flag" that the alteration is to be made in the actual message. You can only alter fields that have request flags associated with them. Alterations to fields that do not have request flags associated with them will be ignored.

Although you can alter many of the attributes of a message, you cannot convert a single-line message into a multi-line message or a multi-line message into a single-line message. You cannot convert a single-line message into a Write To Operator with Reply (WTOR) message or a WTOR message into a single-line message.

The following are two examples of the planning that is necessary before you code your exit routine to process a message:

  • To request queuing of a message to a particular console and to eliminate queuing by routing codes, the steps are:
    1. Request queuing to a particular console
    2. Request a change to the console ID or console name
    3. Specify the desired console ID or console name
    4. Request a change to the routing codes
    5. Change the routing codes to all zeroes
  • To request queuing a message by routing codes only and also change the text of the message, the steps are:
    1. Request queuing by routing codes only
    2. Change the routing code to whatever is desired
    3. Request a change in the message text
    4. Specify the new length of the text
    5. Supply the new text

Incompatible Requests: The system handles incompatible requests in one of two ways. If IEAVMXIT or an MPF exit makes conflicting requests, the message is either (1) processed in its original state or (2) processed according to the request that is least detrimental to the message.

Incompatible request errors are signaled in the "MPF request flag" field in the SYSLOG.

The following incompatible requests cause the message to be processed in its original state:
  • A request to delete a message (CTXTRDTM) and a request in the request flags in CTXTRFLG that specifies processing other than a request to affect the automation (CTXTRAYS or CTXTRANO) of the message. Any requests in the extended request flags (CTXTERFS) may be specified with the request to delete a message, including the request to suppress the message from JOBLOG (CTXTESJL)
  • A request to queue via routing codes only (CTXTRQRC) and a request to:
    • Queue to a particular active console (CTXTRQPC)
    • Queue to hardcopy only (CTXTRHCO)
    • Change the message type (CTXTRCMF)
  • A request to queue a message to hardcopy only (CTXTRHCO) and a request to broadcast the message to active consoles (CTXTRBCA)
  • A request to retain a message (CTXTRRET) and a request not to retain a message (CTXTRNRT)
  • A request to automate a message (CTXTRAYS) and a request not to automate a message (CTXTRANO)
  • A request to allow the primary subsystem to alter message routing (CTXTEMRY) and a request not to allow the primary subsystem to alter message routing (CTXTEMRN)
The following incompatible requests cause the message to be processed according to the request that is least detrimental to the message:
  • A request to change both the name (CTXTRCNM) and the ID of the console (CTXTRCFC) to which a message is queued causes only the console name to change. If the specified console name is not valid, no change occurs, regardless of whether the specified console ID is valid.
  • A request to send a message to hardcopy (CTXTRFHC) and a request to not send a message to hardcopy (CTXTRNHC) results in a hardcopy of the message.
  • A request to send a message to hardcopy while allowing display at a console (CTXTRFHC) and a request to send a message only to hardcopy (CTXTRHCO) causes the message to be sent to hardcopy as well as displayed at any console to which it might be queued.
  • A request to send a message to only hardcopy (CTXTRHCO) and a request not to send a message to hardcopy (CTXTRNHC) results in only sending a message to hardcopy.
  • A request to broadcast a message (CTXTRBCA) and a request to not broadcast a message (CTXTRBCN) results in not broadcasting the message.

Previous Requests: In a JES3 complex, messages pass through MPF twice - once on the LOCAL processor, and once on the GLOBAL processor. If your exit is running on the GLOBAL processor, you can determine what was altered by an MPF exit on the LOCAL processor by looking at the previous request flags pointed to by CTXTPREQ.

You can observe the alterations that your exit has made to a message by examining the message in the SYSLOG. Each record in the SYSLOG is mapped by macro IHAHCLOG which is found in the SYS1.MODGEN system library. The HCLREQFL User Exit/MPF Request Flags field in each SYSLOG record indicates the actions taken against the message by MPF, an MPF exit, or by a subsystem on the Subsystem Interface (SSI). If you requested that a message be deleted, it will not be present in the SYSLOG.

If your exit made an incompatible request, this is also indicated in the HCLREQFL field.

Programming Considerations

When you code an IEAVMXIT routine or an MPF exit routine, observe the following conventions:
  • Code the routine to be reentrant and serially reusable.
  • Code the routine to use 31-bit addresses with AMODE 31 and allow residency above the 16 MB line with RMODE ANY.
  • Do not code an installation exit that receives control for a message that the exit issues; this causes an endless loop. The exit must be coded so that when it receives control for that message, it does not issue the message again.
  • Do not use services (ENQ) or perform actions (I/O) that can result in a WAIT since this might delay or even hang the message issuer and z/OS® console support.
  • Do not use message intensity fields when coding an MPF exit and using a multicolor screen. Message highlighting is best achieved by requesting a color change for specified message.
  • If you specify message text or a message text length value that exceeds the maximum length allowed for that type of message, the system truncates the message.
  • When suppressing write-to-programmer (WTP) messages, either change the routing code so that routing code 11 is not specified (CTXTRCRC is ON and CTXTR11 is OFF), or set bit CTXTNWTP ("do not do WTP processing") ON.
  • Some messages are issued using the MSGTYP parameter on the WTO macro, causing the message to be routed to the consoles that requested to see the message as the result of a MONITOR command. To queue these messages by any other queueing attribute (for example, by console ID or route codes), it is necessary to zero the message type bytes. To determine if an IBM® message is routed to consoles as a result of the MONITOR command, please refer to the CTXTMTYP field.
  • To prevent almost all further processing of a message, set these bits ON:
    Bit
    Description
    CTXTRDTM
    “Delete the message.” The message will not be displayed on consoles or logged in hardcopy.
    CTXTRANO
    “Automation is not required for this message.” The message will not be sent to EMCS consoles receiving automation messages.
    CTXTESJL
    “Suppress from joblog.” The message will not go into the JES job log.
    CTXTNWTP
    “Do not do WTP processing.” The message will not be sent to a TSO user's terminal or to the system message data set of a batch job.
    Setting those four bits ON will prevent almost all of the usual message processing. However, the message is still shown on the message SSI. Use extreme caution when doing this to a message because there will be no record of it in the system.
  • Messages can be queued exclusively to EMCS consoles that are receiving automation messages.To do this, use the CTXTRDTM, CTXTESJL, and CTXTNWTP bits. Then either use CTXTRAYS or specify AUTO(YES) in the MPFLSTxx member for a particular message.
  • Do not add routing code 11 to message IEF170I, as this causes an endless loop.
  • You must explicitly request processing for subsequent lines of a multiple-line WTO, by setting the CTXTRPML bit in the CTXT to 1.
  • When processing minor lines of a multiple-line WTO, the installation exit can change only the message text of the current minor line.
  • On entry, the CTXT indicates (in the CTXTSYSN field) which system sent the message.
  • If the WTO/R is a branch-entry WTO/R, the CTXTNBEW bit is set to 1. This is for informational purposes only.
  • IEAVMXIT and MPF exit routines will not be invoked during the initial processing of synchronous WTOs or WTORs. The exit routine will be invoked when the message is later issued (via SVC) to the hardcopy log.
  • Some messages (such as $HASP373) have their text completed when WTO calls the subsystem interface. This call occurs after the exit routine completes its processing.
  • When replying to a WTOR, you should note the following restrictions:
    • An exit routine should reply to a suppressed WTOR (using the MGCRE macro); otherwise, the WTOR remains outstanding but will not be displayed unless the operator issues a DISPLAY R command.
    • An installation exit should not request deletion of a WTOR; a request for deletion results in suppression of the WTOR. The operator will not be aware of the WTOR unless the operator issues the DISPLAY R command.
    • A WTOR may not be displayed on an MCS console when the reply is processed before the message can be displayed. A WTOR that is replied to with an exit routine can be seen in the hard-copy log.
    • IEAVMXIT or the MPF exit routine uses the following fields in the CTXT to determine the WTOR message for which it has been invoked:
      Field
      Description
      CTXTRPYB
      Binary representation of the message reply ID
      CTXTRPYL
      Length of the reply ID (halfword)
      CTXTRPYI
      The reply id, in EBCDIC (8 bytes, left-justified, and padded with blanks)
    • A reply issued by an MPF exit to a WTOR will appear twice on the JES job log of the job that issued the WTOR. This is because the system displays the reply once on the job log of the job that issued the WTOR and once on the job log of the job that issued the reply to that WTOR. An MPF exit replying to a WTOR runs in the address space of the job that issued the WTOR, so in this case the two jobs are the same.

Common Data Area: IEAVMXIT and all MPF exit routines receive the address of a 12-byte common data area (pointed to by CTXTCWKP in the CTXT). The common data area allows the exit routines to share data (in common work areas) across invocations.

Sharing Data With Other Exit Routines: You can code IEAVMXIT or an MPF exit routine to create work areas in the extended common storage area (ECSA), by issuing a GETMAIN or STORAGE macro, and then placing the address of these work areas in the common data area. Whenever IEAVMXIT or the MPF exit routines are invoked, the exit routines can access the common data area to obtain the work area addresses. If the exits require 12 bytes or less of data, you can place the data itself in the common data area instead of creating work areas.

The system initializes the common data area to zero; thereafter, the common data area contains whatever values the exit routines place in it.

IEAVMXIT and the MPF exit routines must manage serialization of the common data area.

Individual Data Area: In addition to the common data area, IEAVMXIT and all MPF exit routines receive the address of an 8-byte individual data area (pointed to by CTXTIWKP in the CTXT) whenever they are invoked. Each exit routine can use its individual data area to pass data (or the address of a work area) to itself across invocations.

Passing data to itself: To enable an exit routine to pass data to itself across invocations, code the routine to:

  1. Create a work area in the ECSA by issuing a GETMAIN or STORAGE macro
  2. Place the address of the work area in the individual data area.

During subsequent invocations, the exit routine can obtain the address of the work area by accessing its individual data area. As with the common data area, the system initializes each individual data area to zero; thereafter, the individual data area contains whatever values the exit routine places in it.

If the data required by the exit is 8 bytes or less, you can place the data itself within the individual data area instead of using a work area.

IEAVMXIT and the MPF exit routines must manage serialization of the individual data area.

Cleaning Up Work Areas: When IEAVMXIT or an MPF exit routine is to be deactivated (via CONTROL M or SET MPF), and the contents of its individual data area are nonzero, the exit routine is invoked before it is deactivated, so that it can clean up any work areas it may have created.

Individual work area should be cleaned up when the exit that owns them terminates. Common work areas should be cleaned up when the last exit using them terminates.

The exit routine determines whether it has been called for deactivation by checking the CTXTCIDA bit in the CTXT. The CTXTCIDA bit is set to 1 to indicate deactivation.

When the exit routine is reactivated, its individual data area is reset to zero by the system.

Macro Instructions and Restrictions: IEAVMXIT and MPF exit routines can issue system macros, but you should be aware of the following restrictions:
  • Do not install an exit routine that issues the WAIT macro or calls a service that issues a WAIT. WAITs and implied WAITs can terminate console communications.
  • Do not use macros with expansions that store information into an inline parameter list.
  • Do not issue a GETMAIN or STORAGE macro for subpools that represent space within a region (0 — 127, 240, or 250 — 252). Because the exit routine executes as a part of the control program, it can use subpools such as 229, 230, and 249.

Security Consideration: It is the responsibility of your installation to provide any required security for an exit routine that issues the MGCRE macro. For example, the routine can issue the RACROUTE REQUEST=TOKENBLD macro to obtain the user token for a user ID that is authorized to the command and then append the security token to the MGCRE parameter list.

Entry Specifications

On entry, register 1 points to the address of the exit parameter list, the CTXT.

Registers at Entry: The contents of the registers on entry to the exit are as follows.

Register
Contents
0
Not applicable
1
Address of the pointer to the CTXT
2-12
Not applicable
13
Register save area
14
Return address
15
Entry point address of the exit routine

Parameter List Contents: Register 1 contains the address of a pointer to the exit parameter list (the CTXT), which is mapped by macro IEZVX100 (data area CTXT). The IEZVX100 mapping is described in z/OS MVS Data Areas in z/OS Internet Library at http://www.ibm.com/systems/z/os/zos/bkserv/.

Return Specifications

IEAVMXIT or an MPF exit routine returns to the calling module by using a branch and return via register 14.

Registers at Exit: Upon return from the exit processing, the register contents must be as follows.

Register
Contents
0-15
Restored to contents at entry

Coded Examples of MPF Exit Routines

IBM provides the following examples of MPF exit routines in SYS1.SAMPLIB, which can be used to modify message processing:
  • IEACWAIT — used to cancel jobs that are waiting for volumes
  • IEAOCANC — used to cancel jobs that are waiting for data sets
  • IEAKTRCK — used to route status messages, for critical jobs, to a particular console
  • IEAJTRCK — used to track JES2 jobs that are started during a given period.

Go to the previous page Go to the next page




Copyright IBM Corporation 1990, 2014