ページの先頭行へ戻る
NetCOBOL V12.0 ユーザーズガイド(UNIX分散開発編)
FUJITSU Software

4.2.3 生成したビルド制御文雛型とその修正

生成したビルド制御文は、必要に応じて編集します。

編集するには、プロジェクトツリーの“その他”フォルダに登録されているビルド制御文を選択して、エディタを起動します。

生成したビルド制御文雛型と、各部分の説明、および編集方法を示します。

ビルド制御文雛型

######################################################################
#                      Makefile NetCOBOL バージョンレベル
######################################################################

#==============================
# Macro
#==============================
SHELL = /bin/sh                                                         …[1]
# NetCOBOL install directory                                            …[2]
UCOBDIR = /opt/FJSVcbl/
include $(UCOBDIR)COBOL/config/mkinc/LIBLIST
# Link option                                                           …[3]
COBLDFLAGS = ライブラリ名,リンクオプション
# IDL compile option                                                    …[4]
IDLFLAGS1 = IDLc/tdcオプション
# Precompiler and insdbinf command                                      …[5]
PRECOMFLAGS1 = プリコンパイラコマンド コマンドオプション
INSDBFLAGS1 = insdbinf insdbinfオプション
# Server Directory                                                      …[6]
SERVERDIR = サーバディレクトリ
# Copy library name                                                     …[7]
登録集名 = $(SERVERDIR)

# Do not modify Start                                                   …[8]

COBFLAGS = -WC,"翻訳オプション",cobolコマンドラインオプション
COBOL = cobol
COMPILE.cob = $(COBOL) -c $(COBFLAGS)
LINKELF.cob = $(COBOL) -o $@ $(COBLDFLAGS)
LINKLIB.cob= $(COBOL) -G -o $@ $(COBLDFLAGS)
RM = rm -f
OBJDIR = オブジェクトファイル格納先
REPDIR = リポジトリファイル入出力先
SVDDIR = デバッグ情報ファイル格納先
WIN_COB_LIBSUFFIX = LIBEXT設定値
WIN_SMED_SUFFIX = FORMEXT設定値
WIN_FFD_SUFFIX = FILEEXT設定値
ENVSETFILE = 環境変数設定用スクリプトファイル

# Do not modify End

#==============================
# Suffix rule
#==============================

# Do not modify Start

.SUFFIXES :                                                             …[9]
.SUFFIXES : .cobol .cob .cbl $(SUFFIXES)

.cobol.o:
    . $(ENVSETFILE) ; \
    $(COMPILE.cob) $<

.cob.o:
    . $(ENVSETFILE) ; \
    $(COMPILE.cob) $<

.cbl.o:
    . $(ENVSETFILE) ; \
    $(COMPILE.cob) $<

# Do not modify End

#==============================
# Default targets
#==============================
all: 相互参照リポジトリ 共用オブジェクトプログラム 実行形式プログラム   …[10]

clean:                                                                  …[11]
    $(RM) 共用オブジェクトプログラム
    $(RM) 実行形式プログラム
    $(RM) オブジェクトファイル…
    $(RM) リポジトリファイル…
    $(RM) デバッグ情報ファイル …
    $(RM) Interstage関連ファイル …
    $(RM) プリコンパイラ展開ソースファイル …
    $(RM) insdbinf生成ファイル …
    $(RM) $(SERVERDIR)core
    $(RM) $(ENVSETFILE)

rebuild: clean all                                                      …[12]

