この付録では、SRPI 環境でのエラー処理について説明します。 タイプ 0、1、2、および 3 の戻りコードおよびその定義が 記載されています。 また、例外クラス定義、コード値、およびオブジェクト値も記載されています。 サーバー戻りコードについても説明します。
どの層で問題が起こっても、SRPI 環境ではサービス要求が正常に実行されません。 SRPI は、アプリケーションをトランスポート層のエラーから できる限り切り離します。 サーバー処理内部のエラーは、アプリケーションで処理します。 その他のエラーは SRPI に原因があり、原因に応じた対応が行われます。
SRPI は、トランスポート層エラーからのリカバリーを試みます。 リカバリーが不可能な場合、SRPI は、トランスポート層の障害を示す 戻りコードをリクエスターに返します。 この種の障害は、プログラマーがトランスポート機構の問題判別手順を使用して 処理しなければなりません。
SRPI は、要求をサーバーにルーティングし、応答をリクエスターに返す 役割を果たします。 リクエスターおよびサーバーは、サーバーで起こるエラー (異常終了以外) の 処理を行います。 サーバーが異常終了した場合は、SRPI は異常終了を通知 する SRPI 戻りコードをリクエスターに返します。
サーバーの戻りコードは、VM または MVS™ の下で 稼働する IBM® ホスト・コンピューターのサーバーによって設定されます。サーバーの戻りコードの値および意味は、 リクエスターまたはサーバーによって異なります。
SEND_REQUEST 関数の処理において 、SRPI 戻りコードには数多くのエラーが指定されます。そうしたエラーには、以下のものがあります。
この他に、SRPI 内部エラーを示すシステム・エラー・コードがあります。
SRPI 戻りコードには、タイプ 0、1、2、3 があります。
戻りコードの値は、ワード反転し、各ワード内ではバイト反転します。 例えば、SRPI 戻りコード X'0100 0402' は、CPRB メモリー には X'0204 0001' と保管されます。
タイプ 0 の戻りコード (定数戻りコード UERERROK) は 、X'0000 0000' の形式をとります。 この戻りコードの値は、SRPI 関数が正常終了したことを示します。
タイプ 1 の戻りコードは、X'0100 nnnn' の形式をとります。
nnnn バイトは、検出された特定のエラーを 示す 16 進値です。
戻りコードの定義および説明を、表 44 に 示します。
| 16 進数戻りコード | 定数戻りコード | 説明 |
|---|---|---|
| X'0100 0402' | UERERRT1START | ホストの ECF プログラムが開始されていないため、SRPI が開始されない。 |
| X'0100 0404' | UERERRT1LOAD | SRPI ルーターがロードされていない。 |
| X'0100 0408' | UERERRT1BUSY | SRPI ルーターが使用中。 この戻りコードは、パーソナル・コミュニケーションズ・プログラムでは使用されない。 |
| X'0100 040A' | UERERRT1VER | SRPI ルーターに渡された CPRB のバージョン ID が、SRPI ルーターの常駐部で サポートされていない。 バージョン ID は、C のインターフェース機能によって、 自動的に CPRB にセットされる。 |
| X'0100 040C' | UERERRT1EMU | パーソナル・コミュニケーションズがロードされていない。 |
| X'0100 040E' | UERERRT1ROUT | CPRB 内に指定したサーバー名が、 サーバー・ルーティング・テーブルで定義されていない。 デフォルト・ルーティングが構成されていないので、SRPI が要求を ルーティングできない。 有効なサーバー名を使用するか、または構成を更新して該当サーバー名を 組み込んでください。 |
| X'0100 0410' | UERERRT1COMMR | 通信リソースが使用できない。 |
| X'0100 0412' | UERERRT1REST | 3270 エミュレーションが前回の使用以降に再び開始された。 アプリケーションを終了し、再び開始してから SRPI を使用してください。 |
| X'0100 0414' | UERERRT1INUSE | ファイル転送で使用中の通信セッションに、要求がルーティングされている。 |
| X'0100 0602' | UERERRT1QPLEN | 要求パラメーターの長さが最大値を超えている。 許容最大値は 32763 である。 |
| X'0100 0604' | UERERRT1RPLEN | 応答パラメーター・バッファーの長さが最大値を超えている。 許容最大値は 32763 である。 |
| X'0100 0606' | UERERRT1VERB | verb タイプが無効である。または、サポートされていない。 SRPI ルーターに渡された CPRB 内の verb タイプは識別されない。 verb タイプは、C のインターフェース機能によって自動的に CPRB にセットされる。 |
| X'0100 0608' | UERERRT1SERV | サーバー名が無効。 ホストに送信する、サーバー名に使用されている 文字 (1 つ以上) が EBCDIC に変換できない。 |
| X'0100 060C' | UERERRT1QPAD | 以下のいずれかの条件に該当する。
|
| X'0100 060E' | UERERRT1QDAD | 以下のいずれかの条件に該当する。
|
| X'0100 0610' | UERERRT1RPAD | 以下のいずれかの条件に該当する。
|
| X'0100 0612' | UERERRT1RDAD | 以下のいずれかの条件に該当する。
|
| X'0100 0616' | UERERRT1TOPV | TopView 環境がサポートされていない。 この戻りコードは、パーソナル・コミュニケーションズ・プログラムでは使用されない。 |
| X'0100 0622' | UERERRT1INV3270 d | 3270 画面更新の通知標識が無効である。 3270 画面更新の通知標識は、CPRB 内で X'00' (ユーザーに 3270 画面 更新を通知する) または X'FF' (ユーザーに 3270 画面更新を通知 しない) に設定しなければならない。 |
| X'0100 0624' | UERERRT1INVCPRB | CPRB のセグメントが無効。 CPRB のアドレスが、切り捨てられた CPRB 構造体を指している。 CPRB 構造全体が十分入る大きさの読み取り/書き込みデータ・セグメントを 使用してください。 |
| X'0100 0802' | UERERRT1CNCL | リモート・コンピューターが、要求の処理中に通信セッションを取り消した。 エミュレーター・セッションで F3 キーを押してリモート・プログラムを停止 すると、この状態になる。 ただし、この値は、ユーザーがセッションを取り消した場合以外にも使用される。 要求の処理中にセッションが取り消されたという通知を SRPI が ホストから受け取ると、常にこの値が使用される。 |
| X'0100 0C00' | UERERRT1CONV | システム・エラーが発生しました。以下のいずれかの理由により、ホストとの会話が終了した。
|
| X'0100 0C02' | UERERRT1ISE | SRPI ルーターの内部ソフトウェア・エラーのためシステム・エラーが発生した。 |
| X'0100 0C04' | UERERRT1PROT | システム・エラーが発生しました。これは、プロトコル違反エラーでる。あるいは、SRPI ルーターまたは ホストのシステム・ソフトウェア・エラーである。 |
| X'0100 0C06' | UERERRT1SYIN | システム・エラーが発生しました。システムの不整合により、エラーが発生した。 これは、SRPI ルーターのシステム・ソフトウェア・エラーである。 |
タイプ 2 の戻りコードは、X'02xx yyzz' の形式をとります。
特定のエラーを示す 3 バイトは、 以下の確認交換単位の例外条件から構成されます。
タイプ 3 の戻りコードは、X'03xx yyzz' の形式をとります。
特定のエラーを示す 3 バイトは、 以下の確認交換単位の例外条件から構成されます。
戻りコードの定義および説明を、表 45 に 示します。
| 16 進数戻りコード | 定数戻りコード | 説明 |
|---|---|---|
| X'0304 1D00' | UERERRT3NORES | 要求を処理するために、ホストの SRPI ルーターに必要なリソースが使用できない。 これは、一時的な状態の場合がある。 |
| X'0304 1E00' | UERERRT3NOSER | サーバーがホストで不明。 |
| X'0304 1F00' | UERERRT3UNSER | ホストでサーバーを使用できない。 |
| X'0304 2200' | UERERRT3TERMS | サーバーは正常終了したが、応答を送信していない。 |
| X'0304 2300' | UERERRT3ABNDS | サーバーは異常終了し、応答を送信していない。 |
例外クラスには、構文例外クラス、セマンティック例外クラス、 および処理例外クラスがあります。
例外クラスの定義を表 46 に示します。
| 値 | 定義 |
|---|---|
| X'00' ~ X'01' | 予約済み |
| X'02' | 構文 |
| X'03' | 構文 |
| X'04' | 処理 |
| X'05' ~ X'FF' | 予約済み |
例外コードは特定のエラー条件を定義するものであり、各エラーごとに必要です。 例外コード値を表 47 に示します。
| 値 | 定義 |
|---|---|
| X'00' | 予約済み |
| X'08' | セグメンテーション |
| X'0C' | 無効なオペランド ID |
| X'0F' | 無効な長さ |
| X'16' | 無効なサブフィールドのタイプ |
| X'18' | 無効なサブフィールドの値 |
| X'19' | 必要なオペランドがない |
| X'1A' | 必要なサブフィールドがない |
| X'1B' | 相関エラー |
| X'1C' | データが 許容最大長を超えた |
| X'1D' | リソースが使用できない |
| X'1E' | サーバーが不明 |
| X'1F' | サーバーが使用できない |
| X'20' | パラメーター長 |
| X'21' | データ長 |
| X'22' | 正常終了 |
| X'23' | 異常終了 (サーバー異常終了) |
| X'24' | サブフィールドが複数回現れる |
| X'25' | オペランドが複数回現れる |
例外オブジェクトは、不正な伝送単位オブジェクトを定義します。 例外オブジェクトは、構文エラーで必須です。 例外オブジェクトの値を表 48 に示します。
| 値 | 定義 |
|---|---|
| X'00' | 指定なし |
| X'01' | 接頭部 |
| X'07' | コマンド・オペランド |
| X'08' | コマンド・サブフィールド |
| X'1C' | パラメーター・オペランド |
| X'1D' | データ・オペランド |
| X'13' | 接尾部 |
サーバー戻りコードは、サーバー・プログラムが指定する ダブルワード (4 バイト) の戻りコードです。サーバー戻りコードは、 リクエスター・プログラムに返されます。 戻り状況の内容および意味は、リクエスターまたはサーバーによって定義されます。 サーバーの戻りコードの詳細は、ホスト担当者に問い合わせるか、 または以下の資料を参照してください。