#  (C) COPYRIGHT International Business Machines Corp. 1997, 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 -- OS/2 operating systems
                         

# Enter one of the following commands 
#
#  nmake <app_name>        - Builds the program designated by <app_name>
#
#  nmake all               - Builds the all the supplied sample programs
#  nmake udfspserver       - Builds the examples that implement
#                            stored procedures and UDFs (on the server)
#  nmake localclient       - Builds the examples that can only be run
#                            successfully on a server 
#  nmake udfspclient       - Builds the examples that call stored 
#                            procedures and UDFs ( they can run remotely )
#  nmake otherremoteclient - Builds the examples that will run successfully
#                            on a client platform ( others than udfspclient )
#  nmake allremoteclient   - Builds programs in udfspclient and otherremoteclient
#                            categories
#
#  nmake clean             - Erases intermediate files
#  nmake 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                                     
##################################################################################

# Compiler and linker
CC=cobol
LINK=cbllink

# The required libraries
LIBS= db2api.lib db2gmf32.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=copy
ERASE=del

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


#**************************************************************************** 
#                  2a - nmake all
#**************************************************************************** 

all : \
	allremoteclient \
	localclient \
	udfspserver

#**************************************************************************** 
#                  2b - nmake udfspserver
#**************************************************************************** 

udfspserver : \
	inpsrv \
	outsrv

#**************************************************************************** 
#                  2c - nmake localclient 
#**************************************************************************** 

localclient : \
	dbstart dbstop 

#**************************************************************************** 
#                  2d - nmake udfspclient
#**************************************************************************** 

udfspclient : \
	inpcli \
	outcli 

#**************************************************************************** 
#                  2e - nmake 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 - nmake allremoteclient
#**************************************************************************** 

allremoteclient : \
	udfspclient \
	otherremoteclient

#**************************************************************************** 
#                  2g - nmake clean
#**************************************************************************** 

clean :	\
	cleangen \
	cleanemb 
 
cleangen :
	- $(ERASE) *.obj *.map *.txt 

cleanemb :
	- $(ERASE) advsql.cbl  
	- $(ERASE) cursor.cbl 
	- $(ERASE) dbauth.cbl dbstat.cbl delet.cbl dynamic.cbl  
	- $(ERASE) expsamp.cbl 
	- $(ERASE) impexp.cbl inpcli.cbl inpsrv.cbl 
	- $(ERASE) joinsql.cbl  
	- $(ERASE) loadqry.cbl lobeval.cbl lobfile.cbl lobloc.cbl  
	- $(ERASE) openftch.cbl outcli.cbl outsrv.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 

#**************************************************************************** 
#                  2h - nmake cleanall
#**************************************************************************** 

cleanall : \
	clean
	- $(ERASE) *.exe *.bnd *.dll 
	- $(ERASE) $(DB2PATH)\function\inpsrv.dll
	- $(ERASE) $(DB2PATH)\function\outsrv.dll

#############################################################################
#  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.obj : checkerr.cbl 
	$(CC) checkerr.cbl;

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

client.obj : client.cbl 
	$(CC) client.cbl;
client : client.obj checkerr.obj
	$(LINK) client.obj checkerr.obj $(LIBS)

d_dbconf.obj : d_dbconf.cbl 
	$(CC) d_dbconf.cbl;
d_dbconf : d_dbconf.obj checkerr.obj
	$(LINK) d_dbconf.obj checkerr.obj $(LIBS)

d_dbmcon.obj : d_dbmcon.cbl 
	$(CC) d_dbmcon.cbl;
d_dbmcon : d_dbmcon.obj checkerr.obj
	$(LINK) d_dbmcon.obj checkerr.obj $(LIBS)

db_udcs.obj : db_udcs.cbl 
	$(CC) db_udcs.cbl;
db_udcs : db_udcs.obj checkerr.obj
	$(LINK) db_udcs.obj checkerr.obj $(LIBS)

dbcat.obj : dbcat.cbl 
	$(CC) dbcat.cbl;
dbcat : dbcat.obj checkerr.obj
	$(LINK) dbcat.obj checkerr.obj $(LIBS)

