RPG

481. CONSTの使い方

プロシージャーのパラメータ定義で CONST という定義をする必要がある場合がある。
一体、CONSTとはどのような意味を持つのだろうか?
_

[例] QMHSNDPM のプロトタイプの定義

0053.00  *( QMHSNDPM : プログラム・メッセージの送信 )                 
0054.00 D QMHSNDPM        PR                  ExtPgm('QMHSNDPM')      
0055.00 D  MSGID                         7A   CONST                   
0056.00 D  MSGFILE                      20A   CONST                   
0057.00 D  MSGDATA                    6000A   CONST OPTIONS(*VARSIZE) 
0058.00 D  MSGDATALEN                   10I 0 CONST                   
0059.00 D  MSGTYPE                      10A   CONST                   
0060.00 D  CALLSTACKE                   10A   CONST                   
0061.00 D  CALLSTACKC                   10I 0 CONST                   
0062.00 D  RTNMSGKEY                     4A                           
0063.00 D  APIERR                             LIKEDS(APIERR)          
0064.00 D                                     OPTIONS(*VARSIZE)      

[解説]

API: QMHSNDPM は SNDPGMMSG の機能を実行するAPIである。
ILE-RPGの中からもこのAPIを呼出してプログラム・メッセージを
送信することができる。
上記では各パラメータに CONST という機能を定義している。
このCONST というのは

変更できないパラメータである

ことを示している。
呼出し側のAPIでも CONSTが定義されている場合
呼び出す側でも CONST を定義しないとコンパイル・エラーに
なるからである。
APIを呼び出すときにプロトタイプで不明なエラーが出たときは
CONST の定義が漏れている場合が多い。
このことを意識して CONSTを定義してやると
コンパイル・エラーは解決される。
_