CICS - Guida rapida

CICS è un sistema DB / DC utilizzato nelle applicazioni online. CICS è stato sviluppato perché il sistema operativo batch può eseguire solo programmi batch. I programmi CICS possono essere scritti in COBOL, C, C ++, Java, ecc. Oggigiorno, gli utenti desiderano informazioni in pochi secondi e in tempo reale. Per fornire un servizio così rapido, abbiamo bisogno di un sistema in grado di elaborare le informazioni online. CICS consente agli utenti di comunicare con il sistema back-end per ottenere le informazioni desiderate. Esempi di programmi online includono il sistema bancario online, la prenotazione dei voli, ecc. L'immagine seguente mostra i componenti di CICS e il modo in cui sono correlati -

Funzioni di CICS

Le funzioni principali eseguite da CICS in un'applicazione sono le seguenti:

  • CICS gestisce le richieste da utenti simultanei in un'applicazione.

  • Sebbene più utenti stiano lavorando sul sistema CICS, questo dà l'impressione all'utente di essere solo l'unico utente.

  • CICS fornisce l'accesso ai file di dati per leggerli o aggiornarli in un'applicazione.

Caratteristiche di CICS

Le caratteristiche di CICS sono le seguenti:

  • CICS è un sistema operativo in sé, poiché gestisce la memoria del proprio processore, ha un proprio task manager che gestisce l'esecuzione di più programmi e fornisce le proprie funzioni di gestione dei file.

  • CICS fornisce un ambiente in linea nel sistema operativo batch. I lavori inviati vengono eseguiti immediatamente.

  • CICS è un'interfaccia di elaborazione delle transazioni generalizzata.

  • È possibile avere due o più regioni CICS contemporaneamente, poiché CICS viene eseguito come lavoro batch nel sistema operativo sul back-end.

CICS stesso funge da sistema operativo. Il suo compito è fornire un ambiente per l'esecuzione in linea dei programmi applicativi. CICS viene eseguito in una regione o partizione o spazio degli indirizzi. CICS gestisce la pianificazione per i programmi in esecuzione al suo interno. CICS viene eseguito come lavoro batch e possiamo visualizzarlo nello spool emettendo il comando PREFIX CICS *. Sono disponibili cinque servizi principali forniti da CICS. Tutti questi servizi insieme svolgono un'attività.

Ambiente CICS

Di seguito sono riportati i servizi di cui discuteremo in dettaglio passo dopo passo:

  • Servizi di sistema
  • Servizi di comunicazione dati
  • Servizi di trattamento dei dati
  • Servizi di programmazione dell'applicazione
  • Servizi di monitoraggio
  • Servizi di sistema

CICS mantiene le funzioni di controllo per gestire l'allocazione o la de-allocazione delle risorse all'interno del sistema che sono le seguenti:

  • Task Control- Il controllo delle attività fornisce funzionalità di pianificazione delle attività e multitasking. Si prende cura dello stato di tutte le attività CICS. Task Control alloca il tempo del processore tra le attività CICS simultanee. Questo è chiamatomultitasking. CICS cerca di stabilire la priorità del tempo di risposta all'attività più importante.

  • Program Control- Program Control gestisce il caricamento e il rilascio dei programmi applicativi. Non appena inizia un'attività, diventa necessario associare l'attività al programma applicativo appropriato. Sebbene molte attività possano richiedere l'utilizzo dello stesso programma applicativo, CICS carica solo una copia del codice in memoria. Ogni attività si fa strada attraverso questo codice in modo indipendente, quindi molti utenti possono eseguire transazioni che utilizzano contemporaneamente la stessa copia fisica di un programma applicativo.

  • Storage Control- Storage Control gestisce l'acquisizione e il rilascio dello storage principale. Il controllo dell'archiviazione acquisisce, controlla e libera l'archiviazione dinamica. La memorizzazione dinamica viene utilizzata per aree di input / output, programmi, ecc.

  • Interval Control - Interval Control offre servizi di timer.

Servizi di comunicazione dati

I servizi di comunicazione dati si interfacciano con metodi di accesso alle telecomunicazioni come BTAM, VTAM e TCAM per la gestione delle richieste di comunicazione dati dai programmi applicativi.

  • CICS libera i programmi applicativi dall'onere di affrontare i problemi hardware del terminale tramite l'uso del supporto di mappatura di base (BMS).

  • CICS fornisce Multi Region Operation (MRO) attraverso il quale possono comunicare più regioni CICS nello stesso sistema.

  • CICS fornisce Inter System Communication (ISC) attraverso il quale una regione CICS in un sistema può comunicare con la regione CICS su un altro sistema.

Servizi di trattamento dei dati

Interfaccia dei servizi di trattamento dei dati con metodi di accesso ai dati come BDAM, VSAM, ecc.

  • CICS facilita la gestione delle richieste di gestione dei dati dai programmi applicativi. CICS fornisce ai programmatori di applicazioni una serie di comandi per gestire la serie di dati e l'accesso al database e le operazioni correlate.

  • Data Handling Services si interfaccia con metodi di accesso al database come IMS / DB, DB2, ecc. E facilita la gestione delle richieste di database dai programmi applicativi.

  • CICS facilita la gestione dell'integrità dei dati controllando gli aggiornamenti simultanei dei record, la protezione dei dati come ABEND delle attività e la protezione dei dati in caso di errori di sistema.

Servizi di programmazione dell'applicazione

Interfaccia di Application Programming Services con programmi applicativi. I servizi di programmazione dell'applicazione di CICS forniscono funzionalità come la traduzione a livello di comando, CEDF (la funzione di debug) e CECI (la funzione di interprete dei comandi). Discuteremo più in dettaglio nei prossimi moduli.

Servizi di monitoraggio

I servizi di monitoraggio monitorano vari eventi nello spazio degli indirizzi CICS. Fornisce una serie di informazioni statistiche che possono essere utilizzate per l'ottimizzazione del sistema.

Dobbiamo conoscere i termini di base utilizzati in CICS per ottenere una migliore comprensione di come funziona. I programmi applicativi utilizzano CICS per la comunicazione con terminali e sottosistemi remoti e locali.

Terminale IBM 3270

Il sistema di visualizzazione delle informazioni 3270 è una famiglia di terminali per display e stampanti. 3270 terminali venivano utilizzati per connettersi al mainframe tramite controller IBM. Oggi è disponibile il software di emulazione 3270, il che significa che anche i normali PC possono essere utilizzati come terminali 3270. I terminali 3270 sono terminali stupidi e non eseguono alcuna elaborazione da soli. Tutta l'elaborazione deve essere eseguita dal programma applicativo. I terminali IBM sono costituiti dai seguenti componenti:

Monitor CRT

Il monitor CRT visualizza l'output oi campi di input del programma applicativo. Di seguito è mostrata una schermata di un modello 3278 di monitor CRT. Ha le seguenti caratteristiche:

  • È in grado di visualizzare 1920 caratteri.

  • Ciascuna di queste 1920 posizioni di caratteri è indirizzabile individualmente.

  • Un programma applicativo COBOL può inviare dati a tutte le posizioni sullo schermo.

  • Le caratteristiche di visualizzazione come intensità, protezione, non protezione del campo possono essere impostate utilizzando BMS, di cui parleremo in dettaglio nei prossimi moduli.

Tastiera

