RPG-IV en V4R20 : ° support des variables à longueur variable (VARLEN en SDD) ° variables utilisateur de type indicateur (N) et possibilité d'associer votre propre DS à un écran avec le mot-clé INDARA. ° nouvelles fonctions pour tester le résultat d'une entrée/sortie fichier ° options de compilation pouvant être indiquées sur la spécif H plutôt que sur la commande de compil. (pour utiliser l'option 14 de PDM) ° nouvelles fonctions de traitement de chaînes de caractères. ° le mot-clé OVERLAY peut faire référence à une DS. ° le format *CYMD est modifié, la valeur de "C" pouvant être 2 pour 21xx 3 pour 22xx ... 9 pour 28xx |
Nouveaux mots-clés en spécif H (pratiquement tous les paramètres des commandes de création sauf DBGVIEW) + ACTGRP définition du groupe d'activation ACTGRP(*NEW + un nouveau groupe est créé à chaque appel *CALLER + appartient au même groupe que le pgm appellant un-nom) + appartient au groupe indiqué + DFTACTGRP appartenance (ou non) au groupe d'activation par dft. DFTACTGRP(*YES | *NO) + ALWNULL support (ou non) des valeurs nulles ALWNULL(*NO + pas de support des valeurs nulles *INPUTONLY + en lecture uniquement *USRCTL) + support et gestion de la fonction %NULLIND() |
+ BNDDIR référence à un répertoire de liage indiquant la liste des programmes de service utilisables. ce mot-clé est invalide avec DFTACTGRP(*YES) BNDDIR(répertoire1(:répertoire2:(répertoire3))) il est possible de qualifier chaque répertoire de liage + CVTOPT options de conversion CVTOPT(*DATETIME + support des variables date/heure *NODATETIME + pas de support des variables date/heure *VARCHAR + support des variables à lg variable *NOVARCHAR + pas de support des variables à lg variable (elles sont transformée à lg fixe) *GRAPHIC | *NOGRAPHIC variables DBCS à lg fixe *VARGRAPHIC | *NOVARGRAPHIC) variables DBCS à lg variable |
+ COPYNEST support des /COPY imbriqués on appelle copie imbriquée, la copie d'un membre source contenant lui-même un ordre /COPY. COPYNEST(20) 20 niveaux admis. + ENBPFRCOL Accepter les collectes de performances ENBPFRCOL(*PEP + collecte les performmances pour les appels et retours de programme *ENTRYEXIT + collecte les performmances pour les appels et retours de toutes les procédures *ENTRYEXIT) + collecte des performmances complète + PFRDTA collecte de statistiques pour profilage du programme le profilage de programme est une technique qui consiste à réorganiser les procédures en fonction de statistiques d'utilisation,avec OPTIMIZE(*FULL). PFRDTA(*COL | *NOCOL) |
+ EXTBININT Format des zones externes binaires EXTBININT(*NO + les zones binaires sont transformées en B (maxi 9999 sur 2 octets) *YES) + les zones binaires sont laissées en I (maxi 32767 sur 2 octets) + FIXNBR correction des données numériques invalides si vous choisissez la correction, les blancs et les chiffres inavlides sont remplacés par zéro, les signes invalides par + . FIXNBR(*ZONED | *NOZONED > numérique étendu *INPUTPACKED | *NOINPUPACKED) > numérique packé + GENLVL niveau de gravité empéchant la création du pgm. GENLVL(20) |
+ INDENT indentation du source INDENT('--') + LANGID code langage LANGID(*JOBRUN code langage du JOB qui exécute *JOB code langage du JOB qui compile 'FRA') code langage francais + SRTSEQ séquence de tri SRTSEQ(*HEX | *JOB | *JOBRUN | *LANGIDUNQ | *LANGIDSHR | 'table-de-tri') + OPTIMIZE niveau d'optimisation OPTIMIZE(*NONE pas d'optimisation *BASIC optimisation de base *FULL) optimisation complète |
+ OPTION options de compilation OPTION(*XREF | *NOXREF production des références croisées *GEN | *NOGEN génération du programme *SECLVL | *NOSECLVL impression des messages de second niveau *SHOWCOPY | *NOSHOWCOPY impression des /COPY *EXPDDS | *NOEXPDDS impression des descriptions externes *SHOWSKP | *NOSHOWSKP) impression des lignes sources ignorées (à cause des directives de compil) + TEXT texte du programme + TRUNCNBR en cas de dépassement de capacité, génération d'une erreur ou troncature. TRUNCNBR(*NO | *YES) + USRPRF profil de référence USRPRF(*USER le profil de référence en ce qui concerne la gestion des droits est l'utilsateur seul. *OWNER) les droits du propriétaires du programme s'ajoutent à ceux de l'utilisateur. |
Spécif F INDDS(nom d'une DS constituée de variables de type N) FECRAN01 CF E WORKSTN INDDS(indic) .../... Dindic DS 99 D exit N overlay(indic:3) D invite N overlay(indic:4) D annul N overlay(indic:12) Spécif D VARYING définition d'une variable à longueur variable on teste la longueur par x = %len(nom) on assigne par %len(nom) = 20 OU %len(nom) = %len(trimr(nom)) |
Spécif C nouvelles fonctions %CHAR %CHAR(date|heure|horodatage, expression) conversion au format caractère %REPLACE %REPLACE(c1:c2[:p[:lg]]) remplace par c1 la chaîne de caractère commencant à la position (p) dans c2 sur (lg) caractères. exemple eval x = %scan('4':var1) [var1 = 'AS/400'] eval var2 = %replace('5':var1:x:1) [var2 = 'AS/500'] ou directement eval var2 = %replace('5':var1:%scan('4':var1):1) |
%OPEN(fichier) retourne '1' si le fichier est ouvert %EOF(fichier) retourne '1' si on est en fin de fichier %STATUS(fichier) retourne 0 si la dernière entrée/sortie est normale, sinon retourne le status. %ERROR et extension (E) , vous pouvez sur tous les ordres acceptant un indicateur d'erreur (<<) indiquer une extension (E) et tester (if %error) ensuite. %EQUAL retourne 1 si le dernier SETLL ou le dernier LOOKUP a trouvé l'égalité. %FOUND retourne 1 si le dernier SETLL, SETGT, DELETE, CHAIN a trouvé un enregistrement ou si le dernier CHECK, CHECKR, SCAN a trouvé la chaîne de caractère. |
Exemples : vous remarquerez que les indicateurs ne sont pas indiqués sur la ligne de l'opération d'entrée/sortie, ils sont devenus facultatifs. 1. C code chain ARTICLE C IF %FOUND C .... C .... C ENDIF 2. C code chain ARTICLE C code chain ENTETCDE C IF NOT %FOUND(ARTICLE) AND %FOUND(ENTETCDE) C .... C .... C ENDIF toutes ces fonctions vont vers la limitation des 99 indicateurs |