Sample Extended Program Communication Block (XPCB)

The segment that is passed in a dependent region and has the Data Capture exit routine defined for it can use the XPCB to identify the segment and call functions, provides the address of a work area, and contains additional information that is passed to the Data Capture exit routine.

This topic provides examples of the XPCB in assembler, COBOL, and PL/I.

Subsections:

Assembler

The following code sample is an example of the XPCB in assembler.

         SPACE 3
XPCB     DSECT
XPCB_EYECATCHER          DS    CL4     "XPCB" EYECATCHER
XPCB_VERSION             DS    CL2     XPCB VERSION INDICATOR
XPCB_RELEASE             DS    CL2     XPCB RELEASE INDICATOR
XPCB_EXIT_NAME           DS    CL8     SEGMENT EXIT NAME
XPCB_EXIT_RETURN_CODE    DS    H       RETURN CODE FROM EXIT
XPCB_EXIT_REASON_CODE    DS    H       REASON CODE FROM EXIT
XPCB_DATABASE_NAME       DS    CL8     PHYSICAL DATA BASE NAME
XPCB_DBD_VERSION_PTR     DS    A       ADDRESS OF DBD VERSION ID
XPCB_SEGMENT_NAME        DS    CL8     PHYSICAL SEGMENT NAME
XPCB_CALL_FUNCTION       DS    CL4     CALL FUNCTION
XPCB_PHYSICAL_FUNCTION   DS    CL4     PHYSICAL CALL FUNCTION
                         DS    CL4
XPCB_DB_PCB_PTR          DS    A       ADDRESS OF DB PCB
XPCB_DB_PCB_NAME         DS    CL8     NAME OF DB PCB
XPCB_INQY_OUTPUT_PTR     DS    A       ADDRESS OF "INQY" OUTPUT
XPCB_IO_PCB_PTR          DS    A       ADDRESS OF I/O PCB
XPCB_ENVIRONMENT_FLAGS   DS    X       ENVIRONMENT FLAGS
XPCB_IMS_ENH_SUPPORT     EQU   X'80'   RRS SUPPORT IS AVAILABLE IN SYSTEM
XPCB_IMS_RRS_ENABLED     EQU   X'40'   RRS=Y WAS SPECIFIED
XPCB_CALL_AT_COMMIT      EQU   X'20'   SET BY EXIT - CALL DURING COMMIT
XPCB_LOGX_FORMAT         EQU   X'10'   REDUCED 9904 FORMAT
XPCB_EXIT_WAS_CALLED     EQU   X'08'   INTERNAL FLAG USED BY IMS
XPCB_DPROP_EXIT          EQU   X'04'   SET BY DPROP EXIT ROUTINE 
                         DS    X       RESERVED
XPCB_CONC_KEY_LENGTH     DS    H       LENGTH OF CONCATENATED KEY
XPCB_CONC_KEY_PTR        DS    A       ADDRESS OF CONCATENATED KEY
XPCB_DATA_XSDB_PTR       DS    A       ADDRESS OF XSDB FOR DATA
XPCB_BEFORE_XSDB_PTR     DS    A       ADDRESS OF XSDB FOR REPL DATA
XPCB_PATH_XSDB_PTR       DS    A       ADDRESS OF XSDB FOR PATH DATA
XPCB_SETS_ROLS_TOKEN     DS    F       TOKEN FOR SETS-ROLS CALL
                         DS    F       RESERVED
                         DS    F       RESERVED
XPCB_EXIT_WORK_PTR       DS    A       ADDRESS OF WORK AREA
XPCB_ZERO_POINTER        DS    A       ZERO ADDRESS
                         DS    F       RESERVED
XPCB_TIMESTAMP           DS    CL8     TIMESTAMP OF CALL
         EJECT

COBOL

The following code sample is an example of the XPCB in COBOL.

01  XPCB.
    05  EYECATCHER                     PIC X(04).
    05  VERSION                        PIC X(02).
    05  RELEASE-ID                     PIC X(02).
    05  EXIT-NAME                      PIC X(08).
    05  EXIT-RETURN-CODE               PIC 9(04) COMP.
    05  EXIT-REASON-CODE               PIC 9(04) COMP.
    05  DATABASE-NAME                  PIC X(08).
    05  DBD-VERSION-PTR                POINTER.
    05  SEGMENT-NAME                   PIC X(08).
    05  CALL-FUNCTION                  PIC X(04).
    05  PHYSICAL-FUNCTION              PIC X(04).
    05  FILLER                         PIC 9(08) COMP.
    05  DB-PCB-PTR                     POINTER.
    05  DB-PCB-NAME                    PIC X(08).
    05  INQY-OUTPUT-PTR                POINTER.
    05  IO-PCB-PTR                     POINTER.
    05  ENVIRONMENT-FLAGS              PIC X.
      88  IMS-ENH-SUPPORT            VALUE X'80'.
* 						RRS SUPPORT IS AVAILABLE IN SYSTEM
      88  IMS-RRS-ENABLED            VALUE X'40'. 
* 						RRS=Y WAS SPECIFIED
      88  CALL_AT_COMMIT             VALUE X'20'.
