星期二, 10月 31, 2023

2001-08-23 如何於執行同一支 RPG 報表程式時,能動態的更改報表名稱?


如何於執行同一支 RPG 報表程式時,能動態的更改報表名稱?


	

    在此所指的報表名稱,不是印在報表上的報表名稱,而是存在於系統中以供
辨別的報表名稱(Spooled File),即是執行 WRKSPLF (Work with Spooled Files)
指令畫面中的 File 欄位,系統的預設值是 *FILE,即是您程式中所開啟的報表
檔名(Printer File),若您的程式均是使用 QSYSPRT 為報表檔案,則系統中所產生的
報表檔案均為 QSYSPRT,您可使用如下方式將之區分開來:

WRKSPLF 指令畫面如下:
                          Work with All Spooled Files                          
                                                                               
 Type options, press Enter.                                                    
   1=Send   2=Change   3=Hold   4=Delete   5=Display   6=Release   7=Messages  
   8=Attributes        9=Work with printing status                             
                                                                               
                                                                               
                              Device or                     Total     Cur      
 Opt  File        User        Queue       User Data   Sts   Pages    Page  Copy
      QSYSPRT     CHANCY      QPRINT                  RDY       1             1
      QSYSPRT     CHANCY      QPRINT      統計表      RDY      11             1
      QSYSPRT     CHANCY      QPRINT      統計表      RDY      18             1
      QSYSPRT     CHANCY      QPRINT                  RDY      24             1
      QSYSPRT     CHANCY      QPRINT                  RDY       9             1
      QSYSPRT     CHANCY      QPRINT                  RDY       3             1
      QSYSPRT     CHANCY      QPRINT                  RDY       1             1
      TAIPEI      CHANCY      QPRINT      統計表      RDY       2             1
      QSYSPRT     CHANCY      QPRINT                  RDY       1             1
                                                                        More...
 Parameters for options 1, 2, 3 or command                                     
 ===>                                                                          
 F3=Exit   F10=View 4   F11=View 2   F12=Cancel   F22=Printers   F24=More keys 


在開啟報表檔案之前執行下列指令:

OVRPRTF FILE(QSYSPRT) USRDTA(統計表)
--> 報表檔案名稱 QSYSPRT , 但可透過 User Data 欄位值辨別您的報表。

OVRPRTF FILE(QSYSPRT) SPLFNAME(TAIPEI) USRDTA(統計表) 
--> 報表檔案名稱 X123456 , 可透過 File 及 User Data 欄位值辨別您的報表。

透過以上指令的執行,讓使用者能更快速的找到他們自己的報表。

OVRPRTF 指令可以在 CLP 及 RPG 中使用,

如 CLP:
PGM
OVRPRTF FILE(QSYSPRT) SPLFNAME(TAIPEI) USRDTA(統計表)
CALL STATRPTR
DLTOVR FILE(*PRTF)
ENDPGM

如 RPG:

FQSYSPRT O   F     132            PRINTER                        UC
 *
INAMCMD      DS                             60
I                                       50  59 NAME
I              'OVRPRTF             -C         OVRCMD
I              'FILE(QSYSPRT)       -
I              'SPLFNAME(          )'
 *
C                     MOVELOVRCMD    NAMCMD
 *
 * Assign first name ********************************************
 *
C                     MOVEL'RPT01'   NAME
 * OVRPRTF FILE(QSYSPRT) SPLFNAME(&NAME)
C                     Z-ADD60        CMDLEN 155
C                     CALL 'QCMDEXC'
C                     PARM           NAMCMD
C                     PARM           CMDLEN
C                     OPEN QSYSPRT
C                     EXCPTEX40
C                     CLOSEQSYSPRT
 *
 * Assign second name ********************************************
 *
C                     MOVEL'RPT02'   NAME
C                     Z-ADD60        CMDLEN 155
C                     CALL 'QCMDEXC'
C                     PARM           NAMCMD
C                     PARM           CMDLEN
C                     OPEN QSYSPRT
C                     EXCPTEX40
C                     CLOSEQSYSPRT
C                     SETON                     LR
 *
OQSYSPRT E  203           EX40
O                                   50 'HEADER POSITION'
O        E  1             EX40
O                         NAME      50
O        E  1             EX40
O                                   50 'END OF LIST'
            


沒有留言: