CICS - Pseudoprogrammierung
Ab sofort haben wir Nichtkonvertierungs- und Konvertierungsprogramme behandelt. Konvertierungsprogramme haben einen großen Nachteilthink timeist erheblich hoch. Um dieses Problem zu lösen, kam die Pseudokonvertierungsprogrammierung ins Spiel. Wir werden jetzt mehr über Pseudokonvertierungsprogramme diskutieren.
Pseudo-Konvertierungsprogramm
Es folgt die Abfolge von Ereignissen, die in einem Pseudokonvertierungsprogramm stattfinden -
Step 1 - Das System sendet eine Nachricht an den Bildschirm und beendet die Transaktion. Dabei wird die Transaktion angegeben, die gestartet werden soll, wenn die Benutzereingabe empfangen wird.
Step 2- Das System weist die von dieser Transaktion verwendeten Ressourcen anderen im System ausgeführten Transaktionen zu. So können wir die Ressourcen in einem Pseudokonvertierungsprogramm verwenden, bis der Benutzer die Eingabe gibt.
Step 3- Das System fragt den Terminal-Eingang in regelmäßigen Abständen ab. Wenn die Eingabe empfangen wird, wird sie verarbeitet und die Ausgabe wird angezeigt.
Step 4 - Das Anwendungsprogramm wird bei Bedarf in den Hauptspeicher geladen und bei Nichtgebrauch freigegeben.
Pseudokonvertierungstechniken
Der wichtige Punkt bei Pseudokonversationen ist die Datenübertragung zwischen den einzelnen Aufgaben. Wir werden über die Techniken zum Übergeben von Daten diskutieren.
COMMAREA
COMMAREA ist als Kommunikationsbereich bekannt. COMMAREA wird verwendet, um Daten zwischen Aufgaben zu übertragen. Das folgende Beispiel zeigt, wie COMMAREA übergeben wird, wobei WSCOMMAREA und WS-COMMAREA-LENGTH im Abschnitt Arbeitsspeicher deklariert sind.
EXEC CICS RETURN
TRANSID ('transaction-id')
COMMAREA (WS-COMMAREA)
LENGTH (WS-COMMAREA-LENGTH)
END-EXEC.
DFHCOMMAREA
DFHCOMMAREA ist ein spezieller Speicherbereich, der von CICS für jede Aufgabe bereitgestellt wird.
Es wird verwendet, um Daten von einem Programm an ein anderes Programm zu übergeben. Die Programme können in derselben Transaktion oder auch in einer anderen Transaktion vorhanden sein.
Es wird im Verknüpfungsabschnitt des Programms auf der Ebene 01 deklariert.
Es sollte dieselbe Bildklausel wie WS-COMMAREA haben.
Daten können mithilfe einer MOVE-Anweisung von DFHCOMMAREA nach WS-COMMAREA zurück verschoben werden.
MOVE DFHCOMMAREA TO WS-COMMAREA.
Beispiel
Nach dem Senden der Karte endet die Aufgabe und wartet auf die Benutzerantwort. Zu diesem Zeitpunkt müssen die Daten gespeichert werden, da die Transaktion zwar beendet wurde, die Transaktion jedoch nicht. Wenn diese Transaktion fortgesetzt werden soll, ist der vorherige Status der Aufgabe erforderlich. Der Benutzer gibt die Eingabe ein. Dies muss nun vom Befehl RECEIVE MAP empfangen und dann validiert werden. Das folgende Beispiel zeigt, wie COMMAREA und DFHCOMMAREA deklariert werden -
WORKING-STORAGE SECTION.
01 WS-COMMAREA.
05 WS-DATA PIC X(10).
LINKAGE SECTION.
01 DFHCOMMAREA.
05 LK-DATA PIC X(10).
Pseudocode
Nachstehend ist die Logik des Pseudocodes angegeben, die wir bei der Pseudoprogrammierung verwenden.
MOVE DFHCOMMAREA TO WS-COMMAREA
IF EIBCALEN = 0
STEP1: SEND MAP
STEP2: MOVE <internal-transaction-id1> to WS-COMMAREA
STEP3: ISSUE CONDITIONAL RETURN
ELSE
IF WS-COMMAREA = <internal-transaction-id1>
STEP4: RECEIVE MAP
STEP5: PROCESS DATA
STEP6: SEND OUTPUT MAP
STEP7: MOVE <internal-transaction-ID2> to WS-COMMAREA
STEP8: ISSUE CONDITIONAL RETURN
END-IF
END-IF
STEP9: REPEAT STEP3 TO STEP7 UNTIL EXIT
Beispiel
Das folgende Beispiel zeigt ein Pseudokonvertierungsprogramm -
******************************************************************
* PROGRAM TO DEMONSTRATE PSEUDO-CONVERSATION *
******************************************************************
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-MESSAGE PIC X(30).
01 WS-COMMAREA PIC X(10) VALUE SPACES.
LINKAGE SECTION.
01 DFHCOMMAREA PIC X(10).
PROCEDURE DIVISION.
MOVE DFHCOMMAREA TO WS-COMMAREA
IF WS-COMMAREA = SPACES
******************************************************************
* TRANSACTION GETTING EXECUTED FOR THE FIRST TIME *
******************************************************************
MOVE 'HELLO' TO WS-MESSAGE
EXEC CICS SEND TEXT
FROM (WS-MESSAGE)
END-EXEC
MOVE 'FIRST' TO WS-COMMAREA
******************************************************************
* TASK ENDS AS A RESULT OF RETURN. IF AID KEY PRESSED, NEXT *
* TRANSACTION SHOULD BE TP002. DATA PASSED FROM WS-COMMAREA TO *
* DFHCOMMAREA *
******************************************************************
EXEC CICS RETURN
TRANSID('TP002')
COMMAREA(WS-COMMAREA)
END-EXEC
******************************************************************
* IF COMMAREA IS NOT EMPTY , THEN TP002 HAS BEEN EXECUTED ONCE *
* ALREADY, USER INTERACTION IS FACILITATED BY RECEIVE *
******************************************************************
ELSE
EXEC CICS RECEIVE
INTO(WS-MESSAGE)
END-EXEC
EXEC CICS SEND TEXT
FROM (WS-MESSAGE)
END-EXEC
******************************************************************
* TASK ENDS AS A RESULT OF RETURN, NO NEXT TRANSACTION SPECIFIED *
* TO BE EXECUTED *
******************************************************************
EXEC CICS RETURN
END-EXEC
END-IF.
Vorteile der Pseudokonvertierung
Im Folgenden sind die Vorteile der Pseudokonvertierung aufgeführt:
Die Ressourcen werden am besten genutzt. Ressourcen werden freigegeben, sobald das Programm vorübergehend ausgesetzt wird.
Es sieht so aus, als ob es sich im Konversationsmodus befindet.
Es hat eine bessere Reaktionszeit.
Rückgabeanweisungen
Im Folgenden sind die beiden Arten von return-Anweisungen aufgeführt, die in CICS verwendet werden:
Return-1
Wenn die folgende bedingungslose Rückgabeanweisung ausgegeben wird, werden die Task und die Transaktion (Programm) beendet.
EXEC CICS RETURN
END-EXEC.
Return-2
Wenn die folgende bedingte Rückgabe ausgegeben wird, dh die Rückgabe mit der TRANSID-Anweisung, kehrt das Steuerelement mit der nächsten auszuführenden Transid zum CICS zurück. Die nächste Transaktion beginnt, wenn der Benutzer eine AID-Taste drückt.
EXEC CICS RETURN
TRANSID ('trans-id')
[COMMAREA(WS-COMMAREA)]
END-EXEC.