The processing section of a rule that responds to a message event executes in the address space from which the message originated. Therefore, any type of logic that could possibly suspend the processing of a MSG rule should be performed by scheduling an OPS/REXX program to a CA OPS/MVS OSF TSO, TSL, or TSP server, as described in the chapter “Code and Debug AOF Rules.”
MSG rules execute on both single line messages (WTOs) and multiple line messages (MLWTOs). Single-line WTOs are processed once, meaning they enter the rule, and then exit. A )MSG rule processes a MLWTO for as many lines that make up the MLWTO. For example if you have MLWTO made up of 3 lines-primary (line 1), data line (line 2), end line (line 3)-then the primary is evaluated first, the data line second, followed by the end line.
Adhere to the following guidelines when attempting to perform automation on true MLWTOs:
Note: The same message ID is associated for all lines of the MLWTO.
Populated with the complete message text of the line that is currently being processed. This means that, as the primary is being processed, MSG.TEXT would be that of the primary, as the second line is being processed, MSG.TEXT would be that of the second line text, and so on.
Contains the contents of the primary line regardless of what line is being processed.
Contains the complete text of secondary lines (data and end lines, NO primary). This means that, because the primary line is processed first, MSG.OTEXT will be null. As the second line (data line) is being processed MSG.OTEXT will contain the text of the second line.
Suppose you have the following VTAM MLWTO message:
IST663I CDINIT REQUEST FROM A55X99 FAILED, SENSE=08570002 IST664I REAL OLU=USILDA02.A13IOML0 REAL DLU=USILDA01 IST314I END
Using this test rule:
)MSG IST663I )PROC say '**TEXT='MSG.TEXT say '**OMAJ='MSG.OMAJORTEXT say '**OTEXT='MSG.OTEXT
Primary line (IST663I CDINIT REQUEST FROM....) is processed, producing:
**TEXT=IST663I CDINIT REQUEST FROM A55X99 FAILED, SENSE=08570002 **OMAJ=IST663I CDINIT REQUEST FROM A55X99 FAILED, SENSE=08570002 **OTEXT=
Secondary line (IST664I REAL OLU=USILDA02....) is processed, producing:
**TEXT=IST664I REAL OLU=USILDA02.A13IOML0 REAL DLU=USILDA01 **OMAJ=IST663I CDINIT REQUEST FROM A55X99 FAILED, SENSE=08570002 **OTEXT=IST664I REAL OLU=USILDA02.A13IOML0 REAL DLU=USILDA01
End line (IST314I END) is processed, producing:
**TEXT=IST314I END **OMAJ=IST663I CDINIT REQUEST FROM A55X99 FAILED, SENSE=08570002 **OTEXT=IST314I END
if MSG.MLWTOMIN = 0 then.... /* 0 = primary 1 = data lines */ if WORD(MSG.TEXT,1) = 'IST314I'. /* this is part of end line */ if BITAND(MSG.FLAGS,'0600'X) = '0600'X /* must be end-line */
|
Copyright © 2011 CA.
All rights reserved.
|
|