Utiliser les fonctions de date standards

Dans cette section :

Lors de l'utilisation de Fonctions Date et Heure standards, vous devez comprendre comment fonctionnent les paramètres qui modifient le comportement de ces fonctions. De plus, vous devez savoir quels sont les formats de date et d'heure acceptables et comment fournir des valeurs à ceux-ci.

Vous pouvez influencer le comportement des fonctions de date de l'une des manières suivantes :

Pour plus d'informations sur chaque fonction de date standard, consultez :

DATEADD : Ajouter ou supprimer une unité de date dans une date

DATECVT : Convertir le format d'une date

DATEDIF : Rechercher la différence entre deux dates

DATEMOV : Déplacer une date à un point significatif

DATETRAN : Formater des dates dans les formats internationaux

DPART : Extraire un composant à partir d'une date

FIYR : Déterminer l'exercice financier

FIQTR : Obternir le trimestre financier

FIYYQ : Convertir une date de calendrier en une date financière

TODAY : Retourner une date actuelle


Haut de page

x
Spécifier les jours de travail

Dans cette section :

Vous pouvez déterminer quels jours sont des jours de travail et lesquels ne le sont pas. Les jours de travail affectent les fonctions DATEADD, DATEDIF, et DATEMOV. Identifiez les jours de travail jours comme jours jours ouvrables ou jours fériés.



x
Spécifier les jours ouvrables

Les jours ouvrables sont généralement le Lundi au Vendredi mais tous les jours ouvrables ne suivent pas cet emploi du temps. Par exemple, si votre entreprise mène ses activités le Dimanche, Mardi, Mercredi, Vendredi et Samedi, vous pouvez ajuster les unités de jours ouvrables pour refléter cet emploi du temps.



x
Syntaxe : Définir les jours ouvrables
SET BUSDAYS = smtwtfs							

où :

smtwtfs

est la liste à sept caractères de jours qui représentent votre semaine de travail. La liste contient un emplacement pour chaque jour du Dimanche au Samedi.

  • Pour identifier un jour de la semaine comme jour ouvrable, entrez la première lettre de ce jour dans l'emplacement de ce jour.
  • Pour identifier un jour non-ouvrable, entrez un trait de soulignement (_) dans l'emplacement de ce jour.

Si une lettre ne se trouve pas à sa position correcte, ou si vous remplacez une lettre avec un caractère autre q'un trait soulignement, vous recevez un message d'erreur.



Exemple : Définir les jours ouvrables pour refléter votre semaine de travail

Ce qui suit désigne les jours de travail comme étant le Dimanche, Mardi, Mercredi, Vendredi et Samedi.

SET BUSDAYS = S_TW_FS


x
Syntaxe : Afficher le paramètre actuel des Jours ouvrables
? SET BUSDAYS


x
Spécifier les Jours fériés

Vous pouvez spécifier une liste de dates désignées comme jours fériés dans votre entreprise. Ces dates sont exclues lorsque vous utilisez les fonctions qui effectuent des calculs en fonction des jours de travail. Par exemple, si le Jeudi dans une semaine donnée est désigné comme jour férié, le jour de travail suivant après Mercredi est Vendredi.

Pour définir une liste de jours fériés, vous devez :

  1. Créer un fichier de jours fériés à l'aide de l'éditeur de texte standard.
  2. Sélectionner un fichier de jours fériés en lançant la commande SET avec le paramètre HDAY.


x
Référence : Règles de création d'un fichier Jour férié
  • Les dates doivent être au format YYMD.
  • Les dates doivent être dans l'ordre croissant.
  • Chaque date doit s'afficher sur sa propre ligne.
  • Chaque année pour laquelle des données existent doit être comprise ; autrement le fichier de jours fériés est considéré comme non valide. Appeler une fonction de date avec une valeur de date en-dehors de la plage du fichier de jours fériés renvoie un zéro pour les requêtes de jour ouvrable.

    Si vous soustrayez deux dates en 2005, et que la dernière date du fichier de jours fériés est 20041231, la soustraction ne sera pas réalisée. Une façon d'éviter l'invalidation du fichier de jours fériés est d'entrer une date éloignée dans le futur dans n'importe quel fichier de jours fériés que vous créez (par exemple, 29991231) qui sera donc toujours considérée comme étant valide.

  • Vous pouvez inclure une description facultative du jour férié, délimité de la date par un espace.

Par défaut, le fichier de jours fériés a un nom de fichier du formulaire HDAYxxxx.err et se trouve sur votre chemin, ou sur z/OS sous le déploiement PDS, est un nom de membre nommé HDAYxxxx d'un PDS affecté DDNAME ERRORS. Dans votre procédure ou requête, vous devez lancer la commande SET HDAY=xxxx pour identifier le nom de membre ou de fichier. Alternativement, vous pouvez définir le fichier pour qu'il ait n'importe quel nom et qu'il soit stocké n'importe où, ou sur z/OS sous le déploiement PDS, allouer le fichier de jours fériés comme fichier séquentiel de tout nom ou comme membre HDAYxxxx de tout PDS. Pour plus d'informations sur l'utilisation de noms n'étant pas par défaut du fichier de jours fériés, consultez FILEDEF ou DYNAM le fichier Jours fériés.



