L'une des possibilités les plus acclamées de RPG IV est sa reconnaissance des types de données date et heure natifs. La plupart des applications de gestion traitent des dates. Les opérations ADDDUR (Add Duration), SUBDUR (Substract Duration) et EXTRCT (Extract) effectuent des calculs et des manipulations de dates dans les
%DATE d’ADDDUR
cartes
C, mais elles ne fonctionnent pas avec
des expressions et elles ne sont pas
non plus supportées dans la spécification
en format libre introduite en version
5. Avec la V5R1, ces opérations relativement
nouvelles sont rendues
obsolètes par certaines nouvelles fonctions
intégrées.
La fonction %DATE, %TIME ou
%TIMESTAMP renverra, sous forme native,
une date, une heure, ou un tampon
horodateur facilement utilisable
dans un programme. Chacune de ces
fonctions accepte une expression caractère
ou numérique comme premier
argument (les fonctions %DATE et
%TIME acceptent aussi des données
horodateur et %TIMESTAMP autorise
une date). Le second argument indique
le format date de l’expression.
Par exemple, vous pourriez convertir
un champ numérique en format
MMDDCCYY en une date native avec
l’expression d’attribution suivante :
BirthDate = %DATE(BirthYMD:*USA);
Le résultat sera une date native.
Celle-ci peut être dans n’importe quel
format de date valide, bien que la fonction
%DATE renvoie toujours une date
en format ISO.
Si vous omettez des arguments pour la fonction %DATE, %TIME ou
%TIMESTAMP, vous obtiendrez la date,
l’heure ou le tampon horodateur courant
:
Today = %DATE();
La nouvelle fonction %DIFF calcule
la durée entre deux dates, heures ou
tampons horodateurs. Les deux premiers
arguments indiquent les deux
dates, heures ou tampons horodateurs
; ils doivent être du même type
de données – ou dans le cas d’un tampon
horodateur, on peut comparer
une date ou une heure avec la portion
correspondante du tampon horodateur.
Le troisième argument utilise un
code de durée pour stipuler l’unité
que l’on veut utiliser pour exprimer la
différence ; on peut employer n’importe
lequel des mêmes codes de durée
que l’on a déjà utilisés pour les
opérations de date. Voici quelques
exemples :
DayOld = %DIFF(Today:BirthDate:*DAYS);
ou
DayOld = %DIFF(%DATE() :
%DATE(BirthYMD:*USA):
*DAYS();
Le résultat de la fonction %DIFF est
une durée numérique, arrondie, sans
reste.
Sept fonctions convertissent une
valeur numérique en une durée pour
être utilisée avec des dates, des heures
ou des tampons horodateurs dans des
expressions en format libre. Leurs
noms sont prévisibles :
On peut inclure l’une quelconque
de ces fonctions dans le côté droit
d’une expression d’attribution – avec
dates, heures ou tampons horodateurs
– pour effectuer des calculs de dates :
DueDate = InvDate + %DAYS(30);
En plus de permettre ces fonctions
de type date, les expressions d’attribution
de date (qui définissent la valeur
d’une date, d’une heure ou d’un tampon
horodateur) vous permettent
aussi d’inclure la fonction %DIFF.
La fonction %SUBDT « souschaîne
» une date ; autrement dit, elle
extrait une portion d’une date, d’une
heure ou d’un tampon horodateur et
renvoie une valeur numérique non signée.
Cette fonction est similaire au
code opération EXTRCT aujourd’hui
obsolète. %SUBDT prend deux arguments
: (1) la date, l’heure ou le tampon
horodateur et (2) un code de durée
représentant la portion de la date à
extraire. Dans l’exemple suivant, nous
utilisons %SUBDT pour déterminer si
la date d’une facture correspond au
mois actuel du job :
If %SUBDT(InvDate:*M) = UMonth;
ProcInv(InvNbr);
Endif;
Même si vous n’utilisez pas les
types de données de date natives dans
votre base de données, vous pouvez
quand même employer les fonctions
de RPG IV qui sont liées à la date ou qui
effectuent des calculs sur les dates.
Vous pouvez facilement utiliser les
fonctions %DATE, %TIME et %TIMESTAMP
pour convertir vos dates numériques
ou caractère en types de données
natives. La fonction %CHAR
permet de reconvertir une date en un
champ caractère en spécifiant le format
comme second argument:
DateC = %CHAR(Date:*ISO0);
Le format *ISO0 indique que le
champ caractère devrait être en format
ISO (CCYYMMDD) sans caractères de
séparation ; sans le 0 à droite, les
champs caractère nécessiteraient des
caractères de séparation.
En V5R2, les fonctions de conversion
numérique (%DEC, %INT, %UND)
convertiront non seulement des expressions
numériques mais aussi des
valeurs numériques en expressions caractère.
Ce support simplifie la conversion
des données natives en champs numériques, en combinant les fonctions
%CHAR et %INT :
DateN = %UNS(%CHAR(Date:*ISO0));
Téléchargez cette ressource
Guide de Cyber-résilience pour Microsoft 365
La violation de votre tenant M365 va au-delà d’un simple incident de cybersécurité. Elle peut entraîner une interruption opérationnelle généralisée, des perturbations commerciales et une exposition de vos données sensibles. Découvrez les méthodes et technologies pour évaluer, comparer et renforcer votre posture de sécurité Microsoft 365.
Les articles les plus consultés
Les plus consultés sur iTPro.fr
- Infrastructures IT : 5 leviers concrets pour éviter les impasses technologiques
- Top 6 des priorités des DSI en 2026
- Semi-conducteurs : comment l’Irlande veut contribuer à atténuer la pénurie mondiale de puces
- À l’aube de 2026, le SaaS entre dans une nouvelle phase
Articles les + lus
CES 2026 : l’IA physique et la robotique redéfinissent le futur
Les 3 prédictions 2026 pour Java
Semi-conducteurs : comment l’Irlande veut contribuer à atténuer la pénurie mondiale de puces
Face à l’urgence écologique, l’IT doit faire sa révolution
D’ici 2030, jusqu’à 90 % du code pourrait être écrit par l’IA, pour les jeunes développeurs, l’aventure ne fait que commencer
À la une de la chaîne Tech
- CES 2026 : l’IA physique et la robotique redéfinissent le futur
- Les 3 prédictions 2026 pour Java
- Semi-conducteurs : comment l’Irlande veut contribuer à atténuer la pénurie mondiale de puces
- Face à l’urgence écologique, l’IT doit faire sa révolution
- D’ici 2030, jusqu’à 90 % du code pourrait être écrit par l’IA, pour les jeunes développeurs, l’aventure ne fait que commencer
