样本扩展程序通信块 (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
EJECTCOBOL
以下代码示例是 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;