OpenVMS(VAX)Fortran函数将字符*(*)返回到C

CW Holeman II

可以通过以下方式传递OpenVMS(VAX)FORTRAN子例程character*(*)

subroutine forsub (in)
character*(*) in
type *, in
return
end

从C函数:

#include<stdio.h>
#include <descrip.h>
extern void forsub();
main()
{
    auto $DESCRIPTOR(in_string, "VMS pass from c to fortran.");
    forsub(&in_string);
}

OpenVMS(VAX)FORTRAN函数如何返回一个character*(*)

character*(*) function forfunc (in)
character*(*) in
forfunc = in
return
end

用C代码处理:

#include<stdio.h>
#include <descrip.h>
extern ?????? forfunc();
main()
{
    auto $DESCRIPTOR(in_string, "VMS fortran function return to c.");
    ??????? = forfunc(&in_string);
}
  • OpenVMS V6.2
  • 数字Fortran 77 V6.5-188
  • DEC C V6.0-001
用户名

C用户指南》中的示例3-5可能解释了如何执行此操作:您需要已经提到的隐藏参数。一个例子是:

#include <stdio.h>
#include <descrip.h>
extern void forfunc();
main()
{
    auto $DESCRIPTOR(in_string, "VMS fortran function return to c.");
    char buffer[64];
    struct dsc$descriptor_s out_string = {
        sizeof buffer, DSC$K_DTYPE_T, DSC$K_CLASS_S, buffer};
    forfunc (&out_string, &in_string);
    printf ("%.*s\n", out_string.dsc$w_length, out_string.dsc$a_pointer);
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

Related 相关文章

热门标签

归档