I tasti della tastiera IBM sono suddivisi nelle seguenti due categorie:

  • Non-AID Keys- Tutti gli altri tasti per alfabeti, numerici, punteggiatura ecc. Sono tasti non ausiliari. Quando l'utente digita testo o numeri utilizzando tasti non ausiliari, CICS non saprà nemmeno se l'utente sta digitando qualcosa o meno.

  • AID Keys- Le chiavi AID sono note come chiavi di identificazione dell'attenzione. CICS può rilevare solo le chiavi AID. Dopo aver digitato tutto l'input, solo quando l'utente preme uno dei tasti AID, CICS assume il controllo. Tasti AID: ENTER, da PF1 a PF24, da PA1 a PA3, CLEAR. Le chiavi AID sono ulteriormente suddivise in due categorie:

    • PF Keys- I tasti PF sono noti come tasti funzione. Le chiavi PF consentono il trasferimento dei dati dal terminale a CICS. I tasti PF sono ENTER e da PF1 a PF24.

    • PA Keys- Le chiavi PA sono note come chiavi di accesso al programma. Le chiavi PA non consentono il trasferimento di dati tra il terminale e CICS. Le chiavi PA vanno da PA1 a PA3 e CLEAR.

    Transazione

    Un programma CICS viene richiamato tramite una transazione. Una transazione CICS è una raccolta di programmi correlati logicamente in un'applicazione. L'intera applicazione può essere suddivisa logicamente in più transazioni.

    • Gli identificatori di transazione lunghi da 1 a 4 caratteri vengono utilizzati per identificare le transazioni che gli utenti desiderano eseguire.

    • Un programmatore collega un programma all'identificatore di transazione che viene utilizzato per richiamare tutti i programmi applicativi per quella particolare transazione.

    Compito

    Un'attività è un'unità di lavoro specifica di un utente.

    • Gli utenti richiamano un'applicazione utilizzando uno degli identificatori di transazione. CICS cerca l'identificativo della transazione per scoprire quale programma richiamare per primo per eseguire il lavoro richiesto. Crea un'attività per eseguire il lavoro e trasferisce il controllo al programma menzionato.

    • Una transazione può essere completata tramite diverse attività.

    • Un'attività può ricevere dati e inviare dati al terminale che l'ha avviata. Può leggere e scrivere file e può anche avviare altre attività.

    Attività vs. transazione

    La differenza tra una transazione e un'attività è che più utenti possono richiamare una transazione ma ogni utente avvia la propria attività.

    LUW

    LUW sta per Logical Unit of Work. LUW afferma che un pezzo di lavoro dovrebbe essere fatto completamente o non fatto affatto. Un'attività può contenere diverse unità logiche di lavoro in CICS. Ne discuteremo di più nei prossimi moduli.

    Applicazione

    Un'applicazione è una serie di programmi raggruppati in modo logico per formare diverse transazioni che vengono utilizzate per completare un'attività specifica per l'utente finale.

    I cinque componenti di sistema CICS descritti in precedenza sono un comodo raggruppamento di programmi di sistema CICS, ciascuno dei quali esegue le proprie funzioni specializzate. Il nucleo di CICS noto come CICS Nucleus, costituito da programmi di controllo e tabelle di controllo CICS forniti da IBM.

    Programmi di controllo

    Il nucleo CICS è costituito dai programmi di controllo e dalle tabelle di controllo corrispondenti. Offre vantaggi unici. Rende il sistema CICS altamente flessibile e quindi di facile manutenzione. Di seguito sono riportati gli importanti programmi di controllo di CICS:

    TCP

    TCP è noto come Terminal Control Program.

    • TCP viene utilizzato per ricevere messaggi dal terminale.

    • Mantiene i requisiti di comunicazione hardware.

    • Richiede a CICS di avviare le attività.

    KCP

    KCP è noto come Task Control Program.

    • KCP viene utilizzato per controllare simultaneamente l'esecuzione di attività e le relative proprietà.

    • Gestisce tutte le problematiche relative al multi-tasking.

    PCP

    PCP è noto come Program Control Program.

    • PCP viene utilizzato per individuare e caricare i programmi per l'esecuzione.

    • Trasferisce il controllo tra i programmi e, alla fine, restituisce il controllo al CICS.

    FCP

    FCP è noto come File Control Program.

    • FCP viene utilizzato per fornire ai programmi applicativi servizi come leggere, inserire, aggiornare o eliminare record in un file.

    • Mantiene il controllo esclusivo sui record per mantenere l'integrità dei dati durante gli aggiornamenti dei record.

    SCP

    SCP è noto come Storage Control Program. Viene utilizzato per controllare l'allocazione e la deallocazione della memoria all'interno di una regione CICS.

    Tabelle di controllo

    CICS è costituito da programmi e tabelle di controllo CICS forniti da IBM. Queste tabelle devono essere aggiornate di conseguenza con le informazioni sull'applicazione per l'esecuzione corretta dei programmi applicativi CICS. Di seguito sono riportate le tabelle di controllo importanti:

    TCT

    TCT è noto come Terminal Control Table.

    • Quando si accede a un terminale CICS, viene inserita una voce nella tabella TCT.

    • TCT contiene gli ID del terminale collegati alla regione CICS corrente.

    • Il programma di controllo del terminale insieme alla tabella di controllo del terminale riconoscono i dati in arrivo dal terminale.

    PCT

    PCT è noto come tabella di controllo del programma.

    • Contiene gli ID transazione (TRANSID) ei nomi dei programmi corrispondenti o gli ID dei programmi.

    • TRANSID è unico nella tabella PCT.

    PPT

    PPT è noto come Processing Program Table. PPT contiene il nome del programma o il nome del mapset, il contatore dell'utilizzo dell'attività, la lingua, le dimensioni, l'indirizzo di archiviazione principale, l'indirizzo della libreria di caricamento, ecc.

    • Il nome del programma o del mapset è univoco in una tabella PPT.

    • CICS riceve la transazione e un nome di programma corrispondente viene assegnato alla transazione dal PCT. Controlla se il programma è caricato o meno. Se viene caricato, il contatore dell'utilizzo dell'attività viene aumentato di 1. Se il programma non viene caricato, il programma viene prima caricato e il contatore dell'utilizzo dell'attività viene impostato su 1. Ottiene l'indirizzo della libreria di caricamento dalla tabella PPT.

    FCT

    FCT è noto come File Control Table.

    • Contiene nomi di file, tipo di file, lunghezza del record, ecc.

    • Tutti i file utilizzati in un programma CICS devono essere dichiarati in FCT e vengono aperti e chiusi da CICS stesso.

    Transazione

    Quando un identificatore di transazione TP02 viene immesso sul terminale CICS, per prima cosa verifica se esiste un programma associato a questo identificativo di transazione nella tabella PCT. Se ne trova uno, controlla nella tabella PPT per trovare la posizione del programma per eseguirlo.

    Se il programma è già disponibile in memoria, inizia l'esecuzione di quel particolare programma; in caso contrario, carica il programma nella memoria dalla memoria secondaria e quindi avvia l'esecuzione.

    Ciclo di vita della transazione

    Il ciclo di vita della transazione prevede i seguenti passaggi:

    Passo 1

    L'operatore del terminale avvia la transazione digitando un ID transazione da 1 a 4 caratteri e premendo il tasto INVIO.

    Passo 2

    Il TCP controlla periodicamente tutti i terminali per l'input. Quando viene ricevuto un messaggio, esegue le seguenti operazioni:

    • Indica all'SCP di creare un TIOA.

    • Inserisce il messaggio nel TIOA.

    • Passa il controllo al KCP.

    Passaggio 3

    Il KCP prende il controllo dal TCP e fa quanto segue:

    • Convalida l'ID della transazione e la sicurezza.

    • Indica all'SCP di creare un'area di controllo delle attività.

    • Assegna la priorità all'attività in base alla priorità del terminale (impostata in TCT), alla priorità dell'operatore (impostata in SNT) e alla priorità della transazione (impostata in PCT).

    • Aggiunge l'attività alla coda dei programmi in attesa.

    • Invia i programmi in attesa in ordine di priorità.

    • Passa il controllo al PCP.

    Passaggio 4

    Il PCP prende il controllo dal KCP e fa quanto segue:

    • Individua il programma e lo carica, se necessario.

    • Trasferisce il controllo al programma applicativo.

    Passaggio 5

    Il programma applicativo prende il controllo dal PCP e fa quanto segue:

    • Richiede al TCP di inserire il messaggio nell'area MEMORIA DI LAVORO del programma.

    • Richiede al FCP di recuperare i record dai file.

    Passaggio 6

    L'FCP prende il controllo dal programma applicativo e fa quanto segue:

    • Richiede un'area di lavoro File da SCP.

    • Informa il KCP che questa attività può attendere fino al completamento dell'I / O.

    Passaggio 7

    Il KCP fa quanto segue:

    • Invia l'attività successiva nella coda.

    • Invia nuovamente la vecchia attività quando l'I / O è completo.

    • Trasferisce il controllo al FCP.

    Passaggio 8

    FCP restituisce il controllo al programma applicativo.

    Passaggio 9

    Il programma applicativo esegue le seguenti operazioni:

    • Elabora i dati del file.

    • Richiede a TCP di inviare un messaggio di I / O.

    • Restituisce il controllo al PCP.

    Passaggio 10

    Il PCP restituisce il controllo al KCP richiedendogli di terminare l'attività.

    Passaggio 11

    Il KCP ordina a SCP di liberare tutto lo spazio di archiviazione assegnato all'attività (eccetto TIOA).

    Passaggio 12

    Il TCP fa quanto segue:

    • Invia l'output al terminale.

    • Richiede a SCP di rilasciare il TIOA.

    Le transazioni CICS vengono utilizzate per eseguire più operazioni nella regione CICS. Discuteremo in dettaglio le importanti transazioni CICS fornite da IBM.

    CESN

    CESN è noto come CICS Execute Sign On.

    • CESN viene utilizzato per accedere alla regione CICS.

    • È necessario fornire l'ID utente e la password forniti dall'amministratore CICS per accedere a CICS. Lo screenshot seguente mostra l'aspetto della schermata di accesso:

    CEDA

    CEDA è noto come CICS Execute Definition and Administration. Viene utilizzato dagli amministratori di sistema CICS per definire le voci della tabella CICS e altre attività di amministrazione.

    CEMT

    CEMT è noto come CICS Execute Master Terminal. Viene utilizzato per richiedere e aggiornare lo stato degli ambienti CICS e anche per altre operazioni di sistema.

    • Utilizzando il comando CEMT, possiamo gestire transazioni, attività, file, programmi, ecc.

    • Per ottenere tutte le opzioni possibili, digitare CEMT e premere INVIO. Mostrerà tutte le opzioni.

    • CEMT viene utilizzato fondamentalmente per caricare un nuovo programma in CICS o per caricare una nuova copia del programma in CICS dopo la modifica del programma o del mapset.

    Esempio

    È possibile sovrascrivere lo stato del file visualizzato per modificarlo. L'esempio seguente mostra come chiudere un file:

    CEMT 
      
    ** Press ENTER & Following Screen is displayed **  
    
    STATUS: ENTER ONE OF THE FOLLOWING 
    Inquire 
    Perform 
    Set 
     
    ** Command to close a file **
      
    CEMT SET FILE (file-name) 
    CEMT I FILE (file-name)

    CECI

    CECI è noto come CICS Execute Command Interpreter. Molti comandi CICS possono essere eseguiti utilizzando CECI.

    • CECI viene utilizzato per verificare la sintassi del comando. Esegue il comando, solo se la sintassi è corretta.

    • Digitare l'opzione CECI nella schermata CICS vuota dopo aver effettuato l'accesso. Fornisce l'elenco delle opzioni disponibili.

    Esempio

    L'esempio seguente mostra come inviare i dati di output mappati al terminale. Discuteremo di MAPS nei prossimi moduli.

    CECI SEND MAP (map-name) MAPSET (mapset-name) ERASE

    CEDF

    CEDF è noto come CICS Execute Debug Facility. Viene utilizzato per eseguire il debug del programma passo dopo passo, il che aiuta a trovare gli errori.

    Digitare CEDF e premere Invio nella regione CICS. Il terminale è in modalità EDF verrà visualizzato il messaggio. Ora digita l'ID della transazione e premi il tasto Invio. Dopo l'avvio, con ogni tasto Invio, viene eseguita una riga. Prima di eseguire qualsiasi comando CICS, mostra la schermata in cui è possibile modificare i valori prima di procedere ulteriormente.

    CMAC

    CMAC è noto come messaggi CICS per codici anomali. Viene utilizzato per trovare la spiegazione e le ragioni dei codici anomali CICS.

    Esempio

    L'esempio seguente mostra come controllare i dettagli per un codice Abend -

    CMAC abend-code

    CESF

    CESF è noto come CICS Execute Sign Off. Viene utilizzato per disconnettersi dalla regione CICS.

    Esempio

    L'esempio seguente mostra come disconnettersi dalla regione CICS:

    CESF LOGOFF

    CEBR

    CEBR è noto come CICS Execute Temporary storage Browse. Viene utilizzato per visualizzare il contenuto di una coda di archiviazione temporanea o TSQ.

    CEBR viene utilizzato durante il debug per verificare se gli elementi della coda vengono scritti e recuperati correttamente. Discuteremo di più su TSQ nei prossimi moduli.

    Esempio

    L'esempio seguente mostra come richiamare il comando CEBR:

    CEBR queue-id

    Concetti CICS

    Ciascun comando può essere ottenuto eseguendo una serie di macro CICS. Discuteremo alcune caratteristiche di base che ci aiuteranno a comprendere meglio i concetti -

    Multitasking

    Questa caratteristica del sistema operativo consente di eseguire più di un'attività contemporaneamente. L'attività potrebbe condividere lo stesso programma o utilizzare programmi diversi. Il CICS pianifica l'attività nella propria regione.

    Multi-threading

    Questa caratteristica del sistema operativo consente di eseguire più attività contemporaneamente condividendo lo stesso programma. Affinché il multi-threading sia possibile, un programma applicativo dovrebbe essere un filere-entrant program sotto il sistema operativo o un file quasi-reentrant sotto il CICS.

    Rientro

    Un programma rientrante è quello che non si modifica e può rientrare in se stesso e continuare l'elaborazione dopo un'interruzione da parte del sistema operativo.

    Quasi rientranza

    Un programma quasi rientrante è un programma rientrante in ambiente CICS. CICS garantisce il rientro acquisendo un'area di archiviazione univoca per ogni attività. Tra i comandi CICS, CICS ha il diritto esclusivo di utilizzare le risorse della CPU e può eseguire altri comandi CICS di altre attività.

    Ci sono momenti in cui molti utenti utilizzano contemporaneamente lo stesso programma; questo è ciò che chiamiamomulti-threading. Ad esempio, supponiamo che 50 utenti stiano utilizzando un programma A. Qui il CICS fornirà 50 memoria di lavoro per quel programma ma una Divisione Procedure. E questa tecnica è nota comequasi-reentrancy.

    I programmi CICS sono scritti in linguaggio COBOL nei mainframe. Discuteremo della scrittura di un semplice programma COBOL-CICS, della sua compilazione e quindi della sua esecuzione.

    Programma CICS

    Scriveremo un semplice programma COBOL-CICS che visualizza un messaggio nella schermata di output CICS. Questo programma serve a dimostrare i passaggi coinvolti nell'esecuzione di un programma COBOL-CICS. Di seguito sono riportati i passaggi per codificare un semplice programma:

    Passo 1

    Accedi a Mainframe e apri una sessione TSO.

    Passo 2

    Crea un nuovo PDS in cui codificheremo il nostro programma.

    Passaggio 3

    Crea un nuovo membro all'interno del PDS e codifica il seguente programma:

    IDENTIFICATION DIVISION.
    PROGRAM-ID. HELLO.
    DATA DIVISION.
    FILE SECTION.
    WORKING-STORAGE SECTION.
    01 WS-MESSAGE PIC X(40).
    01 WS-LENGTH  PIC S9(4) COMP.
    PROCEDURE DIVISION.
    A000-MAIN-PARA.
       MOVE 'Hello World' TO WS-MESSAGE
       MOVE '+12' TO WS-LENGTH
       EXEC CICS SEND TEXT 
          FROM (WS-MESSAGE)
          LENGHT(WS-LENGTH)  
       END-EXEC
       EXEC CICS RETURN
       END-EXEC.

    Passaggio 4

    Dopo aver codificato il programma, dobbiamo compilarlo. Possiamo compilare il programma utilizzando il seguente JCL -

    //SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C  
    //CICSCOB  EXEC CICSCOB,                                                
    //COPYLIB = ABC.XYZ.COPYLIB,                            
    //LOADLIB = ABC.XYZ.LOADLIB 
    //LIB        JCLLIB ORDER = CICSXXX.CICS.XXXPROC                
    //CPLSTP     EXEC DFHEITVL                                
    //TRN.SYSIN  DD DSN = ABC.XYZ.PDS(HELLO),DISP = SHR     
    //LKED.SYSIN DD *                                        
       NAME HELLO(R)                                          
    //

    Passaggio 5

    Apri una sessione CICS.

    Passaggio 6

    Ora installeremo il programma utilizzando il seguente comando:

    CEMT SET PROG(HELLO) NEW.

    Passaggio 7

    Eseguire il programma utilizzando l'ID di transazione associato. L'ID transazione è fornito dall'amministratore. Mostrerà il seguente output:

    Compilazione del programma

    Il seguente diagramma di flusso mostra i passaggi utilizzati nella compilazione di un programma COBOL-CICS:

    Traduttore

    La funzione di un traduttore è controllare gli errori di sintassi nei comandi CICS. Li traduce in istruzioni COBOL equivalenti.

    Compilatore

    La funzione di un compilatore è espandere i quaderni COBOL. Compila il codice dopo aver controllato il codice sorgente per errori di sintassi.

    Linkage Editor

    La funzione di un Linkage Editor è quella di collegare diversi moduli oggetto per creare un singolo modulo di caricamento.

    BMS è noto come supporto di mappatura di base. Un'applicazione è costituita da schermate formattate che fungono da ponte tra il terminale ei programmi CICS. Affinché la comunicazione avvenga tra il terminale ei programmi CICS, utilizziamo i servizi di input / output del terminale CICS. Usiamo BMS per creare progetti di schermate con posizioni e attributi appropriati. Di seguito sono riportate le funzioni di BMS:

    • BMS funge da interfaccia tra il terminale e i programmi CICS.

    • Il design e il formato dello schermo sono separati dalla logica dell'applicazione.

    • BMS rende l'hardware dell'applicazione indipendente.

    Schermo formattato

    La schermata mostrata di seguito è una schermata di menu e può essere progettata utilizzando BMS. I suoi punti chiave sono i seguenti:

    • Lo schermo potrebbe avere un titolo, una data e qualsiasi altra informazione da visualizzare.

    • Le opzioni 1, 2 e 3 sono i campi senza nome che sono i titoli dello schermo.

    • Nel campo Selezione, dobbiamo fornire l'input. Questo input viene quindi inviato al programma CICS per un'ulteriore elaborazione.

    • Nella parte inferiore dello schermo vengono visualizzati i tasti Azione.

    • Tutti i campi e lo schermo stesso sono definiti con macro BMS. Quando l'intera mappa è definita, possiamo usare JCL per assemblarla.

    Termini di base BMS

    Di seguito sono riportati i termini di base che utilizzeremo nei prossimi moduli:

    Carta geografica

    La mappa è un formato a schermata singola che può essere progettato utilizzando le macro BMS. Può avere nomi contenenti da 1 a 7 caratteri.

    Mapset

    Mapset è una raccolta di mappe collegate tra loro per formare un modulo di caricamento. Dovrebbe avere una voce PPT. Può avere nomi da 1 a 7 caratteri.

    Macro BMS

    BMS map è un programma scritto in linguaggio Assembly per gestire le schermate. Le tre macro utilizzate per definire la schermata sono DFHMSD, DFHMDI e DFHMDF.

    DFHMSD

    La macro DFHMSD genera la definizione del Mapset. È un identificatore di macro che mostra che stiamo iniziando un mapset. Il nome del mapset è il nome del modulo di caricamento e deve essere presente una voce nella tabella PPT. La tabella seguente mostra l'elenco dei parametri che possono essere utilizzati in DFHMSD -

    Suor n Parametro e descrizione
    1

    TYPE

    TYPE viene utilizzato per definire il tipo di mappa. Se TYPE =
    MAP - viene creata la mappa fisica
    DSECT - viene creata la mappa simbolica
    && SYSPARM - fisico e simbolico, vengono creati entrambi
    FINAL - Per indicare la fine della codifica di un mapset.

    2

    MODE

    MODE viene utilizzato per indicare le operazioni di input / output. IF MODE =
    IN - Solo per una mappa di input
    OUT - Solo per una mappa di output
    INOUT Per entrambe le mappe di input e output

    3

    LANG

    LANG = ASM / COBOL / PL1
    Decide la lingua della struttura DSECT, da copiare nel programma applicativo.

    4

    STORAGE

    Se STORAGE =
    AUTO - Per acquisire un'area di mappa simbolica separata per ogni mapset
    BASE - Per avere la stessa base di archiviazione per le mappe simboliche di più di un mapset

    5

    CTRL

    CRTL viene utilizzato per definire le richieste di controllo del dispositivo. Se CTRL =
    FREEKB - Per sbloccare la tastiera
    FRSET - Per resettare MDT allo stato zero
    ALARM - Per impostare un allarme all'ora di visualizzazione dello schermo
    PRINT - Per indicare il mapset da inviare alla stampante.

    6

    TERM

    TERM = il tipo garantisce l'indipendenza dal dispositivo, richiesto se si utilizza un terminale diverso dal 3270.

    7

    TIOAPFX

    TIOAPFX = YES / NO
    YES - Per riservare lo spazio del prefisso (12 byte) ai comandi BMS per accedere correttamente a TIOA. Richiesto per il livello di comando CICS.

    Esempio

    L'esempio seguente mostra come codificare una definizione di mapset:

    MPST01  DFHMSD TYPE = &SYSPARM, X
       CTRL = (FREEKB,FRSET), X
       LANG = COBOL, X 
       STORAGE = AUTO, X
       TIOAPFX = YES, X
       MODE = INOUT, X
       TERM = 3270
       DFHMSD TYPE = FINAL 
    END

    DFHMDI

    La macro DFHMDI genera definizioni di mappe. Mostra che stiamo iniziando una nuova mappa. Mapname è seguito dalla macro DFHMDI. Mapname viene utilizzato per inviare o ricevere mappe. La tabella seguente mostra i parametri che utilizziamo all'interno di una macro DFHMDI -

    Suor n Parametro e descrizione
    1

    SIZE

    SIZE = (Riga, Colonna)
    Questo parametro fornisce la dimensione della mappa. BMS ci consente di costruire uno schermo utilizzando diverse mappe e questo parametro diventa importante quando utilizziamo più di una mappa in un singolo mapset.

    2

    LINE

    Indica il numero della linea di partenza della mappa.

    3

    COLUMN

    Indica il numero della colonna iniziale della mappa.

    4

    JUSTIFY

    Viene utilizzato per specificare l'intera mappa o i campi della mappa da giustificare a sinistra oa destra.

    5

    CTRL

    CRTL viene utilizzato per definire le richieste di controllo del dispositivo. Se CTRL =
    FREEKB - Per sbloccare la tastiera
    FRSET - Per riportare MDT a zero
    ALLARME - Per impostare un allarme all'ora di visualizzazione dello schermo
    PRINT - Per indicare la mappa da inviare alla stampante

    6

    TIOAPFX

    TIOAPFX = SÌ / NO

    SÌ - Per riservare lo spazio del prefisso (12 byte) ai comandi BMS per accedere correttamente a TIOA. Richiesto per il livello di comando CICS.

    Esempio

    L'esempio seguente mostra come codificare una definizione di mappa:

    MAPSTD DFHMDI SIZE = (20,80), X
       LINE = 01, X
       COLUMN = 01, X
       CTRL = (FREEKB,FRSET)

    DFHMDF

    La macro DFHMDF viene utilizzata per definire i nomi dei campi. Viene menzionato il nome del campo rispetto al quale è codificata la macro DFHMDF. Questo nome di campo viene utilizzato all'interno del programma. Non scriviamo il nome del campo contro il campo costante che non vogliamo utilizzare all'interno del programma. La tabella seguente mostra l'elenco dei parametri che possono essere utilizzati all'interno di una macro DFHMDF -

    Suor n Parametro e descrizione
    1

    POS

    Questa è la posizione sullo schermo in cui dovrebbe apparire il campo. Un campo inizia con il suo byte di attributo, quindi se si codifica POS = (1,1), il byte di attributo per quel campo si trova sulla riga 1 nella colonna 1 e i dati effettivi iniziano nella colonna 2.

    2

    LENGTH

    Questa è la lunghezza del campo, senza contare il byte dell'attributo.

    3

    INITIAL

    Questi sono i dati dei caratteri per un campo di output. Lo usiamo per specificare etichette e titoli per lo schermo e mantenerli indipendenti dal programma. Per il primo campo nella schermata del menu, ad esempio, codificheremo: INITIAL = 'MENU'.

    4

    JUSTIFY

    Viene utilizzato per specificare l'intera mappa o i campi della mappa da giustificare a sinistra oa destra.

    5

    ATTRB

    ATTRB = (ASKIP / PROT / UNPROT, NUM, BRT / NORM / DRK, IC, FSET) Descrive gli attributi del campo.

    ASKIP - Salto automatico. I dati non possono essere inseriti in questo campo. Il cursore salta al campo successivo.

    PROT - Campo protetto. I dati non possono essere inseriti in questo campo. Se i dati vengono inseriti, causerà lo stato di inibizione dell'ingresso.

    UNPROT: campo non protetto. I dati possono essere inseriti e questo viene utilizzato per tutti i campi di input.

    NUM - Campo numerico. Sono consentiti solo numeri (da 0 a 9) e caratteri speciali ("." E "-").

    BRT - Visualizzazione luminosa di un campo (evidenziazione).

    NORM - Visualizzazione normale.

    DRK - Display scuro.

    IC - Inserisci cursore. Il cursore verrà posizionato in questo campo. Nel caso in cui IC venga specificato più di una volta, il cursore viene posizionato nell'ultimo campo.

    FSET - Set da campo. MDT è impostato in modo che i dati del campo debbano essere inviati dal terminale al computer host indipendentemente dal fatto che il campo sia effettivamente modificato dall'utente.

    6

    PICIN

    PICIN si applica al campo dati utilizzato come input come PICIN = 9 (8).

    7

    PICOUT

    PICIN si applica al campo dati che viene utilizzato come output come PICOUT = Z (8).

    Esempio

    L'esempio seguente mostra come codificare una definizione di campo:

    DFHMDF POS = (01,01), X
       LENGTH = 7, X
       INITIAL = ‘SCREEN1’, X
          ATTRB = (PROT,NORM)
          STDID DFHMDF POS = (01,70), X
          LENGTH = 08, X
          ATTRB = (PROT,NORM)

    BMS riceve i dati inseriti dall'utente e poi li formatta in un'area simbolica della mappa. Il programma applicativo ha accesso solo ai dati presenti nella mappa simbolica. Il programma applicativo elabora i dati e l'output viene inviato alla mappa simbolica. BMS unirà l'output dei dati simbolici con la mappa fisica.

    Mappa fisica

    Mappa fisica è un modulo di caricamento nella libreria di caricamento che contiene informazioni su come visualizzare la mappa.

    • Contiene i dettagli sugli attributi di tutti i campi nella mappa e le loro posizioni.

    • Contiene il formato di visualizzazione della mappa per un dato terminale.

    • È codificato utilizzando le macro BMS. Viene assemblato separatamente e viene modificato tramite collegamento nella libreria CICS.

    Mappa simbolica

    Una mappa simbolica è un quaderno della biblioteca. Il Copy book viene utilizzato dal programma applicativo CICS per inviare e ricevere dati dal terminale.

    • Contiene tutti i dati variabili che vengono copiati nella sezione WORKINGSTORAGE del programma.

    • Ha tutti i campi denominati. Il programmatore dell'applicazione utilizza questi campi per leggere e scrivere dati nella mappa.

    Skipper e Stopper Field

    Per un campo denominato non protetto, in una mappa, se è stata specificata una lunghezza di 10, ciò significa che il campo del nome può assumere valori la cui lunghezza non può superare 10. Ma quando si visualizza questa mappa utilizzando CICS e si inizia a immettere i valori per questo campo su sullo schermo, possiamo inserire più di 10 caratteri, cioè fino alla fine dello schermo e possiamo entrare anche nella riga successiva. Per evitare ciò, utilizziamo il campo Skipper o il campo stopper. Un campo Skipper sarebbe generalmente un campo Senza nome di lunghezza 1, specificato dopo un campo denominato.

    Skipper Field

    Se posizioniamo un campo skipper dopo il campo non protetto denominato, durante l'inserimento del valore, una volta raggiunta la lunghezza specificata, il cursore si posizionerà automaticamente sul campo successivo non protetto. L'esempio seguente mostra come aggiungere un campo skipper:

    NUMBER  DFHMDF POS = (01,01), X
       LENGTH = 5, X
       ATTRB = (UNPROT,IC)
          DFHMDF POS = (01,07), X
          LENGTH = 1, X
          ATTRB = (ASKIP)

    Stopper Field

    Se posizioniamo un campo stopper dopo il campo non protetto denominato, durante l'inserimento del valore, una volta raggiunta la lunghezza specificata, il cursore interromperà il suo posizionamento. L'esempio seguente mostra come aggiungere un campo stopper:

    NUMBER  DFHMDF POS = (01,01), X
       LENGTH = 5, X
    	ATTRB = (UNPROT,IC)
    	   DFHMDF POS = (01,07), X
          LENGTH = 1, X
          ATTRB = (PROT)

    Attributo Byte

    Il byte di attributo di qualsiasi campo memorizza le informazioni sulle proprietà fisiche del campo. Il diagramma e la tabella seguenti spiegano il significato di ogni bit.

    Posizione bit Descrizione Impostazioni bit
    0 e 1   Determinato dal contenuto dei bit da 2 a 7
    2 e 3 Protezione e spostamento 00 - Alfanumerico non protetto
    01 - Numerico non protetto
    10 - Stop protetto
    11 - Salto protetto
    4 e 5 Intensità 00 - Normale
    01 - Normale
    10 - Luminoso
    11 - Nessuna visualizzazione (Scuro)
    6   Deve essere zero sempre
    7 Tag dati modificati 0 - Il campo non è stato modificato
    1 - Il campo è stato modificato

    Tag dati modificati

    Il tag di dati modificati (MDT) è l'ultimo bit del byte dell'attributo.

    • MDT è una bandiera che contiene un singolo bit. Specifica se il valore deve essere trasferito o meno al sistema.

    • Il suo valore predefinito è 1, quando il valore del campo viene modificato.

    • Se MDT è 0, i dati non possono essere trasferiti; e se MDT è 1, i dati possono essere trasferiti.

    Invia mappa

    Il comando send map scrive l'output formattato sul terminale. Serve per inviare la mappa al terminale dal programma applicativo. Il seguente segmento di codice mostra come inviare una mappa al terminale:

    EXEC CICS SEND 
       MAP('map-name')
       MAPSET('mapset-name')
       [FROM(data-area)]
       [LENGTH(data_value)]
       [DATAONLY]
       [MAPONLY]
       [CURSOR]
       [ERASE/ERASEAUP]
       [FREEKB] 
       [FRSET]
    END-EXEC

    La tabella seguente elenca i parametri utilizzati in un comando send map insieme al loro significato.

    Suor n Parametro e descrizione
    1

    Map-name

    È il nome della mappa che vogliamo inviare. È obbligatorio.

    2

    Mapset-name

    È il nome della serie di mappe che contiene il nome della mappa. Il nome del mapset è necessario a meno che non sia lo stesso del nome della mappa.

    3

    FROM

    Viene utilizzato se abbiamo deciso di utilizzare un nome DSECT diverso, dobbiamo utilizzare l'opzione FROM (dsect-name) insieme al comando SEND MAP.

    4

    MAPONLY

    Significa che nessun dato del tuo programma deve essere unito alla mappa e vengono trasmesse solo le informazioni nella mappa.

    5

    DATAONLY

    È l'opposto logico di MAPONLY. Lo usiamo per modificare i dati variabili in un display che è già stato creato. Sullo schermo vengono inviati solo i dati del programma. Le costanti nella mappa non vengono inviate.

    6

    ERASE

    Fa sì che l'intero schermo venga cancellato prima che venga mostrato ciò che stiamo inviando.

    7

    ERASEUP

    Causa la cancellazione solo dei campi non protetti.

    8

    FRSET

    Flag Reset disattiva il tag di dati modificati nel byte dell'attributo per tutti i campi sullo schermo prima che ciò che stai inviando venga inserito lì.

    9

    CURSOR

    Può essere utilizzato per posizionare il cursore sullo schermo del terminale. Il cursore può essere impostato spostando -1 nella parte L del campo e quindi inviando la mappa.

    10

    ALARM

    Fa suonare l'allarme acustico.

    11

    FREEKB.

    La tastiera è sbloccata se specifichiamo FREEKB nella mappa o nel comando INVIA.

    12

    PRINT

    Consente di stampare su una stampante l'output di un comando SEND.

    13

    FORMFEED

    Fa sì che la stampante ripristini la carta all'inizio della pagina successiva prima che l'output venga stampato.

    Ricevi la mappa

    Quando vogliamo ricevere input da un terminale, usiamo il comando RECEIVE MAP. I parametri MAP e MAPSET hanno esattamente lo stesso significato del comando SEND MAP. Il seguente segmento di codice mostra come ricevere una mappa:

    EXEC CICS RECEIVE 
       MAP('map-name')
       MAPSET('mapset-name')
       [INTO(data-area)]
       [FROM(data-area)]
       [LENGTH(data_value)]
    END-EXEC

    Esecuzione di Mapset

    I seguenti passaggi sono necessari per sviluppare ed eseguire un mapset:

    • Step 1 - Apri una sessione TSO.

    • Step 2 - Crea un nuovo PDS.

    • Step 3 - Codificare un mapset in un nuovo membro in base al requisito.

    • Step 4 - Assemblare il mapset utilizzando il JCL fornito dall'amministratore CICS.

    • Step 5 - Apri una sessione CICS.

    • Step 6 - Installa il programma utilizzando il comando -

      CEMT SET PROG (mapset-name) NUOVO

    • Step 7 - Digita il seguente comando per inviare la mappa al terminale -

      CECI SEND MAP (nome-mappa) MAPSET (nome-mapset) CANCELLA FREEKB

    Qualsiasi programma applicativo richiederebbe un'interfaccia per interagire con CICS. EIB (Execute Interface Block) funge da interfaccia per consentire ai programmi applicativi di comunicare con CICS. La BEI contiene le informazioni richieste durante l'esecuzione di un programma.

    Verbi COBOL limitati

    Durante la codifica di un programma CICS, non è possibile utilizzare i comandi che restituiscono il controllo direttamente a MVS. Se codifichiamo questi verbi COBOL, non darà alcun errore di compilazione, ma potremmo ottenere risultati imprevedibili. Di seguito sono riportati i verbi COBOL che non devono essere utilizzati in un programma CICS:

    • Istruzioni di I / O su file come Apri, Leggi, Scrivi, Riscrivi, Chiudi, Elimina e Avvia. Tutti i file I / O in CICS sono gestiti dal modulo di controllo dei file e hanno il proprio set di istruzioni come READ, WRITE, REWRITE e DELETE di cui parleremo nei prossimi moduli.

    • La sezione file e la divisione ambiente non sono richieste.

    • Le istruzioni COBOL che richiamano le funzioni del sistema operativo come Accept, Date / Time non possono essere utilizzate.

    • Non utilizzare DISPLAY, MERGE, STOP RUN e GO BACK.

    Esegui il blocco dell'interfaccia

    Execute Interface Block (EIB) è un blocco di controllo che viene caricato automaticamente da CICS per ogni programma.

    • La BEI è unica per un'attività ed esiste per la durata dell'attività. Contiene una serie di informazioni relative al sistema corrispondenti all'attività.

    • Contiene informazioni sull'identificativo della transazione, l'ora, la data, ecc., Che vengono utilizzate da CICS durante l'esecuzione di un programma applicativo.

    • Ogni programma che viene eseguito come parte dell'attività ha accesso alla stessa BEI.

    • I dati in EIB in runtime possono essere visualizzati eseguendo il programma in modalità CEDF.

    Campi BEI

    La tabella seguente fornisce un elenco dei campi presenti in BEI:

    Campo BEI Clausola PIC Descrizione
    EIBAID X (1) Tasto di aiuto premuto
    EIBCALEN S9 (4) COMP Contiene la lunghezza di DFHCOMMAREA
    EIBDATE S9 (7) COMP-3 Contiene la data di sistema corrente
    EIBRCODE X (6) Contiene il codice di ritorno dell'ultima transazione
    EIBTASKN S9 (7) COMP-3 Contiene il numero dell'attività
    EIBTIME S9 (7) COMP-3 Contiene l'ora di sistema corrente
    EIBTRMID X (4) Identificatore del terminale
    EIBTRNID X (4) Identificatore di transazione

    Classificazione dei programmi CICS

    I programmi CICS sono classificati nelle seguenti tre categorie che discuteremo una per una:

    • Programmi non conversazionali
    • Programmi di conversazione
    • Programmi pseudo-conversazionali - Ne parleremo nel prossimo modulo

    Programmi non conversazionali

    Durante l'esecuzione di programmi non conversazionali, non è richiesto alcun intervento umano. All'avvio del programma vengono forniti tutti gli input necessari.

    • Sono simili ai programmi batch che vengono eseguiti in modalità batch. Quindi, in CICS, vengono sviluppati raramente.

    • Possiamo dire che vengono utilizzati solo per visualizzare una sequenza di schermate a intervalli di tempo regolari.

    Esempio

    Il seguente esempio mostra un programma non conversazionale che visualizzerà semplicemente "HELLO WORLD" sul terminale CICS come output -

    IDENTIFICATION DIVISION.                                
    PROGRAM-ID. HELLO.                                      
    DATA DIVISION.                                          
    WORKING-STORAGE SECTION.                                
    01 WS-MESSAGE          PIC X(30).                       
    PROCEDURE DIVISION.                                     
    ********************************************************
    * SENDING DATA TO SCREEN                               * 
    ********************************************************
       MOVE 'HELLO WORLD' TO WS-MESSAGE                
       EXEC CICS SEND TEXT                             
          FROM (WS-MESSAGE)                          
       END-EXEC                                        
    ********************************************************
    * TASK TERMINATES WITHOUT ANY INTERACTION FROM THE USER* 
    ********************************************************
       EXEC CICS RETURN                                
    END-EXEC.

    Programma di conversazione

    L'invio di un messaggio al terminale e la ricezione di una risposta dall'utente viene chiamato a conversation. Un'applicazione in linea realizza una conversazione tra l'utente e il programma applicativo tramite una coppia di comandi SEND e RECEIVE. I punti chiave di un programma di conversazione sono i seguenti:

    • Il sistema invia un messaggio allo schermo e attende la risposta dell'utente.

    • Il tempo impiegato dall'utente per rispondere è noto come Think Time. Questo tempo è considerevolmente alto, il che è uno dei principali svantaggi dei programmi di conversazione.

    • L'utente fornisce l'input necessario e preme un tasto AID.

    • L'applicazione elabora l'input dell'utente e invia l'output.

    • Il programma viene caricato nella memoria principale all'inizio e viene conservato fino al termine dell'attività.

    Esempio

    L'esempio seguente mostra un programma di conversione che prende l'input dall'utente e quindi visualizza semplicemente lo stesso input sul terminale CICS come output -

    IDENTIFICATION DIVISION.                               
    PROGRAM-ID. HELLO.                                     
    DATA DIVISION.                                         
    WORKING-STORAGE SECTION.                               
    01 WS-MESSAGE          PIC X(30) VALUE SPACES.         
    PROCEDURE DIVISION.                                    
       MOVE 'ENTER MESSAGE' TO WS-MESSAGE           
    ********************************************************
    * SENDING DATA FROM PROGRAM TO SCREEN                  * 
    ********************************************************
       EXEC CICS SEND TEXT                            
          FROM (WS-MESSAGE)                         
       END-EXEC                                       
    ********************************************************
    * GETTING INPUT FROM USER                              * 
    ********************************************************
       EXEC CICS RECEIVE                              
          INTO(WS-MESSAGE)                          
       END-EXEC                                       
       EXEC CICS SEND TEXT                            
          FROM (WS-MESSAGE)                         
       END-EXEC                                       
    ********************************************************
    * COMMAND TO TERMINATE THE TRANSACTION                 * 
    ********************************************************
       EXEC CICS RETURN                               
    END-EXEC.

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 finché 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 trasferire 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 immette 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, ritorno con 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.

