Processing CCTL DRA requests
The CCTL communicates with IMS DB through DRA requests that are passed from the CCTL to the DRA using a participant adapter parameter list (PAPL). To make a DRA request the CCTL must pass control to the DRA Startup/Router Routine DFSPRRC0, and have register 1 point to a PAPL.
Multiple CCTL TCBs in a single address space can be used to process multiple CCTL threads. CCTL can dispatch each CCTL thread for a different CCTL TCB, and each CCTL TCB can call the DRA Startup/Router routine (DFSPRRC0) to process DRA requests.
Before passing control to DFSPRRC0, the CCTL must fill in the PAPL according to the request. These requests are specified by a function code in the PAPLFUNC field.
To specify a thread function request, put the PAPLTFUN value into the PAPLFUNC field.
The function requests are further broken down into many subfunctions. A thread function request is referred to by its subfunction name (for example, a thread request with a schedule subfunction is referred to as a SCHED request). Non-thread function requests are referred to by function name (for example, an initialization request is called an INIT request).
The term DRA request
applies to both thread and non-thread
function requests.
Once the PAPL is built and the DRA Startup/Router routine is loaded, the CCTL passes control to DFSPRRC0. The contents of the registers upon entry to DFSPRRC0 are:
- Register
- Contents
- 1
- Address of the PAPL
- 13
- Address of a standard 18-word save area
- 14
- Return address of the calling routine
The DRA Startup/Router routine puts itself into 31-bit addressing mode and will return to the calling routine in the caller's original addressing mode with all its registers restored. Register 15 is always returned with a zero in it.
The return code for the request is in the PAPLRETC field of the PAPL.