COBOL - Comparison of date fields



Desenvolvido por DORNELLES Carlos Alberto - Analista de Sistemas - Brasília DF. - cad_cobol@hotmail.com

COBOL - Comparison of date fields
Enterprise COBOL for z/OS 4.2.0

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:

Nonwindowed
A comparação é realizada sem janelas, como se os operandos fossem ambos não-datas.

Windowed
A comparação é realizada como se:
  1. Qualquer campo de data em janela na relação foi expandido de acordo com a janela de século especificada pela opção do compilador YEARWINDOW, conforme descrito em Semantics of windowed date fields.

    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.

  2. Qualquer constante figurativa alfanumérica repetitiva foi expandida para o tamanho do campo de data em janela com o qual é comparada, fornecendo um comparand alfanumérico não-datado.
    As constantes figurativas alfanuméricas repetitivas incluem ZERO (em um contexto alfanumérico), SPACE, LOW-VALUE, HIGH-VALUE, QUOTE e ALL literal.

  3. Quaisquer operandos não-datados eram tratados como se tivessem o mesmo formato de data do campo de data, mas com ano base 1900.

    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.

Tabela 1. Comparações com campos de data

Nondate second operand Windowed date field second operand Expanded date field second operand
Nondate first operand Nonwindowed Windowed1 Nonwindowed
Windowed date field first operand Windowed1 Windowed Windowed
Expanded date field first operand Nonwindowed Windowed Nonwindowed
  1. Quando comparados com os campos de data em janela, os não-datas são considerados como contendo um ano em janela relativo a 1900.
    Para obter detalhes, consulte o item 3 na definição de comparação "Em janela" (Windowed).

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.


© Copyright IBM Corp.