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.
© Copyright 2024 Paperzz