#  (C) COPYRIGHT International Business Machines Corp. 1995, 2000
#  All Rights Reserved.
#
#  US Government Users Restricted Rights - Use, duplication or
#  disclosure restricted by GSA ADP Schedule Contract with IBM Corp.


# makefile for DB2 Universal Database
# Micro Focus COBOL sample programs -- AIX operating system
                         

# Enter one of the following commands 
#
#   make <app_name>        - Builds the program designated by <app_name>
#
#   make all               - Builds the all the supplied sample programs
#   make udfspserver       - Builds the examples that implement
#                            stored procedures and UDFs (on the server)
#   make localclient       - Builds the examples that can only be run
#                            successfully on a server 
#   make udfspclient       - Builds the examples that call stored 
#                            procedures and UDFs ( they can run remotely )
#   make otherremoteclient - Builds the examples that will run successfully
#                            on a client platform ( others than udfspclient )
#   make allremoteclient   - Builds programs in udfspclient and otherremoteclient
#                            categories
#
#   make clean             - Erases intermediate files
#   make cleanall          - Erases all files produced in the build process,
#                            except the original source files

# The makefile contains the following sections:
#    1 -- COMPILERS + VARIABLES
#    2 -- MAKE CATEGORIES
#    3 -- COMMANDS TO MAKE INDIVIDUAL SAMPLES


##################################################################################
#                  1 -- COMPILERS + VARIABLES                                     
##################################################################################

# This file assumes the DB2 instance path is defined by the variable HOME.
# It also assumes DB2 is installed under the DB2 instance.
# If these statements are not correct, update the variable DB2PATH. 
DB2PATH = $(HOME)/sqllib

# compiler and linker - Micro Focus COBOL Compiler
CC=cob

# The required compiler flags
CFLAGS= -x 

# The required libraries
LIBS= -L$(DB2PATH)/lib -ldb2 -ldb2gmf
# The additional link options for stored procedures
SPLIBS= -Q -bI:$(DB2PATH)/lib/db2g.imp -ldb2gmf -L$(DB2PATH)/lib

# To connect to a remote SAMPLE database cataloged on the client machine
# with another name, update the DB variable.
DB=sample
# Set UID and PWD if neccesary  
UID=
PWD=

COPY=cp
ERASE=rm -f

#############################################################################
#  2 -- MAKE CATEGORIES
#              2a - make all(= allremoteclient + localclient +udfspserver)
#              2b - make udfspserver
#              2c - make localclient  
#              2d - make udfspclient
#              2e - make otherremoteclient
#              2f - make allremoteclient(= udfspclient + otherremoteclient)
#              2g - make clean
#              2h - make cleanall
#############################################################################


#**************************************************************************** 
#                  2a - make all
#**************************************************************************** 

all : \
	allremoteclient \
	localclient \
	udfspserver

#**************************************************************************** 
#                  2b - make udfspserver
#**************************************************************************** 

udfspserver : \
	inpsrv\
	outsrv

#**************************************************************************** 
#                  2c - make localclient 
#**************************************************************************** 

localclient : \
	dbstart dbstop 

#**************************************************************************** 
#                  2d - make udfspclient
#**************************************************************************** 

udfspclient : \
	inpcli \
	outcli 

#**************************************************************************** 
#                  2e - make otherremoteclient
#**************************************************************************** 

otherremoteclient : \
	advsql \
	client cursor \
	d_dbconf d_dbmcon db_udcs dbauth dbcat \
	dbcmt dbconf dbinst dbmconf dbsnap \
	dbstat dcscat delet dynamic \
	ebcdicdb expsamp \
	impexp \
	joinsql \
	loadqry lobeval lobfile lobloc \
	migrate monreset monsz \
	nodecat \
	openftch \
	prepbind \
	qload \
	rebind restart \
	setact static sws \
	tabscont tabspace tabsql \
	tload trigsql tspace \
	updat \
	varinp


