如何让报表管理自动化

上传人:wt****50 文档编号:44634441 上传时间:2018-06-14 格式:PDF 页数:29 大小:143.55KB
返回 下载 相关 举报
如何让报表管理自动化_第1页
第1页 / 共29页
如何让报表管理自动化_第2页
第2页 / 共29页
如何让报表管理自动化_第3页
第3页 / 共29页
如何让报表管理自动化_第4页
第4页 / 共29页
如何让报表管理自动化_第5页
第5页 / 共29页
点击查看更多>>
资源描述

《如何让报表管理自动化》由会员分享,可在线阅读,更多相关《如何让报表管理自动化(29页珍藏版)》请在金锄头文库上搜索。

1、如何讓報表管理自動化?如何讓報表管理自動化? 報表管理通常是一般系統管理的工作,AS/400(iSeries) 系統已包含以使用者及使 用者自己的報表連結相關的印表機及輸出佇列(Outq - Output Queue)的報表管 理技術,通常管理人員會允許使用者使用指令 WRKSPLF(Work with Spool Files) 及 WRKOUTQ(Work with Output Queues) 截取報表資料,這些指令讓使用者管理他們自己的報表,及若某使用者同時擁有 *SPLCTL 特殊權限時,該使用者 同時可以管理其他人的報表,然而使用這些指令仍然無法讓報表管理自動化。使 用者仍然需要從一

2、個輸出佇列搬移報表至另一個輸出佇列或從一台印表機搬移 報表至另一台印表機。 於 OS/400 V5R4 以後,系統開始支援報表備份,系統是將所指定的 Outq 中所 有的報表備份至磁帶中,有需要時,再回復至系統中。 為什麼有人想要讓報表管理自動化?因為當報表很多時,如週報月報季報年報累 計一段時間後,就會有報表儲存的需求,因為報表本身於 AS/400(iSeries)系統上 並不是一個物件,於 OS V5R3 以前無法利用 SAVE 指令儲存,所以需要採用 某些技巧才將報表儲存起來,當然報表可以利用複製報表至資料庫檔案儲存在 AS/400(iSeries)或下載至 PC 上,但報表非常多時便無

3、法一一用手動的方式來完 成,所以可以利用其他廠商所開發的報表管理軟體,所以仍需要額外的成本才能 完成報表管理自動化的工作,基於成本考量,我將教您如何達成報表管理自動化 的方式。其步驟如下: :取得哪些報表放置於輸出佇列中的詳細資料,即報表管理自動化的先決條件 是以輸出佇列(Outq)為管理單位。 :使用指令 CPYSPLF 複製報表資料至資料庫檔案(PF - Physical file)。 : 若僅需儲存報表於 AS/400(iSeries)上,則定期備份步驟所產生的資料庫檔案(需要自行定義資料庫檔案名稱及其 member 成員名稱,方便於備份 及回複管理) 。 若僅需儲存報表於 PC 上,則

4、有三種方式: 一: 使用指令 CPYTOSTMF 複製步驟所產生的資料庫檔案至 IFS 的一般 PC 檔案即可使用 SAV/RST 指令備份/回複 二: 使用 FTP 方式將步驟所產生的資料庫檔案傳送到 PC 的 FTP 伺服器 三: 於 AS/400(iSeries) 及 PC 端撰寫 Socket 程式,傳送步驟所產 生的資料庫檔案至 PC。 在這裡我僅以方式一來做例子。 要如何將上述三個步驟組合自動處理而不用人工介入輸入指令呢? 這起始點是如何取得放置於輸出佇列中報表的詳細資料,您可以藉由系統所提供 用以連結輸出佇列(Outq)的資料佇列(DTAQ - Data Queue)來取得放置於

5、輸出佇 列(Outq)中報表的詳細資料,來完成第一個步驟,所以第一步是藉由下述指令新 增一個資料佇列(DTAQ - Data Queue)於一個專屬的程式庫(Library)中,為了管 理方便定義資料佇列名稱與輸出佇列相同。例如輸出佇列(Outq)為 DAILYOUTQ, CRTDTAQ DTAQ(lib/DAILYOUTQ) MAXLEN(128) 然後新增一個輸出佇列(Outq),同時指定 DTAQ(Data Queue) 參數連結上述指令 所新增的資料佇列(DTAQ -Data Queue),指令如下, 若是新增 Outq 使用指令 CRTOUTQ OUTQ(lib/DAILYOUTQ)

6、 DTAQ(lib/DAILYOUTQ) 或 更改既有 Outq 使用指令 CHGOUTQ OUTQ(lib/DAILYOUTQ) DTAQ(lib/DAILYOUTQ) 當要取消連結指定 DTAQ(Data Queue)時,使用指令 CHGOUTQ OUTQ(lib/DAILYOUTQ) DTAQ(*NONE) 在上述例子中 “lib“ 是您所希望放置輸出佇列 Outq(Output Queue)及 資料佇列 DTAQ(Data Queue) 物件的程 式庫(附註:Outq 及 Dtaq 可以放置於不同的程式庫) 。 上述指令在輸出佇列 DAILYOUTQ 及資料佇列 DAILYOUTQ 間

