Como: Referência: |
Linguagens Disponíveis: Reporting, Maintain
A função HMASK extrai um ou mais componentes de um valor data-hora e os move para um campo data-hora de destino com todos os outros componentes do campo de destino preservados.
HMASK(source, 'componentstring', input, length, output)
onde:
É o valor de data-hora do qual os componentes especificados são extraídos.
É uma string de códigos, em qualquer ordem, que indica que os componentes devem ser extraídos e movidos para o campo de saída data-hora. A tabela a seguir exibe os valores válidos. A string é considerada eliminada por qualquer caractere que não esteja na lista:
Código | Descrição |
---|---|
L | século (somente os dois dígitos de alta ordem de um ano com quatro dígitos) |
Y | ano (apenas os dois últimos dígitos dos quatro dígitos do ano) |
AA | Ano com quatro dígitos. |
M | mês |
D | dia |
H | Hora |
I | minutos |
S | segundos |
s | milisegundos (os três primeiros dígitos dos seis dígitos de microsegundo) |
u | microsegundos (os três dígitos menores do valor de seis-dígitos em microsegundos) |
n | Todos os seis dígitos dos microssegundos |
F | Três dígitos de baixa ordem de nove dígitos decimais. |
É o valor de data-hora que fornece todos os componentes dos resultados que não estão especificados na string de componentes.
É o comprimento do valor data-hora retornado. Valores válidos são:
É o campo que contém o resultado ou o formato do valor de saída posto entre aspas simples). Este campo deve ter o formato data-hora (tipo de dados H).
O processamento HMASK está sujeito à definição DTSTRICT. Mover o componente do dia (D) sem o componente do mês (M) podegerar um resultado inválido, que não é permitido se a definição DTSTRICT estiver ativada (ON). Valores data-hora inválidos fazem com que qualquer função data-hora resulte em zeros.
A fonte de dados tem um campo data-hora chamado TRANSDATE de tipo HYYMDI. A solicitação a seguir altera qualquer valor TRANSDATE com um componente de hora maior que 11:00 até as 8:30 do dia seguinte. Primeiramente, a função HEXTR extrai a parte da hora e minutos do valor e a compara com 11:00. Se for maior que 11:00, a função HADD chama HMASK para alterar a hora para 8:30 e adiciona um dia à data:
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
A saída é
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
Information Builders |