$(ENVSETFILE) : Makefile                                                …[13]
    @$(RM) $(ENVSETFILE)
    @echo '#!/bin/sh' >>$(ENVSETFILE)
    @echo 'if [ "$$COB_LIBSUFFIX" = "" ]; then' >>$(ENVSETFILE)
    @echo '    COB_LIBSUFFIX=${WIN_COB_LIBSUFFIX}' >>$(ENVSETFILE)
    @echo 'else' >>$(ENVSETFILE)
    @echo '    COB_LIBSUFFIX=${WIN_COB_LIBSUFFIX},$${COB_LIBSUFFIX}' >>$(ENVSETFILE)
    @echo 'fi' >>$(ENVSETFILE)
    @echo 'export COB_LIBSUFFIX' >>$(ENVSETFILE)
    @echo 'if [ "$$SMED_SUFFIX" = "" ]; then' >>$(ENVSETFILE)
    @echo '    SMED_SUFFIX=${WIN_SMED_SUFFIX}' >>$(ENVSETFILE)
    @echo 'else' >>$(ENVSETFILE)
    @echo '    SMED_SUFFIX=${WIN_SMED_SUFFIX},$${SMED_SUFFIX}' >>$(ENVSETFILE)
    @echo 'fi' >>$(ENVSETFILE)
    @echo 'export SMED_SUFFIX' >>$(ENVSETFILE)
    @echo 'if [ "$$FFD_SUFFIX" = "" ]; then' >>$(ENVSETFILE)
    @echo '    FFD_SUFFIX=${WIN_FFD_SUFFIX}' >>$(ENVSETFILE)
    @echo 'else' >>$(ENVSETFILE)
    @echo '    FFD_SUFFIX=${WIN_FFD_SUFFIX},$${FFD_SUFFIX}' >>$(ENVSETFILE)
    @echo 'fi' >>$(ENVSETFILE)
    @echo 'export FFD_SUFFIX' >>$(ENVSETFILE)
    @echo '登録集名=${登録集名}' >>$(ENVSETFILE) 
    @echo 'export 登録集名' >>$(ENVSETFILE)
    @chmod +x $(ENVSETFILE)

#==============================
# Build program
#==============================
オブジェクトファイル: 依存リポジトリ 登録集 定義体 相互参照リポジトリ Makefile \
$(ENVSETFILE)                                                           …[14]

オブジェクトファイル: COBOLソースファイル 依存リポジトリ 登録集 定義体 \
相互参照リポジトリ Makefile $(ENVSETFILE)                               …[15]
    . $(ENVSETFILE) ; \
    $(COMPILE.cob) COBOLソースファイル

オブジェクトファイル: COBOLソースファイル 依存リポジトリ 登録集 定義体 \
相互参照リポジトリ Makefile $(ENVSETFILE)                               …[16]
    . $(ENVSETFILE) ; \
    $(COMPILE.cob) -M COBOLソースファイル

リポジトリファイル: COBOLソースファイル 依存リポジトリ 登録集 定義体 $(ENVSETFILE)
                                                                        …[17]
    . $(ENVSETFILE) ; \
    $(COMPILE.cob) -WC,"CREATE(REP)" COBOLソースファイル

スタブ/スケルトンファイル: IDLソースファイル インクルードファイル       …[18]
    IDLコンパイラ 言語オプション $(IDLFLAGSn) IDLソースファイル

実行形式プログラム: オブジェクトファイル ライブラリ Makefile            …[19]
    $(LINKELF.cob) ライブラリ オブジェクトファイル

共用オブジェクトプログラム : オブジェクトファイル ライブラリ Makefile   …[20]
    $(LINKLIB.cob) ライブラリ オブジェクトファイル

プリコンパイラ展開ソースファイル : オリジナルソースファイル インクルードファイル
                                                                        …[21]
    $(PRECOMFLAGSn)

insdbinf生成ファイル : プリコンパイラ展開ソースファイル                 …[22]
    $(INSDBFLAGSn) -f オリジナルソースファイル < プリコンパイラ展開ソースファイル > $@

ビルド制御文雛型の説明と編集方法

[1]  メイクファイルの動作するシェルの指定です。
[2]  UNIX上のNetCOBOLインストール先です。
[3]  cobolコマンドのコマンドラインに指定する、リンクに関するオプションです。

〔制御文生成〕ダイアログの〔リンクオプション1〕タブ、〔リンクオプション2〕タブに入力した内容を出力します。

[4]  IDLコンパイラであるIDLcコマンド、tdcコマンドに指定するオプションです。

〔Interstarge〕ダイアログを使用してCORBAアプリケーションを生成するための依存関係を設定した場合に出力します。

オプションは、〔Interstarge〕ダイアログの〔IDL翻訳オプション〕エディットボックスに設定したオプションを元に生成します。

