IMS DB - Fonctions DL / I

La fonction DL / I est le premier paramètre utilisé dans un appel DL / I. Cette fonction indique quelle opération va être effectuée sur la base de données IMS par l'appel IMS DL / I. La syntaxe de la fonction DL / I est la suivante -

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 '.

Cette syntaxe représente les points clés suivants -

  • Pour ce paramètre, nous pouvons fournir n'importe quel nom à quatre caractères comme champ de stockage pour stocker le code de fonction.

  • Le paramètre de fonction DL / I est codé dans la section de mémoire de travail du programme COBOL.

  • Pour spécifier la fonction DL / I, le programmeur doit coder l'un des noms de données de niveau 05 tels que DLI-GU dans un appel DL / I, car COBOL ne permet pas de coder des littéraux sur une instruction CALL.

  • Les fonctions DL / I sont divisées en trois catégories: Obtenir, Mettre à jour et Autres fonctions. Laissez-nous discuter de chacun d'eux en détail.

Obtenir des fonctions

Les fonctions Get sont similaires à l'opération de lecture prise en charge par n'importe quel langage de programmation. La fonction Get est utilisée pour récupérer des segments à partir d'une base de données IMS DL / I. Les fonctions Get suivantes sont utilisées dans IMS DB -

  • Soyez unique
  • Procéder au suivant
  • Passer au suivant dans Parent
  • Soyez unique
  • Attendez ensuite
  • Get Hold Next dans Parent

Considérons la structure de base de données IMS suivante pour comprendre les appels de fonction DL / I -

Soyez unique

Le code 'GU' est utilisé pour la fonction Get Unique. Cela fonctionne de manière similaire à l'instruction de lecture aléatoire dans COBOL. Il est utilisé pour récupérer une occurrence de segment particulière en fonction des valeurs de champ. Les valeurs de champ peuvent être fournies à l'aide d'arguments de recherche de segment. La syntaxe d'un appel GU est la suivante -

CALL 'CBLTDLI' USING DLI-GU
                     PCB Mask
                     Segment I/O Area
                     [Segment Search Arguments]

Si vous exécutez l'instruction d'appel ci-dessus en fournissant les valeurs appropriées pour tous les paramètres du programme COBOL, vous pouvez récupérer le segment dans la zone d'E / S de segment à partir de la base de données. Dans l'exemple ci-dessus, si vous fournissez les valeurs de champ Bibliothèque, Magazines et Santé, vous obtenez l'occurrence souhaitée du segment Santé.

Procéder au suivant

Le code 'GN' est utilisé pour la fonction Get Next. Cela fonctionne de manière similaire à l'instruction suivante de lecture en COBOL. Il est utilisé pour récupérer les occurrences de segment dans une séquence. Le modèle prédéfini pour accéder aux occurrences de segment de données se situe dans la hiérarchie, puis de gauche à droite. La syntaxe d'un appel GN est la suivante -

CALL 'CBLTDLI' USING DLI-GN
                     PCB Mask
                     Segment I/O Area
                     [Segment Search Arguments]

Si vous exécutez l'instruction d'appel ci-dessus en fournissant des valeurs appropriées pour tous les paramètres dans le programme COBOL, vous pouvez récupérer l'occurrence de segment dans la zone d'E / S de segment à partir de la base de données dans un ordre séquentiel. Dans l'exemple ci-dessus, cela commence par accéder au segment Bibliothèque, puis au segment Livres, et ainsi de suite. Nous effectuons l'appel GN encore et encore, jusqu'à ce que nous atteignions l'occurrence de segment souhaitée.

Passer au suivant dans Parent

Le code 'GNP' est utilisé pour Get Next dans Parent. Cette fonction est utilisée pour récupérer les occurrences de segment dans une séquence subordonnée à un segment parent établi. La syntaxe d'un appel GNP est la suivante -

CALL 'CBLTDLI' USING DLI-GNP
                     PCB Mask
                     Segment I/O Area
                     [Segment Search Arguments]

Soyez unique

Le code «GHU» est utilisé pour Get Hold Unique. La fonction Hold spécifie que nous allons mettre à jour le segment après la récupération. La fonction Get Hold Unique correspond à l'appel Get Unique. Ci-dessous, la syntaxe d'un appel GHU -

