付録D. SRPI 戻りコード

この付録では、SRPI 環境でのエラー処理について説明します。 タイプ 0、1、2、および 3 の戻りコードおよびその定義が 記載されています。 また、例外クラス定義、コード値、およびオブジェクト値も記載されています。 サーバー戻りコードについても説明します。

エラー処理

どの層で問題が起こっても、SRPI 環境ではサービス要求が正常に実行されません。 SRPI は、アプリケーションをトランスポート層のエラーから できる限り切り離します。 サーバー処理内部のエラーは、アプリケーションで処理します。 その他のエラーは SRPI に原因があり、原因に応じた対応が行われます。

トランスポート層エラー

SRPI は、トランスポート層エラーからのリカバリーを試みます。 リカバリーが不可能な場合、SRPI は、トランスポート層の障害を示す 戻りコードをリクエスターに返します。 この種の障害は、プログラマーがトランスポート機構の問題判別手順を使用して 処理しなければなりません。

アプリケーション・エラー

SRPI は、要求をサーバーにルーティングし、応答をリクエスターに返す 役割を果たします。 リクエスターおよびサーバーは、サーバーで起こるエラー (異常終了以外) の 処理を行います。 サーバーが異常終了した場合は、SRPI は異常終了を通知 する SRPI 戻りコードをリクエスターに返します。

サーバーの戻りコードは、VM または MVS™ の下で 稼働する IBM® ホスト・コンピューターのサーバーによって設定されます。サーバーの戻りコードの値および意味は、 リクエスターまたはサーバーによって異なります。

SEND_REQUEST 処理エラー

SEND_REQUEST 関数の処理において 、SRPI 戻りコードには数多くのエラーが指定されます。そうしたエラーには、以下のものがあります。

この他に、SRPI 内部エラーを示すシステム・エラー・コードがあります。

SRPI 戻りコードのタイプ

SRPI 戻りコードには、タイプ 0、1、2、3 があります。

タイプ 0
SEND_REQUEST 関数が正常終了したことを示します。
タイプ 1
SRPI ルーターによって検出され、 要求の処理が行われなかったエラー原因を示します。
タイプ 2
SRPI ルーターによって検出され、確認交換単位によって リモート・コンピューターに報告されたエラーを示します。
タイプ 3
リモート・コンピューターによって検出され、確認交換単位 によって SRPI ルーターに報告されたエラーを示します。

戻りコードの値は、ワード反転し、各ワード内ではバイト反転します。 例えば、SRPI 戻りコード X'0100 0402' は、CPRB メモリー には X'0204 0001' と保管されます。

タイプ 0 戻りコードの定義

タイプ 0 の戻りコード (定数戻りコード UERERROK) は 、X'0000 0000' の形式をとります。 この戻りコードの値は、SRPI 関数が正常終了したことを示します。

タイプ 1 戻りコードの定義

タイプ 1 の戻りコードは、X'0100 nnnn' の形式をとります。

nnnn バイトは、検出された特定のエラーを 示す 16 進値です。

戻りコードの定義および説明を、表 44 に 示します。

表 44. タイプ 1 戻りコードの定義および説明
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 以下のいずれかの条件に該当する。
  • 要求パラメーターのアドレスが無効である。
  • 要求パラメーターの長さが、要求パラメーター・バッファーの 終わりを超えている。
  • 要求パラメーターのアドレスが 0 であるのに、 要求パラメーターの長さが 0 でない。
X'0100 060E' UERERRT1QDAD 以下のいずれかの条件に該当する。
  • 要求データのアドレスが無効である。
  • 要求データの長さが、要求データ・バッファーの終わりを超えている。
  • 要求データのアドレスが 0 であるのに、要求データの長さが 0 でない。
X'0100 0610' UERERRT1RPAD 以下のいずれかの条件に該当する。
  • 応答パラメーター・バッファーのアドレスが無効である。
  • 応答パラメーター・バッファーの長さが、 応答パラメーター・バッファーの終わりを超えている。
  • 応答パラメーター・バッファーのアドレスが 0 であるのに、 応答パラメーターの長さが 0 でない。
X'0100 0612' UERERRT1RDAD 以下のいずれかの条件に該当する。
  • 応答データ・バッファーのアドレスが無効である。
  • 応答データ・バッファーの長さが、 応答データ・バッファーの終わりを超えている。
  • 応答データ・バッファーのアドレスが 0 であるのに、 応答データの長さが 0 でない。
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 戻りコードの定義

タイプ 2 の戻りコードは、X'02xx yyzz' の形式をとります。

特定のエラーを示す 3 バイトは、 以下の確認交換単位の例外条件から構成されます。

注:
定数は、提供されていません。

タイプ 3 戻りコードの定義

タイプ 3 の戻りコードは、X'03xx yyzz' の形式をとります。

特定のエラーを示す 3 バイトは、 以下の確認交換単位の例外条件から構成されます。

戻りコードの定義および説明を、表 45 に 示します。

表 45. タイプ 3 戻りコードの定義および説明
16 進数戻りコード 定数戻りコード  説明
X'0304 1D00' UERERRT3NORES 要求を処理するために、ホストの SRPI ルーターに必要なリソースが使用できない。 これは、一時的な状態の場合がある。
X'0304 1E00' UERERRT3NOSER サーバーがホストで不明。
X'0304 1F00' UERERRT3UNSER ホストでサーバーを使用できない。
X'0304 2200' UERERRT3TERMS サーバーは正常終了したが、応答を送信していない。
X'0304 2300' UERERRT3ABNDS サーバーは異常終了し、応答を送信していない。

タイプ 2 およびタイプ 3 のクラス定義

例外クラスには、構文例外クラス、セマンティック例外クラス、 および処理例外クラスがあります。

例外クラスの定義を表 46 に示します。

表 46. タイプ 2 およびタイプ 3 のクラス定義
定義
X'00'X'01' 予約済み
X'02' 構文
X'03' 構文
X'04' 処理
X'05'X'FF' 予約済み

タイプ 2 およびタイプ 3 の例外コードの値

例外コードは特定のエラー条件を定義するものであり、各エラーごとに必要です。 例外コード値を表 47 に示します。

表 47. タイプ 2 およびタイプ 3 の例外コードの値
定義
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' オペランドが複数回現れる
注:
この表にない例外コード値は、すべて予約済みです。

タイプ 2 およびタイプ 3 の例外オブジェクトの値

例外オブジェクトは、不正な伝送単位オブジェクトを定義します。 例外オブジェクトは、構文エラーで必須です。 例外オブジェクトの値を表 48 に示します。

表 48. タイプ 2 およびタイプ 3 の例外オブジェクトの値
定義
X'00' 指定なし
X'01' 接頭部
X'07' コマンド・オペランド
X'08' コマンド・サブフィールド
X'1C' パラメーター・オペランド
X'1D' データ・オペランド
X'13' 接尾部
注:
この表にない例外オブジェクトの値は、すべて予約済みです。

サーバー戻りコード

サーバー戻りコードは、サーバー・プログラムが指定する ダブルワード (4 バイト) の戻りコードです。サーバー戻りコードは、 リクエスター・プログラムに返されます。 戻り状況の内容および意味は、リクエスターまたはサーバーによって定義されます。 サーバーの戻りコードの詳細は、ホスト担当者に問い合わせるか、 または以下の資料を参照してください。