DB IMS - Recupero dati

I vari metodi di recupero dei dati utilizzati nelle chiamate IMS DL / I sono i seguenti:

  • Chiamata GU
  • GN Call
  • Utilizzo dei codici di comando
  • Elaborazione multipla

Consideriamo la seguente struttura del database IMS per comprendere le chiamate alla funzione di recupero dei dati:

Chiamata GU

I fondamenti della chiamata GU sono i seguenti:

  • La chiamata GU è nota come Ottieni chiamata univoca. Viene utilizzato per l'elaborazione casuale.

  • Se un'applicazione non aggiorna il database regolarmente o se il numero di aggiornamenti del database è inferiore, utilizziamo l'elaborazione casuale.

  • La chiamata GU viene utilizzata per posizionare il puntatore in una posizione particolare per un ulteriore recupero sequenziale.

  • Le chiamate GU sono indipendenti dalla posizione del puntatore stabilita dalle chiamate precedenti.

  • L'elaborazione delle chiamate GU si basa sui campi chiave univoci forniti nell'istruzione di chiamata.

  • Se forniamo un campo chiave che non è univoco, DL / I restituisce la prima occorrenza di segmento del campo chiave.

CALL 'CBLTDLI' USING DLI-GU
                     PCB-NAME
                     IO-AREA
                     LIBRARY-SSA
                     BOOKS-SSA
                     ENGINEERING-SSA
                     IT-SSA

L'esempio precedente mostra che emettiamo una chiamata GU fornendo un set completo di SSA qualificati. Include tutti i campi chiave a partire dal livello principale fino alla ricorrenza del segmento che si desidera recuperare.

Considerazioni sulla chiamata GU

Se non forniamo il set completo di SSA qualificati nella chiamata, DL / I funziona nel modo seguente:

  • Quando utilizziamo un SSA non qualificato in una chiamata GU, DL / I accede alla prima occorrenza di segmento nel database che soddisfa i criteri specificati.

  • Quando emettiamo una chiamata GU senza alcun SSA, DL / I restituisce la prima occorrenza del segmento radice nel database.

  • Se alcuni SSA a livelli intermedi non sono menzionati nella chiamata, DL / I utilizza la posizione stabilita o il valore predefinito di un SSA non qualificato per il segmento.

Codici di stato

La tabella seguente mostra i codici di stato rilevanti dopo una chiamata GU -

S.No Codice di stato e descrizione
1

Spaces

Chiamata riuscita

2

GE

DL / Non sono riuscito a trovare un segmento che soddisfacesse i criteri specificati nel bando

GN Call

I fondamenti della chiamata GN sono i seguenti:

  • La chiamata GN è nota come chiamata Get Next. Viene utilizzato per l'elaborazione sequenziale di base.

  • La posizione iniziale del puntatore nel database è prima del segmento principale del primo record del database.

  • La posizione del puntatore del database è prima dell'occorrenza del segmento successivo nella sequenza, dopo una chiamata GN riuscita.

  • La chiamata GN parte dal database dalla posizione stabilita dalla chiamata precedente.

  • Se una chiamata GN non è qualificata, restituisce l'occorrenza del segmento successivo nel database indipendentemente dal suo tipo, in sequenza gerarchica.

  • Se una chiamata GN include SSA, DL / I recupera solo i segmenti che soddisfano i requisiti di tutti gli SSA specificati.

CALL 'CBLTDLI' USING DLI-GN
                     PCB-NAME
                     IO-AREA
                     BOOKS-SSA

L'esempio sopra mostra che emettiamo una chiamata GN che fornisce la posizione iniziale per leggere i record in sequenza. Recupera la prima occorrenza del segmento BOOKS.

Codici di stato

La tabella seguente mostra i codici di stato rilevanti dopo una chiamata GN -

S.No Codice di stato e descrizione
1

Spaces

Chiamata riuscita

2

GE

DL / Non sono riuscito a trovare un segmento che soddisfacesse i criteri specificati nel bando.

3

GA

Una chiamata GN non qualificata sale di un livello nella gerarchia del database per recuperare il segmento.

4

GB

È stata raggiunta la fine del database e il segmento non è stato trovato.

GK

Una chiamata GN non qualificata tenta di recuperare un segmento di un tipo particolare diverso da quello appena recuperato ma rimane nello stesso livello gerarchico.

