aboutsummaryrefslogtreecommitdiff
path: root/vo/votools/colbyid.cl
blob: 2316ecb5fa929774a50aa50c2f1f58cdabf1ea2d (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#{  COLBYID -- Find the column number (1-indexed) containing the specified
#   value of the ID attribute.

procedure colbyid (table, id)

string	table			{ prompt = "Table name"			}
string	id			{ prompt = "ID attribute"		}

int     column   = 0            { prompt = "Found column number (or -1)"}
string  ucd      = ""           { prompt = "Found column UCD"           }
string  name     = ""           { prompt = "Found column Name"          }
bool	print    = no		{ prompt = "Print the field number?"	}
bool	found    = no		{ prompt = "Was attribute found??"	}

begin
    string  ltab, lid
    int     nfound

    ltab   = table		# get parameters
    lid    = id
    column = -1
    nfound = 0

    tinfo (ltab, ttout-)	# get table info
    for (i=1; i <= tinfo.ncols; i=i+1) {
        keypar (ltab, "TID" // i,  >& "dev$null")
	found = keypar.found
        if (keypar.found == yes && keypar.value == lid) { 
	    if (nfound == 0) {
                column = i

                keypar (ltab, "TTYPE" // i,  >& "dev$null")
                name = ""
                if (keypar.found == yes)
                    name   = keypar.value

                keypar (ltab, "TUCD" // i,  >& "dev$null")
                ucd = ""
                if (keypar.found == yes)
                    ucd     = keypar.value
	    }
            nfound = nfound + 1
        } 
    }

    if (nfound > 1)
	printf ("Warning: %d columns found with ID='%s'\n", nfound, id)

    if (print)
	print (column)
end