我能够(在Windows XP上)预编译,编译和链接包含嵌入式SQL的示例(Fujitsu NetCobol)COBOL测试程序。此测试程序用于读取和显示DB2(Linux上的UDB 9.5)数据库表中的行数。
在运行时,我收到以下错误消息:
JMP0811I-U [PID:... TID:...]'sqlgstrt'程序的链接规则或参数失败。 PGM = DB2TST1
此错误引用的预编译源代码如下所示:
* ... in WORKING-STORAGE section:
01 SQLA-PROGRAM-ID.
05 SQL-PART1 pic 9(4) COMP-5 value 172.
05 SQL-PART2 pic X(6) value "AEAMAI".
05 SQL-PART3 pic X(24) value "gBSdTdJY01111 2 ".
05 SQL-PART4 pic 9(4) COMP-5 value 13.
05 SQL-PART5 pic X(13) value "ADMINISTRATOR".
05 SQL-PART6 pic X(115) value LOW-VALUES.
05 SQL-PART7 pic 9(4) COMP-5 value 8.
05 SQL-PART8 pic X(8) value "COBOL/DB".
05 SQL-PART9 pic X(120) value LOW-VALUES.
* .. in PROCEDURE DIVISION:
*EXEC SQL CONNECT TO :DB-SERVER USER :DB-USER USING :DB-PWD
* END-EXEC
CALL "sqlgstrt" USING
BY CONTENT SQLA-PROGRAM-ID
BY VALUE 0
BY REFERENCE SQLCA
有人知道此错误消息的含义吗?
答案 0 :(得分:1)
错误描述是由于: *)CHECK(LINKAGE)编译器选项 (仅适用于Windows的NetCOBOL,不适用于Linux) 没有这个选项,错误仍然存在,但更不具有描述性
实际错误是由于:
*)DB2预编译器生成的CALL "sqlgstrt" USING ...
意味着错误
(= COBOL)调用约定=>手动将呼叫更改为
CALL "sqlgstrt" WITH STDCALL LINKAGE USING...
已解决运行时错误
这个解决方案意味着更改预编译器的结果,所以我仍然在寻找DB2预编译器选项来生成正确的CALL。