JCL – IEBCOPY

Les exemples suivants illustrent certaines des utilisations d’IEBCOPY.
Le tableau 1 peut être utilisé comme guide de référence rapide pour les exemples IEBCOPY.
Les nombres dans la colonne Exemple font référence aux exemples qui suivent.

Tableau 1. Répertoire d’exemple IEBCOPY

OpérationPériphériqueCommentairesExemple
COPYDisqueCopiez un jeu de données complet d’un volume de disque à un autre.Exemple 1 : copier un jeu de données entier
COPYDisqueCopie trois jeux de données d’entrée dans un jeu de données de sortie existant.Exemple 2 : fusionner quatre ensembles de données
COPYDisqueSélectionne des membres dans deux jeux de données d’entrée et les copie dans un jeu de données de sortie existant.
Un membre remplace un membre portant le même nom qui existe déjà dans le jeu de données de sortie.
Exemple 3 : Copier et remplacer les membres sélectionnés d’un ensemble de données
UNLOAD et compresser sur placeDisque et bandeDécharge un jeu de données partitionné sur un volume de bande pour créer une copie de sauvegarde compressée.Exemple 4 : décharger et compresser un ensemble de données
COPY et compresser sur placeDisqueCopie deux jeux de données d’entrée dans un jeu de données de sortie existant, qui est compressé sur place.
Copie et remplace tous les membres d’un jeu de données.
Les membres de l’ensemble de données en sortie portent le même nom que ceux remplacés.
Exemple 5 : fusionner des ensembles de données et compresser l’ensemble de données fusionné
COPYDisquesSélectionne, supprime et copie des membres des jeux de données d’entrée vers un jeu de données de sortie.
Illustre diverses opérations de copie.
Exemple 6 : Opérations de copie multiples avec un jeu de données de sortie
COPYDisquesSélectionne, supprime et copie des membres des jeux de données d’entrée vers différents jeux de données de sortie.
Illustre diverses opérations de copie.
Exemple 7 : Opérations de copie multiples avec différents ensembles de données de sortie
LOADBande et disqueCharge un jeu de données séquentiel sur le disque.Exemple 8 : Chargement d’un ensemble de données
UNLOAD , LOAD et COPYDisque et bandeSupprimer, décharger, charger et copier les membres sélectionnés.Exemple 9 : Décharger les membres sélectionnés, charger, copier et fusionner
Modifier sur placeDisqueLes membres sélectionnés sont modifiés sur place.Exemple 10 : Modifier les modules de charge en place
COPY et REBLOCKDisque (3380)



Disque (3380)
Copie une bibliothèque de chargement sur des appareils avec différentes tailles de bloc optimales.
La nouvelle liaison doit avoir lieu avant que le membre puisse être ajouté à la bibliothèque de chargement.
Exemple 11 : Remplacement d’un module de chargement à l’aide de COPYMOD
COPY et REBLOCKDisque (3380)Les copies chargent la bibliothèque sur des appareils avec différentes tailles de bloc.
Reverrouille la bibliothèque à une taille compatible avec chaque périphérique sur lequel la bibliothèque sera copiée, puis copie sur ces périphériques.
Exemple 12 : Rebloquer la bibliothèque de chargement et la distribuer à différents types d’appareils
Convertir en PDSEDisqueConvertit un jeu de données partitionné en PDSE.Exemple 13 : Convertir un ensemble de données partitionné en PDSE
COPYDisqueCopiez un PDSE dans un PDSE.Exemple 14 : Copier des groupes d’un PDSE vers un PDSE
COPYDisquesCopiez un PDSE entier dans un PDSE avec l’option de remplacement (R).Exemple 15 : Copier des groupes d’un PDSE vers un PDSE avec REPLACE
COPYDisquesCopiez un groupe sélectionné en spécifiant un alias.Exemple 16 : Copier un groupe sélectionné d’un PDSE vers un PDSE
COPYGROUPDisquesCopiez un groupe sélectionné de membres PDS et leurs alias vers un autre PDS.Exemple 17 : Copier les membres sélectionnés et leurs alias d’un PDS vers un PDS
COPYGROUPDisquesCopier les membres sélectionnés d’un PDS vers un autre PDS.Exemple 18 : Copier les membres sélectionnés d’un PDS vers un PDS

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 : Copie un ensemble de données entier

Dans cet exemple, un ensemble de données partitionné (DATASET5) est copié d’un volume de disque à un autre.
La figure 1 montre les ensembles de données d’entrée et de sortie avant et après le traitement.

//COPY     JOB   ...
//JOBSTEP  EXEC  PGM=IEBCOPY
//SYSPRINT DD  SYSOUT=A
//SYSUT1   DD  DSNAME=DATASET5,UNIT=disk,VOL=SER=111113,
//             DISP=SHR
//SYSUT2   DD  DSNAME=DATASET4,UNIT=disk,VOL=SER=111112,
//             DISP=(NEW,KEEP),SPACE=(TRK,(5,1,2))

Les instructions de contrôle sont les suivantes :

  • SYSUT1 DD définit un ensemble de données partitionnées, DATASET5, qui contient deux membres (A et C).
  • SYSUT2 DD définit un nouveau jeu de données partitionné, DATASET4, qui doit être conservé après l’opération de copie.
    Cinq pistes sont allouées pour l’ensemble de données ; deux blocs sont alloués pour les entrées de répertoire.
  • Étant donné que l’ensemble de données partitionné ne comporte que deux membres, SYSUT3 et SYSUT4 DD ne sont pas nécessaires.
  • Étant donné que les ensembles de données d’entrée et de sortie sont identifiés comme SYSUT1 et SYSUT2, l’ensemble de données SYSIN n’est pas nécessaire.
    Le jeu de données SYSUT1 sera entièrement copié dans le jeu de données SYSUT2.
    Une fois l’opération de copie terminée, DATASET4 contiendra les mêmes membres que ceux de DATASET5.
    Cependant, il n’y aura pas d’espace intégré inutilisé dans DATASET4.
    Si vous copiez un PDSE, le traitement est le même, sauf qu’il n’y a pas d’espace intégré inutilisé dans un PDSE.

FIGURE 1 : Copie d’un ensemble de données partitionnées—copie complète

Exemple 2 : fusionner quatre ensembles de données

Dans cet exemple, les membres sont copiés à partir de trois jeux de données partitionnés en entrée (DATASET1, DATASET5 et DATASET6) vers un jeu de données partitionné en sortie existant (DATASET2).
La séquence dans laquelle les instructions de contrôle se produisent contrôle la manière et la séquence dans lesquelles les ensembles de données partitionnés sont traités.
La figure 2 montre les ensembles de données d’entrée et de sortie avant et après le traitement.

FIGURE 2 : Copie à partir de trois ensembles de données partitionnées en entrée

L’exemple suit :

//COPY     JOB   ...
//JOBSTEP  EXEC  PGM=IEBCOPY
//SYSPRINT DD  SYSOUT=A
//IN1      DD  DSNAME=DATASET1,UNIT=disk,VOL=SER=111112,
//             DISP=SHR
//IN5      DD  DSNAME=DATASET5,UNIT=disk,VOL=SER=111114,
//             DISP=OLD
//OUT2     DD  DSNAME=DATASET2,UNIT=disk,VOL=SER=111115,
//             DISP=(OLD,KEEP)
//IN6      DD  DSNAME=DATASET6,UNIT=disk,VOL=SER=111117,
//             DISP=(OLD,DELETE)
//SYSUT3   DD  UNIT=SYSDA,SPACE=(TRK,(1))
//SYSIN    DD  *
COPYOPER   COPY  OUTDD=OUT2
                 INDD=IN1
                 INDD=IN6
                 INDD=IN5
