COBOL - PROCEDURE DIVISION - Comparison of date fields
Os campos de data podem ser categoria alfanumérica, decimal zonado ou decimal interno; aplicam-se as regras existentes para o tipo de validade e comparação (numérico ou alfanumérico). Por exemplo, um campo de data alfanumérica não pode ser comparado com um campo de data decimal interno. Além dessas regras, dois campos de data podem ser comparados apenas se forem compatíveis; eles devem ter o mesmo formato de data, exceto a parte do ano, que pode ser exibida ou expandida.
Para os campos de data do último ano, as únicas comparações suportadas são IS EQUAL TO e IS NOT EQUAL TO entre dois campos de data do último ano com formatos de data idênticos ou entre um campo de data do último ano e uma não-data.
A Tabela 1 mostra comparações suportadas para campos de data sem data anterior. Esta tabela usa os seguintes termos para descrever como as comparações são realizadas:
Essa expansão é sensível aos valores do acionador no campo de data e se a opção do compilador DATEPROC (TRIG) estiver em vigor.
Se a opção do compilador DATEPROC (NOTRIG) estiver em vigor, a comparação será executada como se o operando não datado fosse expandido assumindo 19 na parte do século do ano expandido.
Se a opção do compilador DATEPROC (TRIG) estiver em vigor, a comparação será sensível aos valores do acionador de data no operando não datado. Para operandos alfanuméricos, esses valores de acionador são LOW-VALUE, HIGH-VALUE e SPACE. Para operandos alfanuméricos e numéricos comparados com campos de data em janela com pelo menos um X na cláusula DATE FORMAT (ou seja, campos de data em janela que não sejam apenas um ano em janela), os valores de todos os zeros ou noves também são tratados como gatilhos. Se um operando não datado contiver um valor de trigger, a comparação continuará como se o operando não datado fosse expandido copiando o valor de trigger para a parte do século assumida do ano expandido. Se o operando não datado não contiver um valor de disparo, a parte do século do ano expandido será assumida como 19.
A comparação é então realizada de acordo com as regras normais do COBOL. As comparações alfanuméricas não são alteradas para comparações numéricas pelo prefixo do valor do século.
As condições de relação podem conter expressões aritméticas. Para obter informações sobre o tratamento de campos de data em expressões aritméticas, consulte Arithmetic with date fields - Aritmética com campos de data.