IMS DB - Funzioni DL / I
La funzione DL / I è il primo parametro utilizzato in una chiamata DL / I. Questa funzione indica quale operazione verrà eseguita sul database IMS dalla chiamata IMS DL / I. La sintassi della funzione DL / I è la seguente:
01 DLI-FUNCTIONS.
05 DLI-GU PIC X(4) VALUE 'GU '.
05 DLI-GHU PIC X(4) VALUE 'GHU '.
05 DLI-GN PIC X(4) VALUE 'GN '.
05 DLI-GHN PIC X(4) VALUE 'GHN '.
05 DLI-GNP PIC X(4) VALUE 'GNP '.
05 DLI-GHNP PIC X(4) VALUE 'GHNP'.
05 DLI-ISRT PIC X(4) VALUE 'ISRT'.
05 DLI-DLET PIC X(4) VALUE 'DLET'.
05 DLI-REPL PIC X(4) VALUE 'REPL'.
05 DLI-CHKP PIC X(4) VALUE 'CHKP'.
05 DLI-XRST PIC X(4) VALUE 'XRST'.
05 DLI-PCB PIC X(4) VALUE 'PCB '.
Questa sintassi rappresenta i seguenti punti chiave:
Per questo parametro, possiamo fornire qualsiasi nome di quattro caratteri come campo di memorizzazione per memorizzare il codice della funzione.
Il parametro della funzione DL / I è codificato nella sezione di memoria di lavoro del programma COBOL.
Per specificare la funzione DL / I, il programmatore deve codificare uno dei nomi di dati di livello 05 come DLI-GU in una chiamata DL / I, poiché COBOL non consente di codificare i valori letterali su un'istruzione CALL.
Le funzioni DL / I sono suddivise in tre categorie: Ottieni, Aggiorna e Altre funzioni. Cerchiamo di discutere ciascuno di essi in dettaglio.
Ottieni funzioni
Le funzioni Get sono simili all'operazione di lettura supportata da qualsiasi linguaggio di programmazione. La funzione Get viene utilizzata per recuperare i segmenti da un database IMS DL / I. Le seguenti funzioni Get sono utilizzate in IMS DB:
- Diventa unico
- Ottieni successivo
- Get Next all'interno di Parent
- Ottieni Hold Unique
- Get Hold Next
- Get Hold Next all'interno di Parent
Consideriamo la seguente struttura del database IMS per comprendere le chiamate alla funzione DL / I:
Diventa unico
Il codice "GU" viene utilizzato per la funzione Ottieni univoco. Funziona in modo simile all'istruzione di lettura casuale in COBOL. Viene utilizzato per recuperare una particolare occorrenza di segmento in base ai valori del campo. I valori dei campi possono essere forniti utilizzando argomenti di ricerca del segmento. La sintassi di una chiamata GU è la seguente:
CALL 'CBLTDLI' USING DLI-GU
PCB Mask
Segment I/O Area
[Segment Search Arguments]
Se si esegue l'istruzione call di cui sopra fornendo valori appropriati per tutti i parametri nel programma COBOL, è possibile recuperare il segmento nell'area I / O del segmento dal database. Nell'esempio precedente, se fornisci i valori dei campi Libreria, Riviste e Salute, ottieni l'occorrenza desiderata del segmento Salute.
Ottieni successivo
Il codice "GN" viene utilizzato per la funzione Get Next. Funziona in modo simile all'istruzione read next in COBOL. Viene utilizzato per recuperare le occorrenze dei segmenti in una sequenza. Il modello predefinito per l'accesso alle occorrenze dei segmenti di dati è in basso nella gerarchia, quindi da sinistra a destra. La sintassi di una chiamata GN è la seguente:
CALL 'CBLTDLI' USING DLI-GN
PCB Mask
Segment I/O Area
[Segment Search Arguments]
Se si esegue l'istruzione call di cui sopra fornendo valori appropriati per tutti i parametri nel programma COBOL, è possibile recuperare l'occorrenza del segmento nell'area I / O del segmento dal database in un ordine sequenziale. Nell'esempio precedente, inizia con l'accesso al segmento Libreria, quindi al segmento Libri e così via. Eseguiamo la chiamata GN ancora e ancora, finché non raggiungiamo l'occorrenza del segmento che vogliamo.
Get Next all'interno di Parent
Il codice "GNP" viene utilizzato per Get Next in Parent. Questa funzione viene utilizzata per recuperare le occorrenze del segmento in sequenza subordinata a un segmento padre stabilito. La sintassi di una chiamata GNP è la seguente:
CALL 'CBLTDLI' USING DLI-GNP
PCB Mask
Segment I/O Area
[Segment Search Arguments]
Ottieni Hold Unique
Il codice "GHU" viene utilizzato per Get Hold Unique. La funzione Hold specifica che aggiorneremo il segmento dopo il recupero. La funzione Get Hold Unique corrisponde alla chiamata Get Unique. Di seguito è riportata la sintassi di una chiamata GHU:
CALL 'CBLTDLI' USING DLI-GHU
PCB Mask
Segment I/O Area
[Segment Search Arguments]
Get Hold Next
Il codice "GHN" viene utilizzato per Get Hold Next. La funzione Hold specifica che aggiorneremo il segmento dopo il recupero. La funzione Get Hold Next corrisponde alla chiamata Get Next. Di seguito è riportata la sintassi di una chiamata GHN:
CALL 'CBLTDLI' USING DLI-GHN
PCB Mask
Segment I/O Area
[Segment Search Arguments]
Get Hold Next all'interno di Parent
Il codice "GHNP" viene utilizzato per Get Hold Next in Parent. La funzione Hold specifica che aggiorneremo il segmento dopo il recupero. La funzione Get Hold Next in Parent corrisponde alla chiamata Get Next in Parent. Di seguito è riportata la sintassi di una chiamata GHNP:
CALL 'CBLTDLI' USING DLI-GHNP
PCB Mask
Segment I/O Area
[Segment Search Arguments]
Funzioni di aggiornamento
Le funzioni di aggiornamento sono simili alle operazioni di riscrittura o inserimento in qualsiasi altro linguaggio di programmazione. Le funzioni di aggiornamento vengono utilizzate per aggiornare i segmenti in un database IMS DL / I. Prima di utilizzare la funzione di aggiornamento, deve esserci una chiamata riuscita con la clausola Hold per l'occorrenza del segmento. Le seguenti funzioni di aggiornamento vengono utilizzate in IMS DB:
- Insert
- Delete
- Replace
Inserire
Il codice "ISRT" viene utilizzato per la funzione di inserimento. La funzione ISRT viene utilizzata per aggiungere un nuovo segmento al database. Viene utilizzato per modificare un database esistente o caricare un nuovo database. Di seguito è riportata la sintassi di un invito ISRT:
CALL 'CBLTDLI' USING DLI-ISRT
PCB Mask
Segment I/O Area
[Segment Search Arguments]
Elimina
Il codice "DLET" viene utilizzato per la funzione Elimina. Viene utilizzato per rimuovere un segmento da un database IMS DL / I. Di seguito è riportata la sintassi di una chiamata DLET:
CALL 'CBLTDLI' USING DLI-DLET
PCB Mask
Segment I/O Area
[Segment Search Arguments]
Sostituire
Il codice "REPL" viene utilizzato per Get Hold Next in Parent. La funzione Sostituisci viene utilizzata per sostituire un segmento nel database IMS DL / I. Di seguito è riportata la sintassi di una chiamata REPL:
CALL 'CBLTDLI' USING DLI-REPL
PCB Mask
Segment I/O Area
[Segment Search Arguments]
Altre funzioni
Le seguenti altre funzioni vengono utilizzate nelle chiamate IMS DL / I:
- Checkpoint
- Restart
- PCB
Checkpoint
Il codice "CHKP" viene utilizzato per la funzione Checkpoint. Viene utilizzato nelle funzioni di ripristino di IMS. Di seguito è riportata la sintassi di una chiamata CHKP:
CALL 'CBLTDLI' USING DLI-CHKP
PCB Mask
Segment I/O Area
[Segment Search Arguments]
Ricomincia
Il codice "XRST" viene utilizzato per la funzione di riavvio. Viene utilizzato nelle funzionalità di riavvio di IMS. Di seguito è riportata la sintassi di una chiamata XRST:
CALL 'CBLTDLI' USING DLI-XRST
PCB Mask
Segment I/O Area
[Segment Search Arguments]
PCB
La funzione PCB viene utilizzata nei programmi CICS nel database IMS DL / I. Di seguito è riportata la sintassi di una chiamata PCB:
CALL 'CBLTDLI' USING DLI-PCB
PCB Mask
Segment I/O Area
[Segment Search Arguments]
È possibile trovare ulteriori dettagli su queste funzioni nel capitolo sul ripristino.