#**************************************************************************** 
#                  2f - make allremoteclient
#**************************************************************************** 

allremoteclient : \
	udfspclient \
	otherremoteclient

#**************************************************************************** 
#                  2g - make clean
#**************************************************************************** 

clean :	\
	cleangen \
	cleanemb \
	cleanclisrv
 
cleangen :
	$(ERASE) *.o *.idy *.int 
	$(ERASE) *.txt *.ixf 

cleanemb :
	$(ERASE) advsql.cbl  
	$(ERASE) cursor.cbl 
	$(ERASE) dbauth.cbl dbstat.cbl delet.cbl dynamic.cbl  
	$(ERASE) expsamp.cbl 
	$(ERASE) impexp.cbl 
	$(ERASE) joinsql.cbl  
	$(ERASE) loadqry.cbl lobeval.cbl lobfile.cbl lobloc.cbl  
	$(ERASE) openftch.cbl 
	$(ERASE) prepbind.cbl 
	$(ERASE) qload.cbl 
	$(ERASE) rebind.cbl 
	$(ERASE) static.cbl 
	$(ERASE) tabscont.cbl tabspace.cbl tabsql.cbl  
	$(ERASE) tload.cbl trigsql.cbl tspace.cbl 
	$(ERASE) updat.cbl 
	$(ERASE) varinp.cbl 

cleanclisrv:
	$(ERASE) inpcli.cbl
	$(ERASE) inpsrv.cbl
	$(ERASE) inpsrv_wrap.c
	$(ERASE) inpsrv_wrap.exp

	$(ERASE) outcli.cbl
	$(ERASE) outsrv.cbl
	$(ERASE) outsrv_wrap.c
	$(ERASE) outsrv_wrap.exp

#**************************************************************************** 
#                  2h - make cleanall
#**************************************************************************** 

cleanall : \
	clean
	$(ERASE) *.bnd 
	$(ERASE) advsql
	$(ERASE) client cursor
	$(ERASE) d_dbconf d_dbmcon db_udcs dbauth dbcat
	$(ERASE) dbcmt dbconf dbinst dbmconf dbsnap
	$(ERASE) dbstart dbstat dbstop dcscat delet dynamic
	$(ERASE) ebcdicdb expsamp
	$(ERASE) impexp inpcli inpsrv
	$(ERASE) joinsql
	$(ERASE) loadqry lobeval lobfile lobloc
	$(ERASE) migrate monreset monsz
	$(ERASE) nodecat
	$(ERASE) openftch outcli outsrv
	$(ERASE) prepbind
	$(ERASE) qload
	$(ERASE) rebind restart
	$(ERASE) setact static sws
	$(ERASE) tabscont tabspace tabsql
	$(ERASE) tload trigsql tspace
	$(ERASE) updat
	$(ERASE) varinp

	$(ERASE) $(DB2PATH)/function/inpsrv
	$(ERASE) $(DB2PATH)/function/outsrv

#############################################################################
#  3 -- COMMANDS TO MAKE INDIVIDUAL SAMPLES
#                  3a -  utilities
#                  3b -  non embedded SQL, non client/server samples
#                  3c -  embedded SQL, non client/server samples
#                  3d -  client/server samples 
#############################################################################



#**************************************************************************** 
#                  3a -  utilities
#**************************************************************************** 

checkerr.o : checkerr.cbl 
	$(CC) -c checkerr.cbl $(CFLAGS)

#**************************************************************************** 
#                  3b -  non embedded SQL, non client/server samples
#**************************************************************************** 

client : client.cbl checkerr.o
	$(CC) -o client client.cbl checkerr.o $(CFLAGS) $(LIBS)

d_dbconf : d_dbconf.cbl checkerr.o
	$(CC) -o d_dbconf d_dbconf.cbl checkerr.o $(CFLAGS) $(LIBS)

d_dbmcon : d_dbmcon.cbl checkerr.o
	$(CC) -o d_dbmcon d_dbmcon.cbl checkerr.o $(CFLAGS) $(LIBS)