CALL 'CBLTDLI' USING DLI-GHU
                     PCB Mask
                     Segment I/O Area
                     [Segment Search Arguments]

Attendez ensuite

Le code 'GHN' est utilisé pour Get Hold Next. La fonction Hold spécifie que nous allons mettre à jour le segment après la récupération. La fonction Get Hold Next correspond à l'appel Get Next. Ci-dessous, la syntaxe d'un appel GHN -

CALL 'CBLTDLI' USING DLI-GHN
                     PCB Mask
                     Segment I/O Area
                     [Segment Search Arguments]

Get Hold Next dans Parent

Le code 'GHNP' est utilisé pour Get Hold Next dans Parent. La fonction Hold spécifie que nous allons mettre à jour le segment après la récupération. La fonction Get Hold Next dans Parent correspond à l'appel Get Next dans Parent. Voici la syntaxe d'un appel GHNP -

CALL 'CBLTDLI' USING DLI-GHNP
                     PCB Mask
                     Segment I/O Area
                     [Segment Search Arguments]

Fonctions de mise à jour

Les fonctions de mise à jour sont similaires aux opérations de réécriture ou d'insertion dans tout autre langage de programmation. Les fonctions de mise à jour sont utilisées pour mettre à jour des segments dans une base de données IMS DL / I. Avant d'utiliser la fonction de mise à jour, il doit y avoir un appel réussi avec la clause Hold pour l'occurrence de segment. Les fonctions de mise à jour suivantes sont utilisées dans IMS DB -

  • Insert
  • Delete
  • Replace

Insérer

Le code 'ISRT' est utilisé pour la fonction d'insertion. La fonction ISRT est utilisée pour ajouter un nouveau segment à la base de données. Il est utilisé pour modifier une base de données existante ou charger une nouvelle base de données. Vous trouverez ci-dessous la syntaxe d'un appel ISRT -

CALL 'CBLTDLI' USING DLI-ISRT
                     PCB Mask
                     Segment I/O Area
                     [Segment Search Arguments]

Effacer

Le code «DLET» est utilisé pour la fonction Supprimer. Il est utilisé pour supprimer un segment d'une base de données IMS DL / I. Vous trouverez ci-dessous la syntaxe d'un appel DLET -

CALL 'CBLTDLI' USING DLI-DLET
                     PCB Mask
                     Segment I/O Area
                     [Segment Search Arguments]

Remplacer

Le code 'REPL' est utilisé pour Get Hold Next dans Parent. La fonction Remplacer est utilisée pour remplacer un segment dans la base de données IMS DL / I. Ci-dessous est la syntaxe d'un appel REPL -

CALL 'CBLTDLI' USING DLI-REPL
                     PCB Mask
                     Segment I/O Area
                     [Segment Search Arguments]

Autres fonctions

Les autres fonctions suivantes sont utilisées dans les appels IMS DL / I -

  • Checkpoint
  • Restart
  • PCB

Point de contrôle

Le code 'CHKP' est utilisé pour la fonction Checkpoint. Il est utilisé dans les fonctionnalités de récupération d'IMS. Voici la syntaxe d'un appel CHKP -

CALL 'CBLTDLI' USING DLI-CHKP
                     PCB Mask
                     Segment I/O Area
                     [Segment Search Arguments]

Redémarrer

Le code «XRST» est utilisé pour la fonction de redémarrage. Il est utilisé dans les fonctionnalités de redémarrage d'IMS. Voici la syntaxe d'un appel XRST -

CALL 'CBLTDLI' USING DLI-XRST
                     PCB Mask
                     Segment I/O Area
                     [Segment Search Arguments]

PCB

La fonction PCB est utilisée dans les programmes CICS de la base de données IMS DL / I. Voici la syntaxe d'un appel PCB -

CALL 'CBLTDLI' USING DLI-PCB
                     PCB Mask
                     Segment I/O Area
                     [Segment Search Arguments]

Vous pouvez trouver plus de détails sur ces fonctions dans le chapitre de récupération.