READ - 形式 5a - トランザクション (サブファイル順次) >>-READ SUBFILE--ファイル名--+------+--MODIFIED--+--------+----------> '-NEXT-' '-RECORD-' >--+------------+--+----------------------------+---------------> '-INTO--ID-1-' '-FORMAT--+----+--+-ID-2---+-' '-IS-' '-リテラル-1-' >--+------------------------------+-----------------------------> '-TERMINAL--+----+--+-ID-3---+-' '-IS-' '-リテラル-2-' >--+-------------------------------+----------------------------> '-+-INDICATOR--+--+-----+--ID-4-' +-INDICATORS-+ +-IS--+ '-INDIC------' '-ARE-' >--+--------------------------+---------------------------------> '-+----+--END--命令ステートメント-3-' '-AT-' >--+-------------------------------+--+----------+------------->< '-NOT--+----+--END--命令ステートメント-4-' '-END-READ-' '-AT-'
形式 5a は、サブファイル・レコードである形式を順次アクセス・モードで読み取る場合に使用します。 サブファイル・レコードを順次にアクセスするためには、NEXT MODIFIED 句を指定しなければなりません。 AT END 句は、NEXT MODIFIED 句と一緒でなければ指定できません。
READ - 形式 5b - トランザクション (サブファイル・ランダム) >>-READ SUBFILE--ファイル名--+--------+--+------------+--------------> '-RECORD-' '-INTO--ID-1-' >--+----------------------------+-------------------------------> '-FORMAT--+----+--+-ID-2---+-' '-IS-' '-リテラル-1-' >--+------------------------------+-----------------------------> '-TERMINAL--+----+--+-ID-3---+-' '-IS-' '-リテラル-2-' >--+-------------------------------+----------------------------> '-+-INDICATOR--+--+-----+--ID-4-' +-INDICATORS-+ +-IS--+ '-INDIC------' '-ARE-' >--+-------------------------------+----------------------------> '-INVALID--+-----+--命令ステートメント-1-' '-KEY-' >--+-----------------------------------+--+----------+--------->< '-NOT INVALID--+-----+--命令ステートメント-2-' '-END-READ-' '-KEY-'
形式 5b は、サブファイル・レコードである形式をランダム・アクセス・モードで読み取る場合に使用します。 INVALID KEY 句は、サブファイル・レコードにランダムにアクセスする場合にしか使用することができません。 NEXT MODIFIED 句は、サブファイル・レコードにランダムにアクセスする場合には、使用してはなりません。
NEXT MODIFIED 句が指定されておらず、RELATIVE KEY データ項目にサブファイル内のレコードの相対レコード番号以外の値が入っている場合には、INVALID KEY 条件が発生し、READ ステートメントの実行は失敗します。
NEXT MODIFIED 句を指定した場合、使用可能になるレコードは、サブファイル内の変更された (変更データ・タグがオンになっている) 最初のレコードです。
RELATIVE KEY データ項目の値は、プログラムにとって使用可能となったレコードの相対レコード番号を反映するために更新されます。
NEXT MODIFIED が指定されており、サブファイル内にユーザーによって変更されたレコード (RELATIVE KEY データ項目に入っている相対レコード番号よりも大きい相対レコード番号を持つ) がない場合には、AT END 条件が生じ、 ファイル状況が 12 に設定され、RELATIVE KEY データ項目の値は更新されません。 その後、命令ステートメント-2 または適用可能な USE AFTER ERROR/EXCEPTION プロシージャーが実行されます。
FORMAT 句を指定する場合、リテラル-1、または ID-2 の内容は、該当するプログラム装置に対して活動状態である形式にしなければなりません。 READ ステートメントは、指定された形式のデータ・レコードを読み取ります。
複数形式ファイルの場合、正しい結果を得るために、FORMAT 句を必ず指定しなければなりません。
形式 5a または 5b の READ の場合、複数の装置が獲得されているファイルに対して TERMINAL 句が省略されると、 デフォルトのプログラム装置に関連付けられているサブファイルからレコードが読み取られます。
INDICATORS 句について詳しくは、「IBM Rational Development Studio for i: ILE COBOL プログラマーの手引き」の『トランザクション・ファイルでの標識の使用』を参照してください。
ID-4 は、OCCURS 文節なしで指定された基本ブール・データ項目か、または基本データ・ブールの項目が従属しているグループ項目でなければなりません。
NEXT MODIFIED 句が指定されておらず、ファイル名について適用可能な USE プロシージャーがない場合には、INVALID KEY 句を指定しなければなりません。
無効キー条件が発生した場合に生じる事柄の詳細は INVALID KEY 条件を参照してください。
NEXT MODIFIED 句が使用されており、ファイル名について適用可能な USE プロシージャーが指定されていない場合には、AT END 句を指定しなければなりません。 ファイルに対して AT END 句と USE プロシージャーの両方が指定されていて、AT END 条件が生じた場合、制御権は AT END 命令ステートメントに移動され、USE プロシージャーは実行されません。
詳細については 範囲区切りステートメントを参照してください。