Ilerpg Study 003

15
第3第 ILE - 第第第 RPG Chubu…System…Corporation 1

Transcript of Ilerpg Study 003

Page 1: Ilerpg Study 003

第 3 回 ILE - RPGを学ぶChubu…System…Corporation

1

Page 2: Ilerpg Study 003

Agenda■ 今回

• 宿題

• D仕様書 -EXTNAME ~

• D仕様書 & P仕様書 - プロシージャ

• C仕様書を少し

■ 次回以降

• C仕様書つづき

• BIF( Build In Function )

• サービスプログラム作成

• ソースのコンパイル、デバッグ等

CChubu…hubu…SSystem…ystem…CCorporationorporation

2

Page 3: Ilerpg Study 003

D 仕様書( EXTNAME ~)• 覚えておきたいキーワード前回の続き

– EXTNAME =外部データ構造体(実PFのDDS)のインクルード

– EXTFLD =サブフィールドのリネイム

– 擬似的な多次元配列

CChubu…hubu…SSystem…ystem…CCorporationorporation

3

Page 4: Ilerpg Study 003

D 仕様書( EXTNAME )

CChubu…hubu…SSystem…ystem…CCorporationorporation

4

■  D仕様書記述例

■  C仕様書記述例

*OUTPUT = WRITE に使える

Page 5: Ilerpg Study 003

D 仕様書( EXTFLD )

CChubu…hubu…SSystem…ystem…CCorporationorporation

5

■  D仕様書記述例

■  C仕様書記述例

フィールド別名定義が必要

■   I 仕様書記述例

*INPUT=READ,UPDATE に使える

Page 6: Ilerpg Study 003

D 仕様書(擬似的多次元配列 )

CChubu…hubu…SSystem…ystem…CCorporationorporation

6

■  D仕様書記述例

■  C仕様書記述例

LIKEDS で入れ子構造にする

SPACE41 の要素が一括で 44 になる。

■ Q.質問更に上位の HIGHT41=44 としたら、どういう結果になるでしょう?

・この応用で木構造も定義出来る

Page 7: Ilerpg Study 003

D &P仕様書プロシージャとは(1)

CChubu…hubu…SSystem…ystem…CCorporationorporation

• プロシージャとは?

– プロシージャとはサブルーチン?じゃあ BEGSR は?。

– メインプロシージャとサブプロシージャがある。

– プロシージャは、プロトタイプの定義が必要(コンパイラーの為だけど… orz )

– プロシージャは、インターフェース(引数)定義が必要。

– サブプロシージャは、簡単に言えば、再利用可能な関数(厳密には違うけど)

– サブプロシージャは、P仕様書で開始と終わりを記述する

– サブプロシージャーを再利用するためには明示的に公開する

( P 仕様書の EXPORT オプション)7

Page 8: Ilerpg Study 003

D &P仕様書プロシージャとは(2)

CChubu…hubu…SSystem…ystem…CCorporationorporation

• メインプロシージャの特徴

– 名前はプログラム名と同じ(じゃあ書かすなよ! (# ゚ Д ゚ ) ゴルァ !! )

– プログラムに1つだけ存在(よけいに書かすなよ! (# ゚ Д ゚ ) ゴルァ !! )

– インターフェースは「 *ENTRY 」の代わりと思って99%間違いない

– インターフェースの引数は、参照渡しのみ(値渡しは不可)

– 戻り値はない

– P仕様書はない

– 故に公開できない。呼び出す場合は OPM の CALL

8

Page 9: Ilerpg Study 003

D &P仕様書プロシージャとは(3)

CChubu…hubu…SSystem…ystem…CCorporationorporation

• サブプロシージャの特徴

– 名前は何でもいい。でも明確なルール付けは重要。

– プログラムに、いくつでも定義出来る。

– 同一アプリで重複するプロシージャ名は、ご法度。明示的参照が出来ない。

 (これって、RPGの痛い弱点だと思う...( T Д T) )

– インターフェースの引数は、値渡しも可能。

– 戻り値の指定が出来る。(独立変数はもちろん、構造体も渡せます。)

– ロジックは、P仕様書の間に記述する。

– EXPORT したら、みんなグローバル関数。(この言語仕様ってどうよ? ( ゚ Д ゚ ) ナニ

カ ? )

– ローカル変数が使える。※ V6R1 からローカルファイルが使える(これは いい (≧∇≦)b )

9

Page 10: Ilerpg Study 003

プロシージャの記述例(1)

CChubu…hubu…SSystem…ystem…CCorporationorporation

10

■  メインプロシージャ記述例

プロトタイプの引数名は有っても、無くても問題ない■  サブプロシージャ記述例

インターフェースの引数はそのままプログラム変数として使う

オプションなしは参照渡し

VALUE は値渡し

PR=プロトタイプPI=インターフェース

サブプロシージャのプロトタイプはメインプログラムのD仕様に記述

Page 11: Ilerpg Study 003

プロシージャの記述例(2)

CChubu…hubu…SSystem…ystem…CCorporationorporation

11

■  サブプロシージャ記述例つづき

ローカルな変数

P仕様書でサブプロシージャ開始

EXPORT は公開

実際の処理

戻り値

P仕様書でサブプロシージャ終了

名前は省略も可能

Page 12: Ilerpg Study 003

プロシージャの記述例(3)

CChubu…hubu…SSystem…ystem…CCorporationorporation

12

■  サブプロシージャの呼び出し例

プロシージャ名(引数 1:引数2:…)

フリーフォーマットじゃない場合は「 CALLP 」が必要

Page 13: Ilerpg Study 003

C仕様書フリーフォーマット記述例(1)

CChubu…hubu…SSystem…ystem…CCorporationorporation

13

■  四則演算

■  文字列

■  条件分岐

Page 14: Ilerpg Study 003

C仕様書フリーフォーマット記述例(2)

CChubu…hubu…SSystem…ystem…CCorporationorporation

14

■  ループ処理

Page 15: Ilerpg Study 003

ご清聴ありがとうございました

CChubu…hubu…SSystem…ystem…CCorporationorporation

15