付録A.5 makefileおよびコンパイル用シェルの内容

makeコマンドを実行するには,makefileのほかにccbl2002コンパイル用シェル(prp_ccbl2002.sh)が必要です。

makefileおよびccbl2002コンパイル用シェル(prp_ccbl2002.sh)の内容を次に示します。

<この項の構成>
(1) makefileの内容
(2) ccbl2002コンパイル用シェル(prp_ccbl2002.sh)の内容

(1) makefileの内容

makefileの内容を次に示します。

#All Rights Reserved. Copyright (C) 2008, Hitachi, Ltd.
#Licensed Material of Hitachi, Ltd.
#Reproduction, use, modification or disclosure otherwise than
#permitted in the License Agreement is strictly prohibited.
#makefile
#makefile for making UAP(COBOL Language)
#

CBLDIR = /opt/HILNGcbl2k                   …[1]始まり
CPDIR = $(DCDIR)/aplib

IDIRS = -I$(DCDIR)/include
LDIRS = -L$(DCDIR)/lib -L$(CBLDIR)/lib     …[1]終わり

### -------- Normal Option --------
CBLFLAGS1 = -C2 -Mw
CBLFLAGS2 = -C2
CFLAGS = -c -ansi -O1 $(IDIRS)             …[2]
LFLAGS = $(LDIRS) -Wl,-Bdynamic -lbetran -lcbl2k -lcbl2kml -ltactk -lm -ldl

CC= /usr/bin/gcc
CCBL= $(CBLDIR)/bin/ccbl


OBJECT1= sup.o
all : SUP libxdb_sampleuap.so

#make load module
libxdb_sampleuap.so : sampleuap.o
gcc -o libxdb_sampleuap.so  sampleuap.o -shared -L /opt/HILNGcbl2k/lib -lcbl2k -lcbl2kml -lpthread  -lm

sampleuap.o : sampleuap.ecb
       ./prp_ccbl2002.sh

SUP : $(OBJECT1)
       $(CC) -o $@ $(OBJECT1) $(LFLAGS)

#make object file
sup.o : sup.cbl                            …[3]始まり
       $(CCBL) $(CBLFLAGS1) sup.cbl       …[3]終わり

#cleaning load, object
clean :                                    …[4]始まり
       -rm SUP $(OBJECT1)
       -rm libxdb_sampleuap.so
       -rm sampleuap.cbl
       -rm sampleuap.o                    …[4]終わり

説明
[ ]内の番号は,次に示す項番と対応しています。
  1. ライブラリ情報の定義
  2. コンパイラオプション
  3. ccbl2002の実行
  4. 生成されたファイルの削除

コンパイル時には事前に生成されたファイルを削除してからmakeコマンドを実行する必要があります。生成されるファイルについては,「表A-1 コンパイルを実行すると生成されるファイル」を参照してください。

(2) ccbl2002コンパイル用シェル(prp_ccbl2002.sh)の内容

ccbl2002コンパイル用シェル(prp_ccbl2002.sh)の内容を次に示します。

#!/bin/bash
#All Rights Reserved. Copyright (C) 2008, Hitachi, Ltd.
#Licensed Material of Hitachi, Ltd.
#Reproduction, use, modification or disclosure otherwise than
#permitted in the License Agreement is strictly prohibited.
#makefile
#prp_ccbl2002.sh for making UAP(COBOL Language)
#

export ID=$LOGNAME
#******************************#
# プリプロセサ名(パスを含む)
#******************************#
   EEXDBCBL=$DCDIR/bin/eexdbcbl
#******************************#
#  UAPソース名(パスを含む)
#******************************#
   UAPSOURCE=./sampleuap.ecb
#******************************#
# COBOLコンパイラ名(パスを含む)
#******************************#
   CCBL2002=/opt/HILNGcbl/bin/ccbl2002

#******************************#
#    環境変数設定
#******************************#
   export PATH=$VAR_PATH
   export LD_LIBRARY_PATH=$VAR_LDLIB
   export CBLLIB=$VAR_CBLLIB
   export LANG=$VAR_LANG
#******************************#
#                              #
#    プリプロセス
#******************************#
echo '****** START PRP ******'
   $EEXDBCBL $UAPSOURCE
echo '****** END PRP   ******'
#******************************#
#                              #
#    コンパイル
#******************************#
echo '****** START CCBL2002 ******'
   $CCBL2002 -PIC,Std -DynamicLink,Call -MainNotCBL ./sampleuap.cbl ld -shared -o libxdb_sampleuap.so ./sampleuap.o -Bstatic -MultiThread -lpthread
echo '****** END CCBL2002   ******'