0

我正在尝试将物理文件放在 IFS 上。

所以试图打开文件只是为了保证它在源代码上的存在。

我就是这样做的:

errno=0;                                                          
if ( ((pf = _Ropen(pfname, "rr, nullcap=Y")) == NULL) || (errno!=0) )
{
   printf("\nError:  Cannot open file %s\n",pfname);
   //...
}

但是,文件没有打开pf = SPP:*NULL结果

这不是问题,但我也无法查看errno. eval errno给出了Syntax error occurred.没有任何线索发生了什么。

我仍然可以查看以下内容pfname:它看起来像'MYLIB/MYFILE'

还尝试了绝对路径: '/QSYS.LIB/MYLIB.LIB/MYFILE.FILE',没有任何区别 - 仍然存在相同的错误。

IBM IFS explorer 清楚地显示了这个库的内容,并且在这个库中MYLIB有一个。MYFILE

UPD

我添加了一些调试日志,只是为了提取错误描述或错误代码:

numbytes = sprintf( (char *)NULL, "%s", strerror(errno) );

ret = (char *)malloc( ( numbytes + 1 ) * sizeof( char ) );

sprintf( ret, "%s", strerror(errno) );     

结果retSPP:*NULL

有什么想法可以尝试吗?

4

1 回答 1

1

结果非常简单 - 缺少空字节,因此_Ropen无法真正访问文件,因此也不会传递错误。

为了处理这个问题,需要从调用者传递空终止字节数组的参数。如果 rpg 解决方案看起来像'MYFILE/MYLIB' + X'00'

于 2018-02-15T06:39:23.570 回答