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
Sécuriser Microsoft 365 avec une approche Zero-Trust
Découvrez comment renforcer la cyber-résilience de Microsoft 365 grâce à une approche Zero-Trust, une administration granulaire et une automatisation avancée. La technologie Virtual Tenant de CoreView permet de sécuriser et simplifier la gestion des environnements complexes, tout en complétant vos stratégies IAM, y compris dans les secteurs réglementés.
Les articles les plus consultés
Les plus consultés sur iTPro.fr
- VirtualBrowser protège la navigation web à la source
- Innovation et performance : le rôle clé du consulting dans la transformation numérique
- Sekoia.io : l’alternative européenne qui s’impose dans la cybersécurité
- Redéfinir la confiance à l’ère de l’IA agentique : les entreprises sont-elles prêtes pour le SOC autonome ?
Articles les + lus
Moderniser le développement logiciel : de la fragmentation à l’intégration
Analyse Patch Tuesday Mars 2026
Une nouvelle ère de la modernisation du mainframe
Communes, entreprises ? Non, face au RGAA 5, l’IA seule ne rendra pas vos sites accessibles
DevX Summit EMEA : les développeurs au cœur de la révolution de l’IA
À la une de la chaîne Tech
- Moderniser le développement logiciel : de la fragmentation à l’intégration
- Analyse Patch Tuesday Mars 2026
- Une nouvelle ère de la modernisation du mainframe
- Communes, entreprises ? Non, face au RGAA 5, l’IA seule ne rendra pas vos sites accessibles
- DevX Summit EMEA : les développeurs au cœur de la révolution de l’IA
