JCL - Seghiouer Anoir
Transcription
JCL - Seghiouer Anoir
Anoir SEGHIOUER Job Control Language JCL Page 1 de 33 Anoir SEGHIOUER SOMMAIRE Job Control Language ................................................................................................................ 1 Introduction. ........................................................................................................................... 3 1. GENERALITES................................................................................................................. 3 1.1. Description. ................................................................................................................. 3 1.2. Codage......................................................................................................................... 3 2. SYNTAXE GENERALE. .................................................................................................. 4 2.1. Paramètres d'un ordre JCL : ........................................................................................ 5 2.2. Carte suite.................................................................................................................... 5 2.3. Carte Commentaire. .................................................................................................... 6 3. ORDRE JOB. ..................................................................................................................... 6 3.1. Format général : .......................................................................................................... 6 3.2. Description des paramètres. ........................................................................................ 6 4. L'ordre EXEC..................................................................................................................... 8 4.1. Format. ........................................................................................................................ 8 4.2. Description des paramètres. ........................................................................................ 8 5. ORDRE DD ou carte DD. ................................................................................................ 12 5.1. Généralité. ................................................................................................................. 12 5.2. Fichier Carte. ............................................................................................................. 13 5.3. Définition des fichiers magnétique non VSAM. ....................................................... 13 5.3.1 Format. .................................................................................................................... 13 5.3.2. Paramètre................................................................................................................ 13 5.4. Définition des fichiers VSAM................................................................................... 20 5.5. Définir des fichiers SYSAOUT................................................................................. 21 6. DDNAMES SYSTEME. .................................................................................................. 23 6.1. Recherche de programmes pour exécution. .............................................................. 23 6.2. Définition de catalogues............................................................................................ 24 6.3. Edition des messages programmes............................................................................ 25 6.4. Options de DEBUGGING COBOL. ......................................................................... 25 6.5. Edition des DUMPS .................................................................................................. 25 7. CONCATENATION DE FICHIERS............................................................................... 25 8. Carte OUTPUT ................................................................................................................ 26 9. LES PROCEDURES........................................................................................................ 27 9.1. Contenu d’une procédure. ......................................................................................... 27 9.2. Description schématique d’une procédure. ............................................................... 27 9.3. Types de procédures.................................................................................................. 27 9.4. Création d’une procédure. ......................................................................................... 28 9.5. Utilisation d’une procédure. ...................................................................................... 29 9.6. Modification des cartes EXEC.................................................................................. 29 9.7. Modification des cartes DD....................................................................................... 30 9.8. Définition de variables symboliques ......................................................................... 32 Page 2 de 33 Anoir SEGHIOUER Introduction. Le système d'exploitation pilote la machine en optimisant l'utilisation des ressources. Pour cela il doit connaître et avoir pour chaque travail à exécuter tous les paramètres qui les définissent. Ici en vas présenter un des langage qui permet cela pour le grands système, c'est les membres JCL (Job Control Langage) qui lui défini ces paramètres. Il permet la communication entre l'utilisateur et le système MVS par un ensemble de commande présenter dans l'anciens temps par des cartes perforer. Cela étant actuellement Obsolète, il sufi d'écrire un membre PDS dans une bibliothèque et le soumettre. Dans la suite je décrirais les ordres de communication du JCL. 1. GENERALITES. 1.1. Description. Un JCL ce compose d'un certain nombre d'ordres qui on un but de : 1. Soumettre au système un travail, c'est-à-dire un ensemble de programmes à exécuter. L'ordre utilisé pour cela est : JOB 2. Donnée le nom du programme à exécuter, ou la procédure à appeler, EXEC 3. Définir l'ensemble des données associées aux programmes du traitement demander a être exécuter, DD. L'ensemble des ordres de contrôle sont soumis à une syntaxe qu'il faut respecter sous peine de voir un refus d'exécution et envoie d'un message JOB NOT RUN – JCL ERROR. L'exécution d'un JCL est séquentielle, les ordres de contrôle doivent être précisées dans un ordre déterminé à l'intérieur du JOB, et cela étape par étape. Ces étapes seront respectueux des condition coder par l'utilisateur. Les JOB sont indépendant dans leurs soumissions. 1.2. Codage. Un JCL ce compose principalement d'ordre décrit précédemment: En première ligne un ordre JOB une seul par JCL(membre PDS). Une succession d'ordre EXEC. Il doit être suivie par des ordres DD pour spécifier l'ensemble des composants (fichier entrer, fichier de sortie, Sysin, compte rendu d'exec, fichier de display …) La présence d'une carte fin n'est pas obligatoire. Dans le tableau qui suit un récapitulatif des ordres est présenté. Nom de la carte COMMAND CNTL/ENDCNTL Paramètres définis Indique la commande MVS ou JES2 à effectuer lors de l'exécution du JCL (depuis MVS/ESA SP4) Marque début/la fin du ou des paramètres de contrôle pour un sous-système d'impression. Page 3 de 33 Anoir SEGHIOUER Nom logique d'un fichier, nom physique, utilisateur(création, lecture, modification, suppression..), type de support (bande,disque), identification du support, taille du fichier, caractéristiques intrinsèques (organisation, blocage, taille des enregistrement), labels. Nom de l'étape du JOB, nom du programme à exécuter, EXEC paramètres à passer au programme, taille mémoire à allouer, conditions d'exécution, durée d'exécution de l'étape. IF/THEN/ELSE/ENDIF Permet de Conditionner l'exécution des étapes (depuis MVS/ESA SP4). Spécifie le nom du membre de bibliothèque à inclure dans le JCL. INCLUDE Aucune possibilité de paramétrage (depuis MVS/ESA SP4) Précise la bibliothèque qui contient la procédure ou le groupe JCLLIB d'include que l'on vaut exécuter (depuis MVS/ESA SP4) Nom du JOB, du Programme, ou programmeur, classe JOB d'exécution, classe de sortie, niveau des messages d'erreur, durée d'exécution, conditions de reprise. Options d'impression que le JES utilisera pour les fichier en OUTPUT SYSAOUT. Définit une procédure, permet de donner des valeurs par défaut PROC aux variables. Détermine la fin d'une procédure. PEND Donne des valeurs aux variables qui paramètrent le JCL (depuis SET MVS/ESA SP4) Transmission d'enregistrements d'un système sous JES3 vers un XMIT autre système. Commentaire //* FIN de JCL // Fin de données /* DD 2. SYNTAXE GENERALE. Le fichier JCL a un format sur 80 caractères. Seul les colonnes de 1 à 71 sont utilisé. Chaque carte (ligne du JCL) commence par // en colonne 1 et 2. ----+----1----+----2----+----3----+----4----+----5----+----6----+----7-//USSERA1 JOB (),'AGK9AINT ALIM-COMPTA',CLASS=9,MSGCLASS=T,REGION=0M, // MSGLEVEL=(1,1),NOTIFY=&SYSUID ….. . //STEP1 EXEC PGM1 //FICHIER 1 Zone 1 : Zone 2 : DD DSN=DR0.FCT.BEM.PARMS(PGK9AP0),DISP=SHR, 2 3 ….. . Comment 4 C'est la zone qui identifie le nom de la carte attribué par le programme pour ça reconnaissance. Ce compose de 8 caractères alphanumérique commencent obligatoirement par une lettre Type d'ordre : JOB, EXEC, DD, PROC, PEND. Page 4 de 33 Anoir SEGHIOUER Zone 3 : Zone 4 : La liste des paramètres, séparés par des virgules sans blanc sauf après le dernier. Cette zone est considérée comme étant du commentaire. Dans la carte de l'ordre JOB plusieurs paramètres sont précisé celons les environnements de travail. Elle fini en position 70 par une virgule, et peut être poursuivie dans une deuxième et troisième ligne à partir de la Cologne 9. 2.1. Paramètres d'un ordre JCL : Deux types de paramètres, les positionnels et à mots clés. A. Positionnels : c'est la position de la valeur qui détermine la valeur. Exemple : supposons que le système attend 3 paramètre, A, B et C; dans cette ordre. leur attribue successivement est 693, ABCDRF, HEUR1 Plusieurs cas son possible : Si l'ont veux valoriser que A et C : 393,,HEUR1 Si l'ont veux valoriser que A et B : 393,ABCDRF,, Si l'ont veux valoriser que B et C : ,ABCDRF,HEUR1, Si l'ont veux valoriser A : 693 Si l'ont veux valoriser C : ,,HEUR1 Les paramètres positionnels sont toujours situés en tête d'une chaîne de paramètres, et doivent être codés dans un ordre précis. B. A mot Clé: chaque valeur de paramètre est précédée d'un mot clé désignant le paramètre suivi d'un signe =. Exemple : PGM = EXTRAC1 SPACE=(TRK,(15,5)) 2.2. Carte suite. Il est possible et fréquent que la liste des paramètres ne tienne pas sur une seule carte, dans ce cas on peut la prolonger sur les cartes suivantes. Deux règles doivent être respectées. Si sur une carte, la liste des paramètres n'est pas terminée, le dernier paramètre doit être suivi d'une virgule. Si une carte est la suite des paramètres de la précédente, elle comporte // dans les positions 1 et 2, ni nom ni type pour cette carte le premier paramètre dois commencer entre les cols 4 à 16 comprises. Exemple : ----+----1----+----2----+----3----+----4----+----5 //SORTIE DD DSN=&SYSUID..PGM12.PLACE.P12, // DISP=(,CATLG,), // UNIT=3390,SPACE=(CYL,(50,50),RLSE), // DCB=(RECFM=FB,BLKSIZE=0,LRECL=800) Page 5 de 33 Anoir SEGHIOUER 2.3. Carte Commentaire. En code //* en position 1,2 et 3, ce qui suit col 4 à 71 est considéré comme du commentaire. Cette carte permet d'expliquer de justifier l'utilisation du JOB. Il est conseillé d'ajouter des commentaires quant c'est nécessaire pour comprendre l'ensemble des états du JOB. Cela dans le but de faciliter la maintenance et garder une trace explicative dans des JOB complexe. Dans la suite nous allons introduire les paramètres en détail pour chaque type d'ordre d'un JCL. 3. ORDRE JOB. 3.1. Format général : //nom JOB infos account ,nom programmeur ,CLASS=classe d’éxecution ,MSGCLASS=classe de sortie ,MSGLEVEL=(a,b) ,NOTIFY=userid_TST ,TYPRUN=SCAN/HOLD ,RESTART=nomd’étape ,TIME=(minutes,secondes)/1440 ,ADDRSPC=VIRT/REAL ,REGION=nK ,PRTY=P ,USER=userid-RACF ,GROUP=groupe fichiers RACF ,PASSWORD=mot de passé RACF ,PERFORM=groupe performances SRM ,COND=((code, opération, … 3.2. Description des paramètres. nom : c’est le nom donné au JOB. Il commence en colo3,par un caractère alphabétique, et peut comporter de18 caractères dont 7alphanumérique. Il est fréquent que ça soit forcement le USERID de l’utilisateur qui exécute le JOB. Account : paramètre positionnel. Il s’agit d’un paramètre de comptabilisation, permettant par exemple de calculer le coût de développement d’un programme, d’un projet, etc… Programmeur : Paramètre positionnel. Le nom du programmeur. Max 20 caractères. Mettre entre quottes si caractères spéciaux. CLASS : détermine la classe d’entrée de JOB. Il existe 36 classes numérotées de A à Z et de 0 à 9.Chaque classe est affectée à un groupe de travail ou une catégorie de JOB en fonction de critères spécifiques à l’exploitation. Le Job sera dans cette file d'attente. MSGLEVEL : permet de préciser le niveau de compte rendu d’exécution que l’on veut obtenir. Comporte deux sous paramètres positionnels. MSGLEVEL=(JCL,MESSAGES) JCL : 0 : Seule la carte JOB sera listée. 1 : Toutes les cartes JCL seront éditées, Les procédures appelées seront incluses dans le compte rendu. 2 : Toutes les cartes JCL seront éditées, à l’exclusion des procédures Page 6 de 33 Anoir SEGHIOUER MESSAGES : 0 : Les messages de l’allocator et du terminator ne sont pas édités. Toutes fois si une étape se termine anormalement, les massages sont édités. 1 : Tous les messages sont édités. En général,il est conseillé de demander le maximum de renseignement, même si cela conduit à éditer plusieurs feuilles de comptes-rendus. Cela est obtenu par les valeurs par défaut(1,1) . TIME= : Détermine la durée maximum (en temps CPU, processeur) du JOB pour l’ensemble des étapes. Comporte deux sous paramètres positionnels. TIME=(min,s). min :duré en minute de 0 à 1440. s : durée en seconde de 0 à 60. Exemple : TIME=(5,30) ou TIME=(,10) 10second ou TIME=2 min Si le temps est dépassée, l’étape en cours sera abandonnée et produit un code retour system :S322 PRTY= : détermine la priorité affectée au JOB dans les classes d’entrées et de sortie. Les valeurs possibles vont de 0 à 15, 15 étant la plus haut priorité. La valeur standard par défaut est 5. A noter qu’il n’est pas souhaitable d’utiliser systématiquement des priorités élevées, car cela conduit inéluctablement à un engorgement du système. De plus, il existe des routines développées par l’équipe système qui contrôlent la validité de la priorité en fonction par exemple du nom du Job ou du code affaire. NOTYFY= : permet au système d’avertir l’utilisateur que le job est terminé. Le paramètre est le USERID (identifiant utilisateur) utilisé pour se connecter à TSO. RESTART= : permet de démarrer l’exécution d’un JOB à une autre étape que la première. Cela est parfois utile lorsque l’on exécute plusieurs fois le job et que l’on ne désire pas réexecuter les premières étapes. La valeur se code de la façon suivante : * : Démarrage a la première étape (équivalent à l’absence du paramètre). STEPn : Nom de l’étap où l’on veut démarrer l’exécution (stepname). STEPn.PROCSTEPm : En cas de démarrage dans une procédure, STEPn indique l’étape d’appel et PROCSTEPm le nom de l’étape de la procédure. Exemple : RESTART=* s’exécute depuis le début RESTART=EDIT s’exécute depuis l’étape EDIT RESTART=COMPIL.COB appel de sous JCL. TYPRUN =SCAN : Permet de soumettre le JOB uniquement au contrôle de l'interpréteur, sans allocation ni exécution. Elle permet un contrôle de syntaxe du JCL. PASSWORD : Permet de donner un mot de passe donnant accès à des fichiers protégés par RACF. IL est coder avec le paramètre USER est ce constitue de 1 à 8 caractère alphanumérique. COND= : Permet de donner une ou plusieurs conditions d'arrêt d'un JOB. Le code est un nombre de 0 à 4095 que le système compare avec les codes retours issus des différents STEP. On pourra donner jusqu'à 8 conditions reliées entre elles par une liaison OU. Voir syntaxe de la carte EXEC. Exemple : COND=(8,LE) Exemple de carte JOB : 1----+----1----+----2----+----3----+----4----+----5----+----6----+----7-//A00008T JOB ,'TRI *>',MSGCLASS=T,CLASS=8,MSGLEVEL=T, // NOTIFY=&SYSUID,REGION=0M 2- Page 7 de 33 Anoir SEGHIOUER ----+----1----+----2----+----3----+----4----+----5----+----6----+----7-//A00008UL JOB UNLOAD,'UNL TABTB',MSGCLASS=T,CLASS=0,NOTIFY=A00008, // REGION=4M 3----+----1----+----2----+----3----+----4----+----5----+----6----+----7-//A00008RE JOB (),'TRT PGMTRT2 ',CLASS=9,MSGCLASS=T,REGION=6M, // NOTIFY=&SYSUID Tous les paramètres ne sont pas obligatoire, chaque société a ces condition de contrôle et outil technique qui permet la gestion du travail de qualité. Il est recommander pour définir cette carte de demande un exemple sur le site. 4. L'ordre EXEC. Elle permet d'identifier le programme ou la procédure à exécuter. Limite : un JOB ne peut être constitué de plus de 255 étapes (soit 255 ordre exec). C'est obligatoirement le premier ordre d'un STEP. Elle ce compose de paramètres positionnels et des paramètres à mots-clés. La zone nom de la carte est nécessaire pour faire un référence arrière qu STEP, modifier les paramètres des cartes EXEC et DD dans les procédures cataloguées, effectuer des reprises en début d'étapes ou à un check-point. Pour l'ensemble de ces besoins, il est recommandé de données au différent STEP d'un JOB des noms différents. • Si le programme a exécuté n'est pas trouvé le JOB envois un code retour système ABEND S806 • Si la procédure n'est pas trouvée elle envoie un message PROCEDURE NOT FOUND. 4.1. Format. //NOM EXEC PGM=nom.pgm PROC=nom.pr ou nom procedure ,PARM=valeur ,ADDRSPC=VIRT/REAL ,COND= ((cde,opr) ,(cde,opr,stp) ,(cde,opr,prc.stp),EVEN/ONLY) ,PERFORM=n ,REGION=nk ,TIME=1440/(min,s) 4.2. Description des paramètres. NOM : c'est le nom donné à l'étape par le programmeur. 1 à 8 caractères alphanumériques, le premier étant obligatoirement une lettre. PGM = : Ce paramètre est positionnel; Il est nécessaire pour demander l'exécution du programme. Il s'agit d'un programme compilé antérieurement. Il ce compose de 8 caractère alphanumérique. Le programme est contenu dans une bibliothèque déclarée système d'exploitation et le programme et au format LINK-EDIT. PROC = : Ce paramètre est positionnel. Il est utilisé pour appeler une procédure cataloguée et demander son exécution. Page 8 de 33 Anoir SEGHIOUER Ce n'est pas un paramètre obligatoire. Il suffit, pour appeler une procédure, de fournir simplement son nom. ADDRSPC = : Il est à demander le chargement du programme à exécuter soit en mémoire réelle, soit en mémoire virtuelle. Ordre de priorité du paramètre : Le paramètre ADDRSPC, s'il est codé dans la carte JOB, prime sur les paramètres codés dans une carte EXEC. S’il est codé dans une carte EXEC d'appel de procédure prime sur celui codé dans les cartes EXEC de la procédure. COND = Ce paramètre permet de donner une ou plusieurs conditions de non exécution d'un STEP. Prend la forme suivante COND=(Valeur numérique, opérateur,Nom du step) L'opérateur prend les valeurs suivantes : GT : plus grand que. GE : plus grand ou égal. EQ : égal. NE : non égal. LT : plus petit que. LE : Plus petit ou égal. Fonctionnement : • Le test peut être fait par rapport au résultat de n'importe quelle étape précédente(on ne donne pas de nom d'étape) ou par rapport au résultat d'une étape précise (on donne le nom de l'étape). • Si une des conditions est réalisée, l'étape pour laquelle elle est codifiée n'est pas exécutée et on passe à l'étape suivante. • EVEN et ONLY : sont particuliers dans le sens ou ils font intervenir la notion d'ABEND. L'interprétation doit se faire de la façon suivante: COND=EVEN : Exécuter l'étape même si n'importe quelle étape précédente s'est terminée par un ABEND. COND=ONLY : Exécuter l'étape si et seulement si n'importe quelle étape précédente s'est terminée par un ABEND. Remarque : Si le paramètre COND est fourni dans la carte JOB et dans les cartes EXEC, le système réagit de la façon suivante : Si la condition définie dans la carte JOB est réalisée, il y a arrêt du JOB. Si non, le système teste la condition définie dans la carte EXEC. En fonction du résultat, il initialise ou n'initialise pas l'étape. Exemple 1 : //I000001AS //STEP1 //FICENT1 //FICSOR1 JOB EXEC PGM=PGM1 DD DISP=SHR DD DSN=FIC1 Résultat lors de l'exécution //STEP2 //FICENT2 //FICSOR2 Returne Code = 0 EXEC PGM=PGM2,COND(0,NE) DD DISP=SHR,DSN=FIC1 DD DSN=FIC2 Résultat lors de l'exécution Returne Code = 8 Page 9 de 33 Anoir SEGHIOUER //STEP3 //FICENT3 //FICSOR3 EXEC PGM=PGM3,COND(0,NE,STEP1) DD DISP=SHR,DSN=FIC1 DD DSN=FIC3 Résultat lors de l'exécution //STEP4 //FICENT4 //FICSOR4 Returne Code = 0 EXEC PGM=PGM4,COND(0,NE,STEP2) DD DISP=SHR,DSN=FIC2 DD DSN=FIC4 Le programme PGM1 s'exécute et se termine avec émission d'un code retour à 0. Avant d'initialiser l'étape STEP2, l'initiator teste la condition définie dans la carte EXEC de la façon suivante : • Est-ce que 0 est différent du code retour émis par l'une des étapes précédentes? • Le programme PGM1 ayant émis un code retour égal à 0, la condition n'est pas réalisée et l'étape STEP2 peut s'exécuté. Le programme PGM2 s'exécute et se termine avec émission d'un code retour égal à 8. Avant d'initialiser l'étape STEP3, l'initiator teste la condition définie dans la carte EXEC de la façon suivante : • Est-ce que 0 est différent du code retour émis par l'étape STP1? • Le programme PGM1 ayant émis un code retour égal à 0, la condition n'est pas réalisée et l'étape STEP3 peut s'exécuter. Le programme PGM3 s'exécute et se termine avec émission d'un code retour à 0. Avant d'initialiser l'étape STEP4, l'initiator teste la condition définie dans la carte EXEC de la façon suivante: • Est-ce que 0 est différent du code retour émis par l'étape STEP2. • Le programme PGM2 ayant émis un code retour égal à 8, la condition est réalisée est l'étape STEP4 ne peut être exécuter. Exemple 2 : //I000001AS //STEP1 //FICENT1 //FICSOR1 JOB EXEC PGM=PGM1 DD DISP=SHR DD DSN=FIC1 Résultat lors de l'exécution //STEP2 //FICENT2 //FICSOR2 EXEC PGM=PGM2,COND=ONLY DD DISP=SHR,DSN=FIC1 DD DSN=FIC2 Résultat lors de l'exécution //STEP3 //FICENT3 //FICSOR3 ABEND Returne Code = 8 EXEC PGM=PGM3,COND=(0,NE,STEP1) DD DISP=SHR,DSN=FIC1 DD DSN=FIC3 Résultat lors de l'exécution Returne Code = 0 Page 10 de 33 Anoir SEGHIOUER //STEP4 //FICENT4 //FICSOR4 EXEC PGM=PGM4,COND=((0,NE,STEP2),EVEN) DD DISP=SHR,DSN=FIC2 DD DSN=FIC4 Le programme PGM1 s'exécute et se termine par ABEND. Avant l'initialiser l'étape STEP2, l'initiator teste la condition définie dans la carte EXEC de la façon suivante : • Est-ce l'une des étapes précédentes s'est terminée par ABEND? • Le programme PGM1 est terminé par un ABEND, la condition est réalisée STEP2 peut s'exécuter. Le programme PGM2 s'exécute et se termine avec émission d'un code retour égal à 8. Pour l'initialisation de l'étape STEP3, l'initiator teste la condition définie dans la carte EXEC de la façon suivante : • Étant donné qu'il y a eu ABEND dans une étape précédente et que EVEN ou ONLY ce sont pas spécifiés, l'étape STEP3 ne peut pas s'exécuter. Avant d'initialiser l'étape STEP4, l'initiator teste la condition définie dans la carte EXEC de la façon suivante : • Est-ce que l'étapes précédentes se sont exécutés s'est terminée par un ABEND? (OUI). • Est-ce que le test du code retour est satisfait. (OUI). • Dans ces conditions l'étape STEP4 ne peut pas s'exécuter (voir tableaux suivant). Tableaux récapitulatifs des cas possible avec les opérateurs : DESCRIPTION COND=(code,GT) COND=(code,GE) COND=(code,EQ) COND=(code,LT) COND=(code,LE) COND=(code,NE) Initialiseur étape RC>=code RC >code RC ≠code RC =<code RC <code RC =code Pas d'initialisation de l'étape RC <code RC =<code RC =code RC >code RC>=code RC ≠code Tableaux récapitulatifs des cas possible pour EVEN et ONLY : Spécification de EVEN ou ONLY ? EVEN EVEN EVEN EVEN ONLY ONLY ONLY ONLY NON NON ABEND étapes précédentes? NON NON OUI OUI NON NON OUI OUI NON NON TESTS RC satisfaits NON OUI NON OUI NON OUI NON OUI NON OUI INIT étape OUI NON OUI NON NON NON OUI NON OUI NON Page 11 de 33 Anoir SEGHIOUER NON NON OUI OUI NON OUI NON NON PARM : Ce paramètre permet de passer divers paramètres à un programme. Les paramètres pouvant être passés sont : • Paramètre utilisateur. • Paramètre compilateur et assembleurs. • Les paramètres LINK-EDIT. En ce qui concerne les paramètres utilisateurs, le programmeur doit avoir prévue une zone de réception dans son programme dans la LINKAGE SECTION. Si la valeur du paramètre contient plusieurs expressions séparées par une virgule, il faut la mettre entre parenthèses ou entre apostrophes, ces caractères n'étant pas transmis au programme. Si la valeur contient des caractères spéciaux, elle doivent être mise entre parenthèse ou entre apostrophes. On peut transmettre jusqu'à 100 caractères de paramètres utilisateurs et des paramètres COBOL. PERFORM : Ce paramètre permet d'affecter le STEP à un groupe de performance particulier. Si le paramètre PERFORM est aussi codé dans la carte JOB, il primera sur ceux codés dans les différentes cartes EXEC. Par défaut il le système qui définie le groupe de performance en fonction des paramètre du système. 5. ORDRE DD ou carte DD. 5.1. Généralité. Elle permet de définir pour une étape les fichiers suivants : • Fichiers carte de données. • Fichiers magnétiques non VSAM. • Fichiers VSAM si il est CR22s par IDCAMS. • Fichiers SYSOUTS Elle assure la liaison entre le programme et le fichier physique. Il faut une carte DD par fichier physique. Un programme connaît les fichiers au travers de leur caractéristique logiques : • Organisation du fichier • Structure des enregistrements. Par contre, il ignore leur caractéristique physique : • Nature du support (disque, bande,etc…) • Emplacement sur support • Nom physique du fichier sur le support. Ces détails son spécifiés dans le JCL au niveau de la DD. La liaison entre le fichier logique défini dans le programme et le fichier physique défini dans la carte DD est faite par une Etiquette logique conservée dans le bloc de contrôle et qui doit obligatoirement figurer dans la zone nom de la carte DD. L'étiquette est appelée Nom externe ou DDNAME du fichier. Il ce compose de 8 caractères maximum avec un caractère alphabétique dans le premier caractère. Page 12 de 33 Anoir SEGHIOUER 5.2. Fichier Carte. //DDNAME DD DUMMY * DATA ,DLM=nn Description des paramètres. * : permet d'introduire des données cartes sans les caractères // en colonnes 1 et 2 DATA : permet d'introduire des données cartes comportant // en colonnes 1 et 2(mais pas /*). La fin de fichier doit alors être annoncée par le délimiteur standard /*. DUMMY : Permet d'ignorer les ordres d'entrées / sorties faits sur le fichier. Doit être donné le premier. Exemple : //FICMVT DD * A1230 /* Carte de mouvements //SYSIN DD DATA Procédure à cataloguer /* //FICBLAS DD DATA,DLM=ZZ Données contenant /* /* ZZ 5.3. Définition des fichiers magnétique non VSAM. 5.3.1 Format. //DDNAME DD DUMMY ,DSNAME= ou DSN= ,DISP= ,UNIT= ,VOL= ,SPACE= ,DCB= ,LABEL= 5.3.2. Paramètre 5.3.2.1. DUMMY : Ce paramètre est positionnel de la carte DD. Quand il est codé il doit être le premier. Il demande au système d'ignorer tous les ordres d'entré/sortie faites sur ce fichier. Il n'a pas de sous paramètres. Page 13 de 33 Anoir SEGHIOUER 5.3.2.2. DSNAME = c'est le nom physique du fichier. Pour un fichier en création le système stock ce nom dans les labels du fichier. Pour un fichier en lecture utilise ce nom pour localiser le fichier dans le volume. DSNAME= {nom-fichier} {nom-pds(membre)} {nom-fichier(numérode génération)} {&&nom-fichier} {&&nom-pds(membre)} {*.DDNAME} {*.nom-STEP.DDNAME} {*.nom-step.nom-step-proc.DDNAME} Nom-fichier : ici le nom est fourni qu'il soit sequentiel ou partitionné. Nom-pds(membre) : membre de fichier partitionné. On fournit le nom du PDS suivi, Entre parenthèses, du nom du membre à traité. Nom-fichier (num de génération) : nom d'un fichier GDG suivi, entre parenthèse par le numéro de génération dans le GDG. &&nom-fichier : nom temporaire, séquentiel ou partitionné. Le système génère dans ce cas un nom sous la forme : SYSaajjj.Thhmmss.RA000.nom-job.nom-fichier Aajjj : date de création en année nombre de jour. Hhmmss : heure de création Nom-job : Nom du job figurant dans la zone "nom" de la carte JOB Nom-fichier : nom donné au fichier derrière les caractères "&&" Si on ommet le paramètre DSNAME, le système génére alors un nom sous la forme : SYSaajjj.Thhmmss.RA000.nom-job.Rnnnnnnn Dans le quel 'nnnnnnn' représente le numéro d'ordre de création du fichier dans le JOB. &&nom-pds(membre) : nom d'un membre de fichier partitionné temporaire. *,DDNAME : référence arrière à un nom de fichier contenu dans une carte DD faisant partie du même STEP. *.nom-step.DDNAME : référence arrière a un nom de fichier contenu dans une carte DD faisant partie d'un STEP antérieur dans le même JOB. *.nom-step.nom-step-proc.DDNAME : référence arrière à un nom de fichier contenu dans une carte DD faisant partie d'une étape de procédure cataloguée appelée par une étape antérieur du JOB. Exemple : 1 – définition d'une génération GDG. //DDX DD DSN=RESERV.GDG(0). 2- Définition de membre de PDS. //DDX DD DSN=BIBLIO1.UTIL.FIC(PARAM) 3- Définition de fichier temporaire. //DDX DD DSN=&&TEMP1 4- définition d'un fichier non temporaire. Page 14 de 33 Anoir SEGHIOUER //DDX DD DSN=BIBLIO.PGM1.FICSTOK, … 5.3.2.3. DISP : (disposition), il permet d'indiqué au système l'état du fichier à traiter, ce qu'il faut faire du fichier à la fin de l'étape, si elle ce passe bien ou lors d'une fin anormale(c.à.d. fin provoqué par le système) Les sous paramètre du DISP sont positionnels. DISP= (NEW,DELETE,DELETE) (OLD,KEEP,KEEP) (SHR,PASS,CATLG) (MOD,CATLG,UNCATLG) ,UNCATLG -1- -2-3Sous parameter-1- : indiquera l'état du fichier. Sous paramètre -2- : indiquera ce qu'il faut faire du fichier en cas de fin normale de l'étape. Sous paramètre -3- : ce qu'il faut faire du fichier en cas de fin anormale de l'étape.(ABEND). ETAT DU FICHIER. NEW : Le fichier est créé par l'étape en cours. Il est à usage exclusif du JOB pendant toute la durée du JOB. OLD : il existait avant l'étape en cours. Il est à usage exclusif du JOB pendant toute la durée du JOB. SHR : il existe avant l'étape en cours. Il est partageable entre tous les JOBs actifs. MOD : il existe avant l'étape et est en cours de l'exécution. Il est a l'usage exclusif a l'usage du JOB. Il permet de ce positionné au dernier enregistrement du fichier pour écrire des nouveaux enregistrements. Si le système ne trouve nulle part d'informations concernant le volume qui contient le fichier, il considère celui-ci comme NEW. DISPOSITION EN CAS DE FIN NORMALE. DELETE : le fichier devra être supprimé. La suppression d'un fichier catalogué entraîne celle de son entrée au catalogue à condition que le système ne trouve les informations d'unité et de volume que dans le catalogue. DELETE et PASS sont les seules dispositions valides pour un fichier temporaire (DSN omis ou DSN=&&TEMP). KEEP : il est conservé sans le cataloguer. Pour un fichier bande le volume est déchargé. CATLG : il est conservé et catalogué. Pour toute utilisation ultérieure, il suffit de fournir son nom et sa disposition dans la carte DD. UNCATLG : il doit être catalogué mais non conservé. PASS : Il passe à une étape ultérieure du même JOB. Il passe d'une étape à une autre s'il y a besoin. Un volume à bande n'est pas rembobiné sauf si le programmeur en décide autrement au CLOSE du fichier. Pour le conserver il suffit de coder une disposition KEEP ou CATLG a sa dernière utilisation. Exemple : //PASS JOB //ET1 EXEC PGM=PGM1 //DDNAME1 DD DSN=FIC001,DISP=(NEW,PASS),UNIT=SYSDA //ET2 EXEC PGM=PGM2 Page 15 de 33 Anoir SEGHIOUER //ET3 EXEC PGM=PGM3 //DDNAME3 DD DSN=FIC001,DISP=(OLD,PASS),UNIT=SYSDA //ET4 EXEC PGM=PGM4 //DDNAME3 DD DSN=FIC001,DISP=(OLD,CATLG),UNIT=SYSDA DISPOSITION A PRENDRE EN CAS DE FIN ANORMALE. A l'exception de PASS, toutes les dispositions précédentes peuvent être données pour une fin anormale d'étape. OPTIONS PRISES PAR DEFAUT. 1 er position : NEW. 2eme position: DELETE si le fichier est NEW. KEEP, si le fichier existe déjà (OLD ou SHR). 3eme position : par défaut en cas de fin anormale, le système applique la disposition Demandée pour la fin normale. Exemple : 1- DDNAME1 DD DSN=FIC1,DISP=(NEW,CATLG,DELETE) Fichier en création, catalogage en fin normale,suppression en cas de fin anormal 2- DDNAME1 DD DSN=FIC1,DISP=(OLD,DELETE,KEEP) Fichier existent, suppression lors d'une fin normale, conservation lors d'une fin anormale 3- DDNAME1 DD DSN=FIC1, pas de disposition Fichier en création, suppression en cas de fin normale ou anormale. 2- DDNAME1 DD DSN=FIC1,DISP=(OLD,,DELETE) Fichier existent, conservation en cas de fin normale, suppression en cas de fin anormale. UNIT : Ce paramètre défini l'unité physique contenant ou devant contenir le fichier. Obligatoir lors de la création d'un fichier UNIT = adresse-unité, nbre-unités, DEFER, AFF=DDNAME Type-unité, P Nom-groupe Les trois sous paramètre sont positionnels. Adresse-unité : elle permet de donné une adresse précise pour l'allocation physique du fichier, elle est a proscrire d'une manière générale ndre-unité : indique au système le nombre d'unités à réserver pour un fichier multi volumes. Par défaut le système réserve une unité. DEFFER : permet un montage différé du volume. Elle sera faite qu'au moment de l'OPEN du fichier si OPEN il y a. UNIT=AFF= : indique au système le fichier défini doit être implanté sur la même unité qu'un fichier déjà défini dans l'étape. Type-unité : on donne ici un type d'unité du système(3480,3350,3380,3420, etc..) P(parallèle) : précise au système au tous les volumes d'un fichier multi volume doivent être en ligne au moment du traitement. La routine d'allocation de l'INITIATOR réservera autant d'unités que nécessaire, le nombre de volume souhaité lui étant alors fourni dans le paramètre volume. Nom-groupe : identifie le groupe d'unité pour l'implantation du fichier. Ils sont défini a la génération du système. Exemple : Page 16 de 33 Anoir SEGHIOUER 1- //DDNAME1 DD DSN=I000001.FICHIER1,DISP=(NEW,CATLG), UNIT=SYSDA, … Le fichier sera dans le groupe SYSDA, a n'importe quelle unité. 2- //DDNAME1 DD DSN=I000001.FICHIER1,DISP=(NEW,KEEP), UNIT=3380, … Le fichier sera dans n'importe quelle unité 3380. 3- //DDNAME1 DD DSN=I000001.FICHIER1,DISP=(NEW,CATLG), UNIT=(TAPE,P), … VOL=SER=(VOL001,VOL002) Le fichier multi volume. Le volume VOL001 et VOL002 doivent être montés en parallèle pour le traitement. 4- //DDNAME1 DD DSN=I000001.FICHIER1,DISP=(NEW,CATLG), UNIT=(TAPE,,DEFER), … Le fichier ne sera monté qu'à l'OPEN du fichier. VOLUME : permet de définir le volume qui contient ou qui contiendra le fichier. Il est obligatoire pour créer un fichier sur un volume spécifique, reprendre un fichier non cataloger ou non passé. VOLume= PRIVATE, RETAIN, sqvol, nbvol, SER=numvol REF=*.ddname REF=*.stp.ddname REF=*.stp.stprc.ddname REF=dsname Les quatre sous paramètre sont positionnels. Un volume peut faire l'objet d'une demande : SPECIFIQUE : l'utilisateur impose un volume précis qui contient le fichier. Non SPECIFIQUE : L'emplacement du fichier est laissé au choix du système qui cherchera la place dans un volume public. RETAIN : permet la conservation de l'unité supportant le volume à utiliser. Sqvol(séquence volume) : pour un fichier multi volumes permet l'indication du volume à utiliser. Nbvol(nombre de volume) : indique le nombre de volume à traiter(fichier multi volumes). Par défaut, le système assume le traitement de 5 volumes au maximum. Au delà, il faut coder le nombre (pour un max de 255) de volumes nécessaires. SER= (serial) : ce sous paramètre fait une demande spécifique de volume, un ou plusieurs peuvent être codé. REF=dsname : le fichier sera sur le même volume qu'un fichier existant ou catalogue. REF=*.ddname : le fichier sera dans le même volume qu'un fichier de l'étape. REF=*.step1.ddname : le fichier sera dans le même volume qu'un fichier du step1 REF=*.step.procstep.ddname : le fichier sera dans le même volume que le fichier décrit dans le step de la procédure du JOB. Exemple : 1//STEP1 EXEC PGM=PGM1 //FICSOR DD DSN=I000001.FICSOR,DISP=(NEW,KEEP), // UNIT=TAPE,VOL=(,RETAIN) //STEP2 EXEC PGM=PGM2 //FICENTR DD DSN=I000001.FICSOR,DISP=(OLD,CATLG), // UNIT=TAPE,VOL=REF=*.S1.FICSOR Page 17 de 33 Anoir SEGHIOUER 23- //DDENTR // //DDOUT // // DD DD DSN=I000001.FIC1,DISP=SHR,UNIT=3380, VOL=SER=VOL001 DSN=I0000001.fic2,DISP=(NEW,CTALG), UNIT=TAPE, VOL=(,,,6,SER=(BDE001,BDE002,BDE003,BDE004)) SPACE : indique au système quelle espace disque sera réserver pour ce fichier en création. Deux type de déclaration : spécifier et non spécifier. Ces deux type correspond a des format différente, l'ensemble de ces sous paramètre sont positionnels. Demande non spécifique : SPACE=(type-alloc,(allocp,allocs,dir),(RLSE,CONTIG,ROUND)) Type-alloc : indique l'unité d'allocation de l'éspaces. TRK : pistes CYL : cylindres nnn : longreur moyenne, en octets, du bloc unitaire. Le nombre maximum étant donnée dans le programme. Allocp : donne l'allocation primaire. Le système essais toujours de satisfaire l'allocation primaires. Il doit y avoir suffisamment de place pour l'allocation primaire sinon il y a arrêt du traitement. Allocs : donne la taille des allocations secondaires. dir : pour les fichier partitionnés. Donne le nombre de blocs de directory à réserver en début d'allocation primaire. RLSE : libération de l'espace disque non utilisé par le fichier au moment de sa fermeture. CONTIG : demande que l'allocation de l'espace soit faites de façon contiguë. ROUND : force l'alignement des allocations demandées en blocs d'une certaine taille frontière du cylindre. Demande spécifique : Elle impose un emplacement spécifique pour le fichier. Elle en nombre de pistes et fournit l'adresse relative de la première piste du domaine défini. SPACE=(ABSTR,(taille,piste-départ,(directory))) Exemple : //FICSOR // DD DSN=A0001.FIC1,DISP=(NEW,CATLG), UNIT=SYSDA,SPACE=(CYL,30,RLSE) Allocation primaire de 30 cylindres, pas d'allocations secondaires, libération de la place non utilisée au close. //FICSOR DD DSN=A0001.FIC1,DISP=(NEW,CATLG), // UNIT=3380,VOL=SER=VOL001,SPACE=(TRK,(10,5)) Allocation de 10 piste primaires et 5 secondaires. //FICSOR DD DSN=A0001.FIC1.PDS,DISP=(NEW,CATLG), // UNIT=3380,VOL=SER=VOL002,SPACE=(CYL,(5,,20)) Allocation d'un PDS, 5cylindre en primaire, pas d'allocation secondaire,et 20 blocs directory. //FICSOR DD DSN=A0001.FIC1.PDS,DISP=(NEW,CATLG), // UNIT=3380,VOL=SER=VOL002,SPACE=(3120,(100,50)) Allocation primaire de 100 blocs de 3120 octets Allocations secondaires de 50 blocs de 3120 octets. DCB : il permet de fournir les caractéristique physique d'un fichier non VSAM. Page 18 de 33 Anoir SEGHIOUER La forme la plus souvent representé est la suivante : DCB = (dsname,LRECL=,BLKSIZE=,RECFM=,DSORG=,DEN=) *.ddname *.step.ddname RECFM= : indique le format des enregistrements : F Fixe Fixe bliqué FB V Variable VB Variable bloqué. indefini U Pour les fichiers d'impression, la lettre A peut suivre les différents codes pour indiquer que le premier caractère est un caractère de contrôle de saut. LRECL= : donne la taille des enregistrements logiques : Format F ou FB : longueur commune a tous les enregistrements. Format V ou VB : longueur maximum des enregistrements incluant les 4 octets de contrôle. Format U : ce sous paramètre est inutile. BLKSIZE= : permet de donné la taille des enregistrement physique (blocs). Il est obligatoire pour un fichier en création. Taille max autorisée :32760 octets. Format F ou FB : doit etre un multiple de LRECL. Format V ou VB : doit être au minimum égal à LRECL + 4 Format U : est libre dans les limite 16-32760. DSORG = : donne l'organisation du fichier : PS séquentielle DA à accès direct IS séquentielle indéxée (ISAM). partitionnée. PO DEN= : donne la densité d'enregistrement dans les bandes magnétiques. 2 800 BPI 1600 BPI 3 4 6250 BPI Dsname : permet de référence les caractéristique physique du fichier catalogué. *.ddname : fait référence aux caractéristiques physique d'un fichier défini antérieurement dans le STEP. *.STEPNAME.ddname : fait référence aux caractéristiques physique d'un fichier défini antérieurement dans le STEP antérieur. Exemple: //DDNAME DD DSN=A0001.Fic1,DISP=(NEW,CATLG),UNIT=SYSDA, // SPACE=(TRK,10),DCB=BLKSIZE=3120 //DDNAME DD // DSN=A0001.Fic1,DISP=(NEW,CATLG),UNIT=SYSDA, SPACE=(TRK,10),DCB=(BLKSIZE=8000,DEN=3) LABEL : définie essentiellement : La position d'un fichier dans une bande. Le type de labels utilisés pour un fichier bande. L'existence d'une protection par mot de passe. La date d'expiration du fichier. LABEL=(rang,type,protection,protection, EXPDT=date) Page 19 de 33 Anoir SEGHIOUER RETPD=nnn Rang : indique la position du fichier sur bande (défaut=1).peut être omis pour reprendre un fichier catalogué ou passé ainsi qu'un GDG. Type : indique le type de label à traiter. SL : Standard IBM (par défaut) SUL : Standard IBM et Utilisateur. NSL : non standard NL : pas de labels BLP : pas de traitement de labels Protection (plus utilisé) : ce sous paramètre permet d'indiquer une protection par mot de passe. EXPDT= : donne une date de rétention à un fichier sous format Année/Quantième(AAQQQ ou AAAA/QQQ) RETPD= : donne uns période de rétention du fichier sous forme de nombre de jours pendant les quels il sera conservé. Exemple : //DDNAME1 DD DSN=A00001.FICSOR,DISP=(NEW,CATLG),UNIT=TAPE, // DCB=BLKSIZE=800,LABEL=3,SL) //DDNAME1 DD // DSN=A00001.FICSOR,DISP=(NEW,CATLG),UNIT=SYSDA, DCB=BLKSIZE=3120,SPACE=(CYL,10),LABEL=EXPDT=90260 //DDNAME1 DD // DSN=A00001.FICSOR,DISP=(NEW,CATLG),UNIT=SYSDA, DCB=BLKSIZE=3120,SPACE=(CYL,10),LABEL=EXPDT=1990/260 //DDNAME1 DD // DSN=A00001.FICSOR,DISP=(NEW,CATLG),UNIT=SYSDA, DCB=BLKSIZE=3120,SPACE=(CYL,10),LABEL=RETPD=60 5.4. Définition des fichiers VSAM. //DDNAME DD DUMMY ,DSNAME= ,DISP= ,AMP= Les paramètres DUMMY et DSNAME sont les même que ceux vus pour les fichiers non VSAM. Le paramètre DISP ne peut prendre que les valeurs OLD et SHR. Les autres sont ignorées. AMP : Ce paramètre permet de compléta les information sur les paramètres du fichier VSAM AMP=('AMORG,BUFND=n,BUFINI=n,BUFSP=n') Si l'ont code plusieurs paramètres dans AMP, ceux-ci doivent être entre cote. AMORG : indique au système que la carte DD définit un fichier VSAM. BUFND= : permet de donner le nombre de si DATA à stocker dans les buffers. BUFNI= : donne le nombre de CI INDEX à stocker dans les buffers. BUFSP= : il permet de modifier la taille des buffers 'E/S pour le transfert des Page 20 de 33 Anoir SEGHIOUER DATA et des INDEX. La valeur indiquée doit être supérieure à celle donnée dans le paramètre BUFSP à la définition du CLUSTER. 5.5. Définir des fichiers SYSAOUT. //DDNAME1 DD DUMMY ,SYSOUT= ,COPIES= ,FCB= ,UCS= ,HOLD= ,FREE= ,OUTLIM= ,DEST= ,OUTPUT= ,BURST= ,CHARS= ,FLASH= SYSOUT : permet d'affecter à un fichier SYSOUT les caractéristiques suivantes : Classe de sortie. Writer devant prendre l'édition en charge. Format de parier ou code carte JES2 ou OUTPUT. SYSOUT=(clesse/*/(,),Writer/INTRDR,Format/code) Classe : classe de sortie à utiliser pour le stockage de sysout. * : La classe de sortie doit être la même que celle donnée dans le paramètre MSGCLASS de la carte JOB. (,) : Classe nulle. Utilise une classe définie dans une carte OUTPUT à la quelle on fera référence au moyen du paramètre OUTPUT. Writer : identification du writer externe devant prendre l'édition en charge. INTRDR : la sysout doit être renvoyé dans une file d'attente d'entrée au travers d'un lecteur interne. Format : format de papier a utiliser pour l'impression (1 à 4 caractère) Code : identifiant d'une carte /* OUTPUT de JES2 dans la quelle on aura défini les caractéristiques du fichier SYSOUT. Exemple : //DDNAME1 DD SYSOUT=(F,FACT) //DDNAME2 DD SYSOUT=V COPIES : spécifier le nombre de copies désires pour un édition. Optionnellement si l’impression doit ce faire sur une imprimante 3800, On peut spécifier la façon dont doivent être groupées les copies. COPIES=(nnn,(groupe1,groupe2, …)) nnn :nombre de copy désirées dans les limite de 1à255.Pour les sous système 3800 cette valeur est ignorée si on a codé les valeur de groupes. Sans valeur de groupe, le nombre de copies indiqué sera imprimé dans la séquence des pages pour chaque copie. Page 21 de 33 Anoir SEGHIOUER Groupe1,groupe2 : ces paramètres ne sont pris en compte que pour l’impression sur sous-système 3800.Ils indique le groupage des copies à imprimer. Chaque valeur donnera le nombre de copies de chaque page devant être groupées ensembles. Chaque groupe peut prendre une valeur de 1 à 255. On pourra avoir au maximum 8 groupe dont la somme des valeurs ne doit pas dépasser 255. Exemple : //IMPR1 DD SYSOUT=F,COPIES=32 //IMPR2 DD SYSOUT=B,COPIES=(1,(1,2)) FCB : spécifié la bande pilote à utiliser pour l’impression de SYSOUT. L’image de la bande pilote doit se trouver dans la bibliothèque système SYS1.IMAGELIB. FCB=(image-id,(ALIGN/VERIFY)) Image-id : nom d’un membre de SYS1.IMAGELIB définissant la bande pilote à utiliser (1 à 4 caractère). ALIGN : demande à l’opérateur de vérifier le cadrage du papier avant l’édition. VERIFY : demande à l’opérateur si l’image d’état est bien la bande. Exemple : //IMPR1 DD SYSOUT=F,COPIES=3,FCB=FACT UCS : chaîne de caractères à utiliser pour l’impression de SYSOUT sur imprimante à impacts. Police de caractères à utiliser pour impression sur 3800 LASER. UCS=identification. Exemple : //IMPR1 DD SYSOUT=F,COPIES=3,UCS=CHN5 HOLD : HOLD=YES(Y)/NO(N) YES : le sysout doit être mis à l’état HOLD dans les filles d’attente de sortie. Sa fera par commande pupitre. NO :Le sysout sera édité à son tour. Exemple : //IMPR1 DD SYSOUT=F,COPIES=3,HOLD=YES. FREE : ce paramètre permet de déterminer à quel moment le système doit désallouer le fichier défini dans la carte DD. FREE=END/CLOSE END : Le fichier sera désalloué à la fin du JOB(DEFAUT) CLOSE :le fichier sera désallouer a ça fermeture. Utiliser dans les fichiers SYSOUT pour l’impression du fichier par JES2 même si le JOB n’est pas terminé. Exemple : //IMPR1 DD SYSOUT=F,FREE=CLOSE OUTLIM : limite le nombre de ligne de la sysaout. La limite atteinte, le traitement s’arrête par ABEND. OUTLIM=nnnnnnnn nnnnnnnn : nombre maximum de ligne produit (1 à 16777215). Exemple : //IMPR1 DD SYSOUT=F,OUTLIM=1000 DEST : spécifie la destination d’une SYSOUT. DEST= LOCAL Page 22 de 33 Anoir SEGHIOUER Nnnn RMTnn NnRn LOCAL :la SYSOUT sera édité sur n’importe quelle imprimante locale. Nnnn : Le SYSOUT sera édité au nœud de réseau spécifié. RMTnn : la SYSOUT sera édité à la station remonte spécifiée. NnRn : La SYSOUT sera édité a la station remote spécifiée et rattachée au nœud de réseau spécifié Exemple : //OMPR1 DD SYSOUT=F,DEST=RMT1 OUTPUT : permet d’associer au fichier SYSOUT des caractéristiques définies antérieurement par une ou plusieurs cartes OUTPUT. OUTPUT= *.ddname, *.ddname,… *stepname.ddname,*stepname.ddname, … *.stepname.procstepname.ddname, … *ddname : référence à une carte OUTPUT définie soit dans la même étape soit juste avant la première carte EXEC *stepname.ddname : référence à une carte OUPUT définie dans un STEP antérieur. *.stepname.procstepname.ddname : référence à une carte OUTPUT définie dans une étape de procédure appelée dans un STEP antérieur. Exemple : Les exemples seront vus lors de l’étude de la carte OUTPUT. Remarque : Tout paramètre associé au paramètre SYSOUT et qui ne figure pas dans la carte OUT PUT est ajouté aux options de traitement prises dans la carte OUTPUT. Tout paramètre associé au paramètre SYSOUT prime sur les paramètres équivalents de la carte OUTPUT. BURST : permet de demander l’utilisation ou la non utilisation du dispositif de rupture de l’imprimante 3800 à LASER. BRUST =YES/NO CHARS : permet de définir les polices de caractères à utiliser pour impression sur l’imprimante 3800 à LASER. CHARS=(nom1,nom2, …) FLASH : permet de définir le fond de page à utiliser pour impression sur imprimante 3800 à LASER. FLASH=nom,nb copies nom : nom du fond de page à utiliser. Nb copies : nombre de copies de SYOUT à traiter avec le fond de page. 6. DDNAMES SYSTEME. 6.1. Recherche de programmes pour exécution. LINKLIB LOGIQUE. La Linklib logique est un ensemble de bibliothèques constitué de la SYS1.LINKLIB et de bibliothèques système et privées qui lui sont rattachées. Cet ensemble est défini dans des membres LNKLSTnn de SYS1.PARMLIB. A partie du moment où un programme que l’on veut exécuter se trouve dans une bibliothèque de la Linklib logique, il n’est pas nécessaire de définir cette bibliothèque. Dans le JCL. DEFINITION DE BIBLIOTHEQUE PRIVEES. Page 23 de 33 Anoir SEGHIOUER La recherche d’un programme dans une ou plusieurs bibliothèques privées peut être demandée par l’une des cartes suivantes : //JOBLIB DD DSN=BIB.LOAD,DISP=SHR //STEPLIB DD DSN=BIB.LOAD2,DISP=SHR Carte JOBLIB : permet de définir une bibliothèque privée qui sera valable pour toute la durée du JOB. Elle doit suivre obligatoirement la carte JOB. Et la carte JES2 s’il y’en a et précéder la première carte EXC. Exemple : //JOB1 JOB //JOBLIB DD DSN=BIB.LOAD1,DISP=SHR //STEP1 EXEC PGM=PROG1 Remarque : a chaque fois que le JOB demande l’exécution d’un programme, le système le recherche dans les bibliothèques de la JOBLIB. Si il n’est pas trouver dans ,la recherche ce poursuit dans la LINKLIB LOGIQUE. Carte STEPLIB : permet de définir une bibliothèque privée qui ne sera valable que pour la durée du STEP dans le quel elle est définie. Elle fait partie des carte DD. Exemple : //JOB2 JOB //STEP1 EXEC PGM=PROG2 //STEPLIB DD DSN=BIB.LOAD2,DISP=SHR Remarque : Avec une carte STEPLIB,quand l’étape demande l’exécution du programme, le Système le recherche dans la bibliothèque définie par STEPLIB. Sinon il continue sa recherche dans la LINKLIB LOGIQUE. Il n’y aura en aucun cas de recherche dans les bibliothèques éventuellement définie par JOBLIB. 6.2. Définition de catalogues. La définition d’un catalogue peut être demandée par l’une des cartes suivantes : //JOBCAT DD //STEPCAT DD DSN=USER.CAT1,DIS=SHR DSN=USER.CAT2,DISP=SHR JOBCAT : un catalogue défini avec une carte JOBCAT sera valable pour toute la durée du JOB. La recherche d’un fichier de fera dans l’ordre suivant : 1) Catalogue défini par JOBCAT 2) Master Catalog 3) Catalogue associé au premier ‘Qualifieur’ du nom du fichier. Une carte JOBCAT doit obligatoirement être placée entre la carte JOB et la première carte EXEC. Si il existe une carte JOBCAT doit obligatoirement être placée entre la carte JOB et la première carte EXEC. SI il existe une carte JOBLIB pour le même JOB elle doit être placer entre la carte JOB et la carte JOBCAT. Exemple : //JOB1 JOB //JOBLIB DD DSN=BIB.LOAD1,DISP=SHR //JOBCAT DD DSN=USER.CAT1,DISP=SHR Page 24 de 33 Anoir SEGHIOUER //STEP1 EXEC PGM=PROG1 STEPCAT : un catalogue défini par une carte STEPCAT est valable seulement pour la durée du STEP dans la quelle il est défini. La recherche d’un fichier se fait dans l’ordre suivant : 1) Catalogue défini par STEPCAT 2) Master Catalog 3) Catalogue associer au premier qualifieur du nom de fichier. Une carte STEPCAT se place parmi les cartes DD de l’étape. Exemple : //JOB1 JOB //JOBLIB DD DSN=BIB.LOAD1,DISP=SHR //STEP1 EXEC PGM=PROG1 //STEPCAT DD DSN=USER.CAT2,DISP=SHR 6.3. Edition des messages programmes. L’édition des messages programmes est faites sur un fichier SYSOUT d”fini par une carte : //SYSOUT DD SYSOUT=classe 6.4. Options de DEBUGGING COBOL. Certaines options de debugging cobol nécessitent la présence des cartes suivantes. //SYSDBOUT DD SYSOUT=classe // SYSABOUT DD SYSOUT=classe. 6.5. Edition des DUMPS La sortie de DUMPS peut se faire sur fichier SYSOUT, disque ou bande. Elle est obtenue par l’intermédiaire d’une carte : //SYSUDUMP DD SYSOUT=classe 7. CONCATENATION DE FICHIERS. La concaténation permet de définir plusieurs fichiers d’une étape sous un même DDNAME. Elle n’est utilisable que pour des fichiers en lecture contenant le même type d’informations. La lecture ce fait en séquence dans l’ordre de présentation des fichiers. On peut concaténer jusqu’à 255 fichiers. Exemle : Définition de plusieurs bibliothèques de LOAD modules sous les mêmes JOBLIB. //JOB1 JOB //JOBLIB DD DSN=BIB.LOAD1,DISP=SHR // DD DSN=BIB.LOAD2,DISP=SHR // DD DSN=BIB.LOAD2,DISP=SHR // DD DSN=BIB.LOAD2,DISP=SHR //STEP1 EXEC PGM=PROG1 Définition des fichiers d’entrée du tri //JOB1 JOB //STEP1 EXEC PGM=SORT //SORTIN DD DSN=FIC.TRI1,DISP=SHR // DD DSN=FIC.TRI2,DISP=SHR Page 25 de 33 Anoir SEGHIOUER // // DD DD DSN=FIC.TRI3,DISP=SHR DSN=FIC.TRI4,DISP=SHR 8. Carte OUTPUT Cette carte permet de définir des caractéristiques communes à plusieurs fichiers sysout d’un JOB. Elle s’utilise en association avec le paramètre OUTPUT de la carte DD. Format. //nom OUTPUT CLASS=classe/* ,COPIES=nnn ,DEFAULT=YES/NO ,FORMS=code papier ,FCB= ,UCS= ,DEST= ,BURST= ,CHARS= ,FLASH= CLass : Donne une classe de sortie pour le ou les fichiers SYSOUT associés à la carte OUTPUT. COPIES : même signification que dans la carte DD. DEFAULT : YES : Toutes les carte DD définissant des ficher SYSOUT et ne possédant pas le paramètre OUTPUT seront associées à cette carte OUT PUT. NO : pas d’association implicite. DEST : identique que la description de la carte DD. FCB : identique que la description de la carte DD. UCS : identique que la description de la carte DD. BURST : identique que la description de la carte DD. CHARS : identique que la description de la carte DD. FLASH : identique que la description de la carte DD. FORMS : Code papier à utiliser pour l’impression. Exemple : //JOB1 JOB //OUT1 //OUT2 //OUT3 OUTPUT OUTPUT OUTPUT //STEP1 //IMP1 EXEC PGM=PGM1 DD SYSOUT=(,),OUTPUT=(*.OUT1,*.OUT2) //STEP2 //IMP2 EXEC PGM=PGM2 DD SYSOUT=(,),OUTPUT=*.OUT1 //STEP3 //IMP3 EXEC PGM=PGM3 DD SYSOUT=(,),HOLD=YES CLASS=Z,COPIES=2,DEST=RMT1 CLASS=Y,COPIES=3,DEST=RMT3 CLASS=P,COPIES=1,DEFAULT=YES Page 26 de 33 Anoir SEGHIOUER 9. LES PROCEDURES. Une procédure est équivalent a un sous-programme de JCL que l’ont peut appeler par une carte EXEC. Elle s’utilise lors ce que noue avons dans le système un ensemble de carte de JCL, de Bibliothèque … suffisamment standard pour pouvoir être utilisé assez fréquemment dans des travaux différents. C’est le cas par exemple des compilations, des lancements de Logiciels transactionnels des SGBD (système de gestion de donnée). 9.1. Contenu d’une procédure. Une procédure peut contenir des cartes EXEC : Une procédure ne peut appeler une autre procédure que depuis MVS/ESA SP4 (jusqu’à 15 niveaux) Elle peut contenir des carte DD,qui représente des fichiers utilisés par la procédure,ainsi que des cartes IF,ELSE, END-IF Elle ne peut contenir des Carte JOB, DDDATA, DD* Elle peut contenir la carte PROC, la carte PEND est normalement réservée aux procédures IN STREAM, on peut cependant la coder dans une procédure cataloguée depuis MVS/ESA SP4. 9.2. Description schématique d’une procédure. //MYJOB //STEP1 //FICH //STEP2 JOB EXEC PROCD DD DSB= …. EXEC PGM=PROGRAM1 recherché de la procédure catalogué //MYJOB //STEPA //FICHENT1 //FICHENT2 //SYSOUT //FICH //STEP2 procedure //PROCD PROC //STEPA EXEC PGM=PGM1 //FICHENT1 DD DSN= … //FICHENT2 DD DSN= … //SYSOUT DD SYSOUT=* // PEND JOB EXEC PGM=PGM1 DD DSN= … DD DSN= … DD SYSOUT=* DD DSB= …. EXEC PGM=PROGRAM1 PROCD : marque le début de la procédure. PEND : marque la fin de la procédure. 9.3. Types de procédures. IN STEREAM : utiliser lors de la création de la procédure. Contenue dans la carte JOB qui l’appelle. Ceci n’ayant d’intérêt que pendant la phase de test de la procédure. La procédure est délimitée par les cartes PROC et PEND. Page 27 de 33 Anoir SEGHIOUER CATALOGUED : il s’agit de procédure d’enregistrement définitivement la nouvelle procédure dans une ou plusieurs bibliothèques disponible pour tout le monde. La bibliothèque standard est la SYS1.PROCLIB. Syntaxe : //name JCLLIB ORDER=(nom_de_bibliotheque,(nom_de_bibliotheque),….) 9.4. Création d’une procédure. La création ce fait au moyen d’un éditeur (exemple SPF) et consiste soit à créer et à tester une procédure IN STEREAM, puis à l’ajouter dans un membre de la bibliothèque des procédures, soit à créer directement le membre dans la bibliothèque puis à écrire directement le membre dans la bibliothèque puis écrire le JCL d’appel. 9.4.1. Procédure IN STERN. Le nom de la carte PROC détermine le nom de la procédure. On peut ensuite appeler cette procédure aussi souvent que nécessaire dans le même JOB. Exemple : //MYJOB JOB … //*___________________________________________ PROCEDURE DEBUT //MYPROC PROC //PROC1 EXEC PGM=PROGRA1 //STSOUT DD SYSOUT=* //FICENTR1 DD DSN=FIC1.ENTRE … //FICSORT2 DD DSN=FIC1.SORTI … //PROC2 EXEC PGM=PROGRA2 // SYSOUT DD SYSOUT=* // … // PEND //*_____________________________________________PROCEDURE FIN //STEP1 EXEC PGM=PROGRAM3 // … 9.4.2. Procédure cataloguée. Contenu de la procédure cataloguée par exemple dans SYS1.PROCLIB : //MYPROC PROC //PROC1 EXEC PGM=PGM1 //SYSOUT DD SYSOUT=* //FICENTR DD DSN=FIC.ENTRE1 … //FICSOR DD DSN=FIC.SORTI1 … //PROC2 EXEC PGM=PGM2 //SYSOUT DD SYSOUT=* // … Le nom de la procédure est donné par le nom du membre qui la contient, et non pas par le nom de la carte PROC. Si la carte PROC ne contient pas de paramètre, elle est facultative, ce qui est le cas de cet exemple. Appel de la procédure : //MYJOB JOB … //STEP1 EXEC MYPROC Page 28 de 33 Anoir SEGHIOUER // … 9.5. Utilisation d’une procédure. Une procédure est un JCL standardisé, elle ne peut prendre en compte à priori les cas particuliers de tous les utilisateurs. Elle doit donc être donc paramétrable. On sera amené à apporter dynamiquement des modifications au moment de l’appel : Modification des cartes EXEC. Modification des cartes DD. Définition de variables avec valeurs par défaut ou imposées au moment de l’appel. Lors de l’appel d’une procédure, l’interpréteur recherchera la procédure dans la bibliothèque système ou utilisateur (carte JCLLIB), la fusionnera avec le JCL d’appel et procédera aux modifications demandées par l’appel. Dans le compte rendu d’exécution, on pourra visualiser le résultat de cette fusion dans la mesure où l’on aura codé MSGLEVEL=(1, … )dans la carte JOB. Distinction entre les différents types de cartes dans la partie JCL IMAGE du compte rendu d’exécution du JOB : • Hors procédure : // Carte du JCL d’origine • dans une procédure cataloguée : Carte de procédure non modifiée. XX Carte de procédure modifiée. X/ // carte ajoutée à la procédure. • Dans une procédure IN STREAM : ++ carte de procédure non modifiée +/ carte de procédure modifiée carte ajoutée à la procédure // 9.6. Modification des cartes EXEC. Pour l’ensemble des cartes EXEC de la procédure, les modifications se font dans la carte EXEC d’appel. On peut ajouter, modifier ou supprimer des paramètres (sauf le nom du PGM à exécuter). La syntaxe générale est la suivante : Paramètre.(PROCSTEP)=Valeur PROCSTEP est le nom de l’étape de procédure dans la quelle on veut agir. S’il est omis, le paramètre sera valable pour toutes les étapes de la procédure. Exemple : //STEP1 EXEC MYPROC,COD.ET1=O,NE), // TIME.ET2=(,5) Règles : Bien que l’on puisse imbriquer jusqu’à 15 niveau de procédure depuis MVS/ESA SP4, on ne peut pas paramétrer que le premier niveau. • Les paramètres à modifier doivent respecter l’ordre suivant : o D’abord les paramètres s’appliquant à toutes les étapes o Puis ceux qui modifient une étape particulière, dans l’ordre des étapes. • Ajout : on code le paramètre, l’étape, la valeur. L’interpréteur ajoute ce paramètre s’il n’existe pas déjà dans l’étape. • Modification : On code le paramètre, l’étape, la valeur. L’interpréteur attribue la nouvelle valeur au paramètre s’il existe déjà, sinon il procède à un ajout. Page 29 de 33 Anoir SEGHIOUER • Suppression : On code le paramètre, l’étape, mais pas la valeur. Si ce paramètre existe dans l’étape, l’interpréteur le supprime, sinon il ne fait rien. Exemple : Soit la procédure suivante : //S1 EXEC PGM=MYPROG,PARM=’TOTO’ … //S2 EXEC PGM=PROG2,TIME=1 .. et l’appel de la procédure : //STEP1 EXEC MYPROC,COND.S1=(0,NE), // PARM.S1=,TIME.S2=(,5) … Qui apporte les modifications suivantes : • Ajout de COND dans l’étape S1 • Suppression de PARM dans l’étape S1. • Modification de TIME dans S2. X/S1 EXEC PGM=MYPROG,COND=(0,NE) … X/S2 EXEC PGM=PROG2,TIME=(,5) 9.7. Modification des cartes DD. Se font par l’intermédiaire de cartes DD code dans le JCL d’appel. On peut ajouter ou supprimer des cartes DD. Syntaxe générale : //PROCSTEP.DDNAME DD procstep est le nom d’étape de la procédure que l’on veut modifier. Règles : bien que l’on imbrique 15 niveau de procédure depuis MVS/ESA SP4, on ne peut paramétrer que le premier niveau. Bien que l’on puisse imbriquer jusqu’à 15 niveau de procédure depuis MVS/ESA SP4, on ne peut paramétrer que le premier niveau. • Les cartes DD doivent respecter un certain ordre : o On doit aller dans l’ordre des étapes de la procédure, o Pour une étape donnée, on doit d’abord trouver les cartes DD qui modifient des cartes DD présentes dans la procédure, puis les cartes DD ajoutées à la procédure. • Si on omet le nom de l’étape devant le ddname, la carte sera ajoutée à la dernière étape que l’on a nommée (la première, si aucune étape n’est nommée). • Ajout : si la carte codée dans le JCL d’appel n’existe pas, elle est ajoutée dans l’étape concernée de la procédure. Si d’autres cartes DD de cette étape ont été modifiées, elles doivent précéder les cartes ajoutées. • Modification : si la carte codée dans le JCL d’appel existe dans la procédure, ses paramètres sont modifiés en fonction des règles suivantes : o Si un paramètre codé n’existait pas, il est ajouté. o Si un paramètre existe existait déjà, il est modifié. o Si un paramètre est codé sans valeur, il est supprimé. o Si un paramètre existant n’est pas recodé, il est conservé. • Suppression de tous les paramètres sauf le DCB : On code la carte avec le paramètre DUMMY Exemple : //S1 //SYSOUT EXEC PGM=PROG1 DD SYSOUT=* Page 30 de 33 Anoir SEGHIOUER //FICENT //S2 //SYSOUT //IMPRIM DD EXEC DD DD DSN=I00020.FICENT,DISP=SHR PGM=PROGRAM2 SYSOUT=* SYSOUT=*,copies=2 … et appel de la procedure //STEP1 //S1.FICENT //S1.FICSOR // //S2.IMPRIM EXEC MYPROC DD DISP=OLD DD DSN= I00020.FICENT,DISP=SHR UNIT=SYSDA,SPACE=(TRK,10),DCB=BLKSIZE=120 DD SYSOUT=A,OUTLIM=1000,COPIES= modif Ajout suppression Entraîne les modifications suivantes (extrait du JCL image) : //SEP1 EXEC XXS1 EXEC XXSYSOUT DD X/S1.FICENT DD //S1.FICSOR DD // XXS2 EXEC XXSYSOUT DD X/S2.IMPRIMDD MYPROC PGM=PROG1 SYSOUT=* DSN= I00020.FICENT,DISP=OLD DSN= I00020.FICENT,DISP=SHR UNIT=SYSDA,SPACE=(TRK,10),DCB=BLKSIZE=120 PGM=PROGRAM2 SYSOUT=* SYSOUT=A,OUTLIM=1000 Modif Ajout Cas particulier des fichiers concaténés : Il doit y avoir autant de cartes DD dans le JCL d’appel que dans l’étape de la procédure. Les cartes doivent apparaître dans le même ordre. Pour modifier un paramètre, on le code dans la carte DD correspondante. Si aucun paramètre ne doit être changé dans une carte,on code cette carte sans paramètre. Exemples : Dans la procédure PROCA : //SX EXEC … //DD1 DD DNS=LOAD.LOAD1,DISP=SHR // DD DNS=LOAD.LOAD3,DISP=SHR // DD DNS=LOAD.LOAD2,DISP=SHR 1- Dans le JCL d’appel de la procédure : //STEPA EXEC PROCA //SX.DD1 DD DSN=I0004.PROJ1,DISP=SHR On trouvera dans le JCL image : X/SX.DD1 DD DSN=I0004.PROJ1,DISP=SHR X/ DD DNS=LOAD.LOAD3,DISP=SHR X/ DD DNS=LOAD.LOAD2,DISP=SHR 2- Dans le JCL d’appel de la procédure //STEPA EXEC PROCA //SX.DD1 DD DSN=I0004.PROJ1,DISP=SHR DD DSN=I0004.PROJ2,DISP=SHR Page 31 de 33 Anoir SEGHIOUER On trouve dans le JCL image X/SXDD1 DD DSN=I0004.PROJ1,DISP=SHR DD DSN=I0004.PROJ2,DISP=SHR DD DSN=LOAD.LOAD2,DISP=SHR 3- Dans le JCL d’appel de la procédure : //STEPA EXEC PROCA //SXDD1 DD DSN=I0004.PROJ1,DISP=SHR // DD // DD DSN=I0004.PROJ2,DISP=SHR On trouve dans le JCL image //SXDD1 DD DSN=I0004.PROJ1,DISP=SHR // DD DNS=LOAD.LOAD3,DISP=SHR // DD DSN=I0004.PROJ2,DISP=SHR 9.8. Définition de variables symboliques 9.8.1. Codage des variables. Dans une procédure, il est possible de remplacer les valeurs fixes attribuées aux paramètres par des noms de variables symboliques. Cela augmente la souplesse d’utilisation des procédures que l’on peut alors modifier simplement en changeant les valeurs attribuées aux variables symboliques. Une variable s’écrit sous la forme : Paramètre =&nom Le & permet à l’interpréteur de différencier les variables des valeurs attribuées aux paramètres ordinaires. Pour attribuer une valeur à une variable, on code son nom sans le &.Ceci peut être fait soit au niveau de la carte EXEC d’appel de la procédure, soit au niveau de la carte PROC (facultative pour les procédures cataloguées, obligatoire pour les procédures instream). La valeur est alors attribuée à toutes les occurrences de la variable symbolique. 9.8.2. Variable par défaut. La carte PROC permet d’attribuer des valeurs par défaut aux variables de la procédure. //MYPROC PROC DUREE=’(,2)’,FIC=TOTO,DISPO=SHR,VERS=M0000, // APPLI=COMM,AA=95,QQQ=312 //STEP1 EXEC PGM=PROGRAM1,TIME=&DUREE,PARM=’&AA&QQQ’ //FIC1 DD DSN=&FIC,DISP=&DISPO //FIC2 DD DSN=&APPLI..&VERS,DISP=(NEW,ATALG,DELETE), … Attention : Le double point précédant &VERS est indispensable pour séparer deux variables dans un nom de fichier. 9.8.3. Attribution dynamique de valeurs. On attribue les valeurs aux variables, dynamiquement lors de l’exécution de la procédure, en codant les paramètres au niveau de la carte EXEC d’appel. Les valeurs attribuées ainsi remplacent les valeurs codées sur la carte PROC. Exemple : Page 32 de 33 Anoir SEGHIOUER Carte d’appel pour la procédure ci-dessus : //STEP1 EXEC MYPROC,DUREE=1,FIC=’STOCK.DONNEE’, APPLI=COMM,VERS=DU280571 L’interpréteur attribuera une durée de une minute et utilisera les fichiers STOCK.DONNEE et COMM.DU280571. : //STEP1 EXEC PROG=PROGRAM1,TIME=1,PARM=’95312’ //FIC1 DD DSN=STOCK.DONNEE,DISP=SHR //FIC2 DD DSN=COMM.DU280571,DISP=(NEW,CATLG,DELETE), .. Remarque : L’attribution dynamique de valeurs à des variables peut également se faire directement dans le JCL, sans avoir à faire appel a une procédure, à l’aide de la carte SET. Exemple : //I000AA JOB ….. // SET NOMFIC=’GOR.RESU456.ED56’,IMPR=’RMT231’ //EDIT EXEC PGM=EDITION //ETAT DD DSN=&NOMFIC,DISP=SHR //SORTIE DD SYSOUT=A,DEST=&IMPR Le JCL soumis sera : //I000AA // //EDIT //ETAT //SORTIE JOB SET EXEC DD DD ….. NOMFIC=’GOR.RESU456.ED56’,IMPR=’RMT231’ PGM=EDITION DSN=GOR.RESU456.ED56,DISP=SHR SYSOUT=A,DEST=RMT231 Page 33 de 33