Добрый день, я анализирую некоторый устаревший код в COBOL и обнаружил этот конкретный случай, который я не могу понять.
000610 IF EIBCALEN = 0 00061011
000700 EXEC CICS 00070000
000800 SEND MAP('TCHM144') 00080007
001100 END-EXEC. 00110000
001110 ELSE 00111013
001111 IF EIBAID = DFHCLEAR OR DFHPF2 OR DFHPF3 00111113
001112 EXEC CICS SEND FROM(WS-CHAR) 00111213
001113 LENGTH(LENGTH OF WS-CHAR) 00111313
001114 ERASE 00111413
001115 END-EXEC. 00111513
001116 EXEC CICS RETURN END-EXEC. 00111613
001120* MAPONLY ERASE FREEKB 00112002
001200 EXEC CICS 00120000
001300 RETURN TRANSID('TCE4') 00130000
001400 END-EXEC. 00140000
001500 GOBACK. 00150012
Насколько я помню, наличие точки в теле оператора IF закрывает предложение до IF на самом высоком уровне, но в этом случае за END-EXEC, содержащимся в теле IF, следует точка, которая, следуя вышеупомянутому логика закрыла бы предложение, а ELSE не относился бы ни к какому ЕСЛИ. Я прав или есть конкретный случай, когда это сработает? Спасибо.