Tous les articles par Mr COBOL

JCL – IEBPTPCH

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

Tableau 1. Répertoire d’exemples IEBPTPCH

OpérationOrganisation de l’ensemble de donnéesDispositifCommentairesExemple
PUNCHSéquentielPerforatrice de disque et de carteFormat spécifié par l’utilisateur. Les numéros de séquence sont attribués et perforés.Exemple 1 : Imprimer un ensemble de données partitionnées
PUNCHSéquentielLecteur de carte et perforation de carteFormat spécifié par l’utilisateur. Une copie d’un jeu de cartes est réalisée.Exemple 2 : ensembles de données séquentielles de poinçonnage
PRINTSéquentielImprimante systèmeConversion en hexadécimal.Exemple 3 : dupliquer un jeu de cartes
PRINTSéquentielBande et imprimante systèmeFormat par défaut.Exemple 4 : Impression d’un ensemble de données séquentielles selon le format par défaut
PRINTSéquentielDisque et imprimante systèmeFormat spécifié par l’utilisateur. Des routines utilisateur sont fournies. Le traitement se termine une fois que le troisième groupe d’enregistrements est imprimé ou que STOPAFT est satisfait.Exemple 5 : Impression d’un ensemble de données séquentielles selon les spécifications de l’utilisateur
PRINTSéquentielImprimante systèmeImprimer avec routine de sortie utilisateur.Exemple 6 : Impression de trois groupes d’enregistrements
PRINTSéquentiel,
partitionné
Disque et imprimante systèmeFormat SYSOUT. Conversion en hexadécimal.Exemple 7 : Imprimer un ensemble de données pré-formaté
PRINTCloisonnéDisque et imprimante systèmeFormat par défaut. Conversion en hexadécimal. Dix enregistrements de chaque membre sont imprimés.Exemple 8 : Répertoire d’impression d’un ensemble de données partitionné
PRINTCloisonnéDisque et imprimante systèmeFormat par défaut. Conversion en hexadécimal. Deux membres sont imprimés.Exemple 9 : Imprimer les enregistrements sélectionnés d’un ensemble de données partitionnées
PRINTCloisonnéDisque et imprimante systèmeFormat par défaut. Les données DBCS sont vérifiées et imprimées.Exemple 10 : convertir en hexadécimal et imprimer des 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 : Impression d’un jeu de données partitionné

Dans cet exemple, un membre d’un ensemble de données partitionnées est imprimé selon les spécifications de l’utilisateur.

PRINT TYPORG=PO,MAXNAME=1,MAXFLDS=1
MEMBER NAME=UTILUPD8
RECORD FIELD=(80)

Si l’entrée de la carte de membre n’est pas utilisée, l’ensemble des données sera imprimé.

Exemple 2 : Fichiers séquentiels punch (perforés)

Dans cet exemple, un ensemble de données séquentielles est perforé selon les spécifications de l’utilisateur.

//PHSEQNO  JOB  ...
//STEP1    EXEC PGM=IEBPTPCH
//SYSPRINT DD  SYSOUT=A
//SYSUT1   DD  DSNAME=MASTER.SEQSET,LABEL=(,SUL),DISP=SHR
//SYSUT2   DD  SYSOUT=B
//SYSIN    DD  *
        PUNCH  MAXFLDS=1,CDSEQ=0,CDINCR=20
        RECORD  FIELD=(72)
        LABELS  DATA=YES
