IBM SC33-1683-02 Server User Manual


 
Chapter 6. Writing a program error program
Considerations common to all user-replaceable programs
Note that the comments contained in “Chapter 5. General notes about
user-replaceable programs” on page 401 apply to this chapter.
The CICS-supplied default program error program (DFHPEP) contains code to:
v Obtain program addressability
v Access the communication area
v Return control to CICS through an EXEC CICS RETURN command.
The source of DFHPEP is provided in assembler-language and C versions; you can
modify one of these to include your own logic, or you can write your own program
error program in any of the languages supported by CICS. There is a discussion of
the reasons for using your own program error program in the
CICS Recovery and
Restart Guide
. Note, however, that when writing a program error program you are
subject to specific restrictions:
v Your program must be named DFHPEP.
v It must not issue any EXEC CICS commands that make use of MRO or ISC
facilities (such as distributed transaction processing or function shipping).
v It must not issue any commands that access recoverable resources.
v It cannot influence the taking of a transaction dump.
The default DFHPEP module is a dummy module. If you want to customize it, you
have to code the source yourself. To help you, a listing of DFHPEP is provided in
Figure 14 on page 409. When you have written your program error program,
translate and assemble it, and use it to replace the supplied dummy program. For
information about the job control statements necessary to assemble and link-edit
user-replaceable programs, refer to “Assembling and link-editing user-replaceable
programs” on page 402.
Information available to DFHPEP in the communication area includes:
v The current abend code, at PEP_COM_CURRENT_ABEND_CODE.
v The original abend code, at PEP_COM_ORIGINAL_ABEND_CODE. The
“original” and “current” abend codes are different if the transaction has suffered
more than one abend—for example, if the failing program abended while
handling a previous abend. In this case, the “original” abend is the first abend
that the transaction suffered.
v The EIB at the time of the last EXEC CICS command, at
PEP_COM_USERS_EIB.
v The name of the program that suffered the (current) abend, at
PEP_COM_ABPROGRAM. PEP_COM_ABPROGRAM identifies the program as
follows:
If the abend occurred in a distributed program link (DPL) server program
running in a remote system, it identifies the server program.
If the abend is a local ‘ASRA’, ‘ASRB’, or ‘ASRD’, it identifies the program in
which the program check or operating system abend occurred.
In all other cases, it identifies the current PPT entry.
© Copyright IBM Corp. 1977, 1999 407