CEEKRGPM — register pattern match routine

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:
  1. 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.
  2. 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
  3. 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.
  4. 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.