样本扩展程序通信块 (XPCB)

在从属区域中传递并为其定义了数据捕获出口例程的段可以使用 XPCB 来标识段和调用函数,提供工作区的地址,并包含传递到数据捕获出口例程的其他信息。

本主题提供了 XPCB 在汇编程序、 COBOL 和 PL/I 中的示例。

子节:

汇编语言

以下代码样本是汇编程序中 XPCB 的示例。

         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

以下代码示例是 COBOL 中的 XPCB 示例。

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

下面是 PL/I 中 XPCB 的示例。

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;