この例を完成させるために、サービス・プログラムへバインドされるプログラム CVTHEXPGM から構成される「アプリケーション」を作成します。 これは CVTTOHEX に 7 桁のストリングを 2 回渡しますが、 1 回目には 16 進数ストリングの値が 10 (すなわち 5 桁を変換) で、 2 回目には値が 14、すなわち実際の長さで渡されます。
サービス・プログラム CVTTOHEX の使用を説明するためにプログラム CVTHEXPGM が 使われていることに注意してください。 実際のアプリケーションでは、CVTTOHEX の呼び出し元は CVTTOHEX のテスト以外に別の主要 な目的をもっています。 さらに、サービス・プログラムは通常他の多くのプログラムで使用されるか、 あるいはいくつかのプログラムで頻繁に使用されます。そうでなくては、 初期の呼び出しのオーバーヘッドから考えてこれをサービス・プログラムに したことが正当化されません。
アプリケーション・プログラムを作成するには、次のステップに従ってください。
CRTRPGMOD MODULE(MYLIB/CVTHEXPGM) SRCFILE(MYLIB/QRPGLESRC)
CRTPGM PGM(MYLIB/CVTHEXPGM) BNDSRVPGM(MYLIB/CVTTOHEX) DETAIL(*BASIC)
CVTHEXPGM が作成される際、サービス・プログラムとの対話に使用するインターフェースに関する 情報が含められます。 これは CVTTOHEX 用のバインダー言語に反映されるものと同じです。
CALL CVTHEXPGM
CVTHEXPGM を実行可能にする処理の段階で、システムは以下のことを検査しま す。
上のいずれかが真でなければ、エラー・メッセージが出されます。
CVTHEXPGM の出力を下に示します。 (入力ストリングは 'ABC123*' です。)
Result14++++++ Result10++ C1C2C3F1F2 10 character output C1C2C3F1F2F35C 14 character output
*----------------------------------------------------------------* * サービス・プログラム CVTTOHEX をテストするプログラム * * * * 1. 7 文字の入力ストリングを使用 * * 2. 10 文字の 16 進ストリングに変換 (結果が入力ストリング全体に * * とっては小さ過ぎるため、 * * 入力文字の先頭 5 文字だけが使用されることになります) * * 3. 14 文字の 16 進ストリングに変換 (結果に十分な長さがある * * ため、入力文字 7 文字すべてが使用されます) * *----------------------------------------------------------------* FQSYSPRT O F 80 PRINTER * CvtToHex のプロトタイプ D/COPY RPGGUIDE/QRPGLE,CVTHEXPR D ResultDS DS D Result14 1 14 D Result10 1 10 D InString S 7 D Comment S 25 C EVAL InString = 'ABC123*' *----------------------------------------------------------------* * プロトタイプ呼び出しを使用して、文字ストリングと 10 文字の * * 結果フィールドを渡します。呼び出されたプロシージャー * * CvtToHex の必要に応じて、操作記述子が渡されます。 * *----------------------------------------------------------------* C EVAL Comment = '10 character output' C CLEAR ResultDS C CALLP CvtToHex(Instring : Result10) C EXCEPT *----------------------------------------------------------------* * CALLB(D) を使用して、文字ストリングと 14 文字の結果の * * フィールドを渡します。命令拡張 (D) は、渡されたパラメーター * * 用の操作記述子を作成します。CALLB は、上記の CALLP との比較の * * ためにここで使用されます。 * *----------------------------------------------------------------* C EVAL Comment = '14 character output' C CLEAR ResultDS C CALLB(D) 'CVTTOHEX' C PARM InString C PARM Result14 C EXCEPT C EVAL *INLR = *ON OQSYSPRT H 1P O 'Result14++++++' OQSYSPRT H 1P O 'Result10++' OQSYSPRT E O ResultDS O Comment +5
(C) Copyright IBM Corporation 1992, 2006. All Rights Reserved.