db_udcs : db_udcs.cbl checkerr.o
	$(CC) -o db_udcs db_udcs.cbl checkerr.o $(CFLAGS) $(LIBS)

dbcat : dbcat.cbl checkerr.o
	$(CC) -o dbcat dbcat.cbl checkerr.o $(CFLAGS) $(LIBS)

dbcmt : dbcmt.cbl checkerr.o
	$(CC) -o dbcmt dbcmt.cbl checkerr.o $(CFLAGS) $(LIBS)

dbconf : dbconf.cbl checkerr.o
	$(CC) -o dbconf dbconf.cbl checkerr.o $(CFLAGS) $(LIBS)

dbinst : dbinst.cbl checkerr.o
	$(CC) -o dbinst dbinst.cbl checkerr.o $(CFLAGS) $(LIBS)

dbmconf : dbmconf.cbl checkerr.o
	$(CC) -o dbmconf dbmconf.cbl checkerr.o $(CFLAGS) $(LIBS)

dbsnap : dbsnap.cbl checkerr.o
	$(CC) -o dbsnap dbsnap.cbl checkerr.o $(CFLAGS) $(LIBS)

dbstart : dbstart.cbl checkerr.o
	$(CC) -o dbstart dbstart.cbl checkerr.o $(CFLAGS) $(LIBS)

dbstop : dbstop.cbl checkerr.o
	$(CC) -o dbstop dbstop.cbl checkerr.o $(CFLAGS) $(LIBS)

dcscat : dcscat.cbl checkerr.o
	$(CC) -o dcscat dcscat.cbl checkerr.o $(CFLAGS) $(LIBS)

ebcdicdb : ebcdicdb.cbl checkerr.o
	$(CC) -o ebcdicdb ebcdicdb.cbl checkerr.o $(CFLAGS) $(LIBS)

migrate : migrate.cbl checkerr.o
	$(CC) -o migrate migrate.cbl checkerr.o $(CFLAGS) $(LIBS)

monreset : monreset.cbl checkerr.o 
	$(CC) -o monreset monreset.cbl checkerr.o $(CFLAGS) $(LIBS)

monsz : monsz.cbl checkerr.o
	$(CC) -o monsz monsz.cbl checkerr.o $(CFLAGS) $(LIBS)

nodecat : nodecat.cbl checkerr.o
	$(CC) -o nodecat nodecat.cbl checkerr.o $(CFLAGS) $(LIBS)

restart : restart.cbl checkerr.o
	$(CC) -o restart restart.cbl checkerr.o $(CFLAGS) $(LIBS)

setact : setact.cbl checkerr.o
	$(CC) -o setact setact.cbl checkerr.o $(CFLAGS) $(LIBS)

sws : sws.cbl checkerr.o
	$(CC) -o sws sws.cbl checkerr.o $(CFLAGS) $(LIBS)

#**************************************************************************** 
#                  3c -  embedded SQL non client/server samples
#**************************************************************************** 

advsql.cbl : advsql.sqb
	./embprep advsql $(DB) $(UID) $(PWD)
advsql : advsql.cbl checkerr.o
	$(CC) -o advsql advsql.cbl checkerr.o $(CFLAGS) $(LIBS)

cursor.cbl : cursor.sqb
	./embprep cursor $(DB) $(UID) $(PWD)
cursor : cursor.cbl checkerr.o
	$(CC) -o cursor cursor.cbl checkerr.o $(CFLAGS) $(LIBS)

dbauth.cbl : dbauth.sqb
	./embprep dbauth $(DB) $(UID) $(PWD)
dbauth : dbauth.cbl checkerr.o
	$(CC) -o dbauth dbauth.cbl checkerr.o $(CFLAGS) $(LIBS)

dbstat.cbl : dbstat.sqb
	./embprep dbstat $(DB) $(UID) $(PWD)
