Le 24/02/2016 17:10, Clément David a écrit :
Hi Samuel,

Le mercredi 24 février 2016 à 15:27 +0100, Samuel Gougeon a écrit :
I am pretty sure that an horizontal iterator was recently implemented for the 
format
used within mprintf(), but i am failing to find any information about how to 
use it.
What do you mean by "horizontal iterator" ? Is it like the "argument_index$" 
for Java [1] ?

I don't know much java, but as Fortran format allows it with "#(...)", this one replicates at most #times the content of () (that may have other (...) patterns (recursive replication/substitution))... Then, for all provided data, the format is feed with row-wise input data and builds the output with replicating the format as many times as some input data remain (for the current row), and then stop without error (even before the end of the format).

Unfortunately, write() that could manage such a handy fortran format is not well implemented:

 * the write() format cannot mix input data types (bug 3798)
   <http://bugzilla.scilab.org/3798>
 * when the write() format meets a string (a), its parsing stops (bug
   12476) <http://bugzilla.scilab.org/12476>

Being so handicaped, write() has not much interest wrt mprintf(), and AFAIK, there is presently no native Scilab function handling input data in this way. We are compelled to use things
like this msprintf():

--> NL=4; NC=6; Nchar=5;

--> data = matrix(strsplit(ascii(grand(NL*NC*Nchar,1,"uin",32,126)),(1:NL*NC-1)*Nchar),NL,NC)
 data  =

!/6QV0  L)3zw  I<wxX  l/u02  f(kAd  #P8oI  !
!                                          !
!+`kUF  !'{*`  BE$d%  q3WnC  Ch:iP  3|fj^  !
!                                          !
!FdBRS  !Gsp"  VkE<-  ySYC<  UNX-.  Gbfb#  !
!                                          !
!xJZH3  W!(g"  ~p9@z   3Df9  6CjU7  MDWnB  !

--> mprintf(strcat(emptystr(1,size(data,2))+"%10s ")+"\n", data)
     /6QV0      L)3zw      I<wxX      l/u02 f(kAd      #P8oI
     +`kUF      !'{*`      BE$d%      q3WnC Ch:iP      3|fj^
     FdBRS      !Gsp"      VkE<-      ySYC< UNX-.      Gbfb#
     xJZH3      W!(g"      ~p9@z       3Df9 6CjU7      MDWnB

since write() misworks:

--> write(%io(2), data, "((2x a))")
  /6QV0
  +`kUF
  FdBRS
  xJZH3
  L)3zw
  !'{*`
  !Gsp"
  W!(g"
  I<wxX
  BE$d%
  VkE<-
  ~p9@z
  l/u02
  q3WnC
  ySYC<
   3Df9
  f(kAd
  Ch:iP
  UNX-.
  6CjU7
  #P8oI
  3|fj^
  Gbfb#
  MDWnB

Samuel

_______________________________________________
users mailing list
users@lists.scilab.org
http://lists.scilab.org/mailman/listinfo/users

Reply via email to