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. |
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 |
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) |
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). |
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] |
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 |
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é) |