* 						SET BY EXIT - CALL DURING COMMIT
      88  XPCB_LOGX_FORMAT           VALUE X'10'.
* 						REDUCED 9904 FORMAT
      88  XPCB_EXIT_WAS_CALLED       VALUE X'08'.
* 						INTERNAL FLAG USED BY IMS
      88  XPCB_DPROP_EXIT            VALUE X'04'. 
* 						SET BY DPROP EXIT ROUTINE 
    05  FILLER                         PIC X.
* RESERVED
    05  CONC-KEY-LENGTH                PIC 9(04) COMP.
    05  CONC-KEY-PTR                   POINTER.
    05  DATA-XSDB-PTR                  POINTER.
    05  BEFORE-XSDB-PTR                POINTER.
    05  PATH-XSDB-PTR                  POINTER.
    05  FILLER                         POINTER.
    05  FILLER                         POINTER.
    05  FILLER                         POINTER.
    05  EXIT-WORK-PTR                  POINTER.
    05  NULL-PTR                       POINTER.
    05  FILLER                         POINTER.
    05  TIMESTAMP                      PIC X(08). 

PL/I

The following sample is an example of the XPCB in PL/I.

DECLARE
  1 XPCB               BASED(XPCB_PTR),
    3 EYECATCHER            CHAR(4),   /* "XPCB" EYECATCHER         */
    3 VERSION               CHAR(2),   /* XPCB VERSION INDICATOR    */
    3 RELEASE               CHAR(2),   /* XPCB RELEASE INDICATOR    */
    3 EXIT_NAME             CHAR(8),   /* SEGMENT EXIT NAME         */
    3 EXIT_RETURN_CODE      FIXED BINARY (15), /* RETURN CODE       */
    3 EXIT_REASON_CODE      FIXED BINARY (15), /* REASON CODE       */
    3 ATABASE_NAME         CHAR(8),   /* PHYSICAL DATA BASE NAME    */
    3 DBD_VERSION_PTR       POINTER,   /* ADDRESS OF DBD VERSION ID */
    3 SEGMENT_NAME          CHAR(8),   /* PHYSICAL SEGMENT NAME     */
    3 CALL_FUNCTION         CHAR(4),   /* CALL FUNCTION             */
    3 PHYSICAL_FUNCTION     CHAR(4),   /* DL/I PHYSICAL FUNCTION    */
    3 FILLER1               FIXED BINARY (31), /* RESERVED          */
    3 DB_PCB_PTR            POINTER,   /* ADDRESS OF DB PCB         */
    3 DB_PCB_NAME           CHAR(8),   /* NAME OF DB PCB            */
    3 INQY_OUTPUT_PTR       POINTER,   /* ADDRESS OF "INQY" OUTPUT  */
    3 IO_PCB_PTR            POINTER,   /* ADDRESS OF I/O PCB        */
    3 ENVIRONMENT-FLAGS     CHAR(1),   /* Environment Flags         */
        /* IMS-ENH-SUPPORT      X'80' RRS SUPPORT AVAILABLE IN SYSTEM   */ 
        /* IMS-RRS-ENABLED      X'40' RRS=Y WAS SPECIFIED               */
        /* CALL_AT_COMMIT       X'20' SET BY EXIT-CALL DURING COMMIT    */
        /* XPCB_LOGX_FORMAT     X'10' REDUCED 9904 FORMAT               */
        /* XPCB_EXIT_WAS_CALLED X'08' INTERNAL FLAG USED BY IMS         */ 
        /* XPCB_DPROP_EXIT      X'04' SET BY DPROP EXIT ROUTINE         */
    3 NEWFILLER             CHAR(1),           /* Reserved          */
    3 CONC_KEY_LENGTH       FIXED BINARY (15), /* LENGTH OF FULLY   */
                                       /* CONCATENATED KEY FOR SEGM */
    3 CONC_KEY_PTR          POINTER,   /* ADDRESS OF PHYSICAL FULLY */
                                       /* CONCATENATED KEY FOR SEGM */
    3 DATA_XSDB_PTR         POINTER,   /* ADDRESS OF XSDB FOR       */
                                       /* PHYSICAL SEGMENT DATA     */
    3 BEFORE_XSDB_PTR       POINTER,   /* ADDRESS OF XSDB FOR       */
                                       /* PHYSICAL BEFORE DATA      */
    3 PATH_XSDB_PTR         POINTER,   /* ADDRESS OF XSDB FOR       */
                                       /* PHYSICAL PATH DATA        */
    3 FILLER3               POINTER,   /* RESERVED                  */
    3 FILLER4               POINTER,   /* RESERVED                  */
    3 FILLER5               POINTER,   /* RESERVED                  */
    3 EXIT_WORK_PTR         POINTER,   /* ADDRESS OF 256 BYTE AREA  */
                                       /*        FOR THE EXIT       */
    3 NULL_PTR              POINTER,   /* NULL POINTER VALUE        */
    3 FILLER6               POINTER,   /* RESERVED                  */
    3 CALL_TIMESTAMP        CHAR(8),   /* TIMESTAMP OF CALL         */
    3 FILLER7               POINTER;   /* RESERVED FOR NULLS AT END */
 
DECLARE XPCB_PTR   POINTER;