비DPL 환경의 TI
연결되지 않은 환경(즉, 비 DPL 환경)은 IBM DPL(Distributed Program Link)을 사용하지 않는 환경입니다. TI를 사용하여 EXEC CICS RECEIVE INTO 및 EXEC CICS SEND FROM COBOL 명령을 사용하는 메인프레임 TP(트랜잭션 프로그램)를 호출할 수 있습니다. 이러한 두 가지 COBOL 명령은 CICS TP에서 SNA(APPC/LU 6.2) 대화 업무를 수행하여 미러 TP를 우회하려는 경우에 유용합니다. 즉, EXEC CICS RECEIVE INTO 및 EXEC 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 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.