3.2.3 COBOL2002でのUAPの作成
ここでは,UAPをCOBOL2002で作成する場合について説明します。
- 〈この項の構成〉
(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"
- 注※
-
Visual Studio 2015,Visual Studio 2017,またはVisual Studio 2019を使用する場合,次のファイルも指定してください。
-
ucrt.lib
-
vcruntime.lib
-
(4) COBOL2002開発マネージャの設定
COBOL2002開発マネージャは,次のように設定してください。
-
コンパイラオプションの設定
「CUI:CUI用の実行時ライブラリを使用する」を指定してください。
また,MHPの場合は,「-OpenTP1:OpenTP1を使用したDC機能を使用する」を指定してください。
-
リンカオプションの設定
インポートライブラリ/ユーザ指定ライブラリとしてlibbetran.lib※,スタブオブジェクトファイル,および必要に応じてトランザクション制御用オブジェクトファイルを指定してください。
- 注※
-
必要に応じて次のファイルも指定してください。
-
TP1/FS/Direct Accessを使用する場合:libdam.lib
-
TP1/FS/Table Accessを使用する場合:libtam.lib
-
TP1/Message Controlを使用する場合:libmcf.lib,libmnet.lib
-