/*

Les instructions de contrôle sont les suivantes :

  • IN1 DD définit un ensemble de données partitionnées (DATASET1).
    Cet ensemble de données contient trois membres (A, B et F) dans un format fixe avec une longueur d’enregistrement logique de 80 octets et une taille de bloc de 80 octets.
  • IN5 DD définit un ensemble de données partitionnées (DATASET5).
    Cet ensemble de données contient deux membres (A et C) au format bloqué fixe avec une longueur d’enregistrement logique de 80 octets et une taille de bloc de 160 octets.
  • OUT2 DD définit un ensemble de données partitionnées (DATASET2).
    Cet ensemble de données contient deux membres (C et E) au format bloc fixe.
    Les membres ont une longueur d’enregistrement logique de 80 octets et une taille de bloc de 240 octets.
  • IN6 DD définit un ensemble de données partitionnées (DATASET6).
    Cet ensemble de données contient trois membres (B, C et D) au format de bloc fixe avec une longueur d’enregistrement logique de 80 octets et une taille de bloc de 400 octets.
    Cet ensemble de données doit être supprimé lorsque le traitement est terminé.
  • SYSUT3 définit un ensemble de données de déversement temporaire.
  • 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 une instruction COPY et trois instructions INDD.
  • COPY indique le début de l’opération de copie.
    Le paramètre OUTDD spécifie DATASET2 comme ensemble de données de sortie.
  • La première instruction INDD spécifie DATASET1 comme premier ensemble de données d’entrée à traiter.
    Tous les membres (A, B et F) sont copiés dans DATASET2.
  • La deuxième instruction INDD spécifie DATASET6 comme deuxième ensemble de données d’entrée à traiter.
    Le traitement se déroule comme suit :
    1. Le remplacement n’étant pas spécifié, les membres B et C, qui existent déjà dans DATASET2, ne sont pas copiés dans DATASET2.
    2. Le membre D est copié dans DATASET2.
    3. Tous les membres de DATASET6 sont perdus lorsque l’ensemble de données est supprimé.
  • La troisième instruction INDD spécifie DATASET5 comme troisième ensemble de données d’entrée à traiter.
    Aucun membre n’est copié dans DATASET2 car tous existent dans DATASET2.

Exemple 3 : Copier et remplacer les membres sélectionnés d’un ensemble de données

Dans cet exemple, deux membres (A et B) sont sélectionnés à partir de deux ensembles de données partitionnées en entrée (DATASET5 et DATASET6) et copiés dans un ensemble de données partitionnées en sortie existant (DATASET1).
Le membre B remplace un membre portant le même nom qui existe déjà dans l’ensemble de données de sortie.
La figure 3 montre les ensembles de données d’entrée et de sortie avant et après le traitement.

FIGURE 3 : Copie sélective avec remplacement spécifié au niveau du membre

//COPY     JOB     ...
//JOBSTEP  EXEC  PGM=IEBCOPY
//SYSPRINT DD  SYSOUT=A
//OUT1     DD  DSNAME=DATASET1,UNIT=disk,VOL=SER=111112,
//             DISP=(OLD,KEEP)
//IN6      DD  DSNAME=DATASET6,UNIT=disk,VOL=SER=111115,
//             DISP=OLD
//IN5      DD  DSNAME=DATASET5,UNIT=disk,VOL=SER=111116,
//             DISP=(OLD,KEEP)
//SYSUT3   DD  UNIT=SYSDA,SPACE=(TRK,(1))
//SYSUT4   DD  UNIT=SYSDA,SPACE=(TRK,(1))
//SYSIN    DD  *
COPYOPER   COPY    OUTDD=OUT1,
                   INDD=IN5,IN6
           SELECT  MEMBER=((B,,R),A)
/*

Les instructions de contrôle sont les suivantes :

  • OUT1 DD définit un ensemble de données partitionnées (DATASET1), qui contient trois membres (A, B et F).
  • IN6 DD définit un ensemble de données partitionnées (DATASET6), qui contient trois membres (B, C et D).
  • IN5 DD définit un ensemble de données partitionnées (DATASET5), qui contient deux membres (A et C).
  • SYSUT3 et SYSUT4 DD définissent des ensembles de données de déversement temporaires. Une piste est allouée pour chacun 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.
    L’ensemble de données contient une instruction COPY, une instruction INDD et une instruction SELECT.
  • COPY indique le début de l’opération de copie. L’utilisation d’une instruction SELECT provoque une copie sélective.
    Le paramètre OUTDD spécifie DATASET1 comme ensemble de données de sortie.
  • INDD spécifie DATASET5 comme premier ensemble de données d’entrée à traiter et DATASET6 comme deuxième ensemble de données d’entrée à traiter.
    Le traitement se déroule comme suit :
    1. Les membres sélectionnés sont recherchés sur DATASET5.
    2. Le membre A est trouvé, mais n’est pas copié dans DATASET1 car DATASET1 a déjà un membre nommé A et l’option de remplacement n’est pas spécifiée pour le membre A.
    3. Les membres sélectionnés introuvables sur DATASET5 sont recherchés sur DATASET6.
    4. Le membre B est trouvé et copié dans DATASET1, même s’il existe déjà un membre B de DATASET1 dans DATASET1, car l’option de remplacement est spécifiée pour le membre B au niveau du membre.
      Le pointeur dans le répertoire de DATASET1 est modifié pour pointer vers le nouveau membre (copié) B ; ainsi, l’espace occupé par l’ancien membre B est inutilisé.
  • SELECT spécifie les membres à sélectionner dans les ensembles de données d’entrée (DATASET5 et DATASET6) à copier dans l’ensemble de données de sortie (DATASET1).

Exemple 4 : Décharger et compresser un ensemble de données

Dans cet exemple, un ensemble de données partitionné est déchargé sur un volume de bande pour créer une copie de sauvegarde de l’ensemble de données.
Si cette étape réussit, l’ensemble de données partitionné doit être compressé sur place.

//SAVE     JOB  ...
//STEP1    EXEC PGM=IEBCOPY
//SYSPRINT DD  SYSOUT=A
//SYSUT1   DD  DSNAME=PARTPDS,UNIT=disk,VOL=SER=PCP001,
//             DISP=OLD
//SYSUT2   DD  DSNAME=SAVDATA,UNIT=tape,VOL=SER=TAPE03,
//             DISP=(NEW,KEEP),LABEL=(,SL)
//SYSUT3   DD  DSNAME=TEMP1,UNIT=disk,VOL=SER=111111,
//             DISP=(NEW,DELETE),SPACE=(80,(60,45))
//SYSIN    DD  DUMMY
//STEP2    EXEC PGM=IEBCOPY,COND=(0,NE),PARM='SIZE=500K'
//SYSPRINT DD  SYSOUT=A
//COMPDS   DD  DSNAME=PARTPDS,UNIT=disk,DISP=OLD,
//             VOL=SER=PCP001
//SYSUT3   DD  DSNAME=TEMPA,UNIT=disk,VOL=SER=111111,
//             DISP=(NEW,DELETE),SPACE=(80,(60,45))
//SYSIN    DD  *
           COPY OUTDD=COMPDS,INDD=COMPDS
/*

Les instructions de contrôle sont les suivantes :

  • SYSUT1 DD définit un ensemble de données partitionnées (PARTPDS) qui réside sur un volume de disque et est supposé avoir 700 membres.
    Le nombre de membres est utilisé pour calculer l’allocation d’espace sur SYSUT3.
  • SYSUT2 DD définit un ensemble de données séquentielles pour contenir PARTPDS sous forme déchargée.
    Des informations sur la taille des blocs peuvent éventuellement être ajoutées ; cet ensemble de données doit être NOUVEAU.
  • SYSUT3 DD définit le jeu de données de déversement temporaire.
    Le jeu de données SYSUT4 n’est jamais utilisé pour une opération de déchargement.
  • SYSIN DD définit le jeu de données de contrôle.
    Étant donné que SYSIN est fictif et que SYSUT2 définit un ensemble de données séquentiel, tous les membres de l’ensemble de données SYSUT1 seront déchargés dans l’ensemble de données SYSUT2.
  • La deuxième instruction EXEC marque le début de l’opération de compression sur place.
    Le paramètre SIZE indique que les tampons doivent être aussi grands que possible.
    Le paramètre COND indique que la compression sur place ne doit être effectuée que si l’opération de déchargement a réussi.
  • COMPDS DD définit un ensemble de données partitionné (PARTPDS) qui contient 700 membres et réside sur un volume de disque.
  • SYSUT3 DD définit l’ensemble de données de déversement temporaire à utiliser s’il n’y a pas assez d’espace dans la mémoire principale pour les entrées de répertoire de l’ensemble de données d’entrée.
    TEMPA contient un enregistrement de 80 caractères pour chaque membre.
  • 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 une instruction COPY.
  • COPY marque le début de l’opération de copie.
    Étant donné que la même instruction DD est spécifiée pour les opérandes INDD et OUTDD, l’ensemble de données est compressé sur place.
    Si un PDSE est utilisé, cette étape ne sera pas traitée.

Si vous souhaitez décharger plusieurs ensembles de données en une seule utilisation d’IEBCOPY, vous devez utiliser une instruction COPY distincte pour chaque opération de déchargement.
Un seul ensemble de données d’entrée peut être spécifié dans une opération de déchargement.

Exemple 5 : Fusionner des ensembles de données et compresser l’ensemble de données fusionné

Dans cet exemple, deux ensembles de données partitionnées en entrée (DATASET5 et DATASET6) sont copiés dans un ensemble de données partitionné en sortie existant (DATASET1).
De plus, tous les membres de DATASET6 sont copiés ; les membres de l’ensemble de données de sortie portant le même nom que les membres copiés sont remplacés.
Après le traitement de DATASET6, l’ensemble de données de sortie (DATASET1) est compressé sur place.
La figure 4 montre les ensembles de données d’entrée et de sortie avant et après le traitement.

Figure 4 : Compress-in-Place suivant la copie complète avec “replace”

//COPY     JOB  ...
//JOBSTEP  EXEC PGM=IEBCOPY
//SYSPRINT DD  SYSOUT=A
//INOUT1   DD  DSNAME=DATASET1,UNIT=disk,VOL=SER=111112,
//             DISP=(OLD,KEEP)
//IN5      DD  DSNAME=DATASET5,UNIT=disk,VOL=SER=111114,
//             DISP=OLD
//IN6      DD  DSNAME=DATASET6,UNIT=disk,VOL=SER=111115,
//             DISP=(OLD,KEEP)
//SYSUT3   DD  UNIT=SYSDA,SPACE=(TRK,(1))
//SYSUT4   DD  UNIT=SYSDA,SPACE=(TRK,(1))
//SYSIN    DD  *
COPYOPER COPY  OUTDD=INOUT1,INDD=(IN5,(IN6,R),INOUT1)
/*

Les instructions de contrôle sont les suivantes :

  • INOUT1 DD définit un ensemble de données partitionné (DATASET1), qui contient trois membres (A, B et F).
  • IN5 DD définit un ensemble de données partitionnées (DATASET5), qui contient deux membres (A et C).
  • IN6 DD définit un ensemble de données partitionnées (DATASET6), qui contient trois membres (B, C et D).
  • SYSUT3 et SYSUT4 DD définissent des ensembles de données de déversement temporaires.
    Une piste est allouée pour chacun 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.
    L’ensemble de données contient une instruction COPY.
  • COPY indique le début de l’opération de copie.
    L’opérande OUTDD spécifie DATASET1 comme ensemble de données de sortie.
    L’opérande INDD spécifie DATASET5 comme premier ensemble de données d’entrée à traiter.
    Il spécifie ensuite DATASET6 comme deuxième ensemble de données d’entrée à traiter.
    De plus, l’option de remplacement est spécifiée pour tous les membres copiés à partir de DATASET6.
    Enfin, il spécifie DATASET1 comme dernier ensemble de données d’entrée à traiter.
    Étant donné que DATASET1 est également le jeu de données de sortie, DATASET1 est compressé sur place.
    Toutefois, si DATASET1 est un PDSE, l’opération de compression sur place ne sera pas traitée.

Le traitement se déroule comme suit :

  1. Le membre A n’est pas copié de DATASET5 dans DATASET1 car il existe déjà sur DATASET1 et l’option de remplacement n’a pas été spécifiée pour DATASET5.
  2. Le membre C est copié de DATASET5 vers DATASET1, occupant le premier espace disponible.
  3. Tous les membres sont copiés de DATASET6 vers DATASET1, immédiatement après le dernier membre.
    Les membres B et C sont copiés même si l’ensemble de données de sortie contient déjà des membres portant les mêmes noms, car l’option de remplacement est spécifiée au niveau de l’ensemble de données.

Les pointeurs dans le répertoire de DATASET1 sont modifiés pour pointer vers les nouveaux membres B et C.
Ainsi, l’espace occupé par les anciens membres B et C est inutilisé.
Les membres actuellement sur DATASET1 sont compressés sur place, éliminant ainsi l’espace inutilisé intégré.

Exemple 6 : Opérations de copie multiples avec un jeu de données de sortie

Dans cet exemple, les membres sont sélectionnés, exclus et copiés à partir d’ensembles de données partitionnées d’entrée vers un ensemble de données partitionnées de sortie.
Cet exemple est conçu pour illustrer plusieurs opérations de copie.

La figure 5 et la figure 6 montrent les ensembles de données d’entrée et de sortie avant et après le traitement.

L’exemple suit :

  //COPY     JOB  ...
  //JOBSTEP  EXEC PGM=IEBCOPY
  //SYSPRINT DD  SYSOUT=A
  //INOUTA   DD  DSNAME=DATASETA,UNIT=disk,VOL=SER=111113,
  //             DISP=OLD
  //INB      DD  DSNAME=DATASETB,UNIT=disk,VOL=SER=111115,
  //             DISP=(OLD,KEEP)
  //INC      DD  DSNAME=DATASETC,UNIT=disk,VOL=SER=111114,
  //             DISP=(OLD,KEEP)
  //IND      DD  DSNAME=DATASETD,UNIT=disk,VOL=SER=111116,
  //             DISP=OLD
  //INE      DD  DSNAME=DATASETE,UNIT=disk,VOL=SER=111117,
  //             DISP=OLD
  //OUTX     DD  DSNAME=DATASETX,UNIT=disk,VOL=SER=111112,
  //             DISP=(NEW,KEEP),SPACE=(TRK,(3,1,2))
  //SYSUT3   DD  UNIT=SYSDA,SPACE=(TRK,(1))
  //SYSIN    DD  *
  COPERST1 COPY  O=OUTX,I=INOUTA
           COPY  OUTDD=INOUTA,INDD=INOUTA
                 INDD=INB
           COPY  OUTDD=INOUTA
                 INDD=IND
        EXCLUDE  MEMBER=MM
                 INDD=INC
         SELECT  MEMBER=((ML,MD,R))
                 INDD=INE
  /*

Les instructions de contrôle sont les suivantes :

  • INOUTA DD définit une donnée partitionnée, DATASETA, qui contient sept membres (MA, MB, MC, MD, ME, MF et MG).
  • INB DD définit un ensemble de données partitionné, DATASETB, qui contient deux membres (MA et MJ).
  • INC DD définit un ensemble de données partitionné, DATASETC, qui contient quatre membres (MF, ML, MM et MN).
  • IND DD définit un ensemble de données partitionné, DATASETD, qui contient deux membres (MM et MP).
  • INE DD définit un ensemble de données partitionné, DATASETE, qui contient quatre membres (MD, ME, MF et MT).
  • OUTX DD définit un ensemble de données partitionné (DATASETX).
    Ce jeu de données est nouveau et est à conserver après l’opération de copie.
    Trois pistes sont allouées pour l’ensemble de données sur un volume de disque.
    Deux blocs sont alloués pour les entrées de répertoire.
  • SYSUT3 définit un ensemble de données de déversement temporaire.
  • 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 deux instructions COPY, plusieurs instructions INDD, une instruction SELECT et une instruction EXCLUDE.
  • La première instruction COPY indique le début de la première opération de copie.
    Cette opération de copie est effectuée pour créer une copie de sauvegarde de DATASETA.
  • La deuxième instruction COPY indique le début d’une autre opération de copie.
    Étant donné que DATASETA est spécifié dans les paramètres INDD et OUTDD, DATASETA est compressé sur place.
    L’ensemble de données de sortie est d’abord compressé sur place pour économiser de l’espace, car on sait qu’il contient de l’espace intégré inutilisé.
    L’instruction INDD suivante spécifie DATASETB comme prochain ensemble de données d’entrée à copier.
    Seul le membre MJ est copié, car DATASETA contient déjà un membre nommé MA.
  • La troisième instruction COPY indique le début de la troisième opération de copie.
    Le paramètre OUTDD spécifie DATASETA comme ensemble de données de sortie.
    Cette opération de copie contient plusieurs étapes de copie.
    La première instruction INDD spécifie DATASETD comme premier ensemble de données d’entrée à traiter.
    Seul le membre MP est copié dans DATASETA car l’instruction EXCLUDE spécifie que le membre MM doit être exclu de la première étape de copie dans cette opération de copie.

Figure 5. Opérations de copie multiples/étapes de copie (Partie 1 de 2)

Figure 6. Opérations de copie multiples/étapes de copie (Partie 2 de 2)

Exemple 7 : Opérations de copie multiples avec différents jeux de données de sortie

Dans cet exemple, les membres sont sélectionnés, exclus et copiés à partir d’ensembles de données partitionnées d’entrée vers un ensemble de données partitionnées de sortie.
Cet exemple est conçu pour illustrer plusieurs opérations de copie.
La figure 7, la figure 8 et la figure 9 montrent les ensembles de données d’entrée et de sortie avant et après le traitement.

L’exemple suit :

//COPY     JOB  ...
//JOBSTEP  EXEC PGM=IEBCOPY
//SYSPRINT DD  SYSOUT=A
//OUTA     DD  DSNAME=DATASETA,UNIT=disk,VOL=SER=111113,
//             DISP=OLD
//INOUTB   DD  DSNAME=DATASETB,VOL=SER=111115,UNIT=disk,
//             DISP=(OLD,KEEP)
//INOUTC   DD  DSNAME=DATASETC,VOL=SER=111114,UNIT=disk,
//             DISP=(OLD,KEEP)
//INOUTD   DD  DSNAME=DATASETD,VOL=SER=111116,DISP=OLD,
//             UNIT=disk
//INE      DD  DSNAME=DATASETE,VOL=SER=111117,DISP=OLD,
//             UNIT=disk
//SYSUT3   DD  UNIT=SYSDA,SPACE=(TRK,(1))
//SYSUT4   DD  UNIT=SYSDA,SPACE=(TRK,(1))
//SYSIN    DD  *
         COPY  OUTDD=OUTA
               INDD=INE
       SELECT  MEMBER=(MA,MJ)
               INDD=INOUTC
      EXCLUDE  MEMBER=(MM,MN)
         COPY  OUTDD=INOUTB,INDD=INOUTD
               INDD=((INOUTC,R),INOUTB)
         COPY  OUTDD=INOUTD,INDD=((INOUTB,R))
       SELECT  MEMBER=MM
/*

Les instructions de contrôle sont les suivantes :

  • OUTA DD définit un ensemble de données partitionné, DATASETA, qui contient trois membres (MA, MB et MD).
  • INOUTB DD définit un ensemble de données partitionnées, DATASETB, qui contient deux membres (MA et MJ).
  • INOUTC DD définit un ensemble de données partitionnées, DATASETC, qui contient quatre membres (MF, ML, MM et MN).
  • INOUTD DD définit un ensemble de données partitionné, DATASETD, qui contient deux membres (MM et MP).
  • INE DD définit un ensemble de données partitionné, DATASETE, qui contient trois membres (MA, MJ et MK).
  • SYSUT3 et SYSUT4 DD définissent des ensembles de données de déversement temporaires. Une piste est allouée pour chacun 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.
    L’ensemble de données contient trois instructions COPY, deux instructions SELECT, une instruction EXCLUDE et plusieurs instructions INDD.
  • La première instruction COPY indique le début d’une opération de copie. L’opérande OUTDD spécifie DATASETA comme ensemble de données de sortie. La première instruction INDD spécifie DATASETE comme premier ensemble de données d’entrée à traiter. L’instruction SELECT spécifie que les membres MA et MJ doivent être copiés de DATASETE vers DATASETA. Le traitement se déroule comme suit :
    1. Le membre MA est recherché et trouvé, mais n’est pas copié car l’option de remplacement n’est pas spécifiée.
    2. Le membre MJ est recherché, trouvé et copié dans DATASETA.
    La deuxième instruction INDD marque la fin de la première étape de copie et le début de la deuxième étape de copie dans la première opération de copie.
    Il spécifie DATASETC comme deuxième ensemble de données d’entrée à traiter.
    Les membres MF et ML, qui ne sont pas nommés dans l’instruction EXCLUDE, sont copiés car DATASETA ne contient ni l’un ni l’autre.
    EXCLUDE spécifie que les membres MM et MN ne doivent pas être copiés de DATASETC vers DATASETA.
  • La deuxième instruction COPY indique le début d’une autre opération de copie.
    Le paramètre OUTDD spécifie DATASETB comme ensemble de données de sortie.
    Le paramètre INDD spécifie DATASETD comme premier ensemble de données d’entrée à traiter.
    Les membres MP et MM sont copiés dans DATASETB.
    L’instruction INDD suivante spécifie DATASETC comme deuxième et DATASETB comme troisième ensemble de données d’entrée à traiter.
    Les membres MF, ML, MM et MN sont copiés de DATASETC.
    Le membre MM est copié, bien que DATASETB contienne déjà un membre MM, car l’option de remplacement est spécifiée.
    Le pointeur dans le répertoire de DATASETB est modifié pour pointer vers le nouveau membre (copié) MM.
    Ainsi, l’espace occupé par l’élément remplacé MM est un espace encastré, inutilisé.
    DATASETB est ensuite compressé sur place pour supprimer l’espace intégré inutilisé.
    (DATASETB est spécifié comme jeux de données d’entrée et de sortie.)
  • La troisième instruction COPY indique le début de la dernière opération de copie.
    Le paramètre OUTDD spécifie DATASETD comme ensemble de données de sortie.
    Le paramètre INDD spécifie DATASETB comme ensemble de données d’entrée.
    SELECT spécifie que le membre MM doit être copié de DATASETB vers DATASETD.
    Étant donné que l’option de remplacement est spécifiée au niveau de l’ensemble de données, le membre MM est copié et remplace le membre MM de DATASETD.

Figure 7. Opérations de copie multiples/étapes de copie au sein d’un step de job (Partie 1 de 3)

Figure 8. Opérations de copie multiples/étapes de copie au sein d’un step de job (Partie 2 de 3)

Figure 9. Opérations de copie multiples/étapes de copie au sein d’une étape de tâche (Partie 3 de 3)

Exemple 8 : Chargement d’un jeu de données

Dans cet exemple, un ensemble de données séquentiel créé par une opération de déchargement IEBCOPY est chargé.

//LOAD     JOB  ...
//STEPA    EXEC PGM=IEBCOPY
//SYSPRINT DD  SYSOUT=A
//SYSUT1   DD  DSNAME=UNLOADSET,UNIT=tape,LABEL=(,SL),
//             VOL=SER=TAPE01,DISP=OLD
//SYSUT2   DD  DSNAME=DATASET4,UNIT=disk,VOL=SER=2222222,
//             DISP=(NEW,KEEP),SPACE=(CYL,(10,5,10))
//SYSUT3   DD  DSN=TEMP1,UNIT=disk,VOL=SER=111111,
//             DISP=(NEW,DELETE),SPACE=(80,(15,1))
//SYSIN    DD  DUMMY
/*

Les instructions de contrôle sont les suivantes :

  • SYSUT1 DD définit un ensemble de données séquentielles précédemment créé par une opération de déchargement IEBCOPY.
    L’ensemble de données contient 28 membres dans une organisation séquentielle.
  • SYSUT2 DD définit un nouvel ensemble de données partitionnées sur un volume de disque.
    Cet ensemble de données est à conserver après l’opération de chargement.
    Dix cylindres sont alloués pour l’ensemble de données ; dix blocs sont alloués pour les entrées de répertoire.
  • SYSUT3 DD définit un jeu de données de déversement temporaire sur un volume de disque.
  • SYSIN DD définit le jeu de données de contrôle.

Exemple 9 : décharger les membres sélectionnés, charger, copier et fusionner

Dans cet exemple, les membres sont sélectionnés, exclus, déchargés, chargés et copiés.
Le traitement se déroulera comme suit :

  1. décharger, exclure les membres
  2. décharger, sélectionner des membres
  3. charger et copier pour fusionner les membres
//COPY     JOB  ...
//STEP     EXEC PGM=IEBCOPY
//SYSPRINT DD  SYSOUT=A
//PDS1     DD  DSNAME=ACCOUNTA,UNIT=disk,VOL=SER=333333,
//             DISP=OLD
//PDS2     DD  DSNAME=ACCOUNTB,UNIT=disk,VOL=SER=333333,
//             DISP=OLD
//SEQ1     DD  DSNAME=SAVAC,UNIT=disk,VOL=SER=333333,
//             DISP=(NEW,KEEP),SPACE=(CYL,(5,2))
//SEQ2     DD  DSNAME=SAVACB,UNIT=tape,VOL=SER=T01911,
//             DISP=(NEW,KEEP),LABEL=(,SL)
//NEWUP    DD  DSNAME=NEWACC,UNIT=tape,VOL=SER=T01219,
//             DISP=OLD,LABEL=(,SL)
//MERGE    DD  DSNAME=ACCUPDAT,UNIT=disk,VOL=SER=222222,
//             DISP=OLD
//SYSUT3   DD  DSNAME=TEMP1,VOL=SER=666666,UNIT=disk,
//             DISP=(NEW,DELETE),SPACE=(80,(1,1))
//SYSUT4   DD  DSNAME=TEMP2,VOL=SER=666666,UNIT=disk,
//             DISP=(NEW,DELETE),SPACE=(256,(1,1)),DCB=(KEYLEN=8)
//SYSIN    DD  *
     COPY      OUTDD=SEQ1,INDD=PDS1
     EXCLUDE   MEMBER=(D,C)
     COPY      OUTDD=SEQ2,INDD=PDS2
     SELECT    MEMBER=(A,K)
     COPY      OUTDD=MERGE,INDD=((NEWUP,R),PDS1,PDS2)
     EXCLUDE   MEMBER=A
/*

Les instructions de contrôle sont les suivantes :

  • PDS1 DD définit un ensemble de données partitionné appelé ACCOUNTA qui contient six membres (A, B, C, D, E et F).
  • PDS2 DD définit un ensemble de données partitionné appelé ACCOUNTB qui contient trois membres (A, K et L).
  • SEQ1 DD définit un nouveau jeu de données séquentiel appelé SAVAC.
  • SEQ2 DD définit un nouvel ensemble de données séquentielles appelé SAVACB sur un volume de bande.
    La bande porte des étiquettes standard IBM.
  • NEWUP DD définit un ancien ensemble de données séquentiel appelé NEWACC qui est la forme déchargée d’un ensemble de données partitionné qui contient huit membres (A, B, C, D, M, N, O et P).
    Il réside sur un volume de bande.
  • MERGE DD définit un ensemble de données partitionné appelé ACCUPDAT qui contient six membres (A, B, C, D, Q et R).
  • SYSUT3 et SYSUT4 DD définissent des ensembles de données de déversement temporaires.
  • SYSIN DD définit l’ensemble de données de contrôle, qui suit dans le flux d’entrée.
  • La première instruction COPY indique le début de la première opération de copie.
    Le paramètre OUTDD spécifie que SAVAC est le jeu de données de sortie et le paramètre INNDD spécifie que ACCOUNTA est le jeu de données d’entrée.
    Étant donné que SAVAC est un ensemble de données séquentiel, ACCOUNTA sera déchargé lors de cette opération de copie.
    L’instruction EXCLUDE spécifie que les membres D et C ne doivent pas être déchargés vers SAVAC avec le reste d’ACCOUNTA.
  • La deuxième instruction COPY indique le début de la deuxième opération de copie.
    Le paramètre OUTDD spécifie que SAVACB est le jeu de données de sortie et le paramètre INDD spécifie que ACCOUNTB est le jeu de données d’entrée.
    Étant donné que SAVACB est un ensemble de données séquentiel, ACCOUNTB sera déchargé lors de cette opération de copie.
    L’instruction SELECT spécifie que les membres A et K sont les seuls membres de ACCOUNTB qui doivent être déchargés vers SAVACB.
  • La troisième instruction COPY indique le début de la dernière opération de copie.
    Le paramètre OUTDD spécifie que ACCUPDAT est le jeu de données de sortie.
    L’instruction EXCLUDE spécifie que le membre A est exclu de cette opération de copie.
    Les trois ensembles de données spécifiés dans le paramètre INDD seront traités comme suit :
    1. Le jeu de données NEWACC est un jeu de données séquentiel, il est donc chargé dans ACCUPDAT.
      Etant donné que l’option de remplacement est spécifiée, les membres B, C et D de NEWACC remplacent les membres portant le même nom dans ACCUPDAT.
      Les membres restants de NEWACC sont également copiés dans ACCUPDAT, à l’exception de A, qui est exclu de l’opération de copie.
    2. L’ensemble de données ACCOUNTA est un ensemble de données partitionné, ses membres sont donc copiés dans ACCUPDAT.
      Le remplacement n’étant pas spécifié, seuls les membres E et F sont copiés.
    3. L’ensemble de données ACCOUNTB est un ensemble de données partitionné, de sorte que ses membres sont copiés dans ACCUPDAT.
      Seuls les membres K et L sont copiés.

Exemple 10 : Modifier les modules de chargement en place

Dans cet exemple, tous les membres de l’ensemble de données MODLIBJ, les membres MODX, MODY et MODZ de l’ensemble de données MODLIBK et tous les membres de l’ensemble de données MODLIBL, à l’exception de MYMACRO et MYJCL, sont modifiés sur place.

//ALTERONE JOB  ...
//STEPA    EXEC PGM=IEBCOPY
//SYSPRINT DD  SYSOUT=A
//SYSUT3   DD  UNIT=SYSDA,SPACE=(TRK,(5,1))
//LIBJ     DD  DSNAME=MODLIBJ,DISP=(OLD,KEEP)
//LIBK     DD  DSNAME=MODLIBK,DISP=(OLD,KEEP)
//LIBL     DD  DSNAME=MODLIBL,DISP=(OLD,KEEP)
//SYSIN    DD  *
     ALTERMOD  OUTDD=LIBJ
     ALTERMOD  OUTDD=LIBK,LIST=NO
     SELECT    MEMBER=(MODX,MODY,MODZ)
     ALTERMOD  OUTDD=LIBL
     EXCLUDE   MEMBER=(MYMACRO,MYJCL)
/*

Les instructions de contrôle sont les suivantes :

  • LIBJ DD définit l’ensemble de données partitionné MODLIBJ, qui a été précédemment créé et catalogué.
  • LIBK DD définit le jeu de données partitionné MODLIBK, qui a été précédemment créé et catalogué.
  • LIBL DD définit l’ensemble de données partitionné MODLIBL, qui a été préalablement créé et catalogué.
  • SYSIN DD définit l’ensemble de données de contrôle, qui suit dans le flux d’entrée.
  • La première instruction ALTERMOD spécifie que l’ensemble de données défini dans LIBJ doit être modifié sur place.
  • La deuxième instruction ALTERMOD plus l’instruction SELECT suivante indiquent que les membres MODX, MODY et MODZ doivent être modifiés sur place.
    Le reste de MODLIBK est inchangé.
  • La troisième instruction ALTERMOD plus l’instruction EXCLUDE suivante indiquent que tout MODLIBL doit être modifié sur place, à l’exception des membres appelés MYMACRO et MYJCL.
    Ces membres restent inchangés.

Exemple 11 : Remplacement d’un module de chargement à l’aide de COPYMOD

Dans cet exemple, un module de chargement dans une bibliothèque de chargement existante est remplacé par un autre module.
Le nouveau module réside à l’origine sur un périphérique DASD 3390, tandis que la bibliothèque de chargement sur laquelle il est copié réside sur un 3380.
Étant donné que le module a une taille de bloc supérieure à la taille de bloc affectée au jeu de données de sortie, le module doit être rebloqué avant il est ajouté à la bibliothèque de chargement.

Cet exemple illustre comment vous pouvez transférer des modules de charge entre des appareils de différentes tailles.
Dans ce cas, les modules mis à jour sont créés sur un 3390 et testés avant d’être ajoutés à la bibliothèque de chargement pour une utilisation générale.

//STEP1    EXEC PGM=IEBCOPY
//REPLACE  JOB  ...
//SYSPRINT DD  SYSOUT=A
//TESTLIB  DD  DSN=JOHNDOE.COBOL.TESTLOAD,DISP=SHR,UNIT=3390,
//             VOL=SER=TEST01,DCB=(BLKSIZE=23470)
//PRODLIB  DD  DSN=PAYROLL.MASTER.LOADLIB,DISP=(OLD,KEEP)
//             UNIT=3380,VOL=SER=PROD01,DCB=(BLKSIZE=19069)
//SYSIN    DD  *
           COPYMOD OUTDD=PRODLIB,INDD=TESTLIB
           SELECT MEMBER=((WAGETAX,,R))
/*

Les instructions de contrôle sont les suivantes :

  • TESTLIB DD définit une bibliothèque de chargement sur un périphérique d’accès direct 3390.
    Il a une taille de bloc de 23470.
  • PRODLIB DD définit une bibliothèque de chargement sur un équipement à accès direct 3380.
    Il a une taille de bloc de 19069.
  • SYSIN DD définit l’ensemble de données de contrôle, qui suit dans le flux d’entrée.
  • L’instruction COPYMOD identifie PAYROLL.MASTER.LOADLIB comme ensemble de données de sortie et JOHNDOE.COBOL.TESTLOAD comme ensemble de données d’entrée.
    L’instruction SELECT indique que le module de chargement WAGETAX doit être copié à partir de l’ensemble de données d’entrée et doit remplacer tout membre portant ce nom qui se trouve dans l’ensemble de données de sortie.
    Le membre est également rebloqué en 19069.

Notez que, dans ce cas, COPYMOD doit être utilisé pour copier le membre WAGETAX dans PAYROLL.MASTER.LOADLIB.
Étant donné que la taille de bloc d’origine de WAGETAX est supérieure à la plus grande taille de bloc pouvant résider dans l’ensemble de données de sortie, tenter cette opération avec l’instruction COPY échouerait.
Le problème serait attribué à une erreur de validation DCB en raison d’une taille de bloc incorrecte.

Exemple 12 : Rebloquer la bibliothèque de chargement et la distribuer à différents types d’équipements

Dans cet exemple, une bibliothèque de chargement est distribuée (en la copiant) aux périphériques dont la taille de bloc maximale diffère de celle sur laquelle réside la bibliothèque de chargement d’origine.
La bibliothèque est d’abord rebloquée à une taille de bloc maximale compatible avec chacun des appareils sur lesquels la bibliothèque sera copiée.
Ensuite, la bibliothèque est copiée sur ces appareils.

Cet exemple illustre comment des bibliothèques de chargement peuvent être développées sur un type de périphérique à accès direct, puis distribuées à d’autres types de périphériques à accès direct.

//RBLKCOPY JOB  ...
//REBLOCK  EXEC PGM=IEBCOPY
//SYSPRINT DD   SYSOUT=A
//TESTED   DD   DSN=TESTED.MASTER.LOADLIB,DISP=SHR
//STDSIZE  DD   DSN=PROGRAM.MASTER.LOADLIB,DISP=(OLD,KEEP),
//              UNIT=3390,VOL=SER=PROG01,DCB=(BLKSIZE=23470)
//SYSIN    DD   *
           COPYMOD OUTDD=STDSIZE,INDD=TESTED,MAXBLK=13030
/*
//DISTRIB  EXEC PGM=IEBCOPY
//SYSPRINT DD   SYSOUT=A
//STDSIZE  DD   DSN=PROGRAM.MASTER.LOADLIB,DISP=SHR
//LIB3350  DD   DSN=PROGRAM.LIB3380.LOADLIB,DISP=(OLD,KEEP),
//              UNIT=3380,VOL=SER=PACK01,DCB=(BLKSIZE=19069)
//LIB3330  DD   DSN=PROGRAM.LIB3380.LOADLIB,DISP=(OLD,KEEP),
//              UNIT=3380,VOL=SER=PACK02,DCB=(BLKSIZE=13030)
//SYSIN    DD   *
           COPY OUTDD=LIB3380,INDD=STDSIZE
           COPY OUTDD=LIB3380,INDD=STDSIZE
/*

Les instructions de contrôle sont les suivantes :

  • L’instruction REBLOCK EXEC commence l’étape de reblocage.
  • TESTED DD définit la bibliothèque de chargement cataloguée TESTED.MASTER.LOADLIB.
  • STDSIZE DD définit un ensemble de données existant, PROGRAM.MASTER.LOADLIB, qui réside sur un périphérique d’accès direct 3390 et a une taille de bloc de 23470.
  • L’instruction COPYMOD dans l’ensemble de données SYSIN spécifie que TESTED.MASTER.LOADLIB doit être fusionné dans PROGRAM.MASTER.LOADLIB.
    Il spécifie également que PROGRAM.MASTER.LOADLIB doit être rebloqué avec une taille de bloc maximale de 13030.
    Cette taille de bloc est choisie car elle est suffisamment petite pour tenir sur les périphériques d’accès direct 3380 et 3390.
  • L’instruction DISTRIB EXEC commence l’étape de distribution, où l’ensemble de données rebloqué est copié sur des périphériques avec des tailles de bloc maximales différentes.
  • STDSIZE DD définit le même ensemble de données qui a été rebloqué à l’étape précédente.
  • LIB3380 DD définit l’ensemble de données PROGRAM.LIB3380.LOADLIB, qui réside sur un périphérique d’accès direct 3380.
  • Les instructions COPY du jeu de données SYSIN spécifient que le jeu de données PROGRAM.MASTER.LOADLIB doit être copié dans les jeux de données de sortie sans être rebloqué.
    Si PROGRAM.MASTER.LOADLIB n’avait pas été rebloqué à la plus petite taille de bloc, cette étape se terminerait sans succès.

Exemple 13 : Conversion d’un ensemble de données partitionné en PDSE

Dans cet exemple, un ensemble de données partitionné est converti en PDSE.

//CONVERT   JOB  ...
//STEP1     EXEC PGM=IEBCOPY
//SYSPRINT  DD  SYSOUT=A
//SYSUT1    DD  DSNAME=PDSSET,DISP=SHR,DSNTYPE=PDS
//SYSUT2    DD  DSNAME=PDSESET,LIKE=PDSSET,DSNTYPE=LIBRARY,
//          DISP=(NEW,CATLG),STORCLAS=SCLASX,DATACLAS=DCLASY

Les instructions de contrôle sont les suivantes :

  • SYSUT1 DD définit le jeu de données d’entrée, PDS, qui est un jeu de données partitionné.
    Le mot clé DSNTYPE n’a aucun effet car il s’agit d’un ensemble de données existant.
  • SYSUT2 DD définit le jeu de données de sortie, PDSE, qui est un jeu de données partitionné étendu.
    Ce nouvel ensemble de données sera géré par SMS car il possède une classe de stockage.
    Le paramètre LIKE indique que les attributs DCB et SPACE pour PDSESET doivent être copiés à partir de PDSSET.
    Le paramètre DSNTYPE définit le nouvel ensemble de données comme un PDSE plutôt que comme un ensemble de données partitionnées.
    DATACLAS=DCLASY identifie le PPDSE comme un objet de programme PDSE avec une longueur d’enregistrement logique indéfinie.
    Le sous-système de gestion du stockage choisit un volume approprié pour l’allocation, en fonction de la définition de SCLASX.
  • Étant donné que les noms symboliques SYSUT1 et SYSUT2 sont utilisés pour définir les ensembles de données d’entrée et de sortie, aucun ensemble de données SYSIN n’est requis.

Exemple 14 : Copier des groupes d’un PDSE vers un PDSE

Dans cet exemple, les membres et leurs alias (groupes) sont copiés d’un PDSE vers un PDSE (copie complète de l’ensemble de données).

Voir Copie d’objets programme (instructions COPYGRP et COPYGROUP) pour plus d’informations sur la copie de groupes.

//CPYGRP    JOB  ...
//STEP1     EXEC PGM=IEBCOPY
//SYSPRINT  DD  SYSOUT=A
//DDIN      DD  DSNAME=PDSESETA,DISP=SHR
//DDOUT     DD  DSNAME=PDSESETB,LIKE=PDSESETA,DSNTYPE=LIBRARY,
//          DISP=(NEW,CATLG)
//SYSUT3    DD  UNIT=SYSDA,SPACE=(TRK,(1,1))
//SYSIN     DD  *
GROUPCPY   COPYGRP  INDD=DDIN,OUTDD=DDOUT
/*

Les instructions de contrôle sont les suivantes :

  • DDIN DD définit l’ensemble de données d’entrée, PDSESETA, qui est un ensemble de données partitionné étendu.
    DDOUT DD définit le jeu de données de sortie, PDSESETA, qui est un jeu de données partitionné étendu.
    Le sous-paramètre LIKE indique que les attributs DCB et SPACE pour PDSSETB doivent être copiés à partir de PDSESETA.
    Le sous-paramètre DSNTYPE définit le nouvel ensemble de données comme un PDSE.
    Le sous-système de gestion de stockage choisit un volume approprié pour l’allocation.
  • SYSUT3 DD définit un ensemble de données de déversement temporaire.
  • 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 une instruction COPYGRP, une instruction INDD et une instruction OUTDD.
  • COPYGRP indique le début de l’opération de copie.
    Le paramètre INDD affiche PDSESETA comme ensemble de données d’entrée.
    Le paramètre OUTDD affiche PDSSETB comme ensemble de données de sortie.

Exemple 15 : Copier des groupes d’un PDSE vers un PDSE avec remplacement

Dans cet exemple, les membres et leurs alias sont copiés en groupes d’un PDSE vers un PDSE avec l’option de remplacement (R).

Voir JCL – Remplacement des objets programme pour plus d’informations sur le remplacement des groupes par COPYGRP.

//CPYGRP    JOB  ...
//STEP1     EXEC PGM=IEBCOPY
//SYSPRINT  DD  SYSOUT=A
//DDIN      DD  DSNAME=PDSESETA,DISP=SHR
//DDOUT     DD  DSNAME=PDSESETB,LIKE=PDSESETA,DSNTYPE=LIBRARY,
//          DISP=(NEW,CATLG)
//SYSUT3    DD  UNIT=SYSDA,SPACE=(TRK,(1,1))
//SYSIN     DD  *
GROUPCPY   COPYGRP  INDD=((DDIN,R)),OUTDD=DDOUT
/*

Les instructions de contrôle sont les suivantes :

  • DDIN DD définit l’ensemble de données d’entrée, PDSE, qui est un ensemble de données partitionné étendu.
    DDOUT DD définit l’ensemble de données de sortie, PDSE, qui est un ensemble de données partitionné étendu. Le paramètre DSNTYPE définit le nouvel ensemble de données comme un PDSE.
    Le sous-système de gestion de stockage choisit un volume approprié pour l’allocation.
  • SYSUT3 DD définit un ensemble de données de déversement temporaire.
  • 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 une instruction COPYGRP, une instruction INDD et une instruction OUTDD.
  • COPYGRP indique le début de l’opération de copie.
    Le paramètre ((INDD,R)) affiche PDSESETA comme ensemble de données d’entrée contenant des membres pour remplacer les membres portant le même nom dans PDSSETB.
    Le paramètre OUTDD affiche PDSSETB comme ensemble de données de sortie.

Exemple 16 : Copier un groupe sélectionné d’un PDSE vers un PDSE

Dans cet exemple, un membre sélectionné et ses alias sont copiés d’un PDSE vers un PDSE.
Le nom du membre ou un maximum de huit caractères peuvent être indiqués dans l’instruction SELECT.

Voir JCL – Copie des objets du programme (instructions COPYGRP et COPYGROUP) pour plus d’informations sur la sélection de groupes sur COPYGRP.

//CPYGRP    JOB  ...
//STEP1     EXEC PGM=IEBCOPY
//SYSPRINT  DD  SYSOUT=A
//DDIN      DD  DSNAME=PDSESETA,DISP=SHR
//DDOUT     DD  DSNAME=PDSESETB,LIKE=PDSESETA,DSNTYPE=LIBRARY,
//          DISP=(NEW,CATLG)
//SYSUT3    DD  UNIT=SYSDA,SPACE=(TRK,(1,1))
//SYSIN     DD  *
GROUPCPY   COPYGRP  INDD=DDIN,OUTDD=DDOUT
           SELECT   MEMBER=(ALIAS001)
/*

Les instructions de contrôle sont les suivantes :

  • DDIN DD définit l’ensemble de données d’entrée, PDSE, qui est un ensemble de données partitionné étendu.
    DDOUT DD définit l’ensemble de données de sortie, PDSE, qui est un ensemble de données partitionné étendu.
    Tous les PDSE doivent être gérés par le sous-système de gestion du stockage.
    Le paramètre LIKE indique que les attributs DCB et SPACE pour PDSSETB doivent être copiés à partir de PDSESETA.
    Le paramètre DSNTYPE définit le nouvel ensemble de données comme un PDSE.
    Le sous-système de gestion de stockage choisit un volume approprié pour l’allocation.
  • SYSUT3 DD définit un ensemble de données de déversement temporaire.
  • 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 une instruction COPYGRP, une instruction INDD et une instruction OUTDD.
  • COPYGRP indique le début de l’opération de copie.
    Le paramètre INDD affiche PDSESETA comme ensemble de données d’entrée.
    Le paramètre OUTDD affiche PDSSETB comme ensemble de données de sortie.
  • L’instruction SELECT indique qu’un groupe portant l’alias ALIAS001 doit être sélectionné dans l’ensemble de données d’entrée (PDSESETA) et copié dans l’ensemble de données de sortie (PDSESETB).

Exemple 17 : Copier les membres sélectionnés et leurs alias d’un PDS vers un PDS

Dans cet exemple, les membres sélectionnés et leurs alias sont copiés d’un PDS vers un PDS, tandis qu’une instruction EXCLUDE est utilisée pour empêcher la copie d’autres membres et de leurs alias.
Les instructions SELECT et EXCLUDE ne peuvent être utilisées que si l’opération est un COPYGROUP et que le masque de modèle de filtre de nom de membre est utilisé pour les deux.
Reportez-vous aux descriptions des instructions SELECT et EXCLUDE pour plus de détails sur l’utilisation du masque de modèle de filtre de nom de membre.

//CPYGROUP JOB ...
//STEP1    EXEC PGM=IEBCOPY
//SYSPRINT DD SYSOUT=*
//DDIN     DD DISP=SHR,DSN=PDSA
//DDOUT    DD DISP=(NEW,CATLG),DSN=PDSB,LIKE=PDSA,DSNTYPE=PDS
//SYSIN    DD *
CPYLBL1   COPYGROUP INDD=DDIN,OUTDD=DDOUT
          SELECT MEMBER=(ABCDEFGH,BCD*,%D*,GHIJKLMN)
          EXCLUDE MEMBER=(DEF*,EFGHIJKL,%GHI*)
/*

Les instructions de contrôle sont les suivantes :

  • DDIN DD définit l’ensemble de données d’entrée, PDSA, un ensemble de données partitionnées avec les membres suivants :
    1. ABCDEFGH
    2. BCDEFGHI
    3. CDEFGHIJ
    4. DEFGHIJK
    5. EFGHIJKL
    6. FGHJKLM
    7. GHIJKLMN
  • DDOUT DD définit l’ensemble de données de sortie, PDSB, un ensemble de données partitionné.
  • Le paramètre LIKE indique que les attributs DCB et SPACE pour PDSB doivent être copiés à partir de PDSA.
  • Le paramètre DSNTYPE définit l’ensemble de données en tant que PDS.
  • Le sous-système de gestion de stockage choisit un volume approprié pour l’ensemble de données nouvellement alloué.
  • 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 une instruction COPYGROUP, une instruction SELECT et une instruction EXCLUDE.
  • COPYGROUP indique le début d’une opération de copie de groupe.
  • Le paramètre INDD affiche PDSA comme ensemble de données d’entrée.
  • Le paramètre OUTDD affiche PDSB comme ensemble de données de sortie.
  • L’instruction SELECT utilise le masquage du modèle de filtre et indique que tout membre correspondant au modèle de masquage et tous ses alias seront sélectionnés dans l’ensemble de données d’entrée et copiés dans l’ensemble de données de sortie.
    Dans cet exemple, les membres ABCDEFGH, BCDEFGHI, CDEFGHIJ et GHIJKLMN et leurs alias seront copiés.
  • L’instruction EXCLUDE peut être utilisée pour le masquage de modèle de filtre pour une opération COPYGROUP uniquement lorsqu’une instruction SELECT de masquage de filtre est présente.
    Cela empêchera les membres correspondants et tous leurs alias d’être copiés dans le jeu de données de sortie.
    Dans cet exemple, les membres DEFGHIJK, EFGHIJKL et FGHIJKLM et leurs alias ne seront pas copiés.

Exemple 18 : Copier des membres sélectionnés d’un PDS vers un PDS

Dans cet exemple, les membres sélectionnés sont copiés d’un PDS vers un PDS.
Cet exemple diffère de l’exemple 16 en ce que COPYGROUP permet aux membres d’être copiés avec leurs alias d’un PDS vers un PDS, tandis que COPYGRP ne copie les alias que lorsque l’un ou les deux ensembles de données d’entrée et de sortie est un PDSE.
Si les deux sont des PDS, cela entraînera une opération COPY.

Voir JCL – Copie des objets du programme  (instructions COPYGRP et COPYGROUP) pour plus d’informations sur la sélection de groupes avec COPYGROUP et les différences entre les instructions COPYGROUP et COPYGRP.

//CPYGROUP JOB ...
//STEP1    EXEC PGM=IEBCOPY
//SYSPRINT DD SYSOUT=*
//DDIN     DD DISP=SHR,DSN=PDSA,DSNTYPE=PDS
//DDOUT    DD DSN=PDSB,LIKE=PDSA,DSNTYPE=PDS,DISP=(NEW,CATLG)
//SYSIN    DD *
CPYLBL2   COPYGROUP INDD=DDIN,OUTDD=DDOUT
          SELECT MEMBER=(MEMBER02)
          SELECT MEMBER=(MEMBER03)
/*

Les instructions de contrôle sont les suivantes :

  • DDIN DD définit l’ensemble de données d’entrée, PDSA, qui est un ensemble de données partitionnées.
  • DDOUT DD définit l’ensemble de données de sortie, PDSB, qui est un ensemble de données partitionnées.
  • Le paramètre LIKE indique que les attributs DCB et SPACE pour PDSB doivent être copiés à partir de PDSA.
  • Le paramètre DSNTYPE définit le nouvel ensemble de données en tant que PDS.
  • Le sous-système de gestion de stockage choisit un volume approprié pour l’allocation.
  • 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 une instruction COPYGROUP et deux instructions SELECT.
  • COPYGROUP indique le début d’une opération de copie de groupe.
  • Le paramètre INDD affiche PDSA comme ensemble de données d’entrée.
  • Le paramètre OUTDD affiche PDSB comme ensemble de données de sortie.
  • L’instruction SELECT indique que le membre MEMBER02, MEMBER03 et tous leurs alias doivent être sélectionnés dans l’ensemble de données d’entrée (PDSA) et copiés dans l’ensemble de données de sortie (PDSB).