Tous les articles par Mr COBOL

JCL – Instruction STEPLIB

Une instruction STEPLIB est utilisée pour identifier l’emplacement du programme à exécuter dans une étape de travail.
L’instruction STEPLIB est spécifiée après l’instruction EXEC et avant l’instruction DD de l’étape (step) de job.

Syntaxe

Voici la syntaxe de base d’une instruction JCL STEPLIB :

//STEPLIB DD DSN=nomdsn,DISP=SHR                                     

Le programme spécifié dans l’instruction EXEC sera recherché dans la bibliothèque STEPLIB suivie de la bibliothèque système. STEPLIB codé dans une étape de job remplace l’instruction JOBLIB.

Exemple

L’exemple suivant montre l’utilisation des instructions JOBLIB et STEPLIB :

/MYJCL JOB ,,CLASS=6,NOTIFY=&SYSUID
//*
//JOBLIB DD DSN=MYPROC.BASE.LIB1,DISP=SHR
//*
//STEP001 EXEC PGM=MYPROG1
//INPUT1  DD DSN=MYFILE.SAMPLE.INPUT1,DISP=SHR
//OUTPUT1 DD DSN=MYFILES.SAMPLE.OUTPUT1,DISP=(,CATLG,DELETE),
//           RECFM=FB,LRECL=80
//*
//STEP002 EXEC PGM=MYPROG2
//STEPLIB DD DSN=MYPROC.BASE.LIB2,DISP=SHR
//INPUT2  DD DSN=MYFILE.SAMPLE.INPUT2,DISP=SHR
//OUTPUT2 DD DSN=MYFILES.SAMPLE.OUTPUT2,DISP=(,CATLG,DELETE),
//           RECFM=FB,LRECL=80                                      

Ici, le module de chargement du programme MYPROG1 (dans STEP001) est recherché dans MYPROC.SAMPLE.LIB1.
S’il n’est pas trouvé, il est recherché dans la bibliothèque système.
Dans STEP002, STEPLIB remplace JOBLIB et le module de chargement du programme MYPROG2 est recherché dans MYPROC.SAMPLE.LIB2 puis dans la bibliothèque système.

JCL – Instruction JOBLIB

Bibliothèque de base

La bibliothèque de base (library) est le jeu de données partitionné (PDS), qui contient les modules de chargement du programme à exécuter dans le JCL ou la procédure cataloguée, qui est appelée dans le programme.
Les bibliothèques de base peuvent être spécifiées pour l’ensemble du JCL dans une bibliothèque JOBLIB ou pour une étape de travail particulière dans une instruction STEPLIB.

Déclaration JOBLIB

Une instruction JOBLIB est utilisée pour identifier l’emplacement du programme à exécuter dans un JCL.
L’instruction JOBLIB est spécifiée après l’instruction JOB et avant l’instruction EXEC.
Cela ne peut être utilisé que pour les procédures et les programmes en flux.

Syntaxe

Voici la syntaxe de base d’une instruction JCL JOBLIB :

//JOBLIB DD DSN=nomdsn,DISP=SHR

L’instruction JOBLIB s’applique à toutes les instructions EXEC du JCL.
Le programme spécifié dans l’instruction EXEC sera recherché dans la bibliothèque JOBLIB suivie de la bibliothèque système.

Par exemple, si l’instruction EXEC exécute un programme COBOL, le module de chargement du programme COBOL doit être placé dans la bibliothèque JOBLIB.

JCL – Instruction DD

Les ensembles de données sont des fichiers mainframe avec des enregistrements organisés dans un format spécifique.
Les ensembles de données sont stockés sur le périphérique de stockage à accès direct (DASD) ou sur les bandes de l’ordinateur central et sont des zones de stockage de données de base.
Si ces données doivent être utilisées/créées dans un programme batch, le nom physique du fichier (c’est-à-dire l’ensemble de données) ainsi que le format et l’organisation du fichier sont codés dans un JCL.

La définition de chaque jeu de données utilisé dans le JCL est donnée à l’aide de l’instruction DD.
Les ressources d’entrée et de sortie requises par une étape de job doivent être décrites dans une instruction DD avec des informations telles que l’organisation de l’ensemble de données, les exigences de stockage et la longueur de l’enregistrement.

Syntaxe

Voici la syntaxe de base d’une instruction JCL DD :

//DDNAME DD Parametres

Description

