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