Мне удалось решить эту ситуацию примерно год назад. Ответ Скотта на использование C apis из RPG - хороший ответ. Однако, если в вашей системе есть TAATOOLS, она имеет команду CVTIFS
, которая делает это еще проще (http://www.taatool.com/document/L_cvtifs.html). Это довольно распространенный сторонний инструмент, так что, надеюсь, он станет доступным. Тогда ваше решение станет чем-то вроде следующее:
// CVTIFS OBJ(MyDirectory) OUTLIB(QTEMP) PROCSUBDIR(*NO) <-- Call this however you prefer
Exec Sql Declare FileNames Cursor For
Select IfDirE From QTemp.IfsDirP
Where IfoTyp = '*STMF' And IfPDir = :MyDirectory;
Exec Sql Open FileNames;
Exec Sql Fetch FilesNames Into :FileName;
DoW SqlState = '00000';
// Run your SQL XMLTable command here using FileName
Exec Sql Fetch FilesNames Into :FileName;
EndDo;
Exec Sql Close FileNames;
Дополнительное примечание: Вы также можете объединить все это в один большой оператор SQL и избежать курсора, но это, вероятно, легче понять как ответ.