IMS DB - Récupération de données

Les différentes méthodes de récupération de données utilisées dans les appels IMS DL / I sont les suivantes:

  • Appel GU
  • Appel GN
  • Utilisation des codes de commande
  • Traitement multiple

Considérons la structure de base de données IMS suivante pour comprendre les appels de la fonction de récupération de données -

Appel GU

Les principes fondamentaux de l'appel GU sont les suivants -

  • L'appel GU est appelé Appel Unique. Il est utilisé pour le traitement aléatoire.

  • Si une application ne met pas à jour la base de données régulièrement ou si le nombre de mises à jour de la base de données est inférieur, nous utilisons un traitement aléatoire.

  • L'appel GU est utilisé pour placer le pointeur à une position particulière pour une récupération séquentielle ultérieure.

  • Les appels GU sont indépendants de la position du pointeur établie par les appels précédents.

  • Le traitement des appels GU est basé sur les champs de clé uniques fournis dans l'instruction d'appel.

  • Si nous fournissons un champ clé qui n'est pas unique, DL / I renvoie la première occurrence de segment du champ clé.

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

L'exemple ci-dessus montre que nous émettons un appel GU en fournissant un ensemble complet de SSA qualifiés. Il inclut tous les champs clés à partir du niveau racine jusqu'à l'occurrence de segment que nous voulons récupérer.

Considérations relatives aux appels GU

Si nous ne fournissons pas l'ensemble complet de SSA qualifiés dans l'appel, alors DL / I fonctionne de la manière suivante -

  • Lorsque nous utilisons une SSA non qualifiée dans un appel GU, DL / I accède à la première occurrence de segment de la base de données qui répond aux critères que vous spécifiez.

  • Lorsque nous émettons un appel GU sans SSA, DL / I renvoie la première occurrence du segment racine dans la base de données.

  • Si certains SSA à des niveaux intermédiaires ne sont pas mentionnés dans l'appel, alors DL / I utilise la position établie ou la valeur par défaut d'un SSA non qualifié pour le segment.

Codes d'état

Le tableau suivant montre les codes d'état pertinents après un appel GU -

S. Non Code d'état et description
1

Spaces

Appel réussi

2

GE

DL / Je n'ai pas trouvé de segment répondant aux critères spécifiés dans l'appel

Appel GN

Les principes fondamentaux de l'appel GN sont les suivants -

  • L'appel GN est appelé Get Next call. Il est utilisé pour le traitement séquentiel de base.

  • La position initiale du pointeur dans la base de données est avant le segment racine du premier enregistrement de base de données.

  • La position du pointeur de la base de données est avant l'occurrence de segment suivante dans la séquence, après un appel GN réussi.

  • L'appel GN commence par la base de données à partir de la position établie par l'appel précédent.

  • Si un appel GN n'est pas qualifié, il renvoie l'occurrence de segment suivante dans la base de données quel que soit son type, dans une séquence hiérarchique.

  • Si un appel GN comprend des SSA, DL / I récupère uniquement les segments qui répondent aux exigences de tous les SSA spécifiés.

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

L'exemple ci-dessus montre que nous émettons un appel GN fournissant la position de départ pour lire les enregistrements séquentiellement. Il récupère la première occurrence du segment BOOKS.

Codes d'état

Le tableau suivant montre les codes d'état pertinents après un appel GN -

S. Non Code d'état et description
1

Spaces

Appel réussi

2

GE

DL / Je n'ai pas pu trouver un segment répondant aux critères spécifiés dans l'appel.

3

GA

Un appel GN non qualifié monte d'un niveau dans la hiérarchie de la base de données pour récupérer le segment.

4

GB

La fin de la base de données est atteinte et le segment est introuvable.

GK

Un appel GN non qualifié tente d'extraire un segment d'un type particulier autre que celui qui vient d'être récupéré mais reste au même niveau hiérarchique.

Codes de commande

Les codes de commande sont utilisés avec les appels pour récupérer une occurrence de segment. Les différents codes de commande utilisés avec les appels sont décrits ci-dessous.

Code de commande F

Points à noter -

  • Lorsqu'un code de commande F est spécifié dans un appel, l'appel traite la première occurrence du segment.

  • Les codes de commande F peuvent être utilisés lorsque nous voulons traiter séquentiellement et il peut être utilisé avec les appels GN et les appels GNP.

  • Si nous spécifions un code de commande F avec un appel GU, cela n'a aucune signification, car les appels GU récupèrent la première occurrence de segment par défaut.

Code de commande L

Points à noter -

  • Lorsqu'un code de commande L est spécifié dans un appel, l'appel traite la dernière occurrence du segment.

  • Les codes de commande L peuvent être utilisés lorsque nous voulons traiter séquentiellement et il peut être utilisé avec les appels GN et les appels GNP.

Code de commande D

Points à noter -

  • Le code de commande D est utilisé pour récupérer plusieurs occurrences de segment en utilisant un seul appel.

  • Normalement, DL / I fonctionne sur le segment de niveau le plus bas spécifié dans un SSA, mais dans de nombreux cas, nous voulons également des données d'autres niveaux. Dans ces cas, nous pouvons utiliser le code de commande D.

  • Le code de commande D facilite la récupération du chemin complet des segments.

Code de commande C

Points à noter -

  • Le code de commande C est utilisé pour concaténer les clés.

  • L'utilisation d'opérateurs relationnels est un peu complexe, car nous devons spécifier un nom de champ, un opérateur relationnel et une valeur de recherche. Au lieu de cela, nous pouvons utiliser un code de commande C pour fournir une clé concaténée.

L'exemple suivant montre l'utilisation du code de commande 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

Code de commande P

Points à noter -

  • Lorsque nous émettons un appel GU ou GN, le DL / I établit sa parenté au segment de niveau le plus bas qui est récupéré.

  • Si nous incluons un code de commande P, alors le DL / I établit sa parenté à un segment de niveau supérieur dans le chemin hiérarchique.

Code de commande U

Points à noter -

  • Lorsqu'un code de commande U est spécifié dans un SSA non qualifié dans un appel GN, le DL / I restreint la recherche du segment.

  • Le code de commande U est ignoré s'il est utilisé avec un SSA qualifié.

Code de commande V

Points à noter -

  • Le code de commande V fonctionne de manière similaire au code de commande U, mais il limite la recherche d'un segment à un niveau particulier et à tous les niveaux au-dessus de la hiérarchie.

  • Le code de commande V est ignoré lorsqu'il est utilisé avec un SSA qualifié.

Code de commande Q

Points à noter -

  • Le code de commande Q est utilisé pour mettre en file d'attente ou réserver un segment pour une utilisation exclusive de votre programme d'application.

  • Le code de commande Q est utilisé dans un environnement interactif où un autre programme peut apporter une modification à un segment.

Traitement multiple

Un programme peut avoir plusieurs positions dans la base de données IMS, ce que l'on appelle le traitement multiple. Le traitement multiple peut être effectué de deux manières -

  • PCB multiples
  • Positionnement multiple

PCB multiples

Plusieurs PCB peuvent être définis pour une seule base de données. S'il existe plusieurs PCB, un programme d'application peut en avoir différentes vues. Cette méthode de mise en œuvre de traitements multiples est inefficace en raison des frais généraux imposés par les PCB supplémentaires.

Positionnement multiple

Un programme peut maintenir plusieurs positions dans une base de données en utilisant un seul PCB. Ceci est réalisé en maintenant une position distincte pour chaque chemin hiérarchique. Le positionnement multiple est utilisé pour accéder à des segments de deux types ou plus de manière séquentielle en même temps.