我正在尝试将物理文件放在IFS上。
因此,试图打开文件只是为了保证其在源上的存在。
这就是我的方式:
errno=0;
if ( ((pf = _Ropen(pfname, "rr, nullcap=Y")) == NULL) || (errno!=0) )
{
printf("nError: Cannot open file %sn",pfname);
//...
}
但是,该文件未使用pf = SPP:*NULL
结果
这不会是问题,但我也无法查看errno
。eval errno
给出了Syntax error occurred.
不知道发生了什么。
我仍然能够查看pfname
的内容:它看起来像'MYLIB/MYFILE'
绝对路径也被尝试: '/QSYS.LIB/MYLIB.LIB/MYFILE.FILE'
,没有任何区别 - 相同的错误持续。
IBM IFS Explorer清楚地显示了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
。
有什么想法可以尝试?
事实证明它非常简单 - null字节丢失,因此_Ropen
无法真正访问该文件,因此也不会传递错误。
要处理这一点,需要从呼叫者传递零终止的字节数组的参数。如果RPG解决方案看起来像'MYFILE/MYLIB' + X'00'