画面・帳票サポートシステム XMAP3 プログラミングガイド


3.1.3 AP分割時の注意

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

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

CALL文でAPを作成する場合,AP間のオープン引き継ぎをするときは,ユーザが,XMAP3インタフェースエリアの情報を引き継ぐようなコーディングをする必要があります。このコーディングのひな型として,APパターンのGENDSP02およびGENDSP03を利用できます。

〈この項の構成〉

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

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

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

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

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

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

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

[図データ]

(4) 画面をクローズしないで一時的に表示中の画面を消す場合(Windows)

画面をクローズすると,次に表示するときには必ずオープンしなければならないので,この間のオープン/クローズの時間が掛かります。このような時間を節約したいときには,GUI画面の画面属性ダイアログの「Z位置」で「後ろに表示」か「一時非表示」を指定します。これらの指定をすると,一時的に表示中の画面を見えないようにできます。いちばん後ろに表示された画面を前に表示させたり,一時的に非表示になった画面を元に戻す場合は,ドローセットアップの「表示属性の動的変更」の「位置属性」タブで「XY位置」を「手前に表示」と指定します。

図3‒7 画面をクローズしないで一時的に表示中の画面を消す場合

[図データ]

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

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