Nouveautés RPG-IV en V3R70.

BoTTom |    Changer de couleur
 
Vue générale des nouveautés RPG-IV en V3R70 :
 
 
  Divers :  - dim admet une constante nommée en tant qu'arguement :
 
            D  nbelem                  C                20
 
            D tbl                      S             5  DIM(nbelem)
 
 
 
  les codes status des triggers sont :
 
      01023 pour un trigger avant.
 
      01024 pour un trigger après.
 
  auparavant quand un trigger générait une erreur lors de la manupulation
   d'un fichier le code status était 01299.
 
 


|    Changer de couleur
 
 Le support de valeurs nulles avec %INDNULL()
 
  il va enfin être possible de faire la différence entre :
 
     la quantité est égale à 0
  et
     la quantité n'est pas renseignée.
 
 
 c'est indispensable pour une bonne gestion des variables de type date,
   00/00/0000 étant une date invalide, il est compliqué de gérer
   une date de départ ou une date de fin de validité sans cette fonction.
 
ATTENTION !
 
 il faut dabord que la variable accepte la valeur nulle :
 
   sous SQL ne pas indiquer NOT NULL
 
   avec SDD utiliser le mot-clé ALWNULL
 


|    Changer de couleur
Détail :
 
 Mots-clés spécif H :
 
 + COPYNEST(1 -2048) support des /COPY imbriqués
 
 + EXPROPTS(          ) précision des variables intermédiaires.
            *MAXDIGITS  nombre maximal de chiffres
            *RESDECPOS  précision de la variable résultat
 
 + FLTDIV(*NO ! *YES)   indique si les divisions (dans les expressions)
                         sont faites en notation scientifique.
 
 type de variable
 
   rappel V3R60
 
                 B = binaire sur 4 chiffres (maxi = 9999)
                 I = Integer : binaire sur 5 chiffres (maxi = 32767)
                 U = Unsigned : idem Integer, mais non signé (maxi = 65535)
 
          V3R70  F = notation scientifique (virgule flotante)


|    Changer de couleur
 Fonctions V3R70 : 
 fonction   !    argument   ! type retour   !   signification
 -----------!---------------!---------------!------------------------------
 %ABS       !    variable   !    numérique  !   valeur absolue
            !               !               !
 %DEC       !  num : precis.!    packé      !   précision indiquée en
 %DECH      !               !               !  argument (%DECH = arrondi)
            !               !               !
 %DECPOS    !    numérique  !   numérique   !   nombre de décimales
            !               !               !
 %EDITC     !  num : editcod!   chaîne      !   retourne le chiffre édité
            ! ........................................................
            ! :  exemple :        eval msg = 'date de traitement' +  :
            ! :                        %trim(%editc(date : 'Y'))     :
            ! :......................................................:
            !               !               !
 %EDITFLT   ! scientifique  !    chaîne     !  retourne le chiffre édité
            !               !               !
 %EDITW     ! num : editword!    chaîne     !  retourne le chiffre édité
            !               !               !
            !               !               ! (idem %EDITC mais avec un
            !               !               !    mot d'édition).


|    Changer de couleur
 fonction   !    argument   ! type retour   !   signification
 -----------!---------------!---------------!------------------------------
 %FLOAT     !    numérique  ! scientifique  !   conversion
            !               !               !
 %INT       !    numérique  !   binaire     !   conversion
 %INTH      !               !    signé      !           (%INTH = arrondi)
            !               !               !
 %UNS       !    numérique  !   binaire     !   conversion
 %UNSH      !               !  non signé    !           (%UNSH = arrondi)
            !               !               !
 %LEN       !   expression  !   numérique   !   longueur
            !               !               !
 %STR       !   pointeur    !    chaîne     !  gestion des chaînes à
            !               !               ! terminaison 0 (langage C)
            !               !               !
 %SCAN      !ch1 : ch2 [dep]!   numérique   ! recherche si ch1 est dans ch2
            !               !               ! à partir de 'dep'
            !               !               !
            !               !               ! si oui l'information retournée
            !               !               !  est la position.
            ! exemple :         eval chaine = 'ILE/RPG-IV'
            !                   eval pos = %scan('E' : chaine)  [pos = 3]


|    Changer de couleur
 fonction   !    argument   ! type retour   !   signification
 -----------!---------------!---------------!------------------------------
 %NULLIND   !    variable   ! indicateur    !   test ou assignation de la
            !               ! (*ON ou *OFF) !    valeur nulle.
 
  en effet RPG-IV supporte les variables à valeur nulle (ALWNULL en SDD)
 
   [il faut compiler avec ALWNULL(*USRCTL).]
 
 
  les tests se font sous la forme
 
      IF %NULLIND(datcmd) = *ON
 
  l'affectation :
 
      EVAL  %NULLIND(PRIME) = *ON
ou bien
      EVAL %NULLIND(prime) = *OFF
puis
      EVAL prime = 1500
 


|    Changer de couleur
 
pour l'accès direct avec val. nulle, précisez un indicateur sur les clés :
 
     C     cle01         Klist
     C                   kfld                    zone1
     C                   kfld      *in40         zone2
     C                   kfld      *in41         zone3
 
     c                   EVAL      zone1 = 'ABC'
     c                   EVAL      zone3 = 'X'
     C                   EVAL      *in40 = *ON
     C                   EVAL      *IN41 = *OFF
     C     cle01         CHAIN     fichier
 
 on cherche un enregistrement avec zone1 = ABC, zone2 nulle, zone3 = X²
 
     C                   EVAL       *IN41 = *ON
     C     cle01         CHAIN     fichier
 
 on cherche un enregistrement avec zone1 = ABC, zone2 et zone3 nulles.
                                           (le contenu de zone3 est ignoré)
 





©AF400