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

狼翔月影 發表在 痞客邦 PIXNET 留言(0) 人氣()