5.1.4 アプリケーションプログラム分割時の注意

日立COBOLでは,明示的にCALL文でオープンを要求する場合を除き,一つのコンパイル単位で最初のSEND文またはTRANSCEIVE文が発行されると画面がオープンされます。そのため,1画面が1実行可能ファイルのような構成にすると,画面ごとにオープンをすることになります。この場合,オープン・クローズ,SEND文またはTRANSCEIVE文を発行する実行可能ファイル,ビジネス処理をする実行可能ファイルをそれぞれ分けた方が実行性能が高くなります。ビジネス処理をする実行可能ファイルは,共用ライブラリでも代用できます。実行可能ファイルにするか共用ライブラリにするかは,処理の形態によって次のように使い分けます。

また,複数のコンパイル単位のものを合わせて一つの実行可能ファイルにするときは,各コンパイル単位でオープンを発行しないようにするため,日立COBOLの実行支援の環境変数で,「CBLTERMSHAR=YES」を指定します。なお,「CBLTERMSHAR=YES」はSEND/RECEIVE/TRANSCEIVEインタフェースのときだけ有効であり,CALLインタフェースでは無効になります。

CALLインタフェースの場合,または「CBLTERMSHAR」をサポートしていないバージョンの日立COBOLを使用している場合で,AP間のオープン引き継ぎをするときは,ユーザがXMAP3 Serverインタフェースエリアの情報を引き継ぐようなコーディングをする必要があります。サンプルコーディングとしてAPパターンのGENDSP02およびGENDSP03が利用できます。

<この項の構成>
(1) メインの実行可能ファイルから別の実行可能ファイルを呼び出す場合
(2) 新しい画面を表示するとき前の画面を消さないで表示しておくケース
(3) 新しい画面を表示するとき前の画面を消す場合
(4) 一つの表示サービスに複数画面表示する場合

(1) メインの実行可能ファイルから別の実行可能ファイルを呼び出す場合

メインメニュー(AP1)から各サブプログラム(AP2~n)を呼び出すケースを図5-4に示します。

図5-4 メインメニュー(AP1)から各サブプログラム(AP2~n)を呼び出すケース

[図データ]

(2) 新しい画面を表示するとき前の画面を消さないで表示しておくケース

AP1からAP2~nを呼び出すとき,AP1の画面を消さないで表示しておくケースを図5-5に示します。ただし,この方法ではAPの動作が遅くなります。

図5-5 AP1からAP2~nを呼び出すとき,AP1の画面を消さないで表示しておくケース

[図データ]

(3) 新しい画面を表示するとき前の画面を消す場合

AP1からAP2~nを呼び出すとき,AP1の画面を消してAP2を表示するケースを図5-6に示します。ただし,この方法ではAPの動作が遅くなります。

図5-6 AP1からAP2~nを呼び出すとき,AP1の画面を消してAP2を表示するケース

[図データ]

注※
DISABLE文を発行します(COBOLだけ)。

(4) 一つの表示サービスに複数画面表示する場合

C/SおよびOLTP(TP1/NET/XMAP3)構成で,一つの表示サービスに対して複数の画面を表示する場合,同時に表示できる画面数(GUI画面の場合は,一次/二次ウィンドウの総数)は15個までです。16個以上の画面表示を要求するとエラー(ログ情報に出力される詳細コードが「0x01001303」エラー)となり,16個目からの画面は表示されませんので注意してください。ログ情報に出力される詳細コードについては,「9.7 AP実行時の詳細エラーコード」を参照してください。