我试图将物理文件放在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资源管理器清楚地显示了MYLIB
的内容,并且此lib中有一个MYFILE
。
UPD
我添加了一些调试日志记录,仅用于取消错误描述或错误代码:
numbytes = sprintf( (char *)NULL, "%s", strerror(errno) );
ret = (char *)malloc( ( numbytes + 1 ) * sizeof( char ) );
sprintf( ret, "%s", strerror(errno) );
ret
的结果是SPP:*NULL
。
要尝试的任何想法吗?
答案 0 :(得分:1)
事实证明它非常简单 - 缺少空字节,因此_Ropen
无法真正访问文件,因此也不会传递错误。
要处理这个问题,需要从调用者传递以null结尾的字节数组的参数。
如果rpg解决方案看起来像'MYFILE/MYLIB' + X'00'