REWRITE ステートメント - 形式 1

構文図を読む構文図をスキップする
REWRITE ステートメント - 形式 1

>>-REWRITE--レコード名-1--+------------+----------------------------->
                     '-FROM--ID-1-'   

>--+--------------------------------+--------------------------->
   |        (1)                     |   
   '-FORMAT------+----+--+-ID-2---+-'   
                 '-IS-'  '-リテラル-1-'     

>--+--------------------------------+--------------------------->
   |              (1)               |   
   '-NULL-KEY-MAP------+----+--ID-5-'   
                       '-IS-'           

>--+----------------------------+------------------------------->
   |          (1)               |   
   '-NULL-MAP------+----+--ID-6-'   
                   '-IS-'           

>--+-------------------------------+---------------------------->
   '-INVALID--+-----+--命令ステートメント-1-'   
              '-KEY-'                  

>--+-----------------------------------+--+-------------+------><
   '-NOT INVALID--+-----+--命令ステートメント-2-'  '-END-REWRITE-'   
                  '-KEY-'                                   

注:
  1. IBM 拡張
レコード名-1
置き換えられるレコードと同じ数の文字桁を持つ、ファイル・セクション内のレコードの名前です。 レコードの名前は参照変更できません。
ID-1
これは送り出し項目です。
FROM 句
この句は、次の効果をもちます。
MOVE identifier-1 TO record-name-1.
REWRITE record-name-1.

REWRITE ステートメントの処理が成功すると、 現行レコードはレコード名-1 では使用可能でなくなりますが、ID-1 ではまだ使用可能です。 レコード名-1 と ID-1 の両方で同じ記憶域を参照してはなりません。

IBM Extension
FORMAT 句
この句が適用されるのは、REWRITE ステートメントが、ASSIGN ファイルの装置タイプとして DATABASE が指定された索引付きファイルに対して実行される場合です。 レコード形式が 1 つであるファイルを処理する場合には、この句の指定はオプショナルです。

FORMAT 句で指定する値には、この入出力操作で使用するレコード形式の名前が入ります。 システムはこれを使用して、どのレコード形式に対して操作を行うかを指定または選択します。

ID-2 を指定する場合には、10 文字以下の英数字データ項目にしなければなりません。

リテラル-1 を指定する場合は、10 文字以下の大文字の文字ストリングにしなければなりません。

FORMAT 句を指定せずに、ランダム・アクセス・モードで索引付きファイルにアク セスする場合には、定義された最初の形式が使用されます。

全桁がブランクの値は、FORMAT 句が指定されなかった場合と同じ扱いになります。 その値がファイルに対して有効でない場合は、9K の FILE STATUS が戻され、(そのファイルに適用可能であれば) USE プロシージャーが呼び出されます。

NULL-KEY-MAP IS 句
ページ『NULL-KEY-MAP IS 句』のこの句についての説明を参照してください。
NULL-MAP IS 句
ページ『NULL-MAP IS 句』のこの句についての説明を参照してください。
End of IBM Extension
INVALID KEY 句
この句は、索引編成ファイルと、ランダムまたは動的アクセスを持つ相対編成ファイルにおいて有効です。 これは、レコード域内のキー・フィールドによって指定されたレコードが見つからない場合に処理されます。

INVALID KEY 条件が発生した場合、更新操作は行われません。 レコード名の中のデータは影響を受けません。 この句は、必要に応じて、対応する命令ステートメントに制御権を移動します。

レコード名-1 について適用可能な EXCEPTION/ERROR プロシージャーが指定されていない場合は、INVALID KEY 句を指定しなければなりません。

次のいずれかの場合に、INVALID KEY 条件が発生します。
  • アクセス・モードが順次であり、置き換えられるレコードの基本 RECORD KEY に含まれる値が、 ファイルの最後に検索されたレコードの基本 RECORD KEY データ項目の値と等しくない場合。
  • 基本 RECORD KEY に含まれている値が、ファイル内のレコードのものと等しくない場合。
  • DUPLICATES が指定されていない ALTERNATE RECORD KEY データ項目 の値は、ファイル内に既にあるレコードの値と同じです。

適用可能な USE プロシージャーが指定されていないファイルに対しては、INVALID KEY 句を指定しなければなりません。

詳細は 共通の処理機能"INVALID KEY 条件"を参照してください。

装置タイプ DISK 上の順次にアクセスされる索引付きファイルの場合、 この句は、置き換えられるレコードの RECORD KEY に含まれる値が、ファイルの最後に検出されたレコードの RECORD KEY データ項目と等しくない場合に処理されます。

NOT INVALID KEY 句
この句は、索引編成ファイルと、ランダムまたは動的アクセスを持つ相対編成ファイルに対して有効です。 NOT INVALID KEY 句が指定されている REWRITE ステートメントの実行が正常に完了すると、制御権は、この句に関連する命令ステートメントに渡されます。