Uso di Funzioni Data Standard

In questa sezione:

Quando si utilizzano le funzioni data standard, è necessario capire le impostazioni che alterano il comportamento di queste funzioni, come anche i formati consentiti e come fornire valori in questi formati.

È possibile influenzare il comportamento delle funzioni data nei seguenti modi:

Per informazioni dettagliate su ciascuna funzione data legacy, consultare:

DATEADD: Aggiungere o sottrarre una unità data a o da una data

DATECVT: Conversione del formato di una data

DATEDIF: Ricerca della differenza tra due date

DATEMOV: Spostamento di una data a un punto significativo

DATETRAN: Formattazione date in formati internazionali

DPART: Estrazione di un componente da una data

FIYR: Ottenimento dell'anno finanziario

FIQTR: Ottenimento del trimestre finanziario

FIYYQ: Conversione di una data calendario in una data finanziaria

TODAY: Restituzione della data corrente


Inizio pagina

x
Specificazione dei Giorni Lavorativi

In questa sezione:

È possibile determinare quali giorni sono lavorativi e quali sono festivi. I giorni lavorativi influenzano le funzioni DATEADD, DATEDIF e DATEMOV È possibile identificare i giorni lavorativi come giorni aziendali o festività.



x
Specificazione giorni aziendali

I giorni lavorativi sono, di solito, da Lunedì a Venerdì, ma non tutte le aziende presentano la stessa agenda. Per esempio, se la propria compagnia non lavora la Domenica, il Martedì, il Mercoledì, il Venerdì e il Sabato, è possibile personalizzare le unità dei giorni per riflettere quell'agenda.



x
Sintassi: Come impostare i giorni aziendali
SET BUSDAYS = smtwtfs							

dove:

smtwtfs

L'elenco a sette caratteri dei giorni che rappresentano la propria aziendale. L'elenco ha una posizione per ciascun giorno da Domenica a Sabato:

  • Per identificare un giorno della settimana come giorno aziendale, immettere la prima lettera di quel giorno nella posizione sua giorno.
  • Per identificare un giorno non aziendale, immettere un simbolo di sottolienatura (_) nella posizione di quel giorno.

Se una lettera non si trova nella sua posizione corretta, o se si sostituisce una lettera con un caratere diverso da un simbolo di sottolienatura, si riceve un messaggio di errore.



Esempio: Impostazione i giorni aziendali per riflettere la propria settimana lavorativa

Il seguente progetta giorni lavorativi come Domenica, Martedì, Mercoledì, Venerdì e Sabato:

SET BUSDAYS = S_TW_FS


x
Sintassi: Come visualizzare l'impostazione corrente dei giorni aziendali
? SET BUSDAYS


x
Specificazione Festività

È possibile specificare un elenco di date progettate come festività nella propria azienda. Queste date sono escluse quando si usano funzioni che eseguono calcoli in base ai giorni lavorativi. Per esempio, se Giovedì in una data settimana è progettata come festività, il prossimo giorno lavorativo dopo Mercoledì è Venerdì.

Per definire un elenco di festività, è necessario:

  1. Creare un file festività usando un editor di testo standard.
  2. Selezionare il file festività emettendo il comando SET con il parametro HDAY.


x
Riferimento: Regole per la creazione di un file festività.
  • Le date devono essere in formato YYMD.
  • Le date devono essere in ordine ascendente.
  • Ciascuna data deve essere sulla propria riga.
  • Ogni anno per cui esiste una data deve essere incluso o il file festività è considerato invalido. Chiamando una funzione data con un valore data fuori all'intervallo del file festività si restituisce uno zero per richieste di giorni aziendali.

    Se si sta sottraendo due date nel 2005 e la data più recente nel file festività è 20041231, la sottrazione non verrà eseguita. Un modo per evitare l'invalidità del file festività è quello di emettere una data molto lontano nel tempo in ogni file festività creato (per esempio, 29991231) e, quindi, questo verrà considerato valido.

  • È possibile includere una descrizione opzionale della festività, separata dalla data da uno spazio.

Per impostazione predefinita, il file festività presenta un nome file nella forma di HDAYxxxx.err e si trova sul proprio percorso, o in z/OS, in sviluppo PDS, è un membro chiamato HDAYxxxx di un PDS allocato a DDNAME ERRORS. Nella propria procedura o richiesta, è necessario emettere il comando SET HDAY=xxxx per identificare il file o il nome membro. In alternativa, è possibile definire il file per avere qualsiasi nome e memorizzarlo ovunque o, su z/OS in sviluppo PDS, allocare il file festività come file sequenziale d qualsiasi noe o come membro HDAYxxxx di qualsiasi PDS. Per informazioni sull'uso di nomi file festività non predefiniti, consultare Come FILEDEF o DYNAM il file festività.



x
Procedura: Come creare un file Festività
  1. In un editor di testo, creare un elenco di date progettate come festività usando Regole per la creazione di un file festività..
  2. Salvare il file.

    Se non si sta usando la convenzione di nominazione predefinita, consultare Come FILEDEF o DYNAM il file festività. Se si sta usando la convenzione di nominazione predefinita, usare le seguenti istruzioni:

    In Windows e UNIX: Il file deve essere HDAYxxxx.ERR

    In z/OS: Il file deve essere un membro di ERRORS chiamato HDAYxxxx.

    dove:

    xxxx

    Una stringa di testo lunga quattro caratteri.



x
Sintassi: Come selezionare un file Festività
SET HDAY = xxxx							

dove:

xxxx

Parte del nome del file festività dopo HDAY. Questa stringa deve essere lunga quattro caratteri.



