Я пытаюсь поместить физический файл на 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) );
И результат ret
является SPP:*NULL
,
Есть идеи, чтобы попробовать?
Оказалось супер просто — нулевой байт отсутствовал так _Ropen
не может действительно получить доступ к файлу, таким образом, нет ошибки, которая также будет передана.
Для обработки этого аргумент байтового массива с нулевым символом в конце должен быть передан от вызывающей стороны.
В случае RPG решение выглядит так 'MYFILE/MYLIB' + X'00'
Других решений пока нет …