dbstat : dbstat.cbl checkerr.o
	$(CC) -o dbstat dbstat.cbl checkerr.o $(CFLAGS) $(LIBS)

delet.cbl : delet.sqb
	./embprep delet $(DB) $(UID) $(PWD)
delet : delet.cbl checkerr.o
	$(CC) -o delet delet.cbl checkerr.o $(CFLAGS) $(LIBS)

dynamic.cbl : dynamic.sqb
	./embprep dynamic $(DB) $(UID) $(PWD)
dynamic : dynamic.cbl checkerr.o
	$(CC) -o dynamic dynamic.cbl checkerr.o $(CFLAGS) $(LIBS)

expsamp.cbl : expsamp.sqb
	./embprep expsamp $(DB) $(UID) $(PWD)
expsamp : expsamp.cbl checkerr.o
	$(CC) -o expsamp expsamp.cbl checkerr.o $(CFLAGS) $(LIBS)

impexp.cbl : impexp.sqb
	./embprep impexp $(DB) $(UID) $(PWD)
impexp : impexp.cbl checkerr.o
	$(CC) -o impexp impexp.cbl checkerr.o $(CFLAGS) $(LIBS)

joinsql.cbl : joinsql.sqb
	./embprep joinsql $(DB) $(UID) $(PWD)
joinsql : joinsql.cbl checkerr.o
	$(CC) -o joinsql joinsql.cbl checkerr.o $(CFLAGS) $(LIBS)

loadqry.cbl : loadqry.sqb
	./embprep loadqry $(DB) $(UID) $(PWD)
loadqry : loadqry.cbl checkerr.o
	$(CC) -o loadqry loadqry.cbl checkerr.o $(CFLAGS) $(LIBS)

lobeval.cbl : lobeval.sqb
	./embprep lobeval $(DB) $(UID) $(PWD)
lobeval : lobeval.cbl checkerr.o
	$(CC) -o lobeval lobeval.cbl checkerr.o $(CFLAGS) $(LIBS)

lobfile.cbl : lobfile.sqb
	./embprep lobfile $(DB) $(UID) $(PWD)
lobfile : lobfile.cbl checkerr.o
	$(CC) -o lobfile lobfile.cbl checkerr.o $(CFLAGS) $(LIBS)

lobloc.cbl : lobloc.sqb
	./embprep lobloc $(DB) $(UID) $(PWD)
lobloc : lobloc.cbl checkerr.o
	$(CC) -o lobloc lobloc.cbl checkerr.o $(CFLAGS) $(LIBS)

openftch.cbl : openftch.sqb
	./embprep openftch $(DB) $(UID) $(PWD)
openftch : openftch.cbl checkerr.o
	$(CC) -o openftch openftch.cbl checkerr.o $(CFLAGS) $(LIBS)

prepbind.cbl : prepbind.sqb
	./embprep prepbind $(DB) $(UID) $(PWD)
prepbind : prepbind.cbl checkerr.o
	$(CC) -o prepbind prepbind.cbl checkerr.o $(CFLAGS) $(LIBS)

qload.cbl : qload.sqb
	./embprep qload $(DB) $(UID) $(PWD)
qload : qload.cbl checkerr.o
	$(CC) -o qload qload.cbl checkerr.o $(CFLAGS) $(LIBS)

rebind.cbl : rebind.sqb
	./embprep rebind $(DB) $(UID) $(PWD)
rebind: rebind.cbl checkerr.o
	$(CC) -o rebind rebind.cbl checkerr.o $(CFLAGS) $(LIBS)

static.cbl : static.sqb
	./embprep static $(DB) $(UID) $(PWD)
static : static.cbl checkerr.o
	$(CC) -o static static.cbl checkerr.o $(CFLAGS) $(LIBS)

tabscont.cbl : tabscont.sqb
	./embprep tabscont $(DB) $(UID) $(PWD)
tabscont : tabscont.cbl checkerr.o
	$(CC) -o tabscont tabscont.cbl checkerr.o $(CFLAGS) $(LIBS)

