SETGT (より大きい設定)

自由形式構文 SETGT{(EHMR)} 検索引数 名前
コード 演算項目 1 演算項目 2 結果フィールド 標識
SETGT (E) 検索引数 名前 (ファイルまたはレコード様式) NR ER _

SETGT 命令は、ファイルをキーまたは相対レコード番号が演算項目 1 に指定 されたキーまたは相対レコード番号より大きい次のレコードに位置付けます。 ファイルは全手順ファイル (ファイル仕様書の 18 桁目の F に よって識別される) でなければなりません。

検索引数 (検索引数) は、レコードの検索に使用するキーまたは相対レコード番号でなければなりません。 アクセスがキーによる場合には、検索引数 はフィールド名、名前の付いた定数、 形象定数、またはリテラルの形式の単一キーにすることができます。キー・フィールドの検索 例については、図 263 を参照してください。

ファイルが外部記述ファイルの場合、検索引数 は KLIST 名、値のリスト、または %KDS の形式の複合キーにすることもできます。 図形および UCS-2 のキー・フィールド には、そのファイル内のキーと同じ CCSID がなければなりません。 データ構造内の検索引数の図については、%KDS (データ構造の検索引数)の終わりにある例を参照してください。 アクセスが相対レコード番号による場合には、検索引数 に整数のリテラルまたは小数点以下の桁数がゼロの数値フィールドを入れなければなりません。

名前 は必須で、ファイル名またはレコード様式名のいずれかでなければなりません。 レコード様式名を使用できるのは、外部記述ファイルの場合だけです。

検索引数 (検索引数) に指定された検索引数より大きいキーまたは相対レコード番号のレコードが見付からない場合にオンに設定される標識を 71 から 72 桁目に指定することができます。この情報は %FOUND 組み込み関数からも入手することができます。 この関数は、レコードが見付からない場合は '0' を戻し、レコードが見付かった場合は '1' を戻します。

SETGT 例外 (ファイル状況コードが 1000 より大きい) を 処理するために、命令コード拡張 'E' またはエラー標識 ER を指定できますが、 両方を指定することはできません。 エラー処理の詳細については、ファイル例外/エラーを参照してください。

SETGT 命令が正常に実行されなかった場合 (レコード不在条件) には、ファ イルは、ファイルの終わりに位置付けられます。

ファイルの位置付けに形象定数を使用することもできます。

注:
以下の形象定数の説明および使用例では、*LOVAL および *HIVAL はファイ ルの実際のキーとしては使用されないものとしています。

複合キーを持つファイルで使用する場合には、形象定数は、キーのそれぞれ のフィールドに形象定数の値が入っているものとして処理されます。 ほとんどの場合に、*LOVAL は、最初の読み取りでキーの値が一番小さいレコード が検索されるようにファイルを位置付けます。 ほとんどの場合に *HIVAL は、 READ でファイルの終わりの指示が受け取られるようにファイルを位置付けます。 以後の READP では、ファイルの最後のレコードが検索されます。 しかし、*LOVAL および *HIVAL を使用 する場合には次の事例に注意してください。

*LOVAL または *HIVAL が日付または時刻データ・タイプのキー・フィール ドで使用される場合には、その値は使用される日付時刻の形式によって異なり ます。 これらの値の詳細については、データ・タイプおよびデータ形式を参照してください。

SETGT 命令の後では、ファイルは、そのキーまたは相対レコード番号が検索引数 に指定された検索引数より大きい最初のレコードの直前になるように位置付けられます。 ユーザーはこのレコードを、ファイルを読み取って検索しま す。 しかし、ファイルを読み取る前に、 レコードが別のジョブまたはユーザー・ジョブの別のファイルによってファ イルから削除されている場合があります。 このような場合には、必要なレコー ドを取り出すことができません。 ユーザー・ファイルの予期しない変更 を防止する方法については、iSeries Information Center (URL http://www.ibm.com/eserver/iseries/infocenter)「プログラミング」のトピックを参照してください。

ヌル値可能フィールドおよびキーを持つレコードの処理については、データベースのヌル値サポートを参照してください。

詳細については、ファイル命令を参照してください。

注:
命令コード拡張 H、M、および R は、検索引数がリストまたは %KDS() である場合にのみ使用できます。
図 350. SETGT 命令
*...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