READC (次の変更レコードの読み取り)

自由形式構文 READC{(E) } レコード名 {データ構造 }
コード 演算項目 1 演算項目 2 結果フィールド 標識
READC (E)   レコード名 データ構造 _ ER EOF

READC 命令は、サブファイルの次の変更済みレコードを取り出すために、 外部記述ワークステーション・ファイルのみで使用することができます。 レコード名 オペランドは必須で、ファイル仕様書の SFILE キーワードによってサブファイルとして定義されたレコード様式の名前でなければなりません (SFILE キーワード については、SFILE(レコード様式:RRN フィールド)を参照してください)。

複数装置ファイルの場合には、データはプログラム装置に対応するサブファ イル・レコードから読み取られます。このプログラム装置は、ファイル仕様書の DEVID キーワードに指定されたフィールドによって識別されます。 そのような 指定がない場合には、データは最後の正常な入力操作で使用されたプログラム 装置から読み取られます。

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

サブファイルにそれ以上変更済みレコードがない時にオンに 設定される標識を 75 から 76 桁目に指定することができます。 この情報 は %EOF 組み込み関数からも入手することができます。この関数は、サブファイルに それ以上変更済みレコードがない場合に '1' を戻します。それ以外の場合には '0' を戻します。

変更の始まりデータ構造 オペランドが指定されている場合、レコードはデータ構造に直接読み込まれます。 データ構造は、EXTNAME(...:*INPUT or *ALL) または LIKEREC(...:*INPUT or *ALL) で定義されているデータ構造にする必要があります。 データ構造の定義方法、およびファイルとデータ 構造の間でどのようにデータが転送されるかについては、ファイル命令を参照してください。変更の終わり

図 1. READC の例
*...1....+....2....+....3....+....4....+....5....+....6....+....7...+....
FFilename++IPEASFRlen+LKlen+AIDevice+.Keywords++++++++++++++++++++++++++++
 * CUSSCR is a WORKSTN file which displays a list of records from
 * the CUSINFO file. SFCUSR is the subfile name.
 *
FCUSINFO   UF   E             DISK
FCUSSCR    CF   E             WORKSTN SFILE(SFCUSR:RRN)
F
CL0N01Factor1+++++++Opcode(E)+Factor2+++++++Result++++++++Len++D+HiLoEq....
 * After the subfile has been loaded with the records from the
 * CUSINFO file. It is written out to the screen using EXFMT with
 * the subfile control record, CTLCUS. If there are any changes in
 * any one of the records listed on the screen, the READC operation
 * will read the changed records one by one in the do while loop.
 * The corresponding record in the CUSINFO file will be located
 * with the CHAIN operation and will be updated with the changed
 * field.
C                   :
C                   EXFMT     CTLCUS
C                   :
 * SCUSNO, SCUSNAM, SCUSADR, and SCUSTEL are fields defined in the
 * subfile. CUSNAM, CUSADR, and CUSTEL are fields defined in a
 * record, CUSREC which is defined in the file CUSINFO.
 *
C                   READC     SFCUSR
C                   DOW       %EOF = *OFF
C     SCUSNO        CHAIN (E) CUSINFO                            
 * Update the record only if the record is found in the file.
C                   :
C                   IF        NOT %ERROR
C                   EVAL      CUSNAM = SCUSNAM
C                   EVAL      CUSADR = SCUSADR
C                   EVAL      CUSTEL = SCUSTEL
C                   UPDATE    CUSREC
C                   ENDIF
C                   READC (E) SFCUSR
C                   ENDDO