Ошибка открытия физического файла с помощью _Ropen

Я пытаюсь поместить физический файл на 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,

Есть идеи, чтобы попробовать?

0

Решение

Оказалось супер просто — нулевой байт отсутствовал так _Ropen не может действительно получить доступ к файлу, таким образом, нет ошибки, которая также будет передана.

Для обработки этого аргумент байтового массива с нулевым символом в конце должен быть передан от вызывающей стороны.
В случае RPG решение выглядит так 'MYFILE/MYLIB' + X'00'

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]