CICS BAC request server processing
How a request server processes each DPL request it receives depends
on whether the commarea is complete or whether there are more commands
in a follow-on commarea.
A single complete commarea
If all the commands for a specific CICS® region
fit in a single 32 KB commarea, all the data is sent to CICS in
one EXCI request. This is received by CICS, which
starts an EXCI mirror transaction as the CICS BAC
request server. This request server transaction proceeds to process
each of the commands in the commarea.
If one of the commands included in the commarea is a LINK command,
the request server transaction links to the specified application
program. If one of the commands included in the commarea is a RUNCEMT
command, the request server transaction links to DFHEMTA.
When all commands in the request are processed, the request server
terminates and returns the results to the batch request utility.
Multiple commareas
If the batch request utility cannot fit all the commands for a CICS region
in the same 32 KB commarea, the batch request utility sends the commarea
as a first part of the total request. The processing in the CICS region
is then as follows:
- A request server is initiated in the receiving CICS region
to process the request. The request server detects that it is only
a partial command block, therefore it writes the commarea to a CICS TS
queue and returns to the batch request utility.
- When the CICS region receives a follow-on commarea from
the batch request utility, it initiates a request server transaction,
which recognizes the input as another partial command block. The request
server writes this second command block as the second item in the
TS queue, then returns to the batch request utility again.
- Each initiated CICS BAC request server stores partial requests in
the same TS queue until the server receives the final command block.
The request server reads the previous items from the TS queue and
reassembles all the original commareas into a single piece of contiguous
storage.
- When all the partial requests are reassembled, the request server
transaction links to another CICS BAC program to service the requests.
If one of the requests is a LINK or RUNCEMT command, CICS BAC links
to either the specified application program or DFHEMTA to service
the command. When all commands are processed (or if an error is detected),
the CICS BAC processing program returns control back to the CICS BAC request
server program.
- If the CICS request server finds that the return commarea
is larger than 32 KB, it breaks it up into an appropriate
number of blocks and writes the second and subsequent blocks to a
TS queue. The CICS request server puts the first block in the
return commarea, then returns to the batch request utility
- The batch request utility recognizes that it has only received
part of the results and saves it in main storage, and issues another
EXCI request to the CICS request server to return the
rest of the data. This process continues until the request server
has exhausted the TS queue, with the batch request utility appending
the partial results in its main storage area until complete. When
the final block of returned data has been received, the batch request
utility continues processing as if the returned data had fitted into
a single commarea.