x
Comment : Créer un fichier SAVE
  1. Dans un éditeur de texte, créez une liste de dates désignées comme jours fériés à l'aide des Règles de création d'un fichier Jour férié.
  2. Enregistrez le fichier.

    Si vous n'utilisez pas la convention de nommage par défaut, consultez FILEDEF ou DYNAM le fichier Jours fériés. Si vous utilisez la convention de nommage par défaut, utilisez les instructions suivantes :

    Sous Windows et UNIX : le fichier doit être HDAYxxxx.ERR

    Sous z/OS : le fichier doit être un membre de ERRORS nommé HDAYxxxx.

    où :

    xxxx

    est une chaîne de texte d'une longueur de quatre caractères.



x
Syntaxe : Sélectionner un fichier Jour férié
SET HDAY = xxxx							

où :

xxxx

fait partie du nom de fichier de jours fériers après HDAY. Cette chaîne doit avoir une longueur de quatre caractères.



Exemple : Créer et sélectionner un fichier Jour férié

Ce qui suit est le fichier HDAYTEST, qui établie les jours fériés :

19910325 TEST HOLIDAY
19911225 CHRISTMAS

Ce qui suit définit HDAYTEST comme le fichier de jours fériés :

SET BUSDAYS = SMTWTFS
SET HDAY = TEST

Cette requête utilise HDAYTEST dans ses calculs :

TABLE FILE MOVIES
PRINT TITLE RELDATE
COMPUTE NEXTDATE/YMD = DATEADD(RELDATE, 'BD', 1);
WHERE RELDATE GE '19910101';
END

La sortie est :

TITLE                                    RELDATE   NEXTDATE
-----                                    -------   --------
TOTAL RECALL                             91/03/24  91/03/26


x
Syntaxe : FILEDEF ou DYNAM le fichier Jours fériés

Dans tous les environnements sauf z/OS sous le déploiement PDS, sous la syntaxe suivante.

FILEDEF HDAYxxxx DISK {app/|path}/filename.ext							

où :

HDAYxxxx

est le nom logique (DDNAME) pour le fichier Jours fériés, où xxxx est n'importe quels quatre caractères. Etablissez un nom logique en utilisant la commande SET HDAY=xxxx dans votre procédure ou requête.

app

est le nom du segment où réside le champ.

path

est le chemin pour le fichier jour férié.

filename.ext

est le nom du fichier d'image.

Sur z/OS sous le déploiement PDS, utilisez ce qui suit pour allouer un fichier de jours fériés séquentiel.

DYNAM ALLOC {DD|FILE} HDAYxxxx DA qualif.filename.suffix SHR REU

Sur z/OS sous le déploiement PDS, utilisez ce qui suit pour allouer un fichier de jours fériés membre d'un PDS.

DYNAM ALLOC {DD|FILE} HDAYxxxx DA qualif.filename.suffix(HDAYxxx) SHR REU

où :

HDAYxxxx

est le DDNAME pour le fichier jour férié Votre FOCEXEC ou requête doit définir le paramètre HDAY à xxxx, où xxxx sont n'importes quels quatre caractères de votre choix. Si votre fichier de jours fériés est membre d'un PDS, HDAYxxxx doit également être le nom du membre.

qualif.filename.suffix

est le nom pleinement qualifié du fichier séquentiel qui contient la liste de jours fériés ou le PDS avec le membre HDAYxxxx qui contient la liste de jours fériés.



Exemple : Définir un fichier Jour férié

Le fichier de jours fériés suivant, nommé holiday.data dans le répertoire c:\temp sous Windows, définit le 3 Novembre 3, 2011 et 24 Décembre 24, 2011 comme jours fériés :

20111103
20111224

La requête suivante contre la source de données MOVIES utilise la commande FILEDEF pour définir ce fichier comme fichier de jours fériés. Le nom logique dans la commande FILEDEF est HDAYMMMM, et la procédure lance la commande SET HDAY=MMMM. Il définit ensuite la date du 2 Novembre 2011 et calcule le prochain jour ouvrable :

FILEDEF HDAYMMMM DISK c:\ibi\holiday.data
SET HDAY = MMMM                                      
SET BUSDAYS = _MTWTF_                                
DEFINE FILE MOVIES
NEWDATE/YYMD = '20111102';
NEXTDATE/YYMD = DATEADD(NEWDATE, 'BD', 1); 
END
TABLE FILE MOVIES                                    
SUM COPIES NEWDATE NEXTDATE                                 
ON TABLE SET PAGE NOPAGE   
END

