#  (C) COPYRIGHT International Business Machines Corp. 1995, 1999
#  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 Version 6.1
# IBM COBOL sample programs -- Windows 32-bit 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 - IBM VisualAge for COBOL
CC=cob2
# the required compiler flags
CFLAGS= -qpgmname(mixed) -c -qlib -I$(DB2PATH)\include\cobol_a

# Linker - IBM VisualAge for COBOL
LINK=cob2
# The required libraries
LIBS=$(DB2PATH)\lib\db2api.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 *.adt *.lib *.lst *.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) $(CFLAGS) checkerr.cbl

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

sws.obj : sws.cbl 
	$(CC) $(CFLAGS) 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) $(CFLAGS) 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) $(CFLAGS) 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) $(CFLAGS) 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) $(CFLAGS) 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) $(CFLAGS) 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) $(CFLAGS) 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) $(CFLAGS) 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) $(CFLAGS) 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) $(CFLAGS) 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) $(CFLAGS) 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) $(CFLAGS) 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) $(CFLAGS) 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) $(CFLAGS) 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) $(CFLAGS) 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) $(CFLAGS) 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) $(CFLAGS) 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) $(CFLAGS) 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) $(CFLAGS) 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) $(CFLAGS) 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) $(CFLAGS) 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) $(CFLAGS) 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) $(CFLAGS) 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) $(CFLAGS) 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) $(CFLAGS) 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) $(CFLAGS) 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) $(CFLAGS) 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) $(CFLAGS) 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) $(CFLAGS) inpsrv.cbl
inpsrv : inpsrv.obj
	ilib /nol /gi:inpsrv inpsrv.obj
	ilink /free /nol /dll db2api.lib inpsrv.exp inpsrv.obj iwzrwin3.obj
	$(COPY) inpsrv.dll $(DB2PATH)\function

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

outcli.cbl : outcli.sqb
	embprep outcli $(DB) $(UID) $(PWD)
outcli.obj : outcli.cbl 
	$(CC) $(CFLAGS) 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) $(CFLAGS) outsrv.cbl
outsrv : outsrv.obj
	ilib /nol /gi:outsrv outsrv.obj
	ilink /free /nol /dll db2api.lib outsrv.exp outsrv.obj iwzrwin3.obj
	$(COPY) outsrv.dll $(DB2PATH)\function