(don't know where to classify this, the error is
// !--error 115
//Problème de pile détecté pendant une boucle.
//Une fonction primitive a été appelée avec un mauvais nombre d'arguments de sortie.
//Aucun test sur les arguments de sortie n'a été fait dans cette fonction.
//Rapportez ce bug s'il vous plaît :
//
//http://bugzilla.scilab.org/
)
//the following code works outside the function
M=["s" "t" "concen"
"L" "1" "317.00"
"L" "2" "326.00"]
titles = M(1,:);
values=M;
for j=1:size(titles,2)
name = titles(1,j);
try
execstr(name+"=evstr(values(2:$,j))")
catch
execstr(name+"=values(2:$,j)")
end
execstr(name+"_set=unique("+name+")''")
end
varnames = strcat(titles,",")+","+strcat(titles+"_set",",");
disp(t_set,"t_set")
//but bugs when called by the function
function buggy_read_db()
//should read a database and write variables in the calling environment. expects columns with titles.
titles = M(1,:);
values=M;
for j=1:size(titles,2)
name = titles(1,j);
try
execstr(name+"=evstr(values(2:$,j))")
catch
execstr(name+"=values(2:$,j)")
end
execstr(name+"_set=unique("+name+")''")
end
varnames = strcat(titles,",")+","+strcat(titles+"_set",",");
execstr("["+varnames+"]=return("+varnames+")");
endfunction
//bugs
buggy_read_db( )
function worky_read_db()
//in this version we dropped the try execstr
titles = M(1,:);
values=M;
for j=1:size(titles,2)
name = titles(1,j);
// try
// execstr(name+"=evstr(values(2:$,j))")
// catch
execstr(name+"=values(2:$,j)")
// end
execstr(name+"_set=unique("+name+")''")
end
varnames = strcat(titles,",")+","+strcat(titles+"_set",",");
execstr("["+varnames+"]=return("+varnames+")");
endfunction
//this one works
worky_read_db()
t_set