7、建立了一個連 結關係,所以當有報表放置於輸出佇列 DAILYOUTQ 時,同時會有一筆該報表的相關資料放置於資料佇列 DAILYOUTQ 中。 放置於資料佇列 AUTOSPLDTAQ 中資訊的長度有 128 位,包含如下資訊: 報表資訊放置於資料佇列 DTAQ(Data Queue)的資料格式 起始位置 長度 說明 1 CHAR(10) Function “*SPOOL“ 表此筆記錄是報表相關資訊 11 CHAR(02) Record type “01“ 表示已放置至輸出佇列的報表狀 態為 Ready 13 CHAR(26) Qualified job name 產生此報表的 Job 全名 C

8、HAR(10) Job name CHAR(10) User name CHAR(6) Job number 39 CHAR(10) Spool file name 表示已放置至輸出佇列報表的報 表名稱 49 BINARY(4) Spool file number 表示已放置至輸出佇列報表的報 表序號 53 CHAR(20) Qualified output queue name 表示此報表所放置的輸 出佇列名稱全名 CHAR(10) Output queue name CHAR(10) Library of the output queue 73 CHAR(56) 56 bytes of f

9、iller 此 56 位保留不用 上述資訊可能用於指令 CPYSPLF 及 CPYTOSTMF。 要記住當有有一份新的報表放置於輸出佇列 Outq(Output Queue)中時,而且該報表的狀態是 Ready(RDY),此時即有一筆報表紀錄放置於資料佇列 DTAQ(Data Queue)中,所以我們需要一個批次工作用以監控是否有新的報表資訊放置於資料 佇列 DTAQ(Data Queue) 中。 下列是用於處理這個程序的 CLP 程式片斷,底下是依照報表資訊放置於資料佇 列 DTAQ(Data Queue)的資料格式用於接收資料佇列 DTAQ(Data Queue)資料的 資料結構: Chg

10、Var &Action ( %Sst( &Data 1 10 ) ) ChgVar &Job ( %Sst( &Data 13 10 ) ) ChgVar &User ( %Sst( &Data 23 10 ) ) ChgVar &JobNbr ( %Sst( &Data 33 6 ) ) ChgVar &SplFName ( %Sst( &Data 39 10 ) ) ChgVar &SplFNbr ( %Bin( &Data 49 4 ) ) ChgVar &OutQName ( %Sst( &Data 53 10 ) ) ChgVar &OutQLib ( %Sst( &Data 63

11、10 ) ) 這個資料結構包含從資料佇列 DTAQ(Data Queue) 所取得的資訊,job name,job user,job number,file name 及 file number 是重要的資訊,並提供給指令 CPYSPLF 使用。 下列是接收資料佇列 DTAQ(Data Queue) 報表資訊所使用的 CLP 運算: Call QRcvDtaQ + ( + &OutQName + &DtaQLib + &DataLen + &Data + &Wait + ) 欄位 Wait 值為 -1,表示接收資料佇列 DTAQ(Data Queue) 報表資訊時,若資 料佇列 DTAQ(Da

12、ta Queue)沒有報表資訊紀錄時,即一直等待至有資訊時才讀 取,等待時並不會耗用系統資源。如果程式還要執行除了處理資料佇列 DTAQ(Data Queue) 之外的其他工作時,Wait 值也可以設定一個以秒為單位的值,以符合您的需求。 接著要進行第二個步驟,也就是寫一支處理報表的程式,要使用指令 CPYSPLF 複製報表資料至資料庫檔案。 這個工作類似大部分系統管理人員所要做的,有時候系統管理人員需要拷貝報表 資料給公司內部人員或廠商使用,或將儲存報表資料並拷貝至磁帶後,再將報表 及儲存報表的資料庫檔案刪除,才能釋放系統儲存空間,有需要使用時再回複(restore)回系統。在這裡我想將報表

13、分享給 PC 使用者,所以我將儲存報表的資 料庫檔案拷貝至 IFS 的一個目錄,並將該目錄分享出來,如同一般 PC 的網路 磁碟機,PC 使用者可以透過網路磁碟機,直接讀取報表。您可以使用 Client Access Operation Navigator 將在 IFS 下放置報表的目錄分享出來。 複製報表資料至資料庫檔案包含二個步驟,首先,新增一個資料庫檔案用以存放報表資料,接著,複製報表資料至資料庫檔案。我新增一個資料庫檔案於程式館 QTEMP 中,並將報表複製至 QTEMP/SPLF 中: ChkObj OBJ(Qtemp/Splf) ObjType(*File) Monmsg CPF9

14、801 Exec(Do) CrtPf File(Qtemp/Splf) RcdLen(240) IgcDta(*Yes) + Size(*NOMAX) EndDo ClrPfm File(Qtemp/Splf) CpySplf File(&SplfName) + ToFile(Qtemp/Splf) + Job(&JobNbr/&User/&Job) + SplNbr(&SplfNbr) 在步驟一及步驟二已完成了擷取報表相關資訊及複製報表資料至資料庫檔案,接著步驟三要拷貝含有報表資料的資料庫檔案至 IFS 分享目錄的 stream file,所 謂的 stream file 是一個以位元(Byte)為單位的檔案,他是一個連續性的檔案,而 不是 AS/400(iSeries) 資料庫以欄位為基礎的紀錄格式(record format)檔案, stream file 並沒有欄位,而是像 PC 的純文字格式的檔案,所以是由程式來決定它的結構,stream file 使用於非資料庫結構的資料,如影像檔,聲音檔,最重要 的是文件檔。 使用

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号