СЛЕДУЮЩЕЕ ПРЕДЛОЖЕНИЕ и вложенные предложения - PullRequest
1 голос
/ 08 июня 2011

Я наткнулся на этот кусочек кода и мне интересно, какая строка будет выполнена, если x меньше 3.

IF (X < 3)
    NEXT SENTENCE
ELSE
    GO TO A010-DO-A.

GO TO B010-DO-B.
GO TO C010-DO-C.

Я не уверен, заметит ли СЛЕДУЮЩАЯ ПОСЛАНИЕ предложение, вложенное вELSE блок.Когда выполняется СЛЕДУЮЩАЯ СТОРОНА, он пропускает GO TO A010-DO-A.или ПЕРЕЙДИТЕ К B010-DO-B.?

Ответы [ 3 ]

4 голосов
/ 08 июня 2011

Не путайте сферу утверждений и предложений в языке COBOL.

Предложения заканчиваются точкой (или полной остановкой, если вы британец). Следующее предложение переходит к следующему утверждению после окончания текущего предложения. В ваш пример это будет GO TO B010-DO-B

Как правило, использование NEXT SENTENCE в Cobol обесценивается - по крайней мере, так как введение ограничителей области видимости, таких как END-whatever (например, END-IF) что произошло где-то в 1985 году! Пожалуйста, не надо используйте NEXT SENTENCE больше. Вы должны знать, что это такое и что оно делает чтобы читать устаревший код, но, пожалуйста, не используйте его в любом новом коде.

Лучший способ написать код в вашем примере:

IF (X < 3) 
    CONTINUE  
ELSE  
    GO TO A010-DO-A 
END-IF    

GO TO B010-DO-B  
GO TO C010-DO-C

или ...

IF (X >= 3) 
    GO TO A010-DO-A 
END-IF    

GO TO B010-DO-B  
GO TO C010-DO-C

Обратите внимание, что все периоды (.) были удалены, потому что ограничитель области видимости END-IF делает их избыточными. периодов нужны только в конце процедуры (т. е. параграфы / разделы) и в нескольких других местах. Оператор CONTINUE в основном не работает, поэтому не влияет ни на что, кроме заполнитель для сохранения синтаксиса в силе.

Кстати ... Насколько я могу судить, утверждение GO TO C010-DO-C логически недоступно.

0 голосов
/ 21 января 2013

NEXT SENTENCE «разветвляется» (GO TO на любом языке, сгенерированном компилятором) в строке кода, следующей за следующей точкой / периодом, физически расположенной после оператора NEXT SENTENCE. По сути, это GO TO без «ярлыка».

Как уже было сказано, его не следует использовать в новом коде.

0 голосов
/ 08 июня 2011

Если Х меньше 3

IF (X < 3)
    NEXT SENTENCE

В противном случае или, другими словами, если X равно или больше 3

ELSE
GO TO A010-DO-A.
...