La spécif F ILE/RPG-IV

BoTTom |    Changer de couleur
 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.       !


|    Changer de couleur
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
     !         !                            !


|    Changer de couleur
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
     !         !                            !


|    Changer de couleur
     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)


|    Changer de couleur
 
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)!
         !                              !       !         !       !


|    Changer de couleur
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)        !       !         !       !
------------------------------------------------------------------------------


|    Changer de couleur
 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)
 


|    Changer de couleur
 
 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)
 


|    Changer de couleur
 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é.


|    Changer de couleur
 
 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.


|    Changer de couleur
 
 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
 


|    Changer de couleur
 
 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
 


|    Changer de couleur
 
 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.


|    Changer de couleur
 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.


|    Changer de couleur
 
 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...


|    Changer de couleur
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')
 


|    Changer de couleur
 
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)
 


|    Changer de couleur
 
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)





©AF400