3.2.3 COBOL2002でのUAPの作成
(1) コマンドの指定(COBOL2002)
次に示す場合に指定するコマンドについて説明します。
(a) trnmkobjコマンドでトランザクション制御用オブジェクトを作成する場合
trnmkobjコマンドでトランザクション制御用オブジェクトを作成する場合には,必ず-C "/Zl"オプションを指定してください。
(b) 標準トランザクション制御用オブジェクトファイル(dc_trn_allrm.obj)を使用する場合
trnlnkrmコマンドで作成される標準トランザクション制御用オブジェクトファイル(dc_trn_allrm.obj)を使用する場合,trnlnkrmコマンドを-C "/Zl"オプションを指定して実行し,オブジェクトを再作成してください。
(c) スタブファイルをコンパイルする場合
stbmakeで作成されたC言語のソースファイルをコンパイルする場合,必ずコンパイルオプション"/Zl"を指定してください。
(2) メイクファイルの例(COBOL2002:SPPの場合)
SPPを作成する場合のメイクファイルの例を示します。
(a) ソースファイル名
メイクファイルの例中で使用するソースファイル名を次に示します。
- COBOL2002で作成したUAPのメインプログラム名:main.cbl
- COBOL2002で作成したUAPのサービスプログラム名1:sev1.cbl
- COBOL2002で作成したUAPのサービスプログラム名2:sev2.cbl
- RPCインタフェース定義ファイル名:ex.def
(b) メイクファイルの例
メイクファイルの例を次に示します。
!include <ntwin32.mak>
# TP1TEST Make File
CBLFG1 = -Compile,NoLink -Comp5 -Lib,CUI -Main,System
CBLFG2 = -Compile,NoLink -Comp5 -Lib,CUI
SYSLIB = $(conlibsdll)
TP1LIB = [libdam.lib]※1 [libtam.lib]※2 libbetran.lib
CCBL = ccbl2002
LK = ccbl2002 -Lib,CUI
all:TP1TEST.exe
#コンパイル
main.obj:main.cbl
$(CCBL) $(CBLFG1) main.cbl
sev1.obj:sev1.cbl
$(CCBL) $(CBLFG2) sev1.cbl
sev2.obj:sev2.cbl
$(CCBL) $(CBLFG2) sev2.cbl
ex_sstb.obj:ex_sstb.c
[$(cc) $(cflags) /Zl $(cvarsdll) $*.c]※3
#スタブソースファイルの作成
ex_sstb.c:ex.def
$(DCDIR)¥bin¥stbmake $?
#リンケージ
TP1TEST.exe: main.obj sev1.obj sev2.obj ex_sstb.obj
$(LK) -OutputFile $*.exe $** ¥
[$(DCDIR)¥spool¥trnrmcmd¥userobj¥dctrninf.obj ¥]※4
$(TP1LIB) $(SYSLIB) |
- 注※1
- libdam.libは,TP1/FS/Direct Accessを使用する場合だけ指定してください。
- 注※2
- libtam.libは,TP1/FS/Table Accessを使用する場合だけ指定してください。
- 注※3
- ex_sstb.objは,コンパイルオプション/Zlを指定してください。
- 注※4
- $(DCDIR)¥spool¥trnrmcmd¥userobj¥dctrninf.objは,トランザクション機能を使用する場合だけ指定してください。なお,dctrninf.objには,trnmkobjコマンドで作成したトランザクション制御用オブジェクトファイル名を指定します。また,trnmkobjコマンドを実行する場合,-C "/Zl"オプションを指定して,オブジェクトにマニフェストファイルの情報が埋め込まれないようにしてください。trnmkobjコマンドについては,「7. 運用コマンド」を参照してください。
(3) メイクファイルの例(COBOL2002:MHPの場合)
MHPを作成する場合のメイクファイルの例を示します。
!include <ntwin32.mak>
# makefile for making UAP(COBOL Language)
# COBOL2002 install directory
COBOL2002 = C:¥Progra~1¥HITACHI¥COBOL2002
# command
STBMAKE = $(DCDIR)¥bin¥stbmake.exe
# user server object
MHP_SRC = CBLMHPM.obj TCPMHPSV.obj
# include file
INCDIR = -I. ¥
-I $(DCDIR)¥include
# common object
SH_OBJ = $(DCDIR)¥spool¥trnrmcmd¥userobj¥mcf_sw.obj
# common library
LIBNAME = $(DCDIR)¥lib¥libmcf.lib ¥
$(DCDIR)¥lib¥libmnet.lib ¥
$(DCDIR)¥lib¥libbetran.lib
# COBOL2002 library
CBLLIBNAME = $(COBOL2002)¥lib¥cbl2k_32.lib ¥
$(COBOL2002)¥lib¥cbl2klc.lib ¥
$(COBOL2002)¥lib¥cbl2kdl.lib
# compiler options
CC = cl
CCBL = $(COBOL2002)¥bin¥ccbl2002
CCOPT = -nologo $(cflags) $(cvarsdll)
CONFIG = -c -Zl
CFLAGS = $(CCOPT) $(CONFIG) $(INCDIR)
CBLFG1 = -Compile,Nolink -Comp5 -Lib,CUI -OpenTP1 -Main,System
CBLFG2 = -Compile,Nolink -Comp5 -Lib,CUI -OpenTP1
# linker options
LK = ccbl2002 -Lib,CUI
LNKFLG = $(conflags) /NODEFAULTLIB
LINKAGE = $(conlibsdll) $(LIBNAME) $(CBLLIBNAME) msvcrt.lib
all : $(SH_OBJ) tcpmhp.exe
.SUFFIXES : .cbl
# compile
.c.obj :
$(CC) $(CFLAGS) $*.c
.cbl.obj :
$(CCBL) $(CBLFG2) $*.cbl
TCPMHPSV.obj :
$(CCBL) $(CBLFG2) TCPMHPSV.cbl
CBLMHPM.obj :
$(CCBL) $(CBLFG1) cblmhpm.cbl
# stub, creating source file
cblmhp_sstb.c :
$(STBMAKE) cblmhp.def
# link
tcpmhp.exe : $(MHP_SRC) cblmhp_sstb.obj
$(LK) -OutputFile $*.exe $** $(LINKAGE) $(SH_OBJ)
!if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;1
!if exist $@.manifest del $@.manifest
$(SH_OBJ) :
$(DCDIR)¥bin¥trnmkobj -o mcf_sw -R OpenTP1_MCF -C "/Zl" |
(4) COBOL2002開発マネージャの設定
COBOL2002開発マネージャは,次のように設定してください。
- コンパイラオプションの設定
「CUI:CUI用の実行時ライブラリを使用する」を指定してください。
- リンカオプションの設定
インポートライブラリ/ユーザ指定ライブラリとしてlibbetran.lib,およびスタブオブジェクトファイルを指定してください。
(5) Visual Studioと併用する際の環境設定(COBOL2002 02-00より前のバージョン)
COBOL2002 02-00より前のバージョンの場合,COBOL2002はVisual Studio .NET 2002で作成されています。このため,Visual Studio 2005以降で作成したオブジェクトをccbl2002コマンドやCOBOL2002に含まれるリンカ(link)でリンケージすると,エラーが発生します。エラーを回避するために,次の規則に従って環境設定をしたあとでリンケージしてください。
- 環境変数PATHおよび環境変数LIBには,Visual Studioで必要とするパスよりも前にCOBOL2002で必要とするパスを設定してください。
- SPP用のスタブをコンパイルする場合,/Zlオプションを指定してください。
- SPP用のスタブ以外のC言語で作成したプログラムは,DLLとして作成してください。
COBOL2002 02-00以降は,このエラーは発生しません。COBOL2002 02-00以降とVisual Studio併用時の注意事項については,COBOL2002のリリースノートの注意事項をご確認ください。