Déclaration de fichiers en RPG-IV (spécif F) RPG ! RPG-IV ! INTERNE ! EXTERNE -----!---------!----------------------------!----------------------------------- 6 ! 6 ! F ! F 7-14 ! 7-16 ! nom du fichier ! nom du fichier externe ! ! ! 15 ! 17 ! type d'ouverture ! idem interne ! ! I input ! ! ! O output ! ! ! U update (I+ màj/sup) ! ! ! C combiné (I + O) ! ! ! (sert aux écrans sur AS)! ! ! ! 16 ! 18 ! type de traitement RPG ! idem interne ! ! P = primaire (cycle) ! ! ! S = secondaire ! ! ! (cycle + concordance)! ! ! F = Full procédure ! ! ! (logique libre) ! ! ! lectures à la charge du pgm! ! ! T = fichier table. ! |
RPG ! RPG-IV ! INTERNE ! EXTERNE -----!---------!----------------------------!----------------------------------- 17 ! 19 ! E= fin de fichier ! idem ! ! anticipée (concordance)! ! ! ! 66 ! 20 ! Ajout d'enregistrement ! idem ! ! (pour les fichiers ! ! ! ouverts en I ou U) ! ! ! BLANC = non ! ! ! A = ajout (écriture)! ! ! ! 18 ! 21 ! séquence : A ou D ! idem ! ! (concordance)! ! ! ! 19 ! 22 ! format F (interne) ! E (externe) ! ! ! 24-27! 23-27 ! lg des enregistrements ! BLANC ! ! ! 28 ! 28 ! traitement entre limites ! BLANC ! ! ! 29-30! 29-33 ! lg de la clé ! BLANC ! ! ! |
RPG ! RPG-IV ! INTERNE ! EXTERNE -----!---------!----------------------------!----------------------------------- 31 ! 34 ! type de clé BLANC = sans ! BLANC = sans clé ! ! A = car. ! ! ! P = packé ! K = avec clé (keyed) ! ! G = DBCS ! ! ! D = date ! ! ! T = heure ! ! ! Z = horodatage! ! ! (V3R70) F = scientifique 32 ! 35 ! organisation ! ! ! BLANC = n° de rang ! BLANC ! ! I = indexed ! ! ! ! ! 36-42 ! Unité ! ! ! ! ! ! DISK = fichier B de D. ! idem ! ! PRINTER = impression ! ! ! WORKSTN = écran ou ICFF ! ! ! ! ! 42-80 ! Mots-clés ! idem ! ! ! |
Certaines colonnes ont des équivalences sous forme de mot-clé RPG ! mot-clé ! signification ! commentaires -----!---------!----------------------------!----------------------------------- 33-34! OFLIND ! indicateur d'overflow ! OFLIND(*INxx) ! ! OA-OG,OV ! ! ! 01 à 99 ! ! ! ! 35-38! KEYLOC ! pos. de début de la clé ! KEYLOC(xx) ! ! BLANC= sans clé ! ! ! 1-9999 = pos de début ! ! ! ! 39 ! ! code extension ! ! ! BLANC pas d'extension ! ! Spécif D! E = fichiers table ! (les tableaux étant définis ! ! ! maintenant en spécif D ! FORMLEN ! L = une spécif L suit ! FORMLEN(66) ! FORMOFL ! (pour les fichiers PRINTER)! FORMOFL(60) ! ! ! 71-72! ! ouverture conditionnée ! ! !BLANC = non (ouvert par RPG)! ! EXTIND !U1àU8 = ouvert si Ux vrai ! EXTIND(*INUx) ! USROPN !UC = ouvert par pgm(OPEN)! (sans paramètres) |
il était possible d'apporter des compléments d'information à une spécif F par l'intermédiaire d'une spécif F de continuation juste en-dessous. Col ! INTERNE ! EXTERNE ---------!----------------------------!------------------------------------- 6 ! F ! F ! ! 53 ! K ! K ! ! 54-59 ! mot-clé de continuation ! idem ---------------------------------------------------------------------------- Mot-clé ! ! Mot-clé RPG III ! signification ! 19-28 ! 47-52 ! 60-67 ! RPG-IV COMIT ! contrôle de validation ! ! ! ! COMMIT ! ! ! ! ! IGNORE ! ignore un format du fichier !nom-fmt! ! ! IGNORE ! ! ! ! ! INFDS ! nom DS contenant les infos ! ! !nom DS ! INFDS ! fichier (feed-back aréa) ! ! !(60-65)! ! ! ! ! ! |
INFSR ! nom d'un sous-programme à ! ! !nom SR ! INFSR ! appeller en cas d'erreur E/S ! ! !(60-65)! ! ! ! ! ! NUM ! nbr maxi d'unités ! ! ! nombre! MAXDEV !(pour gérer plusieurs écrans ! ! !(60-65)! ! avec un seul DSPF ou ICFF) ! ! ! ! ! ! ! ! ! PRTCTL ! nom d'une DS contenant infos ! ! !nom DS ! PRTCTL ! d'espaces et de sauts/PRINTER! ! !(60-65)! ! ! ! ! ! RECNO ! nom d'une zone recevant le ! ! ! zone ! RECNO ! dernier n° de rang. ! ! !(60-65)! ! ! ! ! ! RENAME ! renomme un format pour un !nom-ext! !nom-pgm! RENAME ! fichier en externe ! ! ! ! ! ! ! ! ! SFILE ! indique la zone n° de rang ! ! nom-zone!fmt/SFL! SFILE ! dans un sous-fichier ! ! (0 déc.)! ! ! ! ! ! ! SLN ! gestion de lignes variables ! ! ! zone ! SLN ! ==> DSPF = SLNO(*VAR) ! ! ! ! ------------------------------------------------------------------------------ |
Récaptitulatif des mots-clés RPG-IV COMMIT ou COMMIT(&flag) - le fichier est sous contrôle de validation (STRCMTCTL doit être actif) (si &flag, le fichier n'est placé sous contrôle de validation que si flag contient '1', lors de l'OPEN) DATFMT(format<séparateur>) - indique le format pour les dates de ce fichier (si le format est *YMD,*DMY,*MDY,*JUL, le séparateur peut être indiqué) exemple DATFMT(*EUR) - DATFMT(*YMD/) DEVID(nom-zone) - pour la gestion des fichiers unités à unités multiples (DSPF ou ICFF) (nom-zone est la variable qui contiendra le nom de l'unité à traiter) |
EXTIND(*INUx) - ouverture conditionnée par un switch externe (U1 à U8) FORMLEN(xxx) - longueur logique d'une page pour un fichier PRINTER <-- ! penser aussi FORMOFL(xxx) ! à ! OVRPRTF. - n° de ligne d'overflow pour un fichier PRINTER <- IGNORE(F1 : F2 : F3 ...) - ignorer un à plusieurs formats d'un fichier (évite les déclarations de variable et les LVLCHK à l'ouverture) INCLUDE(F1 : F2 ...) - ne tenir compte que des formats indiqués (les autres sont ignorés) |
INFDS(nom-DS) - indique la data structure contenant les informations de retour (OPEN-FEEDBACK-AREA et I/O-FEEDBACK-AREA) pour ce fichier --> penser à forcer la réactualisation par POST. INFSR(nom-souspgm) - indique le nom du sous programme appellé automatiquement en cas d'erreur sur ce fichier (si aucun indicateur en '<<' n'est positionné) KEYLOC(position) - pour les fichiers internes indexés, indique la position de la clé. MAXDEV(*ONLY/*FILE) - pour la gestion des fichiers unités (DSPF ou ICFF) indique si ce fichier est à unités multiples (*FILE) ou non (*ONLY). Contrairement à RPG III où il fallait indiquer le nombre d'unités, ici RPG-IV récupère la valeur du paramètre MAXDEV (CRTDSPF/CRTICFF) - MAXDEV(*FILE) implicite si DEVID est utilisé. |
OFLIND(*INxx) (*INOA-OG/OV, *IN01-99) - Indicateur d'overflow pour les fichiers PRINTER. [*IN01-99 en externe] PASS(*NOIND) - Identique à INDARA pour les DSPF en interne. PGMNAME(nom-pgm) PLIST(nom-plist) - Paramètres d'appel du pgm chargé de gérer le fichier(pour unité SPECIAL) PREFIX(xx) - Indique un préfixe devant être ajouté devant tous les noms de zone du fichier externe. ATTENTION, le préfixe plus le nom ne doivent pas dépasser 10 c. en V3R20/R60 : PREFIX(xx:y) y indique que xx remplace les y premiers car. par exemple, PREFIX(W:3) remplace CDEQTE par WQTE. |
PRTCTL(nom-ds) - Nom de la Data-Structure contenant les informations d'espace et de saut à effectuer, pour un fichier printer. Nouvelle Structure de la DS PRTCTL (pour compatibilté RPG III, voir PRTCTL(nom:*COMPAT), plus loin. IDSCTL DS * espace avant I 1 30SPACEB (0/255) * espace après I 4 60SPACEA (0/255) * saut (au n° de ligne) avant I 7 9 SKIPB (' ',1/255) * saut (au n° de ligne) après I 10 12 SKIPA (' ', 1/255) * n° de ligne actuel (non modifiable) I 13 150NOLIGN |
PRTCTL(nom-ds:*COMPAT) - Nom de la Data-Structure contenant les informations d'espace et de saut à effectuer, pour un fichier printer.(compatible RPG-III) Structure de la DS PRTCTL (même structure qu'en RPG-III) IDSCTL DS * espace avant I 1 1 SPACEB (0/3) * espace après I 2 2 SPACEA (0/3) * saut (au n° de ligne) avant I 3 4 SKIPB 1/99 * saut (au n° de ligne) après A0-A9=100-109 I 5 6 SKIPA B0-B2-110-112 * n° de ligne actuel (non modifiable) I 7 90NOLIGN |
RAFDATA(fichier) - Pour un fichier RAF (R en col 18), indique le nom du fichier contenant le source des spécifs de tri. RECNO(variable) - Nom de la variable où placer le N° de rang du dernier enregistrement. SAVDS(nom-DS) - Nom de la data-structure où seront sauvegardés les indicateurs pour le traitement d'un fichier à unités multiples (MAXDEV) SAVIND(chiffre) - (utilisé avec SAVDS) nombre d'indicateurs à sauvegarder (à partir de 01) SFILE(format:rang) - associe à un enregistrement de sous-fichier la variable n° de rang. |
SLN(nom-zone) - Nom de la variable contenant le n° de ligne où afficher le format (pour les formats SDD avec SLNO(*VAR).) TIMFMT(format<séparateur>) - indique le format pour les heures de ce fichier (si le format est *HMS, le séparateur peut être indiqué) exemple TIMFMT(*EUR) - DATFMT(*HMS:) USROPN - indique que ce fichier ne sera pas ouvert par le cycle (OPEN en spécif C) INDDS(nom-DS) (V4R20) - associe à un fichier avec INDARA une DS contenant des variables de type indicateur (N).Cette DS est utilisée A LA PLACE des 99 indicateurs standards. |
Exemples de spécif F: .....F*ilename++IPEASFRlen+LKlen+AIDevice+.Keywords+++++++++++++++++++++++++++++ FECRAN01 CF E WORKSTN INFDS(INFODS) F SFILE(SFL:RANG) FFICH1P1 IF E K DISK PREFIX(F1) FFICH1P1 UF A E K DISK FECRAN02 CF E WORKSTN INDDS(indic) .../... Dindic DS 99 D exit N overlay(indic:3) D sflclr N overlay(indic:30) D err_client N overlay(indic:51) etc... |
V5R10 : EXTFILE(nom) EXTMBR(nom | *FIRST | *ALL ) fournissent le nom réel du fichier à ouvrir (évite des OVRDBF) le nom peut être une constante ou une variable (nom simple ou qualifié) si le fichier est ouvert par le RPG, la variable soit alors être renseignée : - soit par le mot-clé INZ (en spécif D) - soit être un paramètre recu. - soit une variable globale sinon, le fichier doit être ouvert par le pgm (USROPN) pour EXTMBR, *FIRST et *ALL doivent être indiqués en quotes ('*FIRST') |
dans les deux cas si un OVRDBF est actif, l'ouverture par le RPG en subira les effets. soit une spécif F : Fentree if E disk EXTFILE(nouveau) USROPN si vous mettez 'QTEMP/MONFICHIER' dans nouveau puis que vous lancez un ordre OPEN, le fichier ouvert sera MONFICHIER dans QTEMP si la commande OVRDBF MONFICHIER TOFILE(TOTO) a été lancée, le fichier ouvert sera TOTO. nb: si une commande OVRDBF ENTREE TOFILE(TRUC) est active, elle sera ignorée, le RPG cherchant à ouvrir MONFICHIER et non ENTREE. ("entree" est le nom dans le pgm uniquement) |
V6R10 EXTDESC() permettant d'indiquer le nom du fichier à la compilation -> cela permet de compiler avec un fichier qui n'est pas dans *LIBL EXTDESC('BDVIN1/VINS') -> cela permet de manipuler un fichier ayant le même nom de format puisque que c'est le nom en spécif F qui est utilisé le paramètre EXTFILE(), admet maintenant EXTFILE(*EXTDESC) demandant à ce que le nom réel à l'exécution soit celui de EXTDESC LIKEFILE , définition d'un fichier comme un autre attention les I/O doivent être réalisées par le biais de structures (DS) TEMPLATE définition d'un fichier qui sert uniquement de modèle (pour LIKEFILE) |