RPG

150. ILE-RPG で 変数を EXPORT して、それを使うには ?

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 キーワードを定義するだけでよい。
公開プロパティの利用は簡単でスマートであるので是非お試し頂きたい