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 には、正しいパスワードが渡されなければなりません。 そうでない場合には、そのプログラムは実行しません。 図 47 はそのソースを示したものです。
CRTBNDRPG PGM(MYLIB/EMPRPT2)
CALL MYLIB/EMPRPT2 (HELLO)
CALL コマンドが出されると、そのコマンドによって渡されたパラメーターの 内容が保管され、プログラム・パラメーター PSWORD がその位置を示します。 次にプログラムは PSWORD の内容がプログラムに保管された値 ('HELLO') と一致するかどうかを調べます。 この場合には、2 つの値が同じなので、プログラムは実行を続行します。
*===============================================================* * プログラム名: 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 '***'
図 48 は、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
(C) Copyright IBM Corporation 1992, 2006. All Rights Reserved.