初 版 2011/01/03 第3版 2013/06/10

Operation Knowhow
初 版 2011/01/03
第3版 2013/06/10
1
Copyright 2011 CYFLEX L.L.C.
Operation Knowhow
レベルチェックとは?
プログラム
ファイル作成
レベル識別コード
コンパイル
1010101
レコード様式レベル
識別コード
1010101
ファイル再作成
レベル識別コード
2020202
レベルチェック
エラー
実行時
プログラム
レコード様式レベル
識別コード
1010101
ファイルをオープンする時にレベル
識別コードをチェックする。
2
Copyright 2011 CYFLEX L.L.C.
Operation Knowhow
レベルチェックとは?
外部記述ファイルを使用するプログラムをコンパイルするときは、高水準言語コンパイ
ラーによって、プログラムの中で指定されているファイルに関するレコード・レベル記述お
よびフィールド・レベル記述を抜き出し、それらの記述をコンパイルされたプログラムの一
部にします。プログラムをコンパイルしたときの記述が現在の記述と同じかどうかは、プ
ログラムを実行するときに確認検査することができます。
ログラムを実行するときに確認検査することができます
システムは対応するファイルの作成時に、各レコード様式ごとに固有のレベル識別コー
ドを割り当てます。システムでレベル識別コードを決めるのに使用する情報は、次のとお
りです。
りです
z レコード様式名
z フィールド名
z レコード様式の合計長
z レコード様式の中のフィールド数
z フィールド属性(たとえば、長さ、および小数点以下の桁数)
z レコード様式の中のフィールドの順序
3
Copyright 2011 CYFLEX L.L.C.
Operation Knowhow
レベルチェックとは?
データベース、表示装置ファイル、印刷装置ファイル、ICFファイルをDDSを使用して作成し
た後で RPGを ンパイルするとレ
た後で、RPGをコンパイルするとレコード様式レベル識別コードをプログラム内にコピーし
ド様式レベル識別
ドをプログラム内に ピ し
ます。
プログラム実行しファイルをオープンするときに、プログラムとファイルのレコード様式レベ
ル識別コードを比較します
ル識別コ
ドを比較します。一致しない場合はレベルチェックエラーとなります
致しない場合はレベルチェックエラ となります。
ファイル作成時に、LVLCHK(*NO)を指定した場合、あるいはOVRxxxF LVLCHK(*NO)
を指定した場合は レベルチェックは行われません
を指定した場合は、レベルチェックは行われません。
4
Copyright 2011 CYFLEX L.L.C.
Operation Knowhow
エラーメッセージ
CPF4131
ESCAPE
CPF9999
ESCAPE
40 10/11/05 08:00:03.734344 QDMSIGNL
QSYS
0078
XXXXXX
XXXXXX
MESSAGE . . . . :
ライブラリー XXXXXX のファイル XXXXXX のメンバー
XXXXXX でレベル・チェックが起こった。
原因−−オープンするように要求されたファイルはファイル
原因
オ プンするように要求されたファイルはファイル XXXXXXXXです。実際に
XXXXXXXXです 実際に
オープンされたファイルはライブラリー XXXXX のファイル XXXXXXXです。実際
にオープンされたファイルについて,プログラムで指定されたレコード様式レベル
の識別コードが実際にオープンされたファイルと一致していません。 回復手順−
−次の1つを実行して,その後で要求をやり直してください。 -- プログラムをコ
ンパイルし直す。
パイ
直す -- 適切な OVRDBF,
OVRDBF OVRDSPF
OVRDSPF, OVRICFF
OVRICFF, または OVRPRTF コマン
ドを使用して, LVLCHK パラメーターに一時変更として *NO の値を指定する。
40 10/11/05 08:00:03.737088 QMHUNMSG
*N
XXXXXX
XXXXXX
MESSAGE . . . . :
機能チェック。 CPF4131 は, XXXXXX によってステートメン
ト .OPEN 命令 X'0306' で監視されていません。
原因−−エスケープ例外メッセージが,そのメッセージをモニターしていないプログ
03
03
続く
...
F3= 終了
F12= 取消し
F19= 左
F20= 右
F24= キーの続き
5
Copyright 2011 CYFLEX L.L.C.
Operation Knowhow
レベル識別コードの種類
レベル識別コードには、以下の種類があります。
●ファイルレベル識別コード
●メンバーレベル識別コード
●レコード様式レベル識別コード
レベ 識別
レベル識別コード
ド
使用目的
ファイルレベル識別コードに
ついては、ノウハウ集の
「ファイルリストアー時の注
「ファイルリストア
時の注
意事項」を参照してください。
IDの情報
ファイルレベル識別コード
保管・復元で使用します
作成日時
メンバーレベル識別コード
識別
保管・復元で使用します
保管
復元 使用 ます
作成日時
作成
時
レコードレベル識別コード
レベルチェックで使用します
以下の情報が含まれています。
・フィールド名
・レコード様式の合計長
・レコード様式の中のフィールド数
・フィールド属性
・レコード様式の中のフィールドの順序
6
Copyright 2011 CYFLEX L.L.C.
Operation Knowhow
レベル識別コードの種類
7
Copyright 2011 CYFLEX L.L.C.
Operation Knowhow
レベル識別コードの調べ方
DSPFD
レコード様式リスト
レコ
ド様式リスト
レコード 様式 レベル
様式
フィールド
FZKREC
33
長
識別 コード
241 434E557361C08
テキスト . . . . . . . . . . . . . . . . :
在庫期限
様式の合計数 . . . . . . . . . . . . . . . :
1
フィールドの合計数 . . . . . . . . . . . . :
合計レコード長 . . . . . . . . . . . . . . :
33
241
メンバー・リスト
DSPPGMREF
ライブラリー
プログラム
参照
ライブラリー
オブジェクト
000004 CYFLIB
ZAU31A
FZAIKGN
CYFLIB
レコード ファイル
レコード
様式レベル
様式
使用
様式
識別コード
の数
法
1
6
FZKREC
8
423F1315B10E5
Copyright 2011 CYFLEX L.L.C.
Operation Knowhow
レベルチェックにならないケース
以下の DDS 情報はレ
情報はレベル識別コードに影響を及ぼさないので、ファイルを使用する
ル識別コ ドに影響を及ぼさないので、ファイルを使用する
プログラムをコンパイルし直さなくても、キーワードを変更できます。
zTEXT キーワード
zCOLHDG キーワード
キ ワ ド
zCHECK キーワード
zEDTCDE キーワード
zEDTWRD キーワード
zREFキーワード
zREFFLD キーワード
キ ワ ド
zCMP キーワード、RANGE キーワード、および VALUES キーワード
zTRNTBL キーワード
zREFSHIFT キーワード
zDFT キーワード
zCCSID キーワード
zALWNULL キーワード
z結合仕様および結合キーワード
zキー・フィールド
アクセス
ス キ ワ ド
zアクセス・パス・キーワード
z選択 / 除外フィールド
9
Copyright 2011 CYFLEX L.L.C.
Operation Knowhow
カラム見出しを変更する場合
プログラムおよびファイルのリコンパイルは、必要ありません。
①DDSソースのカラム見出しを変更
①DDSソ
スのカラム見出しを変更
②CHGPF
10
Copyright 2011 CYFLEX L.L.C.
Operation Knowhow
新規フィールドを追加する場合
新規フィールドを追加する場合は、以下のように行うことにより、
影響範囲を局所化できます。
①新規フィ ルドをファイルの後ろに追加する。
①新規フィールドをファイルの後ろに追加する
②CRTPF LVLCHK(*NO)
③CRTLF LVLCHK(*NO)
④
④追加したフィールドを使用しているプログラムのコンパイル
プ グ
11
Copyright 2011 CYFLEX L.L.C.
Operation Knowhow
新規フィールドを追加する場合
RPG/400では、プログラム内でファイルのフィールドのアドレスをそのファイルのレコードの先頭から何バイト目という認識
をしています。
をしています
ファイル読み込みの際に使用される入力用バッファとファイル出力の際に使用される出力用バッファが用意されます。
このバッファーは、プログラムのコンパイル時に作成されます。
ファイルに項目が追加され、プログラムがリコンパイルされていない場合は、プログラムは、各フィールドのアドレスをファイ
ル修正前のものを使用します。
フィールドがファイルの最後に追加された場合でプログラムがそのフィールドを使用していない場合は、ファイル修正後でも
フィ
ルドがファイルの最後に追加された場合でプログラムがそのフィ ルドを使用していない場合は、ファイル修正後でも
、既存のフィールドのレコード内先頭アドレスは変化しませんからプログラムは正常に動作します。
フィールドがファイルの途中に追加された場合は、そのフィールド以降のアドレスが全てずれてしまうので、レコード単位の
処理で不具合が生じる可能性があります。
(例えば 数値フィ ルドに文字デ タが混入して10進デ タエラ を引き起こします )
(例えば、数値フィールドに文字データが混入して10進データエラーを引き起こします。)
12
Copyright 2011 CYFLEX L.L.C.
Operation Knowhow
レベルチェックの確認
弊社のツールSystem Indexでは、レベルチェックを確認できます。
13
Copyright 2011 CYFLEX L.L.C.
Operation Knowhow
レベルチェックの確認
LVLCHK(*NO)
で作成
14
Copyright 2011 CYFLEX L.L.C.
Operation Knowhow
QUERYの場合レベルチェック
QUERY
の場合レベルチェック
NEW
QUERYの場合、フィルードの長さが変わったりするとエラーとなります。
15
Copyright 2011 CYFLEX L.L.C.
Operation Knowhow
DFUの場合レベルチェック
DFU
の場合レベルチェック
NEW
DFUの場合、フィルードの長さが変わったりするとエラーとなります。
16
Copyright 2011 CYFLEX L.L.C.
Operation Knowhow
CLコマンド作成のファイル
CL
コマンド作成のファイル
NEW
DSPFD、DSPOBJDなどで作成されるOUTFILEは、OSのバージョンによりサイズが変わる可能性
があります。
があります
そのファイルをRPGで使用している場合は、OSのバージョンアップのタイミングでリコンパイルが必
要になのではないかと思いますが、システムで提供しているファイルはレベルチェック「NO」で作成
され
されているためリコンパイルしなくてもレベルチェックエラーにはなりません。
る
リ
イ
なく も
チ ック ラ
なりま
。
DSPFD TYPE(*MBR) QSYS/QAFDMBR
DSPOBJD
QSYS/QADSPOBD
17
Copyright 2011 CYFLEX L.L.C.