CICS - Pseudo programación

A partir de ahora, hemos cubierto los programas de conversión y no conversión. Los programas de conversión tienen un gran inconveniente ya que suthink timees considerablemente alto. Para superar este problema, la programación de pseudoconversión entró en escena. Ahora discutiremos más sobre programas de pseudoconversión.

Programa de pseudoconversión

A continuación se muestra la secuencia de eventos que tienen lugar en un programa de pseudoconversión:

  • Step 1 - El sistema envía un mensaje a la pantalla y finaliza la transacción, especificando la transacción que se iniciará cuando se reciba la entrada del usuario.

  • Step 2- El sistema asigna los recursos utilizados por esta transacción a otras transacciones que se ejecutan en el sistema. Entonces podemos utilizar los recursos en un programa de pseudoconversión hasta que el usuario dé la entrada.

  • Step 3- El sistema sondea la entrada del terminal a intervalos regulares de tiempo. Cuando se recibe la entrada, se procesa y se muestra la salida.

  • Step 4 - El programa de aplicación se carga en el almacenamiento principal cuando es necesario y se libera cuando no está en uso.

Técnicas de pseudoconversión

El punto importante a tener en cuenta en la pseudoconversación es el paso de datos entre cada tarea. Discutiremos sobre las técnicas para pasar datos.

COMMAREA

COMMAREA se conoce como área de comunicación. COMMAREA se utiliza para pasar datos entre tareas. El siguiente ejemplo muestra cómo pasar COMMAREA donde WSCOMMAREA y WS-COMMAREA-LENGTH se declaran en la sección de almacenamiento de trabajo:

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

DFHCOMMAREA

DFHCOMMAREA es un área de memoria especial que CICS proporciona para cada tarea.

  • Se utiliza para pasar datos de un programa a otro. Los programas pueden existir en la misma transacción o en transacciones diferentes también.

  • Se declara en la Sección de Vinculación del programa en el nivel 01.

  • Debe tener la misma cláusula de imagen que WS-COMMAREA.

  • Los datos se pueden mover de DFHCOMMAREA a WS-COMMAREA usando una instrucción MOVE.

MOVE DFHCOMMAREA TO WS-COMMAREA.

Ejemplo

Después de enviar el mapa, la tarea finaliza y espera la respuesta del usuario. En esta etapa, los datos deben guardarse, porque aunque la tarea ha finalizado, la transacción no. Cuando se reanude esta transacción, se requerirá el estado anterior de la tarea. El usuario ingresa la entrada. Esto ahora tiene que ser recibido por el comando RECEIVE MAP y luego validado. El siguiente ejemplo muestra cómo declarar COMMAREA y DFHCOMMAREA -

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

Pseudocódigo

A continuación se muestra la lógica del pseudocódigo que usamos en la pseudoprogramación:

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

Ejemplo

El siguiente ejemplo muestra un programa de pseudoconversión:

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

Ventajas de la pseudoconversión

A continuación se muestran las ventajas de la pseudoconversión:

  • Los recursos se utilizan mejor. Los recursos se liberan tan pronto como el programa se suspende temporalmente.

  • Parece que está en modo conversacional.

  • Tiene mejor tiempo de respuesta.

Declaraciones de devolución

A continuación se muestran los dos tipos de declaraciones de retorno que se utilizan en CICS:

Retorno-1

Cuando se emite la siguiente declaración de devolución incondicional, la tarea y la transacción (programa) finalizan.

EXEC CICS RETURN 
END-EXEC.

Retorno-2

Cuando se emite el siguiente retorno condicional, es decir, retorno con declaración TRANSID, el control vuelve al CICS con el siguiente transid a ejecutar. La siguiente transacción comienza cuando el usuario presiona una tecla AID.

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