O comando EVALUATE fornece uma notação abreviada para uma série de declarações IF. As palavras-chave não podem ser abreviadas.
>>-EVALUATE--+-constant---+-------------------------------------> +-expression-+ +-reference--+ +-TRUE-------+ '-FALSE------' .-----------------------------------. | .---------. | V V | | >----WHEN--| any_clause |----command-+-+------------------------> >--+--------------------------+--END-EVALUATE--;--------------->< | .---------. | | V | | '-WHEN--OTHER----command-+-' any_clause |--+-+-ANY-------+------------------------------------------+---| | +-condition-+ | | +-TRUE------+ | | '-FALSE-----' | '-+-----+--+-constant--+--+----------------------------+-' '-NOT-' '-reference-' '-+-THROUGH-+--+-constant--+-' '-THRU----' '-reference-'
constant
Um válido Debug ferramenta constante COBOL.
expression
Um válido Debug ferramenta de expressão aritmética COBOL.
reference
Um válido Debug ferramenta de referência COBOL.
condition
Uma condição de relação simples.
command
Um válido Debug ferramenta de comando.
Notas:
- Somente um único assunto é suportado.
- Consecutivo WHENs sem comandos associados não são suportados.
- THROUGH/THRU Intervalos podem ser especificados como constantes ou referências.
- Ver Empresa COBOL para z/OS Referência de linguagem para uma explicação sobre as seguintes palavras-chave COBOL:
ANY
FALSE
NOT
OTHER
THROUGH
THRU
TRUE
WHEN
- A ferramenta de Debug implementa o comando EVALUATE como uma série de comandos IF.
- Se a opção dos DADOS do comando PLAYBACK ENABLE estiver em vigor para a unidade de compilação EVALUATE. Pode ser usado enquanto você repete as instruções gravadas usando o comando PLAYBACK.
- Para os programas COBOL otimizados, o valor de referência não pode referir-se a todas as variáveis descartadas pelo otimizador.
- Se uma variável COBOL é definido como nacional e é um operando em uma condição relação com um alfabético, operando alfanumérico ou numérico, o operando que não é nacional é convertido para Unicode antes que a comparação é feita, exceto para itens do grupo.
Exemplo:
O exemplo a seguir mostra um comando EVALUATE e a codificação equivalente para um comando IF:
EVALUATE menu-input
WHEN "0"
CALL init-proc
WHEN "1" THRU "9"
CALL process-proc
WHEN "R"
CALL read-parms
WHEN "X"
CALL cleanup-proc
WHEN OTHER
CALL error-proc
END-EVALUATE;
O equivalente ao comando IF:
IF (menu-input = "0") THEN
CALL init-proc
ELSE
IF (menu-input >= "1") AND (menu-input <= "9") THEN
CALL process-proc
ELSE
IF (menu-input = "R") THEN
CALL read-parms
ELSE
IF (menu-input = "X") THEN
CALL cleanup-proc
ELSE
CALL error-proc
END-IF;
END-IF;
END-IF;
END-IF;