dbcmt.obj : dbcmt.cbl 
	$(CC) dbcmt.cbl;
dbcmt : dbcmt.obj checkerr.obj
	$(LINK) dbcmt.obj checkerr.obj $(LIBS)

dbconf.obj : dbconf.cbl 
	$(CC) dbconf.cbl;
dbconf : dbconf.obj checkerr.obj
	$(LINK) dbconf.obj checkerr.obj $(LIBS)

dbinst.obj : dbinst.cbl 
	$(CC) dbinst.cbl;
dbinst : dbinst.obj checkerr.obj
	$(LINK) dbinst.obj checkerr.obj $(LIBS)

dbmconf.obj : dbmconf.cbl 
	$(CC) dbmconf.cbl;
dbmconf : dbmconf.obj checkerr.obj
	$(LINK) dbmconf.obj checkerr.obj $(LIBS)

dbsnap.obj : dbsnap.cbl 
	$(CC) dbsnap.cbl;
dbsnap : dbsnap.obj checkerr.obj
	$(LINK) dbsnap.obj checkerr.obj $(LIBS)

dbstart.obj : dbstart.cbl 
	$(CC) dbstart.cbl;
dbstart : dbstart.obj checkerr.obj
	$(LINK) dbstart.obj checkerr.obj $(LIBS)

dbstop.obj : dbstop.cbl 
	$(CC) dbstop.cbl;
dbstop : dbstop.obj checkerr.obj
	$(LINK) dbstop.obj checkerr.obj $(LIBS)

dcscat.obj : dcscat.cbl 
	$(CC) dcscat.cbl;
dcscat : dcscat.obj checkerr.obj
	$(LINK) dcscat.obj checkerr.obj $(LIBS)

ebcdicdb.obj : ebcdicdb.cbl 
	$(CC) ebcdicdb.cbl;
ebcdicdb : ebcdicdb.obj checkerr.obj
	$(LINK) ebcdicdb.obj checkerr.obj $(LIBS)

migrate.obj : migrate.cbl 
	$(CC) migrate.cbl;
migrate : migrate.obj checkerr.obj
	$(LINK) migrate.obj checkerr.obj $(LIBS)

monreset.obj : monreset.cbl 
	$(CC) monreset.cbl;
monreset : monreset.obj checkerr.obj
	$(LINK) monreset.obj checkerr.obj $(LIBS)

monsz.obj : monsz.cbl 
	$(CC) monsz.cbl;
monsz : monsz.obj checkerr.obj
	$(LINK) monsz.obj checkerr.obj $(LIBS)

nodecat.obj : nodecat.cbl 
	$(CC) nodecat.cbl;
nodecat : nodecat.obj checkerr.obj
	$(LINK) nodecat.obj checkerr.obj $(LIBS)

restart.obj : restart.cbl 
	$(CC) restart.cbl;
restart : restart.obj checkerr.obj
	$(LINK) restart.obj checkerr.obj $(LIBS)

setact.obj : setact.cbl 
	$(CC) setact.cbl;
setact : setact.obj checkerr.obj
	$(LINK) setact.obj checkerr.obj $(LIBS)

sws.obj : sws.cbl 
	$(CC) sws.cbl;
sws : sws.obj checkerr.obj
	$(LINK) sws.obj checkerr.obj $(LIBS)

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

advsql.cbl : advsql.sqb
	embprep advsql $(DB) $(UID) $(PWD)
advsql.obj : advsql.cbl 
	$(CC) advsql.cbl;
advsql : advsql.obj checkerr.obj
	$(LINK) advsql.obj checkerr.obj $(LIBS)


cursor.cbl : cursor.sqb
	embprep cursor $(DB) $(UID) $(PWD)
cursor.obj : cursor.cbl 
	$(CC) cursor.cbl;
cursor : cursor.obj checkerr.obj
	$(LINK) cursor.obj checkerr.obj $(LIBS)

dbauth.cbl : dbauth.sqb
	embprep dbauth $(DB) $(UID) $(PWD)
dbauth.obj : dbauth.cbl 
	$(CC) dbauth.cbl;
dbauth : dbauth.obj checkerr.obj
	$(LINK) dbauth.obj checkerr.obj $(LIBS)

