Messages standardization
[scilab.git] / scilab / modules / compatibility_functions / macros / mtlb_sscanf.sci
1 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
2 // Copyright (C) ???? - INRIA - Scilab 
3 // 
4 // This file must be used under the terms of the CeCILL.
5 // This source file is licensed as described in the file COPYING, which
6 // you should have received as part of this distribution.  The terms
7 // are also available at    
8 // http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
9
10 function [a,nvars,errmsg,nextindex] = mtlb_sscanf(s,fmt,sz)
11 [lhs,rhs]=argn()
12 if lhs==4 then error(msprintf(gettext("%s: ''%s'' not implemented.\n"),"mtlb_sscanf","nextindex")),end
13 if rhs<3 then sz=%inf,end
14 nmx=prod(sz)
15 nvars=0
16
17 errmsg=''
18 //replicate the format many times to emulate Matlab format reuse
19 fmt=strcat(fmt(ones(1,50)))
20
21 lvars=msscanf(s,fmt);
22 if lvars==-1 then
23   a=''
24   return
25   errmsg=msprintf(gettext("%s: End of string reached before data has been read.\n"),"mtlb_sscanf");
26 else
27   nvars=size(lvars)
28   nv=min(nvars,nmx)
29   if nv==0 then
30     a=[]
31   else
32     typ=10
33     a=[]
34     for k=1:nv,typ=min(typ,type(lvars(k))),end
35     if typ==1 then
36       for k=1:nv
37         if type(lvars(k))==1 then
38           a=[a;lvars(k)]
39         else
40           a=[a;ascii(lvars(k))']
41         end
42       end
43       if size(sz,'*')<>1 then 
44         nv=size(a,'*')
45         n=ceil(nv/sz(1))
46         if n*sz(1)>nv then a(n*sz(1))=0;end
47         a=matrix(a,sz(1),n),
48       end
49     else
50       for k=1:nv
51         a=[a;lvars(k)]
52       end
53       if size(sz,'*')<>1 then
54         if sz(1)<=nv then
55           A=ascii(a)'
56           nv=size(A,'*')
57           n=ceil(nv/sz(1))
58           if n*sz(1)>nv then A(nv+1:n*sz(1))=ascii(' ');end
59           A=matrix(A,sz(1),n)
60           a=[]
61           for l=1:sz(1)
62             a=[a;ascii(A(l,:))]
63           end
64         end
65       else
66         a=strcat(a)
67       end
68     end
69   end
70 end
71 endfunction