CVTDAT
Convertir le format de date
En bref
La commande CVTDAT (Convertir le format d'une date) permet de modifier le format d'une date sans changer la valeur de cette date.
CVTDAT se lit CVT
(Convertir) + DAT.
Sur IBM i, le nom d'une commande associe presque toujours un verbe et un objet.
Syntaxe minimale
CVTDAT DATE(…) TOVAR(…)
Paramètres
-
DATEDate à convertir obligatoire -
TOVARVariable pour date convertie obligatoire -
FROMFMTFormat date d'origine -
TOFMTFormat date de destination -
TOSEPSéparateur date de destination
Astuce : dans une session 5250, tapez CVTDAT puis F4 pour
l'invite de saisie, et F1 sur un paramètre pour son aide.
Aide IBM i de la commande
Texte du F1, IBM i 7.5 en français
(bibliothèque QSYS)
Où s'exécute : Compiled CL program or interpreted REXX (*BPGM *IPGM *BREXX *IREXX)
Compatible multitâche : Oui
La commande CVTDAT (Convertir le format d'une date) permet de modifier le format d'une date sans changer la valeur de cette date. La commande ignore tout séparateur utilisé dans le format d'origine ; toutefois, si vous souhaitez en voir apparaître dans le résultat de la conversion, vous pouvez indiquer un caractère de séparation dans la commande.
Seules des dates correctes peuvent être converties. Si le format d'origine ou de destination indique l'année en deux chiffres seulement (par exemple, *MDY, *DMY, *YMD ou *JUL), les dates correctes sont comprises entre le 1er janvier 1940 et le 31 décembre 2039. Sinon, elles sont comprises entre le 24 août 1928 et le 9 mai 2071. Si l'année est exprimée en deux chiffres, le système considère qu'il s'agit des années 1940 à 1999 lorsque le nombre indiqué est situé entre 40 et 99, et des années 2000 à 2039 lorsque ce nombre est situé entre 00 et 39. Cette commande fonctionne conjointement avec la valeur système QLEAPADJ.
Restrictions: Cette commande est admise uniquement dans un programme CL ou une procédure CL ILE.
Paramètres
| Mot-clé | Description | Valeurs possibles | Remarques |
|---|---|---|---|
| DATE | Date à convertir | Valeur caractère | Obligatoire, positionnel 1 |
| TOVAR | Variable pour date convertie | Valeur caractère | Obligatoire, positionnel 2 |
| FROMFMT | Format date d'origine | *SYSVAL, *MDY, *DMY, *YMD, *JUL, *JOB, *MDYY, *DMYY, *YYMD, *CYMD, *ISO, *USA, *EUR, *JIS, *LONGJUL | Facultatif, positionnel 3 |
| TOFMT | Format date de destination | *SYSVAL, *MDY, *DMY, *YMD, *JUL, *JOB, *MDYY, *DMYY, *YYMD, *CYMD, *ISO, *USA, *EUR, *JIS, *LONGJUL | Facultatif, positionnel 4 |
| TOSEP | Séparateur date de destination | *SYSVAL, *NONE, *JOB, *BLANK, '/', '-', '.', ',' | Facultatif, positionnel 5 |
Date à convertir (DATE)
Indique la constante ou la variable CL contenant la date à convertir. Lorsqu'une constante contient des caractères de séparation, elle doit être placée entre guillemets simples (les caractères de séparation sont ignorés lors de la conversion). Si des séparateurs sont utilisés dans une constante, les zéros à gauche dans chaque portion de date peuvent être omis (par exemple, 3/3/97 et 03/03/97 sont admis). Si une variable est spécifiée, sa longueur doit être suffisante pour contenir le type de date et les éventuels séparateurs utilisés. Les séparateurs de date valides sont la barre oblique (/), le tiret (-), le point (.) et la virgule (,). Une variable ne contenant que des blancs (X'40') est traitée comme correspondant à une date de longueur nulle et n'est pas admise.
Ce paramètre est obligatoire.
Variable pour date convertie (TOVAR)
Indique la variable CL contenant la valeur de la date convertie.
A l'exception du format julien, chacune des sous-zones Jour et Mois, dans le résultat converti, a une longueur de 2 octets, est justifiée à droite et, le cas échéant, contient un zéro pour remplir le caractère de gauche.
Pour les formats julien et julien long, la longueur de la zone Jour est de 3 octets. Si nécessaire, un ou deux zéros sont ajoutés à gauche. La zone Année est d'une longueur de 2 octets au format julien et de 4 octets au format julien long.
Utilisez les tableaux suivants pour déterminer la longueur minimale requise de la variable.
Taille de la zone et longueur minimale de la variable
TOFMT TOSEP Longueur minimale de la variable ---------------------- ------ ----------------------------- *JUL *NONE 5 *JUL Au choix 6 *MDY, *DMY, *YMD *NONE 6 *MDY, *DMY, *YMD Au choix 8 *MDYY, *DMYY, *YYMD *NONE 8 *MDYY, *DMYY, *YYMD Au choix 10 *CYMD *NONE 7 *CYMD Au choix 9 *LONGJUL *NONE 7 *LONGJUL Au choix 8 *ISO, *USA, *EUR, *JIS 10 *JOB Dépend du format de date du travail *SYSVAL Dépend de la valeur de QDATFMT
Taille de zone
TOFMT Mois Jour Année
----------------------- ----- --- ----
*JUL N/A 3 2
*MDY, *DMY, *YMD 2 2 2
*MDYY, *DMYY, *YYMD 2 2 4
*ISO, *USA, *EUR, *JIS 2 2 4
*CYMD 2 2 2 (+1 octet pour la zone siècle)
Ce paramètre est obligatoire.
Format date d'origine (FROMFMT)
Indique le format actuel de la date à convertir.
- *JOB
- La date a le format précisé par l'attribut de travail DATFMT.
- *SYSVAL
- La date est au format indiqué par la valeur système QDATFMT.
- *MDY
- La date a le format mois, jour, année (mmjjaa).
- *MDYY
- La date a le format mois, jour, année (mmjjaaaa).
- *DMY
- La date a le format jour, mois, année (jjmmaa).
- *DMYY
- La date a le format jour, mois, année (jjmmaaaa).
- *YMD
- La date a le format année, mois, jour (aammjj).
- *YYMD
- La date a le format année, mois, jour (aaaammjj).
- *CYMD
- La date a le format siècle, année, mois, jour (saammjj) où "s" est égal à 0 pour les années comprises entre 1928 et 1999, et à 1 pour les années comprises entre 2000 et 2071.
- *JUL
- La date a le format julien (aajjj).
- *ISO
- La date a le format ISO (International Organization for Standardization) (aaaa-mm-jj).
- *USA
- La date a le format américain (mm/jj/aaaa).
- *EUR
- La date a le format européen (jj.mm.aaaa).
- *JIS
- La date a le format JIS (Japanese Industrial Standard) (aaaa-mm-jj).
- *LONGJUL
- La date est au format julien long, aaaajjj.
Format date de destination (TOFMT)
Indique le format dans lequel la date est à convertir.
- *JOB
- La date est convertie dans le format indiqué par l'attribut de travail DATFMT.
- *SYSVAL
- La date est convertie dans le format indiqué par la valeur système QDATFMT.
- *MDY
- La date est convertie dans le format mois, jour, année (mmjjaa).
- *MDYY
- La date est convertie dans le format mois, jour, année (mmjjaaaa).
- *DMY
- La date est convertie dans le format jour, mois, année (jjmmaa).
- *DMYY
- La date est convertie dans le format jour, mois, année (jjmmaaaa).
- *YMD
- La date est convertie dans le format année, mois, jour (aammjj).
- *YYMD
- La date est convertie dans le format année, mois, jour (aaaammjj).
- *CYMD
- La date est convertie dans le format siècle, année, mois, jour (saammjj), où "s" est égal à 0 pour les années comprises entre 1928 et 1999, et à 1 pour les années comprises entre 2000 et 2071. Si le format en cours indique l'année en deux chiffres seulement, "s" est égal à 0 pour les années 40 à 99, et à 1 pour les années 00 à 39.
- *JUL
- La date est convertie dans le format julien (aajjj).
- *ISO
- La date est convertie dans le format ISO (International Organization for Standardization) (aaaa-mm-jj).
- *USA
- La date est convertie dans le format américain (mm/jj/aaaa).
- *EUR
- La date est convertie dans le format européen (jj.mm.aaaa).
- *JIS
- La date est convertie dans le format JIS (Japanese Industrial Standard) (aaaa-mm-jj).
- *LONGJUL
- La date est au format julien long, aaaajjj.
Séparateur date de destination (TOSEP)
Indique le type de séparateur de date éventuellement utilisé dans la date convertie.
- *JOB
- La date à convertir contient les séparateurs indiqués par l'attribut de travail DATSEP.
- *SYSVAL
- La date à convertir contient les séparateurs indiqués par la valeur système QDATSEP.
- *NONE
- La date convertie ne contient pas de séparateurs.
- *BLANK
- Le caractère séparateur utilisé dans la date convertie est un blanc.
- caractère-séparation
- Indiquez le caractère servant de séparateur dans la date convertie. Les séparateurs de date admis sont la barre oblique (/), le trait d'union (-), le point (.)et la virgule (,).
Exemples
Exemple 1 : Conversion au format DMY
DCL VAR(&DATE) TYPE(*CHAR) LEN(8)
:
CVTDAT DATE('12-24-88') TOVAR(&DATE) TOFMT(*DMY)
Cette commande convertit la date 12-24-88, qui est au format MDY (mois, jour, année). Le paramètre FROMFMT n'étant pas précisé, sa valeur par défaut, *JOB, indique que l'attribut de travail DATFMT contient le format MDY. La date est convertie au format DMY (jour, mois, année), avec le caractère de séparation indiqué par l'attribut de travail DATSEP. Si DATSEP contient une barre oblique, le résultat de la conversion est 24/12/88.
Exemple 2 : Conversion au format indiqué par l'attribut de travail
DCL &PAYDAY *CHAR 6
DCL &NEWPDAY *CHAR 6
:
CVTDAT DATE(&PAYDAY) TOVAR(&NEWPDAY)
FROMFMT(*YMD) TOSEP(*NONE)
Cette commande convertit le format de date (année, mois, jour (*YMD)) de la variable &PAYDAY au format indiqué dans l'attribut de travail DATFMT. Si, par exemple, DATFMT indique le format MDY, le format de la date convertie est mois, jour, année. La date convertie est stockée dans la variable &NEWPDAY. &NEWPDAY étant déclaré comme une variable à 6 caractères, TOSEP(*NONE) est obligatoire ; le résultat de la conversion ne peut pas comporter de caractère de séparation.
Exemple 3 : Conversion au format CYMD
DCL &JOUR1 *CHAR 7
DCL &JOUR2 *CHAR 7
:
CVTDAT DATE('01/24/1939') TOVAR(&JOUR1)
FROMFMT(*MDYY) TOFMT(*CYMD) TOSEP(*NONE)
CVTDAT DATE('01/24/39') TOVAR(&JOUR2)
FROMFMT(*MDY) TOFMT(*CYMD) TOSEP(*NONE)
La première commande CVTDAT convertit la date indiquée au paramètre DATE (mois, jour et année sur quatre chiffres) au format CYMD (siècle, année, mois et jour). L'année étant indiquée sur 4 chiffres dont les deux premiers ont pour valeur "19", le chiffre correspondant au siècle prend la valeur "0", donc la valeur de "JOUR1" est "0390124".
La seconde commande CVTDAT convertit la date indiquée au paramètre DATE (mois, jour, année) au format CYMD (siècle, année, mois et jour). L'année étant indiquée par seulement deux chiffres d'une valeur inférieure à 40, le siècle prend la valeur "1", donc la valeur de "JOUR2 est "1390124".
Messages d'erreur
Messages *ESCAPE
- CPF0550
- Date trop courte pour le format indiqué.
- CPF0551
- La date comporte des séparateurs incorrects.
- CPF0552
- La date comporte des séparateurs mal placés ou superflus.
- CPF0553
- La date comporte trop ou trop peu de caractères numériques.
- CPF0554
- Variable trop courte pour le format de conversion de date.
- CPF0555
- Date incorrecte ou non conforme au format indiqué.
- CPF0556
- La date comporte au moins deux types de séparateurs.
- CPF0557
- La date est en dehors de la fourchette de valeurs admises.
© Copyright IBM Corp. Texte d'aide reproduit à des fins de formation.