COBOL - Comparison of date fields
Os campos de data podem ser de categoria alfanumérica, decimal zoneado ou decimal interno; aplicam-se as regras existentes de validade e tipo de comparação (numérica ou alfanumérica). Por exemplo, um campo de data alfanumérico 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 para a parte do ano, que pode ser em janela ou expandida.
Para os campos de data do último ano, as únicas comparações que são 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 ano anterior e um não.
A Tabela 1 mostra comparações com suporte para campos de data não anteriores ao último. Esta tabela usa os seguintes termos para descrever como as comparações são realizadas:
Essa expansão é sensível aos valores de tigger no campo de data comparando 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á realizada como se o operando não-data fosse expandido, assumindo 19 para a parte do século do ano expandido.
Se a opção do compilador DATEPROC (TRIG) estiver em vigor, a comparação é sensível aos valores de disparo de data no operando não-data. Para operandos alfanuméricos, esses valores de disparo 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 zeros ou noves também são tratados como disparadores. Se um operando não-segunda contiver um valor de acionamento, a comparação continua como se o operando não-segunda tivesse sido expandido copiando o valor de acionador para a parte do século assumida do ano expandido. Se o operando não-data não contiver um valor de acionamento, a parte do século do ano expandido será considerada 19.
A comparação é então realizada de acordo com as regras COBOL normais. 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 Aritmética com campos de data - Arithmetic with date fields.