OpenvVMS 将 char 参数数组从 pascal 传递给 C 函数
OpenvVMS passing array of char argument to C-function from pascal
我写了下一个 Pascal 代码
PROGRAM demo1 (OUTPUT);
%include "sqlr$include:sqlrdef.pas"
VAR
query : VARYING [50] OF CHAR;
BEGIN
query:= "select * from countries";
sqlr$test (query);
END.
"sqlrdef.pas" 文件包含
[EXTERNAL] FUNCTION sqlr$test (data : string) : INTEGER; EXTERNAL;
sqlr$test 它是一个 C 函数
unsigned long SQLR$TEST (char *data)
{
printf ("data is [%s] \n", data);
return SQLR$_NORMAL;
}
但是当我在 Pascal 上执行我的程序时,我得到下一个输出
data is []
我需要更改什么才能将参数从 Pascal 正确传递给 C 函数?
你应该使用
%stdescr query_dsc : [CLASS_S] PACKED ARRAY [$L1..$U1: INTEGER] OF CHAR
和
query : PACKED ARRAY [1..40] OF CHAR VALUE 'select * from countries';
我写了下一个 Pascal 代码
PROGRAM demo1 (OUTPUT);
%include "sqlr$include:sqlrdef.pas"
VAR
query : VARYING [50] OF CHAR;
BEGIN
query:= "select * from countries";
sqlr$test (query);
END.
"sqlrdef.pas" 文件包含
[EXTERNAL] FUNCTION sqlr$test (data : string) : INTEGER; EXTERNAL;
sqlr$test 它是一个 C 函数
unsigned long SQLR$TEST (char *data)
{
printf ("data is [%s] \n", data);
return SQLR$_NORMAL;
}
但是当我在 Pascal 上执行我的程序时,我得到下一个输出
data is []
我需要更改什么才能将参数从 Pascal 正确传递给 C 函数?
你应该使用
%stdescr query_dsc : [CLASS_S] PACKED ARRAY [$L1..$U1: INTEGER] OF CHAR
和
query : PACKED ARRAY [1..40] OF CHAR VALUE 'select * from countries';