define mv_colname char(266)
define mv_coltype integer
define mv_colsize integer
define mv_dbname char(255)
define mv_tabname char(255)
define mv_outfile char(512)

main


define lv_filename CHAR(255)
define a integer
initialize mv_dbname, mv_tabname,mv_outfile to null



for a=1 to num_args()
	if arg_val(a)="-d" then
		let mv_dbname=arg_val(a+1)
		let a=a+1
	end if
		
	if arg_val(a)="-t" then
		let mv_tabname=arg_val(a+1)
		let a=a+1
	end if
	if arg_val(a)="-o" then
		let mv_outfile=arg_val(a+1)
		let a=a+1
	end if
	
end for


if mv_tabname is null or mv_dbname is null then
	display "Usage:  generate_ace -d dbname -t tabname"
	exit program
end if

database mv_dbname

if mv_outfile is not null Then
	#LET lv_filename=mv_tabname clipped,".aace"
	START REPORT r_report TO mv_outfile
else
	START REPORT r_report 
end if

IF start_get_cols(mv_tabname)=0 THEN
	DISPLAY "Unable to get columns for table ",mv_tabname clipped
	EXIT PROGRAM
END IF

WHILE get_cols() 
		OUTPUT TO REPORT r_report (mv_colname)
END WHILE
FINISH REPORT r_report

end main


REPORT r_report(r_colname)
DEFINE r_colname CHAR(30)
DEFINE lv_printed INTEGER
OUTPUT LEFT MARGIN 0 
RIGHT MARGIN 0
TOP MARGIN 0
BOTTOM MARGIN 0
PAGE LENGTH 1

FORMAT
FIRST PAGE HEADER
	LET lv_printed=0

ON EVERY ROW
	IF lv_printed THEN 
		PRINT ","
	ELSE
		PRINT "DATABASE ",mv_dbname clipped, " END"
		PRINT ""
		PRINT "SELECT "
		LET lv_printed=1
		PRINT ""
	END IF
	
	PRINT "    ",r_colname clipped;

ON LAST ROW
	PRINT ""
	PRINT "FROM ",mv_tabname clipped," END"
	PRINT ""
	PRINT "FORMAT EVERY ROW END"


END REPORT 






function start_get_cols(lv_tabname) 
define lv_tabname char(256)
define lv_ok integer
code
 trim(lv_tabname);
 //A4GLSQL_get_columns char* tabname char* colname int* dtype int* size -> int
 lv_ok=A4GLSQL_get_columns (lv_tabname,"",0,0);
endcode
return lv_ok
end function


function get_cols() 
define lv_ok INTEGER
code
{
char *ptr;
strcpy(mv_colname,"");
 lv_ok=A4GLSQL_next_column (&ptr, &mv_coltype, &mv_colsize) ;
if (ptr) strcpy(mv_colname,ptr);
}
endcode
return lv_ok
end function