Как получить имя файла IFS из программы RPGLE?
В программе CL я перезаписываю свой файл печати в папку на IFS; однако я не указываю имя файла, просто это будет файл PDF. Таким образом, когда PDF создается, система присваивает ему уникальное имя файла.
В программе RPGLE я использую пользовательский элемент управления, чтобы открыть и закрыть файл; однако мне нужно уникальное имя файла, созданное на IFS.
Я думал, используя INFDS, я мог бы получить эту информацию, но я не вижу, где я могу получить эту информацию.
Если я пишу не в той области или не должен быть на этой доске, пожалуйста, дайте мне знать.
Том
Программа CL -
PGM
OVRPRTF FILE(*PRTF) DEVTYPE(*AFPDS) PAGESIZE(11 8.5 +
*UOM) FRONTMGN(0 .25) PAGRTT(0) +
PRTTXT(*BLANK) UOM(*INCH) +
TOSTMF('/TN/') WSCST(*PDF)
CALL PGM(IF010R)
DLTOVR FILE(*PRTF)
ENDPGM
Программа RPGLE -
fqsysprt o f 132 printer oflind(*inof) usropn
*
c z-add 1 x 1 0
c x dowle 5
*
c open qsysprt
c except prtdtl
c close qsysprt
*
c add 1 x
c enddo
*
c move *on *inlr
*
**********************************************************************
*
oqsysprt e prtdtl 1 10
o 10 'Test:'
o x j 15
2 ответа
Думаю, вам нужно использовать API получения ссылочных объектов (QP0LRRO)
Чтобы получить объекты IFS, открытые в данный момент заданием, как описано в этой статье: Показать информацию об использовании файла
Имя файла IFS недоступно в INFDS для файла, но оно доступно в отформатированном дампе. Если вы не хотите использовать API, о котором говорил Чарльз, вы можете сделать код операции DUMP(A), а затем прочитать листинг QPPGMDMP, чтобы сначала найти раздел о вашем файле, а затем найти строку "Буферный файл" в этом раздел.
...
ILE RPG FORMATTED DUMP
INFDS FILE FEEDBACK
File . . . . . . . . . . . : QPRINT
File Open . . . . . . . . : YES
File at EOF . . . . . . . : NO
...
OPEN FEEDBACK
ODP type . . . . . . . . . : ST
File Name . . . . . . . . : QPRINT
Library . . . . . . . . : QGPL
Member . . . . . . . . . . :
'00000000000000000000'X
Spool File . . . . . . . . : /home/mydir/QPRINTrQpJ$7.pdf