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ération | Organisation de l’ensemble de données | Dispositif | Commentaires | Exemple |
---|---|---|---|---|
ADD et REPL | Partitionné | Disque | Une 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ée | Partitionné | Disque | Les 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ées | Partitionné | Disque | Entré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éroter | Partitionné | Disque | L’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 DELETE | Partitionné, séquentiel | Disque et bande | Le 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 UPDATE | Bande et disque partitionnés séquentiels | L’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 | |
INSERT | Partitionné | Disque | Le bloc d’enregistrements logiques est inséré dans un membre existant. | Exemple 7 : Insérer des enregistrements dans un membre de la bibliothèque |
INSERT | Partitionné | Disque | Deux 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 |
CREATE | Séquentiel | Lecteur de carte et disque | Un 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 |
COPIE | Séquentiel | Disque | L’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 |
CREATE | Partitionné | Disque | Cré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 :
- 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).
- 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.
- 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ées | Nouveaux numéros de séquence |
---|---|
10 | 10 |
15 | 15 |
Déclaration de données 1 | 20 |
Déclaration de données 2 | 25 |
Déclaration de données 3 | 30 |
20 | 35 |
25 | 40 |
30 | 45 |
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 :
- 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).
- 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.
- Les enregistrements logiques existants AA020, AA025 et AA030 reçoivent respectivement les numéros de séquence AA035, AA040 et AA045.
- 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.) - 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.
- L’enregistrement logique existant AA035 est remplacé par l’énoncé de données 7, auquel est attribué le numéro de séquence AA065.
- 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ées | Nouveaux numéros de séquence |
---|---|
AA010 | AA010 |
AA015 | AA015 |
Déclaration de données 1 | AA020 |
Déclaration de données 2 | AA025 |
Déclaration de données 3 | AA030 |
AA020 | AA035 |
AA025 | AA040 |
AA030 | AA045 |
Déclaration de données 4 | AA050 |
Déclaration de données 5 | AA055 |
Déclaration de données 6 | AA060 |
AA035 (Déclaration de données 7) | AA065 |
AA040 | AA070 |
AA045 | AA070 |
AA050 | AA075 |
BB010 | BB010 |
BB015 | BB015 |
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.