プロジェクトで〔Interstarge〕ダイアログを複数回使用している場合、ツリーの上から順に、IDLFLAGS1、IDLFLAGS2、…に対応して設定します。

オプションを変更する場合は、次に示す下線部分を書き換えてください。

IDLFLAGS1 = IDLc/tdcオプション
[5]  プリコンパイラコマンドと、オプションの指定です。insdbinfコマンドを使用する場合、insdbinfコマンドと、オプションもここへ出力します。

〔プリコンパイラ設定〕ダイアログで、プリコンパイラの設定を行った場合、出力します。

プロジェクトで複数のプリコンパイラやinsdbinfコマンドを使用している場合、ツリーの上の方から順に、プリコンパイラの場合はPRECOMFLAGS1、PRECOMFLAGS2、…が対応します。同様に、insdbinfコマンドの場合、INSDBFLAGS1、INSDBFLAGS2、…が対応します。

〔プリコンパイラ設定〕ダイアログの、〔コマンドパラメタ〕ドロップダウンリストに指定したパラメタ文字列にマクロを使用している場合、対応するファイル名に変換して出力します。

ファイルの種類と、マクロ名の対応関係は、下表のようになります。

表4.5 ファイルの種類とマクロ名の対応

ファイルの種類

マクロ名

入力ファイル

%INFILE%

出力ファイル

%OUTFILE%

出力ファイルフォルダ

%OUTFOLDER%

プリコンパイラのコマンドやオプションは、UNIX上のプリコンパイラの仕様や、環境に合わせて書き換える必要があります。プリコンパイラのコマンドやオプション、insdbinfコマンドのオプションを変更する場合は、次に示す下線部分を書き換えてください。

PRECOMFLAGS1 = プリコンパイラコマンド コマンドオプション
INSDBFLAGS1 = insdbinf insdbinfオプション
:
[6]  サーバディレクトリです。

〔プロパティ〕ダイアログの〔分散開発〕タブの〔サーバディレクトリ〕エディットボックスに指定したディレクトリ名を出力します。

ファイル名の前に$(SERVERDIR)を付加している場合、サーバディレクトリに格納するファイルを示します。

[7]  登録集名の指定です。

〔登録集名〕ダイアログで、登録集名を設定した場合に出力します。

登録集名に定義する、UNIX上での登録集ファイルを格納するディレクトリ名を変更する場合は、次に示す下線部分を書き換えてください。

登録集名 = $(SERVERDIR)
  :

なお、〔Interstage〕ダイアログを使用してCORBAアプリケーションを生成する場合、指定の内容によっては、登録集名“CORBA”が設定される場合があります。この場合、ビルド制御文にも登録集名“CORBA”を出力します。次に示す下線部分を、IDLコンパイルを行う環境に合わせて書き換えてください。設定する値については、Interstageのマニュアルを参照してください。

CORBA = /opt/FSUNod/include/COBOL
[8]  アプリケーションのビルドに必要な、その他の設定です。

[Do not modify Start]から、[Do not modify End]で囲まれる部分は、ほとんどの場合、編集する必要はありません。

この部分の内容は次の通りです。

COBFLAGS

cobolコマンドの翻訳に関するオプションです。〔翻訳オプション〕ダイアログに指定した翻訳オプションを、UNIX上で使用できる形式に変換して出力します。また、〔制御文生成〕ダイアログの〔翻訳オプション〕タブで指定したオプションも、COBFLAGSに出力します。

ほとんどの場合、修正する必要はありませんが、次に示す場合は、修正が必要になります。

  • 〔その他の翻訳オプション〕がWindowsとUNIXで異なる

  • CORBAアプリケーションを作成している

  • 〔その他の翻訳オプション〕がWindowsとUNIXで異なる

    〔翻訳オプション〕ダイアログの、〔その他の翻訳オプション〕エディットボックスに指定したオプションがWindowsとUNIXで異なる場合は、次に示す下線部分のうち、指定したオプションのみを書き換えてください。なお、他の翻訳オプションの設定状態によっては、位置がずれる場合があります。

    COBFLAGS = -WC,"翻訳オプション その他の翻訳オプション",cobolコマンドラインオプション
  • CORBAアプリケーションを作成している

    〔Interstage〕ダイアログを使用してCORBAアプリケーションを生成する場合、指定の内容によっては、COBFLAGSに次のようなオプションが追加されます。

    -I"/opt/FSUNod/include/oocob"
    -R"/opt/FSUNod/rep"
    -R"/opt/FSUNod/rep/unicode"

    IDLコンパイルを行う環境に合わせて、下線部分を書き換えてください。設定する値については、Interstageのマニュアルを参照してください。

