Compiler facilement un programme COBOL avec un JCL sur z/OS

Afin d’obtenir un load exécutable d’un programme COBOL simple sur z/OS ou MVS, deux étapes sont nécessaires :

  • la compilation
  • le link-edit

L’écriture du JCL réalisant ces deux étapes est complexe et nécessitera du temps en cas de modification.

Une procédure IBM cataloguée, présente par défaut sur les machines z/OS, réalise toutes ces étapes en un minimum de lignes : c’est la procédure IGYWCL.

Utilisation basique de la procédure IGYWCL

Je vous propose ce JCL qui utilise cette procédure IGYWCL et qui nécessitera une petite adaptation de votre côté :

  • renseigner le nom du programme dans les bibliothèques de source COBOL et de LOAD
  • renseigner les DSN (DataSet Name) des bibliothèques
1
2
3
4
5
6
7
8
9
10
11
12
13
14
//MONJOB JOB 'COMPIL',REGION=1M,NOTIFY=&SYSUID          
//*                                                          
//*=========================================================*
//*  JCL DE COMPILATION                                     *
//*                                                         *
//*  A REALISER :                                           *
//*  -> REMPLACER LE NOM DU MEMBRE PAR VOTRE PROGRAMME      *
//*  -> ADAPTER LE CHEMIN DES BIBLIOTHEQUES                 *
//*=========================================================*
//*                                                          
//COMPIL       EXEC IGYWCL                                        
//COBOL.SYSIN  DD DSN=VOTREUSER.CHEMIN.COBOL(VOTREPROGRAMME),DISP=SHR    
//LKED.SYSLMOD DD DSN=VOTREUSER.CHEMIN.LOAD(VOTREPROGRAMME),DISP=OLD    
//

Compilation avec utilisation de bibliothèques contenant des copies

Si vous souhaitez inclure une bibliothèque contenant des copies, le JCL ci-dessus évoluera légèrement en incluant une carte DD COBOL.SYSLIB :

1
2
3
4
5
6
//COMPIL       EXEC IGYWCL,PARM='LIB'                              
//COBOL.SYSIN  DD DSN=VOTREUSER.CHEMIN.COBOL(VOTREPROGRAMME),DISP=SHR    
//COBOL.SYSLIB DD DSN=VOTREUSER.CHEMIN.COPY,DISP=SHR              
//             DD DSN=VOTREUSER.CHEMIN.AUTRESCOPY,DISP=SHR   (à ajouter si besoin)
//LKED.SYSLMOD DD DSN=VOTREUSER.CHEMIN.LOAD(VOTREPROGRAMME),DISP=OLD    
//

Vous pouvez ajouter autant de cartes DD complémentaires que vous le souhaitez, si besoin. Ceci est utile principalement dans le cas où les copies sont réparties dans plusieurs bibliothèques :

1
2
3
//COBOL.SYSLIB DD DSN=VOTREUSER.CHEMIN.COPY,DISP=SHR              
//             DD DSN=PRJZOE.SRC.COPY,DISP=SHR  
//             DD DSN=BLIB.MAC,DISP=SHR

Compilation de programmes COBOL appelant des sous-modules

Si vous effectuez une compilation d’un programme appelant des sous-modules, la carte DD LKED.SYSLIB sera à préciser. Elle permettra de préciser la ou les bibliothèques dans lesquelles chercher les LOAD des sous-modules lors de l’étape de link-edit. Si cette carte manque, vous rencontrerez l’erreur suivante :

1
IEW2456E 9207 SYMBOL MSOUSMODULE UNRESOLVED.  MEMBER COULD NOT BE INCLUDED FROM THE DESIGNATED CALL LIBRARY.

Le JCL qui permettra d’inclure les bibliothèques des loads des sous-modules lors de la compilation :

1
2
3
4
5
6
7
//COMPIL       EXEC IGYWCL,PARM='LIB'                              
//COBOL.SYSIN  DD DSN=VOTREUSER.CHEMIN.COBOL(VOTREPROGRAMME),DISP=SHR    
//COBOL.SYSLIB DD DSN=VOTREUSER.CHEMIN.COPY,DISP=SHR        
//LKED.SYSLIB  DD DSN=VOTREUSER.CHEMIN.LOAD,DISP=SHR            
//             DD ....                                (à ajouter si besoin)
//LKED.SYSLMOD DD DSN=VOTREUSER.CHEMIN.LOAD(VOTREPROGRAMME),DISP=OLD    
//

Pour aller plus loin

Vous pouvez préciser simultanément d’autres cartes DD attendues par la procédure si d’autres besoins spécifiques de compilation se présentent.

A venir, d’autres JCL de compilation, notamment pour des programmes COBOL utilisant DB2.

Une réponse sur “Compiler facilement un programme COBOL avec un JCL sur z/OS”

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *