ОЦЕНКА КОБОЛА: Как получить пустое предложение КОГДА-ЛИБО? - PullRequest
1 голос
/ 23 марта 2020
EVALUATE MyValue
WHEN 1
    DISPLAY "My value is 1"
WHEN 2
    DISPLAY "My value is 2"
WHEN OTHER
* Actually I don't need to do anything
END-EVALUATE

Я думаю, что где-то читал, что приложение COBOL обработает sh для EVALUATE, где предложения WHEN не охватывают значение оцениваемой переменной, если нет оператора WHEN OTHER подарок. Итак, чтобы избежать взлома sh, я хотел добавить этот пустой WHEN OTHER.

При каких обстоятельствах это необходимо, и если да, то правильный ли это подход?

Ответы [ 3 ]

9 голосов
/ 23 марта 2020

При каких обстоятельствах это необходимо ...

Ни при каких обстоятельствах в каждой среде COBOL, о которой я знаю ( может быть "некоторым"); и не требуется для любого компилятора COBOL 85/2002/2014 / future.

... и если да, то правильный ли это подход?

Нет, на самом деле Компилятор, соответствующий требованиям COBOL 85/2002/2014 / future, вызовет ошибку из-за отсутствия обязательного выражения (некоторые компиляторы допускают это как «расширение» [я бы сказал, что это ошибка], некоторые по крайней мере предупреждают, некоторые остаются) молчать).
Если есть некоторые «действительно странные причины», чтобы всегда включать WHEN OTHER: используйте (почти неиспользуемый) оператор CONTINUE как «оператор».

2 голосов
/ 31 марта 2020

При каких обстоятельствах это необходимо

Это определенно необходимо, если компилятор настроен на прерывание, если отсутствует оператор when other. ; -)

В противном случае, по моему мнению, хорошей практикой является программирование оператора when other, даже если он принимает только continue.

1 голос
/ 05 апреля 2020

Ваш код должен выглядеть так:

EVALUATE MyValue
WHEN 1
    DISPLAY "My value is 1"
WHEN 2
    DISPLAY "My value is 2"
WHEN OTHER
    CONTINUE
END-EVALUATE.
...