Language Environment provides
the following CWI service to a debugging tool, such as Debug Tool, to
register a pattern match routine to enable deferred debugging.
Syntax
CEEKRGPM (
pm_addr,
reserved,
pm_user,
[
fc])
POINTER *pm_addr;
INT4 *reserved;
POINTER *pm_user;
FEED_BACK *fc;
- CEEKRGPM
- Call this CWI interface as follows:
L R15,CEECAACELV-CEECAA(,R12)
L R15,68(,R15)
BALR R14,R15
- pm_addr (input)
- The address of a pattern match routine that is to be registered
or, zero, when no pattern match routine should be registered (de-registration).
Registering a pattern match routine indicates that deferred debugging
is requested.
When deferred debugging has been requested, the
pattern match routine is used to compare the name of the routine that
is about to be entered to the name of the routine that the user requested
to be debugged. If the pattern match routine determines the routine
that is about to be entered should be debugged, the pattern match
routine can activate the debugger.
The pattern match routine
must be a non-XPLink, AMODE 31 routine, with no writable static. The
pattern match routine linkage is MVS-style (R1 is a pointer to pointers
to the arguments).
The parameters to the pattern match routine
are:
- Parameter 1
- Fullword function code; this value should be 177.
- Parameter 2
- Pointer to the program name.
- Parameter 3
- Fullword containing the length of program name field.
- Parameter 4
- Entry point address of the program that is about to be entered.
- Parameter 5
- Pointer to the work area provided when the pattern match routine
was registered.
- reserved (input)
- A fullword reserved for future use; this must be set to zero.
- pm_user (input)
- The address of a work area that is to be passed to the pattern
match routine each time it is called
- fc (output/optional)
- A feedback code that indicates the result of this call; possible
values are:
Condition |
|
CEE000 |
Severity |
0 |
Msg_No |
N/A |
Message |
The service completed successfully. |
CEE377 |
Severity |
2 |
Msg_No |
3303 |
Message |
The callable service was passed reserved arguments
that were not set to zero. |
Note: Language Environment supports
registration of a pattern match routine in CEEPIPI subroutine environments,
with the following considerations:
- Language Environment will
drive the pattern match routine during the CEEPIPI call_sub function.
The program name passed will be that of the routine, as stored in
the CEEPIPI table. The length of the name will be a value between
1 and 8 and will not include any trailing blanks. The entry point
passed will be that of the routine entry point, as stored in the CEEPIPI
table. Language Environment will
not pass the function pointer address that may have been created to
support routines with writable static.
- Language Environment will
not drive the pattern match routine for the CEEPIPI call_sub_addr,
call_sub_addr_nochk, or call_sub_addr_nochk2 functions or when there
is no routine name in the CEEPIPI table
- This service is intended to be used in the assembler user exit
(CEEBXITA) as part of enclave initialization. It is also intended
for use from within a subroutine that is run in the environment at
which time it would register the pattern match routine. Invocation
of the pattern match routine begins on the next call into the environment.
- The user of this service is responsible for loading the pattern
match routine and ensuring it remains loaded across CEEPIPI subroutine
calls. You should use one of the Language Environment process
level load services, such as CEEZLOD, so that the pattern match routine
also remains loaded across any enclave termination that may have been
triggered by a subroutine. The CEERCB_PMADDR field (see Table 1) can be checked for a non-zero
value before loading and registering the pattern match routine. This
can prevent an additional load and registration call after an enclave
termination and subsequent enclave re-initialization in the subroutine
environment.