Archives par mot-clé : IEBDG

JCL – IEBDG

Ces exemples illustrent certaines des utilisations d’IEBDG.
Vous pouvez utiliser le tableau 1 comme guide de référence rapide pour les exemples IEBDG.

Tableau 1. Répertoire d’exemples IEBDG

OpérationOrganisation de l’ensemble de
données
DispositifCommentairesExemple
Placez des zéros binaires dans les champs sélectionnés.SéquentielRubanEntrée et sortie bloquées.Exemple 1 : Placer des zéros binaires dans des enregistrements copiés à partir d’un ensemble de données
séquentiel
Motif alphabétique onduléSéquentielBande, disqueEntrée et sortie bloquées.Exemple 2 : modèle alphabétique d’ondulation de 10 octets
Créer des enregistrements de sortie à partir d’instructions de contrôle d’utilitaireSéquentielDisqueSortie bloquée.Exemple 3 : créer des enregistrements de sortie à partir des instructions de contrôle des services
publics
Modifier les enregistrements des membres partitionnés et du flux d’entréePartitionné, SéquentielDisqueLe reblocage est effectué. Chaque bloc d’enregistrements de sortie contient dix enregistrements d’entrée partitionnés modifiés et deux enregistrements de flux d’entrée.Exemple 4 : Utiliser les membres et les enregistrements d’entrée comme base du membre de sortie
Créer des membres partitionnés à partir d’instructions de contrôle d’utilitairePartitionnéDisqueSortie bloquée. Un ensemble d’instructions de contrôle d’utilité par membre.Exemple 5 : Créer des enregistrements dans trois ensembles de données de sortie et les écrire dans trois membres
d’ensembles de données partitionnés
Modèles fournis par l’utilisateur pour rouler et ondulerSéquentielDisqueLes enregistrements de sortie sont créés à partir des instructions de contrôle de l’utilitaire.Exemple 6 : Créer des enregistrements avec vos propres modèles

Les exemples qui utilisent un disque ou une bande à la place des numéros de périphérique réels doivent être modifiés avant utilisation.
Les numéros de périphérique réels dépendent de la manière dont votre installation définit les périphériques sur votre système.

EXEMPLE

Exemple 1 : Placer des zéros binaires dans des enregistrements copiés à partir d’un jeu de données séquentiel

Dans cet exemple, des zéros binaires sont placés dans deux champs de 100 enregistrements copiés à partir d’un ensemble de données séquentiel.
Après l’opération, chaque enregistrement de l’ensemble de données copié (OUTSET) contient des zéros binaires aux emplacements 20 à 29 et 50 à 59.

  //CLEAROUT JOB  ...
  //STEP1    EXEC PGM=IEBDG
  //SYSPRINT DD  SYSOUT=A
  //SEQIN    DD  DSNAME=INSET,UNIT=tape,DISP=(OLD,KEEP),
  //             DCB=(RECFM=FB,LRECL=80,BLKSIZE=800),
  //             LABEL=(,NL),VOLUME=SER=222222
  //SEQOUT   DD  DSNAME=OUTSET,UNIT=tape,DISP=(,KEEP),
  //             DCB=(RECFM=FB,LRECL=80,BLKSIZE=800),
  //             VOLUME=SER=222333,LABEL=(,NL)
  //SYSIN    DD  *
         DSD     OUTPUT=(SEQOUT),INPUT=(SEQIN)
         FD      NAME=FIELD1,LENGTH=10,STARTLOC=20
         FD      NAME=FIELD2,LENGTH=10,STARTLOC=50
         CREATE  QUANTITY=100,INPUT=SEQIN,NAME=(FIELD1,FIELD2)
         END
