WRKACTJOB
這個使用的頻率應該是最高的吧,在這裡只提一個比較有用的用法:Coding的時候斷線異常退出時,再登錄之後,用2進入剛才編輯的程式,不是會報錯“正在被使用”嘛。除了等一會,一直等到它自動退出之外,還可以用WRKACTJOB + 10,來查找剛才自己的那個進程(顯示出來的命令應該是STRSEU),然後把它KILL掉就行了。
DSPFD
DSPFD + PF名,查看檔的資訊,包括檔的MEMBER數,總記錄數,被刪除的記錄數,CCSID等等。
DSPFD + LF名,查看邏輯檔的鍵值,結合DSPDBR,可以找出一個PF檔對應的所有LF檔的鍵值。
DSPFD + 庫名 + *MBRLIST,可以看到該庫之下所有的檔案名。
這個命令可以使用*OUTFILE,將輸出變成一個檔。靈活運用,將會是很多自行編寫的工具的基礎之一。
DSPFFD
注意,和上面的命令相差一個“F”,表示查看PF檔的欄位資訊。比如該PF檔共有多少個欄位,每個欄位的類型如何。
與DSPFD相似,DSPFFD也可以使用*OUTFILE,將輸出變成一個檔。同理,靈活運用,也是眾多自行編寫工具的基礎。
MRGSRC
比較兩個程式的差異。按照A、B、A的順序,MRGSRC時,A程式在上面,B程式在下面,白色的地方,即表示兩個程式的差異。
F13表示接受當前差異,F17表示接受所有差異,F16表示繼續查找下一處差異。
在接受差異時,表示按照B程式,更改A程式。(即B程式不變)
把SPLF變成MEMBER(原始檔案)
必須知道SPLF名,以及生成SPLF的JOB、USR、NUMBER名
CRTSRCPF FILE(庫名/SRCPF) RCDLEN(212) IGCDTA(*YES)
CHGPF FILE(庫名/SRCPF) CCSID(935)
CRTPF FILE(庫名/PF) RCDLEN(200) IGCDTA(*YES)
CPYSPLF FILE(SPLF名) TOFILE(庫名/PF) +
JOB(NUMBER名 / USER名 / JOB名) SPLNBR(*LAST)
CPYF FROMFILE(庫名/PF) TOFILE(庫名/SRCPF) +
TOMBR(MBR0001) MBROPT(*ADD) FMTOPT(*CVTSRC)
最後,SRCPF下的MBR001就是SPLF轉成的MEMBER
當然,做為中間轉換的暫存檔案,PF檔會保留SPLF的資訊。
把MSGF變成SPLF
CHGSYSLIBL LIB(QSYS2989)
DSPMSGD RANGE(*FIRST *LAST) MSGF(MSGF所在庫名/MSGF名) +
DETAIL(*BASIC) OUTPUT(*PRINT)
CHGSYSLIBL LIB(QSYS2989) OPTION(*REMOVE)
這個命令,再結合上面的“把SPLF變成MEMBER”,就可以把MSGF搞成MEMBER,然後再FTP到WINDOWS上,就可以很方便地查找已定義的MSG資訊了。
不過必須要有許可權執行CHGSYSLIBL這個命令。
DSPOBJD
根據程式名,查找編譯時原始程式碼所在的庫名、SRCFILE名。
DETAIL參數用“*SERVICE”,OBJTYPE選項用“*PGM”
不過好象RPGLE的程式用這個命令查不出來,要用DSPPGM命令。
DSPPGM
根據目標
DSPPGM + RPGLE程式名,參數用“*MODULE”,然後再選擇5,就可以看到編譯時RPGLE程式時,原始程式碼所在的庫名,SRCFILE名。
DSPDBR
根據物理檔查其對應的所有邏輯檔
DSPPGMREF
查找程式與PF、LF的關係。
PGM參數用“*ALL”,OUTPUT參數用“*OUTFILE”,OBJTYPE參數用“*ALL”,然後執行,再輸入輸出檔案名與所在庫就可以了。然之後,就可以SQL在這個生成的檔中查找(生成的過程可能會有點慢,要耐心)。
在生成的檔中,欄位WHRFNM,表示記錄格式名。舉例來說,如果物理檔更改過,那麼物理檔與邏輯檔就都重新編譯過了,所以它們對應的的所有的程式都要重新編譯,通常物理檔與邏輯檔使用相同的記錄格式名(當然,如果不同就算了)這時就需要按記錄格式名來查找。比如SELECT * FROM 剛生成的檔 WHERE WHRFNM = “記錄格式名”,找出所有涉及到這個記錄格式名的程式。
在生成的檔中,欄位WHFNAM,表示檔案名,包括物理檔與邏輯檔。比如說當我們只修改了某個邏輯檔時,那麼當然是只需要重新編譯與該邏輯檔有關的程式,也就是說只根據檔案名來查找就足夠了。
RTVCLSRC
如果編譯CL程式時,不是刻意帶*NONE參數,那麼一般來說CL程式都可以使用這個命令來反編譯。具體用途試試便知
RGZPFM
重整檔,即回收已刪除記錄的空間。不過這個命令我沒實際用過。
WRKMSGQ QSYSOPR
顯示錯誤資訊
CHGCMGDFT
更改某些命令的默認參數,如更改CRTPF的WAITRCD參數:
CHGCMDDFT CMD(QSYS/CRTPF) NEWDFT(‘WAITRCD(*IMMED)’)