Voyons la description des termes utilisés dans la syntaxe de l’instruction DD ci-dessus.

DDNAME

Un DDNAME identifie l’ensemble de données ou la ressource d’entrée/sortie.
S’il s’agit d’un fichier d’entrée/sortie utilisé par un programme COBOL/Assembler, le fichier est référencé par ce nom dans le programme.

DD

Il s’agit du mot-clé pour l’identifier en tant qu’instruction DD.

PARAMÈTRES

Voici les différents paramètres de l’instruction DD.
Vous pouvez utiliser un ou plusieurs paramètres en fonction des besoins et ils sont séparés par une virgule :

ParamètreDescription
DSNLe paramètre DSN fait référence au nom du jeu de données physique d’un jeu de données nouvellement créé ou existant.
La valeur DSN peut être composée de sous-noms de 1 à 8 caractères chacun, séparés par des points et d’une longueur totale de 44 caractères (alphanumériques).

Voici la syntaxe :
DSN=Nom de l’ensemble de données physiques

Les ensembles de données temporaires n’ont besoin d’être stockés que pendant la durée de la tâche et sont supprimés à la fin de la tâche.
Ces ensembles de données sont représentés sous la forme DSN=&name ou simplement sans DSN spécifié.

Si un jeu de données temporaire créé par une étape de job doit être utilisé dans l’étape de job suivante, il est alors référencé sous la forme DSN=*.nomstep.ddname.
C’est ce qu’on appelle le référencement arrière.
DISPLe paramètre DISP est utilisé pour décrire l’état de l’ensemble de données, la disposition à la fin de l’étape de travail en cas d’achèvement normal et anormal.
DISP n’est pas requis dans une instruction DD uniquement lorsque l’ensemble de données est créé et supprimé dans la même étape de job (comme les ensembles de données temporaires).

Voici la syntaxe :
DISP=(statut, disposition normale, disposition anormale)

Voici les valeurs valides pour le statut :
NEW : l’ensemble de données est nouvellement créé par l’étape de travail. 
OLD : l’ensemble de données est déjà créé et sera écrasé dans l’étape de travail.
L’étape de job obtient un accès exclusif à l’ensemble de données et aucune autre tâche ne peut accéder à cet ensemble de données tant que l’étape de job n’est pas terminée.
SHR : Le jeu de données est déjà créé et sera lu dans l’étape du travail.
Le jeu de données peut être lu par plusieurs jobs en même temps. 
Exemple: INPUT1 et INPUT2.
MOD : Le jeu de données est déjà créé.
Cette disposition sera utilisée lorsqu’il sera nécessaire d’ajouter de nouveaux enregistrements à l’ensemble de données existant (les enregistrements existants ne seront pas écrasés).

Un paramètre de disposition normale peut prendre l’une des valeurs suivantes :
CATLG, UNCATLG, DELETE, PASS et KEEP

Un paramètre de disposition anormale peut prendre l’une des valeurs suivantes :
CATLG, UNCATLG, DELETE et KEEP

Voici la description des paramètres CATLG, UNCATLG, DELETE, PASS et KEEP :
CATLG : Le jeu de données est conservé avec une entrée dans le catalogue système.
UNCATLG : l’ensemble de données est conservé mais l’entrée du catalogue système est supprimée.
KEEP : Le jeu de données est conservé sans modifier aucune des entrées du catalogue.
KEEP est la seule disposition valide pour les fichiers VSAM. Ceci ne doit être utilisé que pour les ensembles de données permanents.
DELETE : l’ensemble de données est supprimé du catalogue utilisateur et système.
PASS : Ceci n’est valable que pour une disposition normale.
Ceci est utilisé lorsque l’ensemble de données doit être transmis et traité par l’étape de job suivante dans un JCL.

Lorsque l’un des sous-paramètres de DISP n’est pas spécifié, les valeurs par défaut sont les suivantes :
status : NEW est la valeur par défaut.
normal-disposition : Si le statut est NEW, la disposition-normale par défaut est DELETE, sinon c’est KEEP.
abnormal-disposition : Identique à la disposition normale.
DCBLe paramètre Data Control Block (DCB) détaille les caractéristiques physiques d’un jeu de données. Ce paramètre est requis pour les ensembles de données nouvellement créés dans l’étape de job.

LRECL est la longueur de chaque enregistrement contenu dans l’ensemble de données.