Esempio: Creazione e selezione di un file festività

Il seguente è il file HDAYTEST, che stabilisce le festività

19910325 TEST HOLIDAY
19911225 CHRISTMAS

Il seguente imposta HDAYTEST come il file festività:

SET BUSDAYS = SMTWTFS
SET HDAY = TEST

Questa richiesta usa HDAYTEST nei propri calcoli:

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

L'emissione è:

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


x
Sintassi: Come FILEDEF o DYNAM il file festività

In tutti gli ambienti, tranne z/OS sotto sviluppo PDS, usare la seguente sintassi.

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

dove:

HDAYxxxx

Il nome logico (DDNAME) per il file festività, dove xxxx è qualsiasi stringa lunga quattro caratteri. Si stabilizza questo nome logico emettendo il comando SET HDAY=xxxx nella propria procedura o richiesta.

app

Il nome dell'applicazione dove si trova il file festività.

percorso

Percorso del file Festività.

filename.ext

Nome del file festività.

Su z/OS in sviluppo PDS, usare il seguente per allocare un file festività sequenziale.

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

Su z/OS in sviluppo PDS, usare il seguente per allocare un file festività, ovvero un membro di un PDS.

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

dove:

HDAYxxxx

DDNAME per il file festività. Il proprio FOCEXEC o richiesta deve impostare il parametro HDAY su xxxx, dove xxxx è qualsiasi combinazione a quattro caratteri. Se il proprio file festività è un membro di un PDS, HDAY xxxx deve inoltre essere il nome del membro.

qualif.filename.suffisso

Il nome completamente qualificato del file sequenziale che contiene l'elenco di festività o il PDS con il membro HDAYxxxx che contiene l'elenco di festività.



Esempio: Definizione di un file Festività

Il seguente file festività, chiamato holiday.data nella directory c:\temp in Windows, definisce il 3 Novembre 2011 eil 24 Dicembre 2011 come festività:

20111103
20111224

La seguente richiesta rispetto all'origine dati MOVIES usa il comando FILEDEF per allocare questo file come file festività. Il nome logico nel comando FILEDEF è HDAYMMMM e la procedura emette il comando SET HDAY=MMMM. Definisce, quindi, la data 2 Novembre 2011 e calcola il prossimo giorno lavorativo:

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

L'emissione mostra che il prossimo giorno lavorativo dopo il 2 Novembre è il 4 Novembre, poiché il 3 Novembre è una festività:



Esempio: Allocazione del file festività ad un file sequenziale su z/OS in sviluppo PDS

Il seguente file sequenziale, chiamato USER1.HOLIDAY.DATA, definisce il 3 Novembre 2011 e il 24 Dicembre 2011 come festività:

20111103
20111224

La seguente richiesta rispetto all'origine dati MOVIES usa il comando DYNAM per allocare questo file come file festività. DDNAME nel comando DYNAM è HDAYMMMM e la procedura emette il comando SET HDAY=MMMM. Definisce, quindi, la data 2 Novembre 2011 e calcola il prossimo giorno lavorativo:

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

L'emissione mostra che il prossimo giorno lavorativo dopo il 2 Novembre è il 4 Novembre, poiché il 3 Novembre é una festività:

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


Esempio: Allocazione il file festività ad un membro PDS su z/OS nello sviluppo PDS

Il seguente file festività, membro HDAYMMMM in un comando PDS USER1.HOLIDAY.DATA, definisce il 3 Novembre 2011 e il 24 Dicembre 2011 come festività:

20111103
20111224

La seguente richiesta rispetto all'origine dati MOVIES usa il comando DYNAM per allocare questo file come file festività. DDNAME nel comando DYNAM è HDAYMMMM, il nome membro è inoltre HDAYMMMM e la procedura emette il comando SET HDAY=MMMM. Definisce, quindi, la data 2 Novembre 2011 e calcola il prossimo giorno lavorativo:

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

L'emissione mostra che il prossimo giorno lavorativo dopo il 2 Novembre è il 4 Novembre, poiché il 3 Novembre é una festività:

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

Inizio pagina

x
Abilitazione degli zeri iniziali per funzioni data e ora in Dialogue Manager

Come:

Se si usa una funzione ora e data in Dialogue Manager che restituisce un fomato numerico intero, Dialogue Manager tronca qualsiasi zero iniziale. Per esempio, se una funzione restituisce il valore 000101 (indicando 1 Gennaio 2000), Dialogue Manager tronca gli zero iniziali, producendo 101, una data incorretta. Per evitare questo problema, usare il parametro LEADZERO.

LEADZERO supporta solo una espressione che fa una chiamata diretta ad una funzione. Una espressione che presenta nidificazione, o altre funzioni matematiche, tronca sempre gli zero iniziali. Ad esempio,

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

tronca gli zeri iniziali indipendentemente dall'impostazione del parametro LEADZERO.



x
Sintassi: Come impostare la visualizzazione degli zeri iniziali
SET LEADZERO = {ON|OFF}

dove:

ON

Visualizza gli zeri iniziali se presenti.

OFF

Tronca gli zeri iniziali. Il valore predefinito è OFF.



Esempio: Visualizzazione zeri iniziali

La funzione AYM aggiunge un mese alla data di immissione del Dicembre 1999:

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

Usando l'impostazione predefinita LEADZERO, si ottiene:

1

Si rappresenta la data di Gennaio 2000 in modo scorretto. Impostazione del parametro LEADZERO nella richiesta come segue:

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

risultati nel seguente:

0001

Questa data indica Gennaio 2000 in modo corretto.


WebFOCUS