/*

Les instructions de contrôle sont les suivantes :

  • SYSUT1 DD définit le jeu de données d’entrée, MASTER.SEQSET, qui réside sur un volume de disque ou de bande. L’ensemble de données contient des enregistrements bloqués fixes de 80 octets.
  • SYSUT2 DD définit la classe de sortie du système (le poinçon est supposé).
    Cette partie de chaque enregistrement de l’ensemble de données d’entrée défini par le paramètre FIELD est représentée par une carte perforée.
  • SYSIN DD définit l’ensemble de données de contrôle, qui suit dans le flux d’entrée.
  • PUNCH commence l’opération de perforation, indique qu’un paramètre FIELD est inclus dans une instruction RECORD ultérieure (MAXFLDS=1) et attribue un numéro de séquence pour la première carte perforée (00000000) et une valeur d’incrément pour les numéros de séquence successifs (20).
    Les numéros de séquence sont placés dans les colonnes 73 à 80 des enregistrements de sortie.
  • RECORD indique que les positions 1 à 72 des enregistrements d’entrée doivent être perforées.
    Les octets 73 à 80 des enregistrements d’entrée sont remplacés par les nouveaux numéros de séquence dans le jeu de cartes de sortie.
  • LABELS spécifie que les étiquettes d’en-tête utilisateur et les étiquettes de fin utilisateur sont perforées.

Les étiquettes ne peuvent pas être modifiées ; ils sont toujours déplacés vers les 80 premiers octets du tampon de sortie.
Aucun numéro de séquence n’est présent sur les cartes contenant les enregistrements d’en-tête et de fin d’utilisateur.

Exemple 3 : Dupliquer un jeu de cartes

Dans cet exemple, un jeu de cartes contenant un code de carte perforée valide ou BCD est dupliqué.

//PUNCH    JOB  ...
//STEP1    EXEC PGM=IEBPTPCH
//SYSPRINT DD  SYSOUT=A
//SYSIN    DD  DSNAME=PDSLIB(PNCHSTMT),DISP=(OLD,KEEP)
//SYSUT2   DD  SYSOUT=B
//SYSUT1   DD  DATA

  (jeu de données de carte d'entrée comprenant // cartes)

/*

Les instructions de contrôle sont les suivantes :

  • SYSIN DD définit le jeu de données de contrôle PDSLIB qui contient le membre PNCHSTMT.
    (L’ensemble de données est catalogué.)<>br Le format d’enregistrement doit être FB et la longueur de l’enregistrement logique doit être de 80.
  • SYSUT2 DD définit la classe de sortie du système (le poinçon est supposé).
  • SYSUT1 DD définit le jeu de données de carte d’entrée, qui suit dans le flux d’entrée.

Exemple 4 : Impression d’un jeu de données séquentiel selon le format par défaut

Dans cet exemple, un jeu de données séquentiel est imprimé selon le format par défaut.
La sortie imprimée est convertie en hexadécimal.

//PRINT    JOB  ...
//STEP1    EXEC PGM=IEBPTPCH
//SYSPRINT DD  SYSOUT=A
//SYSUT1   DD  DSNAME=INSET,UNIT=tape,
//             LABEL=(,NL),VOLUME=SER=001234,
//             DISP=(OLD,KEEP),DCB=(RECFM=U,BLKSIZE=2000)
//SYSUT2   DD  SYSOUT=A
//SYSIN    DD  *
     PRINT   TOTCONV=XE
     TITLE   ITEM=('PRINT SEQ DATA SET WITH CONV TO HEX',10)
/*

Les instructions de contrôle sont les suivantes :

  • SYSUT1 DD définit le jeu de données d’entrée sur un volume de bande.
    L’ensemble de données contient des enregistrements indéfinis ; aucun enregistrement ne dépasse 2 000 octets.
  • SYSUT2 DD définit le jeu de données de sortie.
    L’ensemble de données est écrit sur le périphérique de sortie du système (imprimante supposée).
  • SYSIN DD définit l’ensemble de données de contrôle, qui suit dans le flux d’entrée.
  • PRINT lance l’opération d’impression et spécifie la conversion de la représentation alphanumérique en représentation hexadécimale.
  • TITLE spécifie un titre à placer en commençant dans la colonne 10 de la sortie imprimée. Le titre n’est pas converti en hexadécimal.

Exemple 5 : Impression d’un jeu de données séquentiel selon les spécifications de l’utilisateur

Dans cet exemple, un ensemble de données séquentielles est imprimé selon les spécifications de l’utilisateur.

//PTNONSTD JOB  ...
//STEP1    EXEC PGM=IEBPTPCH
//SYSPRINT DD  SYSOUT=A
//SYSUT1   DD  DSNAME=SEQSET,UNIT=tape,LABEL=(2,SUL),
//             DISP=(OLD,KEEP),VOLUME=SER=001234
//SYSUT2   DD  SYSOUT=A
//SYSIN    DD  *
       PRINT   MAXFLDS=1
       EXITS   INHDR=HDRIN,INTLR=TRLIN
       RECORD  FIELD=(80)
       LABELS  DATA=YES
/*

Les instructions de contrôle sont les suivantes :

  • SYSUT1 DD définit le jeu de données d’entrée, SEQSET, qui est le deuxième jeu de données sur un volume de bande.
  • SYSUT2 DD définit le jeu de données de sortie sur le périphérique de sortie du système (imprimante supposée).
    Chaque ligne imprimée contient 80 caractères contigus (un enregistrement) d’informations.
  • SYSIN DD définit l’ensemble de données de contrôle, qui suit dans le flux d’entrée.
  • PRINT commence l’opération d’impression et indique qu’un paramètre FIELD est inclus dans une instruction RECORD suivante (MAXFLDS=1).
  • EXITS indique que les exits seront dirigés vers les routines de traitement des étiquettes d’en-tête et de fin d’utilisateur lorsque ces étiquettes sont rencontrées dans l’ensemble de données SYSUT1.
  • RECORD indique que chaque enregistrement d’entrée est traité dans son intégralité (80 octets).
    Chaque enregistrement d’entrée est imprimé dans les colonnes 1 à 80 sur l’imprimante.
  • LABELS indique que les étiquettes d’en-tête et de fin utilisateur sont imprimées en fonction du code retour émis par les exits utilisateur.

Exemple 6 : Impression de trois groupes d’enregistrements

Dans cet exemple, trois groupes d’enregistrements sont imprimés.
Une routine utilisateur est fournie pour manipuler les enregistrements de sortie avant qu’ils ne soient imprimés.

//PRINT    JOB  ...
//STEP1    EXEC PGM=IEBPTPCH
//SYSPRINT DD  SYSOUT=A
//SYSUT1   DD  DSNAME=SEQDS,UNIT=disk,DISP=(OLD,KEEP),
//             LABEL=(,SUL),VOLUME=SER=111112
//SYSUT2   DD  SYSOUT=A
//SYSIN    DD  *
       PRINT   MAXFLDS=9,MAXGPS=9,MAXLITS=23,STOPAFT=32767
       TITLE   ITEM=('TIMECONV-DEPT D06'),
               ITEM=('JAN10-17',80)
       EXITS   OUTREC=NEWTIME,INHDR=HDRS,INTLR=TLRS
       RECORD  IDENT=(6,'498414',1),
               FIELD=(8,1,,10),FIELD=(30,9,XE,20)
       RECORD  IDENT=(2,'**',39),
               FIELD=(8,1,,10),FIELD=(30,9,XE,20)
       RECORD  IDENT=(6,'498414',1),
               FIELD=(8,1,,10),FIELD=(30,9,XE,20)
       LABELS  CONV=XE,DATA=ALL
/*

Les instructions de contrôle sont les suivantes :

  • SYSUT1 DD définit le jeu de données d’entrée, appelé SEQDS.
    L’ensemble de données réside sur un volume de disque.
  • SYSUT2 DD définit le jeu de données de sortie sur le périphérique de sortie du système (imprimante supposée).
  • SYSIN DD définit l’ensemble de données de contrôle, qui suit dans le flux d’entrée.
  • L’instruction PRINT :
    1. Initialise l’opération d’impression.
    2. Indique que pas plus de neuf paramètres FIELD sont inclus dans les instructions RECORD suivantes (MAXFLDS=9).
    3. Indique que pas plus de neuf paramètres IDENT sont inclus dans les instructions RECORD suivantes (MAXGPS=9).
    4. Indique que pas plus de 23 caractères littéraux sont inclus dans les paramètres IDENT suivants (MAXLITS=23).
    5. Indique que le traitement est terminé après le traitement de 32767 enregistrements ou après le traitement du troisième groupe d’enregistrements, selon la première éventualité.
      Parce que MAXLINE est omis, 60 lignes sont imprimées sur chaque page.
  • TITLE spécifie deux titres, à imprimer sur une seule ligne.
    Les titres ne sont pas convertis en hexadécimal.
  • EXITS spécifie le nom d’une routine utilisateur (NEWTIME), qui est utilisée pour manipuler les enregistrements de sortie avant qu’ils ne soient imprimés.
  • La première instruction RECORD définit le premier groupe d’enregistrements à traiter et indique où les informations des enregistrements d’entrée sont placées dans les enregistrements de sortie.
    Les positions 1 à 8 des enregistrements d’entrée apparaissent aux positions 10 à 17 de la sortie imprimée, et les positions 9 à 38 sont imprimées en représentation hexadécimale et placées aux positions 20 à 79.
  • La deuxième instruction RECORD définit le deuxième groupe à traiter.
    Le paramètre de l’opérande IDENT spécifie qu’un enregistrement d’entrée est le dernier enregistrement modifié conformément à l’opérande FIELD dans cette instruction RECORD.
    L’opérande FIELD spécifie que les positions 1 à 8 des enregistrements d’entrée sont placées aux positions 10 à 17 de la sortie imprimée, et les positions 9 à 38 sont imprimées en représentation hexadécimale et apparaissent aux positions 20 à 79.
  • La troisième et dernière instruction RECORD est égale à la première instruction RECORD.
    Un enregistrement d’entrée qui répond au paramètre de l’opérande IDENT met fin au traitement, à moins que le paramètre STOPAFT de l’instruction PRINT ne l’ait déjà fait.
  • LABELS spécifie que toutes les étiquettes d’en-tête ou de fin de l’utilisateur doivent être imprimées quel que soit le code de retour, à l’exception de 16, émis par la routine de sortie de l’utilisateur.
    Il indique également que les étiquettes sont converties d’une représentation alphanumérique à une représentation hexadécimale (CONV=XE).

Exemple 7 : Impression d’un jeu de données préformaté

Dans cet exemple, l’entrée est un ensemble de données SYSOUT (séquentiel), qui a été précédemment écrit comme deuxième ensemble de données d’une bande d’étiquettes standard.
Il est imprimé au format SYSOUT.

//PTSYSOUT JOB  ...
//STEP1    EXEC PGM=IEBPTPCH
//SYSPRINT DD  SYSOUT=A
//SYSUT1   DD  UNIT=tape,LABEL=(2,SL),DSNAME=LISTING,
//             DISP=(OLD,KEEP),VOL=SER=001234
//SYSUT2   DD  SYSOUT=A
//SYSIN    DD  *
    PRINT   PREFORM=A
/*

Les instructions de contrôle sont les suivantes :

  • SYSUT1 DD définit le jeu de données d’entrée, qui était auparavant écrit comme deuxième jeu de données d’une bande d’étiquettes standard.
    L’ensemble de données a reçu le nom LISTING.
  • SYSUT2 DD définit le jeu de données de sortie sur le périphérique de sortie du système (imprimante supposée).
  • SYSIN DD définit l’ensemble de données de contrôle, qui suit dans le flux d’entrée.
  • L’instruction PRINT lance l’opération d’impression et indique qu’un caractère de contrôle ASA est fourni comme premier caractère de chaque enregistrement à imprimer (PREFORM=A).

Exemple 8 : Répertoire d’impression d’un jeu de données partitionné

Dans cet exemple, le répertoire d’un jeu de données partitionné est imprimé selon le format par défaut.
La sortie imprimée est convertie en hexadécimal.

//PRINTDIR JOB  ...
//STEP1    EXEC PGM=IEBPTPCH
//SYSPRINT DD  SYSOUT=A
//SYSUT1   DD  DSNAME=MAIN.PDS,
//             DISP=(OLD,KEEP),DCB=(RECFM=U,BLKSIZE=256)
//SYSUT2   DD  SYSOUT=A
//SYSIN    DD  *
   PRINT   TYPORG=PS,TOTCONV=XE
   TITLE   ITEM=('PRINT PARTITIONED DIRECTORY OF PDS',10)
   TITLE   ITEM=('FIRST TWO BYTES SHOW NUM OF USED BYTES',10)
  LABELS   DATA=NO
/* 

Les instructions de contrôle sont les suivantes :

  • SYSUT1 DD définit l’ensemble de données d’entrée (le répertoire partitionné), qui réside sur un volume de disque.
    Les mots-clés DCB décrivent le répertoire, pas le contenu du membre.
  • SYSUT2 DD définit le jeu de données de sortie sur le périphérique de sortie du système (imprimante supposée).
  • SYSIN DD définit l’ensemble de données de contrôle, qui suit dans le flux d’entrée.
  • PRINT commence l’opération d’impression, indique que le répertoire partitionné est organisé séquentiellement et spécifie la conversion de la représentation alphanumérique en représentation hexadécimale.
  • La première instruction TITLE spécifie un titre et la deuxième instruction TITLE spécifie un sous-titre.
    Aucun titre n’est converti en hexadécimal.
  • LABELS spécifie qu’aucune étiquette utilisateur n’est imprimée.
  • Remarque : tous les octets d’un bloc de répertoire ne doivent pas nécessairement contenir des données relatives à l’ensemble de données partitionnées.
    Les octets inutilisés sont parfois utilisés par le système d’exploitation comme zones de travail temporaires.
    Avec la conversion en représentation hexadécimale, les quatre premiers caractères de la sortie imprimée indiquent le nombre d’octets du bloc de 256 octets appartenant à l’ensemble de données partitionnées.
    Tous les octets inutilisés apparaissent dans la dernière partie du bloc de répertoire.
    Ils ne sont pas intercalés avec les octets utilisés.

Exemple 9 : Imprimer les enregistrements sélectionnés d’un fichier partitionné

Dans cet exemple, un ensemble de données partitionné (dix enregistrements de chaque membre) est imprimé selon le format par défaut.
La sortie imprimée est convertie en hexadécimal.

//PRINTPDS JOB  ...
//STEP1    EXEC PGM=IEBPTPCH
//SYSPRINT DD  SYSOUT=A
//SYSUT1   DD  DSNAME=WAYNE.TEST.DATA,DISP=SHR
//SYSUT2   DD  SYSOUT=A
//SYSIN    DD  *
        PRINT  TOTCONV=XE,TYPORG=PO,STOPAFT=10
        TITLE  ITEM=('PRINT PDS - 10 RECS EACH MEM',20)
/*

Les instructions de contrôle sont les suivantes :

  • SYSUT1 DD définit le jeu de données d’entrée, appelé WAYNE.TEST.DATA, sur un volume de disque.
  • SYSUT2 DD définit le jeu de données de sortie sur le périphérique de sortie du système (imprimante supposée).
  • SYSIN DD définit l’ensemble de données de contrôle, qui suit dans le flux d’entrée.
  • PRINT commence l’opération d’impression, spécifie la conversion d’une représentation alphanumérique en représentation hexadécimale, indique que l’ensemble de données d’entrée est partitionné et spécifie que 10 enregistrements de chaque membre doivent être imprimés.
  • TITLE spécifie un titre à placer en commençant dans la colonne 20 de la sortie imprimée.
    Le titre n’est pas converti en hexadécimal.

Exemple 10 : Convertir en hexadécimal et imprimer des données partitionnées

Dans cet exemple, deux membres partitionnés sont imprimés selon le format par défaut.
La sortie imprimée est convertie en hexadécimal.

//PRNTMEMS JOB  ...
//STEP1    EXEC PGM=IEBPTPCH
//SYSPRINT DD  SYSOUT=A
//SYSUT1   DD  DSNAME=BROWN.MAIN.LIB,DISP=SHR
//SYSUT2   DD  SYSOUT=A
//SYSIN    DD  *
       PRINT   TYPORG=PO,TOTCONV=XE,MAXNAME=2
       TITLE   ITEM=('PRINT TWO MEMBS WITH CONV TO HEX',10)
       MEMBER  NAME=MEMBER1
       MEMBER  NAME=MEMBER2
/*

Les instructions de contrôle sont les suivantes :

  • SYSUT1 DD définit le jeu de données d’entrée, appelé BROWN.MAIN.LIB, sur un volume de disque.
  • SYSUT2 DD définit le jeu de données de sortie sur le périphérique de sortie du système (imprimante supposée).
  • SYSIN DD définit l’ensemble de données de contrôle, qui suit dans le flux d’entrée.
  • PRINT commence l’opération d’impression, indique que le jeu de données d’entrée est partitionné, spécifie la conversion d’une représentation alphanumérique en représentation hexadécimale et indique que deux instructions MEMBER apparaissent dans le jeu de données de contrôle (MAXNAME=2).
  • TITLE spécifie un titre à placer en commençant dans la colonne 10 de la sortie imprimée. Le titre n’est pas converti en hexadécimal.
  • MEMBER spécifie les noms des membres à imprimer (MEMBER1 et MEMBER2).

Exemple 11 : membre d’impression contenant des données DBCS

Dans cet exemple, un membre d’un ensemble de données partitionné qui contient des données DBCS est imprimé après que les données DBCS ont été vérifiées pour s’assurer que tous les caractères DBCS sont imprimables.

//DBCS     JOB  ...
//STEP1    EXEC PGM=IEBPTPCH
//SYSPRINT DD   SYSOUT=A
//SYSUT1   DD   DSNAME=PDS,UNIT=disk,DISP=(OLD,KEEP)
//SYSUT2   DD   SYSOUT=A
//SYSIN    DD   *
           PRINT TYPORG=PO,DBCS=YES,MAXFLDS=1,MAXNAME=1
           MEMBER NAME=MEM1
           RECORD FIELD=(,,CV)
/*

Les instructions de contrôle sont les suivantes :

  • SYSUT1 DD définit l’ensemble de données d’entrée, PDS, sur un volume de disque.
  • SYSUT2 DD définit l’imprimante système comme ensemble de données de sortie.
  • SYSIN DD définit l’ensemble de données de contrôle, qui suit dans le flux d’entrée.
  • PRINT lance l’opération d’impression, indique que le jeu de données d’entrée est partitionné et indique que les données du jeu de caractères à deux octets seront imprimées.
    L’instruction indique également qu’une instruction MEMBER apparaît dans l’ensemble de données de contrôle et qu’un paramètre FIELD apparaît dans une instruction RECORD ultérieure.
  • MEMBER spécifie le membre, MEM1, qui doit être imprimé.
  • RECORD spécifie que les données DBCS doivent être vérifiées pour s’assurer qu’elles sont imprimables.

JCL – IEBPDSE

Ces exemples montrent certaines des utilisations de IEBPDSE.

Exemples

Exemple 1 : Validation d’un PDSE

Dans cet exemple, un PDSE est validé.

//STEPCHK EXEC PGM=IEBPDSE 
//SYSPRINT DD SYSOUT=A 
//SYSLIB DD DSN=IBMUSER.SIMPLE.V2.PDSE,DISP=OLD

Exemple 2 : Validation de deux PDSE

Cet exemple valide deux PDSE.

//STEPCHK2 EXEC PGM=IEBPDSE
//SYSLIB DD DSN=IBMUSER.SIMPLE.V2.PDSE,DISP=OLD
// JJ DSN=IBMUSER.SIMPLE.V3.PDSE,DISP=OLD
// JJ DSN=SYS1.LINKLIB,DISP=SHR

Exemple 3 : Valider le PDSE avec l’option DUMP

Cet exemple valide un PDSE et spécifie un DUMP SVC.

//STEPLINK EXEC PGM=IEBPDSE,
//              PARM=’DUMP’ 
//SYSLIB DD DSN=SYS1.SIEALNKE,DISP=SHR

Exemple 4 : Effectuer le traitement de suppression en attente sans analyser le PDSE

Cet exemple effectue un traitement de suppression sans analyse.

//STEPLINK EXEC PGM=IEBPDSE,
//              PARM=’PerformPendingDelete,NoAnalysis’ 
//SYSLIB DD DSN=IBMUSER.BUSY.PDSE,DISP=SHR

JCL – IEBIMAGE

Ces exemples illustrent quelques-unes des utilisations d’IEBIMAGE.
Vous pouvez utiliser le tableau 1 comme guide de référence rapide pour les exemples qui suivent.
Généralement, les exemples pour IBM 3800 modèle 3 peuvent être remplacés par des exemples IBM 3800 modèle 1 en supprimant l’instruction OPTION DEVICE=3800M3 et en spécifiant le paramètre OVERRUN égal à un nombre autre que 10.

Tableau 1. Répertoire d’exemple IEBIMAGE

Module CrééImprimanteCommentairesExemple
FCB3800 Modèle 1Forme 11 pouces Exemple 1 : Création d’un nouveau 3800 Forms Control Buffer Module
FCB3800 Modèle 1Forme 5-1/2 pouces, remplace le membre SYS1.IMAGELIB existant. Plusieurs codes de canal spécifiés.Exemple 2 : Remplacement d’un 3800 Forms Control Buffer Module
FCB3800 Modèle 1Forme 3-1/2 pouces, remplace le membre SYS1.IMAGELIB existant. Espacement vertical varié.Exemple 3 : Remplacement d’un 3800 Forms Control Buffer Module
FCB3800 Modèle 1Forme de 7 pouces, espacement vertical varié.Exemple 4 : Création d’un nouveau 3800 Forms Control Buffer Module
FCB3800 Modèle 1Format ISO 12 pouces. Remplace le module fourni par IBM.Exemple 5 : Remplacement du Forms Control Buffer Module STD3
FCB3800 Modèle 3Forme ISO de 7-1/2 pouces. Espacement vertical variable.Exemple 6 : Création d’un nouveau 3800 Forms Control Buffer Module pour des formats de ISO Paper supplémentaires
FCB4248Forme 11 pouces, basée sur le module existant. Nouvelle vitesse d’impression et position de copie spécifiées.Exemple 7 : Création d’un 4248 Forms Control Buffer Module
COPYMOD3800 Modèle 14 segments de modification.Exemple 8 : Construire un nouveau module de modification de copie
COPYMOD3800 Modèle 3Module existant utilisé comme base pour le nouveau module. OVERRUN spécifié.Exemple 9 : Construire un nouveau module de modification de copie à partir d’une copie existante
TABLE3800 Modèle 3Module fourni par IBM modifié pour inclure un autre caractère.Exemple 10 : Ajouter un nouveau caractère à un module de table d’arrangement des caractères
TABLE3800 Modèle 3Module existant utilisé comme base pour le nouveau module. La hauteur a changé.Exemple 11 : Construire un nouveau module de table d’arrangement des caractères à partir d’une copie existante
TABLE3800 Modèle 1Module existant utilisé comme base pour le nouveau module. Inclut les caractères conçus par l’utilisateur du module GRAPHIC.Exemple 12 : Créer des caractères graphiques dans un module de table de disposition des caractères
TABLE3800 Modèle 3Module existant utilisé comme base pour le nouveau module. Le nouveau module supprime toutes les références GRAPHIC et réinitialise les entrées de la table de traduction.Exemple 13 : Supprimer les références graphiques d’un module Table d’arrangement des caractères
GRAPHIC3800 Modèle 1Module entièrement fourni par IBM imprimé.Exemple 14 : Répertorier le module de modification des caractères graphiques à usage national World Trade
GRAPHIC3800 Modèle 3Segments copiés à partir du module fourni par IBM.Exemple 15 : Construire un module de modification de caractères graphiques à partir du module de modification de caractères World Trade GRAFMOD
GRAPHIC3800 Modèle 3Le nouveau module contient un caractères conçu par l’utilisateur. Disposition des caractères existante (TABLE) modifiée pour inclure un nouveau caractère.Exemple 16 : Construire un nouveau module de modification de caractères graphiques et modifier une table de disposition des caractères pour l’utiliser
GRAPHIC3800 Modèle 1Segments copiés à partir d’un module existant. Création d’un caractères conçu par l’utilisateur.Exemple 17 : Création d’un module de modification de caractères graphiques à partir de plusieurs sources
GRAPHIC3800 Modèle 3Le nouveau module GRAPHIC contient un caractère conçu par l’utilisateur. Disposition des caractères existante (TABLE) modifiée pour inclure un nouveau caractère.
COPYMOD créé pour imprimer un nouveau caractère.
Résultat testé.
Exemple 18 : Définir et utiliser un caractère dans un module de modification de caractères graphiques
CHARSET3800 Modèle 1Jeu de caractères complet de la bibliothèque avec motifs de numérisation imprimés.Exemple 19 : Module Liste d’un jeu de caractères de bibliothèque
CHARSET3800 Modèle 3Segments copiés à partir du module GRAPHIC fourni par IBM.Exemple 20 : Création d’un module de jeu de caractères de bibliothèque
CHARSET3800 Modèle 3Le nouveau module contient un caractères conçu par l’utilisateur.
Disposition des caractères existante (TABLE) modifiée pour inclure un nouveau caractère.
Exemple 21 : Création d’un module de jeu de caractères de bibliothèque et modification d’une table de disposition des caractères pour l’utiliser
CHARSET3800 Modèle 1Segments copiés à partir d’un module existant. Création d’un caractères conçu par l’utilisateur.Exemple 22 : création d’un module de jeu de caractères de bibliothèque à partir de plusieurs sources

Exemple 1 : Création d’un nouveau 3800 Forms Control Buffer Module

3800 Modèle 1

Dans cet exemple, l’espacement vertical et les codes de canal pour un format de 11 pouces sont spécifiés, et le module est ajouté au jeu de données SYS1.IMAGELIB en tant que nouveau membre.

 //FCBMOD1  JOB   ...
 //STEP1    EXEC  PGM=IEBIMAGE
 //SYSUT1   DD  DSNAME=SYS1.IMAGELIB,DISP=OLD
 //SYSPRINT DD  SYSOUT=A
 //SYSIN    DD  *
     FCB  CH1=1,CH12=80,LPI=8
     NAME IJ
 /*

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

  • L’instruction SYSUT1 DD inclut DISP=OLD pour garantir qu’aucun autre travail ne peut modifier l’ensemble de données pendant l’exécution de ce travail.
  • CH1=1 spécifie le code du canal 1 pour la ligne 1, permettant le positionnement à la ligne 1.
  • CH12=80 spécifie le code du canal 12 pour la ligne 80, permettant le positionnement à la ligne 80 et une indication d’exception d’unité à la ligne 80 (la dernière ligne imprimable sur la page.)
  • LPI=8 spécifie que le format entier doit être à un espacement vertical de 8 lignes par pouce.
    Étant donné que le paramètre SIZE est omis, la longueur du format par défaut est de 11 pouces.
    Comme il y a 10 pouces d’espace imprimable dans un format de 11 pouces, 80 lignes sont imprimées à 8 lignes par pouce.
  • Le nom du nouveau module FCB est IJ ; il est stocké en tant que membre du jeu de données SYS1.IMAGELIB.

Exemple 2 : Remplacement d’un 3800 Forms Control Buffer Module

3800 Modèle 1

Dans cet exemple, les codes de taille et de canal pour un format 5-1/2 pouces sont spécifiés et le module est ajouté au jeu de données SYS1.IMAGELIB en remplacement d’un membre existant.
Le nouveau module est ajouté à la fin de l’ensemble de données ; le nom dans le répertoire du jeu de données est mis à jour afin qu’il pointe vers le nouveau module ; l’ancien module n’est plus accessible via le répertoire du jeu de données.

//FCBMOD2  JOB  ...
//STEP1    EXEC PGM=IEBIMAGE
//SYSUT1   DD  DSNAME=SYS1.IMAGELIB,DISP=OLD
//SYSPRINT DD  SYSOUT=A
//SYSIN    DD  *
    FCB  CH1=(1,7,13,20),CH12=26,SIZE=55
    NAME S55(R)
/*

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

  • L’instruction SYSUT1 DD inclut DISP=OLD pour garantir qu’aucun autre travail ne peut modifier l’ensemble de données pendant l’exécution de ce travail.
  • CH1=(1,7,13,20) spécifie le code du canal 1 pour la ligne imprimable 1, la ligne 7, la ligne 13 et la ligne 20.
  • CH12=26 spécifie le code du canal 12 pour la ligne imprimable 26.
  • SIZE=55 spécifie la longueur du format à 55 dixièmes de pouce ou 5-1/2 pouces.
  • Étant donné que le paramètre LPI est omis, l’espacement vertical par défaut est de 6 lignes par pouce.
    Parce qu’il y a 4-1/2 pouces de lignes imprimables dans un format de 5-1/2 pouces, il y a 27 lignes d’impression sur ce format.
  • Le nom du module FCB est S55 et il remplace un module FCB existant du même nom.
    Le nouveau module FCB est stocké en tant que membre du jeu de données SYS1.IMAGELIB.

Exemple 3 : Remplacement d’un 3800 Forms Control Buffer Module

3800 Modèle 1

Dans cet exemple, l’espacement vertical, les codes de canal et la taille d’un format sont spécifiés, et le module est ajouté au jeu de données SYS1.IMAGELIB en remplacement d’un membre existant.
Le nouveau module est ajouté à la fin de l’ensemble de données ; le nom dans le répertoire du jeu de données est mis à jour afin qu’il pointe vers le nouveau module ; l’ancien module n’est plus accessible via le répertoire du jeu de données.

//FCBMOD3  JOB  ...
//STEP1    EXEC PGM=IEBIMAGE
//SYSUT1   DD  DSNAME=SYS1.IMAGELIB,DISP=OLD
//SYSPRINT DD  SYSOUT=A
//SYSIN    DD  *
   FCB  CH1=1,CH2=4,CH5=11,SIZE=35,LPI=((6,2),(8,3),(6,4),(8,9))
   NAME HL(R)
/*

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

  • L’instruction SYSUT1 DD inclut DISP=OLD pour garantir qu’aucun autre travail ne peut modifier l’ensemble de données pendant l’exécution de ce travail.
  • CH1=1 spécifie le code du canal 1 pour la ligne imprimable 1.
  • CH2=4 spécifie le code du canal 2 pour la ligne 4.
  • CH5=11 spécifie le code du canal 5 pour la ligne 11.
  • LPI=((6,2),(8,3),(6,4),(8,9)) spécifie l’espacement vertical pour les 18 premières lignes imprimables sous la forme :
    (6,2) spécifie les lignes 1 à 2 sont à un espacement vertical de 6 lignes par pouce et occupent 2/6 de pouce.
    (8,3) spécifie que les lignes 3 à 5 sont à un espacement vertical de 8 lignes par pouce et occupent 3/8 de pouce.
    (6,4) spécifie que les lignes 6 à 9 sont à un espacement vertical de 6 lignes par pouce et occupent 4/6 de pouce.
    (8,9) spécifie que les lignes 10 à 18 sont à un espacement vertical de 8 lignes par pouce et occupent 1-1/8 pouce.
  • SIZE=35 spécifie la longueur du format à 35 dixièmes de pouce ou 3-1/2 pouces.
    Étant donné qu’il y a 2-1/2 pouces d’espace imprimable sur un format de 3-1/2 pouces et que le paramètre LPI spécifie un espacement vertical pour 2-1/2 pouces de lignes, l’espacement vertical de toutes les lignes du format est comptabilisé.
  • Le nom du module FCB est HL ; il remplace un module existant du même nom.
    Le nouveau module FCB est stocké en tant que membre du jeu de données SYS1.IMAGELIB.

Exemple 4: Création d’un nouveau 3800 Forms Control Buffer Module

//FCBMOD4  JOB  ...
//STEP1    EXEC PGM=IEBIMAGE
//SYSUT1   DD  DSNAME=SYS1.IMAGELIB,DISP=OLD
//SYSPRINT DD  SYSOUT=A
//SYSIN    DD  *
    FCB  CH1=1,CH6=33,SIZE=70,LPI=((8,32),(12,2))
    NAME TGT
/*

3800 Modèle 1

Dans cet exemple, l’espacement vertical, les codes de canal et la longueur d’un format sont spécifiés, et le module est ajouté au jeu de données SYS1.IMAGELIB en tant que nouveau membre.

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

  • L’instruction SYSUT1 DD inclut DISP=OLD pour garantir qu’aucun autre travail ne peut modifier l’ensemble de données pendant l’exécution de ce travail.
  • CH1=1 spécifie le code du canal 1 pour la ligne imprimable 1.
  • CH6=33 spécifie le code du canal 6 pour la ligne 33.
  • LPI=((8,32),(12,2)) spécifie que les 32 premières lignes imprimables du format doivent être à un espacement vertical de 8 lignes par pouce, et les 2 lignes imprimables suivantes doivent être à un espacement vertical espacement de 12 lignes par pouce.
  • SIZE=70 spécifie que la longueur du format est de 70 dixièmes de pouce, ou 7 pouces.
    Étant donné qu’il y a 6 pouces de lignes imprimables dans un format de 7 pouces et que le paramètre LPI spécifie 32 lignes à 8 lignes par pouce, ou 4 pouces, et 2 lignes à 12 lignes par pouce, ou 1/6 pouce, l’espacement vertical pour les 1-5/6 pouces restants sont par défaut de 6 lignes par pouce.
  • Le nom du nouveau module FCB est TGT ; il est stocké en tant que membre du jeu de données SYS1.IMAGELIB.

Exemple 5: Remplacement du 3800 Forms Control Buffer Module STD3

3800 Modèle 1

Dans cet exemple, un module FCB est défini qui utilise des formats de papier ISO, remplaçant le module fourni par IBM nommé STD3.
Cela doit être fait avant que les routines de formatage de vidage qui impriment des vidages haute densité puissent les imprimer à 8 lignes par pouce sur cette imprimante.

//FCBMOD5  JOB  ...
//STEP1    EXEC PGM=IEBIMAGE
//SYSUT1   DD  DSNAME=SYS1.IMAGELIB,DISP=OLD
//SYSPRINT DD  SYSOUT=A
//SYSIN    DD  *
    FCB  CH1=1,CH12=88,LPI=(8,88),SIZE=120
    NAME STD3(R)
/*

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

  • L’instruction SYSUT1 DD inclut DISP=OLD pour garantir qu’aucun autre travail ne peut modifier l’ensemble de données pendant l’exécution de ce travail.
  • CH1=1 spécifie le code du canal 1 pour la ligne imprimable 1 ; CH12=88 spécifie le code du canal 12 pour la ligne 88.
  • LPI=(8,88) spécifie que les 88 lignes imprimables du format doivent être à un espacement vertical de 8 lignes par pouce.
  • SIZE=120 spécifie que la longueur du format est de 120 dixièmes de pouce, ou 12 pouces, qui est le format de papier ISO le plus long.
  • Le nom du nouveau module FCB est STD3 ; il s’agit de remplacer le module existant du même nom sur SYS1.IMAGELIB.

Exemple 6: tion d’un nouveau 3800 Forms Control Buffer Module pour un ISO Paper Sizes additionnel

3800 Modèle 1

Dans cet exemple, un module FCB est défini qui utilise des formats de papier ISO et sur lequel la fonction supplémentaire de formats de papier ISO est installée.

//FCBMOD    JOB   ...                                          72
//STEP1     EXEC  PGM=IEBIMAGE
//SYSUT1    DD    DSNAME=SYS1.IMAGELIB,DISP=OLD
//SYSPRINT  DD    SYSOUT=A
//SYSIN     DD    *
    FCB  CH1=1,CH12=75,SIZE=85,
         LPI=((10,35),(12,4),(10,35),(6,1)                      X
    NAME ARU
/*

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

  • L’instruction SYSUT1 DD inclut DISP=OLD pour garantir qu’aucun autre travail ne peut modifier l’ensemble de données pendant l’exécution de ce travail.
  • CH1=1 spécifie le code du canal 1 pour la ligne 1, permettant le positionnement à la ligne 1.
  • Ch12=75 spécifie le code du canal 12 pour la ligne 75, permettant le positionnement à la ligne 75 et une indication d’exception d’unité à 75 (la dernière ligne imprimable sur la page.)
  • LPI=((10,35),(12,4),(10,35),(6,1)) spécifie l’espacement vertical pour toute la zone imprimable sur le format.
    La dernière ligne imprimable du format doit avoir un espacement vertical de 6 lignes par pouce.
    La somme des lignes attribuées doit être un multiple de 1/2.

    EXEMPLE
    (10,35)=3 1/2″ (12,4)=2/6″ (6,1)=1/6″
    et 3 1/2 + 2/6 + 3 1/2 + 1/6 = 7 1/2 qui est un multiple de 1/2
  • SIZE=85 spécifie la longueur du format à 85 dixièmes de pouce, ou 8-1/2 pouces, bien que la zone imprimable soit de 7-1/2 pouces.
  • Le nom du nouveau module FCB est ARU ; il est stocké en tant que membre du jeu de données SYS1.IMAGELIB.

Exemple 7:  Création d’un 4248 Forms Control Buffer Module

Dans cet exemple, un nouveau module FCB par défaut 4248 est construit en utilisant un module FCB existant comme modèle.
Le nouveau module, NEW1, est ajouté à SYS1.IMAGELIB en tant que nouveau membre.
Le module existant, OLD1, reste inchangé.
OLD1 peut être un FCB 4248 appelé FCB4OLD1 ou un FCB 3211 appelé FCB2OLD1.
(Si les deux modules existaient, FCB4OLD1 serait utilisé.)

//FCBMOD7  JOB   ...
//STEP1    EXEC  PGM=IEBIMAGE
//SYSUT1   DD  DSNAME=SYS1.IMAGELIB,DISP=OLD
//SYSPRINT DD  SYSOUT=A
//SYSIN    DD  *
    OPTION  DEVICE=4248
    INCLUDE OLD1
    FCB     COPYP=67,PSPEED=M,DEFAULT=YES
    NAME    NEW1
/*

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

  • L’instruction SYSUT1 DD inclut DISP=OLD pour garantir qu’aucun autre travail ne peut modifier l’ensemble de données pendant l’exécution de ce travail.
  • DEVICE=4248 dans l’instruction OPTION spécifie que ce module doit être créé pour l’imprimante 4248.
  • L’instruction INCLUDE spécifie qu’une copie du module existant OLD1 doit être utilisée comme base pour le nouveau module, NEW1.
  • COPYP=67 indique que la fonction de copie horizontale doit être activée et que les copies horizontales doivent commencer à s’imprimer à la 67e position d’impression à partir de la marge de début (gauche). Notez que la valeur 67 divise une imprimante à 132 marteaux en deux zones de copie égales pour deux copies horizontales de même taille.
    Avec COPYP=67, un maximum de 66 octets peut être envoyé à l’imprimante.
  • PSPEED=M indique que la vitesse de l’imprimante doit être réglée sur moyenne (3000 LPM).
    Ce paramètre remplace toute valeur PSPEED précédemment définie dans le module OLD1 ; il s’applique au module NEW1, mais ne modifie pas la valeur définie dans OLD1.
  • DEFAULT=YES indique que ce module, NEW1, doit devenir un module FCB par défaut pour cette installation.
  • Étant donné que ces paramètres ne sont pas spécifiés, les valeurs de LINES, SIZE, LPI et CHx sont par défaut les valeurs qui existent déjà dans le module OLD1.
  • L’instruction NAME indique que ce module doit s’appeler NEW1.

Exemple 8: Création d’un nouveau Copy Modification Module

3800 Modèle 1

Dans cet exemple, un module de modification de copie qui contient quatre segments de modification est construit.
Le module est ajouté au jeu de données SYS1.IMAGELIB en tant que nouveau membre.

//COPMOD1  JOB  ...
//STEP1    EXEC PGM=IEBIMAGE
//SYSUT1   DD  DSNAME=SYS1.IMAGELIB,DISP=OLD
//SYSPRINT DD  SYSOUT=A
//SYSIN    DD  *
COPY1  COPYMOD COPIES=(1,1),LINES=(1,1),POS=50,                        X
               TEXT=(C,'CONTROLLER'S COPY')
COPY2A COPYMOD COPIES=(2,1),LINES=(1,1),POS=50,                        X
               TEXT=(C,'SHIPPING MANAGER'S COPY')
COPY2B COPYMOD COPIES=(2,1),LINES=(34,3),POS=75,                       X
               TEXT=(10C,' ')
COPYALL COPYMOD COPIES=(1,4),LINES=(58,1),POS=35,                      X
               TEXT=((C,'***'),(C,'CONFIDENTIAL'),(3X,'5C'))
         NAME  RTO1
/*

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

  • L’instruction SYSUT1 DD inclut DISP=OLD pour garantir qu’aucun autre travail ne peut modifier l’ensemble de données pendant l’exécution de ce travail.
  • L’instruction COPY1 COPYMOD spécifie le texte qui s’applique à chaque page de la première copie de l’ensemble de données de sortie : LINES=(1,1) et POS=50 spécifient que le texte doit figurer sur la première ligne imprimable de chaque page, à partir de la 50e position d’impression depuis le début (à gauche).
    Le paramètre TEXT identifie chaque page de la copie comme étant la copie du contrôleur.
  • L’instruction COPY2A COPYMOD spécifie le texte qui s’applique à chaque page de la deuxième copie de l’ensemble de données de sortie.
    Le texte doit figurer sur la première ligne de chaque page, à la 50e position d’impression à partir de la gauche, chaque page de la copie étant la copie du directeur des expéditions.
  • L’instruction COPY2B COPYMOD spécifie qu’une partie du texte de l’ensemble de données de sortie de la deuxième copie doit être masquée, de sorte que la première, la troisième et les copies suivantes contiennent des informations qui ne sont pas imprimées sur la deuxième copie.
    La zone vierge doit être sur les lignes 34, 35 et 36, en commençant à la 75e position d’impression à partir de la gauche.
    Le texte des lignes 34, 35 et 36, entre les positions d’impression 75 et 84, doit être vide (c’est-à-dire que le caractère spécifié entre les guillemets simples du paramètre TEXT est un blanc).
  • L’instruction COPYALL COPYMOD spécifie le texte qui s’applique aux quatre premières copies de l’ensemble de données de sortie.
    Cet exemple suppose que pas plus de quatre copies sont imprimées à chaque fois que le travail qui produit le jeu de données de sortie est traité.
    Le texte doit être sur la 58e ligne de chaque page, à la 35e position d’impression à partir de la gauche.
    La légende ***CONFIDENTIEL*** doit figurer sur chaque page de la copie.
    Notez que le texte peut être codé au format caractère et hexadécimal.
  • Le nom du module de modification de copie est RTO1 ; il est stocké en tant que membre du jeu de données SYS1.IMAGELIB.

Exemple 9: Construction d’un nouveau Copy Modification Module à partir d’une copie existante

Dans cet exemple, une copie d’un module de modification de copie existant, RTO1, est utilisée comme base pour un nouveau module de modification de copie.
Le nouveau module est ajouté au jeu de données SYS1.IMAGELIB en tant que nouveau membre.

Le module existant, RTO1, reste inchangé et disponible pour utilisation.

//COPMOD2  JOB  ...
//STEP1    EXEC PGM=IEBIMAGE
//SYSUT1   DD  DSNAME=SYS1.IMAGELIB,DISP=OLD
//SYSPRINT DD  SYSOUT=A
//SYSIN    DD  *
    INCLUDE  RTO1,DELSEG=1
    OPTION   OVERRUN=8,DEVICE=3800M3
    COPYMOD  COPIES=(2,3),LINES=(52,6),POS=100,                        X
               TEXT=(X,'40404040404040405C5C')
    NAME     AP
/*

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

  • L’instruction SYSUT1 DD inclut DISP=OLD pour garantir qu’aucun autre travail ne peut modifier l’ensemble de données pendant l’exécution de ce travail.
  • L’instruction INCLUDE spécifie qu’une copie du module de modification de copie nommée RTO1 est utilisée comme base pour le nouveau module et que le premier segment de modification de RTO1 doit être supprimé de la copie.
  • OVERRUN=8 dans l’instruction OPTION spécifie que le programme IEBIMAGE doit imprimer un message d’avertissement si la modification de la copie peut entraîner une condition de dépassement de ligne lors de l’impression à 6 et 8 lignes par pouce.
    Le programme doit également supprimer tous les messages d’avertissement qui s’appliquent à l’impression à 10 et 12 lignes par pouce.
    DEVICE=3800M3 dans l’instruction OPTION spécifie le traitement en mode de compatibilité 3800 Model 3.
  • L’instruction COPYMOD spécifie le texte qui s’applique à chaque page des deuxième, troisième et quatrième copies de l’ensemble de données de sortie :
    LINES=(52,6) et POS=100 spécifient que le texte doit être sur la 52e ligne et répété pour de la 53e à la 57e ligne de chaque page, en commençant à la 100e position d’impression à partir de la gauche (début).
    L’instruction TEXT spécifie le texte sous forme hexadécimale : huit blancs suivis de deux astérisques (dans cet exemple, on suppose que X’40’ s’imprime comme un blanc et que X’5C’ s’imprime comme un astérisque ; en pratique, le la table d’arrangement des caractères utilisée avec le module de modification de copie peut traduire X’40’ et X’5C’ en d’autres caractères imprimables).
  • Le nom du nouveau module de modification de copie est AP ; il est stocké en tant que membre du jeu de données SYS1.IMAGELIB.

Exemple 10: Ajout d’un nouveau caractère à un module Table de disposition des caractères

3800 Modèle 1

Dans cet exemple, un module de table de disposition des caractères fourni par IBM est modifié pour inclure un autre caractère, puis ajouté au jeu de données SYS1.IMAGELIB en remplacement du module fourni par IBM.

//CHARMOD1 JOB  ...
//STEP1    EXEC PGM=IEBIMAGE
//SYSUT1   DD  DSNAME=SYS1.IMAGELIB,DISP=OLD
//SYSPRINT DD  SYSOUT=A
//SYSIN    DD  *
     INCLUDE  GF10
     OPTION   DEVICE=3800M3
     TABLE    LOC=((2A,2A),(6A,2A),(AA,2A),(EA,2A))
     NAME     GF10(R)
/*

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

  • L’instruction SYSUT1 DD inclut DISP=OLD pour garantir qu’aucun autre travail ne peut modifier l’ensemble de données pendant l’exécution de ce travail.
  • L’instruction INCLUDE spécifie qu’une copie de la table d’arrangement des caractères nommée GF10 doit être utilisée comme base pour le nouveau module.
  • L’instruction OPTION avec le paramètre DEVICE spécifie le traitement en mode de compatibilité 3800 modèle 3.
  • L’instruction TABLE spécifie des informations mises à jour pour quatre entrées de table de traduction : X’2A’, X’6A’, X’AA’ et X’EA’.
    (Ces quatre emplacements ne sont pas utilisés dans la table GF10 fournie par IBM.)
    Chacune des quatre entrées de la table de traduction doit pointer vers la position «2A» (43e caractère) dans le premier WCGM, qui contient le modèle de balayage pour un losange.
  • Le nom de la table d’arrangement des caractères est GF10 et il est stocké en tant que nouveau module dans le jeu de données SYS1.IMAGELIB.
    Le répertoire du jeu de données est mis à jour afin que le nom GF10 pointe vers le nouveau module ; l’ancien module GF10 n’est plus accessible via le répertoire du jeu de données.

Exemple 11 : Création d’un nouveau module Table d’arrangement des caractères à partir d’une copie existante

3800 Modèle 1

Dans cet exemple, un module de table d’arrangement de caractères existant est copié et utilisé comme base pour un nouveau module.
La nouvelle table d’arrangement des caractères est identique à l’ancienne, sauf qu’elle utilise le jeu de caractères gothique à 15 pas au lieu de gothique à 10 pas.

//CHARMOD2 JOB  ...
//STEP1    EXEC PGM=IEBIMAGE
//SYSUT1   DD  DSNAME=SYS1.IMAGELIB,DISP=OLD
//SYSPRINT DD  SYSOUT=A
//SYSIN    DD  *
    INCLUDE  A11
    OPTION   DEVICE=3800M3
    TABLE    CGMID=87
    NAME     A115
/*

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

  • L’instruction SYSUT1 DD inclut DISP=OLD pour garantir qu’aucun autre travail ne peut modifier l’ensemble de données pendant l’exécution de ce travail.
  • L’instruction INCLUDE spécifie qu’une copie de la table d’arrangement des caractères nommée A11 doit être utilisée comme base pour le nouveau module.
    La table d’arrangement des caractères A11 traduit les codes de données 8 bits en caractères imprimables dans le jeu de caractères gothiques à 10 pas.
  • L’instruction OPTION avec le paramètre DEVICE spécifie le traitement en mode de compatibilité 3800 modèle 3.
  • L’instruction TABLE spécifie un nouvel identificateur de jeu de caractères, X’87’, qui est l’identificateur du jeu de caractères gothiques à 15 pas.
    Aucune autre modification n’est apportée au tableau d’arrangement des caractères.
    Le nouveau tableau appelle les caractères du jeu de caractères gothique à 15 pas.
  • Le nom de la nouvelle table d’arrangement des caractères est A115 ; il est stocké en tant que membre du jeu de données SYS1.IMAGELIB.

Exemple 12 : Création de caractères graphiques dans un module Table d’arrangement des caractères

Dans cet exemple, un module de table d’arrangement de caractères existant est copié et utilisé comme base pour un nouveau module qui comprendra des caractères conçus par l’utilisateur d’un module de modification de caractères graphiques.
Le nouveau module est ensuite ajouté au jeu de données SYS1.IMAGELIB.

//CHARMOD3 JOB  ...
//STEP1    EXEC PGM=IEBIMAGE
//SYSUT1   DD  DSNAME=SYS1.IMAGELIB,DISP=OLD
//SYSPRINT DD  SYSOUT=A
//SYSIN    DD  *
    INCLUDE ONB
    TABLE   GCMLIST=ONB1,LOC=((6F,2F,1),(7C,3C,1),(6A,2A,0))
    NAME    ONBZ
/*

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

  • L’instruction SYSUT1 DD inclut DISP=OLD pour garantir qu’aucun autre travail ne peut modifier l’ensemble de données pendant l’exécution de ce travail.
  • L’instruction INCLUDE spécifie qu’une copie de la table d’arrangement des caractères nommée ONB doit être utilisée comme base pour le nouveau module.
    ONB fait référence à deux WCGM.
  • L’instruction TABLE identifie un module de modification de caractères graphiques et précise les entrées de la table de traduction pour chacun de ses segments :
    GCMLIST=ONB1 identifie le module de modification de caractères graphiques nommé ONB1.
    Le paramètre LOC spécifie l’emplacement de l’entrée de table de traduction, la position des caractères et le numéro WCGM pour chaque segment du module :
    Le premier segment correspond au code de données 8 bits X’6F’.
    Le motif de balayage des segments doit être chargé à la position de caractère X’2F’ (c’est-à-dire la 48ème position de caractère) dans le deuxième WCGM.
    Le deuxième segment correspond au code de données à 8 bits X’7C’.
    Le motif de balayage du segment doit être chargé à la position de caractère X’3C’ (c’est-à-dire,
    Le troisième segment correspond au code de données à 8 bits X’6A’.
    Le motif de balayage du segment doit être chargé à la position de caractère X’2A’ (c’est-à-dire la 43ème position de caractère) dans le premier WCGM.
    Le nom de la nouvelle table d’arrangement des caractères est ONBZ ; il est stocké en tant que nouveau module dans le jeu de données SYS1.IMAGELIB.

Exemple 13 : Supprimer les références graphiques d’un module Table de disposition des caractères

3800 Modèle 3

Dans cet exemple, un module de table d’arrangement de caractères existant est copié et utilisé comme base pour un nouveau.
La nouvelle table d’arrangement de caractères supprime les références à tous les modules de modification de caractères graphiques et réinitialise les entrées de table de traduction qui ont été utilisées pour pointer vers des positions de caractères pour les segments d’un module de modification de caractères graphiques.

//CHARMOD4 JOB  ...
//STEP1    EXEC PGM=IEBIMAGE
//SYSUT1   DD  DSNAME=SYS1.IMAGELIB,DISP=OLD
//SYSPRINT DD  SYSOUT=A
//SYSIN    DD  *
    INCLUDE  ZYL
    OPTION   DEVICE=3800M3
    TABLE    GCMLIST=DELETE,LOC=((6A),(6B))
    NAME     ZYLA
/*

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

  • L’instruction SYSUT1 DD inclut DISP=OLD pour garantir qu’aucun autre travail ne peut modifier l’ensemble de données pendant l’exécution de ce travail.
  • L’instruction INCLUDE spécifie qu’une copie de la table d’arrangement des caractères nommée ZYL doit être utilisée comme base pour le nouveau module.
  • L’instruction OPTION avec le paramètre DEVICE spécifie le traitement en mode de compatibilité 3800 modèle 3.
  • L’instruction TABLE supprime les références aux modules de modification de caractères graphiques et réinitialise deux entrées de table de traduction :
    GCMLIST=DELETE spécifie que tous les noms de modules de modification de caractères graphiques inclus avec le module lors de la copie de la table d’arrangement des caractères ZYL doivent être remis à zéro (X’ 40′).
    Le paramètre LOC identifie deux emplacements dans la table de traduction, X’6A’ et X’6B’, qui doivent être définis sur X’FF’ (la valeur par défaut lorsqu’aucune position de caractère ou aucune valeur WCGM n’est spécifiée).
  • Le nom de la nouvelle table d’arrangement des caractères est ZYLA ; il est stocké en tant que membre du jeu de données SYS1.IMAGELIB.

Exemple 14 : Répertorier le module de modification des caractères graphiques des graphics à usage national World Trade

3800 Modèle 1

Dans cet exemple, chaque segment du module de modification de caractères graphiques fourni par IBM contenant les graphiques à usage national du commerce international est imprimé.
Chaque segment est unique, bien que les modèles de balayage de certains segments soient identiques aux modèles de balayage d’autres segments, seul le code de données 8 bits étant différent.

//GRAFMOD1 JOB  ...
//STEP1    EXEC PGM=IEBIMAGE
//SYSUT1   DD  DSNAME=SYS1.IMAGELIB,DISP=SHR
//SYSPRINT DD  SYSOUT=A
//SYSIN    DD  *
    GRAPHIC
    NAME  *
/*

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

  • DISP=SHR est codé car la bibliothèque n’est pas mise à jour.
  • Le module de modification des caractères graphiques World Trade National Use Graphics est identifié par le pseudonyme *.
    Le motif de balayage de chacun des caractères du module est imprimé.

Exemple 15 : Construction d’un module de modification de caractères graphiques à partir du module de modification de caractères World Trade GRAFMOD

3800 Modèle 3

Dans cet exemple, un module de modification de caractères graphiques est construit.
Ses caractères sont des segments copiés du module de modification des caractères graphiques World Trade National Use Graphics.
(Voir le Guide du programmeur du sous-système d’impression IBM 3800 pour les affectations EBCDIC des caractères.)
Le nouveau module est stocké dans le jeu de données système SYS1.IMAGELIB.

//GRAFMOD2 JOB  ...
//STEP1    EXEC PGM=IEBIMAGE
//SYSUT1   DD  DSNAME=SYS1.IMAGELIB,DISP=OLD
//SYSPRINT DD  SYSOUT=A
//SYSIN    DD  *
   OPTION DEVICE=3800M3
   GRAPHIC REF=((24),(25),(26),(27),(28),(31),(33),(35),(38),(40))
   NAME   CSTW
/*

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

  • L’instruction SYSUT1 DD inclut DISP=OLD pour garantir qu’aucun autre travail ne peut modifier l’ensemble de données pendant l’exécution de ce travail.
  • DEVICE=3800M3 dans l’instruction OPTION spécifie le format de module du mode de compatibilité 3800 modèle 3.
  • En ne spécifiant pas le mot-clé GCM, l’instruction GRAPHIC identifie le module de modification des caractères graphiques World Trade National Use Graphics.
    Dix de ses segments doivent être copiés et utilisés avec le nouveau module.
  • Le nom du module de modification des caractères graphiques est CSTW ; il est stocké en tant que nouveau module dans le jeu de données SYS1.IMAGELIB.

Exemple 17 : Création d’un module de modification de caractères graphiques à partir de plusieurs sources

3800 Modèle 1

Dans cet exemple, un module de modification de caractères graphiques est créé.
Son contenu provient de trois sources différentes :
neuf segments sont copiés à partir d’un module existant avec l’instruction INCLUDE ;
l’instruction GRAPHIC permet de sélectionner un autre segment à copier ;
l’instruction GRAPHIC est également utilisée pour établir les caractéristiques d’un caractère conçu par l’utilisateur.
Le nouveau module de modification des caractères graphiques, une fois construit, est ajouté au SYS1.IMAGELIB.

//GRAFMOD4 JOB  ...
//STEP1    EXEC PGM=IEBIMAGE
//SYSUT1   DD  DSNAME=SYS1.IMAGELIB,DISP=OLD
//SYSPRINT DD  SYSOUT=A
//SYSIN    DD  *
    INCLUDE CSTW,DELSEG=3
    GRAPHIC REF=(1,6A),GCM=BODE,ASSIGN=9A
     ********           SEQ=06
    **********          SEQ=07
   ****    ****         SEQ=08
   ***      ***         SEQ=09
   ***     ****         SEQ=10
   ***  ******          SEQ=11
   ***  ******          SEQ=12
   ***     ****         SEQ=13
   ***      ****        SEQ=14
   ***       ***        SEQ=15
   ***       ***        SEQ=16
   *** **** ****        SEQ=17
   ***  *******         SEQ=18
   ***   *****          SEQ=19
    NAME  JPCK
/*

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

  • L’instruction SYSUT1 DD inclut DISP=OLD pour garantir qu’aucun autre travail ne peut modifier l’ensemble de données pendant l’exécution de ce travail.
  • L’instruction INCLUDE spécifie qu’une copie du module de modification de caractères graphiques nommé CSTW doit être incluse avec le nouveau module.
    Tous les segments de CSTW, à l’exception du troisième segment (résultant de DELSEG=3), doivent être copiés dans le nouveau module et devenir les premier à neuvième segments de modification du module.
  • L’instruction GRAPHIC spécifie les dixième et onzième segments du module :
    REF=(1,6A) et GCM=BODE précisent que le 10ème segment du nouveau module doit être obtenu en copiant le premier segment du module de modification de caractères graphiques nommé BODE.
    De plus, le code de données à 8 bits du segment doit être modifié de sorte que son caractère soit identifié avec le code X’6A’.
    ASSIGN=9A spécifie que le 11e segment du nouveau module est un caractère conçu par l’utilisateur dont le code de données 8 bits est X’9A’ et dont la largeur est de 10 pas (la valeur par défaut lorsqu’aucune valeur de pas n’est spécifiée).
    L’instruction GRAPHIC est suivie d’instructions de données qui spécifient le modèle de balayage du caractère.
  • Le nom du module de modification des caractères graphiques est JPCK, il est stocké en tant que nouveau module dans le jeu de données SYS1.IMAGELIB.

Exemple 18 : Définition et utilisation d’un caractère dans un module de modification de caractères graphiques

3800 Modèle 3

Dans cet exemple, un module de modification de caractère graphique contenant un caractère conçu par l’utilisateur est construit.
Ensuite, une table d’agencement de caractères de format est modifiée pour inclure ce nouveau caractère.
Ensuite, un module de modification de copie est créé pour imprimer le nouveau caractère enfermé dans une boîte de caractères de format.
Enfin, le résultat est testé pour permettre la comparaison de la sortie avec l’entrée.

  //CHAR     JOB  ...
  //BUILD    EXEC PGM=IEBIMAGE
  //SYSUT1   DD  DSNAME=SYS1.IMAGELIB,DISP=OLD
  //SYSPRINT DD  SYSOUT=A
  //SYSIN    DD  *
           OPTION  DEVICE=3800M3
  STEP1    GRAPHIC ASSIGN=5C
  XXX                 XXX SEQ=01
  XXX                 XXX SEQ=02
  XXX                 XXX SEQ=03
  XXX                 XXX SEQ=04
  XXXXXXXXXXXXXXXXXXXXXXX SEQ=05
  XXXXXXXXXXXXXXXXXXXXXXX SEQ=06
  XXXXXXXXXXXXXXXXXXXXXXX SEQ=07
  XXX                 XXX SEQ=08
  XXX                 XXX SEQ=09
  XXX                 XXX SEQ=10
  XXX                 XXX SEQ=11
                          SEQ=12
                          SEQ=13
                          SEQ=14
  XXXXXXXXXXXXXXXXXXXXXXX SEQ=15
  XXXXXXXXXXXXXXXXXXXXXXX SEQ=16
  XXXXXXXXXXXXXXXXXXXXXXX SEQ=17
  XXX       XXX       XXX SEQ=18
  XXX       XXX       XXX SEQ=19
  XXX       XXX       XXX SEQ=20
  XXX       XXX       XXX SEQ=21
  XXXX     XXXXX     XXXX SEQ=22
   XXXX   XXXXXXX   XXXX  SEQ=23
    XXXXXXXXXXXXXXXXXXX   SEQ=24
      XXXXX    XXXXXX     SEQ=25
                          SEQ=26
                          SEQ=27
                          SEQ=28
  XXXXXXXXXXXXXXXXXXXXXXX SEQ=29
  XXXXXXXXXXXXXXXXXXXXXXX SEQ=30
  XXXXXXXXXXXXXXXXXXXXXXX SEQ=31
                  XXXXXXX SEQ=32
       XXXXXXXXXXXXXXXXXX SEQ=33
  XXXXXXXXXXXXXXXX        SEQ=34
  XXXXXXXXXXXXXXXX        SEQ=35
       XXXXXXXXXXXXXXXXXX SEQ=36
                  XXXXXXX SEQ=37
  XXXXXXXXXXXXXXXXXXXXXXX SEQ=38
  XXXXXXXXXXXXXXXXXXXXXXX SEQ=39
  XXXXXXXXXXXXXXXXXXXXXXX SEQ=40
            NAME AIBM

  STEP2    OPTION  DEVICE=3800M3
           INCLUDE FM10
           TABLE   GCMLIST=AIBM,LOC=(5C,2C)
           NAME    BIBM
  STEP3    OPTION  DEVICE=3800M3
           COPYMOD COPIES=1,LINES=58,POS=5,TEXT=(C,'W6X')
           COPYMOD COPIES=1,LINES=59,POS=5,TEXT=(C,'7*7')
           COPYMOD COPIES=1,LINES=60,POS=5,TEXT=(X,'E9F6E8')
           NAME    CIBM
  /*
  //TEST     EXEC PGM=IEBIMAGE
  //SYSUT1   DD  DSNAME=SYS1.IMAGELIB,DISP=OLD
  //SYSPRINT DD  SYSOUT=A,CHARS=(GF10,BIBM),
  //             MODIFY=(CIBM,1)
  //SYSIN    DD  *
          OPTION   DEVICE=3800M3
          GRAPHIC
          NAME     AIBM
  /*

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

  • L’instruction SYSUT1 DD inclut DISP=OLD pour garantir qu’aucun autre travail ne peut modifier l’ensemble de données pendant l’exécution de ce travail.
  • Le paramètre ASSIGN de ​​l’instruction GRAPHIC spécifie que le code de données 8 bits pour le caractère conçu par l’utilisateur est X’5C’ et que la largeur est de 10 pas (la valeur par défaut lorsqu’aucun pas n’est spécifié).
    L’instruction GRAPHIC est suivie d’instructions de données qui spécifient le motif de balayage du caractère pour un interligne vertical de 6 lignes par pouce.
  • Le nom du module de modification des caractères graphiques est AIBM et il est stocké en tant que nouveau module dans SYS1.IMAGELIB.
  • A l’ÉTAPE 2, l’instruction INCLUDE spécifie qu’une copie de la table d’arrangement des caractères FM10 doit être utilisée comme base pour le nouveau module.
  • L’instruction TABLE identifie le module de modification de caractères graphiques nommé AIBM, créé à l’étape précédente.
    Le paramètre LOC de l’instruction TABLE spécifie l’emplacement de l’entrée de la table de traduction (le code de données 8 bits du caractère) de X’5C’ et la position (X’2C’) où ce caractère doit être chargé dans le WCGM.
  • Le nom de la nouvelle table de disposition des caractères, qui est ajoutée à SYS1.IMAGELIB, est BIBM.
  • À l’ÉTAPE 3, les trois instructions COPYMOD spécifient le texte qui doit être placé sur les lignes 58, 59 et 60 de la première copie du jeu de données de sortie, en commençant à la position d’impression 5 sur chaque ligne.
    Lorsqu’ils sont utilisés avec la table de disposition des caractères BIBM, les caractères W, 6 et X s’impriment sous la forme d’un coin supérieur gauche, d’un segment de ligne horizontal et d’un coin supérieur droit, tous en épaisseur de ligne 3.
    Les caractères 7, * et 7 s’impriment sous la forme d’un poids-3 segment de ligne verticale des deux côtés du caractère conçu par l’utilisateur construit à l’étape 1 (l’astérisque a l’affectation EBCDIC 5C, qui adresse ce caractère).
    Les caractères hexadécimaux E9, F6 et E8 complètent la zone de format d’épaisseur de ligne 3 autour du caractère.
  • Le nom du module de modification de copie est CIBM ; il est stocké en tant que nouveau module sur SYS1.IMAGELIB.
  • A TEST, l’instruction EXEC appelle une nouvelle exécution du programme IEBIMAGE pour tester les modules qui viennent d’être créés.
    Dans l’instruction SYSPRINT DD, la table d’agencement des caractères BIBM est la deuxième des deux spécifiées, et le module de modification de copie CIBM est spécifié avec un caractère de référence de table de 1, pour utiliser cette table BIBM.
  • L’instruction GRAPHIC sans opérande spécifié appelle l’impression du module, AIBM, spécifié avec l’instruction NAME qui la suit.
    Chaque page de la liste de sortie pour cette exécution IEBIMAGE a une petite image de la modification imprimée dans le coin inférieur gauche.
  • L’instruction OPTION avec le paramètre DEVICE à STEP1, STEP2 et STEP3 spécifie le format du module en mode de compatibilité 3800 modèle 3 et les considérations de traitement.

Exemple 19 : Lister un module de jeu de caractères de bibliothèque

3800 Modèle 1

Dans cet exemple, chaque segment d’un jeu de caractères de bibliothèque est imprimé.
Le motif de balayage de chacun des caractères du module est imprimé.

//LIBMOD1  JOB  ...
//STEP1    EXEC PGM=IEBIMAGE
//SYSUT1   DD  DSNAME=SYS1.IMAGELIB,DISP=SHR
//SYSPRINT DD  SYSOUT=A
//SYSIN    DD  *
    CHARSET
    NAME    83
/*

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

  • NAME spécifie le nom du jeu de caractères de la bibliothèque (83).

Exemple 20 : Création d’un module de jeu de caractères de bibliothèque

3800 Modèle 3

Dans cet exemple, un module de jeu de caractères de bibliothèque est construit.
Ses caractères sont des segments copiés du module de modification des caractères graphiques World Trade National Use Graphics.
Pour obtenir la liste de tous les segments de ce module, consultez le Guide du programmeur du sous-système d’impression IBM 3800.
Les affectations EBCDIC pour les caractères sont remplacées par des codes d’emplacement WCGM.
Le nouveau module est stocké dans le jeu de données système SYS1.IMAGELIB.

//LIBMOD2  JOB  ...
//STEP1    EXEC PGM=IEBIMAGE
//SYSUT1   DD  DSNAME=SYS1.IMAGELIB,DISP=OLD
//SYSPRINT DD  SYSOUT=A
//SYSIN    DD  *
    OPTION   DEVICE=3800M3
    CHARSET  REF=((24,01),(25,02),(26,03),(27,04),(28,05),             X
               (31,06),(33,07),(35,08),(38,09),(40,0A))
    NAME     73
/*

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

  • L’instruction SYSUT1 DD inclut DISP=OLD pour garantir qu’aucun autre travail ne peut modifier l’ensemble de données pendant l’exécution de ce travail.
  • DEVICE=3800M3 dans l’instruction OPTION spécifie le format de module du mode de compatibilité 3800 modèle 3.
  • En ne spécifiant pas le mot-clé GCM ou un ID de jeu de caractères de bibliothèque, l’instruction CHARSET identifie le module de modification de caractères graphiques World Trade National Use Graphics.
    Dix de ses segments doivent être copiés et utilisés avec le nouveau module.
    Par exemple, le 24e segment doit être copié et affecté à l’emplacement WCGM 01.
    Voir le paramètre REF (24,01).
  • Le nom du module de jeu de caractères de la bibliothèque est 73 et il est stocké en tant que nouveau module dans le jeu de données SYS1.IMAGELIB.

Exemple 21 : Création d’un module de jeu de caractères de bibliothèque et modification d’une table de disposition des caractères pour l’utiliser

3800 Modèle 3

Dans cet exemple, un module de jeu de caractères de bibliothèque est construit.
Le module contient un caractère conçu par l’utilisateur, un “E” inversé, dont le code d’emplacement WCGM 6 bits est désigné par X’03’ et dont le pas est de 10.
Une table d’arrangement de caractères existante est ensuite modifiée pour inclure le E inversé . .

//LIBMOD3  JOB  ...
//STEP1    EXEC PGM=IEBIMAGE
//SYSUT1   DD  DSNAME=SYS1.IMAGELIB,DISP=OLD
//SYSPRINT DD  SYSOUT=A
//SYSIN    DD  *
    OPTION  DEVICE=3800M3
    CHARSET ASSIGN=(03,10)
    XXXXXXXXXXXXXXX     SEQ=10
    XXXXXXXXXXXXXXX     SEQ=11
    XXXXXXXXXXXXXXX     SEQ=12
               XXXX     SEQ=13
               XXXX     SEQ=14
               XXXX     SEQ=15
               XXXX     SEQ=16
               XXXX     SEQ=17
               XXXX     SEQ=18
               XXXX     SEQ=19
      XXXXXXXXXXXXX     SEQ=20
      XXXXXXXXXXXXX     SEQ=21
      XXXXXXXXXXXXX     SEQ=22
               XXXX     SEQ=23
               XXXX     SEQ=24
               XXXX     SEQ=25
               XXXX     SEQ=26
               XXXX     SEQ=27
               XXXX     SEQ=28
               XXXX     SEQ=29
    XXXXXXXXXXXXXXX     SEQ=30
    XXXXXXXXXXXXXXX     SEQ=31
    XXXXXXXXXXXXXXX     SEQ=32
    NAME     73
    INCLUDE  GS10
    OPTION   DEVICE=3800M3
    TABLE    CGMID=(83,73),LOC=(E0,03,1)
    NAME     RE10
/*

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

  • L’instruction SYSUT1 DD inclut DISP=OLD pour garantir qu’aucun autre travail ne peut modifier l’ensemble de données pendant l’exécution de ce travail.
  • DEVICE=3800M3 dans l’instruction OPTION spécifie le format de module du mode de compatibilité 3800 modèle 3 et les considérations de traitement.
  • Le paramètre ASSIGN de ​​l’instruction CHARSET établit le code d’emplacement WCGM 6 bits, X’03’, et la largeur, pas de 10, pour le caractère conçu par l’utilisateur.
    Les instructions de données qui suivent l’instruction CHARSET décrivent le modèle de balayage du caractère.
  • Le nom du module de jeu de caractères de la bibliothèque est 73 et il est stocké en tant que nouveau module dans le jeu de données SYS1.IMAGELIB.
  • L’instruction INCLUDE spécifie qu’une copie de la table de disposition des caractères GS10 doit être utilisée comme base pour la nouvelle table.
  • L’instruction TABLE spécifie l’ajout du jeu de caractères de la bibliothèque contenant le E inversé à cette copie de la table GS10.
    CGMID=(83,73) spécifie l’identifiant du jeu de caractères X’83’ pour le jeu Gothic-10 (qui est le jeu déjà utilisé par la table GS10) et spécifie X’73’ comme identifiant du jeu de caractères pour permettre le chargement du deuxième WCGM avec le jeu de caractères de bibliothèque 73.
    LOC=(E0,03,1) spécifie que le E inverse, auquel a été attribué l’emplacement WCGM 03 dans le deuxième WCGM, doit être référencé par le code EBCDIC X’E0′.
  • La nouvelle table d’arrangement des caractères est nommée RE10 ; il est stocké en tant que nouveau module dans le jeu de données SYS1.IMAGELIB.

Exemple 22 : Création d’un module de jeu de caractères de bibliothèque à partir de plusieurs sources

3800 Modèle 3

Dans cet exemple, un module de jeu de caractères de bibliothèque est créé. Son contenu provient de trois sources différentes :
– 62 segments sont copiés d’un module existant avec l’instruction INCLUDE ;
– l’instruction CHARSET permet de sélectionner un autre segment à copier ;
– une deuxième instruction CHARSET est utilisée pour établir les caractéristiques d’un caractère conçu par l’utilisateur.
Le nouveau module de jeu de caractères de la bibliothèque, une fois construit, est ajouté au fichier SYS1.IMAGELIB.

//LIBMOD4  JOB  ...
//STEP1    EXEC PGM=IEBIMAGE
//SYSUT1   DD  DSNAME=SYS1.IMAGELIB,DISP=OLD
//SYSPRINT DD  SYSOUT=A
//SYSIN    DD  *
    INCLUDE  33,DELSEG=(3,4)
    CHARSET  REF=(1,02),GCM=BODE,ASSIGN=03
     ********           SEQ=06
    **********          SEQ=07
   ****    ****         SEQ=08
   ***      ***         SEQ=09
   ***     ****         SEQ=10
   ***  ******          SEQ=11
   ***  ******          SEQ=12
   ***     ****         SEQ=13
   ***      ****        SEQ=14
   ***       ***        SEQ=15
   ***       ***        SEQ=16
   *** **** ****        SEQ=17
   ***  *******         SEQ=18
   ***   *****          SEQ=19
    NAME  53
/*

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

  • L’instruction SYSUT1 DD inclut DISP=OLD pour garantir qu’aucun autre travail ne peut modifier l’ensemble de données pendant l’exécution de ce travail.
  • L’instruction INCLUDE spécifie qu’une copie du module de jeu de caractères de bibliothèque nommé 33 doit être incluse avec le nouveau module.
    Tous les segments de 33, à l’exception des troisième et quatrième segments (résultant de DELSEG=3,4), doivent être copiés dans le nouveau module et devenir la base du nouveau module.
  • L’instruction CHARSET spécifie les troisième et quatrième segments du module :
    REF=(1,02) et GCM=BODE spécifient que le troisième segment du nouveau module doit être obtenu en copiant le premier segment du module de modification de caractères graphiques nommé BODE.
    Le code d’emplacement WCGM à 6 bits du segment doit être défini de sorte que son caractère soit identifié avec le code X’02’.
    ASSIGN=03 spécifie que le quatrième segment du nouveau module est un caractère conçu par l’utilisateur dont le code d’emplacement WCGM 6 bits est X’03’ et dont la largeur est de 10 pas (la valeur par défaut lorsqu’aucune valeur de pas n’est spécifiée).
    L’instruction CHARSET est suivie d’instructions de données qui spécifient le modèle de balayage du caractère.
  • Le nom du module de jeu de caractères de la bibliothèque est 53, il est stocké en tant que nouveau module dans le jeu de données SYS1.IMAGELIB.

JCL – IEBGENER

Les exemples qui suivent illustrent certaines des utilisations d’IEBGENER.
Vous pouvez utiliser le tableau 1 comme guide de référence rapide pour les exemples IEBGENER.
Les nombres dans la colonne Exemple font référence aux exemples qui suivent.

Tableau 1. Répertoire d’exemple IEBGENER

OpérationOrganisation du jeu de données PériphériqueCommentairesExemple
PRINTSéquentielDisque et imprimante
Le jeu de données est répertorié sur une imprimante.Exemple 1 : Impression d’un ensemble de données séquentielles
CONVERTSéquentiel à partitionnéBande et disqueSortie bloquée.
Trois membres doivent être créés.
Exemple 2 : Création d’un ensemble de données partitionnées à partir d’une entrée séquentielle
MERGESéquentiel vers partitionnéDisqueSortie bloquée.
Deux membres doivent être fusionnés dans l’ensemble de données existant.
Exemple 3 : convertir une entrée séquentielle en membres partitionnés
COPYSéquentielInstream et bandeSortie bloquée.Exemple 4 : entrée en flux, ensemble de données séquentielles sur volume de bande
COPY and reblockSéquentielDisque et bandeEffectue une copie de bande bloquée à partir du disque ; demande de tampon explicite.Exemple 5 : Produire une copie bloquée sur bande à partir d’un fichier disque non bloqué
COPY avec éditionSéquentielbandeSortie bloquée.
Ensemble de données édité comme un groupe d’enregistrements.
Exemple 6 : Modifier et copier un ensemble de données d’entrée séquentielle avec des étiquettes
COPY avec éditionSéquentielFichier z/OS UNIX sur disqueSortie bloquée.
Nouvelle longueur d’enregistrement spécifiée pour l’ensemble de données de sortie.
Deux groupes d’enregistrements spécifiés.
Exemple 7 : Modification et copie d’un fichier z/OS UNIX séquentiel dans un ensemble de données séquentiel
COPY avec validation DBCSSéquentielDisqueLes données DBCS sont validées et modifiées avant la copie.Exemple 8 : Éditer les données du jeu de caractères à deux octets

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.

EXEMPLE

Exemple 1 : Impression d’un jeu de données séquentiel

Dans cet exemple, un ensemble de données séquentielles est imprimé.
La sortie imprimée est alignée à gauche, avec un enregistrement de 80 octets apparaissant sur chaque ligne de sortie imprimée.

//PRINT    JOB  ...
//STEP1    EXEC PGM=IEBGENER
//SYSPRINT DD  SYSOUT=A
//SYSIN    DD  DUMMY
//SYSUT1   DD  DSNAME=D80.DATA,DISP=SHR
//SYSUT2   DD  SYSOUT=A

Les instructions de contrôle des travaux sont les suivantes :

  • SYSIN DD définit un jeu de données factice.
    Étant donné qu’aucune modification n’est effectuée, aucune instruction de contrôle d’utilitaire n’est requise.
  • SYSUT1 DD définit le jeu de données séquentielles d’entrée.
  • SYSUT2 DD indique que la sortie doit être écrite sur le périphérique de sortie du système (imprimante).
    IEBGENER copie LRECL et RECFM à partir de l’ensemble de données SYSUT1 et le système détermine un BLKSIZE.

Exemple 2 : Création d’un ensemble de données partitionné à partir d’une entrée séquentielle

Dans cet exemple, un ensemble de données partitionné (composé de trois membres) est créé à partir d’une entrée séquentielle.

//TAPEDISK JOB  ...
//STEP1    EXEC PGM=IEBGENER
//SYSPRINT DD  SYSOUT=A
//SYSUT1   DD  DSNAME=INSET,UNIT=tape,LABEL=(,SL),
//             DISP=(OLD,KEEP),VOLUME=SER=001234
//SYSUT2   DD  DSNAME=NEWSET,UNIT=disk,DISP=(,KEEP),
//             VOLUME=SER=111112,SPACE=(TRK,(10,5,5)),
//             DCB=(RECFM=FB,LRECL=80,BLKSIZE=2000)
//SYSIN    DD  *
     GENERATE  MAXNAME=3,MAXGPS=2
       MEMBER  NAME=MEMBER1
GROUP1 RECORD  IDENT=(8,'FIRSTMEM',1)
       MEMBER  NAME=MEMBER2
GROUP2 RECORD  IDENT=(8,'SECNDMEM',1)
       MEMBER  NAME=MEMBER3
/*

Les instructions de contrôle sont les suivantes :

  • SYSUT1 DD définit le jeu de données d’entrée (INSET).
    L’ensemble de données est le premier ensemble de données sur un volume de bande.
  • SYSUT2 DD définit le jeu de données partitionné en sortie (NEWSET).
    L’ensemble de données doit être placé sur un volume de disque.
    Dix pistes d’espace primaire, cinq pistes d’espace secondaire et cinq blocs (256 octets chacun) d’espace de répertoire sont alloués pour permettre une expansion future de l’ensemble de données.
    Les enregistrements de sortie sont bloqués pour réduire l’espace requis par l’ensemble de données.
  • SYSIN DD définit l’ensemble de données de contrôle, qui suit dans le flux d’entrée.
    Les instructions de contrôle d’utilitaire sont utilisées pour créer des membres à partir de données d’entrée séquentielles ; les déclarations ne spécifient aucune modification.
  • GENERATE indique que trois noms de membre sont inclus dans les instructions MEMBER suivantes et que le paramètre IDENT apparaît deux fois dans les instructions RECORD suivantes.
  • La première instruction MEMBER affecte un nom de membre (MEMBER1) au premier membre.
  • La première instruction RECORD (GROUP1) identifie le dernier enregistrement à placer dans le premier membre.
    Le nom de cet enregistrement (FIRSTMEM) apparaît dans les huit premières positions de l’enregistrement d’entrée.
  • Les instructions MEMBER et RECORD restantes définissent les deuxième et troisième membres.
    Notez que, comme il n’y a pas d’instruction RECORD associée à la troisième instruction MEMBER, le reste du fichier d’entrée sera chargé en tant que troisième membre.

Exemple 3 : Convertir une entrée séquentielle en membres partitionnés

Dans cet exemple, l’entrée séquentielle est convertie en deux membres partitionnés.
Les membres nouvellement créés sont fusionnés dans un ensemble de données partitionné existant.
Les étiquettes utilisateur sur l’ensemble de données d’entrée sont transmises à la routine d’exit utilisateur.

//DISKTODK JOB  ...
//STEP1    EXEC PGM=IEBGENER
//SYSPRINT DD  SYSOUT=A
//SYSUT1   DD  DSNAME=INSET,UNIT=disk,DISP=(OLD,KEEP),
//             VOLUME=SER=111112,LABEL=(,SUL)
//SYSUT2   DD  DSNAME=EXISTSET,UNIT=disk,DISP=(MOD,KEEP),
//             VOLUME=SER=111113
     GENERATE  MAXNAME=3,MAXGPS=1
        EXITS  INHDR=ROUT1,INTLR=ROUT2
       MEMBER  NAME=(MEMX,ALIASX)
GROUP1 RECORD  IDENT=(8,'FIRSTMEM',1)
       MEMBER  NAME=MEMY

Les instructions de contrôle sont les suivantes :

  • SYSUT1 DD définit le jeu de données d’entrée (INSET).
    L’ensemble de données d’entrée, qui réside sur un volume de disque, possède des étiquettes d’utilisateur standard.
  • SYSUT2 DD définit le jeu de données partitionné en sortie (EXISTSET).
    Les membres créés au cours de cette étape de travail sont fusionnés dans l’ensemble de données partitionné.
  • L’instruction SYSIN DD est omise.
    Comme la ligne GENERATE ne commence pas par //, le système suppose qu’elle est précédée d’une ligne //SYSIN DD *.
    SYSIN DD définit l’ensemble de données de contrôle, qui suit dans le flux d’entrée.
    Les instructions de contrôle d’utilitaire sont utilisées pour créer des membres à partir de données d’entrée séquentielles ; les déclarations ne spécifient aucune modification.
    Un /* à la fin de tout ensemble de données DD * est inutile car une instruction JCL ou la fin du flot de travaux marque la fin de l’ensemble de données du flux d’entrée.
  • GENERATE indique qu’un maximum de trois noms et alias sont inclus dans les instructions MEMBER suivantes et qu’un paramètre IDENT apparaît dans une instruction RECORD suivante.
  • EXITS définit les routines utilisateur qui doivent traiter les étiquettes utilisateur.
  • La première instruction MEMBER affecte un nom de membre (MEMX) et un alias (ALIASX) au premier membre.
  • L’instruction RECORD identifie le dernier enregistrement à placer dans le premier membre.
    Le nom de cet enregistrement (FIRSTMEM) apparaît dans les huit premières positions de l’enregistrement d’entrée.
  • La seconde instruction MEMBER affecte un nom de membre (MEMY) au second membre.
    Le reste de l’ensemble de données d’entrée est inclus dans ce membre.

Exemple 4 : Entrée In-Stream, données séquentielles définies sur le volume de bande

Dans cet exemple, un ensemble de données séquentielles d’entrée en flux est copié sur un volume de bande.

//CDTOTAPE JOB  ...
//STEP1    EXEC PGM=IEBGENER
//SYSPRINT DD  SYSOUT=A
//SYSIN    DD  DUMMY
//SYSUT2   DD  DSNAME=OUTSET,UNIT=tape,LABEL=(,SL),
//             DISP=(,KEEP),VOLUME=SER=001234,
//             DCB=(RECFM=FB,LRECL=80,BLKSIZE=2000)
//SYSUT1   DD  *
  (in-stream data)
/*

Les instructions de contrôle des tâches sont les suivantes :

  • SYSIN DD définit un jeu de données factice.
    Aucune modification n’est effectuée ; par conséquent, aucune instruction de contrôle d’utilitaire n’est nécessaire.
  • SYSUT2 DD définit le jeu de données de sortie, OUTSET.
    L’ensemble de données est écrit sur un volume de bande avec des étiquettes standard IBM.
    L’ensemble de données doit résider en tant que premier (ou unique) ensemble de données sur le volume.
  • SYSUT1 DD définit les données en flux qui sont en fait un ensemble de données JES SYSIN.
    L’ensemble de données ne contient aucune déclaration.

Exemple 5 : Produire une copie bloquée sur bande à partir d’un fichier disque non bloqué

Dans cet exemple, une copie bloquée sur bande est réalisée à partir d’un fichier disque séquentiel non bloqué.
Étant donné que l’ensemble de données de disque a une taille de bloc relativement petite, le nombre de tampons explicitement demandés est supérieur à la valeur par défaut de cinq.
Cela améliore les performances en permettant un plus grand chevauchement de la lecture de l’ensemble de données SYSUT1 avec l’écriture de l’ensemble de données SYSUT2.

//COPYJOB  JOB
//STEP1    EXEC PGM=IEBGENER,REGION=318K
//SYSPRINT DD  SYSOUT=A
//SYSIN    DD  DUMMY
//SYSUT1   DD  DSNAME=INPUT,UNIT=disk,
//             DISP=OLD,VOL=SER=X13380,
//             DCB=(BUFNO=20,RECFM=F,LRECL=2000,BLKSIZE=2000)
//SYSUT2   DD  DSNAME=OUTPUT,UNIT=tape,DISP=(NEW,KEEP),
//             DCB=(RECFM=FB,LRECL=2000,BLKSIZE=32000)

Les instructions de contrôle de job sont les suivantes :

  • L’instruction EXEC nomme le programme IEBGENER et spécifie la taille de la région de stockage virtuel requise.
    (Le calcul de la taille de la région est décrit dans le tableau 1.)
  • L’instruction SYSIN DD est factice, car aucune modification ne doit être effectuée.
  • L’instruction SYSUT1 DD identifie un fichier disque d’entrée.
    Normalement, les informations DCB RECFM, LRECL et BLKSIZE ne doivent pas être spécifiées dans l’instruction DD pour un fichier de disque existant car les informations existent dans l’étiquette d’ensemble de données dans le VTOC ; il est spécifié dans cet exemple pour illustrer le contraste avec l’ensemble de données de sortie.
    Les informations de série sur l’unité et le volume pourraient être omises si l’ensemble de données était catalogué.
    Les informations DCB spécifient BUFNO = 20 pour permettre la lecture de jusqu’à vingt blocs à chaque rotation du disque, en supposant que la piste du disque contiendra autant de blocs.
  • L’instruction SYSUT2 DD identifie le jeu de données de bande de sortie et spécifie une taille de bloc de 32 000 octets.
    La valeur par défaut de cinq tampons devrait être suffisante pour suivre le rythme de l’entrée.

Exemple 6 : Modification et copie d’un ensemble de données d’entrée séquentiel avec étiquettes

Dans cet exemple, un ensemble de données d’entrée séquentiel est modifié et copié.

//TAPETAPE JOB  ...
//STEP1    EXEC PGM=IEBGENER
//SYSPRINT DD  SYSOUT=A
//SYSUT1   DD  DSNAME=OLDSET,UNIT=tape,DISP=(OLD,KEEP),
//             VOLUME=SER=001234,LABEL=(3,SUL)
//SYSUT2   DD  DSNAME=NEWSET,UNIT=tape,DISP=(NEW,PASS),
//             DCB=(RECFM=FB,LRECL=80),
//             VOLUME=SER=001235,LABEL=(,SUL)
//SYSIN    DD  *
     GENERATE  MAXFLDS=3,MAXLITS=11
       RECORD  FIELD=(10,'**********',,1),
               FIELD=(5,1,HE,11),FIELD=(1,'=',,16)
        EXITS  INHDR=ROUT1,OUTTLR=ROUT2
       LABELS  DATA=INPUT
       RECORD  LABELS=2
 
  (premier enregistrement de label d'en-tête)
  (second enregistrement de label d'en-tête)
 
       RECORD   LABELS=2
 
  (premier enregistrement de label d'en-queue)
  (second enregistrement de label d'en-queue)

/*

Les instructions de contrôle sont les suivantes :

  • SYSUT1 DD définit le jeu de données d’entrée séquentiel (OLDSET).
    L’ensemble de données a été initialement écrit en tant que troisième ensemble de données sur un volume de bande.
  • SYSUT2 DD définit le jeu de données de sortie séquentiel (NEWSET).
    L’ensemble de données est écrit en tant que premier ensemble de données sur un volume de bande.
    Les enregistrements de sortie sont bloqués pour réduire l’espace requis par l’ensemble de données et pour réduire le temps d’accès requis lorsque l’ensemble de données est ensuite consulté.
    Le paramètre BLKSIZE est omis afin que le système calcule une valeur optimale inférieure ou égale à 32,760 octets à moins que le programmeur système ne définisse la valeur par défaut différemment.
    L’ensemble de données est transmis à une étape de tâche suivante. Le LABEL=(,SUL) est obligatoire en raison des libellés utilisateur créés.
  • SYSIN DD définit l’ensemble de données de contrôle, qui suit dans le flux d’entrée.
  • GENERATE indique qu’un maximum de trois paramètres FIELD est inclus dans les instructions RECORD suivantes et qu’un maximum de 11 caractères littéraux sont inclus dans les paramètres FIELD suivants.
  • La première instruction RECORD contrôle l’édition, comme suit : les astérisques sont placés aux positions 1 à 10 ; les positions 1 à 5 de l’enregistrement d’entrée sont converties du mode H-set BCDIC en mode EBCDIC et déplacées vers les positions 11 à 15 ; et un signe égal est placé en position 16.
  • EXITS indique que les routines utilisateur spécifiées nécessitent un contrôle lorsque SYSUT1 est ouvert et lorsque SYSUT2 est fermé.
  • LABELS indique que les étiquettes sont incluses dans le flux d’entrée.
  • La deuxième instruction RECORD indique que les deux enregistrements suivants de SYSIN doivent être écrits en tant qu’étiquettes d’en-tête utilisateur sur SYSUT2.
  • La troisième instruction RECORD indique que les deux enregistrements suivants de SYSIN doivent être écrits en tant qu’étiquettes de fin utilisateur sur SYSUT2.

Exemple 7 : Modification et copie d’un fichier séquentiel z/OS UNIX dans un ensemble de données séquentiel

Dans cet exemple, le fichier az/OS UNIX System Services (z/OS UNIX) est modifié et copié.
La longueur d’enregistrement logique de l’ensemble de données de sortie est inférieure à celle de l’ensemble de données d’entrée.

//DISKDISK JOB  ...
//STEP1    EXEC PGM=IEBGENER
//SYSPRINT DD SYSOUT=A
//SYSUT1 DD PATH='/dist3/stor44/sales.mon',FILEDATA=TEXT,PATHOPTS=ORDONLY,
//          LRECL=100,BLKSIZE=1000,RECFM=FB
//SYSUT2   DD DSNAME=NEWSET,UNIT=disk,DISP=(NEW,KEEP),
//            VOLUME=SER=111113,DCB=(RECFM=FB,LRECL=80,
//            BLKSIZE=640),SPACE=(TRK,(20,10))
//SYSIN    DD *
     GENERATE MAXFLDS=4,MAXGPS=1
        EXITS IOERROR=ERRORRT
GRP1 RECORD IDENT=(8,'FIRSTGRP',1),FIELD=(21,80,,60),FIELD=(59,1,,1)
GRP2 RECORD FIELD=(11,90,,70),FIELD=(69,1,,1)
/*

Les instructions de contrôle sont les suivantes :

  • SYSUT1 DD définit le fichier d’entrée.
    Son nom est /dist3/stor44/sales.mon.
    Il contient du texte dans des enregistrements de 100 octets.
    Le délimiteur d’enregistrement n’est pas indiqué ici.
    Le fichier peut se trouver sur un système non System/390 disponible via NFS (Network File System).
  • SYSUT2 DD définit le jeu de données de sortie (NEWSET).
    Vingt pistes d’espace de stockage primaire et dix pistes d’espace de stockage secondaire sont allouées pour l’ensemble de données sur un volume de disque.
    La longueur d’enregistrement logique des enregistrements de sortie est de 80 octets et la sortie est bloquée.
  • SYSIN DD définit l’ensemble de données de contrôle, qui suit dans le flux d’entrée.
  • GENERATE indique qu’un maximum de quatre paramètres FIELD sont inclus dans les instructions RECORD ultérieures et qu’un paramètre IDENT apparaît dans une instruction RECORD ultérieure.
  • EXITS identifie la routine utilisateur qui gère les erreurs d’entrée/sortie.
  • La première instruction RECORD (GRP1) contrôle l’édition du premier groupe d’enregistrements.
    FIRSTGRP, qui apparaît dans les huit premières positions d’un enregistrement d’entrée, est défini comme étant le dernier enregistrement du premier groupe d’enregistrements.
    Les données des positions 80 à 100 de chaque enregistrement d’entrée sont déplacées vers les positions 60 à 80 de chaque enregistrement de sortie correspondant.
    (Cet exemple implique que les données dans les positions 60 à 79 des enregistrements d’entrée dans le premier groupe d’enregistrements ne sont plus nécessaires ; ainsi, la longueur de l’enregistrement logique est raccourcie de 20 octets.)
    Les données dans les positions restantes dans chaque enregistrement d’entrée sont transféré directement vers les enregistrements de sortie, comme spécifié dans le deuxième paramètre FIELD.
  • La deuxième instruction RECORD (GRP2) indique que le reste des enregistrements d’entrée doit être traité comme le deuxième groupe d’enregistrements.
    Les données des positions 90 à 100 de chaque enregistrement d’entrée sont déplacées vers les positions 70 à 80 des enregistrements de sortie.
    (Cet exemple implique que les données des positions 70 à 89 des enregistrements d’entrée du groupe 2 ne sont plus nécessaires ; ainsi, la longueur de l’enregistrement logique est raccourcie de 20 octets.)
    Les données des positions restantes dans chaque enregistrement d’entrée sont transférées directement aux enregistrements de sortie, comme spécifié dans le deuxième paramètre FIELD.

Exemple 8 : Modifier les données d’un jeu de caractères à deux octets

Dans cet exemple, un jeu de données modifié contenant des données de jeu de caractères à deux octets est créé.
Les caractères Shift-out/shift-in (< et >) sont insérés pour entourer les chaînes DBCS.

Les instructions de contrôle sont les suivantes :

  • SYSUT1 DD définit l’ensemble de données d’entrée, INPUT, qui réside sur un volume de disque.
  • SYSUT2 DD définit l’ensemble de données de sortie, OUTPUT, qui résidera 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.
  • GENERATE indique qu’un maximum de quatre paramètres FIELD et de neuf caractères littéraux apparaîtront dans les instructions RECORD suivantes et que l’ensemble de données d’entrée contient des données DBCS.
  • RECORD spécifie comment les enregistrements d’entrée seront modifiés avant d’être placés dans l’ensemble de données de sortie.
    Le premier paramètre FIELD indique que les 20 premières positions (octets) des enregistrements d’entrée doivent être placées dans les 20 premières positions des enregistrements de sortie.
  • Le deuxième paramètre FIELD indique que les données des positions 33 à 48 doivent être vérifiées pour s’assurer qu’elles sont des données DBCS valides et que les caractères de décalage sortant/d’entrée
    doivent être insérés autour de ce champ.
    Pour que les données DBCS soient valides, chaque octet des caractères à 2 octets doit avoir une valeur hexadécimale comprise entre X’41’ et X’FE’, ou le caractère à 2 octets doit être un espace DBCS (X’4040′).
    Une fois la vérification et l’insertion terminées, ce champ doit être copié dans les enregistrements de sortie à partir de la position 21.
  • Le troisième paramètre FIELD agit sur le champ de 30 octets commençant à la position 50 dans les enregistrements d’entrée.
    Ce champ est vérifié pour les données DBCS valides, et les caractères de décalage sortant/décalage sont insérés autour du champ.
    Le champ résultant est copié dans les enregistrements de sortie à partir de la position 39.

Notez qu’en spécifiant les emplacements de sortie dans le paramètre FIELD, vous devez tenir compte des positions supplémentaires que les caractères SO/SI utiliseront.
Par exemple, la chaîne DBCS de huit caractères (16 octets) commençant à la position 21 ne se termine pas à la position 36, mais à la 38.
Les caractères SO/SI sont des caractères à un octet, de sorte que la paire occupera deux positions.

Le paramètre FIELD final efface les positions finales des enregistrements de sortie avec des astérisques.

JCL – IEBEDIT

Ces exemples montrent certaines des utilisations d’IEBEDIT.
Vous pouvez utiliser le tableau 1 comme guide de référence rapide.

Tableau 1. Répertoire d’exemple IEBEDIT

OpérationPériphériqueCommentairesExemple
EDITBandeCopiez un job dans le jeu de données de sortie.Exemple 1 : copie d’un travail
EDITBandeCopie sélectivement les steps de job de chacun des trois jobs.Exemple 2 : copie d’étapes à partir de trois Jobs
EDITDisque et bandeInclut un step de job et exclut step de job d’un autre job.Exemple 3 : Inclure un step de job, exclure un step d’un autre
EDITDisqueCopiez l’instruction JOB pour JOBA, le step de job STEPF et tous les steps qui suivent.Exemple 4 : Copier l’instruction pour JOBA et JOB STEPF
EDITBandeCopie l’intégralité de l’ensemble de données d’entrée. L’enregistrement ..* est converti en une instruction /* dans l’ensemble de données de sortie.Exemple 5 : Copier l’intégralité de l’ensemble de données d’entrée
EDITBandeCopie l’intégralité de l’ensemble de données d’entrée, y compris les instructions de contrôle JES2.Exemple 6 : copier l’ensemble de données pour inclure un nouveau délimiteur

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.

EXEMPLE

Exemple 1 : Copier un job

Dans cet exemple, un job (JOBA), y compris toutes ses steps, est copié dans l’ensemble de données de sortie.
L’ensemble de données d’entrée contient trois jobs : JOBA, JOBB et JOBC.

//EDIT1    JOB  ...
//STEP1    EXEC PGM=IEBEDIT
//SYSPRINT DD  SYSOUT=A
//SYSUT1   DD  DSNAME=INJOBS,UNIT=tape,
//             DISP=(OLD,KEEP),VOL=SER=001234
//SYSUT2   DD  DSNAME=OUTTAPE,UNIT=tape,DISP=(NEW,KEEP),
//             VOL=SER=001235,DCB=(RECFM=FB,LRECL=80,BLKSIZE=80),
//SYSIN    DD  *
         EDIT  START=JOBA
/*

Les instructions de contrôle sont les suivantes :

  • SYSUT1 DD définit le jeu de données d’entrée, INJOBS.
    L’ensemble de données réside sur un volume de bande étiqueté standard (001234).
  • SYSUT2 DD définit le jeu de données de sortie, appelé OUTTAPE.
    L’ensemble de données doit résider en tant que premier ensemble de données sur un volume de bande étiqueté standard (001235).
    Le système sélectionnera une taille de bloc optimale.
  • SYSIN DD définit l’ensemble de données de contrôle, qui suit dans le flux d’entrée.
  • EDIT indique que JOBA doit être copié dans son intégralité.

Exemple 2 : Copier les étapes de trois jobs

Cet exemple copie les step de job de chacun des trois jobs.
L’ensemble de données d’entrée contient trois jobs : JOBA, qui comprend STEPA, STEPB, STEPC et STEPD ; JOBB, qui comprend STEPE, STEPF et STEPG ; et JOBC, qui comprend STEPH et STEPJ.

//EDIT2    JOB  ...
//STEP1    EXEC PGM=IEBEDIT
//SYSPRINT DD  SYSOUT=A
//SYSUT1   DD  DSN=INJOBS,DISP=(OLD,KEEP),VOLUME=SER=001234,
//             UNIT=tape
//SYSUT2   DD  DSN=OUTSTRM,UNIT=tape,DISP=(NEW,KEEP),
//             DCB=(RECFM=F,LRECL=80,BLKSIZE=80),LABEL=(2,SL)
//SYSIN    DD  *
       EDIT   START=JOBA,TYPE=INCLUDE,STEPNAME=(STEPC,STEPD)
       EDIT   START=JOBB,TYPE=INCLUDE,STEPNAME=STEPE
       EDIT   START=JOBC,TYPE=INCLUDE,STEPNAME=STEPJ
/*

Les instructions de contrôle sont les suivantes :

  • SYSUT1 DD définit le jeu de données d’entrée, INJOBS.
    L’ensemble de données réside sur un volume de bande étiqueté standard (001234).
  • SYSUT2 DD définit le jeu de données de sortie, OUTSTRM.
    L’ensemble de données doit résider en tant que deuxième ensemble de données sur un volume de bande étiqueté standard (001235).
    La taille de bloc courte est très inefficace.
  • SYSIN DD définit l’ensemble de données de contrôle, qui suit dans le flux d’entrée.
  • Les instructions EDIT copient les instructions JOB et les étapes de travail décrites comme suit :
    1. L’instruction JOB et les étapes STEPC et STEPD pour JOBA.
    2. L’instruction JOB et STEPE pour JOBB.
    3. L’instruction JOB et STEPJ pour JOBC.

Exemple 3 : inclure le step d’un job, exclure le step d’un autre

Cet exemple inclut une étape de travail d’un travail et exclut une étape de travail d’un autre travail.
L’ensemble de données d’entrée contient trois travaux : JOBA, qui comprend STEPA, STEPB, STEPC et STEPD ; JOBB, qui comprend STEPE, STEPF et STEPG ; et JOBC, qui comprend STEPH et STEPJ.

//EDIT3    JOB  ...
//STEP1    EXEC PGM=IEBEDIT
//SYSPRINT DD  SYSOUT=A
//SYSUT1   DD  DSNAME=INSET,UNIT=disk,DISP=(OLD,KEEP),
//             VOLUME=SER=111111
//SYSUT2   DD  DSNAME=OUTTAPE,UNIT=tape,LABEL=(,NL),
//             DCB=(DEN=2,RECFM=FB,LRECL=80,BLKSIZE=8160),
//             DISP=(,KEEP)
//SYSIN    DD  *
       EDIT    START=JOBB,TYPE=INCLUDE,STEPNAME=(STEPF-STEPG)
       EDIT    START=JOBC,TYPE=EXCLUDE,STEPNAME=STEPJ
/*

Les instructions de contrôle sont les suivantes :

  • SYSUT1 DD définit le jeu de données d’entrée, INSET. L’ensemble de données réside sur un volume de disque (111111).
  • SYSUT2 DD définit le jeu de données de sortie, OUTTAPE.
    L’ensemble de données doit résider en tant que premier ou unique ensemble de données sur un volume de bande sans étiquette (800 bits par pouce).
  • SYSIN DD définit l’ensemble de données de contrôle, qui suit dans le flux d’entrée.
  • Les instructions EDIT copient les instructions JOB et les étapes de travail comme suit :
    1. L’instruction JOB et les step STEPF et STEPG pour JOBB.
    2. L’instruction JOB et STEPH, à l’exception de STEPJ, pour JOBC.

Exemple 4 : Copier l’instruction pour JOBA et JOB STEPF

Cet exemple copie l’instruction JOB pour JOBA, le step de job STEPF et tous les steps qui la suivent.
L’ensemble de données d’entrée contient un job (JOBA), qui inclut STEPA à STEPL.
Les steps de job STEPA à STEPE ne sont pas incluses dans le jeu de données de sortie.

//EDIT4    JOB  ...
//STEP1    EXEC PGM=IEBEDIT
//SYSPRINT DD  SYSOUT=A
//SYSUT1   DD  DSNAME=INSTREAM,UNIT=disk,
//             DISP=(OLD,KEEP),VOLUME=SER=111111
//SYSUT2   DD  DSNAME=OUTSTREM,UNIT=disk,
//             DISP=(,KEEP),VOLUME=SER=222222,SPACE=(TRK,2)
//             DCB=(RECFM=FB,LRECL=80,BLKSIZE=24000),
//SYSIN    DD  *
         EDIT  START=JOBA,TYPE=POSITION,STEPNAME=STEPF
/*

Les instructions de contrôle sont les suivantes :

  • SYSUT1 DD définit le jeu de données d’entrée, INSTREAM.
    L’ensemble de données réside sur un volume de disque (111111).
  • SYSUT2 DD définit le jeu de données de sortie, OUTSTREAM.
    L’ensemble de données doit résider sur un volume de disque (222222).
    Deux pistes sont affectées au jeu de données de sortie.
  • SYSIN DD définit l’ensemble de données de contrôle, qui suit dans le flux d’entrée.
  • EDIT copie l’instruction JOB pour JOBA et les étapes de travail STEPF à STEPL.

Exemple 5 : Copier l’intégralité de l’ensemble de données d’entrée

Cet exemple copie l’intégralité du jeu de données d’entrée.
L’enregistrement contenant les caractères ..* dans les colonnes 1 à 3 est converti en une instruction /* dans le jeu de données de sortie.

//EDIT5    JOB  ...
//STEP1    EXEC PGM=IEBEDIT
//SYSPRINT DD  SYSOUT=A
//SYSUT2   DD  DSNAME=OUTTAPE,UNIT=tape,
//             VOLUME=SER=001234,DISP=(NEW,KEEP),
//             DCB=(RECFM=F,LRECL=80,BLKSIZE=80)
//SYSIN    DD  DUMMY
//SYSUT1   DD  DATA
//BLDGDGIX JOB ...
//         EXEC PGM=IEHPROGM
//SYSPRINT DD  SYSOUT=A
//DD1      DD  UNIT=disk,VOLUME=SER=111111,DISP=OLD
//SYSIN    DD  *
         BLDG   SCRATCH VTOC,VOL=3390=111111
..*
/*

Les instructions de contrôle sont les suivantes :

  • SYSUT2 DD définit le jeu de données de sortie, OUTTAPE.
    L’ensemble de données sera le premier ensemble de données sur un volume de bande (001234).
  • SYSIN DD définit un jeu de données de contrôle factice.
  • SYSUT1 DD définit le jeu de données d’entrée, qui suit dans le flux d’entrée.
    Le travail est arrêté lorsque l’instruction /* est rencontrée.
    (SYSUT1 inclut donc l’instruction DELETE JOB, l’instruction EXEC, les instructions SYSPRINT, DD1 et SYSIN DD.)

Exemple 6 : Copier l’intégralité de l’ensemble de données pour inclure un nouveau délimiteur

Cet exemple copie l’intégralité du jeu de données d’entrée, y compris l’instruction de contrôle JES2, car un nouveau délimiteur (JP) a été codé.
Sinon, le /* dans l’instruction de contrôle JES2 aurait arrêté l’entrée.

//EDIT6    JOB  ...
//STEP1    EXEC PGM=IEBEDIT
//SYSPRINT DD  SYSOUT=A
//SYSUT2   DD  DSN=TAPEOUT,UNIT=tape,
//             VOL=SER=001234,LABEL=(,SL),DISP=(NEW,KEEP)
//             DCB=(RECFM=FB,LRECL=80,BLKSIZE=800),
//SYSIN    DD  DUMMY
//SYSUT1   DD  DATA,DLM=JP
//LISTVTOC JOB ...
/*MESSAGE  JOB NEEDS VOLUME 338000
//FSTEP    EXEC PGM=IEHLIST
//SYSPRINT DD  SYSOUT=A
//DD2      DD  UNIT=disk,VOL=SER=338000,DISP=OLD
//SYSIN    DD  *
    LISTVTOC FORMAT,VOL=disk=338000
/*

Les instructions de contrôle sont les suivantes :

  • SYSUT2 DD définit le jeu de données de sortie, TAPEOUT.
    L’ensemble de données sera le premier ensemble de données sur un volume de bande d’étiquettes standard (001234).
  • SYSIN DD définit un jeu de données de contrôle factice.
  • SYSUT1 DD définit le jeu de données d’entrée, qui suit dans le flux d’entrée.
    Le paramètre DLM définit les caractères JP pour agir comme un délimiteur pour les données d’entrée.
  • IEBEDIT copie l’instruction JOB via l’instruction /* (y compris les instructions de travail LISTVTOC et MESSAGE, l’instruction FSTEP EXEC et les instructions SYSPRINT, DD2 et SYSIN DD).

JCL – IEBDG

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

Tableau 1. Répertoire d’exemples IEBDG

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

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

EXEMPLE

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

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

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

Les instructions de contrôle sont les suivantes :

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

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

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

Les instructions de contrôle sont les suivantes :

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

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

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

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

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

Les instructions de contrôle sont les suivantes :

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

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

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

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

Les instructions de contrôle sont les suivantes :

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

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

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

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

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

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

Les instructions de contrôle sont les suivantes :

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

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

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

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

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

Les instructions de contrôle sont les suivantes :

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

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).

JCL – Remplacement des objets programme

Si l’option de remplacement (R) est indiquée sur le paramètre INDD :

  • Les membres de l’ensemble de données de sortie et leurs alias seront remplacés s’ils ont les mêmes noms de membre et d’alias que les membres et les alias de l’ensemble de données d’entrée.
    Exemple :
    L’ensemble de données d’entrée a le membre A avec l’alias B ; l’ensemble de données de sortie a le membre A avec l’alias B.
    Le membre et l’alias de l’ensemble de données d’entrée remplaceront le membre et l’alias de l’ensemble de données de sortie.
  • La copie échouera si l’alias d’un membre dans les données de sortie est le même que l’alias d’un membre nommé différemment dans l’ensemble de données d’entrée.
    Exemple :
    L’ensemble de données d’entrée a le membre A avec l’alias B ; l’ensemble de données de sortie a le membre C avec l’alias B.
    La copie échouera car l’alias B pointe vers un membre avec un nom différent sur l’ensemble de données de sortie.
  • Si les membres et les alias de l’ensemble de données de sortie ne correspondent pas aux membres et aux alias de l’ensemble de données d’entrée, tous les membres et alias de l’ensemble de données d’entrée sont copiés.
    Exemple :
    L’ensemble de données d’entrée a le membre A avec l’alias B ; l’ensemble de données de sortie a le membre C avec l’alias D.
    Après la copie, l’ensemble de données de sortie contiendra A avec l’alias B et C avec l’alias D.

L’instruction EXCLUDE n’est pas prise en charge.

JCL – Copie des objets du programme 

Il est recommandé d’utiliser l’instruction COPYGRP ou COPYGROUP pour copier des modules de chargement PDS ou des objets de programme PDSE et leurs alias depuis ou vers un ensemble de données PDSE.
Les objets programme peuvent avoir des alias de plus de huit caractères.
L’utilisation de l’instruction COPYGRP ou COPYGROUP garantit que ces alias plus longs sont copiés avec leur membre.

Utilisez l’instruction COPYGRP ou COPYGROUP pour commencer une copie, un déchargement ou un chargement de groupe.
Un groupe se compose d’un membre et de tous ses alias. COPYGRP ou COPYGROUP traite le groupe comme une seule entité.

COPYGRP peut être utilisé pour copier un ensemble de données lorsque l’ensemble de données d’entrée ou l’ensemble de données de sortie, ou les deux, sont PDSE :
– PDSE vers PDSE 
– PDSE vers PDS
– PDS vers PDSE

COPYGROUP peut être utilisé pour copier un ensemble de données lorsque l’ensemble de données d’entrée ou l’ensemble de données de sortie, ou les deux, sont PDS ou PDSE :
– PDSE vers PDSE
– PDSE vers PDS
– PDS vers PDSE
– PDS vers PDS

Pour décharger des groupes :

  • Utilisation de COPYGRP : PDSE vers PS
  • Utilisation de COPYGROUP : PDSE vers PS ou PDS vers PS

Pour charger des groupes :

  • Utilisation de COPYGRP : PS vers PDSE 
  • Utilisation de COPYGROUP : PS vers PDSE ou PS vers PDS

Si aucun ensemble de données n’est un PDSE, la demande est traitée comme une opération COPY soumise aux exigences de syntaxe de COPYGRP.

Lors de l’utilisation de l’instruction COPYGRP ou COPYGROUP :

  • Tous les alias d’un groupe seront copiés avec le membre ou ni les alias ni le membre d’un groupe ne seront copiés.
  • Il ne peut y avoir qu’un seul INDD par opération de copie.
  • Vous pouvez utiliser l’instruction SELECT pour copier sélectivement des membres.
    Le nom du membre ou un alias peut être spécifié pour copier le membre et tous ses alias.
  • N’indiquez pas de remplacement (R) sur l’instruction SELECT.
  • L’instruction EXCLUDE n’est pas prise en charge.

JCL – IEBCOMPR

Les exemples du tableau 1 illustrent certaines des utilisations d’IEBCOMPR.
Les nombres dans la colonne Exemple font référence aux exemples qui suivent.
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.

Tableau 1. Répertoire d’exemple IEBCOMPR

Opération
Organisation du jeu de donnéesPériphériqueCommentairesExemple
COMPARESéquentielCassette 9 pistes Aucune routine utilisateur.
Entrée bloquée.
Exemple 1 : Comparer des ensembles de
données résidant sur bande
COMPARESéquentielCassette 7 pistesAucune routine utilisateur.
Entrée bloquée.
Exemple 2 : Comparer des ensembles de données séquentielles résidant sur bande
COMPARESéquentielBande 7 pistes et bande 9 pistes Routines utilisateur.
Entrée bloquée.
Bandes de différentes densités.
Exemple 3 : Comparer des ensembles de données séquentielles écrites à différentes densités
COMPARESéquentielFlux d’ entrée système
Bande 9 pistes
Aucune routine utilisateur.
Entrée bloquée.
Exemple 4 : Comparer des ensembles de données séquentielles : flux d’entrée et entrée de bande
COPY (avec IEBGENER) et COMPARESéquentielDisque ou bandeAucune routine utilisateur.
Entrée bloquée.
Deux étapes de travail ; les ensembles de données sont transmis à la deuxième étape du travail.
Exemple 5 : copier et comparer un ensemble de données séquentielles en deux steps de job
COMPAREpartitionné
DisqueAucune routine utilisateur.
Entrée bloquée.
Exemple 6 : Comparer deux ensembles de données partitionnés
COPY (avec IEBCOPY) et COMPAREpartitionnéDisqueRoutine utilisateur.
Entrée bloquée.
Deux étapes de travail ; les ensembles de données sont transmis à la deuxième étape du travail.
Exemple 7 : Copier et comparer un ensemble de données partitionnées en deux steps de job
COMPAREPDSE
DisqueAucune routine utilisateur.
Ensembles de données gérés par SMS.
Exemple 8 : Comparer deux PDSE

EXEMPLE

Exemple 1 : Comparer des ensembles de données résidant sur bande

Dans cet exemple, deux ensembles de données séquentielles résidant sur des volumes de bande à 9 pistes sont comparés.

//TAPETAPE JOB  ...
//         EXEC PGM=IEBCOMPR
//SYSPRINT DD  SYSOUT=A
//SYSUT1   DD  DSNAME=SET1,UNIT=tape,LABEL=(,NL),
//             DCB=(RECFM=FB,LRECL=80,BLKSIZE=2000),
//             DISP=(OLD,KEEP),VOLUME=SER=001234
//SYSUT2   DD  DSNAME=SET2,UNIT=tape,LABEL=(,NL),
//             DCB=(RECFM=FB,LRECL=80,BLKSIZE=1040),
//             DISP=(OLD,KEEP),VOLUME=SER=001235
//SYSIN    DD  DUMMY
/*

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

  • SYSUT1 DD définit un ensemble de données d’entrée (SET1), qui réside sur un volume de bande 9 pistes sans étiquette.
  • SYSUT2 DD définit un ensemble de données d’entrée (SET2), qui réside sur un volume de bande 9 pistes sans étiquette.
  • SYSIN DD définit un jeu de données factice.
    Étant donné qu’aucune routine utilisateur n’est utilisée et que les ensembles de données d’entrée ont une organisation séquentielle, les instructions de contrôle de l’utilitaire ne sont pas nécessaires.

Exemple 2 : Comparer des ensembles de données séquentielles résidant sur bande

Dans cet exemple, deux ensembles de données séquentielles résidant sur des volumes de bande à 7 pistes sont comparés.

//TAPETAPE JOB  ...
//         EXEC PGM=IEBCOMPR
//SYSPRINT DD  SYSOUT=A
//SYSUT1   DD  DSNAME=SET1,LABEL=(2,SUL),DISP=(OLD,KEEP),
//             VOL=SER=001234,DCB=(DEN=2,RECFM=FB,LRECL=80,
//             BLKSIZE=2000,TRTCH=C),UNIT=tape
//SYSUT2   DD  DSNAME=SET2,LABEL=(,SUL),DISP=(OLD,KEEP),
//             VOL=SER=001235,DCB=(DEN=2,RECFM=FB,LRECL=80,
//             BLKSIZE=2000,TRTCH=C),UNIT=tape
//SYSIN    DD  *
        COMPARE  TYPORG=PS
         LABELS  DATA=ONLY
/*

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

  • SYSUT1 DD définit un ensemble de données d’entrée, SET1, qui réside sur un volume de bande étiqueté à 7 pistes.
    L’ensemble de données bloqué a été initialement écrit à une densité de 800 bits par pouce (DEN=2) avec le convertisseur de données activé (TRTCH=C).
  • SYSUT2 DD définit un jeu de données d’entrée, SET2, qui est le premier ou le seul jeu de données sur un volume de bande étiqueté à 7 pistes.
    L’ensemble de données bloqué a été initialement écrit à une densité de 800 bits par pouce (DEN=2) avec le convertisseur de données activé (TRTCH=C).
  • SYSIN DD définit l’ensemble de données de contrôle, qui suit dans le flux d’entrée.
  • COMPARE TYPORG=PS spécifie que les ensembles de données d’entrée sont organisés de manière séquentielle.
  • LABELS DATA=ONLY spécifie que les étiquettes d’en-tête utilisateur doivent être traitées comme des données et comparées.
    Toutes les autres étiquettes sur la bande sont ignorées.

Exemple 3 : Comparer des ensembles de données séquentiels écrits à différentes densités

Dans cet exemple, deux ensembles de données séquentielles qui ont été écrites à des densités différentes sur différentes unités de bande sont comparées.

//TAPETAPE JOB  ...
//         EXEC PGM=IEBCOMPR
//SYSPRINT DD  SYSOUT=A
//SYSUT1   DD  DSNAME=SET1,LABEL=(,SUL),DISP=(OLD,KEEP),
//             VOL=SER=001234,DCB=(DEN=1,RECFM=FB,LRECL=80,
//             BLKSIZE=320,TRTCH=C),UNIT=tape
//SYSUT2   DD  DSNAME=SET2,LABEL=(,SUL),DISP=(OLD,KEEP),
//             DCB=(RECFM=FB,LRECL=80,BLKSIZE=640),
//             UNIT=tape,VOLUME=SER=001235
//SYSIN    DD  *
        COMPARE  TYPORG=PS
          EXITS  INHDR=HDRS,INTLR=TLRS
         LABELS  DATA=NO
/*

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

  • SYSUT1 DD définit un jeu de données d’entrée, SET1, qui est le premier ou le seul jeu de données sur un volume de bande étiqueté à 7 pistes.
    L’ensemble de données bloqué a été initialement écrit à une densité de 556 bits par pouce (DEN=1) avec le convertisseur de données activé (TRTCH=C).
  • SYSUT2 DD définit un ensemble de données d’entrée, SET2, qui est le premier ou le seul ensemble de données bloquées sur un volume de bande étiqueté.
    Dans cet exemple, supposons que SYSUT2 se trouve sur un lecteur de bande à 9 pistes.
  • SYSIN DD définit l’ensemble de données de contrôle, qui suit dans le flux d’entrée.
  • COMPARE TYPORG=PS spécifie que les ensembles de données d’entrée sont organisés de manière séquentielle.
  • EXITS identifie les noms des routines à utiliser pour traiter les étiquettes d’en-tête d’entrée utilisateur et les étiquettes de fin.
  • LABELS DATA=NO spécifie que les étiquettes d’en-tête et de fin d’entrée utilisateur pour chaque ensemble de données ne doivent pas être comparées.

Exemple 4 : Comparer des ensembles de données séquentiels – Flux d’entrée et entrée de bande

Dans cet exemple, deux ensembles de données séquentiels (flux d’entrée et bande) sont comparés.

//CARDTAPE JOB  ...
//         EXEC PGM=IEBCOMPR
//SYSPRINT DD  SYSOUT=A
//SYSIN    DD  DUMMY
//SYSUT2   DD  UNIT=tape,VOLUME=SER=001234,LABEL=(,NL),
//             DCB=(RECFM=FB,LRECL=80,BLKSIZE=2000),
//             DISP=(OLD,KEEP)
//SYSUT1   DD  DATA
 
  (jeu de données d'entrée)
 
/*

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

  • SYSIN DD définit un jeu de données de contrôle factice.
    Étant donné qu’aucune routine utilisateur n’est fournie et que les ensembles de données d’entrée sont séquentiels, les instructions de contrôle de l’utilitaire ne sont pas nécessaires.
  • SYSUT2 DD définit un ensemble de données d’entrée, qui réside sur un volume de bande sans étiquette.
  • SYSUT1 DD définit un ensemble de données de flux d’entrée système.

Exemple 5 : Copier et comparer un jeu de données séquentiel en deux step de job

Dans cet exemple, un jeu de données séquentiel sur disque ou sur bande est copié et comparé en deux step de job.

//TAPETAPE JOB  ...
//STEPA    EXEC PGM=IEBGENER
//SYSPRINT DD  SYSOUT=A
//SYSUT1   DD  DSN=WAREHOUS.COPYSET1,DISP=(OLD,PASS),
//SYSUT2   DD  DSNAME=WAREHOUS.COPYSET2,DISP=(,PASS),LABEL=(,SL),
//             DCB=(RECFM=FB,LRECL=80,BLKSIZE=640),
//             UNIT=tape,VOLUME=SER=001235
//SYSIN    DD  DUMMY
//STEPB    EXEC PGM=IEBCOMPR
//SYSPRINT DD  SYSOUT=A
//SYSUT1   DD  DSNAME=*.STEPA.SYSUT1,DISP=(OLD,KEEP)
//SYSUT2   DD  DSNAME=*.STEPA.SYSUT2,DISP=(OLD,KEEP)
//SYSIN    DD  DUMMY

Le premier step de job copie l’ensemble de données et transmet les ensembles de données d’origine et copiés au deuxième step de job.
Le deuxième step de job compare les deux ensembles de données.

Les instructions de contrôle pour le step de job IEBCOMPR sont présentées comme suit :

  • SYSUT1 DD définit un ensemble de données d’entrée transmis à partir du step de job précédent (COPYSET1).
    L’ensemble de données réside sur un volume de bande étiqueté.
  • SYSUT2 DD définit un ensemble de données d’entrée transmis à partir du step de job précédent (COPYSET2).
    L’ensemble de données, qui a été créé au step de job précédent, réside sur un volume de bande étiqueté.
  • SYSIN DD définit un jeu de données de contrôle factice.
    Etant donné que l’entrée est séquentielle et qu’aucun exit utilisateur n’est fourni, aucune instruction de contrôle d’utilitaire n’est requise.

Exemple 6 : Comparer deux ensembles de données partitionnés

Dans cet exemple, deux ensembles de données partitionnés sont comparés.

//DISKDISK JOB  ...
//STEP1    EXEC PGM=IEBCOMPR
//SYSPRINT DD  SYSOUT=A
//SYSUT1   DD  DSNAME=PDSSET1,UNIT=disk,DISP=SHR,
//             DCB=(RECFM=FB,LRECL=80,BLKSIZE=2000),
//             VOLUME=SER=111112
//SYSUT2   DD  DSNAME=PDSSET2,UNIT=disk,DISP=SHR,
//             DCB=(RECFM=FB,LRECL=80,BLKSIZE=2000),
//             VOLUME=SER=111113
//SYSIN    DD  *
      COMPARE  TYPORG=PO
/*

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

  • SYSUT1 DD définit un ensemble de données partitionnées en entrée, PDSSET1.
    L’ensemble de données bloqué réside sur un volume de disque.
  • SYSUT2 DD définit un ensemble de données partitionnées en entrée, PDSSET2.
    L’ensemble de données bloqué 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.
  • COMPARE TYPORG=PO indique que les ensembles de données d’entrée sont partitionnés.

Exemple 7 : Copier et comparer un ensemble de données partitionné en deux step de job

Dans cet exemple, un ensemble de données partitionné est copié et comparé en deux step de job.

//DISKDISK JOB  ...
//STEPA    EXEC PGM=IEBCOPY
//SYSPRINT DD  SYSOUT=A
//SYSUT1   DD  DSNAME=MAINDB.LOG.OLDSET,DISP=SHR
//SYSUT2   DD  DSNAME=NEWMEMS,UNIT=disk,DISP=(,PASS),
//             VOLUME=SER=111113,SPACE=(TRK,(5,5,5)),
//             DCB=(RECFM=FB,LRECL=80,BLKSIZE=640)
//SYSUT3   DD  UNIT=SYSDA,SPACE=(TRK,(1))
//SYSUT4   DD  UNIT=SYSDA,SPACE=(TRK,(1))
//SYSIN    DD  *
       COPY OUTDD=SYSUT2,INDD=SYSUT1
       SELECT MEMBER=(A,B,D,E,F)
/*
//STEPB    EXEC PGM=IEBCOMPR
//SYSPRINT DD  SYSOUT=A
//SYSUT1   DD  DSNAME=OLDSET,DISP=(OLD,KEEP)
//SYSUT2   DD  DSNAME=NEWMEMS,DISP=(OLD,KEEP)
//SYSIN    DD  *
       COMPARE TYPORG=PO
       EXITS ERROR=SEEERROR
/*

Le premier step de job copie l’ensemble de données et transmet les ensembles de données d’origine et copiés au deuxième step de job.
Le deuxième step de job compare les deux ensembles de données.

Les instructions de contrôle pour l’étape de travail IEBCOMPR sont abordées comme suit :

  • SYSUT1 DD définit un ensemble de données d’entrée bloquées (MAINDB.LOG.OLDSET) transmis à partir du step précédent.
    L’ensemble de données réside sur un volume de disque ou de bande.
  • SYSUT2 DD définit un ensemble de données d’entrée bloquées (MAINDB.LOG.NEWMEMS) transmis à partir du step précédent.
    L’ensemble de données 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.
  • COMPARE TYPORG=PO spécifie une organisation partitionnée.
  • EXITS spécifie qu’une routine d’erreur utilisateur, SEEERROR, doit être utilisée.

Étant donné que les noms des ensembles de données d’entrée ne sont pas identiques, les ensembles de données peuvent être récupérés par leurs noms d’ensemble de données.

Exemple 8 : Comparer deux PDSE

Dans cet exemple, deux PDSE sont comparés.

//DISKDISK  JOB ...
//          EXEC PGM=IEBCOMPR
//SYSPRINT  DD  SYSOUT=A
//SYSUT1    DD  DSN=PDSE1,DISP=SHR
//SYSUT2    DD  DSN=PDSE2,DISP=SHR
//SYSIN     DD  *
            COMPARE TYPORG=PO
/*

Les PDSE ne doivent plus être gérés par SMS.
Étant donné que ces PDSE sont catalogués, vous n’avez pas besoin de spécifier les paramètres UNIT ou VOLUME.

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

  • SYSUT1 DD et SYSUT2 DD définissent les PDSE d’entrée, PDSE1 et PDSE2.
    Étant donné qu’aucune valeur DCB n’est spécifiée, les valeurs DCB qui ont été spécifiées lors de la création des ensembles de données seront utilisées.
  • SYSIN DD définit l’ensemble de données de contrôle, qui suit dans le flux d’entrée.
  • COMPARE TYPORG=PO indique que les ensembles de données d’entrée sont des PDSE.