# $Header: /home/cvsroot/tcldb/wisql/Tlib/SYBgetEZcols,v 1.4 1998/02/16 04:40:45 de Exp ${DB}getEZcols,v 1.1.1.1 1996/10/12 02:26:27 de Exp $
# tcl procs saved on Tue Sep 05 09:32:55 PDT 1995

proc SYBgetEZcols which {

global base table sybmsg syb server Db
  global MsgW

upvar #0 EZ${which}cols cols
upvar #0 EZ${which}colatts colatts
upvar #0 EZ${which}shows shows
upvar #0 EZEkeys keys


	catch {unset colatts}
	set cols ""

        set temp [split $table .]
        set usr [lindex $temp 0]
        set tbl  [lindex $temp 1]

        set sqlcmd "select syscolumns.name, systypes.name,  syscolumns.length, syscolumns.status from syscolumns, sysobjects, systypes  where syscolumns.id = sysobjects.id and  sysobjects.name = '$tbl' and  sysobjects.uid = user_id('$usr') and  syscolumns.usertype = systypes.usertype"

#       set sqlcmd "select syscolumns.name, systypes.name,  # syscolumns.length, syscolumns.status from syscolumns, sysobjects, systypes  # where syscolumns.id = sysobjects.id and  # sysobjects.name = '$table' and  # syscolumns.usertype = systypes.usertype"


        set sqt "syscolumns/sysobjects/systypes"
        set res [doSQL 1]
        if {[lindex $res 0] == "ERROR"} {
                echo "Something went wrong here:"
                echo "$sqlcmd\n$sybmsg(msgno): $sybmsg(msgtext)"
                exit 1
        }

	set i 0
        while {1 == 1} {

                set line [sybNext 1]
                if {[lindex $line 0] == "ERROR"} {
                        echo "$sybmsg(msgno): $sybmsg(msgtext)"
                        break
                }

                if {$line == ""} {break}

#               column name
                set c [lindex $line 0]
#               data type
                set t [lindex $line 1]
#               length, 3rd field
                set s [lindex $line 2]
#               nulls permitted?
                set n [lindex $line 3]

                set cc [string tolower $c]
                lappend cols $cc
		keylset colatts($cc) name $c type $t size $s nulls $n

		incr i

        }

	if {$which == "E"} {

        set pk [SYBgetPkeys $table]


        if {[lindex $pk 0] == "ERROR"} {
                setMsg $MsgW "$pk"
                set pk ""
        }

        set keys {}
        foreach k $pk {
                if {$k > 0} {
                        lappend keys [lindex $cols [expr {$k - 1}]]
                }
        }

	foreach c $cols {
#		set shows to show this col, only if not already set
		set ierr [catch {set x $shows($c)}]
		if {($ierr) || ([lsearch $keys $c] >= 0)} {
		set shows($c) 1
		}
	}

	}
}

