Attributs de compilation
Commandes à exécuter à la compilation
Objectif :
ARCAD permet de définir, directement dans le code source des programmes (RPG/RPGLE/FREE), les :
- Attributs de compilation.
- Commandes à exécuter avant ou après la compilation.
Incorporer les attributs de compilation au code source est extrêmement utile car cela permet de conserver ces attributs sans avoir à les récupérer et à les saisir avant chaque compilation. Cela permet de les visualiser et de les maintenir très facilement. Et surtout de les porter à la connaissance de toue personne devant travailler sur ce composant.
Cela est tout aussi valable pour les commandes à exécuter avant la compilation (création de tables temporaires, OVRDBF, …), pouvoir les consulter et les modifier et tout aussi simple.
1 - Les attributs de compilation : %ATTR
Les attributs de compilation se codifient avec l’instruction %ATTR suivi de l’attribut à initialiser et de la valeur à lui donner.
L’instruction %ATTR doit être mise en début de programme et en commentaire.
C’est ainsi que la ligne de commentaire contenant le %ATTR sera prise en compte dans le process de compilation ARCAD.
Voici quelques exemples d’initialisation d’attribut de compilation directement dans le code source en commentaire :
-
Définir le fichier source contenant les prototypes inclus dans le programme
// %ATTR INCFILE(*libl/mon_fichier_source_de_prototypes) -
Passer le pré-compilateur RPG au niveau 2 (source RPG pré-analysé, COPY et INCLUDE compris)
// %ATTR RPGPPOPT(*LVL2) - Désactiver le Commitment control et définir le profil utilisateur
// %ATTR COMMIT(*NONE) USRPRF(*USER)
2 - Les commandes à exécuter à la compilation : %EXEC
Pour exécuter des commandes avant ou après la compilation, ARCAD apporte les instructions %EXEC %EXECM %EXECA %EXECAM.
- %EXEC Exécute une commande avant compilation
- %EXECM Exécute une commande avant compilation et monitor toute erreur levée par la commande
- %EXECA Exécute une commande après compilation
-
%EXECAM Exécute une commande après compilation et monitor toute erreur levée par la commande
L’instruction %EXECx doit être mise en début de programme et en commentaire.
Remarque : Ces commandes sont exécutées à la compilation. Elles ne seront jamais lancées lors de l’exécution du programme.
Voici quelques exemples de lancement de commandes avant ou après compilation directement dans le code source en commentaire :
- Ajouter une bibliothèque à la liste de bibliothèque, avant compilation.
Grace au %EXECM si la bibliothèque fait déjà partie de la liste, le message d’erreur sera monitoré et le process de compilation poursuivra son exécution.
// %EXECM ADDLIBLE LIB(ma_bibliotheque) - Lancer et monitorer une commande CL avant compilation, ici DSPPGMREF avec une sortie fichier
// %EXECM DSPPGMREF PGM(SCNSRCP01) OUTPUT(*OUTFILE) OUTFILE(QTEMP/DSPPGMREFF)
-
Dupliquer un fichier avant la compilation
// %EXEC CRTDUPOBJ OBJ(mon_fichier_1)+
FROMLIB(*LIBL) OBJTYPE(*FILE) TOLIB(QTEMP) NEWOBJ(mon_fichier_2) - Créer un OVRDBF avant la compilation
// %EXEC OVRDBF mon_ovrdbf *LIBL/mon_fichier - Supprimer l’OVRDBF après compilation
// %EXECAM DLTOVR FILE(mon_ovrdbf) -
Créer une table dans QTEMP avant compilation avec SQL
// %EXECAM AEXCSQL SQLSTM(‘+
CREATE TABLE QTEMP.ma_table AS (+
SELECT zone_1, zone_2+
FROM ma_table_origine) ’)