Nouveautés RPG de la version 7.1

BoTTom |    Changer de couleur
 Nouveautés RPG de la version 7.1
 
 elle sont assez peu nombreuses
 
  - ALIAS , Pour un fichier physique ayant des noms long :
 
     -> en SDD    R CLIENTF1
                    NOCLI          6  O       ALIAS(NUMERO_CLIENT)
 
     -> en SQL    CREATE TABLE CLIENTP1
                  (NUMERO_CLIENT for column NOCLI DEC(6, 0) ,  ...
 
     génère les alias plutôt que les noms systèmes, en nom de zone RPG
 
sur les spécifs F :
 
     FCLIENTP1  IF   E             DISK     ALIAS
 
et sur les spécifs D
 
     DclientDS       E DS                   EXTNAME(CLIENTP1) ALIAS
 


|    Changer de couleur
 
  Le nom de la zone déclarée est NUMERO_CLIENT
 
    (les noms peuvent faire jusqu'à 4096 C. en RPG)
 
  cela fonctionne avec les DS qualifiées
 
     DclientDS       E DS                   EXTNAME(CLIENTP1) QUALIFIED
                                                              ALIAS
      le nom à utiliser est clientDS.NUMERO_CLIENT
 
 
  Pour une DS externe si vous souhaitez renommer la zone c'est le nom long
   qu'il faut indiquer dans EXTFLD
 
     DclientDS       E DS                   EXTNAME(CLIENTP1) ALIAS
     D   clinumero   E                      EXTFLD(NUMERO_CLIENT)
 
 
  enfin si vous utilisez PREFIX en indiquant le nombre de caractères à
   remplacer cela ne s'applique pas à une zone ayant un ALIAS.
 


|    Changer de couleur
 
  - plus de possibilités sur les DS à dimensions
 
      -> possibilité de les trier sur une colonne particulière
 
             SORTA clientDS(*).depart;
 
      -> possibilité de recherche par lookup
 
             pos = %lookup(44 : clientDS(*).depart );
 
 
  - amélioration du tri par SORTA
 
      en plus du fait de savoir trier des DS à dimension,l'ordre SORTA
       admet maintenant un critère de  tri (A ou D) en option
 
             SORTA(A) tbtva;
 
     le tableau doit avoir été déclaré SANS critère de tri ASCEND ou DESCEND
 
 


|    Changer de couleur
 
  - nouvelle fonction %SCANRPL qui cherche ET remplace une chaine
 
       chaine1 = 'recherche de la chaîne "RPG" en RPG';
       chaine1 = %scanRPL('RPG' : 'ILE' : chaine1);
 
       // chaine1 contient 'recherche de la chaîne "ILE" en ILE'
 
  - la fonction %LEN admet en 2eme argument *MAX permet de retrouver pour
      une variable à taille variable, non pas la taille actuelle, mais la
      taille maxi.
 
  exemple
 
     Dchaine2          s            255    varying
     Di                s              5I 0
      /free
       chaine2 = 'Bonjour';
       i = %len(chaine2);      // i = 7
       i = %size(chaine2);     // i = 257 (à cause des deux octets binaires)
       i = %len(chaine2:*MAX); // i = 255
      /end-free


|    Changer de couleur
 
  - la fonction %PARMNUM retourne la position d'un paramètre
 
  - les DS externes utilisent les noms d'ALIAS (au sens SDD)
      plutôt que les noms courts (sur 10) avec le mot-clé RPG ALIAS.
 
  - les valeurs retour des fonctions peuvent être maintenant
      transmises en tant que paramètre (caché)
 
    effet les valeurs retour des fonctions étaient transmises en tant
     que valeur sur la pile d'appel.
 
    lorsque ces dernières étaient de grande taille, cela avait un impact
     sur les performances, particulièrement lors d'appels successifs.
 
    en utilisant RTNPARM la valeur retour est en fait un paramètre
     supplémentaire transmis par adresse, donc plus rapide d'accès.
 
 
    ce paramètre doit être indiqué dans le prototype ET l'interface de
     procédure.
 


|    Changer de couleur
 
 Si vous appellez un langage autre que RPG, vous devez alors fournir un
  paramètre supplémentaire en première position pour la valeur retour.
 
 Exemple :
 
     D getLibText      pr            50a   RTNPARM
     D   bib                         10a   CONST
      /free
         if getLibText('BDVIN1') = *blanks;
 
           .../...
 
 PGM PARM(&TEXT &BIB)
 DCL &TEXT TYPE(*CHAR) LEN(50)
 DCL &BIB  TYPE(*CHAR) LEN(10)
 
 RTVOBJD OBJ(&BIB) OBJTYPE(*LIB) TEXT(&TEXT)
 
  .../...
 
 Ce paramètre RTNPARM n'est admis qu'avec des procédures.


|    Changer de couleur
 
  - les prototypes n'ont plus à être indiqués impérativement dans le source
      qui implémente une fonction, mais uniquement dans ceux qui l'utilisent
 
   par exemple dans un programme de service, ce code suffit :
 
     P getDate         B                   EXPORT
     D                 pi              D
      /free
         return %date() ;
      /end-free
     P getDate         E
 
 bien sur dans les programmes utilisant la fonction, il faudra écrire :
 
     D getDate         PR              D
 
 le compilateur devant absolument savoir que getDate est une fonction :
 
      a/ sans paramètre
      b/ qui retourne une date
 


|    Changer de couleur
  - depuis les origines, le source de votre programme peut être incorporé
      à l'exécutable avec DBGVIEW(*LIST), permettant le debug sur une
      machine n'ayant pas le source à disposition localement.
 
    Cette partie peut être cryptée avec DBGENCKEY sur CRTRPGMOD, CRTBNDRPG
 
   vous devez fournir la clé : STRDBG DBGENCKEY('clé'), sinon vous verrez:
 
                    Entrée de la clé de déchiffrement 
 
 Fichier source . :   QRPGLESRC        Membre source  . :   TESTV7
 
 Bibliothèque                          Module . . . . . :   TESTV7
   source . . . . :   FORMATION1
                                       Bibliothèque . . :   FORMATION1
 
 Vue en cours:   Vue listage ILE RPG
 
 Entrez la clé de déchiffrement, puis appuyez sur ENTREE.
 
                                                                      Fin
 F3=Exit   F12=Annuler





©AF400