COBOL - Funções intrínsecas - INTEGER-OF-DATE


Volta a página anterior

Volta ao Menu Principal


Desenvolvido por DORNELLES Carlos Alberto - Analista de Sistemas - Brasília DF. - cad_cobol@hotmail.com

COBOL - Funções intrínsecas - INTEGER-OF-DATE
Intrinsic functions - Enterprise COBOL for z/OS 6.3.0

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:

  1. O tipo desta função é um inteiro.
  2. 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.
  3. 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.