
|
ILE / RPG-IV Historique du GAP : GAP II ==> IBM 34 , 36 GAP III ==> IBM 38 RPG/400 ==> AS/400 en V2R30, IBM propose un nouveau concept, ILE, permettant de mieux intégrer certains langages. particulièrement le C. en V3R10, trois nouveaux compilateurs sont à la norme ILE (RPG, COBOL, CL) en même temps le RPG subit de profondes transformations de structure et de syntaxe pour devenir le RPG 4. |
la structure générale d'un programme RPG-IV est la suivante : (ce n'est plus HFELICO) mais HFDICO H F D I C O **FTRANS <---> source de conversion pour les fichiers lus. (mot-clé FTRANS / H) **ALTSEQ <---> source de la table de tri (mot-clé ALTSEQ / H) **CTDATA <---> source des tableaux chargés à la compile. (mot-clé CTDATA / D) Si vous utilisez les codes **FTRANS, **ALTSEQ, **CTDATA l'ordre d'apparition des lignes sources n'importe pas. Sinon, vous devez respecter l'ordre indiqué ci-dessus. |
Spécification de contrôle en RPG-IV (spécif H) ! RPG-IV ! Valeur ! !---------!----------------------------! ! 6 ! H ! ! ! ! ! 7-80 ! Mots-clés (format libre) ! ! ! ! !---------!----------------------------! Si le source ne contient aucune spécif H, le compilateur cherche une data area nommée 1/ RPGLEHSPEC dans *LIBL 2/ DFTLEHSPEC dans QRPGLE Si aucune data area n'est trouvée, RPG assume des valeurs par défaut (voir les valeurs par défaut, mot-clé par mot-clé). La spécification de contrôle peut occuper plusieurs lignes Un mot-clé peut être scindé sur plusieurs lignes (sans marque de continuation) |
Exemples :
*.. 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+.
HKeywords++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
H ALTSEQ(*EXT) CURSYM('$') DATEDIT(*MDY) DATFMT(*MDY/) DEBUG(*YES)
H DECEDIT('.') FORMSALIGN(*YES) FTRANS(*SRC) DFTNAME(name)
H TIMFMT(*ISO)
HKeywords++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
H ALTSEQ(
H *EXT
H )
Mots-clés :
+ ALTSEQ(*NONE *SRC *EXT) séquence alternée.
Il s'agit du critère de tri/comparaison utilisée par IF, COMP, SORTA, ...
*NONE (ou mot-clé absent) = séquence de classement normale
*SRC (ou sans paramètre) = séquence de classement indiquée dans le source
*EXT = SRTSEQ et LANGID de la commande CRTRPGxxx
|
Avec ALTSEQ(*SRC) le compilateur ira chercher le source de la table de tri
en fin de source.
1 à 6 ALTSEQ
7 10 à blanc
11 12 valeur héxa du caractère d'origine
13 14 valeur héxa du caractère de remplacement
.... et ainsi de suite
**ALTSEQ
ALTSEQ 81C182C2....
+ CURSYM('x') où x est le symbole monétaire
+ DATEDIT(format<séparateur>) format d'édition de la date
Représente le format d'édition des variables numériques avec edit-code Y
formats valides : *YMD, *MDY, *DMY
séparateur par défaut : '/' (& = l'espace)
|
+ DATFMT(format<séparateur>) format par défaut des variables date.
formats valides : *YMD,*MDY,*DMY,*JUL - *ISO,*USA,*EUR,*JIS
séparateurs : <--- au choix ----> <---- imposé ----->
+ DEBUG(*NO/*YES) rend actif (*YES) le code opération "DUMP".
+ DECEDIT('x') format d'édition des données numériques.
il n'y a plus de dépendance avec le format de la date.
'.' 123/1000 = .123 <- défaut
',' = ,123
'0.' = 0.123
'0,' = 0,123
+ DFTNAME(nom) nom du programme ou module
si non précisé, RPG utilise les paramètres de CRTRPGxxx
+ FORMSALIGN(*NO/*YES) *YES fait que le système demande de vérifier
l'alignement lors de l'impression d'une spécif O
conditionnée par 1P.
|
+ FTRANS(*NONE/*SRC) conversion des fichiers. FTRANS(*SRC) fait référence à une spécif **FTRANS en fin de source, indiquant les caractères à convertir pour un ou plusieurs fichiers (il y a aussi conversion de l'argument utilisé par CHAIN,SETLL,...) 1 à 8 *FILES conversion s'appliquant à tous les fichiers 1 à 8 nom de fichier conversion s'appliquant à un fichier particulier (le nom est celui utilisé en Spécif F). 9 10 à blanc 11 12 valeur héxa du caractère d'origine 13 14 valeur héxa du caractère de remplacement .... et ainsi de suite ! **FTRANS ! ou **FTRANS *FILES 81C182C2.... ! FIC01 81C182C2.... ! FIC02 F1C1F2C2.... + TIMFMT(format<séparateur>) format par défaut des variables heure formats valides : *HMS - *ISO,*USA,*EUR,*JIS séparateurs : ! <---- imposé -----> !-> au choix |
Mots-clés des versions V3R60 / V3R20 :
+ NOMAIN (sans paramètres) : source ne contenant que des procédures.
n'ayant pas de programme principal, il n'y aura pas de cycle
généré par le compilateur (c'est une première)
+ COPYRIGHT('votre signature')
génère un copyright dans le programme ou le programme de service.
Mots-clés en V3R70 :
+ COPYNEST(1 -2048) support des /COPY imbriqués
+ EXPROPTS( ) précision des variables intermédiaires.
*MAXDIGITS : nombre maximal de chiffres après la virgule.
*RESDECPOS : même précision de la variable résultat
+ FLTDIV(*NO ! *YES) indique si les divisions (dans les expressions)
sont faites en notation scientifique.
|
Nouveaux mots-clés en spécif H V4R20 : (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 (dft) *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 (dft) *NODATETIME + pas de support des variables date/heure *VARCHAR + support des variables à lg variable (dft) *NOVARCHAR + pas de support des variables à lg variable (elles sont transformées à 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 performances pour les appels et retours de programme *ENTRYEXIT + collecte les performances pour les appels et retours de toutes les procédures *ENTRYEXIT) + collecte des performances 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 invalides sont remplacés par zéro, les signes invalides par + . FIXNBR(*ZONED | *NOZONED > sur le numérique étendu *INPUTPACKED | *NOINPUPACKED) > sur le 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 français
+ 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('votre texte') 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.
|
Nouveaux mots-clés en spécif H V4R40 : + OPTION(*SRCSTMT | *NOSRCSTMT) avec *SRCSTMT le compilateur génère une table de DEBUG ou chaque instruction porte le N° de ligne source avec *NOSRCSTMT les lignes dans l'objet sont numérotées en séquence + OPTION(*DEBUGIO | *NODEBUGIO) avec *DEBUGIO le compilateur génère dans la table de DEBUG une ligne par spécif I (ou O). ainsi un READ peut entrainer 10 points d'arret (ou plus) en mode pas à pas. avec *NODEBUGIO, un READ entraine UN SEUL point d'arret. |
+ CCSID(*GRAPH : *IGNORE | *SRC | n°) indique le CCSID DBCS par défaut pour le module. + CCSID(*UCS2 : n°) indique le CCSID UNICODE par défaut pour le module (dft = 13488) + INTPREC(10 | 20) indique la précision par défaut pour les calculs en binaire + OPENOPT(*NOINZOFL | *INZOFL) indique si l'indicateur d'Overflow doit être remis à *OFF (*INZOLF) ou non lors d'un OPEN sur le PRTF. + THREAD(*SERIALIZE) indique que ce pgm est compatible avec les threads (Java). |