segunda-feira, abril 30, 2018

Programando Natural - 4 Parte

Quando trabalhamos com datas no Natural, o que é simulado aqui não faz parte oficial dos produtos da Software AG, os clientes são fortemente aconselhados a considerar esses utilitários e amostras como "exemplos de trabalho", a partir dos quais eles devem construir e testar suas próprias soluções. Nesse artigo apresento alguns conceitos teóricos e exemplos práticos.
As variáveis ​​Date e Time do Natural facilitam o código e facilitam a leitura.
Programa DTDIFF
 * DTDIFF
DEFINE DATA LOCAL
1 #FROM (D)  INIT 
1 #TO (D)    INIT 
1 #DAYS (N3)
END-DEFINE
#DAYS := D'04/09/2015' - D'04/06/2015'
WRITE #DAYS 'days between D"04/09/2015" and D"04/06/2015"'
*
#DAYS := #TO - #FROM
WRITE #DAYS 'days between #FROM and #TO'
*
#DAYS := *DATX - D'04/06/2015'
WRITE #DAYS 'days between *DATX and D"04/06/2015"'
END

Resultado do programa DTDIFF
   3 days between D'04/09/2015' and D'04/06/2015'
   3 days between #FROM and #TO
   3 days between *DATX and D'04/06/2015'

Programa TMDIFF
 * TMDIFF
DEFINE DATA LOCAL
1 #FROM (T)        INIT 
1 #THRU (T)        INIT 
1 #HOURS (T)       (HD='hh:mm:ss')
1 #D (D)
1 #DAYS (I1)       (HD='Days')
END-DEFINE
ASSIGN #HOURS = #THRU - #FROM     /* duration
ASSIGN #D     = #HOURS            /* extract days
ASSIGN #DAYS  = #D                /* D to numeric format
DISPLAY #DAYS
        #HOURS
END

Resultado do programa TMDIFF
 Days hh:mm:ss
---- --------
 
   1 18:10:01

Programa TMNEW
 * TMNEW
DEFINE DATA LOCAL
1 #PDT (T)  INIT <*TIMX> (HD='Pacific Time')
1 #NDT (T)               (HD='Newfoundland Time')
END-DEFINE
COMPUTE #NDT = #PDT + T'03:30:00'     /* 3.5 hours
DISPLAY #PDT (EM=YYYY/MM/DD^HH:II:SS)
        #NDT (EM=YYYY/MM/DD^HH:II:SS)
END

Resultado do programa TMNEW
 

   Pacific Time      Newfoundland Time
------------------- -------------------
 
2015/04/09 00:19:03 2015/04/09 03:49:03

Descrição :
Introdução
=========
Uma variável de formato D (decimal compactado de 4 bytes, internamente (P6)) contém um valor de data no intervalo de 1582-01-01 a 2400-12-31. Uma variável de formato T (decimal compactado de 7 bytes, internamente (P13)) é composta de componentes de data e hora. A parte da data parece e age como uma variável de formato D e a parte de hora contém um valor no intervalo de 00: 00: 00.0 a 23: 59: 59.9. A instrução MOVE EDITED (com restrições) é usada para converter variáveis ​​D & T de e para formatos alfanuméricos.
As variáveis ​​D & T podem ser preenchidas usando Variáveis ​​do Sistema, como * DATX e * TIMX, mas literais também podem ser usados.
Os literais de formato D são especificados com ano de 4 dígitos, mês de 2 dígitos e dia de 2 dígitos. A sequência dos componentes e o delimitador específico são específicos da sessão. Você pode executar um programa Natural 1-ine para determiná-los.
write * DATX.
Quando executo este programa, vejo uma data no formato mm/dd/aa, que indica que os literais de formato D devem ser especificados no formato mm/ dd/aaaa.
O componente de hora de uma variável de formato T é representado no formato hh: mm: ss, embora a precisão da variável seja de 10 segundos. Os componentes de data e hora podem ser especificados juntos em um único literal.
Formato D: D'04 /
08/2015 « Formato T: T'13: 00: 00 '/ * 1:00 pm
Formato eletrônico: E'04 / 08/2015 13:00:00'

Cálculos
=========
Variáveis ​​de formato numérico podem ser adicionadas ou subtraídas de variáveis ​​D para mover datas para frente ou para trás.
Compostos separados de data e hora podem ser combinados adicionando-se uma variável D a uma variável T.
T variaveis podem ser usadas para conter uma duração para mover os tempos para frente ou para trás.
Sample Code
==========
DTDIFF demonstra como calcular o número de dias entre duas datas O
TMDIFF demonstra como calcular o número de dias, horas, minutos e segundos entre duas vezes.
TMNEW demonstra como um campo de tempo pode ser usado para especificar uma duração (por exemplo, 1,5 horas) a ser usada nos cálculos;


0 comentários:

Enviar um comentário