RPG程式需寫於中(sections),稱之為規格(specificatiions或specs)
除了需有其順序外,且需於第6行以一文字加以識別之
文字 意義
H 標題Header(程式識別)規格
F 檔案File(檔案定義)規格
E 延伸Extension(陣列宣告)規格
I 輸入Input(進一層之資料定義)規格
C 計算Calculation(命令與主程式)規格
O 輸出Output(撰寫報告)規格
第7行中有一星號(*)者,表示為註解列,僅提供一些備忘說明
下列程式說明只提供參考在RPG中每個字所放的位表的意義不同單純只以tab建分別之
ex:
FORDER UF E K DISK A
FORDER CF E WORKSTN
可細分如下:
F 表示檔案規格
ORDER 表示檔案名稱
U 表示更新檔案
C 表示全為程序(Procedural)檔,便於查驗、更新、新增、刪除…等作業
E 表示對RPG所定義的外部檔(DDS)
K 表示索引鍵檔,AS/400可根據指定之鍵值(KEY)定義DDS中的檔案並自動維護此索引檔
DISK 表示存於磁碟中之檔案
A 表示可將記錄加入此檔中
PS:F之後緊跟著是檔案名稱,而且需指定下列之檔案用途:
I:輸入
O:輸出
IP:主要的輸入
UF:更新所有程序(連結或查詢)
CF:合併全部程序(螢幕用)
延伸規格(extension specs)是指第6行中有一文字E,且便於定義執行時間(run-time)的陣列(Arrays)
ex:
E NAME 25 1
上述表示變數名稱NAME的每一元素中,定義一個位元組的25個元素陣列
輸入規格(input specs)類似於延伸規格,乃便於RPG程式定義進一層的內部資料。重定義或資料結構可利用輸入規格來完成之,此外,較小型的程式不需有輸入規格,但必須重定義A、B及C變數當作USRSCR輸入螢幕的X陣列之元素,如下所示:
IUSRSCR
I A X,1
I B X,2
I C X,3
下面編碼是設定資料結構之用,可細分TIME變數成HSR及MNS,而HRS是TIME的第1及第2個位置,MNS是第3及第4個位置
I DS
I 1 4 TIME
I 1 2 HRS
I 3 4 MNS
計算規格(calculation specs)乃是RPG程式的核心,它是指定檔案及資料處理、重複命令、及完成邏輯流程的一種程序
如欲將CODE變數設定成空白,其方式如下:
C MOVE * BLANK CODE
輸出規格(output specs)是RPG程式的最後一種型態,可用來指定輸出檔或印表機輸出列之格式
RPG呼叫的命令為OP碼,而OP碼的一般語法如下:
C A ADD 1 B
計算規格的主要構成要素為Factor1,它與OP碼之動作Factor2之關係非常密切且為放置結果之地方
如上例中,Factor1(A)是OP碼(ADD)加Factor2(1),然後將結果置於(B)中。
換句話說, B = A + 1
Z-ADD 設定為0值並加一數字到數字變數中,例如:
C Z-ADD0 QTY
MOVE 搬移一變數到另一變數中(例如變數太長,會截斷左邊字元),例如:
C MOVE 'HELLO' GREET
MOVEL 搬移一字串到字元變數中(假如字串太長,會截斷右邊字元),例如:
C MOVEL 'HELLO' GREET
MOVEA 搬移一字串到陣列中,例如:
C MOVEA 'HELLO' GREET
變數可籍由定義之參數來設定初值--長度與小數點位置--給前述的OP碼。例如,QTY變數之初設定值可定義成如下:
C Z-ADD0 QTY 20
設定QTY變數為2個數字但沒有小數點且初設定值為0(Z-ADD0)
定義一個字元變數(character variable),僅需定義其長度即可,不需有小數點,如下所示:
C MOVE 'HELLO' GREET 5
- May 17 Thu 2007 15:05
學習心得-7
全站熱搜
留言列表
發表留言