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.