3.3.6 COBOLでのコンパイル(Windows)
(1) COBOL開発マネージャを使用したコンパイルと実行のポイント
COBOL開発マネージャを使用したコンパイルと実行のポイントについて説明します。
(a) COBOL開発マネージャの概要
COBOL開発マネージャは,COBOL2002から提供されているCOBOLプログラムの統合的な開発環境です。COBOLでAPを開発するときに必要なCOBOLソースや登録集原文などの資産をその依存関係に従って管理し,コンパイルなどの作業を自動化します。
COBOL開発マネージャを使用する場合,次の手順でAPを作成します。
-
プロジェクトの作成
-
資産の登録,定義
-
ビルド,リビルド
次に,それぞれの手順について説明します。
- プロジェクトの作成
-
COBOL開発マネージャでは,一つのEXEまたはDLLファイルの開発単位を「プロジェクト」と呼んでいます。COBOL開発マネージャを使用してAPを作成する場合,このプロジェクトを定義する必要があります。
- 資産の登録,定義
-
COBOL開発マネージャでは,プロジェクトで作成される実行のファイル(.exe,または.dll)やそれを構成する要素を「資産」と呼んでいます。また,COBOL開発マネージャでは,その依存関係を定義する必要があります。
資産の依存関係を定義すると,COBOL開発マネージャではどのように表されるかを次の図に示します。
図3‒9 COBOL開発マネージャでの表示 - ビルド,リビルド
-
COBOL開発マネージャでは,定義した資産の依存関係に基づいてコンパイルとリンケージをします。
その方法として,各資産の依存関係とタイムスタンプ(ファイル作成/修正日時)の前後関係に基づいてコンパイルとリンケージをする「ビルド」があります。例えば,「実行ファイルの作成/修正日時」より実行ファイルが取り込んでいる「COBOLソースの作成/修正日時」の方が新しい場合にコンパイルとリンケージが実行されます。
また,タイムスタンプには関係なくコンパイルとリンケージをする「リビルド」もあります。
(b) コンパイル時のポイント
- コンパイラオプションを指定する
-
COBOLを使用したとき,指定が必要なコンパイルオプションを次に示します。
-
-Comp5:COBOLプログラム中のCOMP-5を利用できるようにするオプション
-
-JPN,Alnum:論理マップ内で日本語項目を扱えるようにするオプション
-
-StdCall※:CALL文を使用し,環境部にjsvwadrvの指定をしない場合に必要なオプション
-
- 注※
-
コンパイルオプション「-StdCall」は,Windows版XMAP3サーバ/クライアント実行環境(32ビット)の場合だけ利用できます。Windows版XMAP3サーバ/クライアント実行環境(64ビット)の場合は利用できません。
- AP間でオープンを引き継ぐ
-
SEND/RECEIVE/TRANSCEIVE文を使用してAPを分割してコンパイルする場合,共通画面を表示する個所を別DLLにします。APを分割してコンパイルするときは,コンパイル単位でXMAP3の画面オープン・クローズ要求が毎回発行されないようにします。COBOLの実行支援の環境変数で,「CBLTERMSHAR=YES」を指定します。「CBLTERMSHAR=YES」は,SEND/RECEIVE/TRANSCEIVE文でAPを作成したときだけ有効です。CALL文でAPを作成したときは無効になります。
CALL文でAPを作成するの場合,AP間のオープン引き継ぎをするときは,XMAP3インタフェースエリアの情報を引き継ぐようなコーディングをする必要があります。このコーディングのひな型として,APパターンのGENDSP02およびGENDSP03を利用できます。
- 登録集原文,動的変更テーブル(X3MODTBL)を確認する
-
-
APのCOPY文に,論理マップ(マップ生成時に付けられた名称)や動的変更テーブル(X3MODTBL)が間違って指定されていないか確認してください。
-
論理マップや動的変更テーブルがフォルダ中に用意されているか確認してください。ソースプログラムと登録集原文が同じフォルダで管理されている場合は,論理マップや動的変更テーブルが同一フォルダに格納されていないことが考えられます。また,ソースプログラムと登録集原文が別のフォルダで管理されている場合は,環境変数に指定した登録集原文のフォルダに誤りがあったり,指定したフォルダに論理マップや動的変更テーブルが格納されていなかったりすることが考えられます。動的変更テーブルおよびXMAP3インタフェース領域テーブルは,「XMAP3インストールフォルダ\INCLUDE」の下に格納されていますので,必要なフォルダにコピーするか,または登録集原文が格納されているフォルダを環境変数CBLLIBに指定して使用してください。
-
データ名または変数名に対し,不当な文字をAPで指定していないか確認してください。
-
CALL文でAPを作成した場合には,XMAP3インタフェース領域テーブル(JSVWATBL)がAPのCOPY文に指定されているか確認してください。
-
(c) リンケージ時のポイント
- XMAP3使用時のリンケージオプションを指定する
-
CALL文で作成したAPでXMAP3を利用する場合,インポートライブラリ/ユーザ作成ライブラリに,次のように指定します。
XMAP3インストールフォルダ\LIB\X3MWDR32.LIB
- XMAP3のライブラリを設定する
-
コンパイル環境(CALL文で作成したAPの場合は,リンケージ環境)のマシンには,XMAP3の開発環境をインストールしておく必要があります。
(d) 実行時のポイント
APを実行する前に,物理マップやグラフィックデータ(グラフィックを使用する場合)を実行形式ファイルと同じフォルダに格納してください。
また,マップパスやグラフィックパスを指定する方法もあります。マップパスおよびグラフィックパスは,表示・印刷セットアップで指定します。表示・印刷セットアップについては,マニュアル「XMAP3 実行ガイド」を参照してください。
APを分割してコンパイルした場合は,環境変数が必要になります。「3.1.2 AP間でオープンを引き継ぐ場合」を参照してください。
(2) COBOL開発マネージャでのXMAP3の利用方法
COBOL開発マネージャとXMAP3との両方をインストールしている場合,COBOL開発マネージャからXMAP3の機能を呼び出せます。XMAP3の資産を登録,定義すれば,ビルド,またはリビルドによってコンパイルとリンケージをしてAPを作成できます。
また,AP作成時にソースプログラムや登録集原文を格納するフォルダを作成しておいてください。
次に,COBOL開発マネージャからXMAP3を利用する方法について説明します。
(a) COBOL開発マネージャ上での資産の登録,定義
COBOL開発マネージャ上では,XMAP3の資産を扱う場合,XMAP3でのファイル名の規則に従います。また,XMAP3の「マップ名」を基に作成します。
XMAP3の資産をCOBOL開発マネージャで利用するときのファイル名の規則を次の表に示します。
XMAP3の 資産 |
COBOL開発マネージャでの名称 |
COBOL開発マネージャで付けるファイル名 |
内容 |
---|---|---|---|
マップ定義 |
マップ定義 |
マップ名.imp |
ユーザが定義した画面の情報を格納している。定義を修正するときにはこのファイル名を指定。 |
論理マップ |
登録集原文 |
マップ名+O.cbl |
APで取り込む出力情報の登録集原文。 |
マップ名+I.cbl |
APで取り込む入力情報の登録集原文。 |
||
物理マップ |
− |
マップ名+XX※.pmp |
ユーザが定義した画面のうち,APではアクセスしない,固定部分の情報。 COBOL開発マネージャの管理対象外。 |
また,COBOL開発マネージャからXMAP3の資産を登録,定義した場合,どのように表されるかを次に示します。
これを基にして,XMAP3で作成した2種類の画面をCOBOL開発マネージャで利用してAPを作成する場合の例を次に示します。
注意
-
ファイル名は,「表3-3 XMAP3の資産をCOBOL開発マネージャで利用するときのファイル名の規則」に従って定義する必要があります。
-
ファイル名は,XMAP3のマップ名を使用して作成してください。XMAP3のファイル名を使用しないと,上記に示す資産定義と一致しなくなります。
-
XMAP3で入出力画面の定義をする場合,「1.画面1用 画面定義ファイル」,「4.画面1用 入力論理マップ」,「5.画面1用 出力論理マップ」を,「2.画面2用 画面定義ファイル」,「6.画面2用 入力論理マップ」,「7.画面2用 出力論理マップ」を同じファイル名で定義してください。
このように資産を登録,定義しておけば,定義ファイルに変更があった場合,ビルドによってコンパイル,リンケージされ,自動的に登録集原文(論理マップ)が生成し直されます。
(b) マップ定義ファイルの作成と修正
マップ定義ファイルを作成,または修正したい場合,次に示す操作をすることでXMAP3の画面定義ができます。
-
COBOL開発マネージャ上で,マップ定義ファイル(xxx.imp)をダブルクリックします。
(c) マップ生成
COBOL開発マネージャのビルド,またはリビルドを使用しないで単独にマップ生成をする場合,次の操作をすることでマップ生成ができます。生成される論理マップや物理マップのファイル名については,「表3-3 XMAP3の資産をCOBOL開発マネージャで利用するときのファイル名の規則」を参照してください。
マップ生成時に使用するリトルエンディアン,およびビッグエンディアンは,オプションで指定してください。
- 操作方法
-
- 特定のマップ定義ファイルからマップ生成をするときにだけ有効とする場合
-
COBOL開発マネージャ上で,マップ定義ファイル(xxx.imp)をクリックして,[ファイル]−[ファイルの設定]を選択し,必要なコンパイルオプションを指定します。
- すべてのマップ定義ファイルからマップ生成をするときに有効とする場合
-
COBOL開発マネージャ上で,[プロジェクト]−[プロジェクトの設定]を選択し,「最適化」タブで必要なコンパイルオプションを指定します。
- 設定形式
-
[-BigEndian,Bin]
- 説明
-
-BigEndian,Binまたは-Bbは,ビッグエンディアンを指定することを示します。指定がない場合,リトルエンディアンが仮定されます。