SETGT (より大きい設定)
| 自由形式構文 | SETGT{(EHMR) } 検索引数 名前 |
| コード | 演算項目 1 | 演算項目 2 | 結果フィールド | 標識 | ||
|---|---|---|---|---|---|---|
| SETGT (E) | 検索引数 | 名前 (ファイルまたはレコード様式) | NR | ER | _ | |
SETGT 命令は、演算項目 1 で指定されたキーまたは相対レコード番号より大きいキー または相対レコード番号を持つ次のレコードにファイルを位置付けます。 ファイルは全手順ファイルでなければなりません。
検索引数 (検索引数) は、レコードの検索に使用するキーまたは相対レコード番号でなければなりません。 アクセスがキーによる場合には、検索引数 はフィールド名、名前の付いた固定情報、 形象定数、またはリテラルの形式の単一キーにすることができます。キー・フィールドの検索 例については、図 2 を参照してください。
ファイルが外部記述ファイルの場合、検索引数 は KLIST 名、値のリスト、または %KDS の形式の複合キーにすることもできます。KLIST を
使用して指定されたキーの場合、キー・フィールドはファイル内のキーと同じ CCSID である必要があります。データ構造内の検索引数の図については、%KDS (データ構造の検索引数)の終わりにある例を参照してください。
アクセスが相対レコード番号による場合には、検索引数 に整数のリテラルまたは小数点以下の桁数がゼロの数値フィールドを入れなければなりません。
名前 は必須で、ファイル名またはレコード様式名のいずれかでなければなりません。 レコード様式名を使用できるのは、外部記述ファイルの場合だけです。
検索引数 (検索引数) に指定された検索引数より大きいキーまたは相対レコード番号のレコードが見付からない場合にオンに設定される標識を 71 から 72 桁目に指定することができます。この情報は %FOUND 組み込み関数からも入手することができます。 この関数は、レコードが見付からない場合は '0' を戻し、レコードが見付かった場合は '1' を戻します。
SETGT 例外 (ファイル状況コードが 1000 より大きい) を 処理するために、命令コード拡張 'E' またはエラー標識 ER を指定できますが、 両方を指定することはできません。 エラー処理の詳細については、ファイル例外/エラーを 参照してください。
SETGT 命令が正常に実行されなかった場合 (レコード不在条件) には、ファ イルは、ファイルの終わりに位置付けられます。
ファイル中の最後のレコードに位置付けるには、SETLL 命令で *END を使用します。
- 降順のキーを持つ外部記述ファイルでは、*HIVAL は最初の読み取り操作でフ ァイルの最初のレコード (一番大きいキーを持つレコード) が検索され、*LOVAL は READP 命令でファイルの最後のレコード (一番小さいキーを持つレコード) が検索されるようにファイルを位置付けます。
- *LOVAL または *HIVAL による SETGT 命令の後でレコードの追加または キー・フィールドの変更が行われている場合には、以後そのファイルを、 最低または最高のキーを持つレコードに位置付けることはできません。 数値キー の *LOVAL はキーの値 ‘99...9D’ を表し、*HIVAL はキーの値 ‘99...9F’ を表します。 キーが浮動数値の場合、*LOVAL と *HIVAL の定義は異なります。 表意定数を参照してください。ファイル仕様書でプログラム記述ファイルにパック 10 進数の指定があって、実 際のファイルのキー・フィールドに文字データが入っている場合には、レコー ドが *LOVAL より小さいかまたは *HIVAL より大きいキーを持つことがありま す。 キー・フィールドに符号のない 2 進数データが入っている場合には、*LOVAL は 最低のキーでないことがあります。
*LOVAL または *HIVAL が日付または時刻データ・タイプのキー・フィール ドで使用される場合には、その値は使用される日付時刻の形式によって異なり ます。 これらの値の詳細については、データ・タイプおよびデータ形式を参照してください。
SETGT 命令の後では、ファイルは、そのキーまたは相対レコード番号が検索引数 に指定された検索引数より大きい最初のレコードの直前になるように位置付けられます。 ユーザーはこのレコードを、ファイルを読み取って検索しま す。 しかし、ファイルを読み取る前に、 レコードが別のジョブまたはユーザー・ジョブの別のファイルによってファ イルから削除されている場合があります。 このような場合には、必要なレコー ドを取り出すことができません。 ユーザー・ファイルの予期しない変更 を防止する方法については、IBM® i Information Center (URL http://www.ibm.com/systems/i/infocenter/)「プログラミング」のトピックを参照してください。
ヌル値可能フィールドおよびキーを持つレコードの処理については、データベースのヌル値サポートを参照してください。
詳細については、ファイル命令を参照してください。
*...1....+....2....+....3....+....4....+....5....+....6....+....7...+....
CL0N01Factor1+++++++Opcode(E)+Factor2+++++++Result++++++++Len++D+HiLoEq....
* This example shows how to position the file so READ will read
* the next record. The search argument, KEY, specified for the
* SETGT operation has a value of 98; therefore, SETGT positions
* the file before the first record of file format FILEA that
* has a key field value greater than 98. The file is positioned
* before the first record with a key value of 100. The READ
* operation reads the record that has a value of 100 in its key
* field.
C
C KEY SETGT FILEA
C READ FILEA 64
*
* This example shows how to read the last record of a group of
* records with the same key value and format from a program
* described file. The search argument, KEY, specified for the
* SETGT operation positions the file before the first record of
* file FILEB that has a key field value greater than 70.
* The file is positioned before the first record with a key
* value of 80. The READP operation reads the last record that
* has a value of 70 in its key field.
C
C KEY SETGT FILEB
C READP FILEB 64

*...1....+....2....+....3....+....4....+....5....+....6....+....7...+....
CL0N01Factor1+++++++Opcode(E)+Factor2+++++++Result++++++++Len++D+HiLoEq....
*
* This example shows the use of *LOVAL. The SETLL operation
* positions the file before the first record of a file in
* ascending order. The READ operation reads the first record
* (key value 97).
C
C *LOVAL SETLL RECDA
C READ RECDA 64
C
* This example shows the use of *HIVAL. The SETGT operation
* positions the file after the last record of a file in ascending
* order. The READP operation reads the last record (key value 91).
C
C *HIVAL SETGT RECDB
C READP RECDB 64
