Я попытался собрать то, что вы указали в вопросе, и вот что я обнаружил.
Мой пример исходного кода:
Источник EOS
EOS CSECT
SR 15,15
BR 14
END EOS
END OF MEMBER
При сборке источника этап сборки завершается с кодом возврата 8. Однако он, кажется, обработал источник до оператора END EOS . Затем он начинает обрабатывать следующий текст как другой модуль.
Вывод списка сборки
Active Usings: None
Loc Object Code Addr1 Addr2 Stmt Source Statement
1 *
000000 00000 00004 2 EOS CSECT
000000 1BFF 3 SR 15,15
000002 07FE 4 BR 14
000000 5 END EOS
Diagnostic Cross Reference and Assembler Summary
No Statements Flagged in this Assembly
HIGH LEVEL ASSEMBLER, 5696-234, RELEASE 6.0, PTF UI50739
Интересно, что я получаю набор ошибок, независимых от первого CSECT на том же этапе сборки, в результате которого код возврата равен 8. Обратите внимание, что номер строки END OF MEMBER
равен 1. Эти ошибки:
Ошибки для заявлений пост END
Active Usings: None
Loc Object Code Addr1 Addr2 Stmt Source Statement
1 END OF MEMBER
** ASMA057E Undefined operation code - OF
** ASMA435I Record 6 in USER1.TEST.CNTL(EOS) on volume: T70502
** ASMA140W END record missing
** ASMA435I Record 6 in USER1.TEST.CNTL(EOS) on volume: T70502
В этом случае нет проблемы в том, что CSECT был собран и сгенерирован, и вы могли бы связать модуль, но ясно, что это проблема для последующих шагов.
Единственная ссылка на оператор END OF MEMBER
в документах HLASM - это то, что он является частью обработки выхода HLASM .
Вызов END OF MEMBER упрощает управление стеком, требуемое при кодировании выхода LIBRARY, который содержит READ и FIND. Выход может использовать информацию, предоставленную этим вызовом, в обработке вложенных FIND, где обычно имеется соответствующее резюме FIND (options = 2) для каждого вложенного FIND (options = 3). Пример использования вызовов END OF MEMBER для управления стеком приведен в примере кода. Использование вызовов End of Member для управления стеком при выходе из TERM - TRMEXIT
.
.
Недопустимый синтаксис для исходного кода сборки.