RECFM est le format d’enregistrement de l’ensemble de données.
RECFM peut contenir les valeurs FB, V ou VB.
FB est une organisation de bloc fixe où un ou plusieurs enregistrements logiques sont regroupés dans un seul bloc.
V est une organisation variable dans laquelle un enregistrement logique de longueur variable est placé dans un bloc physique.
VB est une organisation de blocs variables dans laquelle un ou plusieurs enregistrements logiques de longueur variable sont placés dans un bloc physique.

BLKSIZE est la taille du bloc physique. Plus le bloc est grand, plus le nombre d’enregistrements pour un fichier FB ou VB est grand.

DSORG est le type d’organisation des ensembles de données. DSORG peut contenir les valeurs PS (Physical Sequential), PO (Partitioned Organisation) et DA (Direct Organisation).

Lorsqu’il est nécessaire de répliquer les valeurs DCB d’un jeu de données vers un autre dans la même étape de travail ou JCL, il est spécifié comme
DCB=*.nomstep.ddname où nomstep est le nom du step de job et ddname est le jeu de données à partir duquel le DCB est copié.

Vérifiez l’exemple ci-dessous où RECFM = FB, LRECL = 80 forme le DCB du jeu de données OUTPUT1.
SPACELe paramètre SPACE spécifie l’espace requis pour le jeu de données dans le DASD (Direct Access Storage Disk).

Voici la syntaxe :
SPACE=(spcunits, (pri, sec, dir), RLSE)

Voici la description de tous les paramètres utilisés :
– spcunits : Cela peut être l’un des CYL(Cylinder), TRK(Tracks) ou BLKSIZE(Block Size).
– pri : Il s’agit de l’espace principal requis pour le jeu de données.
– sec : C’est l’espace supplémentaire requis, lorsque l’espace primaire n’est pas suffisant.
– ir : Il s’agit des blocs de répertoire requis, si le jeu de données est un PDS (Partitioned Dataset) avec des membres à l’intérieur.
– RLSE : Ceci est utilisé pour libérer l’espace inutilisé à la fin du travail.
UNITLes paramètres UNIT et VOL sont répertoriés dans le catalogue système pour les ensembles de données catalogués et sont donc accessibles uniquement avec le nom DSN physique. Mais pour les ensembles de données non catalogués, l’instruction DD doit inclure ces paramètres.
Pour de nouveaux ensembles de données à créer, les paramètres UNIT/VOL peuvent être spécifiés ou le Z/OS alloue l’appareil et le volume appropriés.

Le paramètre UNIT spécifie le type d’appareil sur lequel l’ensemble de données est stocké.
Le type d’appareil peut être identifié à l’aide de l’adresse matérielle ou du groupe de types d’appareils. 

Voici la syntaxe :
UNIT=DASD | SYSDA

Où DASD signifie Direct Access Storage Device et SYSDA signifie System Direct Access et fait référence au prochain périphérique de stockage sur disque disponible.
VOLLe paramètre VOL spécifie le numéro de volume sur l’appareil identifié par le paramètre UNIT.

Voici la syntaxe :
VOL=SER=(v1,v2)

Où v1, v2 sont des numéros de série de volume. Vous pouvez également utiliser la syntaxe suivante :
VOL=REF=*.DDNAME

Où REF est la référence en amont au numéro de série de volume d’un ensemble de données dans l’une des étapes de job précédentes dans le JCL.
SYSOUTLes paramètres d’instruction DD discutés jusqu’à présent correspondent aux données stockées dans un ensemble de données.
Le paramètre SYSOUT dirige les données vers le périphérique de sortie en fonction de la classe spécifiée.

Voici la syntaxe:
SYSOUT=class

Où si la classe est A alors il dirige la sortie vers l’imprimante, et si la classe est * alors il dirige la sortie vers la même destination que celle du paramètre MSGCLASS dans l’instruction JOB.

Exemple

Voici un exemple qui utilise des instructions DD avec divers paramètres expliqués ci-dessus :


//LCDCOBOL JOB 'TUTO',CLASS=6,MSGCLASS=X,REGION=8K,
//         NOTIFY=&SYSUID
//*
//STEP001  EXEC PGM=ICETOOL,ADDRSPC=REAL
//*
//INPUT1   DD DSN=TUTO.SORT.INPUT1,DISP=SHR
//INPUT2   DD DSN=TUTO.SORT.INPUT2,DISP=SHR,UNIT=SYSDA,
//         VOL=SER=(1243,1244)
//OUTPUT1  DD DSN=MYFILES.SAMPLE.OUTPUT1,DISP=(,CATLG,DELETE),
//         RECFM=FB,LRECL=80,SPACE=(CYL,(10,20))
//OUTPUT2  DD SYSOUT=*

