非 DPL 环境中的事务集成器 (TI)

非联接环境(即非 DPL 环境)是不使用 IBM 分布式程序联接 (DPL) 的环境。 可以使用事务集成器 (TI) 来调用使用 EXEC CICS RECEIVE INTOEXEC CICS SEND FROM COBOL 命令的大型机事务程序 (TP)。 当你希望 CICS TP 承担 SNA (APPC/LU 6.2) 对话责任,从而绕过镜像 TP 时,这两个 COBOL 命令非常有用。 也就是说,EXEC CICS RECEIVE INTOEXEC CICS SEND FROM COBOL 命令最常用于在非联接环境中与类型 6.2 (APPC) 的逻辑单元 (LU) 进行数据往来传输。

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 INTOEXEC 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.   

另请参阅

会议特定实际需求