CL CALL コマンドを使用したパラメーターの受け渡し
ILE プログラムを実行する時にそのプログラムにパラメーターを渡すには、CL CALL コマンドの PARM オプションを使用します。
CALL PGM(program-name)
PARM(parameter-1 parameter-2 … parameter-n)
パラメーターは、次のようにキーワードを指定せずに入力することもできます。
CALL library/program-name (parameter-1 parameter-2 … parameter-n)
各パラメーター値は、CL プログラム変数として、あるいは次の 1 つとして指定することができます。
- 文字ストリング定数
- 数値定数
- 論理定数
ILE RPG プロシージャーがプログラム入力プロシージャーであるようなプログラムに対してパラメーターを渡す場合には、 そのプログラムには、唯一 *ENTRY PLIST が指定されていなければなりません。 (PARM ステートメント中で) 後に続く パラメーターは、CALL コマンドを介して渡されるものに 1 対 1 の関係で対応していなければなりません。
パラメーターの処理方法の詳細な説明については、資料「CL プログラミング」で『プログラム間のパラメーターの受け渡し』のセクションの CALL コマンドを参照してください。
例えば、最初の開始時にプログラム EMPRPT2 には、正しいパスワードが渡されなければなりません。
そうでない場合には、そのプログラムは実行しません。
図 1
はそのソースを示したものです。
- プログラムを作成するためには、次を入力してください。
CRTBNDRPG PGM(MYLIB/EMPRPT2) - プログラムを実行するためには、次を入力してください。
CALL MYLIB/EMPRPT2 (HELLO)CALL コマンドが出されると、そのコマンドによって渡されたパラメーターの 内容が保管され、プログラム・パラメーター PSWORD がその位置を示します。 次にプログラムは PSWORD の内容がプログラムに保管された値 ('HELLO') と一致するかどうかを調べます。 この場合には、2 つの値が同じなので、プログラムは実行を続行します。
図 1. 実行時にパラメーターを要求する ILE RPG プログラム
*===============================================================*
* プログラム名: EMPRPT2 *
* 関連ファイル: EMPMST (物理ファイル) *
* PRINT (PRINTER ファイル) *
* 説明: このプログラムは、入力されたパスワードが *
* 正しい場合に、ファイル EMPMST に保管されている*
* 社員情報を印刷します。コマンド行に *
* "CALL ライブラリー名/EMPRPT2 (パスワード)" を *
* 入力してプログラムを実行します。 *
* ここで、このプログラムのパスワードは *
* 'HELLO' です。 *
*===============================================================*
FPRINT O F 80 PRINTER
FEMPMST IP E K DISK
IEMPREC 01
*-----------------------------------------------------------------*
* 入力パラメーター・リストはこのプログラムの中で指定されます。 *
* PSWORD というパラメーターが 1 つあり、これは *
* 長さ 5 桁の文字フィールドです。 *
*-----------------------------------------------------------------*
C *ENTRY PLIST
C PARM PSWORD 5
*-----------------------------------------------------------------*
* このプログラムのパスワードは 'HELLO' です。フィールド PSWORD *
* に 'HELLO' が入っているかチェックします。 *
* 入っていない場合には、最終レコード標識 (LR) と *IN99 がオンに *
* 設定されます。*IN99 はメッセージの印刷を制御します。 *
*-----------------------------------------------------------------*
C PSWORD IFNE 'HELLO'
C SETON LR99
C ENDIF
OPRINT H 1P 2 6
O 50 'EMPLOYEE INFORMATION'
O H 1P
O 12 'NAME'
O 34 'SERIAL #'
O 45 'DEPT'
O 56 'TYPE'
O D 01N99
O ENAME 20
O ENUM 32
O EDEPT 45
O ETYPE 55
O D 99
O 16 '***'
O 40 'Invalid Password Entered'
O 43 '***'
図 2 は、EMPRPT2 ソースによって参照される DDS を示したものです。
図 2. EMPRPT2 の DDS
A*****************************************************************
A* 説明: これは物理ファイル EMPMST の DDS です。 *
A* これには 1 つのレコード様式 EMPREC が入っています。 *
A* このファイルには、会社の各社員ごとに 1 レコードが *
A* 入っています。 *
A*****************************************************************
A*
A R EMPREC
A ENUM 5 0 TEXT('EMPLOYEE NUMBER')
A ENAME 20 TEXT('EMPLOYEE NAME')
A ETYPE 1 TEXT('EMPLOYEE TYPE')
A EDEPT 3 0 TEXT('EMPLOYEE DEPARTMENT')
A ENHRS 3 1 TEXT('EMPLOYEE NORMAL WEEK HOURS')
A K ENUM