Как часть программы Cobol, которую я модифицирую, функция stat должна быть вызвана для получения сведений о файле. Это в линукс 7.6. Но когда я запускаю программу, я получаю ошибку
Ошибка загрузки: файл 'stat', код ошибки: 173, pc = C6, call = 1, seg = 0 173 Вызванный программный файл не найден на диске/каталоге
Если я использую stat для файла из командной строки, он работает, и детали извлекаются. Я не понимаю, почему вызов stat не работает из cobol.
Я проверил статистику в файлах .so в /usr/lib. Можно найти статистику в libc_nonshared.a
Также пытался изменить вызов со стата на стат64 после изменения структуры стата. stat64 тоже выдает ту же ошибку.
Кто-нибудь еще сталкивался с этой проблемой. Любые указатели для продвижения вперед будут очень полезны.
R0001.
DISPLAY 'Program STARTED'
ACCEPT WS-FILENAME2 FROM COMMAND-LINE
MOVE 00025 TO FCD-NAME-LENGTH
MOVE x'00' TO WS-FILENAME2(FCD-NAME-LENGTH:1)
DISPLAY 'FILENAME : ' WS-FILENAME2
CALL 'stat' USING WS-FILENAME2
ST-BUF
RETURNING WS-RETURN-CODE.
DISPLAY 'STAT CALL COMPLETE'
DISPLAY 'RETURN CODE: ' WS-RETURN-CODE
IF WS-RETURN-CODE NOT = ZERO
SET GNIO-RC-ERR-DATEXT TO TRUE
GO TO R0099
END-IF.
DISPLAY 'DEVICE VALUE : ' ST-DEV-LINUX
DISPLAY 'INODE VALUE : ' ST-INO64-LINUX
DISPLAY 'ATIME : ' ST-ATIME-LINUX
DISPLAY 'CTIME : ' ST-CTIME-LINUX
DISPLAY 'MTIME : ' ST-MTIME-LINUX
DISPLAY 'SIZE64 : ' ST-SIZE64-LINUX
DISPLAY 'BLOCKS64 : ' ST-BLOCKS64-LINUX.
R0099.
EXIT.
STOP RUN.
Ошибка загрузки: файл 'stat', код ошибки: 173, pc = C6, call = 1, seg = 0 173 Вызванный программный файл не найден на диске/каталоге
/usr/bin/stat
. - person Roadowl   schedule 06.08.2019type stat
говорит из командной строки? - person Roadowl   schedule 06.08.2019LD_LIBRARY_PATH=$COBDIR/lib:$LD_LIBRARY_PATH; export $LD_LIBRARY_PATH <cobol compiler>
. - person Roadowl   schedule 06.08.2019source ~/.bashrc
. - person Roadowl   schedule 06.08.2019echo $LD_LIBRARY_PATH
из командной строки, он печатает настройку, как вы указали ранее. Кроме этого, проверьте и еще раз проверьте настройки среды для VC. - person Roadowl   schedule 06.08.2019:/usr/local/lib:/lib
в вашем LD_LIBRARY_PATH? Попробуйте также добавить к нему:/lib64
. По сути, когда вы выполняетеldd /usr/bin/stat
, ваша программа (stat) должна иметь доступ ко всем упомянутым там каталогам. - person Roadowl   schedule 06.08.2019stat
(вызывается из командной строки) и функцияstat
— совершенно разные вещи! - person Simon Sobisch   schedule 07.08.2019CALL-CONVENTION 8 IS STATIC
, а затем выполнитеCALL STATIC 'stat' ...
. Если это сработает (не могу проверить, а документация минимальна), я воссоздам это как ответ. - person Simon Sobisch   schedule 07.08.2019