JCL – Paramètre en commun entre EXEC et JOB

Vous trouverez ci-dessous les paramètres en commun entre EXEC et JOB :

Paramètre de mot-cléDescription
ADDRSPPCADDRSPC codé dans l’instruction JOB remplace l’ADDRSPC codé dans l’instruction EXEC de toute étape de job.
TIMESi TIME est codé dans une instruction EXEC, il s’applique uniquement à cette étape de job.
S’il est spécifié à la fois dans les instructions JOB et EXEC, les deux seront en vigueur et peuvent provoquer une erreur de temporisation due à l’un ou l’autre.
Il n’est pas recommandé d’utiliser le paramètre TIME dans les instructions JOB et EXEC ensemble.
REGIONSi REGION est codé dans une instruction EXEC, il s’applique uniquement à cette étape de travail.

REGION codée dans l’instruction JOB remplace la REGION codée dans l’instruction EXEC de toute étape de job.
CONDUtilisé pour contrôler l’exécution de l’étape de travail en fonction du code de retour de l’étape précédente.

Si un paramètre COND est codé dans une instruction EXEC d’une étape de job, le paramètre COND de l’instruction JOB (s’il est présent) est ignoré.
Les différents tests pouvant être effectués à l’aide d’un paramètre COND sont expliqués dans Traitement conditionnel.

Exemple

Voici un exemple simple de script JCL avec les instructions JOB et EXEC :

//LCDCOBOL JOB 'TUTO',CLASS=6,MSGCLASS=X,REGION=8K,
//      NOTIFY=&SYSUID
//*
//STEP001 EXEC PGM=MYCOBOL,PARAM=CUST1000,
//      ACCT=(XXXX),REGION=8K,ADDRSPC=REAL,TIME=1440

JCL – Instruction EXEC

Chaque JCL peut être composé de plusieurs étapes de job.
Chaque étape de tâche peut exécuter directement un programme ou appeler une procédure qui, à son tour, exécute un ou plusieurs programmes (étapes de tâche).
L’instruction, qui contient les informations de programme/procédure d’étape de job, est l’instruction EXEC.

Le but de l’instruction EXEC est de fournir les informations requises pour le programme/la procédure exécuté(e) dans l’étape de job.
Les paramètres codés dans cette instruction peuvent transmettre des données au programme en cours d’exécution, peuvent remplacer certains paramètres de l’instruction JOB et peuvent transmettre des paramètres à la procédure si l’instruction EXEC appelle une procédure au lieu d’exécuter directement un programme.

Syntaxe

Voici la syntaxe de base d’une instruction JCL EXEC :

//Nom-step EXEC Position-param, Keyword-param 

Description

Voyons la description des termes utilisés dans la syntaxe de l’instruction EXEC ci-dessus.

Nom-step

Ceci identifie l’étape de travail dans le JCL. Il peut être de longueur 1 à 8 avec des caractères alphanumériques.

EXEC

Il s’agit du mot-clé pour l’identifier en tant qu’instruction EXEC.

POSITION-PARAM

Ce sont des paramètres positionnels, qui peuvent être de deux types :

Paramètre de positionDescription
PGMIl s’agit du nom du programme à exécuter dans l’étape de travail.
PROCIl s’agit du nom de la procédure à exécuter dans l’étape de travail. Nous en parlerons dans un chapitre séparé.
KEYWORD-PARAM

Voici les différents paramètres de mots-clés pour l’instruction EXEC. Vous pouvez utiliser un ou plusieurs paramètres en fonction des besoins et ils sont séparés par une virgule :

Paramètre de mot-cléDescription
PARMUtilisé pour fournir des données paramétrées au programme en cours d’exécution dans l’étape de job.
Ceci est un champ dépendant du programme et n’a pas de règles définies, sauf que la valeur PARM doit être incluse entre guillemets en cas de caractères spéciaux.

