ファイル状況キーの更新は、ファイルに対する個々の入出力操作の後で、2 桁のファイル状況キーに値を入れることによって行われます。 通常は、先頭桁がゼロの場合は操作が成功したことを示し、2 桁ともゼロの場合は「異常が報告されなかった」ことを意味します。
FILE-CONTROL 項目を使用することにより、ILE COBOL プログラムで使用する各ファイルの編成とアクセス方式を指定しなければなりません。 また、この項目には FILE STATUS 文節もコーディングできます。
FILE STATUS 文節は、入出力操作の結果のコピーを入れるための 1 つまたは 2 つのデータ項目 (WORKING-STORAGE セクションにコーディングされているもの) を指定します。 1 つ目の項目のコピーは外部ファイル状況と呼ばれます。 TRANSACTION ファイルを使用する場合は、もう 1 つの結果レコードがあります。これは外部戻りコードと呼ばれ、 外部メジャー戻りコードと外部マイナー戻りコードとで構成されます。
ILE COBOL は、これら 2 つのデータ項目に対応する情報を ILE COBOL ファイル・フィールド記述子 (FFD) に保持します。 ILE COBOL のこれら 2 つのデータ項目のコピーは、それぞれ内部ファイル状況と内部戻りコードと呼ばれます。 この章では、ファイル状況、および (メジャー / マイナー) 戻りコード は 、特に指定がない限り ILE COBOL のコピーのことです。
入出力ステートメントの処理中に、次の 3 つの方法のどれかでファイル状況を更新できます。 ファイル状況の内容によって、エラー処理プロシージャーを実行するかどうかが判別されます。
エラー処理プロシージャーは、入出力操作が失敗した後に制御を握ります。 これはゼロ以外のファイル状況で示されます。 これらのプロシージャーが実行される前に、ファイル状況は外部ファイル状況にコピーされます。
ILE COBOL は、ファイル制御ブロック中の変数の内容を調べます。 内容が予期したものと異なる場合は、ゼロ以外のファイル状況が設定されます。 このようにして設定されるほとんどのファイル状況は、ILE COBOL ファイル・フィールド記述子 (FFD) およびシステム・ユーザー・ファイル制御ブロック (UFCB) の検査結果です。
ILE COBOL は、システムからのメジャーおよびマイナー戻りコードを調べます。 メジャー戻りコードがゼロでない場合、 メジャー戻りコードとマイナー戻りコードで構成される戻りコードがファイル状況に変換されます。 メジャー戻りコードがゼロの場合、 ファイル状況は A 方式または C 方式で設定されている可能性があります。
サブファイルの READ、WRITE、および REWRITE 操作の場合は、A 方式と C 方式だけが適用されます。
戻りコードのリストと関連するファイル状況については、「WebSphere Development Studio: ILE COBOL 解説書」の『ファイル構造サポートの要約および状況キー値』を参照してください。
ILE COBOL がデータ管理機能を呼び出して入出力操作を実行すると、システムからメッセージが送られます。 続いて、ILE COBOL がそのメッセージをモニターし、それに応じてファイル状況を設定します。 各 ILE COBOL 入出力操作は、サービス・プログラムの中の、ILE COBOL コンパイラーによって提供されるルーチンで処理されます。 次にこのルーチンは、データ管理機能を呼び出して、入出力操作を実行します。 ほとんどの場合、サービス・プログラム中のルーチンに対する呼び出しの前後で単一のメッセージ・モニターが有効にされます。
各入出力操作のメッセージ・モニターは、 典型的な入出力例外を処理し、「メッセージ・モニターは、受け取った CPF メッセージに基づいてファイル状況を設定します」 という意味の CPF メッセージを出します。 メッセージ・モニターが処理するメッセージのリストについては、「WebSphere Development Studio: ILE COBOL 解説書」の『ファイル構造サポートの要約および状況キー値』を参照してください。
この方法でメッセージ・モニターを使用すると、 プログラム中のその他の入出力操作タイプには関係なく、入出力操作の種類ごとに一貫したファイル状況が設定されます。 メッセージ・モニターの詳細については 異常事態処理ルーチンによるメッセージ処理を参照してください。
HOW FILE STATUS IS SET 0100 .---. '001' '---' - Start the I/O operation. - Reset the internal file status. - Method A: Check the contents of the variables in the file control blocks. (Check, for example, that the file has been opened properly.) ARE THE VARIABLES IN THE FILE CONTROL BLOCKS SET AS EXPECTED? YES NO ' ' ' .'--. ' '002' ' '---' ' - Set internal file status to indicate that an error has occurred. ' - Continue at -- Step 'INT2EXT' unknown -- .'--. '003' '---' - Call on data management to perform the I/O operation. DOES DATA MANAGEMENT RETURN AN EXCEPTION? YES NO ' ' ' .'--. ' '004' ' '---' ' - Method A: Check the contents of the variables in the file control blocks. ' ARE THE VARIABLES IN THE FILE CONTROL BLOCKS SET AS EXPECTED? ' YES NO ' ' ' ' ' .'--. ' ' '005' ' ' '---' ' ' - Set internal file status to indicate that an error has occurred. ' ' - Continue at -- Step 'INT2EXT' unknown -- ' ' ' .'--. ' '006' ' '---' ' - Move internal file status to external file status (specified in file ' status clause). ' - Based on internal file status, run the error handling code. ' ---------------------------------------------------------------------------- .'--. '007' '---' IS THE FILE A TRANSACTION FILE? YES NO ' ' ' .'--. ' '008' ' '---' ' - Method C: Set the internal file status according to the CPF message sent ' by data management. ' - Continue at Step 004 .'--. '009' '---' ARE MAJOR AND MINOR RETURN CODES AVAILABLE FROM THE SYSTEM? YES NO ' ' ' .'--. ' '010' ' '---' ' - Method C: Set the internal file status according to the CPF message sent ' by data management. ' - Continue at Step 004 .'--. '011' '---' - Method B: Set the internal file status based on the major and minor return codes available from the system. - Continue at Step 004 --------------------------------------------------------------------------------
プログラム中に TRANSACTION ファイルを指定すると、SELECT ステートメントの FILE STATUS 文節に、 外部ファイル状況と、外部 (メジャーおよびマイナー) 戻りコードの 2 つのデータ名を含めることができます。 ファイル状況キーによるエラーのタイプの判別に示されているように、ファイル状況は、3 つの方法のいずれかで設定できます。 しかし、トランザクション入出力によりデータ管理が呼び出された後は、システムによって戻りコードが設定されます。 その結果、システム・メッセージが出されるほとんどのエラー状態にも、戻りコードが対応しています。
戻りコードはファイル状況値と似ています。 すなわち、システムから送られる CPF メッセージは、ILE COBOL 実行時例外ハンドラーによってグループにまとめられ、CPF メッセージの各グループを使用して 1 つまたは複数のファイル状況が設定されます。 同様に、各メジャー戻りコードも、CPF メッセージのグループによって生成されます。 (マイナー戻りコードは必ずしも同じではありません。) ファイル状況と戻りコードの主な違いは、CPF メッセージのグループ化に関する違いです。
ILE COBOL は TRANSACTION ファイルの戻りコードだけを設定しますが、他のタイプのファイル (印刷出力ファイルなど) も戻りコードは設定されます。 それらのファイルの戻りコードには、I-O-FEEDBACK 操作から ACCEPT を使用してアクセスします。
異常事態処理ルーチンは、システムか他の ILE プロシージャーまたはプログラム・オブジェクトから送られるメッセージを、ILE プロシージャーまたはプログラム・オブジェクトで処理するための手段を提供します。 1 つの異常事態処理ルーチンで 1 つまたは複数のメッセージを処理できます。
異常事態処理ルーチンはある点で USE プロシージャーに似ています。 USE プロシージャーが入出力エラーに応じて行うアクションを指定する方法と同様の方法で、 異常事態処理ルーチンはマシン・インターフェース (MI) 命令の処理中にエラーが発生した際に行うアクションを指定します。 MI 命令エラーはシステム・メッセージによって通知され、各 ILE COBOL ステートメントは 1 つまたは複数の MI 命令で構成されます。
異常事態処理ルーチンには次の 2 つのタイプがあります。
(C) Copyright IBM Corporation 1992, 2006. All Rights Reserved.