dbstat.cbl : dbstat.sqb
	embprep dbstat $(DB) $(UID) $(PWD)
dbstat.obj : dbstat.cbl 
	$(CC) dbstat.cbl;
dbstat : dbstat.obj checkerr.obj
	$(LINK) dbstat.obj checkerr.obj $(LIBS)

delet.cbl : delet.sqb
	embprep delet $(DB) $(UID) $(PWD)
delet.obj : delet.cbl 
	$(CC) delet.cbl;
delet : delet.obj checkerr.obj
	$(LINK) delet.obj checkerr.obj $(LIBS)

dynamic.cbl : dynamic.sqb
	embprep dynamic $(DB) $(UID) $(PWD)
dynamic.obj : dynamic.cbl 
	$(CC) dynamic.cbl;
dynamic : dynamic.obj checkerr.obj
	$(LINK) dynamic.obj checkerr.obj $(LIBS)

expsamp.cbl : expsamp.sqb
	embprep expsamp $(DB) $(UID) $(PWD)
expsamp.obj : expsamp.cbl 
	$(CC) expsamp.cbl;
expsamp : expsamp.obj checkerr.obj
	$(LINK) expsamp.obj checkerr.obj $(LIBS)

impexp.cbl : impexp.sqb
	embprep impexp $(DB) $(UID) $(PWD)
impexp.obj : impexp.cbl 
	$(CC) impexp.cbl;
impexp : impexp.obj checkerr.obj
	$(LINK) impexp.obj checkerr.obj $(LIBS)


joinsql.cbl : joinsql.sqb
	embprep joinsql $(DB) $(UID) $(PWD)
joinsql.obj : joinsql.cbl 
	$(CC) joinsql.cbl;
joinsql : joinsql.obj checkerr.obj
	$(LINK) joinsql.obj checkerr.obj $(LIBS)

loadqry.cbl : loadqry.sqb
	embprep loadqry $(DB) $(UID) $(PWD)
loadqry.obj : loadqry.cbl 
	$(CC) loadqry.cbl;
loadqry : loadqry.obj checkerr.obj
	$(LINK) loadqry.obj checkerr.obj $(LIBS)

lobeval.cbl : lobeval.sqb
	embprep lobeval $(DB) $(UID) $(PWD)
lobeval.obj : lobeval.cbl 
	$(CC) lobeval.cbl;
lobeval : lobeval.obj checkerr.obj
	$(LINK) lobeval.obj checkerr.obj $(LIBS)

lobfile.cbl : lobfile.sqb
	embprep lobfile $(DB) $(UID) $(PWD)
lobfile.obj : lobfile.cbl 
	$(CC) lobfile.cbl;
lobfile : lobfile.obj checkerr.obj
	$(LINK) lobfile.obj checkerr.obj $(LIBS)

lobloc.cbl : lobloc.sqb
	embprep lobloc $(DB) $(UID) $(PWD)
lobloc.obj : lobloc.cbl 
	$(CC) lobloc.cbl;
lobloc : lobloc.obj checkerr.obj
	$(LINK) lobloc.obj checkerr.obj $(LIBS)

openftch.cbl : openftch.sqb
	embprep openftch $(DB) $(UID) $(PWD)
openftch.obj : openftch.cbl 
	$(CC) openftch.cbl;
openftch : openftch.obj checkerr.obj
	$(LINK) openftch.obj checkerr.obj $(LIBS)

prepbind.cbl : prepbind.sqb
	embprep prepbind $(DB) $(UID) $(PWD)
prepbind.obj : prepbind.cbl 
	$(CC) prepbind.cbl;
prepbind : prepbind.obj checkerr.obj
	$(LINK) prepbind.obj checkerr.obj $(LIBS)

qload.cbl : qload.sqb
	embprep qload $(DB) $(UID) $(PWD)
qload.obj : qload.cbl 
	$(CC) qload.cbl;
qload : qload.obj checkerr.obj
	$(LINK) qload.obj checkerr.obj $(LIBS)

rebind.cbl : rebind.sqb
	embprep rebind $(DB) $(UID) $(PWD)
rebind.obj : rebind.cbl 
	$(CC) rebind.cbl;
