OPM 互換プログラム・オブジェクトの作成
この例では、図 1 に示す CRTBNDRPG コマンドを使用して
給与計算プログラムのソースから OPM 互換プログラム・オブジェクトを作成します。
- オブジェクトを作成するには、以下のとおり入力してください。
CRTBNDRPG PGM(MYLIB/PAYROLL) SRCFILE(MYLIB/QRPGLESRC) TEXT('ILE RPG program') DFTACTGRP(*YES)CRTBNDRPG コマンドはプログラム PAYROLL を MYLIB の中に作成します。このプログラムはデフォルトの活動化グループで実 行されることになります。 デフォルトでは、コンパイラー・リストが作成されます。注: DFTACTGRP(*YES) のセットは OPM の互換性を提供するものです。またこのセットは、ACTGRP および BNDDIR パラメーターの値を入力できないよ うにします。 さらに、ソースにバインド・プロシージャー呼び出しが入っている場合には、 エラーが出され、コンパイルは終了します。 - 作成されたリスト出力を見るには、以下の CL コマンドのいずれか 1 つを
入力してください。
- DSPJOB で、オプション 4 (スプール・ファイルの表示) を選択します。
- WRKJOB
- WRKOUTQ 待ち行列名
- WRKSPLF
図 1. 給与計算サンプル・プログラム
*------------------------------------------------------------------------*
* 説明: このプログラムは、社員の週給の印刷出力を *
* 作成します。 *
*------------------------------------------------------------------------*
H DATEDIT(*DMY/)
*------------------------------------------------------------------------*
* ファイル定義 *
*------------------------------------------------------------------------*
FTRANSACT IP E K DISK
FEMPLOYEE IF E K DISK
FQSYSPRT O F 80 PRINTER
*------------------------------------------------------------------------*
* 変数の宣言 *
*------------------------------------------------------------------------*
D Pay S 8P 2
*------------------------------------------------------------------------*
* 定数の宣言 *
*------------------------------------------------------------------------*
D Heading1 C 'NUMBER NAME RATE H-
D OURS BONUS PAY '
D Heading2 C '______ ________________ ______ _-
D ____ _______ __________'
*------------------------------------------------------------------------*
* トランザクション・ファイル (TRANSACT) 内の各レコードごとに、 *
* 社員が見つかればその給与を計算して明細を印刷します。 *
*------------------------------------------------------------------------*
C TRN_NUMBER CHAIN EMP_REC 99
C IF NOT *IN99
C EVAL (H) Pay = EMP_RATE * TRN_HOURS + TRN_BONUS
C ENDIF
*------------------------------------------------------------------------*
* 報告書レイアウト *
* -- 1P がオンであれば見出し行を印刷する *
* -- レコードが見つかった場合 (標識 99 がオフ) は *
* 給与明細を印刷し、それ以外の場合は例外レコードを印刷する *
* -- LR がオンのときは 'リストの終わり' と印刷する *
*------------------------------------------------------------------------*
OQSYSPRT H 1P 2 3
O 35 '給与計算表'
O *DATE Y 60
O H 1P 2
O 60 Heading1
O H 1P 2
O 60 Heading2
O D N1PN99 2
O TRN_NUMBER 5
O EMP_NAME 24
O EMP_RATE L 33
O TRN_HOURS L 40
O TRN_BONUS L 49
O Pay 60 '$ 0. '
O D N1P 99 2
O TRN_NUMBER 5
O 35 '** 社員ファイル上にない **'
O T LR
O 33 'END OF LISTING'