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 |
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. |
- 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 |
- 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 |
- 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. |
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. |
- 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 |
- 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 |