rebind : rebind.obj checkerr.obj
	$(LINK) rebind.obj checkerr.obj $(LIBS)

static.cbl : static.sqb
	embprep static $(DB) $(UID) $(PWD)
static.obj : static.cbl 
	$(CC) static.cbl;
static : static.obj checkerr.obj
	$(LINK) static.obj checkerr.obj $(LIBS)

tabscont.cbl : tabscont.sqb
	embprep tabscont $(DB) $(UID) $(PWD)
tabscont.obj : tabscont.cbl 
	$(CC) tabscont.cbl;
tabscont : tabscont.obj checkerr.obj
	$(LINK) tabscont.obj checkerr.obj $(LIBS)

tabspace.cbl : tabspace.sqb
	embprep tabspace $(DB) $(UID) $(PWD)
tabspace.obj : tabspace.cbl 
	$(CC) tabspace.cbl;
tabspace : tabspace.obj checkerr.obj
	$(LINK) tabspace.obj checkerr.obj $(LIBS)

tabsql.cbl : tabsql.sqb
	embprep tabsql $(DB) $(UID) $(PWD)
tabsql.obj : tabsql.cbl 
	$(CC) tabsql.cbl;
tabsql : tabsql.obj checkerr.obj
	$(LINK) tabsql.obj checkerr.obj $(LIBS)

tload.cbl : tload.sqb
	embprep tload $(DB) $(UID) $(PWD)
tload.obj : tload.cbl 
	$(CC) tload.cbl;
tload : tload.obj checkerr.obj
	$(LINK) tload.obj checkerr.obj $(LIBS)

trigsql.cbl : trigsql.sqb
	embprep trigsql $(DB) $(UID) $(PWD)
trigsql.obj : trigsql.cbl 
	$(CC) trigsql.cbl;
trigsql : trigsql.obj checkerr.obj
	$(LINK) trigsql.obj checkerr.obj $(LIBS)

tspace.cbl : tspace.sqb
	embprep tspace $(DB) $(UID) $(PWD)
tspace.obj : tspace.cbl 
	$(CC) tspace.cbl;
tspace : tspace.obj checkerr.obj
	$(LINK) tspace.obj checkerr.obj $(LIBS)

updat.cbl : updat.sqb
	embprep updat $(DB) $(UID) $(PWD)
updat.obj : updat.cbl 
	$(CC) updat.cbl;
updat : updat.obj checkerr.obj
	$(LINK) updat.obj checkerr.obj $(LIBS)

varinp.cbl : varinp.sqb
	embprep varinp $(DB) $(UID) $(PWD)
varinp.obj : varinp.cbl 
	$(CC) varinp.cbl;
varinp : varinp.obj checkerr.obj
	$(LINK) varinp.obj checkerr.obj $(LIBS)

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

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

inpcli.cbl : inpcli.sqb
	embprep inpcli $(DB) $(UID) $(PWD)
inpcli.obj : inpcli.cbl 
	$(CC) inpcli.cbl;
inpcli : inpcli.obj checkerr.obj
	$(LINK) inpcli.obj checkerr.obj $(LIBS)

inpsrv.cbl : inpsrv.sqb
	embprep inpsrv $(DB) $(UID) $(PWD)
inpsrv.obj : inpsrv.cbl 
	$(CC) inpsrv.cbl;
inpsrv : inpsrv.obj
	$(LINK) /d inpsrv.obj $(LIBS)
	$(COPY) inpsrv.dll $(DB2PATH)\function

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

outcli.cbl : outcli.sqb
	embprep outcli $(DB) $(UID) $(PWD)
outcli.obj : outcli.cbl 
	$(CC) outcli.cbl;
outcli : outcli.obj checkerr.obj
	$(LINK) outcli.obj checkerr.obj $(LIBS)

outsrv.cbl : outsrv.sqb
	embprep outsrv $(DB) $(UID) $(PWD)
outsrv.obj : outsrv.cbl 
	$(CC) outsrv.cbl;
outsrv : outsrv.obj
	$(LINK) /d outsrv.obj $(LIBS)
	$(COPY) outsrv.dll $(DB2PATH)\function