La spécif D ILE/RPG-IV

BoTTom |    Changer de couleur
 Déclaration de variables en RPG-IV  (spécif D)
 
 Détail : 
 
 7 à 21 : nom de zone, de tableau, de DS (indentation possible)
 
          le nom peut depasser la colonne 21 s'il est terminé par "..."
           et suivi d'une spécif D de définition avec 7-21 à blanc.
 
 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
                     'PR' = prototype (voir CALLP et fonctions)
 
 26-32  : position de début (facultative)
            ou mot réservé pour SDS et INFDS (comme en GAP3)


|    Changer de couleur
 33-39  : position de fin ou longueur
                    (peut être notée -nnnnn/+nnnnn avec le mot-clé LIKE)
 
 40     : Type : A = caractère
                 G = graphique (DBCS)
                 T = heure
                 Z = horodatage
                 D = date
                 P = packé
                 B = binaire sur 4 chiffres (maxi = 9999)
                 I = Integer : binaire sur 5 chiffres (maxi = 32767) ou 10.
                 U = Unsigned : idem Integer, mais non signé (maxi = 65535)
        (V4R40)      I et U sont acceptés de lg 3 (1 octet) et 20 (8 octets)
                 S = numérique étendu
                 * = pointeur (d'adresse ou de procédure)
        (V3R70)  F = notation scientifique (virgule flotante)
        (V4R20)  N = variable de type indicateur (booléenne)
        (V4R40)  C = variable en UNICODE
 
 41-42  : nbr de décimales
  [43     : réservé]
 44-80  : mots-clés  (occupants une à plusieurs lignes)


|    Changer de couleur
 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   departementclient...
     D                                2   0OVERLAY(cdpst)
     D   bdist                        3   0OVERLAY(cdpst:3)


|    Changer de couleur
 Mots-clés zones : 
 
 
        + OVERLAY(nom:pos): recouvrement d'une zone (DS admise en V4R2)
 
                          alternative à l'écriture avec position de début
 
 
(V4R40) + OVERLAY(nom-de-zone:*NEXT) 
 
                              permet de découper une variable d'une DS SANS
                              figer les positions relatives à cette dernière
 
           exemple :  D codepost       5  0
                      D   dept         2  0       OVERLAY(codepost)
                      D   bdist        3  0       OVERLAY(codepost:*NEXT)
 
           dept  redéfini codepost (sous entendu à partir de 1)
           bdist redéfini codepost (sous entendu à la suite de dept, soit 3)
 
 
 


|    Changer de couleur
        + LIKE(nom)       : définition d'une variable par rapport à une
                             autre (lg peut être notée sous la forme + xxx)
 
        + CONST('constante') ou sous la forme 'constante'
 
           la constante peut occuper plusieurs lignes, utiliser alors
            la marque de continuation '+', toujours obligatoire  en RPG-IV
            quand la coupure à lieu entre deux quotes(') .
 
(V3R70) + ALTSEQ(*NONE)   : ne pas tenir compte de la séquence de tri.
 
        + IMPORT          : variable globale entre procédures
                             elle est "possédée" par un autre pgm(cf EXPORT)
 
 
        + EXPORT          : variable globale entre procédures
                            (elle est "possédée" par ce pgm)
 
          un seul module peut déclarer une variable EXPORT
 
               il ne peut pas s'agir d'un paramètre reçu ou d'une variable
                basée sur un pointeur.


|    Changer de couleur
 
          pour pouvoir utiliser la variable il faut que le module la
           déclarant EXPORT soit actif !
 
 
        + INZ(valeur)     : valeur initiale
 
        Ce mot-clé peut-être utilisé au niveau zone, sous-zone ou DS.
 
        Toutes les fonctions intégrées peuvent être utilisées.
 
               - %size(), %addr(),  ...
 
        Pour une DATE :   *SYS représente la date système,
                          *JOB la date du JOB
 
        Pour une Heure:   *SYS représente l'horloge système
 
 
 
        INZ peut être utilisé sans argument, il s'agit alors de la valeur
        par défaut du type :


|    Changer de couleur
 
        - alpha       = blanc
 
        - numérique   = 0
 
        - date        = 01/01/40 ou 01/01/0001
 
        - heure       = 00:00:00
 
        - horodatage  = 0001-01-01-00.00.00.0000
 
 
 (V4R40)
 
       + INZ(*EXTDFT) 
                           la valeur initiale pour cette zone est la valeur
                             par défaut définie dans la base de données.
 
       + INZ(*USER) 
                           la valeur initiale  pour cette zone est le
                              profil utilisateur en cours.
 


|    Changer de couleur
 
(V4R20) + VARYING         : variable à longueur variable
 
          équivalent du mot-clé VARLEN en SDD
 
          la longueur réelle peut être retrouvée par :
 
             L = %len(nom)
 
          affectée par :
 
            %len(nom) = 20  ou    %len(nom) = %len(%trimr(nom))
 
            sinon l'affectation normale, eval nom = 'constante'
             ajuste la longueur si besoin.
 
 
 
           la variable commence en fait par deux octets binaires donnant
            la longueur reélle.
 
 


|    Changer de couleur
 
 Mots-clés Tableaux : 
 
        + DIM(x)          : définition d'un tableau (x = nb d'éléments)
 
        + ASCEND          : ordre de tri croissant pour un tableau
 
        + DESCEND         : ordre de tri décroissant pour un tableau
 
        + PERRCD(x)       : indique, pour un tableau chargé à la compil
                             ou à la pré-exécution le nombre de postes
                             par enregistrement.
 
        + CTDATA          : tableau chargé à la compilation
                             le compilateur cherche une ligne source
                             **CTDATA en fin de source
 
        + FROMFILE(dbf)   : nom du fichier à lire pour un tableau chargé à
                             la pré-exécution.
 
        + TOFILE(dbf)     : indique le nom d'un fichier dans lequel écrire
                             le contenu d'un tableau en fin de pgm.


|    Changer de couleur
 
        + EXTFMT(f)       : format externe de la variable pour un tableau
                             chargé à la compile ou à la pré-exécution
 
                           S    numérique étendu    <-- défaut
                           P    numérique packé
                           B    numérique binaire
                           L/R  numérique, signe en clair à Gauche/Droite
 
 
        + ALT(tableau)    : le tableau associé à ce mot-clé est un tableau
                             alterné, le tableau indiqué entre parenthèses
                             est le tableau principal.
 
     DName+++++++++++ETDsFrom+++To/L+++IDc.Keywords++++++++++++++++++++
     DTBL1             S              2    DIM(25) CTDATA PERRCD(1)
     DTBL2             S             10    DIM(25) ALT(TBL1)
 
     les mots-clés CTDATA, PERRCD, FORMFILE, TOFILE ne peuvent être indiqués
      que sur le tableau principal.
 
 


|    Changer de couleur
 
 Il n'est pas possible d'indiquer DIM sur la DATA Structure elle même, mais
 
     DName+++++++++++ETDsFrom+++To/L+++IDc.Keywords++++++++++++++++++++
     DDS1              DS
     D TBL1                          22    DIM(25) ASCEND
     D   code                         2    OVERLAY(TBL1)
     D   lib                         20    OVERLAY(TBL1:3)
 
 est admis.
 
      RPG-IV considère un tableau de 25 "code" et un tableau de 25 "lib"
 
 
 Ce qui permet ensuite
 
     C                    SORTA        code
 
 
     qui tri la totalité de TBL1 en fonction du code.
 
 


|    Changer de couleur
 Mots-clés DS  : 
 
        + EXTNAME(dbf:fmt): nom du fichier(:format) pour une DS externe
             Si dbf n'est pas renseigné, alors fichier = nom de la DS
 
        + EXTFLD(nom-ext) : nom externe de la variable pour une DS externe.
                            (il faut alors indiquer le nom interne en 7-21)
 
        + PACKEVEN        : indique, pour une sous zone de data structure
                             définie dans le pgm, que le nombre de chiffre
                             est Pair.Par défaut le système considère dans
                             une variable packée le nombre de chiffres
                             maximum ,c'est à dire toujours impair.)
 
        + PREFIX(xxx)     : idem PREFIX en spécif F, pour une DS externe.
 
 
        + DTAARA(nom)     : nom de la data area (identique à *DTAARA DEFINE)
 
           Peut être associé à une zone élémentaire, une DS, une sous-zone
            de Data-Structure.
           Si nom n'est pas renseigné, alors data area = nom de la zone


|    Changer de couleur
 
        + OCCURS(x)       : DS à occurences multiples (x = nb d'occurences)
 
 
 Nouveautés : 
 
        + BASED(nomptr)   : variable adressée par un pointeur.
 
                            le système ne lui réserve pas d'espace mémoire.
 
                            la variable ne peut être manipulée que si le
                             pointeur à un contenu valide.
                            'nomptr' est le nom du pointeur, quand sa valeur
                             change, la structure pointe sur un autre espace
                             mémoire.
 
        + PROCPTR         : pointeur de procédure
 
        + TIMFMT(fmt>sep>): format d'une variable heure.
 
        + DATFMT(fmt<sep>): Format pour une variable de type date
 


|    Changer de couleur
 (V5R10)
 
        + QUALIFIED    : les noms de sous-zone sont qualifés :
 
                               nomDS.nomdezone
 
 ce qui permet d'avoir la même zone définie 2 fois (dans 2 DS différentes)
 
 ATTENTION, c'est considéré par RPG COMME DEUX CHAMPS DISTINCTS.
 
     Dds1              DS                  QUALIFIED
     D zone1                          5
     D zone2                          3
 
        + LIKEDS(nomDS) : définition d'une DS identique à une autre
                          les deux DS sont automatiquement qualifiées.
 
  seule la structure de la DS est dupliquée.
  les mot-clés OCCUR, INZ, NOOPT ne le sont pas.
 
   vous pouvez préciser sur la deuxième DS : INZ(*likeds)
 


|    Changer de couleur
  Tableau croisé indiquant dans quel contexte un mot-clé est valide
  (par exemple BASED est valide avec une DS et une zone élémentaire)
 
 --------------------------------------------------------------------------
 ! Tableau croisé type de donnée / mots-clés     (X=supporté)             !
 !------------------------------------------------------------------------!
 !              !    Data   ! sous-zone!  sous-zone! zone      !          !
 ! mot-clé      ! Structure !  de DS   !  Externe  !élémentaire! Constante!
 !--------------!-----------!----------!-----------!----------------------!
 ! ALT       (1)!           !     X    !     X     !     X     !          !
 ! ASCEND    (1)!           !     X    !     X     !     X     !          !
 ! BASED        !     X     !          !           !     X     !          !
 ! CONST        !           !          !           !           !     X    !
 ! CTDATA    (1)!           !     X    !     X     !     X     !          !
 ! DATFMT       !           !     X    !           !     X     !          !
 ! DESCEND   (1)!           !     X    !     X     !     X     !          !
 ! DIM       (1)!           !     X    !     X     !     X     !          !
 ! DTAARA       !     X     !     X    !           !     X     !          !
 ! EXPORT       !     X     !          !           !     X     !          !
 ! EXTFLD    (2)!           !          !     X     !           !          !
 ! EXTFMT    (2)!           !     X    !     X     !     X     !          !
 !              !           !          !           !           !          !


|    Changer de couleur
 !              !    Data   ! sous-zone!  sous-zone! zone      !          !
 ! mot-clé      ! Structure !  de DS   !  Externe  !élémentaire! Constante!
 !--------------!-----------!----------!-----------!----------------------!
 ! EXTNAME   (2)!     X     !          !           !           !          !
 ! FROMFILE  (1)!           !     X    !     X     !     X     !          !
 ! IMPORT       !     X     !          !           !     X     !          !
 ! INZ          !     X     !     X    !     X     !     X     !          !
 ! LIKE         !           !     X    !           !     X     !          !
 ! LIKEDS       !     X     !          !           !           !          !
 ! OCCURS       !     X     !          !           !           !          !
 ! OVERLAY      !           !     X    !           !           !          !
 ! PACKEVEN     !           !     X    !           !           !          !
 ! PERRDC    (1)!           !     X    !     X     !     X     !          !
 ! PREFIX    (2)!     X     !          !           !           !          !
 ! PROCPTR      !           !     X    !           !     X     !          !
 ! QUALIFIED    !     X     !          !           !           !          !
 ! TIMFMT       !           !     X    !           !     X     !          !
 ! TOFILE    (1)!           !     X    !     X     !     x     !          !
 ! VARYING      !           !     X    !           !     X     !          !
 ! -----------------------------------------------------------------------!
 
 (1) = pour un tableau.[DIM()]     (2) = pour une DS Externe.[E en col 22]





©AF400