Hitachi

OpenTP1 Version 7 分散トランザクション処理機能 OpenTP1 使用の手引 Windows(R)編


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,またはVisual Studio 2022を使用する場合,次のファイルも指定してください。

  • ucrt.lib

  • vcruntime.lib

(4) COBOL2002開発マネージャの設定

COBOL2002開発マネージャは,次のように設定してください。

注※

必要に応じて次のファイルも指定してください。

  • TP1/FS/Direct Accessを使用する場合:libdam.lib

  • TP1/FS/Table Accessを使用する場合:libtam.lib

  • TP1/Message Controlを使用する場合:libmcf.lib,libmnet.lib

(5) Visual Studioと併用する際の環境設定

COBOL2002とVisual Studio併用時の注意事項については,COBOL2002のリリースノートの注意事項をご確認ください。