Come abbiamo discusso nei moduli precedenti, le chiavi AID sono note come chiavi di identificazione dell'attenzione. CICS può rilevare solo le chiavi AID. Dopo aver digitato tutto l'input, solo quando l'utente preme uno dei tasti AID, il CICS prende il controllo. I tasti AID includono ENTER, da PF1 a PF24, da PA1 a PA3 e CLEAR.

Convalida delle chiavi AID

Il tasto premuto dall'utente viene verificato utilizzando EIBAID.

  • EIBAID è lungo un byte e contiene il valore dell'identificatore di attenzione effettivo utilizzato nel flusso di input 3270.

  • CICS ci fornisce una serie di variabili precodificate che possono essere utilizzate nel programma applicativo scrivendo la seguente dichiarazione:

    COPIA DFHAID

DFHAID

DFHAID è un quaderno utilizzato nei programmi applicativi per includere un set di variabili precodificato CICS. Il seguente contenuto è presente nel quaderno DFHAID:

01    DFHAID.                             
   02  DFHNULL   PIC  X  VALUE IS ' '.     
   02  DFHENTER  PIC  X  VALUE IS ''''.    
   02  DFHCLEAR  PIC  X  VALUE IS '_'.     
   02  DFHCLRP   PIC  X  VALUE IS '¦'.     
   02  DFHPEN    PIC  X  VALUE IS '='.     
   02  DFHOPID   PIC  X  VALUE IS 'W'.     
   02  DFHMSRE   PIC  X  VALUE IS 'X'.     
   02  DFHSTRF   PIC  X  VALUE IS 'h'.     
   02  DFHTRIG   PIC  X  VALUE IS '"'.     
   02  DFHPA1    PIC  X  VALUE IS '%'.     
   02  DFHPA2    PIC  X  VALUE IS '>'.     
   02  DFHPA3    PIC  X  VALUE IS ','.     
   02  DFHPF1    PIC  X  VALUE IS '1'.     
   02  DFHPF2    PIC  X  VALUE IS '2'.     
   02  DFHPF3    PIC  X  VALUE IS '3'.     
   02  DFHPF4    PIC  X  VALUE IS '4'.     
   02  DFHPF5    PIC  X  VALUE IS '5'.     
   02  DFHPF6    PIC  X  VALUE IS '6'.     
   02  DFHPF7    PIC  X  VALUE IS '7'.     
   02  DFHPF8    PIC  X  VALUE IS '8'.     
   02  DFHPF9    PIC  X  VALUE IS '9'.     
   02  DFHPF10   PIC  X  VALUE IS ':'.     
   02  DFHPF11   PIC  X  VALUE IS '#'.     
   02  DFHPF12   PIC  X  VALUE IS '@'.     
   02  DFHPF13   PIC  X  VALUE IS 'A'.     
   02  DFHPF14   PIC  X  VALUE IS 'B'.     
   02  DFHPF15   PIC  X  VALUE IS 'C'.   
   02  DFHPF16   PIC  X  VALUE IS 'D'.   
   02  DFHPF17   PIC  X  VALUE IS 'E'.   
   02  DFHPF18   PIC  X  VALUE IS 'F'.   
   02  DFHPF19   PIC  X  VALUE IS 'G'.   
   02  DFHPF20   PIC  X  VALUE IS 'H'.   
   02  DFHPF21   PIC  X  VALUE IS 'I'.   
   02  DFHPF22   PIC  X  VALUE IS '¢'.   
   02  DFHPF23   PIC  X  VALUE IS '.'.   
   02  DFHPF24   PIC  X  VALUE IS '<'.

Esempio

Il seguente esempio mostra come utilizzare il quaderno DFHAID in un programma applicativo:

IDENTIFICATION DIVISION.                                         
PROGRAM-ID. HELLO.                                               
DATA DIVISION.   
WORKING-STORAGE SECTION.
COPY DFHAID.
PROCEDURE DIVISION.
A000-AIDKEY-PARA.
   EVALUATE EIBAID
      WHEN DFHAID
         PERFORM A000-PROCES-PARA
      WHEN DFHPF1
         PERFORM A001-HELP-PARA
      WHEN DFHPF3
         PERFORM A001-EXIT-PARA
    END-EVALUATE.

Posizionamento del cursore

Esistono due modi per sovrascrivere la posizione specificata nella definizione della mappa.

  • Un modo è specificare la posizione dello schermo rispetto al numero di riga e di colonna nell'opzione CURSORE sul comando di invio mappa.

  • Un altro modo è spostare -1 alla variabile della mappa simbolica con suffisso L. Quindi, inviare la mappa con un'opzione CURSORE in INVIA MAPPA.

Esempio

L'esempio seguente mostra come sovrascrivere la posizione del cursore per il campo NAME -

MOVE -1 TO NAMEL
   EXEC CICS SEND 
      MAP ('map-name')
      MAPSET ('name-field')
      ERASE
      FREEKB
      CURSOR
   END-EXEC.

Modifica dinamica degli attributi

Durante l'invio di una mappa, se vogliamo avere attributi diversi per un campo diverso da quello specificato nella mappa, possiamo sovrascriverlo impostando il campo nel programma. Di seguito è riportata la spiegazione per sovrascrivere gli attributi di un campo:

  • Per sovrascrivere gli attributi di un campo, è necessario includere DFHATTR nel programma applicativo. È fornito da CICS.

  • L'attributo richiesto può essere scelto dall'elenco e spostato nella variabile del campo simbolico con suffisso "A".

DFHATTR contiene i seguenti contenuti:

01  CICS-ATTRIBUTES.
   05  ATTR-UXN            PIC X(01) VALUE SPACE.
   05  ATTR-UXMN           PIC X(01) VALUE 'A'.
   05  ATTR-UXNL           PIC X(01) VALUE 'D'.
   05  ATTR-UXMNL          PIC X(01) VALUE 'E'.
   05  ATTR-UXBL           PIC X(01) VALUE 'H'.
   05  ATTR-UXMBL          PIC X(01) VALUE 'I'.
   05  ATTR-UXD            PIC X(01) VALUE '<'.
   05  ATTR-UXMD           PIC X(01) VALUE '('.
   05  ATTR-U9N            PIC X(01) VALUE '&'.
   05  ATTR-U9MN           PIC X(01) VALUE 'J'.
   05  ATTR-U9NL           PIC X(01) VALUE 'M'.
   05  ATTR-U9MNL          PIC X(01) VALUE 'N'.
   05  ATTR-U9BL           PIC X(01) VALUE 'Q'.
   05  ATTR-U9MBL          PIC X(01) VALUE 'R'.
   05  ATTR-U9D            PIC X(01) VALUE '*'.
   05  ATTR-U9MD           PIC X(01) VALUE ')'.
   05  ATTR-PXN            PIC X(01) VALUE '-'.
   05  ATTR-PXMN           PIC X(01) VALUE '/'.
   05  ATTR-PXNL           PIC X(01) VALUE 'U'.
   05  ATTR-PXMNL          PIC X(01) VALUE 'V'.
   05  ATTR-PXBL           PIC X(01) VALUE 'Y'.
   05  ATTR-PXMBL          PIC X(01) VALUE 'Z'.
   05  ATTR-PXD            PIC X(01) VALUE '%'.
   05  ATTR-PSN            PIC X(01) VALUE '0'.
   05  ATTR-PSMN           PIC X(01) VALUE '1'.
   05  ATTR-PSNL           PIC X(01) VALUE '4'.
   05  ATTR-PSMNL          PIC X(01) VALUE '5'.
   05  ATTR-PSBL           PIC X(01) VALUE '8'.
   05  ATTR-PSMBL          PIC X(01) VALUE '9'.
   05  ATTR-PSD            PIC X(01) VALUE '@'.
   05  ATTR-PSMD           PIC X(01) VALUE "'".

CICS ci consente di accedere ai dati dei file in molti modi. La maggior parte degli accessi ai file sono casuali nel sistema in linea poiché le transazioni da elaborare non sono raggruppate e ordinate in alcun tipo di ordine. Pertanto CICS supporta i normali metodi di accesso diretto: VSAM e DAM (Direct Access Method). Ci consente inoltre di accedere ai dati utilizzando i gestori di database.

Accesso casuale

Di seguito sono riportati i comandi utilizzati per l'elaborazione casuale:

Suor n Comandi e descrizione
1 LEGGERE

Il comando READ legge i dati da un file utilizzando la chiave primaria.

2 SCRIVI

Il comando di scrittura viene utilizzato per aggiungere nuovi record a un file.

3 RISCRIVERE

Il comando REWRITE viene utilizzato per modificare un record che è già presente in un file.

4 ELIMINA

Il comando DELETE viene utilizzato per eliminare un record presente in un file.

Accesso sequenziale

Di seguito sono riportati i comandi utilizzati per l'elaborazione sequenziale:

Suor n Comandi e descrizione
1 STARTBR

STARTBR è noto come avvia navigazione.

2 READNEXT / READPREV

Quando emettiamo un comando STARTBR, non rende disponibili i record.

3 RESETBR

Il comando RESETBR ci consente di ripristinare il nostro punto di partenza nel mezzo di una navigazione.

4 ENDBR

Quando abbiamo finito di leggere un file in sequenza, terminiamo la navigazione utilizzando il comando ENDBR.

Esistono molti tipi di file abendsed errori che si possono affrontare durante l'utilizzo di un'applicazione CICS. Possono verificarsi errori dovuti a problemi sia hardware che software. Discuteremo degli errori e della gestione degli errori in questo modulo.

Errori CICS

Di seguito sono riportati gli errori CICS che possono verificarsi durante l'esecuzione delle applicazioni CICS:

  • Alcuni errori CICS previsti si verificano quando le condizioni non sono normali nel sistema CICS. Ad esempio, se stiamo leggendo un record particolare e il record non viene trovato, viene visualizzato l'errore "Non trovato".Mapfailè un errore simile. Gli errori in questa categoria vengono gestiti dalla logica esplicita nel programma.

  • Gli errori logici si verificano a causa di alcuni motivi come la divisione per zero, il carattere illegale nel campo numerico o l'errore dell'ID della transazione.

  • Gli errori relativi all'hardware o ad altre condizioni del sistema esulano dal controllo di un programma applicativo. Ad esempio, ottenere un errore di input / output durante l'accesso a un file.

Comandi di gestione degli errori

CICS fornisce diversi meccanismi per identificare gli errori e gestirli nei nostri programmi. Di seguito sono riportati i comandi utilizzati per gestire gli errori CICS previsti:

Suor n Comandi di gestione e descrizione
1 Condizione della maniglia

La condizione handle viene utilizzata per trasferire il controllo del programma a un paragrafo o un'etichetta di procedura.

2 Gestire Abend

Se un programma termina in modo anomalo a causa di alcuni motivi come un errore di input-output, può essere gestito utilizzando il comando Handle Abend CICS.

3 Abend

Il comando Abend viene utilizzato per terminare intenzionalmente l'attività.

4 Ignora condizione

Ignora condizione viene utilizzata quando non si desidera intraprendere alcuna azione se si verifica una particolare fine anomala o un errore menzionato all'interno della condizione Ignora.

5 Nohandle

Nohandle può essere specificato per qualsiasi comando CICS.

CICS Program Control Program (PCP) gestisce il flusso dei programmi applicativi. Tutti i programmi applicativi devono avere una voce nella tabella dei programmi di elaborazione. Di seguito sono riportati i comandi utilizzati per i servizi di controllo del programma:

  • XCTL
  • Link
  • Load
  • Release
  • Return

Livelli logici del programma

I programmi applicativi che vengono eseguiti in CICS hanno vari livelli logici. Il primo programma che riceve il controllo direttamente è al livello logico più alto, cioè, Livello 1. Il programma collegato è al livello logico successivo dal programma di collegamento. I programmi XCTL vengono eseguiti allo stesso livello. Sarà chiaro quando passeremo attraverso Link e XCTL, più avanti in questo modulo. L'immagine seguente mostra i livelli logici:

XCTL

La spiegazione fondamentale di XCTL è la seguente:

  • Il comando XCTL viene utilizzato per passare il controllo da un programma a un altro allo stesso livello.

  • Non si aspetta il ritorno del controllo.

  • È simile all'istruzione VAI A.

  • Un programma XCTL può essere pseudo-conversazionale.

Esempio

L'esempio seguente mostra come utilizzare il comando XCTL per passare il controllo a un altro programma:

IDENTIFICATION DIVISION.                                         
PROGRAM-ID. PROG1.  
WORKING-STORAGE SECTION.
01 WS-COMMAREA    PIC X(100).                                             
PROCEDURE DIVISION.

EXEC CICS XCTL
   PROGRAM ('PROG2')
   COMMAREA (WS-COMMAREA)
   LENGTH (100)
END-EXEC.

Questo comando trasferisce il controllo da passare al programma "PROG2" con 100 byte di dati. COMMAREA è un parametro opzionale ed è il nome dell'area contenente i dati da passare o l'area a cui si devono restituire i risultati.

Link

Il comando Link viene utilizzato per trasferire il controllo a un altro programma a livello inferiore. Si aspetta di nuovo il controllo. Un programma collegato non può essere pseudo-conversazionale.

Esempio

L'esempio seguente mostra come utilizzare il comando Link per passare il controllo a un altro programma:

IDENTIFICATION DIVISION.                                         
PROGRAM-ID. PROG1.  
WORKING-STORAGE SECTION.
01 WS-COMMAREA    PIC X(100).                                             
PROCEDURE DIVISION.

EXEC CICS LINK
   PROGRAM ('PROG2')
   COMMAREA (WS-COMMAREA)
   LENGTH (100)
END-EXEC.

Caricare

Il comando Load viene utilizzato per caricare un programma o una tabella. Di seguito è riportata la sintassi del comando Carica:

EXEC CICS LOAD
   PROGRAM ('name')
END-EXEC.

pubblicazione

Il comando di rilascio viene utilizzato per rilasciare un programma o una tabella. Di seguito è riportata la sintassi del comando di rilascio:

EXEC CICS RELEASE
   PROGRAM ('name')
END-EXEC.

Ritorno

Il comando Return viene utilizzato per riportare il controllo al successivo livello logico superiore. Di seguito è riportata la sintassi del comando Return:

EXEC CICS RETURN
   PROGRAM ('name')
   COMMAREA (data-value)
   LENGTH (data-value)
END-EXEC.

Operazioni di controllo a intervalli

Le operazioni di controllo dell'intervallo sono dei seguenti due tipi:

ASKTIME

ASKTIME viene utilizzato per richiedere l'ora e la data correnti o il timestamp. Quindi spostiamo questo valore nella variabile di memoria di lavoro all'interno del programma. Di seguito è riportata la sintassi del comando ASKTIME:

EXEC CICS ASKTIME
   [ABSTIME(WS-TIMESTAMP)]
END-EXEC.

FORMATTIME

FORMATTIME formatta il timestamp nel formato richiesto in base alle opzioni, che possono essere YYDDD, YYMMDD o YYDDMM per la data. DATESEP indica il separatore per DATE così come la variabile TIMESEP per TIME. Di seguito è riportata la sintassi del comando FORMATTIME:

EXEC CICS FORMATTIME
   ABSTIME(WS-TIMESTAMP)
   [YYDDD(WS-DATE)]
   [YYMMDD(WS-DATE)]
   [YYDDMM(WS-DATE)]
   [DATESEP(WS-DATE-SEP)]
   [TIME(WS-TIME)]
   [TIMESEP(WS-TIME-SEP)]
END-EXEC.

Ci sono diversi gratta e vinci disponibili in CICS per il salvataggio dei dati o per il trasferimento dei dati tra transazioni. Ci sono cinque aree di archiviazione fornite da CICS, di cui parleremo in questo modulo.

COMMAREA

COMMAREA si comporta come un blocco appunti che può essere utilizzato per passare i dati da un programma a un altro programma, all'interno della stessa transazione o da transazioni diverse. Deve essere definito nella SEZIONE DI COLLEGAMENTO utilizzando il nome DFHCOMMAREA.

Area di lavoro comune

Qualsiasi transazione nella regione CICS può accedere all'area di lavoro comune e quindi il formato e l'utilizzo di essa devono essere concordati da tutte le transazioni nel sistema che decide di utilizzarla. Esiste un solo CWA nell'intera regione CICS.

Area di lavoro della transazione

L'area di lavoro della transazione viene utilizzata per trasferire i dati tra i programmi applicativi che vengono eseguiti nella stessa transazione. TWA esiste solo per la durata della transazione. La sua dimensione è definita nella tabella di controllo del programma.

Coda di archiviazione temporanea

La coda di archiviazione temporanea (TSQ) è una funzionalità fornita dal programma di controllo dell'archiviazione temporanea (TSP).

  • Un TSQ è una coda di record che possono essere creati, letti ed eliminati da diverse attività o programmi nella stessa regione CICS.

  • Un identificatore di coda viene utilizzato per identificare TSQ.

  • Un record all'interno di un TSQ è identificato dalla posizione relativa nota come numero di articolo.

  • I record in TSQ rimangono accessibili fino a quando l'intero TSQ non viene esplicitamente cancellato.

  • I record in TSQ possono essere letti in sequenza o direttamente.

  • I TSQ possono essere scritti nella memoria principale o nella memoria ausiliaria nel DASD.

WRITEQ TS

Questo comando viene utilizzato per aggiungere elementi a un TSQ esistente. Inoltre, possiamo creare un nuovo TSQ usando questo comando. Di seguito è riportata la sintassi del comando WRITEQ TS:

Sintassi

EXEC CICS WRITEQ TS
   QUEUE ('queue-name')
   FROM (queue-record)
   [LENGTH (queue-record-length)]
   [ITEM (item-number)]
   [REWRITE]
   [MAIN /AUXILIARY]
END-EXEC.

Di seguito sono riportati i dettagli dei parametri utilizzati nel comando WRITEQ TS -

  • La CODA è identificata dal nome menzionato in questo parametro.

  • Le opzioni FROM e LENGTH vengono utilizzate per specificare il record che deve essere scritto nella coda e la sua lunghezza.

  • Se viene specificata l'opzione ITEM, CICS assegna un numero di articolo al record nella coda e imposta l'area dati fornita in tale opzione al numero di articolo. Se il record avvia una nuova coda, il numero di elemento assegnato è 1 e i numeri di elemento successivi seguono in sequenza.

  • L'opzione REWRITE viene utilizzata per aggiornare un record già presente nella coda.

  • L'opzione MAIN / AUXILIARY viene utilizzata per memorizzare i record nella memoria principale o ausiliaria. L'impostazione predefinita è AUSILIARIO.

READQ TS

Questo comando viene utilizzato per leggere la coda di archiviazione temporanea. Di seguito è riportata la sintassi di READQ TS -

Sintassi

EXEC CICS READQ TS
   QUEUE ('queue-name')
   INTO (queue-record)
   [LENGTH (queue-record-length)]
   [ITEM (item-number)]
   [NEXT]
END-EXEC.

DELETEQ TS

Questo comando viene utilizzato per eliminare la coda di archiviazione temporanea. Di seguito è riportata la sintassi di DELETEQ TS -

Sintassi

EXEC CICS DELETEQ TS
   QUEUE ('queue-name')
END-EXEC.

Coda dati transitoria

Transient Data Queue è di natura transitoria in quanto può essere creata ed eliminata rapidamente. Consente solo l'accesso sequenziale.

  • Il contenuto della coda può essere letto solo una volta poiché viene distrutto una volta eseguita una lettura e da qui il nome Transient.

  • Non può essere aggiornato.

  • Richiede una voce in DCT.

WRITEQ TD

Questo comando viene utilizzato per scrivere code di dati transitori e vengono sempre scritte su un file. Di seguito è riportata la sintassi del comando WRITEQ TD:

Sintassi

EXEC CICS WRITEQ TD
   QUEUE ('queue-name')
   FROM (queue-record)
   [LENGTH (queue-record-length)]
END-EXEC.

READQ TD

Questo comando viene utilizzato per leggere la coda dei dati temporanei. Di seguito è riportata la sintassi di READQ TD -

Sintassi

EXEC CICS READQ TD
   QUEUE ('queue-name')
   INTO (queue-record)
   [LENGTH (queue-record-length)]
END-EXEC.

DELETEQ TD

Questo comando viene utilizzato per eliminare la coda di dati temporanei. Di seguito è riportata la sintassi di DELETEQ TD -

Sintassi

EXEC CICS DELETEQ TD
   QUEUE ('queue-name')
END-EXEC.

La comunicazione reciproca che avviene tra due o più sistemi è nota come intercommunication.

Vantaggi dell'intercomunicazione

Gli importanti vantaggi dell'intercomunicazione sono i seguenti:

  • Non è necessario replicare i dati su tutti i sistemi.

  • Gli utenti non devono mantenere connessioni a più sistemi per accedere ai dati memorizzati su di essi.

  • Migliora le prestazioni dell'applicazione.

Terminologie di base

È necessario avere una conoscenza delle terminologie di base utilizzate nel sistema CICS. Di seguito sono riportati i termini di base:

Sistema locale

Un sistema locale è un sistema che avvia una richiesta di intercomunicazione.

Risorsa locale

Una risorsa locale è una risorsa che risiede nel sistema locale.

Sistema remoto

Un sistema remoto è un sistema avviato a seguito di una richiesta di intercomunicazione.

Risorsa remota

Una risorsa remota è una risorsa che si trova nel sistema remoto.

MVS Sysplex

MVS Sysplex è una configurazione di più sistemi operativi MVS. Funzionano come un unico sistema condividendo funzioni e programmi.

CICSPlex

CICSPlex è comunemente descritto come un insieme di regioni CICS interconnesse che elaborano il carico di lavoro del cliente. Un CICSPlex è un insieme di regioni CICS interconnesse che possiedono terminali, applicazioni, risorse, ecc.

Metodi di intercomunicazione

Esistono due modi in cui CICS può comunicare con altri sistemi:

  • MRO - Multi Region Operation viene utilizzato quando due regioni CICS all'interno dello stesso MVSPLEX devono comunicare tra loro.

  • ISC - La comunicazione tra sistemi viene utilizzata quando una regione CICS in un server LOCALE deve comunicare con una regione CICS nel server REMOTE.

Mentre si lavora con CICS, è possibile che si verifichino interruzioni anomale. Di seguito sono riportati i codici di fine anomala comuni con la loro descrizione che ti aiuteranno a risolvere i problemi:

Suor n Codice e descrizione
1

ASRA

Eccezione controllo programma

2

AEI0

Errore ID programma

3

AEI9

Condizione di errore della mappa

4

AEIO

Chiave duplicata

5

AEIN

Record duplicato

6

AEID

Raggiunta la fine del file

7

AEIS

Il file non è aperto

8

AEIP

Condizione di richiesta non valida

9

AEY7

Non autorizzato a utilizzare la risorsa

10

APCT

Programma non trovato

11

AFCA

Set di dati non trovato

12

AKCT

Errore di timeout

13

ABM0

Mappa specificata non trovata

14

AICA

Programma in ciclo infinito

15

AAOW

Errore logico interno