Par exemple donné ci-dessous, la valeur “CUST1000” est transmise sous forme de valeur alphanumérique au programme.
Si le programme est en COBOL, la valeur transmise via un paramètre PARM dans un JCL est reçue dans la LINKAGE SECTION du programme.
ADDRSPPCCeci est utilisé pour spécifier si l’étape de travail nécessite un stockage virtuel ou réel pour l’exécution.
Le stockage virtuel est paginable alors que le stockage réel ne l’est pas et est placé dans la mémoire principale pour exécution.
Les étapes de travail, qui nécessitent une exécution plus rapide, peuvent être placées dans un stockage réel. 

Voici la syntaxe :
ADRESPC=VIRT | REAL

Lorsqu’un ADDRSPC n’est pas codé, VIRT est celui par défaut.
ACCTCela spécifie les informations comptables de l’étape de travail. 

Voici la syntaxe :
ACCT=(ID utilisateur)

Ceci est similaire aux informations de comptabilisation des paramètres positionnels dans l’instruction JOB.
S’il est codé à la fois dans les instructions JOB et EXEC, les informations de comptabilisation dans l’instruction JOB s’appliquent à toutes les étapes de travail où un paramètre ACCT n’est pas codé.
Le paramètre ACCT dans une instruction EXEC remplacera celui présent dans l’instruction JOB pour cette étape de travail uniquement.

JCL – Instruction JOB

L’instruction JOB est la première instruction de contrôle dans un JCL.
Cela donne l’identité du travail au système d’exploitation (OS), dans le spool et dans le planificateur.

Les paramètres de l’instruction JOB aident les systèmes d’exploitation à allouer le bon planificateur, le temps CPU requis et à envoyer des notifications à l’utilisateur.

Syntaxe

Voici la syntaxe de base d’une instruction JCL JOB :

//Nom-job JOB Position-param, Keyword-param 

Description

Voyons la description des termes utilisés dans la syntaxe de l’instruction JOB ci-dessus.

Nom-job

Cela donne un identifiant au job lors de sa soumission au système d’exploitation. Il peut être long de 1 à 8 avec des caractères alphanumériques et commence juste après //.

JOB

Il s’agit du mot-clé pour l’identifier en tant qu’instruction JOB.

Position-param

Il existe des paramètres positionnels, qui peuvent être de deux types :

Paramètre de positionDescription
Information sur le compteIl s’agit de la personne ou du groupe à qui le temps CPU est dû.
Il est défini selon les règles de l’entreprise propriétaire des mainframes.
S’il est spécifié comme (*), il prend alors l’identifiant de l’utilisateur, qui s’est actuellement connecté au terminal mainframe.
Nom du programmeurCeci identifie la personne ou le groupe qui est en charge du JCL.
Ce paramètre n’est pas obligatoire et peut être remplacé par une virgule.
Keyword-param

Voici les différents paramètres de mot-clé, qui peuvent être utilisés dans l’instruction JOB.
Vous pouvez utiliser un ou plusieurs paramètres en fonction des besoins et ils sont séparés par une virgule :

Paramètre de mot-cléDescription
CLASSEn fonction de la durée et du nombre de ressources requises par l’emploi, les entreprises attribuent différentes catégories d’emplois.
Ceux-ci peuvent être visualisés comme des planificateurs individuels utilisés par le système d’exploitation pour recevoir les travaux.
Placer les travaux dans le bon planificateur facilitera l’exécution des jobs.

Certaines entreprises ont des classes différentes pour les emplois dans les environnements de test et de production.

Les valeurs valides pour le paramètre CLASS sont les caractères de A à Z et les chiffres de 0 à 9 (de longueur 1).

Voici la syntaxe :
CLASS=0 à 9 | A à Z
PRTYPour spécifier la priorité du job dans une classe de job.
Si ce paramètre n’est pas spécifié, le job est ajouté à la fin de la file d’attente dans la CLASS spécifiée.

Voici la syntaxe :
PRTY=N

Où N est un nombre compris entre 0 et 15 et plus le nombre est élevé, plus la priorité est élevée.
NOTIFYLe système envoie le message de réussite ou d’échec (code de condition maximum) à l’utilisateur spécifié dans ce paramètre. 

Voici la syntaxe :
NOTIFY=”userid | &SYSUID”

Ici, le système envoie le message à l’utilisateur “userid” mais si nous utilisons NOTIFY = &SYSUID, alors le message est envoyé à l’utilisateur soumettant le JCL.
MSGCLASSPour spécifier la destination de sortie des messages système et de travail lorsque le travail est terminé.

