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.