Ilerpg Study 003
-
Upload
yoshiki-ushida -
Category
Technology
-
view
1.574 -
download
1
Transcript of Ilerpg Study 003
第 3 回 ILE - RPGを学ぶChubu…System…Corporation
1
Agenda■ 今回
• 宿題
• D仕様書 -EXTNAME ~
• D仕様書 & P仕様書 - プロシージャ
• C仕様書を少し
■ 次回以降
• C仕様書つづき
• BIF( Build In Function )
• サービスプログラム作成
• ソースのコンパイル、デバッグ等
CChubu…hubu…SSystem…ystem…CCorporationorporation
2
D 仕様書( EXTNAME ~)• 覚えておきたいキーワード前回の続き
– EXTNAME =外部データ構造体(実PFのDDS)のインクルード
– EXTFLD =サブフィールドのリネイム
– 擬似的な多次元配列
CChubu…hubu…SSystem…ystem…CCorporationorporation
3
D 仕様書( EXTNAME )
CChubu…hubu…SSystem…ystem…CCorporationorporation
4
■ D仕様書記述例
■ C仕様書記述例
*OUTPUT = WRITE に使える
D 仕様書( EXTFLD )
CChubu…hubu…SSystem…ystem…CCorporationorporation
5
■ D仕様書記述例
■ C仕様書記述例
フィールド別名定義が必要
■ I 仕様書記述例
*INPUT=READ,UPDATE に使える
D 仕様書(擬似的多次元配列 )
CChubu…hubu…SSystem…ystem…CCorporationorporation
6
■ D仕様書記述例
■ C仕様書記述例
LIKEDS で入れ子構造にする
SPACE41 の要素が一括で 44 になる。
■ Q.質問更に上位の HIGHT41=44 としたら、どういう結果になるでしょう?
・この応用で木構造も定義出来る
D &P仕様書プロシージャとは(1)
CChubu…hubu…SSystem…ystem…CCorporationorporation
• プロシージャとは?
– プロシージャとはサブルーチン?じゃあ BEGSR は?。
– メインプロシージャとサブプロシージャがある。
– プロシージャは、プロトタイプの定義が必要(コンパイラーの為だけど… orz )
– プロシージャは、インターフェース(引数)定義が必要。
– サブプロシージャは、簡単に言えば、再利用可能な関数(厳密には違うけど)
– サブプロシージャは、P仕様書で開始と終わりを記述する
– サブプロシージャーを再利用するためには明示的に公開する
( P 仕様書の EXPORT オプション)7
D &P仕様書プロシージャとは(2)
CChubu…hubu…SSystem…ystem…CCorporationorporation
• メインプロシージャの特徴
– 名前はプログラム名と同じ(じゃあ書かすなよ! (# ゚ Д ゚ ) ゴルァ !! )
– プログラムに1つだけ存在(よけいに書かすなよ! (# ゚ Д ゚ ) ゴルァ !! )
– インターフェースは「 *ENTRY 」の代わりと思って99%間違いない
– インターフェースの引数は、参照渡しのみ(値渡しは不可)
– 戻り値はない
– P仕様書はない
– 故に公開できない。呼び出す場合は OPM の CALL
8
D &P仕様書プロシージャとは(3)
CChubu…hubu…SSystem…ystem…CCorporationorporation
• サブプロシージャの特徴
– 名前は何でもいい。でも明確なルール付けは重要。
– プログラムに、いくつでも定義出来る。
– 同一アプリで重複するプロシージャ名は、ご法度。明示的参照が出来ない。
(これって、RPGの痛い弱点だと思う...( T Д T) )
– インターフェースの引数は、値渡しも可能。
– 戻り値の指定が出来る。(独立変数はもちろん、構造体も渡せます。)
– ロジックは、P仕様書の間に記述する。
– EXPORT したら、みんなグローバル関数。(この言語仕様ってどうよ? ( ゚ Д ゚ ) ナニ
カ ? )
– ローカル変数が使える。※ V6R1 からローカルファイルが使える(これは いい (≧∇≦)b )
9
プロシージャの記述例(1)
CChubu…hubu…SSystem…ystem…CCorporationorporation
10
■ メインプロシージャ記述例
プロトタイプの引数名は有っても、無くても問題ない■ サブプロシージャ記述例
インターフェースの引数はそのままプログラム変数として使う
オプションなしは参照渡し
VALUE は値渡し
PR=プロトタイプPI=インターフェース
サブプロシージャのプロトタイプはメインプログラムのD仕様に記述
プロシージャの記述例(2)
CChubu…hubu…SSystem…ystem…CCorporationorporation
11
■ サブプロシージャ記述例つづき
ローカルな変数
P仕様書でサブプロシージャ開始
EXPORT は公開
実際の処理
戻り値
P仕様書でサブプロシージャ終了
名前は省略も可能
プロシージャの記述例(3)
CChubu…hubu…SSystem…ystem…CCorporationorporation
12
■ サブプロシージャの呼び出し例
プロシージャ名(引数 1:引数2:…)
フリーフォーマットじゃない場合は「 CALLP 」が必要
C仕様書フリーフォーマット記述例(1)
CChubu…hubu…SSystem…ystem…CCorporationorporation
13
■ 四則演算
■ 文字列
■ 条件分岐
C仕様書フリーフォーマット記述例(2)
CChubu…hubu…SSystem…ystem…CCorporationorporation
14
■ ループ処理
ご清聴ありがとうございました
CChubu…hubu…SSystem…ystem…CCorporationorporation
15