|
Topics for This Exit Appear as Follows:
IEFACTRT receives control from the system when a job or job step
terminates, either normally or abnormally. A return code from IEFACTRT
(in register 15) indicates whether the job is to continue or terminate.
Another return code (in register 1) indicates whether or not SMF is
to write the termination records to the SMF data set.
The system invokes IEFACTRT only when the installation is collecting
SMF record types 4, 5, 30, 32, 34, or 35. IEFACTRT is invoked for:
- Record types 4, 5, and 30 for background jobs and started tasks.
- Record types 30, 32, 34, and 35 for TSO/E users.
- Record type 30 (subtypes 4 and 5) for work initiated by the IBM-supplied
APPC/MVS transaction scheduler (ASCH).
When the data for an SMF record exceeds 32,756 bytes in length,
the system constructs one or more "continuation" or "additional"
records to ensure that no individual record exceeds that length. The
system invokes IEFACTRT once for the original record and once for
each continuation record.
The system invokes IEFACTRT for these types of records even when
an installation uses the SYS(NOTYPE) parameter in SMFPRMxx to suppress
a particular subtype of these record types. Only when the installation
suppresses an entire record type through SMFPRMxx will the system
not pass the record to IEFACTRT.
The system does not invoke IEFACTRT for any other record types.
You can use IEFACTRT to: - Write selected job or job step records to an installation-defined
data set for further analysis.
- Displacement from PointerInclude additional information in the
SMF job/job step termination records.
- Write messages to a job log to provide additional information
about the job or job step. For example, if the operator has cancelled
a job, you can issue a WTOR to learn why the job was cancelled and
then write the reason as a message to the job log.
- Write an estimated job or job step cost to the job log.
- Update tables that describe the amount of resources certain users
consume. For example, you can keep a total of the processor time
for specific users, then flag their account numbers if they exceed
an allowed time limit.
Defining the Exit in SMFPRMxx In
the SMF parmlib member (SMFPRMxx), specify IEFACTRT on the EXITS option
of the SYS or SUBSYS parameters, depending on the scope of work (system-wide
or subsystem-wide) the exit is to affect.
If you use the SUBSYS
option, the system invokes the IEFACTRT routine only for work running
under the subsystems you specify on SUBSYS. If you use the SYS option,
the system invokes the IEFACTRT routine for work running under any
SMF-defined subsystem, such as JES2, JES3, STC, ASCH, OMVS, or TSO.
For
more information about coding the EXITS option, see the description
of SMFPRMxx in z/OS MVS Initialization and Tuning Reference.
Controlling the Exit Routine Through
the Dynamic Exits Facility IBM® has
defined the IEFACTRT installation exit to the dynamic exits facility.
You can refer to the exit by the name SYS.IEFACTRT or SYSyyy.IEFACTRT.
See the description of the SMFPRMxx parmlib member in z/OS MVS Initialization and Tuning Reference for
an explanation of the naming conventions for SMF exit routines. You
can use the EXIT statement of the PROGxx parmlib member, the SETPROG
EXIT operator command, or the CSVDYNEX macro to control this exit
and its exit routines.
To define IEFACTRT to the dynamic exits
facility, you must specify the exit in both PROGxx and SMFPRMxx.
The system does not call the exit if it is defined in PROGxx only.
If you do not plan to use the dynamic exits facility for IEFACTRT,
you need only define this exit in SMFPRMxx.
If you do not associate
any exit routines with exit IEFACTRT in PROGxx, the system defaults
to using the exit routine name that matches the exit name (IEFACTRT).
If
you associate exit routines with IEFACTRT in PROGxx, the system does
not use the default exit routine. If you need the default exit routine,
you should explicitly add it to PROGxx.
You can use the ADDABENDNUM
and ABENDCONSEC parameters on the CSVDYNEX REQUEST=ADD macro or the
ABENDNUM parameter of the SETPROG EXIT operator command to limit the
number of times the exit routine abnormally ends before it becomes
inactive. An abend is counted when both of the following conditions
exist: - The exit routine does not provide recovery, or the exit routine
does provide recovery but percolates the error
- The system allows a retry; that is, the recovery routine is entered
with bit SDWACLUP off.
By default, the system does not disable the exit routine.
Exit Routine Environment IEFACTRT
receives control in the following environment: - Enabled for interrupts.
- In supervisor state with PSW key 0.
- In AMODE 31.
- In the address space of the task that is currently running.
- With no locks or ENQs held.
Exit Recovery IBM strongly
recommends that you set up an ESTAEX recovery routine to handle errors
that might occur during the execution of IEFACTRT.
An ESTAE-type
recovery routine is set up by the module that calls IEFACTRT; the
recovery routine, if it gets control, will allow the job to continue
processing if the exit routine abnormally ends.
Whether or
not the exit routine continues to be invoked depends on the abend
processing of the dynamic exits facility.
Exit Routine Processing SMF
constructs several types of termination records. An installation can
use the IEFACTRT exit routine to include additional information in
the termination record and to determine whether to write the termination
record to the SMF data set. The specific SMF termination records that
IEFACTRT references are: - Dec (Hex)
- Description
- 4 (X'04')
- The step termination record is constructed and written at the
normal or abnormal termination of a job or job step for a background
job, or when a job step is flushed during or after job initiation.
- 5 (X'05')
- The job termination record is constructed and written at the normal
or abnormal termination of a background job.
- 30 (X'1E')
- The common address space work record is written at the normal
or abnormal termination of a batch job or step, a TSO/E session, a
started task, or work initiated by the IBM-supplied APPC/MVS transaction
scheduler and at the expiration of a specified interval. The type
30 record consolidates data that also is found in record types 4,
5, 20, 34, 35, and 40. Record subtypes are used within the type 30
record to help limit the amount of data stored in SMF data sets.
- 32 (X'20')
- The TSO/E user work accounting record is written when a TSO/E
session terminates (normally or abnormally) and when a TSO/E accounting
interval expires.
- 34 (X'22')
- The TSO-step termination record is constructed and written when
the TSO/E logoff function processes a job step termination.
- 35 (X'23')
- The logoff record is constructed and written when a logoff process
is completed.
At job or job step termination, use the termination
indicators in record types 4, 5 and 30 to determine whether or not
IEFACTRT cancelled the job.
The length of the type 30 record
is variable. If the data exceeds 32,756 bytes, the system constructs
"continuation" (or "additional") type 30 records. Each such record
always contains these three sections: - Header section
- Subsystem section
- Identification section
In addition, each continuation record contains one or
more of the following sections: - Execute channel program (EXCP) section
- Usage section
- Automatic restart management section
- z/OS® UNIX process section
Your exit routine should be aware of these added type
30 continuation records, because they are passed to IEFACTRT. See
the CAUTION bullet in the next topic, "Programming Considerations," if the exit
routine suppresses some of these records. See z/OS MVS System Management Facilities (SMF) for
more information concerning type 30 records.
IEFACTRT is the
only SMF exit routine that can write to a job log, but only by passing
the message to module IEFYS. When IEFYS receives control, register
13 must contain the address of an 18-word save area and register 12
must be used to pass message information. Figure 1 shows the procedure for writing
JOBLOG messages from IEFACTRT. The maximum number of characters that
can appear in a message is 132.
Figure 1. Writing Job Log Messages from IEFACTRT MVC 36(4,12),MSGADDR MOVE MESSAGE ADDRESS AND
MVC 42(2,12),MSGLEN LENGTH TO SYSTEM TABLE
L REG15,VIEFYS BRANCH AND LINK TO MESSAGE
BALR REG14,REG15 ROUTINE
MSGADDR DC A(MSG)
MSG DC C'message text'
MSGLEN DC H'xx' MESSAGE LENGTH
VIEFYS DC V(IEFYS)
To resolve the VCON for
IEFYS correctly, be sure to follow the example in Figure 2 which shows how to make an IEFACTRT
installation exit routine available to the system by link editing
it into a system library.
Figure 2. Example:
make an IEFACTRT installation exit routine available //LKUSRPGM JOB MSGLEVEL=(1,1)
// EXEC PGM=IEWL,PARM='XREF,LET,LIST'
//SYSPRINT DD SYSOUT=A
//SYSUT1 DD UNIT=SYSDA,SPACE=(TRK,10)
//SYSLMOD DD DSNAME=SYS1.LINKLIB,DISP=OLD
//SYSLIB DD DSNAME=SYS1.AOSB3,DISP=SHR
//SYSLIN DD *
object deck
INCLUDE SYSLIB(IEFTB724)
NAME EXITNAME(R)
/*
Programming Considerations SMF
provides a replaceable module for an unused exit. If an installation
includes IEFACTRT, it must follow certain programming standards. - The exit routine must follow standard linkage conventions. For
example, upon exit, register 15 must contain the return code. (But
see the note in the topic "Registers at Exit" later in this topic.)
- Code the exit routine to be reentrant.
- IEFACTRT can perform dynamic allocations and write to installation-defined
data sets. In foreground jobs, data sets are allocated dynamically.
However, for background jobs, you can either allocate data sets dynamically
or you can pre-define (pre-allocate) a data set with a DD statement
in the initiator cataloged procedure.
- IEFACTRT cannot access ISAM data sets.
- Do not use a WTO with a routing code of 11 to send
a message to the JESYSMSG data set for started tasks or TSO users.
- To provide a consistent environment for accessing and allocating
data sets across calls to SMF exits for the duration of a job or task,
IEFACTRT receives control with the initiator's JSCB active.
- When there are multiple data records, the IEFACTRT exit routine
receives control once for each record.
- CAUTION: If the IEFACTRT installation exit elects to suppress
one or more BUT NOT ALL of the SMF type 30 continuation records, then
follow-on batch jobs that process SMF records might encounter unexpected
and invalid conditions, such as:
- "Continuation" type 30 records without the initial type 30 record
- An initial type 30 record indicating that more type 30 records
follow, but some or all of those continuation records are not present.
Macro Instructions and Restrictions: Your IEFACTRT
exit routine can issue MVS™ system macros. Observe the following
restrictions: - Do not code your IEFACTRT exit routine to issue the WAIT macro,
or call a service that issues WAIT. Doing so in IEFACTRT can adversely
affect the system's allocation and unallocation functions.
- Do not use a WTO with a routing code of 11 to send a message to
the JES joblog for started tasks or TSO users.
The following SMF macros are available to SMF installation
exit routines: - IFASMFR — to address SMF record fields
- SMFWTM — to write records to the SMF data set
- SMFEWTM — to write records to the SMF data set
- SMFRTEST — to test record recording
- SMFEXIT — to branch to the SMF exits
- SMFINTVL — to determine interval time
- SMFDETAL — to test detail recording
- SMFSUBP — to determine subsystem parameters
- SMFCHSUB — to change subsystem parameters.
For information on how to use these macros, see z/OS MVS System Management Facilities (SMF).
Entry Specifications SMF passes
to IEFACTRT a code to define the reason for calling the exit routine
and a list of parameter addresses that the routine can use.
Registers
at Entry: The contents of the registers on entry to the exit are
as follows.
- Register
- Contents
- 0
- One of the following hexadecimal codes that indicate why SMF has
invoked the exit:
- Code
- Explanation
- X'0C'
- Indicates job step termination. Word 10 in the parameter list
is the address of the record descriptor word (RDW) for a type 4 or
type 34 record.
- X'10'
- Indicates job termination. Word 10 in the parameter list is the
address of the RDW for a type 5 or type 35 record.
- X'14'
- Indicates job or step termination. Word 10 in the parameter list
is the address of the RDW for a type 30 record. The subtype field
in the type 30 record determines if it is a job or a step termination
record.
- X'18'
- Indicates TSO/E session or accounting interval termination. Word
10 in the parameter list is the address of the RDW for a type 32 record.
- 1
- Address of the parameter list
- 2-11
- Not applicable
- 12
- Address of a message information area, which can be used to interface
to IEFYS.
- 13
- Register save area
- 14
- Return address
- 15
- Entry point address of IEFACTRT
Parameter Descriptions: Register
1 points to the following list of addresses: - Word 1
- Address of the common exit parameter area. For details, see Common Exit Parameter Area.
- Word 2
- Address of an 8-byte area containing the job step name (in EBCDIC).
This area is aligned left and padded with blanks if necessary. At
job termination, the field is zero.
Note: It is possible that some
address spaces will be associated with IEESYSAS. For that case, JMRJOB
will contain IEESYSAS.
- Word 3
- Address of a 20-byte area containing the programmer's name (in
EBCDIC). This area is aligned left and padded with blanks if necessary.
- Word 4
- Address of a 4-byte area. The first 3 bytes contain the job processor
time (which includes time under TCBs, enclave
time, preemptable class SRB time, and client SRB time), in hundredths
of a second (in binary). The last byte contains the number of accounting
fields in the JOB statement. At job termination,
the field is zero.
Note: Since this job processor time is only
3 bytes it is limited to 46 hours. If the job accumulates more than
this amount of processor time, this field will become invalid. You
can avoid this situation by having your exit get the processor time
from the parameter at word 11.
- Word 5
- Address of a variable length area that contains accounting fields
from the JOB statement. For details, see Table 2.
- Word 6
- Address of a 4-byte area. The first 3 bytes contain the step
processor time (which includes time under TCBs, enclave
time, preemptable class SRB time, and client SRB time), in hundredths
of a second (in binary). The last byte contains the number of accounting
fields in the EXEC statement (in binary). At job termination, the
field is zero.
Note: Since this step processor time is only 3 bytes
it is limited to 46 hours. If the step accumulates more than this
amount of processor time, this field will become invalid. You can
avoid this situation by having your exit get the processor time from
the parameter at word 12.
- Word 7
- Address of a variable length area that contains accounting fields
from the EXEC statement. For details, see Table 2.
- Word 8
- Address of a 2-byte area. The first byte is a binary indicator;
if bit 7 (low-order bit) is set to 1 when the exit routine is entered,
the job has been cancelled. If the exit routine sets bit 7 to 1,
the job will be cancelled. The second byte contains the number of
the job step currently being processed. At job termination, the second
byte contains the number of steps in the job.
- Word 9
- Address of a 2-byte area containing the termination status (condition
or completion code) for the job or job step. For information on the
job or job step termination status, see the description of the following
fields in z/OS MVS System Management Facilities (SMF):
- Record Type 4 — field SMF4SCC
- Record Type 5 — field SMF5JCC
- Record Type 30 — field SMF30SCC
- Record Type 34 — field TIVSTAT
- Word 10
- Address of an area containing a 4-byte record descriptor word
(RDW). One of the following records immediately follows the RDW:
- The job step termination record (type 4 or type 34)
- The job termination record (type 5 or type 35)
- The common address space work record (type 30)
- The TSO/E command accounting record (type 32)
- Word 11
- Address of a 4-byte area containing the job processor time, which
includes time under TCBs, enclave time, preemptable
class SRB time, and client SRB time, in hundredths of a secondary
(in binary).
- Word 12
- Address of a 4-byte area containing the step processor time, which
includes time under TCBs, enclave time, preemptable
class SRB time, and client SRB time, in hundredths of a second (in
binary). At job termination, the field is zero.
- Word 13
- Address of a 4-character area that contains the name of the subsystem
for the job being processed. Examples:
- ASCH, JES2, or JES3 - indicates the name of the subsystem that
selected the job
- OMVS - indicates a forked or spawned address space
- STC - indicates a started task
- TSO - indicates a time sharing option task
- The jobname - used if it is four or fewer characters and none
of the others apply
Note: The high-order bit is set in the address
of the last parameter to indicate the end of the parameter list.
Figure 3. IEFACTRT
Input Parameter Structure
Common Exit Parameter AreaThe common exit parameter area is a 56-byte area that
contains information an SMF installation exit routine might need.
It is a copy of the first 56 bytes of the job management record (JMR),
of which the first 36 bytes are usable by the exit. In addition, byte
56 is a version indicator, which indicates whether additional information
is available. When byte 56 is '01'x, an additional area is provided
at offset 76, mapped by the JMRE DSECT within the JMR and contains
an 8 character jobclass and a 64-byte job correlator, if provided
by the primary JES subsystem.
The address of the common exit
parameter area is passed to all SMF installation exits except IEFU29,
IEFU83, IEFU84, and IEFU85. The common exit parameter area is mapped
by macro IEFJMR, as part of the JMR, except for the indicator of the
SMF option selected by the user field. This field is mapped by the
SMCAOPT field in the SMCA data area. See Table 1 for a description of the area,
and Accounting Information for a description of
the accounting information. See z/OS MVS Data Areas in
z/OS Internet Library at http://www.ibm.com/systems/z/os/zos/bkserv/ for
the complete mapping of the JMR and the complete mapping of the SMCA.
Table 1. Common Exit Parameter
AreaDisplacement from Pointer |
Field Size |
Data Format |
Description |
---|
0 |
8 |
EBCDIC |
Job name |
8 |
4 |
binary |
Time, in hundredths of a second, when the reader
recognized the JOB statement for this job |
12 |
4 |
packed |
Date when the reader recognized the JOB statement
for the job, in the form 0CYYDDDF where F is the sign and C is X '1'
if the year is greater than 1999 |
16 |
4 |
EBCDIC |
System identification (taken from SID parameter) |
20 |
8 |
EBCDIC |
User identification. SMF places this data in
all subsequent records for this job. This field is initialized to
EBCDIC blanks when each job is read. Note: This field is
not related to the USER parameter on the JOB statement.
|
28 |
1 |
binary |
Number of the step being processed |
29 |
1 |
binary |
Indicator of the SMF options selected by the user.
(The following bit settings are mapped by the SMCAOPT field in the
SMCA data area. See z/OS MVS Data Areas in z/OS Internet
Library at http://www.ibm.com/systems/z/os/zos/bkserv/ for
a mapping of the SMCA data area.) - Bit
- Meaning When Set
- 0
- Reserved
- 1
- Reserved
- 2
- Reserved
- 3
- Data set accounting.1
- 4
- Volume accounting. Record type 19 selected
- 5
- Usage data collection services
- 6
- Type 17 records will be written for temporary data sets (REC(ALL))
- 7
- If 0, background job. If 1, foreground job.
Note: TSO
sessions, APPC/MVS transactions, and OMVS (z/OS UNIX System Services)
forked and spawned jobs are indicated as foreground jobs.
|
30 |
1 |
binary |
Restart indicator - Bit
- Meaning When Set
- 0
- Automatic step restart
- 1
- Automatic checkpoint/restart
- 2
- Continue restart
- 3
- Reserved
- 4
- Warm start
- 5-7
- Reserved
|
31 |
1 |
EBCDIC |
Job class |
32 |
4 |
binary |
The user-communication field. This field is intended
for communication among user-written exit routines within a unique
job. The field is initialized to zeroes when a job begins execution.
For APPC/MVS transactions, this field remains zeros. |
36 |
19 |
binary |
Information not usable to the exit |
55 |
1 |
binary |
Version of JMR |
56 |
20 |
binary |
Information not usable to the exit |
76 |
8 |
EBCDIC |
Job class |
84 |
64 |
EBCDIC |
Job correlator, if provided by
primary Job subsystem |
Note: 1 This
bit is set on when any of the following record types is selected:
14, 15, 17, 18, 62, 63, 64, 67, or 68.
|
Accounting InformationAccounting
Information: These SMF installation exits receive accounting information
for the job or job step: - IEFACTRT
- IEFUAV
- IEFUJI
- IEFUSI
The accounting information is presented to IEFACTRT differently
than to IEFUAV, IEFUJI, and IEFUSI. IEFACTRT receives both the number
of accounting fields and a pointer to the accounting fields in the
input parameter list. See the parameter descriptions in Entry Specifications for more details. For the other
exits, the input parameter list contains a pointer to all the accounting
information as described in Table 2.
Table 2. Format of Accounting
InformationOffset |
Length |
Format |
Description |
---|
0 |
1-Byte |
Binary |
Number of accounting fields. |
1 |
Variable |
EBCDIC |
Accounting fields. Each accounting field contains
the length of the field (one byte, binary) followed by accounting
information (variable length, EBCDIC). A zero in the length field
indicates an omitted field. |
Figure 4 provides examples
of accounting information. Note that these fields are contiguous and
are only spaced in Figure 4 for
clarity. These examples show different forms of accounting information
you can specify in JCL, and the resulting representation (hexadecimal)
that will be passed to the SMF exits list.
In the examples
in Figure 4: - 'MYJOB' represents the job name.
- 'PROGNAM' represents the programmer name.
- '#FIELDS' represents the number of accounting fields.
- 'LEN1', 'LEN2', and 'LEN3' represent the length of the respective
accounting field.
- 'DATA1', 'DATA2', and 'DATA3' represent data in the respective
accounting field.
Figure 4. Examples of Accounting Information .........Accounting Information.........
JCL .......Accounting Fields........
#FIELDS LEN1 DATA1 LEN2 DATA2 LEN3 DATA3
-------------------------------------------------------------------------
//MYJOB JOB ,PROGNAM -> 01 00
//MYJOB JOB 9,PROGNAM -> 01 01 F9
//MYJOB JOB (9,8),PROGNAM -> 02 01 F9 01 F8
//MYJOB JOB (9,8,77),PROGNAM -> 03 01 F9 01 F8 02 F7F7
//MYJOB JOB '9',PROGNAM -> 01 01 F9
//MYJOB JOB '9,8',PROGNAM -> 01 03 F96BE8
//MYJOB JOB ('9','8'),PROGNAM -> 02 01 F9 01 F8
//MYJOB JOB ('9,8'),PROGNAM -> 01 03 F96BF8
//MYJOB JOB (9,,8),PROGNAM -> 03 01 F9 00 01 F8
//MYJOB JOB (9,',8),PROGNAM -> 03 01 F9 00 01 F8
//MYJOB JOB ((9)),PROGNAM -> 01 01 F9
Return Specifications A return
code from IEFACTRT (in register 15) indicates whether the job is to
continue or terminate. Another return code (in register 1) indicates
whether or not SMF is to write the termination records to the SMF
data set.
If you associate multiple exit routines with IEFACTRT,
you can use any of these criteria methods to specify how the system
is to handle the return information: - The ATTRIB KEEPRC function of the SETPROG EXIT command,
- The ATTRIB KEEPRC parameter of the EXIT statement of PROGxx, or
- The RCFROM/RCCOMPARE parameters of the CSVDYNEX services.
The criterion is based on the contents of register 15.
If multiple exit routines match the defined criterion, the system
returns information from the exit routine called first.
Figure 5. ExampleThe defined criterion is EXIT ATTRIB KEEPRC(GE,4).
If Exit A returns with R1 = 4 and R15 = 0,
and Exit B returns with R1 = 0 and R15 = 8,
and Exit C returns with R1 = 0 and R15 = 4,
and Exit D returns with R1 = 4 and R15 = 4,
the final results are R1 = 0 and R15 = 8.
The system derives the return information from the first exit called that
matches the defined criteria. Here, R15 is greater or equal to 4, which
is Exit B.
The job continues (because R15 is not 4) and the system writes the
termination records to the SMF data set (because R1 for Exit B is not 4).
If you do not specify a criteria method, the system returns
the information from the first exit routine that returns a value of
four in register 15, and cancels the remaining job steps. If that
exit routine also returns a value of four in register 1, the system
does not write the termination records to the SMF data set. For any
other value in register 1 the system does write the termination records.
Figure 6. ExampleThere are no defined criteria.
If Exit A returns with R1 = 4 and R15 = 0,
and Exit B returns with R1 = 0 and R15 = 8,
and Exit C returns with R1 = 0 and R15 = 4,
and Exit D returns with R1 = 4 and R15 = 4,
the final results are R1 = 0 and R15 = 4.
The system derives the return information from the first exit called that
returns a value of 4 in R15, which is Exit C.
The job terminates (because R15 is 4) and the system writes the
termination records to the SMF data set (because R1 for Exit C is not 4).
If no exit routine returns a value of four in register 15,
the system returns the information from the exit routine that is called
first, and the job continues. Again, if that exit routine returns
a value of four in register 1, the system does not write the termination
records to the SMF data set, while for any other value in register
1 from that exit routine, the system does write the termination records
to the SMF data set.
Figure 7. ExampleThere are no defined criteria.
If Exit A returns with R1 = 4 and R15 = 0,
and Exit B returns with R1 = 0 and R15 = 8,
and Exit C returns with R1 = 0 and R15 = 0,
the final results are R1 = 4 and R15 = 0.
Because no exit set R15 to 4, the system derives the return information
from the first exit called, which is Exit A.
The job continues (because R15 is not 4) and the system does not write
the termination records to the SMF data set (because R1 for Exit A is 4).
Registers at Exit: Upon return from the exit processing,
the register contents must be as follows.
- Register
- Contents
- 0
- Restored to contents at entry
- 1
- One of the following return codes:
- Return Code
- Explanation
- Value of 4
- SMF is not to write the termination record to the SMF data set.
- Other than 4
- SMF is to write the termination record to the SMF data set.
- 2-14
- Restored to contents at entry
- 15
- One of the following return codes:
- Return Code
- Explanation
- Value of 4
- The remaining job steps are to be cancelled.
- Other than 4
- Job processing is to continue.
Note: The system may fail a step or job even if the
return code is zero. This could happen, for example, as a result of
specifying CATLG_ERR FAILJOB(YES) and incurring that type of post
execution error. (A return code is generated by the application program
and is never changed by the operating system.) A user can deduce that
a step failed due to a "post execution error" if bit SMF30SYE in the
two-byte SMF30STI field in the SMF30 subtype 4 record is on.
Coded Example of the Exit Routine Sample
IEFACTRT exit routines are provided in SYS1.SAMPLIB in members SMFEXITS
and IEEACTRT. The sample in SMFEXITS changes the SMF job termination
(types 5 and 35) and job step termination (types 4 and 34) records
to user records, and attempts to write them to an SMF data set. If
the data set is full, the routine writes a message to the console
indicating that SMF records are being lost. At job termination, the
routine writes a record containing the job name, programmer's name,
and account number to the JOBLOG data set.
The IEEACTRT exit
routine puts a summary of the step on each JES2 job log using WTO
with ROUTCODE=14. The summary includes both step and job information.
|