Control Block Format

Because Submit exits are invoked in different environments, some control block fields may not be filled in. This section presents the control blocks passed to the exits. Upon entry to the Submit exits, Register 1 points to a parameter list (PLIST) as shown in the following figure. This list may contain the addresses of the following components:
  • TCQE
  • SQCB
  • Composite NETMAP record (The node usage (US) record is not a part of the composite NETMAP record.)
  • A fullword that contains 1 or 2 indicating whether this is a Stage 1 or Stage 2 exit
  • UICB (User Interface Control Block)
  • Address of 25 fullword work area (Authorized Stage 1 Submit exit only.)
Note: The SQCB, UICB and composite NETMAP record addresses may be zero. For the Authorized Stage 1 Submit Exit, the 2nd word in the PLIST, rather than having the SQCB address (which is not available for any Stage 1 Submit exit), has a pointer to the instruction that invoked the exit. Also, For the Authorized Stage 1 Submit Exit only, there is a 6th FW in the PLIST which contains the address of 25 FW’s of storage for use by the exit.

If the Process submission is to be rejected, the Unauthorized Stage 1 Submit exit and the Stage 2 Submit exit must set a positive non-zero value in Register 15 and the return code field (TQRTNCD) of the TCQE. A message ID in the TQMSGID field in the TCQE should also be set. The same is true of the Authorized Submit exit except that the RC must be >= 8 to reject the submission.

The only modifiable field in the UICB are UIERRM1 and UIERRM1 for which you can return your own message text to Connect:Direct, the exit must put up to 64 bytes of text into UIERRM1. If desired, up to 64 more bytes can be put into UIERRM2. If nothing is returned in UIERRM1, then both UIERRM1 and UIERRM2 will be ignored.

The following figure illustrates the layout of the TCQE. In the Process contained in the Statement Control Block, DMxxxxxx represents the macro name for the statement (COPY, RUN JOB, RUN TASK, SUBMIT, etc.).

TCQ Header macro= DMTCQE

DSECT= TCQE

Command Statement Header Section macro= DGA$TQSH

DSECT= TCQSH

Statement Control Block macro= DMxxxxxx

Displacement values found in the TCQE and pointers in the TCQSH to the next or previous TCQSH are from the top of the TCQE and may need to be multiplied by 16 (if the Process is larger than 64K). Displacement values found in the statement control blocks are from the top of the TCQSH associated with that statement control block.

The following figure illustrates the layout of the composite NETMAP record.

COMPOSITE NETMAP RECORD

$$NN - displacement to ADJACENT NODE Record

$$AA - displacement to ALT.COMM Record

$$BA - displacement to BATCH.APPLI Record

$$CA - displacement to CICS.APPLID

$$DN - displacement to LDNS Record

$$NA - displacement to APPLIDS Record

$$ND - displacement to LUPOOL Record

$$NT - displacement to TCP.API Record

$$TA - displacement to TSO.APPLIDS Record

$$N6 - displacement to IPv6 Record

$$NU - displacement to UDT Record (obsolete)

$$CM - displacement to COMMENT 13 Record

macro= DGA$NETE

DSECT= $$REC

ADJACENT NODE Record macro= DGA$NETD

DSECT= NNODEREC

ALT.COMM Record macro= DGA$NETL

DSECT= ALTADDRH

LDNS Record macro= DGA$NET$

DSECT= DNREC

APPLIDS Record macro= DGA$NETA

DSECT= NAAPLREC

LUPOOL Record macro= DGA$NET@

DSECT= NDLUPREC

TCP.API Record macro= DGA$NETT

DSECT= NTAPIREC

IPv6 Record macro= DGA$NET6

DSECT= N6TCPREC

Displacement values found in the composite network map record are from the top of the composite network map.

Note: Modifying fields in the composite network map record is prohibited.

Example of Created Control Block

This sample section shows how a Process is submitted and the control block that is created when the Submit exit is invoked. The following figure shows the submitted Process.

TEST01 PROCESS   SNODE=THERE
STEP01 COPY FROM (DSN=THIS.DATA.SET) -
    TO   (DSN=THAT.DATA.SET DISP=OLD)
IF01 IF  (STEP01=0) THEN
STEP02 RUN JOB    (DSN=Z99.CONTROL(RUNJ))PNODE
  ELSE
STEP03 RUN TASK -
  (PGM=RTEXAMPL,PARM=(CL44'THIS.DATA.SET')) -
  PNODE
  EIF
STEP04 SUBMIT DSN=Z99.PROCLIB(TEST02) HOLD=Y

The following figure illustrates the resulting layout of the Process control block after submitting the Process named TEST01.