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
Reporting Microsoft 365 & Exchange
Comment bénéficier d’une vision unifiée de vos messageries, protéger vos données sensibles, vous conformer aisément aux contraintes réglementaires et réduire votre empreinte carbone ? Testez la solution de reporting complet de l’utilisation de Microsoft 365 et Exchange en mode Cloud ou on-premise.
Les articles les plus consultés
Les plus consultés sur iTPro.fr
- Révolutionner la gestion du stockage à l’ère de l’IA et de la transformation numérique : vers une infrastructure agile et automatisée
- Multicloud Computing : Êtes-vous prêt pour la prochaine nouvelle vague informatique ?
- IA : les PME devraient adopter des outils NoCode appropriés
- Guide des certifications Microsoft
- Transition vers le Cloud : l’approche stratégique pour répondre aux exigences de cybersécurité NIS 2