Voici la syntaxe :
MSGCLASS=CLASS

Les valeurs valides de CLASS peuvent aller de “A” à “Z” et de “0” à “9”.
MSGCLASS = Y peut être défini comme une classe pour envoyer le journal des jobs au JMR (JOBLOG Management and Retrieval : un référentiel dans les mainframes pour stocker les statistiques des jobs).
MSGLEVELSpécifie le type de messages à écrire dans la destination de sortie spécifiée dans MSGCLASS.

Voici la syntaxe :
MSGLEVEL=( ST, MSG )

ST = Type d’instructions écrites dans le journal de sortie
– Lorsque ST = 0, instructions Job uniquement.
– Lorsque ST = 1, JCL ainsi que les paramètres symboliques sont développés.
– Lorsque ST = 2, entrée JCL uniquement.

MSG = Type de messages écrits dans le job de sortie.
– Lorsque MSG = 0, les messages d’allocation et de fin sont écrits à la fin d’un travail anormal.
– Lorsque MSG = 1, les messages d’allocation et de fin sont écrits quelle que soit la nature de l’achèvement du travail.
TYPRUNSpécifie un traitement spécial pour le job. 

Voici la syntaxe :
TYPRUN = SCAN | HOLD

Où SCAN et HOLD ont la description suivante :
– TYPRUN = SCAN vérifie les erreurs de syntaxe du JCL sans l’exécuter.
– TYPRUN = HOLD met le travail en attente dans la file d’attente des jobs.
Pour libérer le job, “A” peut être tapé contre le job dans le SPOOL, ce qui amènera le job à s’exécuter.
TIMESpécifie l’intervalle de temps à utiliser par le processeur pour exécuter le travail.

Voici la syntaxe :
TIME=(mm, ss) ou TIME=ss

Où mm = minutes et ss = secondes

Ce paramètre peut être utile lors du test d’un programme nouvellement codé.
Afin de s’assurer que le programme ne s’exécute pas trop longtemps à cause d’erreurs de bouclage, un paramètre de temps peut être codé de sorte que le programme se termine anormalement lorsque le temps CPU spécifié est atteint.
REGIONSpécifie l’espace d’adressage requis pour exécuter une étape de travail dans le job. 

Voici la syntaxe :
REGION=nK | nM

Ici, la REGION peut être spécifiée comme nK ou nM où n est un nombre, K est un kilo-octet et M est un méga-octet.

Lorsque REGION = 0K ou 0M, le plus grand espace d’adressage est fourni pour l’exécution.
Dans les applications critiques, le codage de 0K ou 0M est interdit pour éviter de gaspiller l’espace d’adressage.

Exemple

//LCDCOBOL JOB (*),"tutpoint",CLASS=6,PRTY=10,NOTIFY=&SYSUID, 
//   MSGCLASS=X,MSGLEVEL=(1,1),TYPRUN=SCAN, 
//   TIME=(3,0),REGION=10K         

Ici, l’instruction JOB est étendue au-delà de la 70e position d’une ligne, nous continuons donc à la ligne suivante qui devrait commencer par “//” suivi d’un ou plusieurs espaces.

Paramètres divers

Il existe peu d’autres paramètres pouvant être utilisés avec l’instruction JOB, mais ils ne sont pas fréquemment utilisés :

ADDRSPPCType de stockage utilisé : Virtuel ou Réel
BYTESTaille des données à écrire dans la log de sortie et action à entreprendre lorsque la taille est dépassée.
LINESNombre maximum de lignes à imprimer dans la log de sortie.
PAGESNombre maximum de pages à imprimer dans la log de sortie.
USERID utilisateur utilisé pour soumettre le job
PASSWORDMot de passe de l’ID utilisateur spécifié dans le paramètre USER.
COND et RESTARTCeux-ci sont utilisés dans le traitement conditionnel des étapes de job et sont expliqués en détail lors de la discussion sur le traitement conditionnel.

JCL – Types de paramètres

Chacune des instructions JCL est accompagnée d’un ensemble de paramètres pour aider les systèmes d’exploitation à terminer l’exécution du programme.
Les paramètres peuvent être de deux types :

