非 DPL 环境中的 TI
非联接环境(即非 DPL 环境)是不使用 IBM 分布式程序联接 (DPL) 的环境。 可以使用 TI 来调用大型机交易程序 (TP),该程序使用 EXEC CICS RECEIVE INTO 和 EXEC CICS SEND FROM 这两个 COBOL 命令 。 当你希望 CICS TP 承担 SNA (APPC/LU 6.2) 对话责任,从而绕过镜像 TP 时,这两个 COBOL 命令非常有用。 换句话说,EXEC CICS RECEIVE INTO 和 EXEC CICS SEND FROM 这两个 COBOL 命令最常用于非链接环境,以将数据传入和传出 6.2 类型的 LU (APPC) 。
TI 对联接环境和非联接环境都支持 LU 6.2 模型。 可以创建下面的远程环境 (RE) 类型来支持每个模型:
使用 LU 6.2 的 CICS 链接
用于使用镜像 TP 的 IBM DPL 环境中。
使用 LU 6.2 的 CICS
用于绕过镜像 TP 的非 DPL 环境中。
许多客户在非 DPL 环境中使用 TI。 唯一需要注意的是,终端逻辑是否嵌入了业务逻辑。 如果 COBOL TP 支持 IBM DPL,则说明表示逻辑已与业务逻辑分离,因此你可能不需要修改 COBOL。 但是,如果编写 TP 是为了与终端通信,那么很可能需要修改 COBOL 代码,以将业务逻辑与表示逻辑分离。
例如,以下 COBOL 代码示例演示了如何通过使用 EXEC CICS RECEIVE INTO 和 EXEC CICS SEND FROM 这两个 COBOL 命令来处理未绑定的记录集:
*****************************************************
* Example showing how to send unbounded recordsets
* to a client application.
*****************************************************
IDENTIFICATION DIVISION.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
* INPUT AREA
01 CUSTOMER-INPUT-NUMBER PIC 9(9).
* OUTPUT AREA
01 CUSTOMER-DATA.
05 LAST-NAME PIC X(20).
05 FIRST-NAME PIC X(20).
* ONE ROW IN A DATABASE TABLE
01 INVOICES.
05 INVOICE-NUMBER PIC 9(10).
05 INVOICE-DATE PIC 9(7) COMP-3.
05 INVOICE-AMOUNT PIC S9(13)V9(2) COMP-3.
05 INVOICE-DESCRIPTION PIC X(40).
LINKAGE SECTION.
PROCEDURE DIVISION.
*
* Get the input customer account number from the
* client applicaton:
*
MOVE LENGTH OF CUSTOMER-INPUT-NUMBER TO RECEIVE-LENGTH
EXEC-CICS RECEIVE INTO(CUSTOMER-INPUT-NUMBER)
LENGTH(RECEIVE-LENGTH)
END-EXEC.
*
* Do some work; then send the first and last name back:
*
MOVE LENGTH OF CUSTOMER-DATA TO SEND-LENGTH
EXEC-CICS SEND FROM(CUSTOMER-DATA)
LENGTH(SEND-LENGTH)
END-EXEC.
*
* Follow regular data with unbounded table data that
* the client application sees as a recordset:
*
MOVE LENGTH OF INVOICES TO SEND-LENGTH
PERFORM UNTIL NO-MORE-INVOICES
*
* Do some work to get the next row:
*
MOVE DB-INVOICE-NUMBER TO INVOICE-NUMBER
MOVE DB-INVOICE-DATE TO INVOICE-DATE
MOVE DB-INVOICE-AMOUNT TO INVOICE-AMOUNT
MOVE DB-INVOICE-DESC TO INVOICE-DESCRIPTION
*
* Send the row:
*
EXEC-CICS SEND FROM(INVOICES)
LENGTH(SEND-LENGTH)
END-EXEC.
END-PERFORM.