/*

Les instructions de contrôle sont les suivantes :

  • SEQIN DD définit un ensemble de données d’entrée séquentiel (INSET).
    L’ensemble de données a été écrit à l’origine sur un volume de bande sans étiquette.
  • SEQOUT DD définit le jeu de données de test (OUTSET).
    Les enregistrements de sortie sont identiques aux enregistrements d’entrée, à l’exception des emplacements 20 à 29 et 50 à 59, qui contiennent des zéros binaires à la fin de l’opération.
  • SYSIN DD définit l’ensemble de données de contrôle, qui suit dans le flux d’entrée.
  • DSD marque le début d’un ensemble d’instructions de contrôle d’utilitaire et fait référence aux instructions DD définissant les ensembles de données d’entrée et de sortie.
  • Les première et deuxième instructions FD créent deux champs de 10 octets (FIELD1 et FIELD2).
    Étant donné qu’aucun modèle n’est spécifié pour ces champs, chaque champ contient le remplissage par défaut de zéros binaires.
    Les champs doivent commencer aux 20e et 50e octets de chaque enregistrement de sortie.
  • CREATE construit 100 enregistrements de sortie dans lesquels le contenu des champs précédemment définis (FIELD1, FIELD2) est placé à leurs emplacements de départ respectifs dans chacun des enregistrements de sortie.
    Les enregistrements d’entrée de l’ensemble de données INSET sont utilisés comme base des enregistrements de sortie.
  • END signale la fin d’un ensemble d’instructions de contrôle d’utilitaire.

Exemple 2 : Modèle alphabétique d’ondulation (ripple) sur 10 octets

//RIPPLE   JOB  ...
//STEP1    EXEC PGM=IEBDG
//SYSPRINT DD  SYSOUT=A
//SEQIN    DD  DSNAME=INSET,UNIT=tape,VOL=SER=222222,
//             DCB=(RECFM=FB,LRECL=80,BLKSIZE=800),DISP=(OLD,KEEP)
//SEQOUT   DD  DSNAME=OUTSET,UNIT=disk,VOLUME=SER=111111,
//             DCB=(RECFM=FB,LRECL=80,BLKSIZE=800),
//             DISP=(,KEEP),SPACE=(TRK,(10,10))
//SYSIN    DD  *
     DSD     OUTPUT=(SEQOUT),INPUT=(SEQIN)
     FD      NAME=FIELD1,LENGTH=10,FORMAT=AL,ACTION=RP,STARTLOC=1
     CREATE  QUANTITY=100,INPUT=SEQIN,NAME=FIELD1
     END
/*

Les instructions de contrôle sont les suivantes :

  • SEQIN DD définit un ensemble de données séquentielles d’entrée (INSET).
    L’ensemble de données a été écrit à l’origine sur un volume de bande étiqueté standard.
  • SEQOUT DD définit le jeu de données de sortie de test (OUTSET).
    Dix pistes d’espace primaire et dix pistes d’espace secondaire sont allouées pour l’ensemble de données séquentielles sur un volume de disque.
  • SYSIN DD définit l’ensemble de données de contrôle, qui suit dans le flux d’entrée.
  • DSD marque le début d’un ensemble d’instructions de contrôle d’utilitaire et fait référence aux instructions DD définissant les ensembles de données d’entrée et de sortie.
  • L’instruction FD crée un champ de 10 octets dans lequel le modèle ABCDEFGHIJ est initialement placé.
    Les données sont ondulées après l’écriture de chaque enregistrement de sortie.
  • CREATE construit 100 enregistrements de sortie dans lesquels le contenu d’un champ préalablement défini (FIELD1) est inclus.
    L’instruction CREATE utilise les enregistrements d’entrée de l’ensemble de données INSET comme base des enregistrements de sortie.
  • END signale la fin d’un ensemble d’instructions de contrôle d’utilitaire.

Exemple 3 : Création d’enregistrements de sortie à partir d’instructions de contrôle d’utilitaire

Dans cet exemple, les enregistrements de sortie sont entièrement créés à partir d’instructions de contrôle d’utilitaire.
Trois champs sont créés et utilisés dans la construction des enregistrements de sortie.
Dans deux des champs, les données alphabétiques sont tronquées ; l’autre champ est un champ numérique qui est incrémenté (indexé) de un après l’écriture de chaque enregistrement de sortie.

La figure 1 montre le contenu des enregistrements de sortie à la fin du step du job.

Figure 1 : Contenue des enregistrements en sortie du step
                                                                       72
//UTLYONLY JOB  ...
//STEP1    EXEC PGM=IEBDG
//SYSPRINT DD  SYSOUT=A
//SEQOUT   DD  DSNAME=OUTSET,UNIT=disk,DISP=(,KEEP),
//             DCB=(RECFM=FB,LRECL=80,BLKSIZE=800),
//             SPACE=(TRK,(10,10)),VOLUME=SER=111111
//SYSIN    DD  DATA
   DSD OUTPUT=(SEQOUT)
   FD  NAME=CHAMP1,LENGTH=30,STARTLOC=1,FORMAT=AL,ACTION=TL
   FD  NAME=CHAMP2,LENGTH=30,STARTLOC=31,FORMAT=AL,ACTION=TR
   FD  NAME=CHAMP3,LENGTH=10,STARTLOC=71,PICTURE=10,                   X
               P'1234567890',INDEX=1
   CREATE QUANTITY=100,NAME=(FIELD1,FIELD2,FIELD3),FILL=X'FF'
   END
/*

Les instructions de contrôle sont les suivantes :

  • SEQOUT DD définit l’ensemble de données de sortie de test.
    Dix pistes d’espace primaire et dix pistes d’espace secondaire sont allouées pour l’ensemble de données séquentielles sur un volume de disque.
  • SYSIN DD définit l’ensemble de données de contrôle, qui suit dans le flux d’entrée.
  • DSD marque le début d’un ensemble d’instructions de contrôle d’utilitaire et fait référence à l’instruction DD définissant l’ensemble de données de sortie.
  • FD définit le contenu de trois champs à utiliser dans la construction des enregistrements de sortie.
    Le premier champ contient 30 octets de données alphabétiques à tronquer à gauche après l’écriture de chaque enregistrement de sortie.
    Le deuxième champ contient 30 octets de données alphabétiques à tronquer juste après l’écriture de chaque enregistrement de sortie.
    Le troisième champ est un champ de 10 octets contenant un nombre décimal condensé (1234567890) à augmenter de un après l’écriture de chaque enregistrement.
  • CREATE construit 100 enregistrements de sortie dans lesquels le contenu des champs précédemment définis (CHAMP1, CHAMP2 et CHAMP3) est inclus.
    Notez qu’après l’écriture de chaque enregistrement, CHAMP1et CHAMP2 sont restaurés en pleine largeur.
  • END signale la fin d’un ensemble d’instructions de contrôle d’utilitaire.

Exemple 4 : Utiliser les membres et les enregistrements d’entrée comme base du membre de sortie

Dans cet exemple, deux membres partitionnés et des enregistrements d’entrée du flux d’entrée sont utilisés comme base d’un membre de sortie partitionné.
Chaque bloc de 12 enregistrements de sortie contient 10 enregistrements modifiés d’un membre partitionné d’entrée et deux enregistrements du flux d’entrée.
La figure 2 montre le contenu du membre partitionné de sortie à la fin du step.

Figure 2. Membre partitionné en sortie à l’achèvement du step
//MIX      JOB  ...
//STEP1    EXEC PGM=IEBDG
//SYSPRINT DD  SYSOUT=A
//PARIN1   DD  DSNAME=INSET1(MEMBA),UNIT=disk,DISP=OLD,
//             DCB=(RECFM=FB,LRECL=80,BLKSIZE=800,DSORG=PS),
//             VOLUME=SER=111111
//PARIN2   DD  DSNAME=INSET2(MEMBA),UNIT=disk,DISP=OLD,
//             DCB=(RECFM=FB,LRECL=80,BLKSIZE=960,DSORG=PS),
//             VOLUME=SER=222222
//PAROUT   DD  DSNAME=PARSET(MEMBA),UNIT=disk,DISP=(,KEEP),
//             VOLUME=SER=333333,SPACE=(TRK,(10,10,5)),
//             DCB=(RECFM=FB,LRECL=80,BLKSIZE=960,DSORG=PO)
//SYSIN    DD  DATA
   DSD     OUTPUT=(PAROUT),INPUT=(PARIN1,PARIN2)
   FD      NAME=CHAMP1,LENGTH=13,PICTURE=13,BATIMENT  003'
   REPEAT  QUANTITY=10,CREATE=2
   CREATE  QUANTITY=10,INPUT=PARIN1,NAME=CHAMP1
   CREATE  QUANTITY=2,INPUT=SYSIN
 
  (enregistrements d'entrée 1 à 20)
 
$$$E
   REPEAT  QUANTITY=10,CREATE=2
   CREATE  QUANTITY=10,INPUT=PARIN2,NAME=CHAMP1
   CREATE  QUANTITY=2,INPUT=SYSIN
 
  (enregistrements d'entrée 21 à 40)
 
$$$E
   END
/*

Les instructions de contrôle sont les suivantes :

  • PARIN1 DD définit l’un des membres partitionnés en entrée.
  • PARIN 2 DD définit le second des membres partitionnés en entrée.
    (Notez que les membres proviennent de différents ensembles de données partitionnés.)
  • PAROUT DD définit le membre partitionné de sortie.
    Cet exemple suppose que l’ensemble de données partitionné n’existe pas avant le step ;
    c’est-à-dire que cette instruction DD alloue de l’espace pour l’ensemble de données partitionnées.
  • SYSIN DD définit l’ensemble de données de contrôle, qui suit dans le flux d’entrée.
  • DSD marque le début d’un ensemble d’instructions de contrôle d’utilitaire et fait référence aux instructions DD définissant les ensembles de données d’entrée et de sortie.
  • FD crée un champ de 13 octets dans lequel l’image BATIMENT 003 est placée.
  • La première instruction REPEAT indique que le groupe suivant de deux instructions CREATE doit être répété 10 fois.
  • La première instruction CREATE crée 10 enregistrements de sortie.
    Chaque enregistrement de sortie est construit à partir d’un enregistrement d’entrée (de l’ensemble de données partitionné INSET1) et du CHAMP1 précédemment défini.
  • La deuxième instruction CREATE indique que deux enregistrements doivent être construits à partir des enregistrements d’entrée inclus ensuite dans le flux d’entrée.
  • L’enregistrement $$$E sépare les enregistrements d’entrée de l’instruction REPEAT.
    Le groupe d’instructions REPEAT suivant est identique au groupe précédent, sauf que les enregistrements d’un membre partitionné différent sont utilisés comme entrée.
  • END signale la fin d’un ensemble d’instructions de contrôle d’utilitaire.

Exemple 5 : Créer des enregistrements dans trois ensembles de données de sortie et les écrire dans trois membres d’ensembles de données partitionnés

Restriction : Cet exemple ne fonctionnera pas si les ensembles de données sont des ensembles de données gérés par le système ou SMS.

Dans cet exemple, les enregistrements de sortie sont créés à partir de trois ensembles d’instructions de contrôle d’utilitaire et écrits dans trois membres dans un ensemble de données partitionnées.
Quatre champs sont créés et utilisés dans la construction des enregistrements de sortie.
Dans deux des champs (CHAMP1 et CHAMP3), les données alphabétiques sont décalées.
CHAMP2 est décimal zoné fixe et CHAMP4 est alphanumérique fixe.

La figure 3 montre les membres de l’ensemble de données partitionnées à la fin du step du job.

Figure 3. Membres de l’ensemble de données partitionnées à l’achèvement du step
//UTSTS    JOB  ...
//STEP1    EXEC PGM=IEBDG
//SYSPRINT DD  SYSOUT=A
//PAROUT1  DD  DSNAME=PARSET(MEMBA),UNIT=disk,DISP=(,KEEP),
//             VOLUME=SER=111111,SPACE=(TRK,(10,10,5)),
//             DCB=(RECFM=FB,LRECL=80,BLKSIZE=800)
//PAROUT2  DD  DSNAME=PARSET(MEMBB),UNIT=AFF=PAROUT1,
//             DCB=(RECFM=FB,LRECL=80,BLKSIZE=800)
//             DISP=OLD,VOLUME=SER=111111
//PAROUT3  DD  DSNAME=PARSET(MEMBC),UNIT=AFF=PAROUT1,
//             DCB=(RECFM=FB,LRECL=80,BLKSIZE=800)
//             DISP=OLD,VOLUME=SER=111111
//SYSIN    DD  DATA
       DSD     OUTPUT=(PAROUT1)
       FD      NAME=CHAMP1,LENGTH=30,FORMAT=AL,ACTION=SL
       FD      NAME=CHAMP2,LENGTH=20,FORMAT=ZD
       FD      NAME=FIELD3,LENGTH=20,FORMAT=AL,ACTION=SR
       FD      NAME=CHAMP4,LENGTH=30,FORMAT=AN
       CREATE  QUANTITY=4,NAME=(CHAMP1,CHAMP3,CHAMP2)
       END
       DSD     OUTPUT=(PAROUT2)
       CREATE  QUANTITY=4,NAME=(CHAMP2,(COPY=3,CHAMP3))
       END
       DSD     OUTPUT=(PAROUT3)
       CREATE  QUANTITY=4,NAME=(CHAMP4,CHAMP1)
       END
/*

Les instructions de contrôle sont les suivantes :

  • PAROUT1 DD définit le premier membre (MEMBA) de l’ensemble de données de sortie partitionnées.
    Cet exemple suppose que l’ensemble de données partitionnées n’existe pas avant cette étape de travail ;
    c’est-à-dire que cette instruction DD alloue de l’espace pour l’ensemble de données.
  • PAROUT2 et PAROUT3 DD définissent respectivement les deuxième et troisième membres de l’ensemble de données partitionné en sortie.
    Notez que chaque instruction DD spécifie DISP=OLD et UNIT=AFF=PAROUT1.
  • SYSIN DD définit l’ensemble de données de contrôle qui suit dans le flux d’entrée.
  • DSD marque le début d’un ensemble d’instructions de contrôle d’utilitaire et fait référence à l’instruction DD définissant le membre applicable à cet ensemble d’instructions de contrôle d’utilitaire.
  • FD définit le contenu d’un champ qui est utilisé dans la construction ultérieure des enregistrements de sortie.
  • CREATE construit quatre enregistrements à partir de combinaisons de champs précédemment définis.
  • END signale la fin d’un ensemble d’instructions de contrôle d’utilitaire.

Exemple 6 : Création d’enregistrements avec vos propres modèles

Dans cet exemple, 10 champs contenant des modèles de caractères fournis par l’utilisateur sont utilisés dans la construction des enregistrements de sortie.
Une fois qu’un enregistrement est écrit, chaque champ est roulé ou agité, comme spécifié dans l’instruction FD applicable.

La figure 4 montre le contenu des enregistrements de sortie à la fin du step.

Figure 4.
 Contenu des enregistrements de sortie à l’achèvement du step
//ROLLWAVE JOB  ...
//STEP1    EXEC PGM=IEBDG
//SYSPRINT DD  SYSOUT=A
//OUTSET   DD  DSNAME=SEQSET,UNIT=disk,DISP=(,KEEP),
//             VOLUME=SER=SAMP,SPACE=(TRK,(10,10)),
//             DCB=(RECFM=FB,LRECL=80,BLKSIZE=800)
//SYSIN    DD  *
  DSD    OUTPUT=(OUTSET)
  FD     NAME=CHAMP1,LENGTH=8,PICTURE=8,'   AAAAA',ACTION=RO
  FD     NAME=CHAMP2,LENGTH=8,PICTURE=8,'BBBBB   ',ACTION=RO
  FD     NAME=CHAMP3,LENGTH=8,PICTURE=8,'A   AA  ',ACTION=RO
  FD     NAME=CHAMP4,LENGTH=8,PICTURE=8,' BB    B',ACTION=RO
  FD     NAME=CHAMP5,LENGTH=8,PICTURE=8,'   AAA  ',ACTION=RO
  FD     NAME=CHAMP6,LENGTH=8,PICTURE=8,'   CCCCC',ACTION=WV
  FD     NAME=CHAMP7,LENGTH=8,PICTURE=8,'  DDDD  ',ACTION=WV
  FD     NAME=CHAMP8,LENGTH=8,PICTURE=8,'  C  CC ',ACTION=WV
  FD     NAME=CHAMP9,LENGTH=8,PICTURE=8,'  DD   D',ACTION=WV
  FD     NAME=CHAMP10,LENGTH=8,PICTURE=8,'  CCC   ',ACTION=WV
  CREATE QUANTITY=300,NAME=(CHAMP1,CHAMP2,CHAMP3,                       X
            CHAMP4,CHAMP5,CHAMP6,CHAMP7,CHAMP8,CHAMP9,CHAMP10)
  END
/*

Les instructions de contrôle sont les suivantes :

  • PAROUT1 DD définit le premier membre (MEMBA) de l’ensemble de données de sortie partitionnées.
    Cet exemple suppose que l’ensemble de données partitionnées n’existe pas avant ce step ;
    c’est-à-dire que cette instruction DD alloue de l’espace pour l’ensemble de données.
  • PAROUT2 et PAROUT3 DD définissent respectivement les deuxième et troisième membres de l’ensemble de données partitionné en sortie.
    Notez que chaque instruction DD spécifie DISP=OLD et UNIT=AFF=PAROUT1.
  • SYSIN DD définit l’ensemble de données de contrôle qui suit dans le flux d’entrée.
  • DSD marque le début d’un ensemble d’instructions de contrôle d’utilitaire et fait référence à l’instruction DD définissant le membre applicable à cet ensemble d’instructions de contrôle d’utilitaire.
  • FD définit le contenu d’un champ qui est utilisé dans la construction ultérieure des enregistrements de sortie.
  • CREATE construit quatre enregistrements à partir de combinaisons de champs précédemment définis.
  • END signale la fin d’un ensemble d’instructions de contrôle d’utilitaire.