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';