Paramètres de position

  • Apparaît à la position et dans l’ordre prédéfinis dans l’instruction.
    Exemple : Le paramètre d’informations comptables ne peut apparaître qu’après le mot-clé JOB et avant le paramètre du nom du programmeur et les paramètres du mot-clé.
    Si un paramètre positionnel est omis, il doit être remplacé par une virgule.
  • Les paramètres positionnels sont présents dans les instructions JOB et EXEC.
    Dans l’exemple ci-dessus, PGM est un paramètre positionnel codé après le mot clé EXEC.

Paramètres du mot-clé

  • Ils sont codés après les paramètres de position, mais peuvent apparaître dans n’importe quel ordre.
    Les paramètres de mots-clés peuvent être omis s’ils ne sont pas nécessaires.
    La syntaxe générique est KEYWORD= value . Exemple : MSGCLASS=X, c’est-à-dire que le journal du job est redirigé vers le SPOOL de sortie après l’achèvement du job.
  • Dans l’exemple ci-dessus, CLASS, MSGCLASS et NOTIFY sont des paramètres de mots clés de l’instruction JOB.
    Il peut également y avoir des paramètres de mots clés dans l’instruction EXEC.

Ces paramètres ont été détaillés dans les chapitres suivants avec des exemples appropriés.

JCL – Structure et Description

La structure de base d’un JCL avec les instructions communes est donnée ci-dessous :

//SAMPJCL JOB 1,CLASS=6,MSGCLASS=0,NOTIFY=&SYSUID          (1)
//*                                                        (2)
//STEP010  EXEC PGM=SORT                                   (3) 
//SORTIN   DD DSN=JCL.SAMPLE.INPUT,DISP=SHR                (4)
//SORTOUT  DD DSN=JCL.SAMPLE.OUTPUT,                       (5)
//         DISP=(NEW,CATLG,CATLG),DATACLAS=DSIZE50                
//SYSOUT   DD SYSOUT=*                                     (6) 
//SYSUDUMP DD SYSOUT=C                                     (6) 
//SYSPRINT DD SYSOUT=*                                     (6) 
//SYSIN    DD *                                            (6) 
  SORT FIELDS=COPY                                    
  INCLUDE COND=(28,3,CH,EQ,C'XXX')                                    
