Программа Cobol A вызывает программу B через точку входа в B и вылетает - PullRequest
0 голосов
/ 03 июля 2019

Программа B на языке COBOL имеет 3 точки входа.Раздел связывания содержит 1 общую область, а затем 3 области (назовите их link-sect-a, link-sect-b и link-sect-c). Программа Cobol A вызывает программу B, используя запись 3. В z / OS она совершенно корректна(и нормально), чтобы написать

CALL PROGB-ENTRY3 using common area, link-sect-c

Проблема, похоже, заключается в GnuCobol, что после компиляции обоих в программе B после точки входа 3

DISPLAY 'First 50 bytes in link-sect-c 'link-sect-c(1:50)

ничего проще, чем следующеевызывает сбой ссылки на link-sect-c

Если вместо этого я изменю вызов в программе A (а также запись 3 в программе B, включив в нее все 4 аргумента) на

CALL PROGB-ENTRY3 using common area, link-sect-a, link-sect-b, link-sect-c

(хотя мне не нужно ни link-sect-a, ни link-sect-b), код работает

При необходимости я могу включить 2 примера программ, поскольку они действительно довольнотривиальный

1 Ответ

0 голосов
/ 03 июля 2019

Я добавил опцию -fsticky-linkage к компиляции программы B, и это решило проблему. (Это было легко подтвердить. Удалите опцию и снова скомпилируйте; проблема снова возникла)

...