TI in einer Nicht-DPL-Umgebung
In einer nicht verknüpften Umgebung (also einer Nicht-DPL-Umgebung) wird IBM Distributed Program Link (DPL) nicht verwendet. TI kann zum Aufrufen eines Mainframetransaktionsprogramms (TP) verwendet werden, das die COBOL-Befehle EXEC CICS RECEIVE INTO und EXEC CICS SEND FROM verwendet. Diese beiden COBOL-Befehle sind nützlich, wenn Sie möchten, dass ein CICS-TP die Verantwortung für die SNA-Konversation (APPC/LU 6.2) übernimmt und daher das Spiegel-TP umgeht. Mit anderen Worten: Die COBOL-Befehle EXEC CICS RECEIVE INTO und EXEC CICS SEND FROM werden meist in einer nicht verknüpften Umgebung verwendet, um Daten in eine und aus einer logischen Einheit (LU) vom Typ 6.2 (APPC) zu übertragen.
TI unterstützt das LU 6.2-Modell für verknüpfte und nicht verknüpfte Umgebungen. Sie können die folgenden Remoteumgebungstypen erstellen, um die einzelnen Modelle zu unterstützen:
CICS-Verknüpfung mit LU 6.2
Verwenden Sie dies in einer IBM-DPL-Umgebung mit einem Spiegel-TP.
CICS mit LU 6.2
Verwenden Sie dies in einer Umgebung ohne DPL, in der das Spiegel-TP umgangen wird.
Viele Kunden verwenden TI in einer Nicht-DPL-Umgebung. Es ist lediglich zu berücksichtigen, ob die Terminallogik in die Geschäftslogik eingebettet wird. Wenn IBM DPL von einem COBOL-TP unterstützt wird, wurde die Präsentationslogik bereits von der Geschäftslogik getrennt, sodass Sie den COBOL-Code wahrscheinlich nicht ändern müssen. Wenn das TP jedoch für die Kommunikation mit einem Terminal geschrieben wurde, müssen Sie wahrscheinlich den COBOL-Code ändern, um die Geschäftslogik von der Präsentationslogik zu trennen.
Der folgende COBOL-Beispielcode zeigt, wie sie ungebundene Recordsets mithilfe der COBOL-Befehle EXEC CICS RECEIVE INTO und EXEC CICS SEND FROM behandeln:
*****************************************************
* 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.