JCL – IEBUPDTE

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

Tableau 1. Répertoire d’exemples IEBUPDTE

OpérationOrganisation de l’ensemble de donnéesDispositifCommentairesExemple
ADD et REPLPartitionnéDisqueUne procédure JCL est stockée en tant que nouveau membre d’une bibliothèque de procédures (PROCLIB). Une autre procédure JCL consiste à remplacer un membre existant dans PROCLIB.Exemple 1 : placer deux procédures dans SYS1.PROCLIB
CREATE une bibliothèque partitionnéePartitionnéDisqueLes données d’entrée se trouvent dans le jeu de données de contrôle. L’ensemble de données partitionné en sortie doit contenir trois membres.Exemple 2 : créer une bibliothèque à trois membres
CREATE un ensemble de données partitionnéesPartitionnéDisqueEntrée de l’ensemble de données de contrôle et de l’ensemble de données partitionné existant. L’ensemble de données partitionné en sortie doit contenir trois membres.Exemple 3 : créer une nouvelle bibliothèque en utilisant SYS1.MACLIB comme source
UPDATE INPLACE et renuméroterPartitionnéDisqueL’ensemble de données d’entrée est également considéré comme l’ensemble de données de sortie ; par conséquent, aucune instruction SYSUT2 DD n’est requise.Exemple 4 : Mettre à jour un membre de la bibliothèque
CREATE et DELETEPartitionné, séquentielDisque et bandeLe maître séquentiel est créé à partir d’une entrée de disque partitionné. Les enregistrements sélectionnés doivent être supprimés. Sortie bloquée.Exemple 5 : Créer un nouveau jeu de données maître et supprimer les enregistrements sélectionnés
CREATE, DELETE et UPDATEBande et disque partitionnés séquentielsL’ensemble de données partitionné est créé à partir d’une entrée séquentielle. Les enregistrements doivent être supprimés et mis à jour. Numéros de séquence dans les colonnes autres que 73 à 80. Un membre est placé dans le jeu de données de sortie.Exemple 6 : créer et mettre à jour un membre de bibliothèque
INSERTPartitionnéDisqueLe bloc d’enregistrements logiques est inséré dans un membre existant.Exemple 7 : Insérer des enregistrements dans un membre de la bibliothèque
INSERTPartitionnéDisqueDeux blocs d’enregistrements logiques doivent être insérés dans un membre existant. Les numéros de séquence sont alphanumériques.Exemple 8 : renuméroter et insérer des enregistrements dans un membre de la bibliothèque
CREATESéquentielLecteur de carte et disqueUn ensemble de données séquentiel avec des étiquettes d’utilisateur est créé à partir de l’entrée de la carte.Exemple 9 : Créer un ensemble de données séquentielles à partir d’une entrée de carte
COPIESéquentielDisqueL’ensemble de données séquentiel est copié d’un volume à accès direct à un autre ; les étiquettes d’utilisateur peuvent être traitées par des routines de sortie.Exemple 10 : copier un ensemble de données séquentiel d’un volume à un autre
CREATEPartitionnéDisqueCréer une nouvelle génération.Exemple 11 : créer un nouvel ensemble de données partitionnées

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 a défini les périphériques sur votre système.

Exemples

Exemple 1 : Placer deux procédures dans SYS1.PROCLIB

Dans cet exemple, deux procédures doivent être placées dans la bibliothèque de procédures cataloguées, SYS1.PROCLIB.
L’exemple suppose que les deux procédures peuvent être logées dans l’espace initialement alloué à la bibliothèque de procédures.

