RPG-IV et directives de compilation

BoTTom |    Changer de couleur
 
 Vous connaissez les directives de compilation du GAP :
 
 
  directives liées à la présentation de la liste de compilation.
 
 67++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  /TITLE   titre de chaque page
  /EJECT    (saut de page)
  /SKIPx    (saut de lignes [x étant compris entre 1 et 3].)
 
  directive de copie de source (ressemblant à un "include") :
 
  /COPY    copie d'un autre membre source : /COPY [bib/]fichier,membre
 
 
  les /COPY multiples et imbriqués sont maintenant admis avec le mot-clé
 
    COPYNEST() en spécif H
 
 
 


|    Changer de couleur
 
 pour éviter les copies itératives (en boucle) et les doubles définitions
 
 les directives suivantes sont admises :
 
 67++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  /DEFINE nom-condition
 
      définition d'un nom qui rendra vrai le test /IF DEFINE(nom)
 
  /UNDEFINE nom-condition
 
      la condition est enlevée.
 
 
  /IF DEFINED(nom)
  /IF NOT DEFINED(nom)
 
      test sur un nom-condition.
 
  /ENDIF
      fin du test


|    Changer de couleur
 
 /ELSEIF DEFINED(nom)
 
 /ELSEIF NOT DEFINED(nom)
 
      tests imbriqués
 
 /ELSE
 
      si tous les tests précédents sont faux
 
 /EOF
 
      considérer la fin du fichier source comme atteinte
 
quelques règles :
 
  1/ A chaque /IF doit correspondre un /ENDIF
 
  2/ les directives /ELSEIF et /ELSE ne sont valides qu'à l'intérieur d'un
                                                                       test
  3/ un ordre /ELSEIF n'est pas admis après un ordre /ELSE


|    Changer de couleur
 
 Exemple d'utilisation:
 
 
  /If Not Defined( MaFonction )
  /Define          maFonction
  /Else
  /Eof
  /EndIf
 
 
  *
  *
  * procédure de "MaFonction"
  *
  *
 D MaFonction             PR
 D
 
 
La commande de compil (CRTRPGMOD) contient un paramètre DEFINE, permettant
    de définir un nom-condition à la compil.(notion de version par exemple)


|    Changer de couleur
 
 Et enfin, la V5R10 ammène les conditions suivantes :
 
 *ILERPG     : vrai si vous utilisez le compilateur RPG
               faux si vous utilisez VisualAge RPG
 
 *CRTBNDRPG  : vrai si vous utilisez la cde CRTBDNRPG
               faux dans la cas contraire (CRTRPGMOD puis CRTPGM)
 
 *CRTRPGMOD  : vrai si vous utilisez la cde CRTRPGMOD
               faux dans la cas contraire (CRTBNDRPG)
 
 *VxRyMz     : vrai si vous êtes au niveau de version VxRyMz
               (disponible depuis la V4R4M0 avec SF65716)
 
par exemple :
 
  /If Defined( *crtrpgmod )
 H DFTACTGRP(*no) ACTGRP(xxxx)
  /endif
 H OPTION(*srcstmt : *nodebugio)
 


|    Changer de couleur
 
 
Attention en ce qui concerne les ordres /COPY et /EOF dans des sources
 SQLRPGLE.le pré-compilateur traite les ordres SQL puis exécute les /COPY
  et enfin appel le compilateur RPG qui recoit un seul source
  (ou les copies sont déja faite).
 
 malheureusement, le pré-compilateur ne traite pas les /IF et /EOF qui sont
  donc transmis tel quel au compilateur RPG.
 
le compilateur RPG rencontrant un ordre /EOF arrète , non pas la copie
 (elle est déja faite) , mais la lecture du source, c.a.d la compilation.
 
 
Pour remédier à ce problème, utilisez un nouvel ordre : /INCLUDE.
 
il est identique au /COPY sauf qu'il est ignoré du pré-compilateur SQL
 et sera traité uniquement par le compilateur RPG.
 
 
il est disponile en V4R50 (en standard) et V4R40 via ptf SF61918
 





©AF400