CICS - Programmation pseudo

À partir de maintenant, nous avons couvert les programmes de non-conversion et de conversion. Les programmes de conversion ont un inconvénient majeur car leurthink timeest considérablement élevé. Pour surmonter ce problème, la programmation de pseudo-conversion est entrée en scène. Nous allons maintenant discuter plus en détail des programmes de pseudo-conversion.

Programme de pseudo-conversion

Voici la séquence d'événements qui ont lieu dans un programme de pseudo-conversion -

  • Step 1 - Le système envoie un message à l'écran et met fin à la transaction, en spécifiant la transaction à démarrer lorsque l'entrée de l'utilisateur est reçue.

  • Step 2- Le système alloue les ressources utilisées par cette transaction à d'autres transactions exécutées dans le système. Nous pouvons donc utiliser les ressources dans un programme de pseudo-conversion jusqu'à ce que l'utilisateur donne l'entrée.

  • Step 3- Le système interroge l'entrée du terminal à intervalles réguliers. Lorsque l'entrée est reçue, elle est traitée et la sortie est affichée.

  • Step 4 - Le programme d'application est chargé dans le stockage principal lorsque cela est nécessaire et libéré lorsqu'il n'est pas utilisé.

Techniques de pseudo-conversion

Le point important à noter dans la pseudo-conversation est le passage de données entre chaque tâche. Nous discuterons des techniques de transmission des données.

COMMAREA

COMMAREA est connue sous le nom de zone de communication. COMMAREA est utilisé pour transmettre des données entre les tâches. L'exemple suivant montre comment transmettre COMMAREA où WSCOMMAREA et WS-COMMAREA-LENGTH sont déclarés dans Working Storage Section -

EXEC CICS RETURN
   TRANSID ('transaction-id')
   COMMAREA (WS-COMMAREA)
   LENGTH  (WS-COMMAREA-LENGTH)
END-EXEC.

DFHCOMMAREA

DFHCOMMAREA est une zone de mémoire spéciale qui est fournie par CICS à chaque tâche.

  • Il est utilisé pour transmettre des données d'un programme à un autre programme. Les programmes peuvent exister dans la même transaction ou dans une transaction différente également.

  • Il est déclaré dans la section Linkage du programme au niveau 01.

  • Il doit avoir la même clause d'image que WS-COMMAREA.

  • Les données peuvent être déplacées de DFHCOMMAREA vers WS-COMMAREA à l'aide d'une instruction MOVE.

MOVE DFHCOMMAREA TO WS-COMMAREA.

Exemple

Après l'envoi de la carte, la tâche se termine et attend la réponse de l'utilisateur. À ce stade, les données doivent être enregistrées, car bien que la tâche soit terminée, la transaction ne l'a pas été. Lorsque cette transaction doit être reprise, elle nécessiterait le statut antérieur de la tâche. L'utilisateur entre l'entrée. Celui-ci doit maintenant être reçu par la commande RECEIVE MAP puis validé. L'exemple suivant montre comment déclarer COMMAREA et DFHCOMMAREA -

WORKING-STORAGE SECTION.
01 WS-COMMAREA.
   05 WS-DATA PIC X(10).
   
LINKAGE SECTION.
01 DFHCOMMAREA.
   05 LK-DATA PIC X(10).

Pseudo code

Ci-dessous, la logique du pseudo-code que nous utilisons dans la pseudo-programmation -

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

Exemple

L'exemple suivant montre un programme de pseudo-conversion -

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

Avantages de la pseudo conversion

Voici les avantages de la pseudo conversion -

  • Les ressources sont mieux utilisées. Les ressources sont libérées dès que le programme est temporairement suspendu.

  • On dirait qu'il est en mode conversationnel.

  • Il a un meilleur temps de réponse.

Déclarations de retour

Voici les deux types d'instructions de retour qui sont utilisées dans CICS -

Retour-1

Lorsque l'instruction de retour inconditionnel suivante est émise, la tâche et la transaction (programme) sont arrêtées.

EXEC CICS RETURN 
END-EXEC.

Retour-2

Lorsque le retour conditionnel suivant, c'est-à-dire return avec l'instruction TRANSID, est émis, le contrôle retourne au CICS avec le transid suivant à exécuter. La transaction suivante commence lorsque l'utilisateur appuie sur une touche AID.

EXEC CICS RETURN
   TRANSID ('trans-id')
   [COMMAREA(WS-COMMAREA)]
END-EXEC.