ASYNC のヒントとテクニック

ここでは、非同期処理および応答の使用に関する ASYNC のヒントとテクニックについて説明します。ここでは、開発作業の効率を高め、非同期処理を最大限に利用するためのヒントと提案について説明します。
gen85
1515907
Tips_for_Using_ASYNC
Limitations_of_ASYNC
Client_to_Server_Flows_ASYNC_Processing
Server_Server_ASYNC_Techniques
ASYNC使用時のヒント
  • GET ASYNC RESPONSE より CHECK ASYNC RESPONSE の方が、処理時間の面で低コストのコマンドです。
  • 未処理要求と処理済み要求は、取得されるか明示的に無視されるまで、システム リソースを消費します。
  • アプリケーション設計者が記述した GET ASYNC RESPONSE ステートメントが、関連する USE ASYNC の「イベント ハンドラ」が呼び出される前に処理される場合、そのイベント ハンドラは無効になります。アプリケーション コードは、イベント ハンドラが制御権を受け取る前に、そのイベントをトリガする応答を処理できる条件を処理する必要があります。
  • 4種類のASYNCステートメント(USE ASYNC、GET ASYNC RESPONSE、CHECK ASYNC RESPONSE、IGNORE ASYNC RESPONSE)は、+と- を使って、展開および圧縮できます。または、[画面設定]メニューから[展開]または[圧縮]を選択してください。
  • 4種類のASYNCステートメント(USE ASYNC、GET ASYNC RESPONSE、CHECK ASYNC RESPONSE、IGNORE ASYNC RESPONSE)は、下記の手順で作成、表示、複写、移動、変更、削除できます。
    1. アクションが必要なステートメント部分(たとえばASYNC_REQUESTのIDENTIFIED BYビュー名)を強調表示し、右クリックします。
      ポップアップ・メニューが、そのステートメント部分のすべてのオプションとともに表示されます。
    2. 目的の操作(たとえば[編集]-[変更])を選択し、それに関連するヘルプ・トピックで説明されている手順を実行します。
ASYNC 処理の制約
ASYNC 処理には、以下の制限事項があります。
  • USE ASYNCステートメントを使えるのは、クライアントから、(サーバ・マネージャにパッケージングされている)プロシージャ・ステップにフローする場合だけです。USE ASYNCは、ウィンドウ・クライアントから非ウィンドウ・クライアントへのフローには使えません。対話フローは ASYNC 呼び出しをサポートしていません。
  • サーバ間フローは、ASYNC 呼び出しの NOTIFY EVENT をサポートしていません。
  • CICS 間の ASYNC 呼び出しには MQSeries は必要ありません。IMS は ASYNC 呼び出しをサポートしていません。
  • CICS 非同期フローは、フローの際に z/OS MQSeries を使用する必要があります。CICSをインプリメントすると、CICS相互間のサーバ間フローを効率化する、TS 1.3の新機能を使用できる場合があります。CICS以外の環境へのフローにはMQSeriesを使う必要があります。
  • サーバ・トレース機能は、同じサーバ環境を宛て先とする、同時並行の非同期フローのテストを、サポートしていません。同時並行の非同期フローの宛て先サーバ・プロシージャ・ステップのトレースは、各フロー要求を一意のAEFADに送信することによってのみ実行しえます。
  • NO RESPONSE 非同期要求は、あたかもアプリケーションが応答を無視したかのように、要求側コンポーネントのサポート ランタイムによって処理されます。このタイプの要求は、要求側アプリケーションから見ると、fire-and-forget として処理できます。しかし、サーバー マネージャとサポート ミドルウェア コンポーネントは、応答がサーバーから転送されることを予想して、動作を続けます。
  • ASYNC処理機能は、特定のミドルウェア・コンポーネント(MQSeriesなど)がすでに提供しているメカニズムを除き、非同期要求にタイムアウト・メカニズムを提供しません。
  • 未処理の非同期要求の取消は許可されていません。
  • ASYNC処理には、特定のミドルウェア・コンポーネント(MQSeriesなど)がすでに提供している機能を除き、要求データまたは応答データの、「常駐待ち行列」機能がありません。
  • 要求側アプリケーション・コンポーネントに、該当する応答が可能であることを通知できるのは、
    Gen
     ウィンドウ・マネージャのみです。
USE ステートメントでのビュー・マッチング
USEステートメント、プロシージャ・ステップのUSEアクション・ステートメント、USE ASYNCアクション・ステートメントでは、アクション・ブロックとプロシージャ・ステップが呼び出されます。これにより、アクション図ツールで、共通のロジックやアルゴリズムを参照できます。
USE、プロシージャ・ステップUSE、またはUSE ASYNCを選択したすると、呼び出される側のアクション・ブロック(またはプロシージャ・ステップ)のビューを、呼び出す側のプロシージャ・ステップ(またはアクション・ブロック)のビューにマッチングするよう要求されます。呼び出す側のプロシージャ ステップ(またはアクション ブロック)から、必要に応じて、インポート ビュー、エクスポート ビュー、ローカル ビュー、エンティティ アクション ビューを、使用される(呼び出される側の)プロシージャ ステップ(またはアクション ブロック)のインポート ビューとエクスポート ビューにマッチングしてください。
ビューのすべてをマッチングしたくない場合には、<none> にマッチングできます。たとえば、呼び出されたアクション ブロックに受け渡す情報がはっきりしていない場合には、USE ステートメントを設定して、呼び出されたアクション図のビューに <none> をマッチングできます。マッチングされたビューは、[変更]コマンドを使って、いつでも変更できます。
この例は、顧客の変更というアクション・ブロックを参照するUSEステートメントです。インポート・ビューとエクスポート・ビューはマッチしています。
-- USE change_customer | WHICH IMPORTS: Entity View import_2 customer TO Entity View import_customer | <none> TO Entity View import department | WHICH EXPORTS: Entity View export_2 customer FROM Entity View export_customer | <none> FROM Entity View department ---
  • 分析では、基本プロセスのプロセス・アクション図をUSEステートメントに使えません。
  • 設計では、プロセス・アクション図をアクション・ブロックとして表示して、USEステートメントに使えます。
  • アクション・ブロックは、プロシージャ・ステップのプロシージャ・アクション図にすることはできません。
  • ビュー・マッチングでは、WHICH IMPORTSとWHICH EXPORTSのリストが作成されます。これにより、データ交換をするビューの互換性が確保されます。
  • WHICH IMPORTSのリスト内のビューは、アクション・ブロックの実行開始前に、アクション・ブロックのインポート・ビューに送られます。
  • WHICH EXPROTSのリスト内のビューは、アクション・ブロックの実行完了後に、アクション・ブロックのエクスポート・ビューに返されます。
ASYNC 処理でのクライアントからサーバへのフロー
以下のクライアントは、非同期処理でのクライアントとサーバの間のフローを実行できます。
  • 生成された
    Gen
    GUI クライアント
  • Gen
     C プロキシを使用した手書きの C アプリケーション
  • Gen
     COM プロキシを使用した COM OLE アプリケーション
  • Gen
    COM プロキシを使用した Web サーバからの Active Server ページ
  • Java プロキシ・クライアント
クライアント間の ASYNC の呼び出しはサポートされていません。
ASYNC 処理でのサーバ間フロー
以下のサーバ マネージャは、非同期処理でのサーバ間フローを実行できます。
  • MQSeries サーバ・マネージャ
  • CICS サーバ・マネージャ