OpenVMS Source Code Demos

mysql_demo12

1000	declare string constant k_program = "mysql_demo12"
	!=========================================================================================
	! title  : mysql_demo12.bas
	! author : Neil Rieck ( https://neilrieck.net MAILTO:n.rieck@bell.net )
	!        : Waterloo, Ontario, Canada.
	! created: 2017-08-17
	! OS     : OpenVMS-8.4 (Itanium2)
	! notes  : 1) this program was derived from MYSQL_DEMO11.bas and shows how to copy string
	!	   data from "C" to "BASIC"
	!	   2) this C portion of this demo concatenates record fields onto each individual
	!	   line of the BASIC array which may not be the most efficient way to go
	! ver who when   why
	! --- --- ------ -------------------------------------------------------------------------
	! 12  NSR 170817 1. original effort
	!     NSR 171121 2. minor tweak in the data presentation area
	!=========================================================================================
	option type=explicit							! no kid stuff
	!
	! passing notes:
	! 1) passing "string desc"		passes the address of a VMS-style string descriptor
	! 2) passing "string dim() desc"	passes the address of an array descriptor which contains
	!					dimensions as well as the address of the stored data (a
	!					list of string descriptors)
	! 3) passing "string dim() by ref"	passes the address of the stored data (a list of string
	!					descriptors) so you need to provide array dimensions
	!
	external long function NSR_CONNECTOR(	long by ref		,	&
						long by ref		,	&
						long by ref		,	&
						long by ref		,	&
						string by desc		,	&
						string dim() by ref	,	&
						string by desc			)
	!
	declare long		rc		,&
				test		,&
				i,j		,&
				rows,cols,stat	,&
				max_rows	,&
		string		sqlMsg$		,&
				sqlCmd$		!
	!
	goto main								!
	!=======================================================================
	!	init arrays
	!	note: unless specified otherwise, declared arrays always begin
	!	with subscript zero
	!=======================================================================
1100	init_arrays:
	dim string a$(max_rows)							! assumes: 0..max_rows
	return
	!=======================================================================
	!	main
	!=======================================================================
1200	main:
	print "-i-program: "; k_program						!
	rc = 0									!
	max_rows	= 999							! 999 rows
	gosub init_arrays							! allocate some memory
	sqlCmd$		= "select user,password,host from user"			!
	!
	print "-i-BASIC calling C =============================="		!
	test = NSR_CONNECTOR(	rows,						! returned rows			&
				cols,						! returned columns		&
				stat,						! returned sql status		&
				max_rows,					! pass size of array		&
				sqlCmd$,					! sql command			&
				a$(),						! data passed back thru here	&
				sqlMsg$)					! sql message
	print "-i-now back in BASIC ============================"		!
	print "-i-status:";stat							! returned sql status
	print "-i-msg   : ";sqlMsg$						! returned sql status text
	print "-i-rows  :";rows							! returned rows
	print "-i-cols  :";cols							! returned columns
	print "-i-raw dump of row data from the array:"				!
	for i = 0 to (rows-1)							!
	    print "-i-row:";i;" ";a$(i)						!
	next i									!
	!
32000	fini:									!
	print "-i-exiting BASIC ================================"
	end

Back to Home
Neil Rieck
Waterloo, Ontario, Canada.