//UPDATE   JOB  ...
//STEP1    EXEC PGM=IEBUPDTE,PARM=MOD
//SYSPRINT DD   SYSOUT=A
//SYSUT1   DD   DSNAME=SYS1.PROCLIB,DISP=OLD
//SYSUT2   DD   DSNAME=SYS1.PROCLIB,DISP=OLD
//SYSIN    DD   DATA
./        ADD   LIST=ALL,NAME=ERASE,LEVEL=01,SOURCE=0
./     NUMBER   NEW1=10,INCR=10
//ERASE    EXEC PGM=IEBUPDTE
//DD1      DD   UNIT=disk,DISP=(OLD,KEEP),VOLUME=SER=111111
//SYSPRINT DD   SYSOUT=A
./       REPL   LIST=ALL,NAME=LISTPROC
./     NUMBER   NEW1=10,INCR=10
//LIST     EXEC PGM=IEBGENER
//SYSPRINT DD   SYSOUT=A
//SYSUT1   DD   DISP=SHR,DSN=SYS1.PROCLIB(&MEMBER)
//SYSUT2   DD   SYSOUT=A,DCB=(RECFM=F,BLKSIZE=80)
//SYSIN    DD   DATA
./      ENDUP
/*

Les instructions de contrôle sont les suivantes :

  • SYSUT1 et SYSUT2 DD définissent le jeu de données SYS1.PROCLIB, qui est supposé être catalogué.
  • SYSIN DD définit l’ensemble de données de contrôle, qui suit dans le flux d’entrée.
    L’ensemble de données contient les instructions de contrôle de l’utilitaire et les données à placer dans la bibliothèque de procédures.
  • L’instruction de fonction ADD indique que les enregistrements (instructions de données) de l’ensemble de données de contrôle doivent être placés dans la sortie.
    La procédure nouvellement créée, ERASE, est répertoriée dans le fichier de messages.
    La fonction ADD n’aura pas lieu si un membre nommé ERASE existe déjà dans le nouveau jeu de données maître référencé par SYSUT2.
  • La première instruction détaillée NUMBER indique que les procédures nouvelles et de remplacement doivent recevoir des numéros de séquence.
    Le premier enregistrement de chaque procédure se voit attribuer le numéro de séquence 10 ; l’enregistrement suivant se voit attribuer le numéro de séquence 20, et ainsi de suite.
  • L’instruction ERASE EXEC marque le début de la première nouvelle procédure.
  • L’instruction de fonction REPL indique que les enregistrements (instructions de données) dans l’ensemble de données de contrôle doivent remplacer un membre déjà existant.
    Le membre est stocké dans le nouvel ensemble de données de base référencé par SYSUT2.
    La fonction REPL n’aura lieu que si un membre nommé LISTPROC existe déjà dans l’ancien ensemble de données de base référencé par SYSUT1.
  • La deuxième instruction détaillée NUMBER est un doublon de la première.
  • L’instruction LIST EXEC marque le début de la deuxième nouvelle procédure.
  • L’instruction ENDUP marque la fin des données d’entrée SYSIN DD.

Exemple 2 : création d’une bibliothèque à trois membres

Dans cet exemple, une bibliothèque partitionnée à trois membres est créée.
Les données d’entrée sont contenues uniquement dans le jeu de données de contrôle.

//UPDATE   JOB  ...
//STEP1    EXEC PGM=IEBUPDTE,PARM=NEW
//SYSPRINT DD  SYSOUT=A
//SYSUT2   DD  DSNAME=OUTLIB,UNIT=disk,DISP=(NEW,CATLG),
//             VOLUME=SER=111112,SPACE=(TRK,(50,,10)),
//             DCB=(RECFM=F,LRECL=80,BLKSIZE=80)
//SYSIN    DD  DATA
./        ADD   NAME=MEMB1,LEVEL=00,SOURCE=0,LIST=ALL

  (Instructions de données, numéros de séquence dans les colonnes 73 à 80)
 
./        ADD   NAME=MEMB2,LEVEL=00,SOURCE=0,LIST=ALL
 
  (Instructions de données, numéros de séquence dans les colonnes 73 à 80)
 
./        ADD   NAME=MEMB3,LEVEL=00,SOURCE=0,LIST=ALL
 
  (Instructions de données, numéros de séquence dans les colonnes 73 à 80)
 
./      ENDUP
/*

Les instructions de contrôle sont les suivantes :

  • SYSUT2 DD définit le nouveau maître partitionné, OUTLIB.
    Un espace suffisant est alloué pour permettre des modifications ultérieures sans créer un nouvel ensemble de données maître.
  • SYSIN DD définit l’ensemble de données de contrôle, qui suit dans le flux d’entrée.
    L’ensemble de données contient les instructions de contrôle de l’utilitaire et les données à placer sous forme de trois membres dans l’ensemble de données partitionnées de sortie.
  • Les instructions de la fonction ADD indiquent que les instructions de données suivantes doivent être placées en tant que membres dans l’ensemble de données partitionnées de sortie.
    Chaque instruction de fonction ADD spécifie un nom de membre pour les données suivantes et indique que l’instruction de membre et de contrôle est répertoriée dans l’ensemble de données de message.
  • Les instructions de données contiennent les données à placer dans chaque membre de l’ensemble de données partitionnées en sortie.
  • ENDUP signale la fin de l’entrée du jeu de données de contrôle.

Étant donné que les numéros de séquence (autres que les numéros vides) sont inclus dans les instructions de données, aucune instruction détaillée NUMBER n’est incluse dans l’exemple.

Exemple 3 : Créer une nouvelle bibliothèque en utilisant SYS1.MACLIB comme source

Dans cet exemple, un ensemble de données partitionnées à trois membres (NEWMCLIB) est créé.
L’ensemble de données contiendra deux membres, ATTACH et DETACH, copiés à partir d’un ensemble de données partitionné existant (SYS1.MACLIB), et un nouveau membre, EXIT, contenu dans l’ensemble de données de contrôle.

//UPDATE   JOB  ...
//STEP1    EXEC PGM=IEBUPDTE,PARM=MOD
//SYSPRINT DD  SYSOUT=A
//SYSUT1   DD  DSNAME=SYS1.MACLIB,DISP=SHR
//SYSUT2   DD  DSNAME=DEV.DRIVER3.NEWMCLIB,UNIT=disk,
//             DISP=(NEW,CATLG),SPACE=(TRK,(100,,10)),
//             DCB=(RECFM=F,LRECL=80,BLKSIZE=4000)
//SYSIN    DD  DATA
./      REPRO   NAME=ATTACH,LEVEL=00,SOURCE=1,LIST=ALL
./      REPRO   NAME=DETACH,LEVEL=00,SOURCE=1,LIST=ALL
./        ADD   NAME=EXIT,LEVEL=00,SOURCE=1,LIST=ALL
./     NUMBER   NEW1=10,INCR=100
 
  (Enregistrements de données pour le membre EXIT)
 
./      ENDUP
/*

Les instructions de contrôle sont les suivantes :

  • SYSUT1 DD définit l’ensemble de données partitionné d’entrée SYS1.MACLIB, qui est supposé être catalogué.
  • SYSUT2 DD définit l’ensemble de données partitionnées de sortie DEV.DRIVER3,NEWMCLIB.
    Un espace suffisant est alloué pour permettre des modifications ultérieures sans créer un nouvel ensemble de données maître.
  • SYSIN DD définit l’ensemble de données de contrôle, qui suit dans le flux d’entrée.
  • Les instructions de la fonction REPRO identifient les membres d’entrée existants (ATTACH et DETACH) à copier dans l’ensemble de données de sortie.
    Ces membres sont également répertoriés dans l’ensemble de données de message (car LIST=ALL est spécifié).
  • L’instruction de fonction ADD indique que les enregistrements (instructions de données ultérieures) doivent être placés en tant que membres dans l’ensemble de données partitionné de sortie, appelé EXIT.
    Les déclarations de données doivent être répertoriées dans l’ensemble de données de message.
  • L’instruction de détail NUMBER attribue des numéros de séquence aux instructions de données.
    (Les instructions de données contiennent des numéros de séquence vides dans les colonnes 73 à 80.)
    Le premier enregistrement du membre de sortie se voit attribuer le numéro de séquence 10 ; les numéros d’enregistrement suivants sont augmentés de 100.
  • ENDUP signale la fin des données SYSIN.

Notez que les trois membres d’entrée nommés (ATTACH, DETACH et EXIT) n’ont pas besoin d’être spécifiés dans l’ordre de leur séquence de classement dans l’ancien maître.

Exemple 4 : Mettre à jour un membre de bibliothèque

Dans cet exemple, un membre (MODMEMB) est mis à jour dans l’espace qu’il occupe réellement.
Deux enregistrements logiques existants sont remplacés et le membre entier est renuméroté.

//UPDATE   JOB  ...
//STEP1    EXEC PGM=IEBUPDTE,PARM=MOD
//SYSPRINT DD  SYSOUT=A
//SYSUT1   DD  DSNAME=PDS,UNIT=disk,DISP=(OLD,KEEP),
//             VOLUME=SER=111112
//SYSIN    DD   *
./     CHANGE   NAME=MODMEMB,LIST=ALL,UPDATE=INPLACE
./     NUMBER   SEQ1=ALL,NEW1=10,INCR=5
 
  (Déclaration de données 1, numéro de séquence 00000020) 
  (Déclaration de données 2, séquence numéro 00000035) 
 
/*

Les instructions de contrôle sont les suivantes :

  • SYSUT1 DD définit l’ensemble de données partitionnées qui est mis à jour sur place.
    (Notez qu’il n’est pas nécessaire de spécifier le nom du membre dans l’instruction DD.)
  • SYSIN DD définit l’ensemble de données de contrôle, qui suit dans le flux d’entrée.
  • L’instruction de fonction CHANGE indique le nom du membre à mettre à jour (MODMEMB) et spécifie l’opération UPDATE=INPLACE.
    Le membre entier est répertorié dans l’ensemble de données de message.
    Notez que, comme la renumérotation est en cours, et puisque UPDATE=INPLACE a été spécifié, la liste aurait été fournie même si le paramètre LIST=ALL n’avait pas été spécifié.
    Voir le paramètre LIST pour plus d’informations.
  • L’instruction détaillée NUMBER indique que le membre entier doit être renuméroté et spécifie le premier numéro de séquence à attribuer et la valeur d’incrémentation (5) pour les numéros de séquence successifs.
  • Les instructions de données remplacent les enregistrements logiques existants ayant les numéros de séquence 20 et 35.

Exemple 5 : Créer un nouveau jeu de données de base et supprimer les enregistrements sélectionnés

Dans cet exemple, un nouveau jeu de données séquentiel principal est créé à partir d’une entrée partitionnée et les enregistrements logiques sélectionnés sont supprimés.

//UPDATE   JOB  ...
//STEP1    EXEC PGM=IEBUPDTE,PARM=MOD
//SYSPRINT DD  SYSOUT=A
//SYSUT1   DD  DSNAME=DCB.PARTDS,DISP=(OLD,KEEP)
//             VOLUME=SER=111112
//SYSUT2   DD  DSNAME=SEQDS,UNIT=tape,LABEL=(2,SL),
//             DISP=(,KEEP),VOLUME=SER=001234,
//             DCB=(RECFM=FB,LRECL=80,BLKSIZE=2000)
//SYSIN    DD  *
./     CHANGE   NEW=PS,NAME=OLDMEMB1
 
  (Instruction de données 1, numéro de séquence 00000123)
 
./     DELETE   SEQ1=223,SEQ2=246
 
  (Instruction de données 2, numéro de séquence 00000224)
 
/*

Les instructions de contrôle sont les suivantes :

  • SYSUT1 DD définit l’ensemble de données partitionnées d’entrée DCB.PARTDS, qui réside sur un volume de disque.
  • SYSUT2 DD définit l’ensemble de données séquentielles de sortie, SEQDS.
    L’ensemble de données est écrit en tant que second ensemble de données sur un volume de bande.
  • SYSIN DD définit l’ensemble de données de contrôle, qui suit dans le flux d’entrée.
  • CHANGE identifie le membre d’entrée (OLDMEMB1) et indique que la sortie est un ensemble de données séquentielles (NEW=PS).
  • Le premier relevé de données remplace l’enregistrement logique dont le numéro de séquence est identique au numéro de séquence dans le relevé de données (00000123).
    Si un tel enregistrement logique n’existe pas, la déclaration de données est incorporée dans l’ordre approprié dans l’ensemble de données de sortie.
  • L’instruction de détail DELETE supprime les enregistrements logiques dont les numéros de séquence sont compris entre 223 et 246 inclus.
  • La deuxième instruction de données est insérée dans la séquence appropriée dans l’ensemble de données de sortie, car aucun enregistrement logique avec le numéro de séquence 224 n’existe (il a été supprimé dans l’instruction précédente).

Notez qu’un seul membre peut être utilisé comme entrée lors de la conversion en organisation séquentielle.

Exemple 6 : Création et mise à jour d’un membre de bibliothèque

Dans cet exemple, un membre d’un ensemble de données partitionné est créé à partir d’une entrée séquentielle et les enregistrements logiques existants sont mis à jour.

//UPDATE   JOB  ...
//STEP1    EXEC PGM=IEBUPDTE,PARM=MOD
//SYSPRINT DD  SYSOUT=A
//SYSUT1   DD  DSNAME=BROWN.OLDSEQDS,UNIT=tape,
//             DISP=(OLD,KEEP),VOLUME=SER=001234
//SYSUT2   DD  DSNAME=BROWN.NEWPART,UNIT=disk,DISP=(,CATLG),
//             VOLUME=SER=111112,SPACE=(TRK,(10,5,5)),
//             DCB=(RECFM=FB,LRECL=80,BLKSIZE=4080)
//SYSIN    DD  *
./     CHANGE   NEW=PO,MEMBER=PARMEM1,LEVEL=01,
./             SEQFLD=605,COLUMN=40,SOURCE=0
 
  (Instruction de données 1, numéro de séquence 00020)
 
./     DELETE   SEQ1=220,SEQ2=250
 
  (Instruction de données 2, numéro de séquence 00230) 
  (Instruction de données 3, numéro de séquence 00260)
 
./      ALIAS   NAME=MEMB1
/*

Les instructions de contrôle sont les suivantes :

  • SYSUT1 DD définit le jeu de données séquentielles d’entrée (BROWN.OLDSEQDS).
    L’ensemble de données réside sur un volume de bande.
  • SYSUT2 DD définit le jeu de données partitionné en sortie (BROWN.NEWPART).
    Suffisamment d’espace est alloué pour accueillir des membres qui pourraient être ajoutés à l’avenir.
  • SYSIN DD définit l’ensemble de données de contrôle, qui suit dans le flux d’entrée.
  • L’instruction de fonction CHANGE identifie le membre de sortie (PARMEM1) et indique qu’une conversion de l’entrée séquentielle en sortie partitionnée est effectuée.
    Le paramètre SEQFLD indique qu’un numéro de séquence de 5 octets se trouve dans les colonnes 60 à 64 de chaque instruction de données.
    Le paramètre COLUMN=40 spécifie la colonne de départ d’un champ (dans les instructions de données suivantes) à partir de laquelle les informations de remplacement sont obtenues.
    SOURCE=0 indique que les informations de remplacement sont fournies par vous.
  • La première déclaration de données est utilisée comme données de remplacement.
    Les colonnes 40 à 80 de l’instruction remplacent les colonnes 40 à 80 de l’enregistrement logique correspondant.
    Si un tel enregistrement logique n’existe pas, l’image de carte entière est insérée dans le membre d’ensemble de données de sortie.
  • L’instruction de détail DELETE supprime tous les enregistrements logiques ayant des numéros de séquence de 220 à 250.
  • La deuxième instruction de données, dont le numéro de séquence se situe dans la plage spécifiée dans l’instruction détaillée DELETE, est incorporée dans son intégralité dans le membre de l’ensemble de données de sortie.
  • La troisième instruction de données, qui est au-delà de la plage de l’instruction de détail DELETE, est traitée de la même manière que la première instruction de données.
  • ALIAS attribue le nom d’alias MEMB1 au membre de l’ensemble de données de sortie PARMEM1.

Exemple 7 : Insertion d’enregistrements dans un membre de bibliothèque

Dans cet exemple, un bloc de trois enregistrements logiques est inséré dans un membre existant et le membre mis à jour est placé dans l’ensemble de données partitionné existant.

//UPDATE   JOB  ...
//STEP1    EXEC PGM=IEBUPDTE,PARM=MOD
//SYSPRINT DD  SYSOUT=A
//SYSUT1   DD  DSNAME=PDS,UNIT=disk,DISP=(OLD,KEEP),
//             VOLUME=SER=111112
//SYSUT2   DD  DSNAME=PDS,UNIT=disk,DISP=(OLD,KEEP),
//             VOLUME=SER=111112
//SYSIN    DD  *
./     CHANGE   NAME=RENUM,LIST=ALL,LEVEL=01,SOURCE=0
./     NUMBER   SEQ1=15,NEW1=20,INCR=5,INSERT=YES
 
  (Déclaration de données 1) 
  (Déclaration de données 2) 
  (Déclaration de données 3) 
 
/*

Les instructions de contrôle sont les suivantes :

  • SYSUT1 et SYSUT2 DD définissent le jeu de données partitionnées (PDS).
  • SYSIN DD définit l’ensemble de données de contrôle, qui suit dans le flux d’entrée.
  • L’instruction de fonction CHANGE identifie le membre d’entrée RENUM.
    Le membre entier est répertorié dans l’ensemble de données de message.
  • L’instruction détaillée NUMBER spécifie l’opération d’insertion et contrôle l’opération de renumérotation.
  • Les instructions de données sont les enregistrements logiques à insérer.
    (Les numéros de séquence sont attribués lorsque les instructions de données sont insérées.)

Dans cet exemple, les enregistrements logiques existants portent les numéros de séquence 10, 15, 20, 25 et 30.
Les numéros de séquence sont attribués par l’instruction détaillée NUMBER, comme suit :

  1. L’instruction de données 1 reçoit le numéro de séquence 20 (NEW1=20) et est insérée après l’enregistrement logique existant 15 (SEQ1=15).
  2. Les énoncés de données 2 et 3 reçoivent les numéros de séquence 25 et 30 (INCR=5) et sont insérés après l’énoncé de données 1.
  3. Les enregistrements logiques existants 20, 25 et 30 reçoivent respectivement les numéros de séquence 35, 40 et 45.

Le tableau 2 montre les numéros de séquence existants, les déclarations de données insérées et les nouveaux numéros de séquence qui en résultent.

Numéros de séquence et déclarations de donnéesNouveaux numéros de séquence
1010
1515
Déclaration de données 120
Déclaration de données 225
Déclaration de données 330
2035
2540
3045

Exemple 8 : Renuméroter et insérer des enregistrements dans un membre de bibliothèque

Dans cet exemple, deux blocs (trois enregistrements logiques par bloc) sont insérés dans un membre existant, et le membre est placé dans l’ensemble de données partitionné existant.
Une partie du membre de sortie est également renumérotée.

//UPDATE   JOB  ...
//STEP1    EXEC PGM=IEBUPDTE,PARM=MOD
//SYSPRINT DD  SYSOUT=A
//SYSUT1   DD  DSNAME=PDS,UNIT=disk,DISP=(OLD,KEEP),
//             VOLUME=SER=111112
//SYSUT2   DD  DSNAME=PDS,UNIT=disk,DISP=(OLD,KEEP),
//             VOLUME=SER=111112
//SYSIN    DD  *
./  CHANGE NAME=RENUM,LIST=ALL,LEVEL=01,SOURCE=0,SEQFLD=(765,783)
./  NUMBER SEQ1=AA015,NEW1=AA020,INCR=5,INSERT=YES
 
  (Déclaration de données 1) 
  (Déclaration de données 2) 
  (Déclaration de données 3) 
 
./  NUMBER SEQ1=AA030,INSERT=YES
 
  (Énoncé de données 4) 
  (Énoncé de données 5) 
  (Énoncé de données 6) 
  (Énoncé de données 7, numéro de séquence AA035)
 
/*

Les instructions de contrôle sont les suivantes :

  • SYSUT1 et SYSUT2 DD définissent l’ensemble de données partitionné PDS.
  • SYSIN DD définit l’ensemble de données de contrôle, qui suit dans le flux d’entrée.
  • L’instruction de fonction CHANGE identifie le membre d’entrée RENUM.
    Le membre entier est répertorié dans l’ensemble de données de message.
  • Les instructions de détail NUMBER spécifient les opérations d’insertion (INSERT=YES) et contrôlent l’opération de renumérotation.
  • Les instructions de données 1, 2, 3 et 4, 5, 6 sont les blocs d’enregistrements logiques à insérer.
    Parce qu’ils contiennent des numéros de séquence vides, les numéros de séquence sont attribués lorsque les instructions de données sont insérées.
  • L’instruction de données 7, parce qu’elle contient un numéro de séquence, arrête l’opération d’insertion.
    Le numéro de séquence est identique au numéro de l’enregistrement suivant dans l’ancien ensemble de données de base ; par conséquent, l’énoncé de données 7 remplacera l’ancien enregistrement principal portant le même numéro dans l’ensemble de données de sortie.

Les enregistrements logiques existants dans cet exemple ont les numéros de séquence AA010, AA015, AA020, AA025, AA030, AA035, AA040, AA045, AA050, BB010 et BB015.
Les opérations d’insertion et de renumérotation s’effectuent comme suit :

  1. L’instruction de données 1 reçoit le numéro de séquence AA020 (NEW1=AA020) et est insérée après l’enregistrement logique existant AA015 (SEQ1=AA015).
  2. Les énoncés de données 2 et 3 reçoivent les numéros de séquence AA025 et AA030 (INCR=5) et sont insérés après l’énoncé de données 1.
  3. Les enregistrements logiques existants AA020, AA025 et AA030 reçoivent respectivement les numéros de séquence AA035, AA040 et AA045.
  4. L’instruction de données 4 reçoit le numéro de séquence AA050 et est insérée.
    (La spécification SEQ1=AA030 dans la deuxième instruction NUMBER place cette instruction de données après l’enregistrement logique existant AA030, qui est devenu l’enregistrement logique AA045.)
  5. Les énoncés de données 5 et 6 reçoivent les numéros de séquence AA055 et AA060 et sont insérés après l’énoncé de données 4.
  6. L’enregistrement logique existant AA035 est remplacé par l’énoncé de données 7, auquel est attribué le numéro de séquence AA065.
  7. Les enregistrements logiques restants du membre sont renumérotés jusqu’à ce que l’enregistrement logique BB010 soit rencontré.
    Comme cet enregistrement a un numéro de séquence supérieur au prochain numéro à attribuer, l’opération de renumérotation est terminée.

Le tableau 3 montre les numéros de séquence existants, les déclarations de données insérées et les nouveaux numéros de séquence.

Numéros de séquence et déclarations de donnéesNouveaux numéros de séquence
AA010AA010
AA015AA015
Déclaration de données 1AA020
Déclaration de données 2AA025
Déclaration de données 3AA030
AA020AA035
AA025AA040
AA030AA045
Déclaration de données 4AA050
Déclaration de données 5AA055
Déclaration de données 6AA060
AA035 (Déclaration de données 7)AA065
AA040AA070
AA045AA070
AA050AA075
BB010BB010
BB015BB015

Exemple 9 : Création d’un jeu de données séquentiel à partir d’une entrée de carte

Dans cet exemple, IEBUPDTE est utilisé pour créer un ensemble de données séquentielles à partir d’une entrée de carte.
Les étiquettes d’en-tête et de fin d’utilisateur, également issues du flux d’entrée, sont placées sur cet ensemble de données séquentielles.

//LABEL    JOB  ...
//CREATION EXEC PGM=IEBUPDTE,PARM=NEW
//SYSPRINT DD  SYSOUT=A
//SYSUT2   DD  DSNAME=LABEL,VOLUME=SER=123456,UNIT=disk,
//             DISP=(NEW,KEEP),LABEL=(,SUL),SPACE=(TRK,(15,3))
//SYSIN    DD  *
./      LABEL
 
  (Libellés d'en-tête) 
 
./        ADD   LIST=ALL,OUTHDR=ROUTINE1,OUTTLR=ROUTINE2
 
  (Enregistrements de données )
 
./      LABEL
 
  (Libellés de fin)
 
./      ENDUP
/*

Les instructions de contrôle sont les suivantes :

  • SYSUT2 DD définit et alloue de l’espace pour l’ensemble de données séquentielles de sortie, appelé LABEL, qui réside 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.
    (Cet ensemble de données de contrôle comprend l’ensemble de données d’entrée séquentielle et les étiquettes utilisateur, qui se trouvent sur des cartes.)
  • La première instruction LABEL identifie les images de carte de 80 octets dans le flux d’entrée qui deviendront des étiquettes d’en-tête utilisateur.
    (Ils peuvent être modifiés par la routine de traitement d’étiquette d’en-tête de l’utilisateur spécifiée dans l’instruction de fonction ADD.)
  • L’instruction de fonction ADD indique que les instructions de données qui suivent sont placées dans l’ensemble de données de sortie.
    Le jeu de données nouvellement créé est répertorié dans le jeu de données de message.
    Les routines d’en-tête et de fin de sortie de l’utilisateur doivent recevoir le contrôle avant l’écriture des étiquettes d’en-tête et de fin.
  • La deuxième instruction LABEL identifie les images de carte de 80 octets dans le flux d’entrée qui deviendront des étiquettes de fin d’utilisateur.
    (Ils peuvent être modifiés par la routine de traitement des étiquettes de fin de l’utilisateur spécifiée dans l’instruction de fonction ADD.)
  • ENDUP signale la fin du jeu de données de contrôle.

Exemple 10 : Copier un ensemble de données séquentiel d’un volume à un autre

Dans cet exemple, IEBUPDTE est utilisé pour copier un ensemble de données séquentielles d’un volume DASD à un autre.
Les étiquettes utilisateur sont traitées par des routines d’exit utilisateur.

//LABELS   JOB  ...
//STEP1    EXEC PGM=IEBUPDTE,PARM=(MOD,,INTLRTN)
//SYSPRINT DD  SYSOUT=A
//SYSUT1   DD  DSNAME=OLDMAST,DISP=OLD,LABEL=(,SUL),
//             VOLUME=SER=111111,UNIT=disk
//SYSUT2   DD  DSNAME=NEWMAST,DISP=(NEW,KEEP),LABEL=(,SUL),
//             UNIT=disk,VOLUME=SER=XB182,
//             SPACE=(TRK,(5,10))
//SYSIN    DD  DSNAME=INPUT,DISP=OLD,LABEL=(,SUL),
//             VOLUME=SER=222222,UNIT=disk
/*

Les instructions de contrôle sont les suivantes :

  • SYSUT1 DD définit l’ensemble de données séquentielles d’entrée, appelé OLDMAST, qui réside sur un volume de disque.
  • SYSUT2 DD définit l’ensemble de données séquentielles de sortie, appelé NEWMAST, qui résidera sur un volume de disque.
  • SYSIN DD définit le jeu de données de contrôle. Le contenu de cet ensemble de données résidant sur le disque dans cet exemple est :

    ./ LISTE REPRO=ALL,INHDR=INHRTN,INTLR=INTRTN, C
    ./ OUTHDR=OUTHRTN,OUTTLR=OUTTRN
    ./ ENDUP

  • L’instruction de fonction REPRO indique que l’ensemble de données séquentielles d’entrée existant est copié dans l’ensemble de données de sortie.
    Cet ensemble de données de sortie est répertorié dans l’ensemble de données de message.
    Les routines de traitement d’étiquettes de l’utilisateur doivent avoir le contrôle lorsque des étiquettes d’en-tête ou de fin sont rencontrées sur l’ensemble de données d’entrée ou de sortie.
  • ENDUP indique la fin du jeu de données de contrôle.

Exemple 11 : Création d’un nouvel ensemble de données partitionnées

Dans cet exemple, un ensemble de données de génération partitionné composé de trois membres est utilisé comme données source dans la création d’un nouvel ensemble de données partitionnées.
IEBUPDTE est également utilisé pour ajouter un quatrième membre aux trois membres source et pour numéroter le nouveau membre.
L’ensemble de données résultant est catalogué comme un nouvel ensemble de données partitionnées.

//NEWGDS   JOB  ...
//STEP1    EXEC PGM=IEBUPDTE,PARM=MOD
//SYSPRINT DD  SYSOUT=A
//SYSUT1   DD  DSNAME=A.B.C,DISP=OLD
//SYSUT2   DD  DSNAME=A.B.C,DISP=(,CATLG),UNIT=disk,
//             VOLUME=SER=111111,SPACE=(TRK,(100,10,10)),
//             DCB=(RECFM=FB,LRECL=80,BLKSIZE=800)
//SYSIN    DD  DATA
./  REPRO    NAME=MEM1,LEVEL=00,SOURCE=0,LIST=ALL
./  REPRO    NAME=MEM2,LEVEL=00,SOURCE=0,LIST=ALL
./  REPRO    NAME=MEM3,LEVEL=00,SOURCE=0,LIST=ALL
./  ADD      NAME=MEM4,LEVEL=00,SOURCE=0,LIST=ALL
./  NUMBER   NEW1=10,INCR=5
 
  (Enregistrements de données comprenant MEM4)
 
./  ENDUP
/*

Les instructions de contrôle sont les suivantes :

  • SYSUT1 DD définit l’ensemble de données partitionné, qui est utilisé comme données source. Il peut s’agir d’un PDSE.
  • SYSUT2 DD définit le nouvel ensemble de données partitionnées, qui est créé à partir de l’ensemble de données partitionnées source et d’un membre supplémentaire inclus en tant qu’entrée et données.
    Il peut s’agir d’un PDSE.
  • SYSIN DD définit l’ensemble de données de contrôle, qui suit dans le flux d’entrée.
  • Les instructions de la fonction REPRO reproduisent les membres source nommés dans l’ensemble de données partitionnées en sortie.
  • L’instruction de fonction ADD spécifie que les enregistrements de données suivant le flux d’entrée doivent être inclus en tant que MEM4.
  • L’instruction détaillée NUMBER indique que le nouveau membre doit se voir attribuer des numéros de séquence dans les colonnes 73 à 80.
    Le premier enregistrement se voit attribuer le numéro de séquence 10. Le numéro de séquence de chaque enregistrement successif est augmenté de 5.
  • ENDUP signale la fin des données de la carte d’entrée.