O PROGTIME é um módulo COBOL responsável por obter a hora atual do sistema e determinar o período correspondente do dia, disponibilizando uma mensagem de saudação em um registro compartilhado por meio da copybook COD001A.

A hora do sistema é obtida utilizando a instrução:

ACCEPT COD001A-TIME FROM TIME

Após a leitura, o programa verifica a hora atual e define a saudação correspondente:

06:00 até 12:00 → BOM DIA!
13:00 até 18:00 → BOA TARDE!
19:00 até 00:00 → BOA NOITE!
Demais horários → MADRUGADA!

O PROGTIME não exibe a mensagem diretamente na tela. A saudação é armazenada em um campo do registro compartilhado, permitindo que outro programa utilize essa informação posteriormente para apresentação ao usuário ou em outros processamentos.

Ao final da execução, o módulo retorna o controle ao programa chamador por meio da instrução GOBACK.

Dessa forma, o PROGTIME funciona como um módulo utilitário de tratamento de horário, de maneira semelhante ao PROGDATA para datas: centraliza uma regra comum e disponibiliza o resultado para reutilização por outros programas do sistema.

CODIGO FONTE:

      ******************************************************************
      * PROGRAMADOR: JOSE ROBERTO - COBOLDICAS
      * DATA: 31/01/2025
      * OBJETIVO: OBTER HORA E PERIODO DO SISTEMA
      ******************************************************************
       IDENTIFICATION DIVISION.
       PROGRAM-ID. PROGTIME.
      *================================================================*
       DATA DIVISION.
       FILE SECTION.
       WORKING-STORAGE SECTION.

       LINKAGE SECTION.
       COPY COD001A.

      *================================================================*
       PROCEDURE DIVISION USING COD001A-REGISTRO.
      *================================================================*

      *----------------------------------------------------------------*
      *    PROCESSAMENTO PRINCIPAL
      *----------------------------------------------------------------*
      *> cobol-lint CL002 0000-processar
       0000-PROCESSAR                  SECTION.
      *----------------------------------------------------------------*
      *     DISPLAY 'INICIO DO PROGRAMA PROGTIME'
            PERFORM 0001-OBTER-TIME
            PERFORM 0002-OBTER-PERIODO
            PERFORM 9999-FINALIZAR
            .
      *----------------------------------------------------------------*
      *> cobol-lint CL002 0000-end
       0000-END.                       EXIT.
      *----------------------------------------------------------------*
      
      *----------------------------------------------------------------*
      *    OBTER HORA DO SISTEMA
      *----------------------------------------------------------------*
       0001-OBTER-TIME                 SECTION.
      *----------------------------------------------------------------*
           ACCEPT COD001A-TIME        FROM TIME
           .
      *----------------------------------------------------------------*
      *> cobol-lint CL002 0001-end
       0001-END.                       EXIT.
      *----------------------------------------------------------------*

      *----------------------------------------------------------------*
      *    OBTER PERIODO DO DIA
      *----------------------------------------------------------------*
       0002-OBTER-PERIODO              SECTION.
      *----------------------------------------------------------------*

            IF COD001A-HORA >= 6 AND 
               COD001A-HORA <=12
               MOVE 'BOM DIA! '        TO COD001A-PERIODO
            ELSE 
               IF COD001A-HORA >= 13 AND
                  COD001A-HORA <=18
                  MOVE 'BOA TARDE! '   TO COD001A-PERIODO
               ELSE
                  IF COD001A-HORA >= 19 AND
                     COD001A-HORA <=00
                     MOVE 'BOA NOITE! ' TO COD001A-PERIODO
                  ELSE 
                     MOVE 'MADRUGADA! ' TO COD001A-PERIODO
                  END-IF
               END-IF
            END-IF
           .
      *----------------------------------------------------------------*
      *> cobol-lint CL002 0002-end
       0002-END.                       EXIT.
      *----------------------------------------------------------------*

      *----------------------------------------------------------------*
      *    FINALIZAR PROGRAMA
      *----------------------------------------------------------------*
       9999-FINALIZAR                  SECTION.
      *----------------------------------------------------------------*

            GOBACK 
            .
      *----------------------------------------------------------------*
      *> cobol-lint CL002 9999-end
       9999-END.                       EXIT.
      *----------------------------------------------------------------*