COBOL - Funções intrínsecas


Volta a página anterior

Volta ao Menu Principal


Desenvolvido por DORNELLES Carlos Alberto - Analista de Sistemas - Brasília DF.

 FUNCTION INTEGER-OF-DATE

   
  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.
 
   
   Formato geral: FUNCTION INTEGER-OF-DATE(num)
                             num é 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.  
   
   

 Exemplo

 
       
      *-----------------------------------------------------------------
       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