La sortie montre que le prochain jour ouvrable après le 2 Novembre est le 4 Novembre puisque le 3 Novembre est un jour férié.



Exemple : Allouer le fichier Jours fériés à un fichier Séquentiel sur z/OS sous le déploiement PDS

Le fichier séquentiel suivant, nommé USER.HOLIDAY.DATA définit le 3 Novembre 2011 et le 24 Décembre 2011 comme jours fériés :

20111103
20111224

La requête suivante contre la source de données MOVIES utilise la commande DYNAM pour affecter ce fichier comme fichier de jours fériés. Le DDNAME dans la commande DYNAM est HDAYMMMM, et la procédure lance la commande SET HDAY=MMMM. Il définit ensuite la date du 2 Novembre 2011 et calcule le prochain jour ouvrable :

DYNAM ALLOC DD HDAYMMMM DA USER1.HOLIDAY.DATA SHR REU
SET HDAY = MMMM
SET BUSDAYS = _MTWTF_
DEFINE FILE MOVIES
NEWDATE/YYMD = '20111102';
NEXTDATE/YYMD = DATEADD(NEWDATE, 'BD', 1);
END
TABLE FILE MOVIES
SUM COPIES NEWDATE NEXTDATE
ON TABLE SET PAGE NOPAGE
END

La sortie montre que le prochain jour ouvrable après le 2 Novembre est le 4 Novembre puisque le 3 Novembre est un jour férié.

COPIES  NEWDATE     NEXTDATE  
------  -------     --------  
   117  2011/11/02  2011/11/04


Exemple : Allouer le fichier Jours fériés à un membre PDS sur z/OS sous le déploiement PDS

Le fichier de jours fériés suivant, membre HDAYMMMM dans un PDS nommé USER1.HOLIDAY.DATA définit le 3 Novembre 2011 et le 24 Décembre 2011 comme jours fériés :

20111103
20111224

La requête suivante contre la source de données MOVIES utilise la commande DYNAM pour affecter ce fichier comme fichier de jours fériés. Le DDNAME dans la commande DYNAM est HDAYMMMM, le nom du membre est également HDAYMMMM, et la procédure lance la commande SET HDAY=MMMM. Il définit ensuite la date du 2 Novembre 2011 et calcule le prochain jour ouvrable :

DYNAM ALLOC DD HDAYMMMM DA USER1.HOLIDAY.DATA(HDAYMMMM) SHR REU
SET HDAY = MMMM
SET BUSDAYS = _MTWTF_
DEFINE FILE MOVIES
NEWDATE/YYMD = '20111102';
NEXTDATE/YYMD = DATEADD(NEWDATE, 'BD', 1);
END
TABLE FILE MOVIES
SUM COPIES NEWDATE NEXTDATE
ON TABLE SET PAGE NOPAGE
END

La sortie montre que le prochain jour ouvrable après le 2 Novembre est le 4 Novembre puisque le 3 Novembre est un jour férié.

COPIES  NEWDATE     NEXTDATE  
------  -------     --------  
   117  2011/11/02  2011/11/04

Haut de page

x
Activer les zéros à gauche pour les Fonctions Date et Heure dans le Gestionnaire de dialogues

Comment :

Si vous utilisez une fonction de date et heure dans le Gestionnaire de dialogue qui renvoie un format entier numérique, le Gestionnaire de dialogue tronque tous zéros à gauche. Par exemple, si une fonction renvoie la valeur 000101 (qui indique le 1er Janvier 2000), le Gestionnaire de dialogue tronque les zéros à gauche, ce qui produit 101, une date incorrecte. Pour éviter ce problème, utilisez le paramètre LEADZERO.

LEADZERO ne prend en charge qu'une expression réalisant un appel direct à une fonction. Une fonction contenant une autre fonction mathématique ou imbriquée tronque toujours les zéros à gauche. Par exemple,

-SET &OUT = AYM(&IN, 1, 'I4')/100;

tronque les zéros à gauche quel que soit le paramètre LEADZERO.



x
Syntaxe : Définir l'affichage des zéros à gauche
SET LEADZERO = {ON|OFF}

où :

ON

Affiche les zéros à gauche si présents.

OFF

Tronque les zéros à gauche. OFF est la valeur par défaut.



Exemple : Affichage zéros initiaux

La fonction AYM ajoute un mois à la date d'entrée de Décembre 1999 :

-SET &IN = '9912';
-RUN
-SET &OUT = AYM(&IN, 1, 'I4');
-TYPE &OUT

Avec le paramètre LEADZERO par défaut, ça donne :

1

Ceci représente la date du Janvier 2000 incorrectement. Définir le paramètre LEADZERO dans la requête comme ce qui suit :

SET LEADZERO = ON
-SET &IN = '9912';
-SET &OUT = AYM(&IN, 1, 'I4');
-TYPE &OUT

résulte en :

0001

Ceci indique Janvier 2000 correctement.


WebFOCUS