Tous les articles par Mr COBOL

JCL – IFHSTATR

Dans cet exemple, IFHSTATR est utilisé pour imprimer les enregistrements SMF de type 21.

//REPORT   JOB  ...
//STEP1    EXEC PGM=IFHSTATR
//SYSUT1   DD  UNIT=3480,DSNAME=SYS1.MAN,LABEL=(,SL),
//             VOL=SER=volid,DISP=OLD
//SYSUT2   DD  SYSOUT=A
/*

L’ensemble de données de sortie peut résider sur n’importe quel périphérique de sortie pris en charge par BSAM.

Remarque : Les paramètres d’entrée LRECL et BLKSIZE ne sont pas spécifiés par IFHSTATR.
Ces informations sont extraites du paramètre DCB de l’instruction DD SYSUT1 ou de l’étiquette de la bande.

JCL – IEHPROGM

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

Tableau 1. Répertoire d’exemples IEHPROGM

OpérationDispositifCommentairesExemple
SCRATCHDisqueLe DSCB des jeux de données est rayé.Exemple 1 : Scratch des ensembles de données système temporaires
SCRATCH, UNCATLGDisqueDeux ensembles de données sont rayés et leurs entrées supprimées du catalogue.Exemple 2 : Scratch et Uncatalog Two Data Sets
RENAME, UNCATLG, CATLGDisqueUn ensemble de données est renommé sur deux appareils montables ; l’ancien nom de l’ensemble de données est supprimé. Le jeu de données est catalogué sous son nouveau nom.Exemple 3 : Renommer un catalogue d’ensembles de données multi-volumes
UNCATLGDisqueLes structures d’index pour les ensembles de données de trois générations sont supprimées du catalogue.Exemple 4 : Décataloguer trois ensembles de données
RENAME, DELETEP, ADDDisqueUn ensemble de données est renommé. Les anciens mots de passe sont supprimés et de nouveaux mots de passe sont attribués.Exemple 5 : Renommer un ensemble de données et définir de nouveaux mots de passe
LIST, REPLACEDisqueUne entrée de mot de passe est répertoriée. Le mode et l’état de la protection sont modifiés et des données utilisateur sont ajoutées.Exemple 6 : répertorier et remplacer les informations de mot de passe
RENAMEDisqueUn membre d’un ensemble de données partitionné est renommé.Exemple 7 : renommer un membre d’ensemble de données partitionné

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

Exemples

Exemple 1 : Jeux de données système temporaires Scratch

Dans cet exemple, tous les ensembles de données système temporaires sont rayés de la table des matières du volume.

//SCRVTOC  JOB  ...
//STEP1    EXEC PGM=IEHPROGM
//SYSPRINT DD  SYSOUT=A
//DD2      DD  UNIT=disk,VOLUME=SER=222222,DISP=OLD
//SYSIN    DD  *
      SCRATCH  VTOC,VOL=disk=222222,SYS
/*

Les instructions de contrôle sont décrites comme suit :

  • L’instruction DD2 définit un volume.
    Étant donné que le volume de résidence du système n’est pas référencé, une instruction DD est nécessaire pour le définir.
  • L’instruction SCRATCH, avec SYS spécifié, indique que tous les ensembles de données système temporaires dont les dates d’expiration ont expiré sont supprimés du volume spécifié.

Exemple 2 : Scratch et Uncatalog deux ensembles de données

Dans cet exemple, deux ensembles de données sont effacés : SET1 et ABCDE sont effacés du volume 222222.
Les deux ensembles de données ne sont pas catalogués.

//SCRDSETS JOB  ...
//STEP1    EXEC PGM=IEHPROGM
//SYSPRINT DD  SYSOUT=A
//DD1      DD  UNIT=disk,VOLUME=SER=111111,DISP=OLD
//DD2      DD  UNIT=disk,DISP=OLD,VOLUME=SER=222222
//SYSIN    DD  *
      SCRATCH  DSNAME=SET1,VOL=disk=222222
      UNCATLG  DSNAME=SET1
      SCRATCH  DSNAME=A.B.C.D.E,VOL=disk=222222
      UNCATLG  DSNAME=A.B.C.D.E
/*

Les déclarations de contrôle d’utilité sont discutées comme suit :

  • La première instruction SCRATCH spécifie que SET1, qui réside sur le volume 222222, est rayé.
  • La première instruction UNCATLG spécifie que SET1 n’est pas catalogué.
  • La deuxième instruction SCRATCH spécifie que ABCDE, qui réside sur le volume 222222, est rayé.
  • La deuxième instruction UNCATLG spécifie que ABCDE n’est pas catalogué.

Exemple 3 : Renommer un catalogue de jeux de données multi-volumes

Dans cet exemple, le nom d’un ensemble de données est modifié sur deux volumes montables.
L’ancien nom d’ensemble de données est supprimé et l’ensemble de données est catalogué sous son nouveau nom d’ensemble de données.

//RENAMEDS JOB  ...
//STEP1    EXEC PGM=IEHPROGM
//SYSPRINT DD  SYSOUT=A
//DD1      DD  VOLUME=SER=111111,UNIT=disk,DISP=OLD
//DD2      DD  UNIT=(disk,,DEFER),DISP=OLD,
//             VOLUME=(PRIVATE,SER=(222222,333333))
//SYSIN    DD  *
  RENAME   DSNAME=A.B.C,NEWNAME=NEWSET,VOL=disk=(222222,333333)
  UNCATLG  DSNAME=A.B.C
  CATLG    DSNAME=NEWSET,VOL=disk=(222222,333333)
/*

Les instructions de contrôle sont décrites comme suit :

  • RENAME spécifie que l’ensemble de données ABC, qui réside sur les volumes 222222 et 333333, doit être renommé NEWSET.
  • UNCATLG spécifie que l’ensemble de données ABC n’est pas catalogué.
  • CATLG spécifie que NEWSET, qui réside sur les volumes 222222 et 333333, est catalogué.

Exemple 4 : Décataloguer trois jeux de données

Dans cet exemple, trois ensembles de données, ABCDEFSET1, ABCGHSET2 et ABIJKSET3, ne sont pas catalogués.

//DLTSTRUC JOB  ...
//STEP1    EXEC PGM=IEHPROGM
//SYSPRINT DD  SYSOUT=A
//DD1      DD  UNIT=disk,VOLUME=SER=111111,DISP=OLD
//SYSIN    DD  *
      UNCATLG   DSNAME=A.B.C.D.E.F.SET1
      UNCATLG   DSNAME=A.B.C.G.H.SET2
      UNCATLG   DSNAME=A.B.I.J.K.SET3
/*

Les instructions de contrôle sont discutées comme suit :

Les instructions UNCATLG spécifient que les ensembles de données ABCDEFSET1, ABCGHSET2 et ABIJKSET3 ne sont pas catalogués.

Exemple 5 : Renommer un ensemble de données et définir de nouveaux mots de passe

Dans cet exemple, un ensemble de données est renommé.
Les mots de passe d’ensemble de données attribués à l’ancien nom d’ensemble de données sont supprimés.
Ensuite, deux mots de passe sont attribués au nouveau nom de l’ensemble de données.
Si l’ensemble de données n’est pas catalogué, un message est émis indiquant que la macro-instruction LOCATE s’est terminée sans succès.

//ADDPASS  JOB  ...
//STEP1    EXEC PGM=IEHPROGM,PARM='NOPRINT'
//SYSPRINT DD  SYSOUT=A
//DD1      DD  VOLUME=SER=222222,DISP=OLD,
//             UNIT=disk
//SYSIN    DD  *
   RENAME DSNAME=OLD,VOL=disk=222222,NEWNAME=NEW
  DELETEP DSNAME=OLD,PASWORD1=KEY
      ADD DSNAME=NEW,PASWORD2=KEY,TYPE=1,                              X
               DATA='SECONDARY IS READ'
      ADD DSNAME=NEW,PASWORD2=READ,CPASWORD=KEY,TYPE=2,                X
               DATA='ASSIGNED TO J. DOE'
/*

Les déclarations de contrôle d’utilité sont discutées comme suit :

  • RENAME spécifie que l’ensemble de données appelé OLD est renommé NEW.
    L’opérateur doit fournir un mot de passe pour renommer l’ancien ensemble de données.
  • DELETEP spécifie que l’entrée pour le mot de passe KEY est supprimée.
    Étant donné que KEY est un mot de passe de contrôle dans cet exemple, toutes les entrées de mot de passe pour le nom de l’ensemble de données sont supprimées.
    Le paramètre VOL n’est pas nécessaire car l’état de protection de l’ensemble de données tel qu’il est défini dans le DSCB ne doit pas être modifié ; la protection en lecture/écriture est actuellement définie dans le DSCB, et la protection en lecture/écriture est souhaitée lorsque les mots de passe sont réattribués sous le nouveau nom d’ensemble de données.
  • Les instructions ADD spécifient que des entrées sont ajoutées pour les mots de passe KEY et READ. KEY devient le mot de passe de contrôle et permet à la fois l’accès en lecture et en écriture à l’ensemble de données.
    READ devient un mot de passe secondaire et n’autorise qu’un accès en lecture à l’ensemble de données.
    Le paramètre VOL n’est pas nécessaire, car l’état de protection de l’ensemble de données est toujours défini dans le DSCB.

Exemple 6 : Répertorier et remplacer les informations de mot de passe

Dans cet exemple, les informations d’une entrée de mot de passe sont répertoriées.
Ensuite, le mode de protection du mot de passe, l’état de protection de l’ensemble de données et les données utilisateur sont modifiés.

//REPLPASS JOB  ...
//STEP1    EXEC PGM=IEHPROGM,PARM='NOPRINT'
//SYSPRINT DD  SYSOUT=A
//DD1      DD  UNIT=disk,VOLUME=SER=111111,DISP=OLD
//DD2      DD  VOLUME=(PRIVATE,SER=(222222,333333)),
//             UNIT=(disk,,DEFER),DISP=OLD
//SYSIN    DD  *
     LIST   DSNAME=A.B.C,PASWORD1=ABLE
  REPLACE   DSNAME=A.B.C,PASWORD1=ABLE,PASWORD2=ABLE,TYPE=3,            X
             VOL=disk=(222222,333333),                                  X
             DATA='NO SECONDARIES; ASSIGNED TO DEPT 31'
/*

Les déclarations de contrôle d’utilité sont discutées comme suit :

  • LIST spécifie que le compteur d’accès, le mode de protection et les données utilisateur de l’entrée pour le mot de passe ABLE sont répertoriés.
    Le fait de lister l’entrée permet d’enregistrer le contenu du compteur d’accès avant que le compteur ne soit remis à zéro par l’instruction REPLACE.
  • REPLACE spécifie que le mode de protection du mot de passe ABLE doit être modifié pour autoriser à la fois l’accès en lecture et en écriture et que l’état de protection de l’ensemble de données est modifié en protection en écriture seule.
    Le paramètre VOL est obligatoire car l’état de protection du jeu de données est modifié et le jeu de données, dans cet exemple, n’est pas catalogué.
    Comme il s’agit d’un mot de passe de contrôle, le paramètre CPASWORD n’est pas requis.

Exemple 7 : Renommer un membre d’ensemble de données partitionné

Dans cet exemple, un membre d’un ensemble de données partitionnées est renommé.

//REN      JOB  ...
//STEP1    EXEC PGM=IEHPROGM
//SYSPRINT DD  SYSOUT=A
//DD1      DD  VOL=SER=222222,DISP=OLD,UNIT=disk
//SYSIN    DD  *
   RENAME VOL=disk=222222,DSNAME=DATASET,NEWNAME=BC,MEMBER=ABC
/*

Les instructions de contrôle sont discutées comme suit :

  • DD1 DD définit un volume monté en permanence.
  • SYSIN DD définit l’ensemble de données d’entrée, qui suit dans le flux d’entrée.
  • RENAME spécifie que le membre ABC dans l’ensemble de données partitionnées DATASET, qui réside sur un volume de disque, est renommé BC.

JCL – IEHMOVE

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

Tableau 1. Répertoire d’exemples IEHMOVE

OpérationOrganisation de l’ensemble de
données
DispositifCommentairesExemple
MOVEGroupe d’ensembles de donnéesDisqueLe groupe d’ensembles de données est déplacé.Exemple 1 : Déplacer des ensembles de données séquentiels d’un volume de disque vers des volumes distincts
MOVEpartitionnéDisqueUn ensemble de données partitionné est déplacé ; un membre d’un autre ensemble de données partitionné est fusionné avec lui.Exemple 2 : Déplacer l’ensemble de données partitionnées vers le volume de disque et fusionner
MOVEVolumeDisqueUn volume d’ensembles de données est déplacé vers un volume de disque.Exemple 3 : Déplacer le volume des ensembles de données vers le volume du disque
MOVEpartitionnéDisqueUn ensemble de données est déplacé vers un volume sur lequel de l’espace a été précédemment alloué.Exemple 4 : Déplacer l’ensemble de données partitionné vers l’espace alloué
MOVEpartitionnéDisqueTrois ensembles de données sont déplacés et déchargés vers un volume sur lequel de l’espace a été précédemment alloué.Exemple 5 : déplacer et décharger le volume d’ensembles de données partitionnés
MOVESéquentielDisque et bandeUn ensemble de données séquentielles est déchargé sur un volume de bande à 9 pistes sans étiquette.Exemple 6 : Décharger un jeu de données séquentiel sur un volume de bande sans étiquette
MOVESéquentielDisque et bandeLes ensembles de données déchargés sont chargés à partir d’un seul volume.Exemple 7 : charger des ensembles de données séquentielles déchargées à partir d’une bande étiquetée
MOVESéquentielDisqueLe volume source est démonté une fois la tâche terminée. Deux disques montables.Exemple 8 : Déplacer un groupe d’ensembles de données catalogués

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

Exemples

Exemple 1 : Déplacer des ensembles de données séquentiels d’un volume de disque vers des volumes distincts

Dans cet exemple, trois ensembles de données séquentiels (SEQSET1, SEQSET2 et SEQSET3) sont déplacés d’un volume de disque vers trois volumes de disque distincts.
Chacun des trois volumes de réception est monté lorsque requis par IEHMOVE.
Les ensembles de données source ne sont pas catalogués. L’espace est alloué par IEHMOVE.

//MOVEDS   JOB  ...
//STEP1    EXEC PGM=IEHMOVE
//SYSPRINT DD  SYSOUT=A
//SYSUT1   DD  UNIT=disk,VOLUME=SER=333333,DISP=OLD
//DD1      DD  UNIT=(disk,,DEFER),DISP=OLD,
//             VOLUME=(PRIVATE,,SER=(222222))
//DD2      DD  UNIT=(disk,,DEFER),DISP=OLD,
//             VOLUME=(PRIVATE,,SER=(222333))
//DD3      DD  UNIT=(disk,,DEFER),DISP=OLD,
//             VOLUME=(PRIVATE,,SER=(222444))
//DD4      DD  VOLUME=(PRIVATE,RETAIN,SER=(444444)),
//             UNIT=disk,DISP=OLD
//SYSIN    DD  *
     MOVE   DSNAME=SEQSET1,TO=disk=222222,FROM=disk=444444
     MOVE   DSNAME=SEQSET2,TO=disk=222333,FROM=disk=444444
     MOVE   DSNAME=SEQSET3,TO=disk=222444,FROM=disk=444444
/*

Les instructions de contrôle sont discutées comme suit :

  • SYSUT1 DD définit le périphérique de disque qui doit contenir l’ensemble de données de travail.
  • DD1, DD2 et DD3 DD définissent les volumes de réception.
  • DD4 DD définit un périphérique sur lequel le volume source est monté.
    Comme le sous-paramètre RETAIN est inclus, le volume reste monté jusqu’à ce que la tâche soit terminée.
  • SYSIN DD définit l’ensemble de données de contrôle, qui suit dans le flux d’entrée.
  • MOVE déplace les ensembles de données source vers les volumes 222222, 222333 et 222444, respectivement.
    Les ensembles de données source sont rayés.

Exemple 2 : Déplacer l’ensemble de données partitionnées vers le volume de disque et fusionner

Dans cet exemple, un ensemble de données partitionné (PARTSET1) est déplacé vers un volume de disque.
De plus, un membre (PARMEM3) d’un autre ensemble de données partitionné (PARTSET2) est fusionné avec les membres source sur le volume de réception.
L’ensemble de données partitionnées source (PARTSET1) est rayé. L’espace est alloué par IEHMOVE.

//MOVEPDS  JOB  ...
//STEP1    EXEC PGM=IEHMOVE
//SYSPRINT DD  SYSOUT=A
//SYSUT1   DD  UNIT=disk,VOLUME=SER=333000,DISP=OLD
//DD1      DD  UNIT=disk,VOLUME=SER=111111,DISP=OLD
//DD2      DD  UNIT=disk,VOLUME=SER=222111,DISP=OLD
//DD3      DD  UNIT=disk,VOLUME=SER=222222,DISP=OLD
//DD4      DD  UNIT=disk,VOLUME=SER=222333,DISP=OLD
//SYSIN    DD  *
     MOVE   PDS=PARTSET1,TO=disk=222333,FROM=disk=222111
  INCLUDE   DSNAME=PARTSET2,MEMBER=PARMEM3,FROM=disk=222222
/*

Les instructions de contrôle sont discutées comme suit :

  • SYSUT1 DD définit le volume de disque qui doit contenir l’ensemble de données de travail.
  • DD1 DD définit le dispositif de résidence du système.
  • Les instructions DD2, DD3 et DD4 DD définissent les périphériques qui doivent contenir les deux volumes source et le volume de réception.
  • SYSIN DD définit l’ensemble de données de contrôle, qui suit dans le flux d’entrée.
  • MOVE définit l’ensemble de données partitionné source, le volume qui le contient et son volume de réception.
  • INCLUDE inclut un membre d’un deuxième ensemble de données partitionnées dans l’opération.

Exemple 3 : Déplacer le volume d’ensembles de données vers le volume de disque

Dans cet exemple, un volume d’ensembles de données est déplacé vers un volume de disque.
Tous les ensembles de données déplacés avec succès sont supprimés du volume source ;
cependant, les entrées de catalogue appartenant à ces ensembles de données ne sont pas modifiées.
L’espace est alloué par IEHMOVE.

//MOVEVOL  JOB  ...
//STEP1    EXEC PGM=IEHMOVE
//SYSPRINT DD  SYSOUT=A
//SYSUT1   DD  UNIT=disk,VOLUME=SER=222222,DISP=OLD
//DD1      DD  UNIT=disk,VOLUME=SER=111111,DISP=OLD
//DD2      DD  UNIT=disk,VOLUME=SER=222222,DISP=OLD
//DD3      DD  UNIT=disk,VOLUME=SER=333333,DISP=OLD
//SYSIN    DD  *
         MOVE   VOLUME=disk=333333,TO=disk=222222,PASSWORD
/*

Les instructions de contrôle sont décrites comme suit :

  • SYSUT1 DD définit l’appareil qui doit contenir le jeu de données de travail.
  • DD1 DD définit le dispositif de résidence du système.
  • DD2 DD définit le périphérique sur lequel le volume de réception est monté.
  • DD3 DD définit un périphérique sur lequel le volume source est monté.
  • SYSIN DD définit l’ensemble de données de contrôle, qui suit dans le flux d’entrée.
  • MOVE spécifie une opération de déplacement pour un volume d’ensembles de données et définit les volumes source et récepteur.
    Cette déclaration indique également que des ensembles de données protégés par mot de passe sont inclus dans l’opération.

Exemple 4 : Déplacer l’ensemble de données partitionné vers l’espace alloué

Dans cet exemple, un ensemble de données partitionné est déplacé vers un volume de disque sur lequel de l’espace a été précédemment alloué pour l’ensemble de données.
L’ensemble de données source est barré.

//MOVEPDS  JOB  ...
//STEP1    EXEC PGM=IEHMOVE
//SYSPRINT DD  SYSOUT=A
//SYSUT1   DD  UNIT=disk,VOLUME=SER=222222,DISP=OLD
//DD1      DD  UNIT=disk,VOLUME=SER=111111,DISP=OLD
//DD2      DD  UNIT=disk,VOLUME=SER=222222,DISP=OLD
//DD3      DD  UNIT=disk,VOLUME=SER=333333,DISP=OLD
//SYSIN    DD  *
         MOVE   PDS=PDSSET1,TO=disk=222222,FROM=disk=333333
/*

Les instructions de contrôle sont décrites comme suit :

  • SYSUT1 DD définit l’appareil qui doit contenir le jeu de données de travail.
  • DD1 DD définit le dispositif de résidence du système.
  • DD2 DD définit l’appareil sur lequel le volume de réception doit être monté.
  • DD3 DD définit un périphérique sur lequel le volume source est monté.
  • SYSIN DD définit l’ensemble de données de contrôle, qui suit dans le flux d’entrée.
  • MOVE spécifie une opération de déplacement pour l’ensemble de données partitionnées PDSSET1 et définit les volumes source et récepteur.

Exemple 5 : Déplacer et décharger un volume d’ensembles de données partitionnés

Dans cet exemple, trois ensembles de données partitionnés sont déplacés de trois volumes source distincts vers un volume de disque.
L’ensemble de données source PDSSET3 est déchargé.
La taille de l’enregistrement dépasse la capacité des pistes du volume de réception.

//MOVEPDS  JOB  ...
//STEP1    EXEC PGM=IEHMOVE
//SYSPRINT DD  SYSOUT=A
//SYSUT1   DD  UNIT=disk,VOLUME=SER=222222,DISP=OLD
//DD1      DD  UNIT=disk,VOLUME=SER=111111,DISP=OLD
//DD2      DD  UNIT=(disk,,DEFER),DISP=OLD,
//             VOLUME=(PRIVATE,,SER=(333333))
//DD3      DD  UNIT=disk,VOLUME=SER=222222,DISP=OLD
//SYSIN    DD  *
    MOVE  PDS=PDSSET1,TO=disk=222222,FROM=disk=333333
    MOVE  PDS=PDSSET2,TO=disk=222222,FROM=disk=222222
    MOVE  PDS=PDSSET3,TO=disk=222222,FROM=disk=444444,UNLOAD
/*

PDSSET1, PDSSET2 et PDSSET3 sont déjà alloués sur le volume de réception.
PDSSET3 est alloué en tant qu’ensemble de données séquentiel ; PDSSET1 et PDSSET2 sont alloués en tant qu’ensembles de données partitionnés.
Étant donné que PDSSET3 est déplacé vers un ensemble de données séquentiel, il est déchargé.

Les attributs DCB de PDSSET3 sont :

DCB=(RECFM=U,BLKSIZE=5000)

Les attributs déchargés sont :

DCB=(RECFM=FB,LRECL=80,BLKSIZE=800)

Les instructions de contrôle sont décrites comme suit :

  • SYSUT1 DD définit l’appareil qui doit contenir le jeu de données de travail.
  • DD1 DD définit le dispositif de résidence du système.
  • DD2 DD définit un périphérique sur lequel les volumes source sont montés selon les besoins.
  • DD3 DD définit un périphérique sur lequel le volume de réception est monté.
  • SYSIN DD définit l’ensemble de données de contrôle, qui suit dans le flux d’entrée.
  • MOVE spécifie les opérations de déplacement pour les ensembles de données partitionnés et définit les volumes source et récepteur pour chaque ensemble de données.

Exemple 6 : déchargement d’un jeu de données séquentiel sur un volume de bande sans étiquette

Dans cet exemple, un ensemble de données séquentielles est déchargé sur un volume de bande non étiqueté à 9 pistes (800 bits par pouce).

//UNLOAD   JOB  ...
//STEP1    EXEC PGM=IEHMOVE
//SYSPRINT DD  SYSOUT=A
//SYSUT1   DD  UNIT=disk,VOLUME=SER=222222,DISP=OLD
//DD1      DD  UNIT=disk,VOLUME=SER=111111,DISP=OLD
//DD2      DD  UNIT=disk,VOLUME=SER=222222,DISP=OLD
//TAPEOUT  DD  UNIT=tape,VOLUME=SER=SCRCH2,DISP=OLD,
//             DCB=(DEN=2,RECFM=FB,LRECL=80,BLKSIZE=800),
//             LABEL=(,NL)
//SYSIN    DD  *
    MOVE DSNAME=SEQSET1,TO=tape=SCRCH2,
FROM=disk=222222,TODD=TAPEOUT
/*

Les instructions de contrôle sont discutées comme suit :

  • SYSUT1 DD définit l’appareil qui doit contenir le jeu de données de travail.
  • DD1 DD définit le dispositif de résidence du système.
  • DD2 DD définit un périphérique sur lequel le volume source est monté.
  • TAPEOUT DD définit un périphérique sur lequel le volume de bande récepteur est monté.
    Cette instruction fournit également des informations sur l’étiquette et le mode.
  • SYSIN DD définit l’ensemble de données de contrôle, qui suit dans le flux d’entrée.
  • MOVE déplace l’ensemble de données séquentielles SEQSET1 d’un volume de disque vers le volume de bande récepteur.
    L’ensemble de données est déchargé. Le paramètre TODD de cette instruction fait référence à l’instruction TAPEOUT DD pour les informations d’étiquette et de mode.

Exemple 7 : Chargement d’ensembles de données séquentiels déchargés à partir d’une bande étiquetée

Dans cet exemple, trois ensembles de données séquentielles déchargées sont chargées à partir d’un volume de bande étiqueté à 7 pistes (556 bits par pouce) vers un volume de disque.
L’espace est alloué par IEHMOVE.
L’exemple suppose que le volume de disque est capable de prendre en charge les ensembles de données dans leurs formes d’origine.

//LOAD     JOB  ...
//STEP1    EXEC PGM=IEHMOVE
//SYSPRINT DD  SYSOUT=A
//SYSUT1   DD  UNIT=disk,VOLUME=SER=222222,DISP=OLD
//DD1      DD  UNIT=disk,VOLUME=SER=111111,DISP=OLD
//DD2      DD  UNIT=disk,VOLUME=SER=222222,DISP=OLD
//TAPESETS DD  UNIT=tape,VOLUME=SER=001234,DISP=OLD,
//             LABEL=(1,SL),DCB=(DEN=1,TRTCH=C)
//SYSIN    DD  *
         MOVE   DSNAME=UNLDSET1,T0=disk=222222,             X
               FROM=tape=(001234,1),FROMDD=TAPESETS
         MOVE   DSNAME=UNLDSET2,TO=disk=222222,             X
               FROM=tape=(001234,2),FROMDD=TAPESETS
         MOVE   DSNAME=UNLDSET3,TO=disk=222222,             X
               FROM=tape=(001234,3),FROMDD=TAPESETS
/*

Les instructions de contrôle sont décrites comme suit :

  • SYSUT1 DD définit l’appareil qui doit contenir le jeu de données de travail.
  • DD1 DD définit le dispositif de résidence du système.
  • DD2 DD définit un périphérique sur lequel le volume de réception est monté.
  • TAPESETS DD définit un périphérique sur lequel le volume de bande source est monté.
    Les informations DCB sont fournies dans cette déclaration.
  • SYSIN DD définit l’ensemble de données de contrôle, qui suit dans le flux d’entrée.
  • MOVE déplace les ensembles de données déchargés vers le volume de réception.
  • Pour déplacer un ensemble de données d’un volume de bande contenant plusieurs ensembles de données, vous devez spécifier le numéro de séquence de l’ensemble de données dans la zone de liste du paramètre FROM de l’instruction de contrôle de l’utilitaire.

Exemple 8 : Déplacer un groupe d’ensembles de données catalogués

Dans cet exemple, le groupe d’ensembles de données catalogués ABC, qui comprend les ensembles de données ABCX, ABCY et ABCZ, est déplacé de deux volumes de disque vers un troisième volume.
L’espace est alloué par IEHMOVE.
Le catalogue est mis à jour pour faire référence au volume de réception.
Les ensembles de données source sont rayés.

//MOVEDSG  JOB  ...
//STEP1    EXEC PGM=IEHMOVE
//SYSPRINT DD  SYSOUT=A
//SYSUT1   DD  UNIT=disk,VOLUME=SER=222222,DISP=OLD
//DD1      DD  UNIT=disk,VOLUME=SER=111111,DISP=OLD
//DD2      DD  UNIT=disk,VOLUME=SER=222222,DISP=OLD
//DD3      DD  UNIT=disk,VOLUME=SER=333333,DISP=OLD
//DD4      DD  UNIT=disk,VOLUME=SER=444444,DISP=OLD
//SYSIN    DD  *
         MOVE   DSGROUP=A.B.C,TO=disk=222222
/*

Les instructions de contrôle sont discutées comme suit :

  • SYSUT1 DD définit l’appareil qui doit contenir le jeu de données de travail.
  • DD1 DD définit le dispositif de résidence du système.
  • DD2 DD définit un périphérique sur lequel le volume de réception est monté.
  • DD3 DD définit un périphérique sur lequel l’un des volumes source est monté.
  • DD4 DD définit un périphérique sur lequel l’un des volumes source est monté.
  • SYSIN DD définit l’ensemble de données de contrôle, qui suit dans le flux d’entrée.
  • MOVE déplace les ensembles de données spécifiés vers le volume 222222.
  • Cet exemple peut être utilisé pour produire le même résultat sans l’utilisation de l’instruction DD4 DD, en utilisant un périphérique de disque montable de moins.
    Avec DD3 et DD4, les deux volumes source sont montés au début de la tâche.
    Avec DD3 uniquement, le volume 333333 est monté au début de la tâche.
    Une fois le volume 333333 traité, l’utilitaire demande à l’opérateur de monter le volume 444444.
    Dans ce cas, l’instruction DD3 est codée :
//DD3 DD UNIT=(disque,,DEFER),DISP=OLD, 
// VOLUME=(PRIVATE,,SER=(333333))

JCL – IEHLIST

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

Tableau 1. Répertoire d’exemples IEHLIST

OpérationDispositifCommentairesExemple
LISTEPDSDisque et périphérique de sortie systèmeUn répertoire PDSE et deux répertoires d’ensembles de données partitionnés sont répertoriés.Exemple 1 : Répertorier les répertoires partitionnés à l’aide de DUMP et FORMAT
LISTEVTOCDisque et périphérique de sortie systèmeLa table des matières du volume est répertoriée sous forme éditée; les blocs de contrôle d’ensemble de données sélectionnés sont répertoriés sous une forme non éditée.Exemple 2 : Lister la table des matières des volumes non indexés
Tableau 1. Répertoire d’exemples IEHLIST 

Les exemples qui utilisent le disque à la place des numéros ou des noms de périphériques réels doivent être modifiés avant utilisation.
Les numéros ou noms de périphériques réels dépendent de la façon dont votre installation a défini les périphériques sur votre système.

EXEMPLES

Exemple 1 : Répertorier les répertoires partitionnés à l’aide de DUMP et FORMAT

Dans cet exemple, le répertoire d’un PDSE est répertorié.
En outre, les répertoires de deux ensembles de données partitionnés qui résident sur le volume de résidence du système sont répertoriés.

//LISTPDIR JOB  ...
//STEP1    EXEC PGM=IEHLIST
//SYSPRINT DD  SYSOUT=A
//DD1      DD  UNIT=diskB,VOLUME=REF=SYS1.NUCLEUS,DISP=OLD
//DD2      DD  UNIT=diskA,VOLUME=SER=222222,DISP=OLD
//SYSIN    DD  *
      LISTPDS   DSNAME=D42.PDSE1,VOL=diskA=222222
      LISTPDS   DSNAME=(D55.PART1,D55.PART2),FORMAT
/*

Les instructions de contrôle sont les suivantes :

  • DD1 DD définit le dispositif de résidence du système.
  • DD2 DD définit un périphérique sur lequel un volume de disque (222222) est monté.
  • SYSIN DD définit l’ensemble de données de contrôle, qui suit dans le flux d’entrée.
  • La première instruction LISTPDS indique que le répertoire PDSE appartenant à l’ensemble de données D42.PDSE1 doit être listé.
    La liste est dans un format non édité (dump). Cet ensemble de données réside sur le volume 222222.
  • La deuxième instruction LISTPDS indique que les répertoires d’ensembles de données partitionnés appartenant aux ensembles de données D55.PART1 et D55.PART2 doivent être répertoriés.
    La liste est au format modifié. Ces ensembles de données existent sur le volume de résidence du système.
  • La liste non modifiée d’un ensemble de données partitionnées affiche une entrée non modifiée pour un membre partitionné.
    L’entrée modifiée d’un membre partitionné affiche une entrée modifiée.

Exemple 2 : Lister la table des matières d’un volume non indexé

Dans cet exemple, une table des matières de volume non indexé est répertoriée dans le premier format modifié.
La liste éditée est complétée par une liste non éditée de blocs de contrôle d’ensembles de données sélectionnés.

//VTOCLIST JOB  ...
//STEP1    EXEC PGM=IEHLIST
//SYSPRINT DD  SYSOUT=A
//DD2      DD  UNIT=disk,VOLUME=SER=111111,DISP=OLD
//SYSIN    DD  *
     LISTVTOC   FORMAT,VOL=disk=111111
     LISTVTOC   DUMP,VOL=disk=111111,DSNAME=(SET1,SET2,SET3)
/*

Les instructions de contrôle sont les suivantes :

  • DD2 DD définit un périphérique contenant la table des matières du volume spécifié.
  • SYSIN DD définit l’ensemble de données de contrôle, qui suit dans le flux d’entrée.
  • La première instruction LISTVTOC indique que la table des matières du volume sur le volume de disque spécifié doit être répertoriée sous forme modifiée.
  • La deuxième instruction LISTVTOC indique que les blocs de contrôle d’ensemble de données représentant les ensembles de données SET1, SET2 et SET3 doivent être répertoriés sous une forme non éditée.

JCL – IEHINITT

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

Tableau 1. Répertoire d’exemples IEHINITT

OpérationCommentairesExemple
LABELTrois bandes 9 pistes sont à étiqueter.Exemple 1 : écriture d’étiquettes EBCDIC sur trois bandes
LABELUne bande 9 pistes doit être étiquetée en ISO/ANSI.Exemple 2 : écriture d’une étiquette ISO/ANSI sur une bande
LABELDeux groupes de volumes de bande 9 pistes doivent être étiquetés.Exemple 3 : placer deux groupes de numéros de série sur six volumes de bande
LABELLes volumes de bande 9 pistes doivent être étiquetés. Les numéros de séquence doivent être incrémentés de 10.Exemple 4 : placer le numéro de série sur huit volumes de bande
LABELTrois volumes de bande 9 pistes doivent être étiquetés. Une étiquette alphanumérique doit être apposée sur un volume de bande ; des étiquettes numériques sont placées sur les deux volumes de bande restants.Exemple 5 : écrire des étiquettes EBCDIC dans différentes densités
LABELDeux volumes de bande 9 pistes doivent être étiquetés. Le premier volume est étiqueté à une densité de 6250 bpi ; le second à une densité de 1600 bpi.Exemple 6 : Écrire des numéros de série sur des volumes de bande à deux densités
LABELUn volume de bande à 9 pistes est étiqueté au format ISO/ANSI avec un code d’accès non vierge.Exemple 7 : Écrire une étiquette ISO/ANSI avec un code d’accès

Les exemples qui utilisent 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 : Ecrire des étiquettes EBCDIC sur trois bandes

Dans cet exemple, les numéros de série 001234, 001235 et 001236 sont placés sur trois volumes de bande.
Les étiquettes sont écrites en EBCDIC à 800 bits par pouce.
Chaque volume étiqueté est monté, lorsque cela est nécessaire, sur une seule unité de bande 9 pistes.

//LABEL1   JOB  ...
//STEP1    EXEC PGM=IEHINITT
//SYSPRINT DD  SYSOUT=A
//LABEL    DD  DCB=DEN=2,UNIT=(tape,1,DEFER)
//SYSIN    DD  *
LABEL   INITT  SER=001234,NUMBTAPE=3
/*

Les instructions de contrôle sont les suivantes :

  • LABEL DD définit l’unité de bande utilisée dans l’opération d’étiquetage.
  • SYSIN DD définit l’ensemble de données de contrôle, qui suit dans le flux d’entrée.
  • LABEL INITT spécifie le nombre de bandes à étiqueter (3), en commençant par 001234.

Exemple 2 : Écrire une étiquette ISO/ANSI sur une bande

Dans cet exemple, le numéro de série 001001 est placé sur un volume de bande ISO/ANSI ; l’étiquette est écrite à 800 bits par pouce.
Le volume étiqueté est monté, si nécessaire, sur une unité de bande 9 pistes.

//LABEL2   JOB  ...
//STEP1    EXEC PGM=IEHINITT
//SYSPRINT DD  SYSOUT=A
//ASCIILAB DD  DCB=DEN=2,UNIT=(tape,1,DEFER)
//SYSIN    DD  *
ASCIILAB INITT   SER=001001,OWNER='SAM A. BROWN',LABTYPE=AL
/*

Les instructions de contrôle sont les suivantes :

  • ASCIILAB DD définit le volume de bande à utiliser dans l’opération d’étiquetage.
  • SYSIN DD définit l’ensemble de données de contrôle, qui suit dans le flux d’entrée.
  • ASCIILAB INITT spécifie le numéro de série, l’ID du propriétaire et le type d’étiquette du volume.
    Étant donné que le mot clé VERSION n’a pas été spécifié, la bande ISO/ANSI sera créée en fonction de ce qui est spécifié dans le membre parmlib DEVSUPxx ou en tant que version 3 par défaut.

Exemple 3 : Placement de deux groupes de numéros de série sur six volumes de bande

Dans cet exemple, deux groupes de numéros de série (001234, 001235, 001236 et 001334, 001335, 001336) sont placés sur six volumes de bande.
Les étiquettes sont écrites en EBCDIC à 800 bits par pouce.
Chaque volume étiqueté est monté, lorsque cela est nécessaire, sur une seule unité de bande 9 pistes.

//LABEL3   JOB  ...
//STEP1    EXEC PGM=IEHINITT
//SYSPRINT DD  SYSOUT=A
//LABEL    DD  DCB=DEN=2,UNIT=(tape,1,DEFER)
//SYSIN    DD  *
LABEL   INITT   SER=001234,NUMBTAPE=3
LABEL   INITT   SER=001334,NUMBTAPE=3
/*

Les instructions de contrôle sont les suivantes :

  • LABEL DD définit l’unité de bande à utiliser dans l’opération d’étiquetage.
  • SYSIN DD définit l’ensemble de données de contrôle, qui suit dans le flux d’entrée.
  • LABEL INITT définit les deux groupes de numéros de série à mettre sur six volumes de bande.

Exemple 4 : Placer le numéro de série sur huit volumes de bande

Dans cet exemple, les numéros de série 001234, 001244, 001254, 001264, 001274, etc., sont placés sur huit volumes de bande.
Les étiquettes sont écrites en EBCDIC à 800 bits par pouce.
Chaque volume étiqueté est monté, lorsque cela est nécessaire, sur l’une des quatre unités de bande à 9 pistes.

//LABEL4   JOB  ...
//STEP1    EXEC PGM=IEHINITT
//SYSPRINT DD  SYSOUT=A
//LABEL    DD  DCB=DEN=2,UNIT=(tape,4,DEFER)
//SYSIN    DD  *
LABEL   INITT   SER=001234
LABEL   INITT   SER=001244
LABEL   INITT   SER=001254
LABEL   INITT   SER=001264
LABEL   INITT   SER=001274
LABEL   INITT   SER=001284
LABEL   INITT   SER=001294
LABEL   INITT   SER=001304
/*

Les instructions de contrôle sont les suivantes :

  • LABEL DD définit l’unité de bande utilisée dans l’opération d’étiquetage.
  • SYSIN DD définit l’ensemble de données de contrôle, qui suit dans le flux d’entrée.
  • Les instructions LABEL INITT définissent les bandes à étiqueter par numéro de série de volume.

Exemple 5 : Écrire des étiquettes EBCDIC dans différentes densités

Dans cet exemple, le numéro de série TAPE1 est placé sur un volume de bande et les numéros de série 001234 et 001235 sont placés sur deux volumes de bande.
Les étiquettes sont écrites en EBCDIC à 800 et 1600 bits par pouce, respectivement

//LABEL5   JOB  ...
//STEP1    EXEC PGM=IEHINITT
//SYSPRINT DD  SYSOUT=A
//LABEL1   DD  DCB=DEN=2,UNIT=(tape,1,DEFER)
//LABEL2   DD  DCB=DEN=3,UNIT=(tape,1,DEFER)
//SYSIN    DD  *
LABEL1  INITT   SER=TAPE1
LABEL2  INITT   SER=001234,NUMBTAPE=2
/*

Les instructions de contrôle sont les suivantes :

  • LABEL1 DD et LABEL2 DD définissent deux volumes de bande à utiliser dans l’opération d’étiquetage.
  • SYSIN DD définit l’ensemble de données de contrôle, qui suit dans le flux d’entrée.
  • LABEL1 INITT place le numéro de série TAPE1 sur le volume de bande défini dans LABEL1 DD.
    LABEL2 INITT place les numéros de série 001234 et 001235 sur le volume de bande défini dans LABEL2 DD.

Exemple 6 : Ecrire des numéros de série sur des volumes de bande à deux densités

Dans cet exemple, le numéro de série 006250 est écrit en EBCDIC sur un volume de bande à une densité de 6250 bpi, et le numéro de série 001600 est écrit en EBCDIC sur un second volume à une densité de 1600 bpi.

//LABEL6   JOB  ...
//STEP1    EXEC PGM=IEHINITT
//SYSPRINT DD  SYSOUT=A
//DDFIRST  DD  DCB=DEN=4,UNIT=(tape,1,DEFER)
//DDSECOND DD  DCB=DEN=3,UNIT=(tape,1,DEFER)
//SYSIN    DD  *
DDFIRST  INITT  SER=006250
DDSECOND INITT  SER=001600
/*

Les instructions de contrôle sont les suivantes :

  • DDFIRST DD définit le premier volume de bande à utiliser.
  • DDSECOND DD définit le deuxième volume de bande à utiliser.
  • SYSIN DD définit l’ensemble de données de contrôle, qui suit dans le flux d’entrée.
  • DDFIRST INITT écrit le numéro de série 006250 sur le volume défini dans DDFIRST DD.
    DDSECOND INITT écrit le numéro de série 001600 sur le volume défini dans DDSECOND DD.

Exemple 7 : Écrire une étiquette ISO/ANSI avec un code d’accès

Dans cet exemple, une bande étiquetée ISO/ANSI (AL) version 4 est créée avec un code d’accès non vierge.
Le numéro de série du volume est TAPE01.

//LABEL7   JOB  ...
//STEP1    EXEC PGM=IEHINITT
//SYSPRINT DD  SYSOUT=A
//LABEL    DD  UNIT=(tape,1,DEFER),DCB=DEN=4
//SYSIN    DD  *
LABEL  INITT  SER=TAPE01,OWNER=TAPOWNER,LABTYPE=AL,ACCESS=A,VERSION 4
/*

Les instructions de contrôle sont les suivantes :

  • LABEL DD définit le périphérique sur lequel la bande est montée.
  • SYSIN DD définit l’ensemble de données de contrôle, qui suit dans le flux d’entrée.
  • L’instruction INITT crée une étiquette ISO/ANSI Version 4 pour la bande avec le numéro de série de volume TAPE01, propriété de TAPOWNER.
    Le code d’ACCÈS est spécifié comme A, et le système d’exploitation qui reçoit ce volume doit être capable de reconnaître le A pour que le volume soit accepté.

Exemple 8 : Ecrire sur une bande après étiquetage sans démontage et remontage

Dans cet exemple, vous pouvez étiqueter une bande dans une étape d’un travail, puis, sans que le système démonte et remonte cette bande entre les étapes, écrivez sur la bande dans une étape suivante du même travail.
Le code JCL nécessaire suit :

     //STEP1     EXEC PGM=IEHINITT
     //SYSPRINT  DD  SYSOUT=*
(1)  //LABEL     DD  UNIT=(tape,1,DEFER),DISP=(,PASS)
     //SYSIN     DD    *
(2)  LABEL   INITT  SER=serial,DISP=REWIND
     //*
     //STEP2   EXEC PGM=user_program
     //INPUT   DD  DSN=input_dsn,DISP=SHR
     //OUTPUT  DD  DSN=dsname,DISP=(NEW,CATLG),
     //             DCB=(dcbinfo),
(3)  //             UNIT=tape,VOL=(,RETAIN,SER=serial)
Notes:
     (1) DISP=(NEW,PASS) ou VOL=(,RETAIN) doit être spécifié.
     (2) DISP=REWIND doit être spécifié dans l'instruction INITT.
     (3) VOL=SER=serial doit être spécifié.
         VOL=REF=*.STEP1.LABEL ne fonctionnera pas.

Exemple 9 : Rekey un volume de bande

Dans cet exemple, un volume de bande SL1000 doit être recréé avec deux étiquettes de clé.

//TAPEJOB	JOB	…
//STEP1	EXEC	PGM=IEHINITT
//SYSPRINT	DD	SYSOUT=A
//REKEY1	DD	UNIT=(TAPE,1,DEFER)
//SYSIN	DD	*
  REKEY1	REKEY	SER=SL1000,
		KEYLABL1=firstkeylabel,KEYENCD1=L,
		KEYLABL2=secondkeylabel,KEYENCD2=H
/*

Exemple 10 : plusieurs bandes spécifiées pour le mot clé SER

Dans cet exemple, cinq volumes de bande doivent être recréés avec les mêmes étiquettes de clé.

//TAPEJOB	JOB	…
//STEP1	EXEC	PGM=IEHINITT
//SYSPRINT	DD	SYSOUT=A
//REKEY2	DD	UNIT=(TAPE,1,DEFER)
//SYSIN	DD	*
  REKEY2	REKEY	SER=( AL1000,AL2000,AL3000,AL4000,AL5000),
		KEYLABL1=firstkeylabel,KEYENCD1=L,
		KEYLABL2=secondkeylabel,KEYENCD2=H
/*

Exemple 11 : Trois bandes avec NUMBTAPE spécifié

Dans cet exemple, trois volumes de bande 001200, 001201 et 001202 doivent être recréés avec les mêmes étiquettes de clé.

//TAPEJOB	JOB	…
//STEP1	EXEC	PGM=IEHINITT
//SYSPRINT	DD	SYSOUT=A
//REKEY3	DD	UNIT=(TAPE,1,DEFER)
//SYSIN	DD	*
  REKEY3	REKEY	SER=001200,NUMBTAPE=3,
		KEYLABL1=firstkeylabel,KEYENCD1=L,
		KEYLABL2=secondkeylabel,KEYENCD2=H
/*

Exemple 12 : Instructions de contrôle REKEY multiples

Dans cet exemple, deux volumes de bande, 005000 et SL8000, doivent être recréés.
Chaque volume de bande doit être recréé avec un ensemble différent d’étiquettes de clé et de mécanismes de codage.

//TAPEJOB	JOB	…
//STEP1	EXEC	PGM=IEHINITT
//SYSPRINT	DD	SYSOUT=A
//REKEY4	DD	UNIT=(TAPE,1,DEFER)
//REKEY5	DD	UNIT=(TAPE)
//SYSIN	DD	*
  REKEY4	REKEY	SER=005000,												
                        KEYLABL1=firstkeylabel,KEYENCD1=L,
		        KEYLABL2=secondkeylabel,KEYENCD2=H
  REKEY5	REKEY	SER=SL8000, 
		        KEYLABL1=differentfirstkeylabel,KEYENCD1=L,
      		        KEYLABL2=differentsecondkeylabel,KEYENCD2=H
/*

Exemple 13 : Instructions de contrôle multiples avec NUMBTAPE

Dans cet exemple, trois volumes de bande 001200, 001201 et 001202 doivent être recréés avec les mêmes étiquettes de clé spécifiées pour la première instruction de contrôle REKEY avec NUMBTAPE spécifié.
La deuxième instruction de contrôle spécifie qu’une bande SL8000 doit être réenregistrée avec différentes étiquettes de clé.
Notez que KEYLABL2 et son KEYENCD2 associé sont omis, ainsi les mêmes valeurs d’étiquette de clé et de mécanisme de codage spécifiées pour les mots-clés KEYLABL1 et KEYENCD1 sont utilisées pour les deux étiquettes de clé.

//TAPEJOB	JOB	…
//STEP1	EXEC	PGM=IEHINITT
//SYSPRINT	DD	SYSOUT=A
//REKEY6	DD	UNIT=(TAPE,1,DEFER)
//REKEY7	DD	UNIT=(TAPE)
//SYSIN	DD	*
  REKEY6	REKEY	SER=001200,NUMBTAPE=3,
			KEYLABL1=firstkeylabel,KEYENCD1=L,
			KEYLABL2=secondkeylabel,KEYENCD2=H
  REKEY7	REKEY	SER=SL8000, 
		        KEYLABL1=differentfirstkeylabel,KEYENCD1=L,
/*

Exemple 14 : Impression des spécifications de l’instruction INITT et des informations sur l’étiquette de volume initial

Dans cet exemple, une impression apparaît d’un ensemble de données de message comprenant l’instruction INITT et les informations d’étiquette de volume initiales.
Une instruction INITT a été utilisée pour placer les numéros de série 001122 et 001123 sur deux volumes de bande d’étiquettes standard.
VOL1001122 et VOL1001123 sont interprétés comme suit :

  • VOL1 indique qu’une étiquette de volume initiale a été écrite avec succès sur un volume de bande.
  • 001122 et 001123 sont les numéros de série qui ont été écrits sur les volumes.
  • Un espace vide après le numéro de série représente le champ Volume Security, qui n’est pas utilisé pendant le traitement OPEN/CLOSE/EOV sur une bande d’étiquettes standard.
  • Aucune erreur ne s’est produite lors du traitement.
SYSTEM SUPPORT UTILITIES   IEHINITT
 
ALL  INITT  SER=001122,NUMBTAPE=2,OWNER='P.T.BROWN',DISP=REWIND
 
VOL1001122                 P.T.BROWN
VOL1001123                 P.T.BROWN

JCL – IEFBR14

Utilitaire IEFBR14 : Ne (presque) rien faire

  • L’utilitaire IEFBR14 : ne fait (presque) rien
  • Gestion des données et du stockage sur z/OS
  • Le programme utilitaire IEFBR14 n’entreprend aucune action autre que de renvoyer un code d’achèvement de 0 ; cependant, “l’exécution” de cet utilitaire appelle d’autres composants système qui exécutent des tâches utiles.
  • Par exemple, si vous soumettez JCL pour exécuter IEFBR14, le planificateur de travaux z/OS vérifie la présence d’erreurs de syntaxe dans vos instructions JCL.
    Si votre JCL contient des instructions de définition de données (DD), l’initiateur z/OS alloue de l’espace pour les nouveaux ensembles de données et effectue le traitement de colocalisation pour tous les ensembles de données.

Le JCL suivant pour le travail nommé SMITH1 accomplit plusieurs tâches, même si IEFBR14 ne fait que renvoyer 0 :

//SMITH1 JOB 1,LEO,MSGCLASS=X
//       EXEC PGM=IEFBR14
//NEWDS  DD DSN=SMITH.LIB.CNTL,DISP=(NEW,CATLG),VOL=SER=WORK02,
//   UNIT=3390,SPACE=(CYL,(3,1,25)
//OLDDS  DD DSN=SMITH.OLD.DATA,DISP=(OLD,DELETE)
  • Le planificateur de travaux z/OS pour vérifier si vos instructions JCL contiennent des erreurs de syntaxe.
  • L’initiateur alloue le nouveau jeu de données défini par NEWDS (SMITH.LIB.CNTL) et conserve le jeu de données à la fin du job.
  • L’initiateur supprime également un ancien jeu de données défini par OLDDS (SMITH.OLD.DATA) à la fin du travail.

Les mêmes fonctions pour créer un ensemble de données et en supprimer un autre peuvent être effectuées via ISPF, par exemple, mais ces actions peuvent être nécessaires dans le cadre d’une séquence plus importante de travaux par lots.

Remarque : Cette explication du nom IEFBR14 peut vous aider à vous souvenir de ce que fait cet utilitaire… Un groupe IBM® écrivant le code OS/360 ancien utilisait le préfixe « IEF » pour tous ses modules de code.
En langage assembleur, “BR” signifie branche à l’adresse dans un registre.
Le branchement à l’adresse dans le registre général 14 est la manière standard de terminer un programme.

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.