P R E S E N T A T I O N - I L E / R P G Les spécifications passent à 100 colonnes. Avec plus de format libre (pas toujours) Avec une notation par mots-clés (type SDD) SPECIFICATIONS RECONNUES (dans l'ordre) H -> paramètres généraux F déclarations des fichiers D déclarations de structures et de variables (cf WORKING STORAGE) I précisions sur les buffers des fichiers lus C codes-opérations O sorties ** -> conversions de fichiers ** -> séquences alternées (NLS) ** -> tableaux chargés à la compilation |
Régles en ce qui concerne les noms : + le premier caractère doit être une lettre de l'alphabet ou $,£,@ + les autres peuvent être en plus '_', '.', ... + RPG admet aussi bien minuscules que MAJUSCULES (aucune différence) + 10 CARACTERES MAXI Mots réservés: ceux de RPG V2R30 plus *ALLX'20' = répétition d'un caractère héxa *NULL = valeur nulle pour un POINTEUR *OMIT = paramètre omis lors d'un appel de procédure (API ILE) |
Spécif H H en colonne 6 7 à 80 : des mots-clés quelques mots-clés: ALTSEQ( ) séquence alternée (voir NLS) CURSYM('x') symbole monétaire DATEDIT( ) édition de la date DECEDIT( ) édition des données numériques DATFMT( ) format des variables DATE TIMFMT( ) format des variables Heure |
Spécif F (pour un fichier externe) F en colonne 6 7 à 16 : nom du fichier 17 : usage I,O,U,C 18 : utilisation (par le cycle) P,S,F 19 : E = fin de fichier anticipée 20 : A = Ajout dans le fichier 21 : séquence pour le matching 22 : F = interne, E = Externe 34 : K = utilisation de la clé 36-42 : unité DISK, PRINTER, WORKSTN 44-80 : mots-clés |
Spécif F de continuation = 7-43 à blanc, 44-80 : Mots-clés quelques mots-clés : COMMIT(flag) Fichier sous contrôle de validation, peut être conditionné (flag, qui est une variable RPG, contenant '0' ou '1') DATFMT( ) format des variables DATE de ce fichier EXTIND(*INUx) ouverture controlée par un switch externe FORMLEN(xxx) nbr de lignes/page FORMOFL(xx) ligne d'overflow IGNORE(F1 F2) liste des formats à ignorer INCLUDE(F1 F2) liste des formats à considérer (les autres sont ignorés) |
INFDS(nom-ds) nom de l'INFDS INFSR(nom-sr) nom du sous-programme INFSR OFLIND(*INxx) indicateur d'overflow PREFIX(xx) préfixe à ajouter devant tous les noms de zone venant de ce fichier RENAME(formatE formatI) renommer un format SFILE(format rang) définit la variable n° de rang pour un sous-fichier USROPN fichier ouvert dans le pgm (par ordre OPEN) |
Spécif D D en colonne 6 7 à 21 : nom de zone, de tableau, de DS (indentation possible) 22 : E = DS externe 23 : type de DS S = système U = associée à une data area 24-25 : type de définition ' ' = sous-zone de data structure DS = data structure C = constante S = variable élémentaire ou tableau 26-32 : position de début (facultative) 33-39 : position de fin ou longueur |
40 : Type : A = caractère G = graphique (DBCS) T = heure Z = horodatage D = date P = packé B = binaire S = numérique étendu * = pointeur (d'adresse ou de procédure) 41-42 : nbr de décimales 44-80 : mots-clés ASCEND/DESCEND : ordre de tri pour un tableau BASED(nom) : variable adressée par un pointeur CONST('constante') ou sous la forme 'constante' CTDATA : tableau chargé à la compilation |
DIM(x) : définition d'un tableau (x = nb d'éléments) OCCURS(x) : DS à occurences multiples (x = nb d'occurences) DTAARA(nom) : nom de la data area (identique à *DTAARA DEFINE) EXPORT : variable globale entre procédures (elle est "possédée" par ce pgm) IMPORT : variable globale entre procédures (elle est "possédée" par un autre pgm) INZ(valeur) : valeur initiale LIKE(nom) : définition d'une variable par rapport à une autre (lg peut être notée sous la forme + xxx) OVERLAY(nom:pos): sous-zone d'une data structure (alternative à l'écriture avec position de début) PROCPTR : pointeur de procédure |
exemples : DName+++++++++++ETDsFrom+++To/L+++IDc.Keywords++++++++++++++++++++ DINFOCLI DS D nomcli 1 20 D adrcli 21 40 D vilcli 41 55 D cdpst 56 60 0 ou DINFOCLI DS D nomcli 20 D adrcli 20 D vilcli 15 D cdpst 5 0 DINFOCLI DS D nomcli 20 D adrcli 20 D vilcli 15 D cdpst 5 0 D dept 2 0OVERLAY(cdpst) D bdist 3 0OVERLAY(cdpst:3) |
La spécif I se résume (pour les fichiers externes) à : l'attribution d'un indicateur d'entrée. au RENAME des zones d'entrée à l'association avec des indicateurs Lx ou Mx. la spécif C a deux formats un format court (facteur 2 à 14 positions). [SEU = IPC] un format long (facteur 2 étendu à 45 positions) [SEU = IPCX] cela dépend du code opération la spécif O (de moins en moins utilisée est assez comparable à l'existant) |
Spécif C (format court) C en colonne 6 7-8 : Lx 9-11 : UN (!) indicateur sous la forme Nxx 12-25 : facteur 1 26-35 : code opération sous la forme CODE(O) O étant une option pouvant prendre les valeurs : (H) = arrondi .................... (N) = lecture sans verrouillage : en fait tout ce : (P) = complémentation à blanc : qui pouvait se : (D) = manipulation d'une date : dire en col. 53. : (T) = manipulation d'une heure :..................: (Z) = manipulation d'un horodatage |
36-49 : facteur 2 50-63 : zone résultat 64-68 : lg 69-70 : nb de décimales 71-76 : indicateurs résultats Spécif C (format long) idem jusqu'à 35 , sauf que la seule option possible est (H). 36-80 : facteur 2 code-op Facteur2+++++++++++++++++++++++++++ utilisable sous la forme : EVAL A = B * (C + 4) / 3 ou bien : IF (expression logique comprenant: ) DOU/DOW ( AND, OR, NOT, parenthèses ) WHEN ( = , > , < , >= , <= , <> ) |
Expressions utilisables en facteur 2 étendu: opérations mathématiques : + , * , / , - , ** (élévation à la puissance) opération de chaîne/car. : + (concaténation), plus les fonctions intégrées suivantes : %ADDR(zone) renvoie l'adresse (pointeur) %ELEM(tbl) renvoie le nombre d'éléments (ou d'occurences) %PADDR(procédure) renvoie le pointeur d'une procédure %SIZE(zone) donne la taille d'une structure %SUBST(zone:déb:lg) idem %SST en CL %TRIM(zone) supprime les blancs aux deux extrémités %TRIML/%TRIMR uniquement les blancs de gauche/ de droite |
CODES OPERATION modifiés : BITOF -> BITOFF CHEKR CHECKR COMIT COMMIT DEFN *LIKE DEFINE *DTAARA DEFINE DELET DELETE EXCPT EXCEPT LOKUP LOOKUP OCUR OCCUR REDPE READPE RETRN RETURN SELEC SELECT UNLCK UNLOCK UPDAT UPDATE WHxx WHENxx CODE OPERATION supprimé : FREE |
NOUVEAUX CODES OPERATION : EVAL(H) avec facteur 2 étendu : EVAL A = B * (C + 2) ou EVAL Msg = 'BONJOUR' + %SUBST(nom:1:10) CALLB appel à une procédure liée (même syntaxe que le CALL) SUPPORT DATES et HEURES ADDDUR ajoute une durée à une date SUBDUR retire une durée à une date ou donne la différence entre dates EXTRCT extrait une partie d'une date ou d'une heure TEST(D/H/Z) teste la validité d'une date/heure/horodatage MOVE supporte les variables Date/Heure et FAIT LES CONVERSIONS DE/VERS ALPHA ou NUMERIQUE . |