COBOL - Conditional expressions - Comparison of date fields



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

COBOL - Conditional expressions - Comparison of date fields
Enterprise COBOL for z/OS, V4.2, Language Reference

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, abaixo, 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:

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

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

    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.

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

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

    Se a opção do compilador DATEPROC (NOTRIG) estiver em vigor, a comparação será realizada 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.

Table 1. Comparisons with date fields

Segundo operando não datado Segundo operando do campo de data com janelas Segundo operando do campo de data expandida

Primeiro operando não datado

Nonwindowed Windowed1 Nonwindowed

Primeiro operando do campo de data com janelas

Windowed1 Windowed Windowed

Primeiro operando do campo de data expandida

Nonwindowed Windowed Nonwindowed
  1. Quando comparado com os campos de data em janela, presume-se que as datas não contêm um ano em janela em relação a 1900.
    Para obter detalhes, consulte o item 3 na definição de comparação "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 Arithmetic with date fields - Aritmética com campos de data.



© Copyright IBM Corp.