COBOL

cobolコマンドを表します。

COMPILE.cob

COBOLソースを翻訳するコマンドの指定です。

LINKELF.cob

実行形式プログラムを作成するためのコマンドの指定です。

LINKLIB.cob

共用オブジェクトプログラムを作成するためのコマンドの指定です。

RM

以前のビルドで生成したファイルを削除するためのコマンドの指定です。

OBJDIR

オブジェクトファイル格納先ディレクトリです。

翻訳オプション-doを指定した場合に出力します。

REPDIR

リポジトリファイル格納先ディレクトリです。

翻訳オプション-drを指定した場合に出力します。

SVDDIR

デバッグ情報ファイル格納先ディレクトリです。

翻訳オプション-ddを指定した場合に出力します。

WIN_COB_LIBSUFFIX

環境変数COB_LIBSUFFIXに設定する値です。

〔翻訳オプション〕ダイアログで、翻訳オプションLIBEXTを指定した場合に出力します。

WIN_SMED_SUFFIX

環境変数SMED_SUFFIXに設定する値です。

〔翻訳オプション〕ダイアログで、翻訳オプションFORMEXTを指定した場合に出力します。

WIN_FFD_SUFFIX

環境変数FFD_SUFFIXに設定する値です。

〔翻訳オプション〕ダイアログで、翻訳オプションFILEEXTを指定した場合に出力します。

ENVSETFILE

環境変数を設定するスクリプトファイル名です。

[9]  COBOLソースの翻訳に関するサフィックスルールです。
[10]  最終的に生成するファイルです。

ただし、最終ターゲットを生成するのに必要なCOBOLソースファイルなどを送信していない場合は、最終ターゲットファイルは生成されません。

[11]  以前のビルドで生成したファイルを削除するときに、対象となるファイルです。
[12]  リビルドを行うための指定です。
[13]  環境変数を設定するスクリプトファイルを生成するための指定です。

〔翻訳オプション〕ダイアログで、翻訳オプションLIBEXT、FORMEXT、FILEEXTを指定した場合、〔登録集名〕ダイアログで、登録集名を設定した場合に出力します。

[14]  副プログラムをコンパイルし、オブジェクトファイルを生成する指定です。

[9]のサフィックスルールを適用できる場合は、この形式で出力します。

[15]  [14]と同じく、副プログラムをコンパイルし、オブジェクトファイルを生成する指定です。

サフィックスルールを適用しない場合は、この形式で出力します。

[16]  主プログラムをコンパイルし、オブジェクトファイルを生成する指定です。
[17]  ターゲットリポジトリファイルを生成する指定です。

プロジェクトのツリーに、ターゲットリポジトリファイルを登録している場合に出力します。

[18]  IDLソースファイルから、スタブ/スケルトンファイルを生成する指定です。

〔Interstage〕ダイアログを使用してCORBAアプリケーションを生成するための依存関係を設定した場合に出力します。

[19]  実行形式プログラムを生成する指定です。

実行形式プログラムは、サーバディレクトリに生成されます。

[20]  共用オブジェクトプログラムを生成する指定です。

共用オブジェクトプログラムは、サーバディレクトリに生成されます。

[21]  プリコンパイラを使用して、プリコンパイラ展開ソースファイルを生成する指定です。

〔プリコンパイラ設定〕ダイアログで、プリコンパイラを登録した場合に出力します。

[22]  insdbinf生成ファイルを生成する指定です。

〔プリコンパイラ設定〕ダイアログの、〔INSDBINF〕タブで、〔INSDBINFコマンドを使用する〕チェックボックスにチェックをした場合に出力します。

各アプリケーションでの注意点

以下のアプリケーションでの注意事項について説明します。