IMS DB - Blocs de contrôle

Les blocs de contrôle IMS définissent la structure de la base de données IMS et l'accès d'un programme à celles-ci. Le diagramme suivant montre la structure des blocs de contrôle IMS.

DL / I utilise les trois types de blocs de contrôle suivants -

  • Descripteur de base de données (DBD)
  • Bloc de spécification de programme (PSB)
  • Bloc de contrôle d'accès (ACB)

Descripteur de base de données (DBD)

Points à noter -

  • DBD décrit la structure physique complète de la base de données une fois que tous les segments ont été définis.

  • Lors de l'installation d'une base de données DL / I, un DBD doit être créé car il est nécessaire pour accéder à la base de données IMS.

  • Les applications peuvent utiliser différentes vues du DBD. Elles sont appelées structures de données d'application et sont spécifiées dans le bloc de spécification de programme.

  • L'administrateur de base de données crée un DBD en codant DBDGEN instructions de contrôle.

DBDGEN

DBDGEN est un générateur de descripteur de base de données. La création de blocs de contrôle relève de la responsabilité de l'administrateur de la base de données. Tous les modules de chargement sont stockés dans la bibliothèque IMS. Les instructions de macro du langage d'assemblage sont utilisées pour créer des blocs de contrôle. Vous trouverez ci-dessous un exemple de code qui montre comment créer un DBD à l'aide d'instructions de contrôle DBDGEN -

PRINT	NOGEN
DBD	NAME=LIBRARY,ACCESS=HIDAM
DATASET	DD1=LIB,DEVICE=3380
SEGM	NAME=LIBSEG,PARENT=0,BYTES=10
FIELD	NAME=(LIBRARY,SEQ,U),BYTES=10,START=1,TYPE=C
SEGM	NAME=BOOKSEG,PARENT=LIBSEG,BYTES=5
FIELD	NAME=(BOOKS,SEQ,U),BYTES=10,START=1,TYPE=C
SEGM	NAME=MAGSEG,PARENT=LIBSEG,BYTES=9
FIELD	NAME=(MAGZINES,SEQ),BYTES=8,START=1,TYPE=C
DBDGEN
FINISH
END

Comprenons les termes utilisés dans le DBDGEN ci-dessus -

  • Lorsque vous exécutez les instructions de contrôle ci-dessus dans JCL, il crée une structure physique où LIBRARY est le segment racine et BOOKS et MAGZINES sont ses segments enfants.

  • La première instruction de macro DBD identifie la base de données. Ici, nous devons mentionner le NOM et l'ACCÈS qui sont utilisés par DL / I pour accéder à cette base de données.

  • La deuxième instruction de macro DATASET identifie le fichier qui contient la base de données.

  • Les types de segment sont définis à l'aide de l'instruction de macro SEGM. Nous devons spécifier le PARENT de ce segment. S'il s'agit d'un segment racine, mentionnez PARENT = 0.

Le tableau suivant montre les paramètres utilisés dans l'instruction de macro FIELD -

S. Non Paramètre et description
1

Name

Nom du champ, généralement de 1 à 8 caractères

2

Bytes

Longueur du champ

3

Start

Position du champ dans le segment

4

Type

Type de données du champ

5

Type C

Type de données de caractère

6

Type P

Type de données décimal compact

sept

Type Z

Type de données décimales zonées

8

Type X

Type de données hexadécimal

9

Type H

Type de données binaire demi-mot

dix

Type F

Type de données binaire mot complet

Bloc de spécification de programme (PSB)

Les principes fondamentaux de PSB sont indiqués ci-dessous -

  • Une base de données a une structure physique unique définie par un DBD, mais les programmes d'application qui la traitent peuvent avoir différentes vues de la base de données. Ces vues sont appelées structure de données d'application et sont définies dans le PSB.

  • Aucun programme ne peut utiliser plus d'un PSB en une seule exécution.

  • Les programmes d'application ont leur propre PSB et il est courant pour les programmes d'application qui ont des exigences de traitement de base de données similaires de partager un PSB.

  • PSB se compose d'un ou plusieurs blocs de contrôle appelés blocs de communication de programme (PCB). Le PSB contient un PCB pour chaque base de données DL / I à laquelle le programme d'application accédera. Nous discuterons plus en détail des PCB dans les prochains modules.

  • PSBGEN doit être effectué pour créer un PSB pour le programme.

PSBGEN

PSBGEN est connu sous le nom de générateur de blocs de spécification de programme. L'exemple suivant crée un PSB à l'aide de PSBGEN -

PRINT   NOGEN
PCB     TYPE=DB,DBDNAME=LIBRARY,KEYLEN=10,PROCOPT=LS
SENSEG  NAME=LIBSEG
SENSEG  NAME=BOOKSEG,PARENT=LIBSEG
SENSEG  NAME=MAGSEG,PARENT=LIBSEG
PSBGEN  PSBNAME=LIBPSB,LANG=COBOL
END

Comprenons les termes utilisés dans le DBDGEN ci-dessus -

  • La première instruction de macro est le bloc de communication de programme (PCB) qui décrit le type de base de données, le nom, la longueur de clé et l'option de traitement.

  • Le paramètre DBDNAME sur la macro PCB spécifie le nom du DBD. KEYLEN spécifie la longueur de la clé concaténée la plus longue. Le programme peut traiter dans la base de données. Le paramètre PROCOPT spécifie les options de traitement du programme. Par exemple, LS signifie uniquement LOAD Operations.

  • SENSEG est connu sous le nom de sensibilité au niveau du segment. Il définit l'accès du programme à des parties de la base de données et il est identifié au niveau du segment. Le programme a accès à tous les champs des segments auxquels il est sensible. Un programme peut également avoir une sensibilité au niveau du champ. En cela, nous définissons un nom de segment et le nom parent du segment.

  • La dernière instruction macro est PCBGEN. PSBGEN est la dernière déclaration indiquant qu'il n'y a plus de déclarations à traiter. PSBNAME définit le nom donné au module PSB de sortie. Le paramètre LANG spécifie la langue dans laquelle le programme d'application est écrit, par exemple COBOL.

Bloc de contrôle d'accès (ACB)

Vous trouverez ci-dessous les points à noter concernant les blocs de contrôle d'accès -

  • Les blocs de contrôle d'accès pour un programme d'application combinent le descripteur de base de données et le bloc de spécification de programme sous une forme exécutable.

  • ACBGEN est connu sous le nom de générateur de blocs de contrôle d'accès. Il est utilisé pour générer des ACB.

  • Pour les programmes en ligne, nous devons pré-construire des ACB. L'utilitaire ACBGEN est donc exécuté avant d'exécuter le programme d'application.

  • Pour les programmes batch, les ACB peuvent également être générés au moment de l'exécution.