CICS - Pseudo Programação

A partir de agora, cobrimos programas de não conversão e conversão. Os programas de conversão têm uma grande desvantagem, poisthink timeé consideravelmente alto. Para superar esse problema, a programação de pseudo-conversão entrou em cena. Vamos agora discutir mais sobre programas de pseudo-conversão.

Programa de pseudo-conversão

A seguir está a sequência de eventos que ocorrem em um programa de pseudo-conversão -

  • Step 1 - O sistema envia uma mensagem para a tela e encerra a transação, especificando a transação a ser iniciada quando a entrada do usuário for recebida.

  • Step 2- O sistema aloca os recursos usados ​​por esta transação para outras transações em execução no sistema. Portanto, podemos utilizar os recursos em um programa de pseudo-conversão até que o usuário forneça a entrada.

  • Step 3- O sistema pesquisa a entrada do terminal em intervalos regulares de tempo. Quando a entrada é recebida, ela é processada e a saída é exibida.

  • Step 4 - O programa aplicativo é carregado no armazenamento principal quando necessário e liberado quando não está em uso.

Técnicas de Pseudo Conversão

O ponto importante a se observar na pseudo-conversa é a passagem de dados entre todas as tarefas. Discutiremos sobre as técnicas de transmissão de dados.

COMMAREA

COMMAREA é conhecida como área de comunicação. COMMAREA é usado para passar dados entre tarefas. O exemplo a seguir mostra como passar COMMAREA onde WSCOMMAREA e WS-COMMAREA-LENGTH são declarados na Seção de Armazenamento de Trabalho -

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

DFHCOMMAREA

DFHCOMMAREA é uma área de memória especial que é fornecida pelo CICS para cada tarefa.

  • É usado para passar dados de um programa para outro programa. Os programas podem existir na mesma transação ou também em transações diferentes.

  • É declarado na seção de ligação do programa no nível 01.

  • Deve ter a mesma cláusula de imagem que WS-COMMAREA.

  • Os dados podem ser movidos de volta de DFHCOMMAREA para WS-COMMAREA usando uma instrução MOVE.

MOVE DFHCOMMAREA TO WS-COMMAREA.

Exemplo

Depois de enviar o mapa, a tarefa termina e aguarda a resposta do usuário. Nesse estágio, os dados precisam ser salvos, pois embora a tarefa tenha terminado, a transação não foi. Quando essa transação for retomada, será necessário o status anterior da tarefa. O usuário insere a entrada. Isso agora deve ser recebido pelo comando RECEIVE MAP e então validado. O exemplo a seguir mostra como declarar COMMAREA e DFHCOMMAREA -

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

Pseudo-código

Dada abaixo está a lógica do pseudo código que usamos na pseudo programação -

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

Exemplo

O exemplo a seguir mostra um programa de pseudo-conversão -

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

Vantagens da pseudo conversão

A seguir estão as vantagens da pseudo conversão -

  • Os recursos são melhor utilizados. Os recursos são liberados assim que o programa é suspenso temporariamente.

  • Parece que está em modo de conversação.

  • Tem melhor tempo de resposta.

Declarações de Devolução

A seguir estão os dois tipos de instruções de retorno que são usadas no CICS -

Return-1

Quando a seguinte instrução de retorno incondicional é emitida, a tarefa e a transação (programa) são encerradas.

EXEC CICS RETURN 
END-EXEC.

Return-2

Quando o seguinte retorno condicional, isto é, retorno com a instrução TRANSID, é emitido, o controle retorna ao CICS com o próximo transid a ser executado. A próxima transação começa quando o usuário pressiona uma tecla AID.

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