🧠 Explicação

O comando EXEC CICS FORMATTIME converte uma data/hora absoluta (ABSTIME), retornada geralmente pelo EXEC CICS ASKTIME, em diversos formatos legíveis e utilizáveis. Ele permite extrair partes da data (dia, mês, ano, etc.), gerar carimbos de data/hora (timestamp), ou retornar a data/hora em formatos específicos como DD/MM/AAAA, RFC1123, RFC3339, entre outros.

🔧 Usos mais comuns

  • Obter a data e hora atual formatada para exibição ou comparação.

  • Gerar timestamp padrão internacional (RFC1123 ou RFC3339).

  • Extrair apenas partes da data: dia, mês, ano, dia da semana, etc.

  • Calcular o número de dias desde 1900 (útil para controle de tempo).

  • Gerar datas legíveis com separadores personalizados.

🧾 Sintaxe básica

EXEC CICS FORMATTIME
     ABSTIME(variavel-tempo)
     [ DATE(data-formatada) ]
     [ TIME(hora-formatada) ]
     [ DATESEP(separador-data) ]
     [ TIMESEP(separador-hora) ]
     [ DATESTRING(timestamp) ]
     [ STRINGFORMAT(RFC1123 | RFC3339) ]
     [ STRINGZONE(UTC | LOCAL) ]
     [ DDMMAAAA(campo) | MMDDAAAA(campo) | ... ]
     [ YEAR(campo) DAYCOUNT(campo) DAYOFWEEK(campo) ... ]
END-EXEC.

💻 Exemplo prático

01 UTIME        PIC S9(15) COMP-3.
01 DATA-FORM    PIC X(10).
01 HORA-FORM    PIC X(08).

EXEC CICS ASKTIME
     ABSTIME(UTIME)
END-EXEC.

EXEC CICS FORMATTIME
     ABSTIME(UTIME)
     DATESEP('-')
     DDMMAAAA(DATA-FORM)
     TIME(HORA-FORM)
     TIMESEP(':')
END-EXEC.

📌 Resultado exemplo: DATA-FORM = "06-05-2025", HORA-FORM = "09:15:47"

📌 Regras

  • O valor de ABSTIME deve ser obtido pelo comando ASKTIME.

  • Para gerar DATESTRING (timestamp), use obrigatoriamente STRINGFORMAT e STRINGZONE se desejar ajustar formato e fuso horário.

  • O separador de data (DATESEP) ou hora (TIMESEP) é opcional — se omitido, o padrão será / e : respectivamente.

  • A data/hora fornecida em DATESTRING pode ser UTC ou LOCAL, conforme definido em STRINGZONE.

💡 Dicas

  • Para gerar timestamps compatíveis com APIs, use:

EXEC CICS FORMATTIME
     ABSTIME(UTIME)
     DATESTRING(AREA-TIMESTAMP)
     STRINGFORMAT(RFC3339)
     STRINGZONE(UTC)
END-EXEC.
  • Para comparar datas de forma simplificada, utilize DAYCOUNT, que retorna o número de dias desde 01/01/1900.

  • Ao obter ABSTIME de dois momentos diferentes, você pode calcular a diferença entre eles e passar ao FORMATTIME para obter tempos decorrido, dia da semana, etc.

 

✅ Conclusão

O EXEC CICS FORMATTIME é um comando extremamente versátil e indispensável para lidar com formatação de data e hora em aplicações CICS. Ele permite transformar valores técnicos (ABSTIME) em formatos legíveis ou compatíveis com padrões modernos, além de oferecer precisão para cálculos e comparações temporais. Usado corretamente com ASKTIME, ele é ideal tanto para exibição quanto para lógica de negócio.