Aller au contenu

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

  • DATE Date à convertir obligatoire
  • TOVAR Variable pour date convertie obligatoire
  • FROMFMT Format date d'origine
  • TOFMT Format date de destination
  • TOSEP Sé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.