A função "FUNCTION INTEGER-OF-DATE" converte uma data do formato YYYYMMDD para uma data inteira que representa o número de dias após 31 de dezembro de 1600.
Também é usada para achar a diferença entre duas datas do formato YYYYMMDD.
- argument-1
- é um numérico ou argumento inteiro, no formato YYYYMMDD, que representa a data subsequente a 31 de dezembro de 1600
Regras:
- O tipo desta função é um inteiro.
- O valor do argumento é obtido através do cálculo:
(YYYY * 10,000) + (MM * 100) + DD.
YYYY representa o ano do calendário gregoriano e deve ser um inteiro na faixa de 1601 até 9999.
MM representa o mês, é um inteiro e deve estar na faixa de 01 até 12.
DD representa o dia, é um inteiro e deve estar na faixa de 01 até 31.
O valor do DD deve ser válido conforme a combinação mês/ano.
- O valor retornado é um inteiro que representa o número de dias da data especificada, após 31 DE DEZEMBRO DE 1600.
*-----------------------------------------------------------------
WORKING-STORAGE SECIOTN.
*-----------------------------------------------------------------
01 WS-AUXILIARES.
05 WS-DIAS PIC 9(011) VALUE ZEROES.
05 WS-DIAS-1 PIC 9(008) VALUE 20060611.
05 WS-DIAS-2 PIC 9(008) VALUE 20050611.
*-----------------------------------------------------------------
PROCEDURE DIVISION.
*-----------------------------------------------------------------
* sintaxe do comando
* exemplo 01:
COMPUTE WS-DIAS = FUNCTION INTEGER-OF-DATE (WS-DIAS-1)
DISPLAY 'INTEGER-OF-DATE DIAS - ' WS-DIAS
* Resultado: FUNCTION INTEGER-OF-DATE ........ - 00000148085
* exemplo 02: diferença entre duas datas
COMPUTE WS-DIAS = (FUNCTION INTEGER-OF-DATE (WS-DIAS-1)
- FUNCTION INTEGER-OF-DATE (WS-DIAS-2))
DISPLAY 'INTEGER-OF-DATE DIFE - ' WS-DIAS
* Resultado: FUNCTION INTEGER-OF-DATE ........ - 00000000365
No primeiro exemplo o NUM tem um valor de 20060611 (que é 11 de junho de 2006) e o valor retornado e
armazenado em WS-DIAS é 148085 (148085 dias depois de 31 de dezembro de 1600).
No segundo exemplo a variável WS-DIAS1 tem um valor de 20060611 e a variável WS-DIAS2 tem um valor de 20050611.
A diferença entre as duas datas é de 365 dias.
Exemplo para achar o "day-of-week"
*-----------------------------------------------------------------
WORKING-STORAGE SECIOTN.
*-----------------------------------------------------------------
* Data no formato: AAAAMMDD
01 WS-AUXILIARES.
05 WS-DIA PIC 9(001) VALUE ZEROES.
05 WS-DATA PIC 9(008) VALUE ZEROES.
05 WS-NOMEDIA PIC X(007) VALUE SPACES.
*-----------------------------------------------------------------
PROCEDURE DIVISION.
*-----------------------------------------------------------------
* sintaxe do comando
MOVE DATA-QUALQUER TO WS-DATA
COMPUTE DIA = FUNCTION REM (FUNCTION INTEGER-OF-DATE(WS-DATA) , 7)
EVALUATE WS-DIA
WHEN 0
MOVE "Domingo" TO WS-NOMEDIA
WHEN 1
MOVE "Segunda" TO WS-NOMEDIA
WHEN 2
MOVE "Terca " TO WS-NOMEDIA
WHEN 3
MOVE "Quarta " TO WS-NOMEDIA
WHEN 4
MOVE "Quinta " TO WS-NOMEDIA
WHEN 5
MOVE "Sexta " TO WS-NOMEDIA
WHEN 6
MOVE "Sabado " TO WS-NOMEDIA
END-EVALUATE
© Copyright IBM Corp.