OPEN (処理のためのファイルのオープン)

自由形式構文 OPEN{(E) } ファイル名
コード 演算項目 1 演算項目 2 結果フィールド 標識
OPEN (E)   ファイル名   _ ER _

明示的な OPEN 命令では、ファイル名 オペランドに指定されたファイルがオープンされます。 指定されたファイルを 1 次ファイル、2 次ファイル、またはテーブル・ファイルにすることはできません。

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

OPEN 命令を明示的に使用して、ファイル名 オペランドで指定されたファイルを、モジュールまたはサブプロシージャー内で初めてオープンするには、ファイル仕様書で USROPN キーワードを指定してください。 (USROPN キーワードを使用する時の制約事項について は、ファイル仕様書を参照してください。)

モジュールまたはサブプロシージャー中でファイルがオープンされて、後で CLOSE 命令によってクローズされた場合には、プログラマーは OPEN 命令でこのファイルを再度オープンすることができるため、ファイル仕様書に USROPN キーワードを指定する必要はありません。 ファイル仕様書に USROPN キーワードが指定されていない時は、モジュールの初期化時か (グローバル・ファイルの場合)、サブプロシージャーの初期化時に (ローカル・ファイルの場合)、ファイルがオープンされます。 すでにオープンされているファ イルに OPEN 命令を指定するとエラーが起こります。

プログラム中での同じファイルに対する複数の OPEN 命令は、OPEN 命令が 出された時にそのファイルがクローズされていれば有効です。

DEVID キーワードを (ファイル仕様書に) 指定してファイルをオープンすると、 DEVID キーワードにパラメーターとして指定されたフィールド名はブランクに 設定されます。 ファイル仕様書の DEVID キーワードの説明を参照してください。

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

図 1. CLOSE 命令を伴う OPEN 命令
*...1....+....2....+....3....+....4....+....5....+....6....+....7....+....
FFilename++IPEASFRlen+LKlen+AIDevice+.Keywords++++++++++++++++++++++++++++
F
FEXCEPTN   O    E             DISK    USROPN
FFILEX     F    E             DISK
F
*...1....+....2....+....3....+....4....+....5....+....6....+....7....+....
CL0N01Factor1+++++++Opcode(E)+Factor2+++++++Result++++++++Len++D+HiLoEq....
CL0N01Factor1+++++++Opcode(E)+Extended-factor2+++++++++++++++++++++++++++..
 *
 *  The explicit OPEN operation opens the EXCEPTN file for
 *  processing if indicator 97 is on and indicator 98 is off.
 *  Note that the EXCEPTN file on the file description
 *  specifications has the USROPN keyword specified.
 *  %ERROR is set to return '1' if the OPEN operation fails.
 *
C                   IF        *in97 and not *in98
C                   OPEN(E)   EXCEPTN
C                   IF        not %ERROR
C                   WRITE     ERREC
C                   ENDIF
C                   ENDIF
 *
 *  FILEX is opened at program initialization.  The explicit
 *  CLOSE operation closes FILEX before control is passed to RTNX.
 *  RTNX or another program can open and use FILEX.  Upon return,
 *  the OPEN operation reopens the file.  Because the USROPN
 *  keyword is not specified for FILEX, the file is opened at
 *  program initialization
 *
C                   CLOSE     FILEX
C                   CALL      'RTNX'
C                   OPEN      FILEX