DB2 for i では、いくつかの実行時ファイル処理オプションを提供します。
処理のタイプの指定:
プログラム中でデータベース・ファイルを使用する場合、そのファイルの使用に対して予定している操作の タイプをシステムに知らせる必要があります。 OPTION パラメーターを使用して、処理のタイプを指定で きます。
たとえば、ファイル内のデータを単に読み取ろうとしているのか、それともデータを読み取って更新しよう としているのかをシステムに知らせる必要があります。使用できる操作オプションとしては、入力、出力、
更新、および削除があります。システムは、高水準言語プログラムに指定されている情報、あるいはデータ ベース・ファイルのオープン (OPNDBF) コマンドや Query ファイルのオープン (OPNQRYF) コマンドの
OPTION パラメーターから、ユーザーが使用しようとしているオプションを判別します。
システムはこのようなオプションを使用して、プログラムの中で使用できる操作を決めます。たとえば、フ ァイルを入力専用にオープンしているのに、プログラムで出力操作をしようとすると、プログラムはエラー を受け取ることになります。
通常、システムは、ユーザーのプログラムで入出力操作が行われるときに、ユーザーに必要なデータ権限が あるかどうかを検査します。ただし、OPNQRYF または OPNDBF コマンドを使用する際には、システム は、ファイルのオープン時に、ユーザーに OPTION パラメーターで指定された操作を実行するのに必要な データ権限があるかどうかを検査します。
さらに、システムは、使用するロックを判別するのにも、これらのオプションを使用します。ロックは、プ ログラムで処理するファイルやレコードのデータ保全性を保護するのに使用されます。
関連概念:
103ページの『データ権限のタイプ』
データ権限とは、データベース・ファイル内のデータに対して読み取り、追加、更新、または削除を行った り、プログラムを実行したり、またはライブラリーまたはディレクトリーを検索するための特定権限です。
116ページの『共用データのロック』
すべてのデータベース・ファイルは、定義上、複数のユーザーにより同時に使用できます。しかし、一部の 操作では、ファイル、メンバー、またはレコードが複数のジョブで共用されないようにするために、ロック することができます。
初期ファイル位置の指定:
データベース・ファイルをオープンした後、ファイルの処理をどこから開始するかをシステムは知る必要が あります。 POSITION パラメーターを使用して初期ファイル位置を指定できます。
省略時では、ファイルの最初のレコードの直前から開始します (最初の順次読み取り操作で最初のレコード が読み取られます)。しかし、「データベース・ファイルによる一時変更 (OVRDBF)」コマンドを使用する と、ファイルの最後から開始したり、ファイルの途中の特定レコードから開始したりするように、システム に指示することができます。さらに、プログラム中でファイルの位置を動的に設定することもできます。
関連概念:
213ページの『ファイル内での位置の設定』
ジョブによってファイルがオープンされた後、システムはそのジョブのファイル内での位置を維持します。
ファイル位置は、ファイルの処理で使用されます。
削除済みレコードの再使用:
データベース・ファイルに削除済みレコードを再使用することが必要になる場合があります。この場合、
REUSEDLT パラメーターを使用できます。
「物理ファイルの作成 (CRTPF)」コマンドまたは「物理ファイルの変更 (CHGPF)」コマンドに REUSEDLT(*YES) を指定すると、以下の操作が異なった動作をすることがあります。
v 到着順は、削除済みレコードのスペースを再使用するファイルについては意味がなくなります。レコー ドがファイルの終わりに追加されなくなる可能性があるためです。
v 削除済みレコードのスペースを再使用するファイルについては、ファイルの終わり遅延は働きません。
v 削除済みレコードのスペースの 100% の再使用は保証されません。削除済みレコードのスペースがファ イルにまだあるにもかかわらず、ファイル満杯 の状態となったり、ファイルが拡張されたりすることが あります。
注: システムが削除済みレコードのスペースを再使用する方法のゆえに、削除済みレコードのスペースを再 使用するような、以下のタイプのファイルを作成または変更しないでください。
v 相対レコード番号を用いて処理されるファイルと、別のファイルへのキーとして使用される相対レコー ド番号を判別するためにアプリケーション・プログラムで使用されるファイル。
v 待ち行列として使用されるファイル
v 新しいレコードがファイルの終わりに挿入されるものとみなしているアプリケーション・プログラムに よって使用されるファイル。
v DB2 Symmetric Multiprocessing のインストール時に、行が更新、挿入、または削除された場合に並列索 引の維持管理が実行されると思われるファイル。
削除済みレコードのスペースを再使用するよう既存の物理ファイルを変更する場合に、物理ファイルに対す る重複キーの順序付けが LIFO または FIFO であるアクセス・パスを持つ論理ファイルがあるときには、
以下のステップに従うことによって、FIFO または LIFO 属性を持たない論理ファイルを再作成し、既存の アクセス・パスの再作成を避けることができます。
1. FIFO または LIFO 属性を持つ既存の論理ファイルの名前を変更します。
2. 名前を変更したファイルと同じ 2 番目の論理ファイルを作成します。ただし、重複キーの順序付けはフ ァイルに指定しないことに注意してください。新しいファイルに元のファイル名を付けます。新しいフ ァイルは名前が変更されたファイルのアクセス・パスを共用します。
3. 名前を変更したファイルを削除します。
キー順アクセス・パスの無視:
キー・フィールドがデータベース・ファイルに対して定義されていると、システムは自動的にキー順アクセ ス・パスを使用します。 ただし、ときにはパフォーマンス向上のために ACCPTH パラメーターを使用し て、キー順アクセス・パスを無視することもできます。
ACCPTH パラメーターを使用して、キー順アクセス・パスを無視し、到着順にファイルを処理することが
できます。一部の高水準言語、または「データベース・ファイルのオープン (OPNDBF)」コマンドで、キ ー順アクセス・パスを無視するようにシステムに指示することができます。
キー順アクセス・パスを無視すると、キーでデータを読み取る操作はできなくなります。操作は到着順アク セス・パスにより順次に行われます。(選択/除外値が定義されている論理ファイルに対してこのオプション を指定している場合、到着順アクセス・パスが使用され、選択/除外値に適合するレコードのみがプログラ ムに戻されます。処理は、ファイルに対して DYNSLT キーワードを指定した場合と同様に行われます。) 注: 複数の物理ファイル・メンバーに基づいている論理ファイル・メンバーについては、キー順アクセス・
パスを無視できません。
ファイルの終わり処理の遅延:
プログラムがデータベース・ファイルの終わりに達すると、システムは通常、それ以上読み取るデータがな いことをプログラムに知らせます。ファイルにさらにデータが到着するまでシステムにプログラムを保留さ せたい場合、EOFDLY パラメーターを使用してファイルの終わり処理を遅延させます。
「データベース・ファイルによる一時変更 (OVRDBF)」コマンドで EOFDLY パラメーターを使用した場 合、ファイルにさらにデータが到着すると、プログラムは新しく到着したレコードを読み取ることができま す。
注: ファイルの終わり遅延は、削除済みレコードを再使用するファイルには使用しないでください。
関連概念:
217ページの『ファイルの終わりに達した時のレコード待ち』
ファイルの終わり遅延は、ファイルの終わり状態になった後で、データベース・ファイル (論理ファイルま たは物理ファイル) からの順次読み取りを続行する方法です。
レコード長の指定:
高水準言語プログラムで、オプションとしてレコード長を指定できます。
システムはプログラムで処理するレコードの長さを知る必要がありますが、ユーザーがプログラム中でレコ ード長を指定する必要はありません。システムはプログラムに指示されているファイルの属性や記述から、
レコード長を自動的に判別します。
オープンされるファイル内のレコードがプログラムで指定した長さよりも長い場合、システムはファイル・
メンバーのレコード長に見合う記憶域を割り振り、このオプションを無視します。この場合、レコード全体 がプログラムに渡されます。(ただし高水準言語の中には、プログラムに指定したレコード長で定義されて いるレコードの一部のみをアクセスすることができるものもあります。) オープンされるファイル内のレコ ードがプログラムで指定した長さよりも短い場合、システムはプログラムに指定されているレコード長に対 して記憶域を割り振ります。プログラムは余分な記憶域スペースを使用することができますが、ファイル・
メンバーに対して定義されたレコード長のみが入出力操作に使用されます。
レコード様式の無視:
複数様式論理ファイルを使用する場合には、システムは、そのファイル用に定義されているすべての様式を ユーザーが使用するものとみなします。しかし、すべての様式を使用する必要がない場合には、どの様式を 使用し、どの様式を無視するかを指定できます。
様式を無視するためにこのオプションを使用しない場合には、プログラムはファイルに定義されているすべ ての様式を処理できます。この処理オプションの詳細については、ご使用の高水準言語の該当トピックを参 照してください。
重複キーが存在するかどうかの判別:
キーが重複キーかどうかを判別するのに使用されるキー順アクセス・パスのセットは、実行する入出力操作
(I/O) によって異なります。 重複キーが存在するかどうかは、DUPKEYCHK パラメーターを使用して判別
できます。
入力 (読み取り) 操作においては、ファイルがオープンされたときのキー順アクセス・パスが使用されま
す。物理ファイルに対して存在するこれ以外のキー順アクセス・パスはどれも考慮されません。また、選 択/除外仕様のために除外されたキー順アクセス・パスのレコードは、キー操作の重複を調べる場合にどれ も考慮されません。
出力 (書き込み) 操作および更新操作においては、この出力操作または更新操作のキーが重複キーであるか
どうかの判定に、物理ファイルに対して存在する *IMMED メンテナンスの非固有キー順のすべてのアクセ ス・パスが検索されます。アクセス・パスがフィードバック時にファイルに対して活動状態でオープンする 場合は、*REBLD および *DLY メンテナンスがあるキー順アクセス・パスのみが考慮対象となります。
COBOL プログラムでキー順ファイルを処理するときには、COBOL 言語を使用して、あるいは「データベ
ース・ファイルのオープン (OPNDBF)」コマンドまたは「Query ファイルのオープン (OPNQRYF)」コマン ドを使用して、重複キー・フィードバックがプログラムに戻されるように指定できます。ただし、COBOL で重複キー・フィードバックが戻されるようにすると、パフォーマンスが低下する場合があります。