HMASK : Extraire les composants Date-heure et perserver les composants restants

Comment :

Référence :

Langages disponibles : reporting, Maintain

La fonction HMASK extrait un ou plusieurs composants de la valeur date-heure et les déplace vers un champ date-heure cible avec tous les autres composants du champ cible préservé.


Haut de page

x
Syntaxe : Déplacer plusieurs composants date-heure vers un champ date-heure cible
HMASK(source, 'componentstring', input, length, output)

où :

source

est la valeur date-heure à partir de laquelle les composants spécifiques sont extraits.

componentstring

est une chaîne de codes, dans n'importe quel ordre qui indique quels composants sont à extraire et à déplacer vers le champ date-heure de sortie. La table suivante montre les valeurs valides. La chaîne est considérée comme étant terminée par tout caractère absent de cette liste :

Code

Description

C

siècle (seuls les deux chiffres d'ordre supérieur de l'année à quatre chiffres)

Y

année (seuls les deux chiffres d'ordre inférieur de l'année à quatre chiffres)

YY

année à quatre chiffres.

M

mois

D

jour

H

heure

I

minutes

S

secondes

s

millisecondes (les trois chiffres d'ordre supérieur de la valeur à six chiffres avec microsecondes)

u

microsecondes (les trois chiffres d'ordre inférieur de la valeur à six chiffres avec microsecondes)

m

les six chiffres de la valeur avec microsecondes.

n

trois chiffres d'ordre inférieur de neuf chiffres décimaux.

input

est la valeur date-heure qui fournit tous les composants pour la sortie non spécifiés dans la chaîne de composant.

length

est la longueur de la valeur date-heure renvoyée. Voici les valeurs valables :

  • 8 indique une valeur d'heure qui comprend un à trois chiffres décimaux (millisecondes).
  • 10 indique une valeur d'heure qui comprend quatre à six chiffres décimaux (microsecondes).
  • 12 indique une valeur d'heure qui comprend sept à neuf chiffres décimaux (nanosecondes).
output

est le champ qui contient le résultat, ou le format entier de la valeur de sortie entre guillemets simples. Ce champ doit être au format date-heure (type de données H).



x
Référence : Notes d'utilisation sur la fonction HMASK

Le traitement HMASK est sujet au paramètre DTSTRICT. Déplacer le composant Jour (D) dans le composant Mois (M) peut entraîner un résultat non valide, qui n'est pas autorisé si le paramètre DTSTRICT est ON (activé). Les valeurs date-heure non valides entraînent toute fonction date-heure à renvoyer des zéros.



Exemple : Modifier un champ Date-heure avec HMASK

La source de données VIDEOTRK contient un champ date-heure nommé TRANSDATE de format HYYMDI. La requête suivante modifie toute valeur TRANSDATE avec un composant Heure supérieur à11:00 jusqu'à 8:30 du jour suivant. Dans un premier temps, la fonction HEXTR extrait la partie heure et minutes de la valeur et le compare à 11:00. Si elle est supérieure à 11:00, la fonction HADD appelle HMASK à modifier l'heure à 08:30 et ajoute un jour à la date :

DEFINE FILE VIDEOTR2
ORIG_TRANSDATE/HYYMDI = TRANSDATE;
TRANSDATE =
IF HEXTR(TRANSDATE, 'HI', 8, 'HHI') GT DT(12:00)
   THEN HADD (HMASK(DT(08:30), 'HISs', TRANSDATE, 8, 'HYYMDI'), 'DAY',
    1,8, 'HYYMDI')
   ELSE TRANSDATE;
END
 
TABLE FILE VIDEOTR2
PRINT ORIG_TRANSDATE TRANSDATE
BY LASTNAME
BY FIRSTNAME
WHERE ORIG_TRANSDATE NE TRANSDATE
END

La sortie est :

LASTNAME         FIRSTNAME   ORIG_TRANSDATE    TRANSDATE       
--------         ---------   --------------    ---------       
BERTAL           MARCIA      1999/07/29 12:19  1999/07/30 08:30
GARCIA           JOANN       1998/05/08 12:48  1998/05/09 08:30
                             1999/11/30 12:12  1999/12/01 08:30
PARKER           GLENDA      1999/01/06 12:22  1999/01/07 08:30
RATHER           MICHAEL     1998/02/28 12:33  1998/03/01 08:30
WILSON           KELLY       1999/06/26 12:34  1999/06/27 08:30

WebFOCUS