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.