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