Codici di comando

I codici di comando vengono utilizzati con le chiamate per recuperare l'occorrenza di un segmento. I vari codici di comando utilizzati con le chiamate sono discussi di seguito.

Codice comando F.

Punti da notare -

  • Quando un codice di comando F viene specificato in una chiamata, la chiamata elabora la prima occorrenza del segmento.

  • I codici di comando F possono essere usati quando vogliamo elaborare sequenzialmente e possono essere usati con chiamate GN e GNP.

  • Se specifichiamo un codice di comando F con una chiamata GU, non ha alcun significato, poiché le chiamate GU recuperano la prima occorrenza del segmento per impostazione predefinita.

Codice di comando L.

Punti da notare -

  • Quando un codice di comando L viene specificato in una chiamata, la chiamata elabora l'ultima occorrenza del segmento.

  • I codici di comando L possono essere usati quando vogliamo elaborare sequenzialmente e possono essere usati con chiamate GN e GNP.

D Codice comando

Punti da notare -

  • Il codice di comando D viene utilizzato per recuperare più di una occorrenza di segmento utilizzando una sola chiamata.

  • Normalmente DL / I opera sul segmento di livello più basso specificato in un SSA, ma in molti casi desideriamo dati anche da altri livelli. In questi casi, possiamo usare il codice del comando D.

  • Il codice di comando D semplifica il recupero dell'intero percorso dei segmenti.

Codice di comando C.

Punti da notare -

  • Il codice di comando C viene utilizzato per concatenare le chiavi.

  • L'utilizzo di operatori relazionali è un po 'complesso, poiché è necessario specificare un nome di campo, un operatore relazionale e un valore di ricerca. Invece, possiamo usare un codice di comando C per fornire una chiave concatenata.

L'esempio seguente mostra l'uso del codice di comando C:

01 LOCATION-SSA.
   05 FILLER		     PIC X(11) VALUE ‘INLOCSEG*C(‘.
   05 LIBRARY-SSA      PIC X(5).
   05 BOOKS-SSA        PIC X(4).
   05 ENGINEERING-SSA  PIC X(6).
   05 IT-SSA           PIC X(3)
   05 FILLER		     PIC X	VALUE ‘)’.

CALL 'CBLTDLI' USING DLI-GU
                     PCB-NAME
                     IO-AREA
                     LOCATION-SSA

Codice comando P.

Punti da notare -

  • Quando emettiamo una chiamata GU o GN, il DL / I stabilisce la sua parentela nel segmento di livello più basso che viene recuperato.

  • Se includiamo un codice di comando P, il DL / I stabilisce la sua parentela in un segmento di livello superiore nel percorso gerarchico.

Codice di comando U.

Punti da notare -

  • Quando un codice di comando U viene specificato in un SSA non qualificato in una chiamata GN, il DL / I limita la ricerca del segmento.

  • Il codice di comando U viene ignorato se viene utilizzato con un SSA qualificato.

Codice di comando V.

Punti da notare -

  • Il codice del comando V funziona in modo simile al codice del comando U, ma limita la ricerca di un segmento a un livello particolare e tutti i livelli sopra la gerarchia.

  • Il codice di comando V viene ignorato se utilizzato con un SSA qualificato.

Codice comando Q

Punti da notare -

  • Il codice del comando Q viene utilizzato per accodare o prenotare un segmento per l'uso esclusivo del programma applicativo.

  • Il codice del comando Q viene utilizzato in un ambiente interattivo in cui un altro programma potrebbe apportare una modifica a un segmento.

Elaborazione multipla

Un programma può avere più posizioni nel database IMS, noto come elaborazione multipla. L'elaborazione multipla può essere eseguita in due modi:

  • PCB multipli
  • Posizionamento multiplo

PCB multipli

È possibile definire più PCB per un singolo database. Se sono presenti più PCB, un programma applicativo può avere viste diverse di esso. Questo metodo per implementare l'elaborazione multipla è inefficiente a causa dei costi generali imposti dai PCB aggiuntivi.

Posizionamento multiplo

Un programma può mantenere più posizioni in un database utilizzando un singolo PCB. Ciò si ottiene mantenendo una posizione distinta per ogni percorso gerarchico. Il posizionamento multiplo viene utilizzato per accedere a segmenti di due o più tipi in sequenza contemporaneamente.