Code opération RPG III / RPG/400 · IBM i (AS/400) · Transferts de données
TIME
Obtenir l'heure et la date du jour
Place l'heure du système, ou l'heure suivie de la date, dans une zone numérique de 6, 12 ou 14 chiffres.
Syntaxe
C TIME heure 60
C TIME hdate 120
C TIME hdatec 140
- Facteur 1 (18-27)
- Non utilisé : on le laisse à blanc.
- Facteur 2 (33-42)
- Non utilisé.
- Zone résultat (43-48)
- Zone numérique sans décimale.
- Longueur (49-51)
- 6, 12 ou 14.
6: heure seule HHMMSS.12: HHMMSS suivi de la date.14: HHMMSS suivi de la date avec le siècle. - Décimales (52)
0.- Effet
- Aucun indicateur n'est positionné. La zone reçoit l'heure du système ; avec 12 ou 14 chiffres, la date du jour suit l'heure. Dans les essais (date de travail en jour, mois, année), la valeur 232333051026 se lit 23 h 23 min 33 s le 05/10/26, et 23233305102026 le 05/10/2026.
À quoi ça sert
TIME sert à horodater : heure de début et de fin d'un traitement, date de création d'un enregistrement, durée écoulée. La date et l'heure sont dans une même zone, que l'on découpe ensuite avec MOVE et MOVEL.
Exemple 1 : Heure seule, avec date, avec siècle
H* TIME : heure seule (6 chiffres), heure et date (12, 14)
C TIME H6 60
C TIME H12 120
C TIME H14 140
C H6 DSPLY
C H12 DSPLY
C H14 DSPLY
C SETON LR
Résultat réel, compilé par CRTRPGPGM et exécuté sur IBM i 7.5 (il change à chaque exécution) :
232333
232333051026
23233305102026
Les trois longueurs côte à côte : H6 contient l'heure, H12 l'heure suivie de la date sur 6 chiffres, H14 l'heure suivie de la date sur 8 chiffres (année sur quatre chiffres). Le résultat change à chaque exécution.
Exemple 2 : Découper la zone de 12 chiffres
H* TIME : decouper la zone de 12 chiffres
C TIME HD 120
C MOVELHD HEURE 60
C MOVE HD JOUR 60
C MOVELHEURE HH 20
C HH IFGE 0
C HH ANDLT24
C 'Heure ok'DSPLY
C END
C HEURE DSPLY
C JOUR DSPLY
C SETON LR
Résultat réel, compilé par CRTRPGPGM et exécuté sur IBM i 7.5 (il change à chaque exécution) :
Heure ok
232344
51026
MOVEL prend les 6 premiers chiffres (l'heure), MOVE les 6 derniers (la date). Le test sur les deux premiers chiffres confirme une heure entre 0 et 23.
Le piège
Seules les longueurs 6, 12 et 14 sont admises, sans décimale. Une zone de 8 chiffres donne QRG7056 : « La zone Résultat pour TIME ne correspond pas à un entier de 6, 12 ou 14 positions sans décimale ».
Une zone numérique n'a pas de zéro de tête : comme le 00123 du premier exemple de MOVE, qui s'affiche 123, une heure du matin perd son premier chiffre à l'affichage. Pour découper, passez par MOVEL et MOVE.
En RPG ILE full free
En RPG ILE, %TIME() et %DATE() donnent des valeurs typées ; %CHAR avec un format les transforme en texte.
heure = %char(%time() : *iso0);
datejour = %date();
horodatage = %timestamp();