DCLPRCOPT : Option de compilation CLLE dans le source
lun 22 avril 2019 0 Par IbmiisteAvant la 6.1, les options de compilation d’un programme CL devaient être mémorisées (commentaires dans le source, documentation externe, etc.) puis ressaisies à chaque CRTCLPGM, CRTCLMOD ou CRTBNDCL.
Depuis la 6.1, on peut les déclarer directement dans le source CL grâce à la commande DCLPRCOPT, sur le même principe que ctl-opt en RPG ILE.
Principe de DCLPRCOPT
DCLPRCOPT permet de positionner dans le source les mêmes paramètres que ceux des commandes de compilation CL (CRTCLPGM, CRTCLMOD, CRTBNDCL).
Les valeurs indiquées dans DCLPRCOPT écrasent celles spécifiées (ou par défaut) sur la commande de compilation appelée.
Si un paramètre ne s’applique pas au type de compilation (par exemple DFTACTGRP avec CRTCLPGM), il est simplement ignoré.
Un seul DCLPRCOPT est autorisé par source CLLE.
La commande doit se trouver après PGM et après les autres DCL*, mais avant toute autre commande CL.
Les paramètres de DCLPRCOPT n’ont pas de valeur par défaut : si un paramètre n’est pas indiqué, c’est la valeur de la commande de compilation qui est utilisée.
DCLPRCOPT DFTACTGRP(*NO) ACTGRP(*NEW) BNDDIR(MYLIB/MYBNDDIR) Quelques options
LOG
Gère la génération du job log pour le programme CL.
*JOB: reprend les options du job (CHGJOB LOG(...)).*YES: génère systématiquement un job log à l’exécution.*NO: ne génère aucun job log, même si le job est paramétré pour.
*YES et *NO sont prioritaires sur le paramétrage LOG du job ou la commande CHGJOB.
dclprcopt log(*no)
DFTACTGRP
Indique si le programme CL ILE est compilé dans le groupe d’activation par défaut.
*YES: programme dans le groupe d’activation par défaut.*NO: programme dans un groupe d’activation ILE normal (souvent avecACTGRP(QILE)ou un groupe nommé via la commande de compilation).
Ce paramètre n’est pris en compte que pour CRTBNDCL (CL ILE). Pour CRTCLPGM ou CRTCLMOD, il est ignoré.
dclprcopt dftactgrp(*no) actgrp(qile)
BNDSRVPGM
dclprcopt dftactgrp(*no) +
bndsrvpgm(MYLIB/MYSRVPGM)
Permet d’indiquer la/les *SRVPGM à lier lors de la compilation d’un CL ILE.
Cela évite d’avoir à répéter les mêmes paramètres BNDSRVPGM dans la commande CRTBNDCL (ou CRTPGM après CRTCLMOD) et garantit que le lien vers la *SRVPGM reste cohérent dans le temps.
BNDDIR
Indique la liste des répertoires de liage à examiner pour la résolution des symboles.
dclprcopt dftactgrp(*no) +
actgrp(*new) +
bnddir(MYLIB/MYBNDDIR)
Exemple complet CLLE ILE avec options intégrées
pgm parm(&PARM1)
dcl &PARM1 *char 10
/* Options de compilation du programme */
dclprcopt dftactgrp(*no) +
actgrp(QILE) +
log(*no) +
usrprf(*owner) +
bnddir(MYLIB/MYBNDDIR)
/* Corps du programme */
/* ... */
endpgm
Dans cet exemple, le programme est compilé en CL ILE dans l’activation group QILE, sans job log, en adoptant le profil propriétaire et en utilisant un répertoire de liage standard pour retrouver les *SRVPGM.
Pourquoi l’utiliser systématiquement
- Lisibilité : les options de compilation sont visibles au même endroit que le code.
- Reproductibilité : même si la commande
CRTCLPGM/CRTBNDCLchange, les options spécifiques au programme restent stables. - Industrialisation : dans un contexte ARCAD / DevOps, tu peux garder des commandes de compilation génériques, tout en adaptant finement le comportement de chaque CL dans le source.

