0

たとえば、2 つの画面があるとします。最初はプロンプト画面で、レコード キーなどを要求し、次の画面でレコードに関する情報が表示されます。コントロールを 2 番目の画面に転送したい場合 (1 番目の画面の作業を行った後)、次のように実行できます。

 exec cics
    return(trans-id)
    commarea(ws-commarea)
 end exec.    

ここで、trans-id は 2 番目の画面の ID です。

それでは、cics で既に return() を使用できる場合、xctl などの呼び出し関数を使用する必要があるでしょうか?

4

2 に答える 2

4

XCTL または LINK または動的 CALL を使用すると、処理が 1 つの CICS トランザクションに制限されます。

必要に応じて、commarea を使用してデータを渡し、さまざまなビジネス機能を複数のトランザクションに分散するようにアプリケーションを設計できます。

歴史的に、これは多くの理由で行われませんでした。30 年前、一部の CICS システム プログラマーは、トランザクション ID は限られたリソースであると感じ、アプリケーション設計者に可能な限り最小数のトランザクションで処理を続けるよう奨励しました。

CICS のセキュリティーはトランザクション・レベルで処理されるため、ユーザーは、実行する必要があるビジネス機能を構成するすべてのトランザクションを実行する権限を持っている必要があります。

一時記憶域キューなどのリソースは、多くの場合、トランザクション ID を部分的に使用して名前が付けられ、それらを区別して区別します。

CICS TS バージョン 2 より前 (私が思うに)、それらのトランザクション間で共有されるデータは、commarea (32K) のサイズに制限されていました。サポートされているすべてのバージョンの CICS にチャネルとコンテナーが追加され、非常に大量のデータを渡すことができるようになりました。

私の経験では、コードがすべて 1 つのトランザクション内にある場合は、コーディングが簡単になり、画面操作を伴う擬似会話型トランザクションを維持しやすくなります。トランザクションを疑似会話型または非会話型にしたい場合。これが、XCTL、LINK、または動的 CALL を使用するように設計されたトランザクションを目にする最も重要な理由だと思います。

于 2015-06-09T11:48:05.393 に答える