Как получить имя файла 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
Другие вопросы по тегам