Попробуйте выполнить следующее:
Z900-EXIT-FAILURE.
IF <some condition that is always true>
GOBACK
END-IF
.
Поскольку оптимизатор компилятора не может определить тот факт, что условие IF
всегда выполняется, предупреждение не будет выдано.
Ответ на комментарий ниже и несколько других предложений ...
Оптимизация компилятора в некоторых будущих выпусках может определить условие как всегда истинное и удалить его: Это может вызвать предупреждение возвращаться. Столкнитесь с этой проблемой, когда это произойдет. Пока что что-то вроде: IF FUNCTION WHEN-COMPILED <= FUNCTION CURRENT-DATE
не будет оптимизировано и, вероятно, не будет в течение многих лет.
Может привести к менее эффективному коду: Весь смысл этот пункт для выхода из программы. Дополнительные инструкции, необходимые для теста IF
, не должны оказывать ощутимого влияния на производительность.
Отключить диагностику c: Это можно сделать с помощью выхода из компилятора, чтобы перехватить и обнулить сообщение см .: https://www.ibm.com/support/knowledgecenter/en/SS6SG3_6.3.0/pg/ref/rpext10.html. Я бы предостерег от этого, потому что действительные предупреждения также могут быть подавлены, некоторые из которых, вероятно, не следует игнорировать.
Вставьте комментарий в код, указывающий, что предупреждение является приемлемым: Не все программисты настолько усердны, чтобы продолжать просматривать предупреждения компилятора, как только они узнают, что они иногда являются приемлемыми. Скорее всего, в будущем будут пропущены действительные предупреждения.
Использование DECLARATIVES: Компилятор IBM Enterprise COBOL поддерживает DECLARATIVES
для ошибок, связанных с вводом / выводом, и отладку, только делая их использование справедливым ограничительный. Кроме того, существует ряд дополнительных ограничений относительно того, можно ли выдавать STOP RUN
или GOBACK
, пока активна процедура DECLARATIVE. Я бы не посоветовал использовать ДЕКЛАРАТИВНЫЕ. Языковая среда предоставляет средства для sh обработки пользовательских условий, но это довольно продвинутая топи c. см .: https://www.ibm.com/support/knowledgecenter/en/SSLTBW_2.1.0/com.ibm.zos.v2r1.ceea800/ceea824.htm
Использование GO TO Z900-EXIT-FAILURE
: GO
распознается компилятором как go "там и нет" возврат управления передачей и не будет выдавать сообщение IGYCB7310-W при условии, что GO
TO выполняется условно (например, содержится в IF
или другом условном выражении). Это, вероятно, лучшее решение при условии, что местные стандарты кодирования позволяют использовать GO
TO в этих обстоятельствах. В некоторых местах есть неоправданный патологический страх перед GO
TO, и он не допустит его ни при каких обстоятельствах.