ILE-RPG でサービス・プログラム( *SRVPGM
) を開発していると、
サービス・プログラム( *SRVPGM )の中で定義されている変数を上位のプログラムからでも
参照することができないものかと感じたことはないだろうか ?
Windows の世界で言えばプロシージャーはメソッドであり、変数はプロパティである。
Windows ではプロシージャーだけでなくメソッドも公開( EXPORT
) できるのであるから
ILE でもできておかしくはない。当然できる。
下位のサービス・プログラム( *SRVPGM )の中で上位のプログラムに公開( EXPORT ) したい
変数があればグローバル変数として、
**************************************************** * 公開プロパティの定義 * **************************************************** D COMBO_ITMSU S 4S 0 INZ(0) EXPORT
のようにして定義しておいてから、QSRVSRC
定義に
EXPORT SYMBOL("COMBO_ITMSU")
としてシンボルを定義すればよい。
CRTRPGMOD + SRTSRVPGM
でコンパイルとビルドを行ってから
DSPSRVPGM
で眺めてみると
データのエクスポート : COMBO_ITMSU
とプロパティとしての公開変数が定義されていることがわかるはずだ。
次に上位のこれを利用するプログラムではグローバル定義として
D*( COMBO のプロパティ ) D COMBO_ITMSU S 4S 0 IMPORT
のようにして IMPORT
キーワードを定義するだけでよい。
公開プロパティの利用は簡単でスマートであるので是非お試し頂きたい