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.