If you write your own separator routine, it must conform
to the following requirements:
- The routine must have a unique name and this name must be specified
in the PARM= parameter on the EXEC card for the external writer. If
you do not specify the name of an output separator routine, no separator
records are written.
Note: Do not use CERTIFY as the name of your output separator routine.
Refer
to The EXEC Statement for details on specifying an output separator
routine on the PARM= parameter.
- If you want to replace the standard IBM routine, then name your
routine IEFSD094. This should reside in SYS1.LINKLIB or in a library
concatenated to LINKLIB through a LNKLSTxx member of SYS1.PARMLIB.
- The routine must use standard entry and exit linkages, saving
and restoring its caller's registers, and returning to its caller
through the RETURN macro, with a return code in register 15.
- The routine must use the QSAM PUT macro in locate mode to write
separation records to the output data set.
- The routine must use the GETMAIN and FREEMAIN macros, or the STORAGE
macro, to obtain and release the storage required for work areas.
- The routine must establish its own synchronous error exit routine,
and place the exit address in the DCBSYNAD field of the output DCB.
The error routine will receive control during output writing in case
of an uncorrectable I/O error; it must set a return code of 8 (binary)
in register 15 to indicate an unrecoverable output error.
If the
separator routine completes processing successfully, it must set a
return code of 0 in register 15, before returning to its caller.
Note: The separator routine receives control in problem-program
state, but with a protection key of 0. Therefore, the routine must ensure data
protection during its execution.