Как получить имя файла IFS из программы RPGLE?

В программе CL я перезаписываю свой файл печати в папку на IFS; однако я не указываю имя файла, просто это будет файл PDF. Таким образом, при создании PDF-файла система присвоит ему уникальное имя файла.

В программе RPGLE я использую пользовательский контроль для открытия и закрытия файла; однако мне нужно уникальное имя файла, созданное на IFS.

Я думал, что с помощью INFDS я мог бы получить эту информацию, но я не вижу, где я могу получить эту информацию.

Если я пишу не в том разделе или меня не должно быть на этой доске, пожалуйста, дайте мне знать.

Том

КЛ программа –

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

РПГЛ программа –

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                                 

person Tom    schedule 28.10.2015    source источник


Ответы (2)


Думаю, вам нужно будет использовать API Retrieve Referenced Objects (QP0LRRO)

Чтобы получить объекты IFS, открытые в данный момент заданием, как описано в этой статье: Отображать информацию об использовании файла

person Charles    schedule 28.10.2015

Имя файла IFS недоступно в INFDS для файла, но оно доступно в отформатированном дампе. Если вы не хотите использовать API, о котором упомянул Чарльз, вы можете выполнить код операции DUMP(A), а затем прочитать список QPPGMDMP, чтобы сначала найти раздел о вашем файле, а затем найти строку «Spool File» в этом раздел.

 ...
 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
person Barbara Morris    schedule 29.10.2015