CICS - LEGGI

Il comando READ legge i dati da un file utilizzando la chiave primaria. Di seguito è riportata la sintassi del comando READ:

Sintassi

EXEC CICS READ
   FILE('name')
   INTO(data-area)
   RIDFLD(data-area)
   LENGTH(data-value)
   KEYLENGTH(data-value)
END-EXEC.

La tabella seguente elenca i parametri utilizzati nel comando READ -

Suor n Parametro e descrizione
1

FILE

Il nome del file è il nome del file che vogliamo leggere. Questo è il nome file simbolico CICS che identifica la voce FCT per il file. I nomi dei file possono essere lunghi fino a 8 caratteri e devono essere racchiusi tra virgolette se sono letterali.

2

INTO

L'area dati è la variabile in cui deve essere letto il record, solitamente una struttura nella memoria di lavoro. L'INTO è richiesto per gli usi del comando READ.

3

RIDFLD

Ha il nome dell'area dati contenente la chiave del record che vogliamo leggere.

4

LENGTH

Specifica il numero massimo di caratteri che possono essere letti nell'area dati specificata. Deve essere un valore binario a mezza parola (PIC S9 (4) COMP). Una volta completato il comando READ, CICS sostituisce il valore massimo specificato con la lunghezza effettiva del record. Per questo motivo, dobbiamo specificare LENGTH come nome di un'area dati piuttosto che letterale e dobbiamo reinizializzare quest'area dati se la usiamo per LENGTH più di una volta nel programma. Un record più lungo genererà una condizione di errore.

5

KEYLENGTH

Specifica la lunghezza della chiave.

Esempio

L'esempio seguente mostra come leggere un record dal file "FL001" in cui Student-id è la chiave primaria -

IDENTIFICATION DIVISION.                                         
PROGRAM-ID. HELLO.                                               
DATA DIVISION. 
WORKING-STORAGE SECTION.
01 WS-STD-REC-LEN    PIC S9(4) COMP.
01 WS-STD-KEY-LEN    PIC S9(4) COMP.
01 WS-STD-REC-KEY    PIC 9(3).
01 WS-STD-REC        PIC X(70).
PROCEDURE DIVISION.
MOVE +70           TO WS-STD-REC-LEN.
MOVE ‘100’         TO WS-STD-REC-KEY.
MOVE 3             TO WS-STD-KEY-LEN.
EXEC CICS READ
   FILE ('FL001')
   INTO (WS-STD-REC)
   LENGTH (WS-STD-REC-LEN)
   RIDFLD (WS-STD-REC-KEY)
   KEYLENGTH (WS-STD-KEY-LEN)
END-EXEC.

Leggi Opzioni di comando

Le seguenti opzioni possono essere utilizzate con il comando READ:

  • GENERIC- Viene utilizzato quando non si conosce il valore chiave completo. Ad esempio, vogliamo un record la cui chiave primaria inizi con "10" e il resto della chiave può essere qualsiasi cosa. Sebbene la lunghezza della chiave sia di 3 caratteri, ne stiamo citando solo 2. È importante menzionare la lunghezza della chiave che fornisce la lunghezza per la quale deve eseguire la corrispondenza. Il primo record che soddisfa i criteri verrà ritirato.

  • UPDATE- Specifica che intendiamo aggiornare il record nella transazione corrente. Specificando UPDATE si dà alla transazione il controllo esclusivo del record richiesto. Dovrebbe essere usato quando vogliamo riscrivere il record.

  • EQUAL - Specifica che vogliamo solo il record la cui chiave corrisponde esattamente a quanto specificato da RIDFLD.

  • GTEQ - Specifica che vogliamo il primo record la cui chiave è maggiore o uguale alla chiave specificata.

EXEC CICS READ
   FILE('name')
   INTO(data-area)
   RIDFLD(data-area)
   LENGTH(data-value)
   KEYLENGTH(data-value)
   GENERIC
   UPDATE
   EQUAL
   GTEQ
END-EXEC.

Leggi eccezioni ai comandi

La tabella seguente mostra l'elenco delle eccezioni che si verificano durante l'istruzione READ -

Suor n Eccezione e descrizione
1

NOTOPEN

Il file non è aperto.

2

NOTFND

Il record che viene cercato non esiste nel set di dati.

3

FILENOTFOUND

L'immissione del file non viene eseguita in FCT.

4

LENGERR

Mancata corrispondenza tra la lunghezza specificata nel comando e la lunghezza effettiva del record.

5

NOTAUTH

Se l'utente non dispone di autorizzazioni sufficienti per utilizzare il file.

6

DUPKEY

Se più di 1 record soddisfa la condizione sulla chiave alternativa.