/*                                                         (7)  

Les instructions JCL numérotées ont été expliquées ci-dessous :

  • (1) Instruction JOB – Spécifie les informations requises pour la mise en file d’attente du travail, telles que l’ID du travail, la priorité d’exécution, l’ID utilisateur à notifier à la fin du travail.
  • (2) Instruction //* – Il s’agit d’une instruction de commentaire.
  • (3) Instruction EXEC – Spécifie le PROC/Programme à exécuter.
    Dans l’exemple ci-dessus, un programme SORT est en cours d’exécution (c’est-à-dire trier les données d’entrée dans un ordre particulier)
  • (4) Instruction DD d’entrée – Spécifie le type d’entrée à transmettre au programme mentionné en (3).
    Dans l’exemple ci-dessus, un fichier séquentiel physique (PS) est passé en entrée en mode partagé (DISP = SHR).
  • (5) Instruction DD de sortie – Spécifie le type de sortie à produire par le programme lors de l’exécution.
    Dans l’exemple ci-dessus, un fichier PS est créé.
    Si une instruction s’étend au-delà de la 70e position d’une ligne, elle se poursuit sur la ligne suivante, qui doit commencer par “//” suivi d’un ou plusieurs espaces.
  • (6) Il peut y avoir d’autres types d’instructions DD pour spécifier des informations supplémentaires au programme (dans l’exemple ci-dessus :
    la condition SORT est spécifiée dans l’instruction DD SYSIN) et pour spécifier la destination du journal des erreurs/exécutions (exemple : SYSUDUMP/ SYSPRINT).
    Les instructions DD peuvent être contenues dans un ensemble de données (fichier mainframe) ou sous forme de flux de données (informations codées en dur dans le JCL), comme indiqué dans l’exemple ci-dessus.
  • (7) Instruction /* marque la fin des données du flux.

Toutes les instructions JCL, à l’exception des données de flux, commencent par //.
Il doit y avoir au moins un espace avant et après les mots clés JOB, EXEC et DD et il ne doit y avoir aucun espace dans le reste de l’instruction.

JCL – Process du JOB

Un JOB est une unité de travail qui peut être composée de plusieurs étapes de travail.
Chaque étape de travail est spécifiée dans un langage de contrôle des jobs (JCL – Job Control Language) via un ensemble d’instructions de contrôle des jobs.

Le système d’exploitation utilise le système d’entrée des travaux (JES – Job Entry System) pour recevoir les travaux dans le système d’exploitation, planifier leur traitement et contrôler la sortie.

Le traitement des jobs passe par une série d’étapes comme indiqué ci-dessous :

Processus de traitement de job
  • Soumission de job
    Soumission du JCL au JES (Job Entry System).
  • Conversion de job
    Le JCL avec le PROC est converti en un texte interprété pour être compris par JES et stocké dans un ensemble de données, que nous appelons SPOOL.
  • Job Queuing
    JES décide de la priorité du job en fonction des paramètres CLASS et PRTY dans l’instruction JOB (expliqué dans le chapitre JCL – Instruction JOB ).
    Les erreurs JCL sont vérifiées et le travail est planifié dans la file d’attente des travaux s’il n’y a pas d’erreurs.
  • Exécution du job
    Lorsque le travail atteint sa priorité la plus élevée, il est repris pour exécution à partir de la file d’attente des travaux.
    Le JCL est lu à partir du SPOOL, le programme est exécuté et la sortie est redirigée vers la destination de sortie correspondante, comme spécifié dans le JCL.
  • Purge
    Lorsque le job est terminé, les ressources allouées et l’espace JES SPOOL sont libérés.
    Afin de stocker le journal des job, nous devons copier le journal des job dans un autre ensemble de données (dataset) avant qu’il ne soit réalisé à partir du SPOOL.

CICS – Liste des transactions

Liste de certaines des transactions CICS importantes

CESN

CESN est connu sous le nom de CICS Execute Sign On.

  • CESN est utilisé pour se connecter à la région CICS.
  • Nous devons fournir l’ID utilisateur et le mot de passe donnés par l’administrateur CICS pour se connecter à CICS. La capture d’écran suivante montre à quoi ressemble l’écran de connexion –

CEDA

CEDA est connu sous le nom de CICS Execute Definition and Administration. Il est utilisé par les administrateurs système CICS pour définir les entrées de table CICS et d’autres activités d’administration.


CEMT

CEMT est connu sous le nom de CICS Execute Master Terminal. Il est utilisé pour demander et mettre à jour l’état des environnements CICS ainsi que pour d’autres opérations système.

  • En utilisant la commande CEMT, nous pouvons gérer les transactions, les tâches, les fichiers, les programmes, etc.
  • Pour obtenir toutes les options possibles, tapez CEMT et appuyez sur ENTER. Il affichera toutes les options.

CECI

CECI est connu sous le nom d’interpréteur de commandes d’exécution CICS. De nombreuses commandes CICS peuvent être exécutées à l’aide de CECI.

  • CECI est utilisé pour vérifier la syntaxe de la commande. Il exécute la commande, uniquement si la syntaxe est correcte.
  • Tapez l’option CECI sur l’écran CICS vide après vous être connecté. Elle vous donne la liste des options disponibles.
  • CEMT est essentiellement utilisé pour charger un nouveau programme dans le CICS ou pour charger une nouvelle copie du programme dans le CICS après la modification du programme ou du mapset.

CEDF

CEDF est connu sous le nom de CICS Execute Debug Facility. Il est utilisé pour déboguer le programme étape par étape, ce qui aide à trouver les erreurs.

Tapez CEDF et appuyez sur Entrée dans la région CICS. Le message Le terminal est en mode EDF s’affiche. Tapez maintenant l’identifiant de la transaction et appuyez sur la touche Entrée. Après l’initiation, à chaque touche d’entrée, une ligne est exécutée. Avant d’exécuter une commande CICS, il affiche l’écran dans lequel nous pouvons modifier les valeurs avant de continuer.


CCMC

CMAC est connu sous le nom de messages CICS pour les codes de fin anormale. Il est utilisé pour trouver l’explication et les raisons des codes de fin anormale CICS.


CESF

CESF est connu sous le nom de CICS Execute Sign Off. Il est utilisé pour se déconnecter de la région CICS.


CEBR

CEBR est connu sous le nom de CICS Execute Temporary storage Browse. Il est utilisé pour afficher le contenu d’une file d’attente de stockage temporaire ou TSQ.

CEBR est utilisé lors du débogage pour vérifier si les éléments de la file d’attente sont écrits et récupérés correctement. Nous discuterons plus de TSQ dans les prochains modules.