tabspace.cbl : tabspace.sqb
	./embprep tabspace $(DB) $(UID) $(PWD)
tabspace : tabspace.cbl checkerr.o
	$(CC) -o tabspace tabspace.cbl checkerr.o $(CFLAGS) $(LIBS)

tabsql.cbl : tabsql.sqb
	./embprep tabsql $(DB) $(UID) $(PWD)
tabsql : tabsql.cbl checkerr.o
	$(CC) -o tabsql tabsql.cbl checkerr.o $(CFLAGS) $(LIBS)

tload.cbl : tload.sqb
	./embprep tload $(DB) $(UID) $(PWD)
tload : tload.cbl checkerr.o
	$(CC) -o tload tload.cbl checkerr.o $(CFLAGS) $(LIBS)

trigsql.cbl : trigsql.sqb
	./embprep trigsql $(DB) $(UID) $(PWD)
trigsql : trigsql.cbl checkerr.o
	$(CC) -o trigsql trigsql.cbl checkerr.o $(CFLAGS) $(LIBS)

tspace.cbl : tspace.sqb
	./embprep tspace $(DB) $(UID) $(PWD)
tspace : tspace.cbl checkerr.o
	$(CC) -o tspace tspace.cbl checkerr.o $(CFLAGS) $(LIBS)

updat.cbl : updat.sqb
	./embprep updat $(DB) $(UID) $(PWD)
updat : updat.cbl checkerr.o
	$(CC) -o updat updat.cbl checkerr.o $(CFLAGS) $(LIBS)

varinp.cbl : varinp.sqb
	./embprep varinp $(DB) $(UID) $(PWD)
varinp : varinp.cbl checkerr.o
	$(CC) -o varinp varinp.cbl checkerr.o $(CFLAGS) $(LIBS)

#**************************************************************************** 
#                  3d -  client/server samples    
#**************************************************************************** 

#--------------------inpcli/inpsrv------------------------------------------#

inpcli.cbl : inpcli.sqb
	./embprep inpcli $(DB) $(UID) $(PWD)
inpcli : inpcli.cbl checkerr.o
	$(CC) -o inpcli inpcli.cbl checkerr.o $(CFLAGS) $(LIBS)

inpsrv.cbl : inpsrv.sqb
	./embprep inpsrv $(DB) $(UID) $(PWD)
inpsrv.o : inpsrv.cbl
	$(CC) -c $(CFLAGS) inpsrv.cbl
inpsrv_wrap.c : inpsrv.cbl
	wrapsrv inpsrv
inpsrv : inpsrv.o inpsrv_wrap.c
	$(CC) -x -o inpsrv inpsrv_wrap.c inpsrv.o \
	-Q -bE:inpsrv_wrap.exp -Q "-e inpsrv" $(SPLIBS) 
	$(ERASE) $(DB2PATH)/function/inpsrv
	$(COPY) inpsrv $(DB2PATH)/function/inpsrv

#--------------------outcli/outsrv------------------------------------------#

outcli.cbl : outcli.sqb
	./embprep outcli $(DB) $(UID) $(PWD)
outcli : outcli.cbl checkerr.o
	$(CC) -o outcli outcli.cbl checkerr.o $(CFLAGS) $(LIBS)

outsrv.cbl : outsrv.sqb
	./embprep outsrv $(DB) $(UID) $(PWD)
outsrv.o : outsrv.cbl
	$(CC) -c $(CFLAGS) outsrv.cbl
outsrv_wrap.c: outsrv.cbl
	wrapsrv outsrv
outsrv : outsrv.o outsrv_wrap.c
	$(CC) -x -o outsrv outsrv_wrap.c outsrv.o \
	-Q -bE:outsrv_wrap.exp -Q "-e outsrv" $(SPLIBS) 
	$(ERASE) $(DB2PATH)/function/outsrv
	$(COPY) outsrv $(DB2PATH)/function/outsrv