CICS - Pseudo Programmazione
A partire da ora, abbiamo coperto i programmi di non conversione e conversione. I programmi di conversione hanno un grosso svantaggio come i lorothink timeè considerevolmente alto. Per superare questo problema, è entrata in scena la programmazione di pseudo conversione. Discuteremo ora di più sui programmi di pseudo conversione.
Programma di pseudo conversione
Di seguito è riportata la sequenza di eventi che si verificano in un programma di pseudo conversione:
Step 1 - Il sistema invia un messaggio a schermo e termina la transazione, specificando la transazione da avviare quando viene ricevuto l'input dell'utente.
Step 2- Il sistema assegna le risorse utilizzate da questa transazione ad altre transazioni in esecuzione nel sistema. Quindi possiamo utilizzare le risorse in un programma di pseudo conversione fino a quando l'utente non fornisce l'input.
Step 3- Il sistema interroga l'ingresso del terminale a intervalli di tempo regolari. Quando l'input viene ricevuto, viene elaborato e l'output viene visualizzato.
Step 4 - Il programma applicativo viene caricato nella memoria principale quando necessario e rilasciato quando non in uso.
Tecniche di pseudo conversione
Il punto importante da notare nella pseudo-conversazione è il passaggio di dati tra ogni attività. Discuteremo delle tecniche per il passaggio dei dati.
COMMAREA
COMMAREA è conosciuta come area di comunicazione. COMMAREA viene utilizzato per passare i dati tra le attività. L'esempio seguente mostra come passare COMMAREA dove WSCOMMAREA e WS-COMMAREA-LENGTH sono dichiarati nella sezione Working Storage -
EXEC CICS RETURN
TRANSID ('transaction-id')
COMMAREA (WS-COMMAREA)
LENGTH (WS-COMMAREA-LENGTH)
END-EXEC.
DFHCOMMAREA
DFHCOMMAREA è un'area di memoria speciale fornita da CICS a ogni attività.
Viene utilizzato per passare dati da un programma a un altro programma. I programmi possono esistere nella stessa transazione o anche in una transazione diversa.
È dichiarato nella sezione Linkage del programma al livello 01.
Dovrebbe avere la stessa clausola immagine di WS-COMMAREA.
I dati possono essere spostati indietro da DFHCOMMAREA a WS-COMMAREA utilizzando un'istruzione MOVE.
MOVE DFHCOMMAREA TO WS-COMMAREA.
Esempio
Dopo aver inviato la mappa, l'attività termina e attende la risposta dell'utente. In questa fase, i dati devono essere salvati, perché sebbene l'attività sia terminata, la transazione non lo è stata. Quando questa transazione deve essere ripresa, richiederebbe lo stato precedente dell'attività. L'utente inserisce l'input. Questo ora deve essere ricevuto dal comando RECEIVE MAP e quindi convalidato. L'esempio seguente mostra come dichiarare 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 codice
Di seguito è riportata la logica dello pseudo codice che usiamo nella pseudo programmazione:
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
Esempio
L'esempio seguente mostra un programma di pseudo conversione:
******************************************************************
* 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.
Vantaggi della pseudo conversione
Di seguito sono riportati i vantaggi della pseudo conversione:
Le risorse vengono utilizzate al meglio. Le risorse vengono rilasciate non appena il programma viene temporaneamente sospeso.
Sembra che sia in modalità conversazionale.
Ha un tempo di risposta migliore.
Dichiarazioni di reso
Di seguito sono riportati i due tipi di istruzioni di restituzione utilizzate in CICS:
Ritorno-1
Quando viene emessa la seguente dichiarazione di restituzione incondizionata, l'attività e la transazione (programma) vengono terminate.
EXEC CICS RETURN
END-EXEC.
Ritorno-2
Quando viene emesso il seguente ritorno condizionale, ovvero il ritorno con l'istruzione TRANSID, il controllo ritorna al CICS con il successivo transid da eseguire. La transazione successiva inizia quando l'utente preme un tasto AID.
EXEC CICS RETURN
TRANSID ('trans-id')
[COMMAREA(WS-COMMAREA)]
END-EXEC.