OPENPATHステートメント
構文
OPENPATH pathname [TO file.variable] [ON ERROR statements]
{THEN statements [ELSE statements] | ELSE statements}
説明
OPENPATH文はOPEN文と似ているが、ファイルのパス名を指定する点が異なる。 このファイルはVOCファイルを参照せずに開かれる。 ファイルは、ハッシュ化されたInfoSphere® DataStage®ファイルまたはディレクトリでなければなりません(タイプ1および19)。
pathnameは、オープンするファイルの相対パス名または絶対パス名を指定する。 ファイルが存在すれば、それがオープンされ、THEN文が実行され、ELSE文は無視される。 pathnameがNULL値と評価された場合、OPENPATH文は失敗し、ランタイム・エラー・メッセージとともにプログラムが終了する。
ファイルにアクセスできないか存在しない場合、ELSE文が実行され、THEN文は無視される。
TO句を使ってファイルをfile.variableに代入する。 そのファイルの読み取り、書き込み、削除、クリアに使用されるすべての文は、割り当てられたfile.variable名でそのファイルを参照しなければならない。 ファイルをfile.variableに代入しない場合、内部デフォルトのファイル変数が使用される。 file.variableを指定しないファイル参照は、最近開いたデフォルト・ファイルにアクセスする。 デフォルトのファイル変数にオープンされたファイルは、システム変数@STDFILに割り当てられる。
ON ERROR句
OPENPATH ステートメントでは、ON ERROR 句はオプションである。 その構文はELSE句と同じである。 ON ERROR句は、OPENPATH文の処理中に致命的なエラーが発生した場合のプログラム終了の代替手段を指定することができる。
致命的なエラーが発生し、ON ERROR句が指定されなかったか、無視された場合(アクティブなトランザクションの場合など)、次のようになる:
- エラーメッセージが表示される。
- 現在の実行環境内で開始されたコミットされていないトランザクションはすべてロールバックされる。
- 現在のプログラムが終了する。
- 処理は前の実行環境の次のステートメントで続行されるか、プログラムはコマンドプロンプトに戻る。
以下のいずれかに該当する場合、致命的なエラーが発生する可能性がある:
- ファイルが開かれていない。
- file.variableはヌル値である。
- 分散ファイルには、アクセスできないパートファイルが含まれている。
ON ERROR句が使われている場合、STATUS関数が返す値はエラー番号である。
ステータス関数
OPENPATH文の後にSTATUS関数を使用すると、ファイルオープンに失敗した原因を見つけることができる(つまり、ELSE句が使用されているOPENPATH文の場合)。 OPENPATH文が失敗した場合、以下の値が返されることがある:
- VALUE
- 説明
- -1
- VOCファイルにファイル名が見つからない。
- -21
- ファイル名またはファイルが NULL。
- -3
- ディレクトリ内のInfoSphere DataStageファイルにアクセスする権限がない場合に発生するオペレーティング・システムのアクセス・エラー。 例えば、タイプ1やタイプ30のファイルにアクセスしようとしたときに起こるかもしれない。
- -41
- オペレーティングシステムのパーミッションがない場合、またはタイプ30ファイルのDATA.30が見つからない場合にアクセスエラーが発生します。
- -5
- オペレーティングシステムによって検出された読み取りエラー。
- -6
- ファイルヘッダをロックできません。
- -7
- 無効なファイルリビジョン、またはプラットフォームのバイト順序が間違っている。
- -81
- パートファイル情報が無効です。
- -91
- 分散ファイルのタイプ 30 のファイル情報が無効です。
- -10
- ウォームスタート・リカバリ中にファイルのロール・フォワード中に問題が発生しました。 したがって、このファイルは "一貫性がない "とマークされている
- -11
- ファイルはビューなので、BASICプログラムでは開けません。
- -12
- テーブルを開く SQL 権限がありません。
- -131
- インデックスの問題。
- -14
- NFSファイルを開けません。
1様々な理由で起こりうる一般的なエラー。
例
次の例では、ファイルSUN.MEMBERを開きます。 パス名はファイルを指定する。
OPENPATH '/user/members/SUN.MEMBER' ELSE ABORT