fr en

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) ’)