Typo fixes
[scilab.git] / scilab / modules / scicos / macros / scicos_scicos / setvalue.sci
index 3971bed..e786b26 100644 (file)
-//  Scicos\r
-//\r
-//  Copyright (C) INRIA - METALAU Project <scicos@inria.fr>\r
-//                      - Alan Layec <alan.layec@inria.fr>\r
-//\r
-// This program is free software; you can redistribute it and/or modify\r
-// it under the terms of the GNU General Public License as published by\r
-// the Free Software Foundation; either version 2 of the License, or\r
-// (at your option) any later version.\r
-//\r
-// This program is distributed in the hope that it will be useful,\r
-// but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
-// GNU General Public License for more details.\r
-//\r
-// You should have received a copy of the GNU General Public License\r
-// along with this program; if not, write to the Free Software\r
-// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.\r
-//\r
-// See the file ../license.txt\r
-//\r
-\r
-function [%ok,%1,%2,%3,%4,%5,...\r
-          %6,%7,%8,%9,%10,...\r
-          %11,%12,%13,%14,%15,...\r
-          %16,%17,%18,%19,%20]=setvalue(%desc,%lables,%typ,%ini)\r
-\r
-// To avoid infinite loops in set section of blocks during eval\r
-if %scicos_prob==%t then \r
-       %ok=%f\r
-        [%1,%2,%3,%4,%5,...\r
-         %6,%7,%8,%9,%10,...\r
-         %11,%12,%13,%14,%15,...\r
-         %16,%17,%18,%19,%20]=(0,0,0,0,...\r
-                               0,0,0,0,0,0,...\r
-                               0,0,0,0,0,...\r
-                               0,0,0,0,0)\r
-return;end\r
-//  setvalues -  data acquisition, getvalue equivalent without dialog\r
-//%Syntax\r
-//  [%ok,x1,..,x18]=setvalue(desc,labels,typ,ini)\r
-//%Parameters\r
-//  desc    : column vector of strings, dialog general comment \r
-//  labels  : n column vector of strings, labels(i) is the label of \r
-//            the ith required value\r
-//  typ     : list(typ1,dim1,..,typn,dimn)\r
-//            typi : defines the type of the ith required value\r
-//                   if may have the following values:\r
-//                   'mat' : stands for matrix of scalars \r
-//                   'col' : stands for column vector of scalars\r
-//                   'row' : stands for row vector of scalars\r
-//                   'vec' : stands for  vector of scalars\r
-//                   'str' : stands for string\r
-//                   'lis' : stands for list\r
-//                   'pol' : stands for polynomials\r
-//                   'r'   : stands for rational\r
-//            dimi : defines the size of the ith required value\r
-//                   it must be\r
-//                    - an integer or a 2-vector of integers (-1 stands for\r
-//                      arbitrary dimension)\r
-//                    - an evaluatable character string\r
-//  ini     : n column vector of strings, ini(i) gives the suggested\r
-//            response for the ith required value\r
-//  %ok      : boolean ,%t if %ok button pressed, %f if cancel button pressed\r
-//  xi      : contains the ith required value if %ok==%t\r
-//%Description\r
-// getvalues function uses ini strings to evaluate required args \r
-// with error checking,\r
-//%Remarks\r
-// All correct scilab syntax may be used as responses, for matrices \r
-// and vectors getvalues automatically adds [ ] around the given response\r
-// before numerical evaluation\r
-//%Example\r
-// labels=['magnitude';'frequency';'phase    '];\r
-// [ampl,freq,ph]=setvalue('define sine signal',labels,..\r
-//            list('vec',1,'vec',1,'vec',1),['0.85';'10^2';'%pi/3'])\r
-// \r
-//%See also\r
-// x_mdialog, dialog\r
-//!\r
-// 17/01/07 -Alan- - %scicos_context behavior reviewed in accordance to context_evstr macro\r
-//                 - pass int in field of type vec/mat/row/col (F. Nassif's Work)\r
-//\r
-// 05/02/07 -Alan- : update to %20 rhs parameters\r
-//\r
-[%lhs,%rhs]=argn(0)\r
-\r
-%nn=prod(size(%lables))\r
-if %lhs<>%nn+2&%lhs<>%nn+1 then error(41),end\r
-if size(%typ)<>2*%nn then\r
-  error('typ : list(''type'',[sizes],...)')\r
-end\r
-%1=[];%2=[];%3=[];%4=[];%5=[];\r
-%6=[];%7=[];%8=[];%9=[];%10=[];\r
-%11=[];%12=[];%13=[];%14=[],%15=[];\r
-%16=[];%17=[];%18=[];%19=[],%20=[];\r
-\r
-if %rhs==3 then  %ini=emptystr(%nn,1),end\r
-%ok=%t\r
-while %t do\r
-  %str=%ini;\r
-  if %str==[] then %ok=%f,break,end\r
-  for %kk=1:%nn\r
-    %cod=ascii(%str(%kk))\r
-    %spe=find(%cod==10)\r
-    if %spe<>[] then\r
-      %semi=ascii(';')\r
-      %cod(%spe)=%semi*ones(%spe')\r
-      %str(%kk)=ascii(%cod)\r
-    end\r
-  end\r
-\r
-  [%vv_list,%ierr_vec]=context_evstr(%str,%scicos_context);\r
-\r
-  %noooo=0\r
-  for %kk=1:%nn\r
-    %vv=%vv_list(%kk)\r
-    %ierr=%ierr_vec(%kk)\r
-    select part(%typ(2*%kk-1),1:3)\r
-    case 'mat'\r
-      if %ierr<>0  then \r
-       %noooo=-%kk,break,\r
-      end\r
-      //29/12/06\r
-      //the type of %vv is accepted if it is constant or integer\r
-      if and(type(%vv)<>[1 8]) then %nok=-%kk,break,end\r
-      %sz=%typ(2*%kk);if type(%sz)==10 then %sz=evstr(%sz),end\r
-      [%mmmm,%nnnnn]=size(%vv)\r
-      %ssss=string(%sz(1))+' x '+string(%sz(2))\r
-      if %mmmm*%nnnnn==0 then\r
-       if  %sz(1)>=0&%sz(2)>=0&%sz(1)*%sz(2)<>0 then %noooo=%kk,break,end\r
-      else\r
-       if %sz(1)>=0 then if %mmmm<>%sz(1) then %noooo=%kk,break,end,end\r
-       if %sz(2)>=0 then if %nnnnn<>%sz(2) then %noooo=%kk,break,end,end\r
-      end\r
-    case 'vec'\r
-      if %ierr<>0  then \r
-       %noooo=-%kk,break,\r
-      end\r
-      //17/01/07\r
-      //the type of %vv is accepted if it is constant or integer\r
-      if and(type(%vv)<>[1 8]) then %nok=-%kk,break,end\r
-      %sz=%typ(2*%kk);if type(%sz)==10 then %sz=evstr(%sz),end\r
-      %ssss=string(%sz(1))\r
-      %nnnnn=prod(size(%vv))\r
-      if %sz(1)>=0 then if %nnnnn<>%sz(1) then %noooo=%kk,break,end,end\r
-    case 'pol'\r
-      if %ierr<>0  then \r
-       %noooo=-%kk,break,\r
-      end\r
-      if %ierr<>0 then %noooo=-%kk;break,end\r
-      if type(%vv)>2 then %noooo=-%kk,break,end\r
-      %sz=%typ(2*%kk);if type(%sz)==10 then %sz=evstr(%sz),end\r
-      %ssss=string(%sz(1))\r
-      %nnnnn=prod(size(%vv))\r
-      if %sz(1)>=0 then if %nnnnn<>%sz(1) then %noooo=%kk,break,end,end\r
-    case 'row'\r
-      if %ierr<>0  then \r
-       %noooo=-%kk,break,\r
-      end\r
-      //17/01/07\r
-      //the type of %vv is accepted if it is constant or integer\r
-      if and(type(%vv)<>[1 8]) then %nok=-%kk,break,end\r
-      %sz=%typ(2*%kk);if type(%sz)==10 then %sz=evstr(%sz),end\r
-      if %sz(1)<0 then\r
-       %ssss='1 x *'\r
-      else\r
-       %ssss='1 x '+string(%sz(1))\r
-      end\r
-      [%mmmm,%nnnnn]=size(%vv)\r
-      if %mmmm<>1 then %noooo=%kk,break,end,\r
-      if %sz(1)>=0 then if %nnnnn<>%sz(1) then %noooo=%kk,break,end,end\r
-    case 'col'\r
-      if %ierr<>0  then \r
-       %noooo=-%kk,break,\r
-      end\r
-      //17/01/07\r
-      //the type of %vv is accepted if it is constant or integer\r
-      if and(type(%vv)<>[1 8]) then %nok=-%kk,break,end\r
-      %sz=%typ(2*%kk);if type(%sz)==10 then %sz=evstr(%sz),end\r
-      if %sz(1)<0 then\r
-       %ssss='* x 1'\r
-      else\r
-       %ssss=string(%sz(1))+' x 1'\r
-      end\r
-      [%mmmm,%nnnnn]=size(%vv)\r
-      if %nnnnn<>1 then %noooo=%kk,break,end,\r
-      if %sz(1)>=0 then if %nnnnn<>%sz(1) then %noooo=%kk,break,end,end\r
-    case 'str'\r
-      clear %vv\r
-      %vv=%str(%kk)\r
-      if type(%vv)<>10 then %noooo=-%kk,break,end\r
-      %sz=%typ(2*%kk);if type(%sz)==10 then %sz=evstr(%sz),end\r
-      %ssss=string(%sz(1))\r
-      %nnnnn=prod(size(%vv))\r
-      if %sz(1)>=0 then if %nnnnn<>1 then %noooo=%kk,break,end,end\r
-    case 'lis'\r
-      if %ierr<>0  then \r
-       %noooo=-%kk,break,\r
-      end\r
-      if type(%vv)<>15& type(%vv)<>16& type(%vv)<>17 then %noooo=-%kk,break,end\r
-      %sz=%typ(2*%kk);if type(%sz)==10 then %sz=evstr(%sz),end\r
-      %ssss=string(%sz(1))\r
-      %nnnnn=size(%vv)\r
-      if %sz(1)>=0 then if %nnnnn<>%sz(1) then %noooo=%kk,break,end,end\r
-    case 'r  '\r
-      if %ierr<>0  then \r
-       %noooo=-%kk,break,\r
-      end\r
-      if type(%vv)<>16 then %noooo=-%kk,break,end\r
-      if typeof(%vv)<>'rational' then %noooo=-%kk,break,end\r
-      %sz=%typ(2*%kk);if type(%sz)==10 then %sz=evstr(%sz),end\r
-      [%mmmm,%nnnnn]=size(%vv(2))\r
-      %ssss=string(%sz(1))+' x '+string(%sz(2))\r
-      if %mmmm*%nnnnn==0 then\r
-       if  %sz(1)>=0&%sz(2)>=0&%sz(1)*%sz(2)<>0 then %noooo=%kk,break,end\r
-      else\r
-       if %sz(1)>=0 then if %mmmm<>%sz(1) then %noooo=%kk,break,end,end\r
-       if %sz(2)>=0 then if %nnnnn<>%sz(2) then %noooo=%kk,break,end,end\r
-      end\r
-    else\r
-      error('Incorrect type :'+%typ(2*%kk-1))\r
-    end\r
-    execstr('%'+string(%kk)+'=%vv')\r
-    clear %vv\r
-  end\r
-  if %noooo>0 then \r
-    message(['answer given for  '+%lables(%noooo);\r
-             'has invalid dimension: ';\r
-             'waiting for dimension  '+%ssss])\r
-    %ini=%str\r
-    %ok=%f;break\r
-  elseif %noooo<0 then\r
-    message(['answer given for  '+%lables(-%noooo);\r
-             'has incorrect type :'+ %typ(-2*%noooo-1)])\r
-    %ini=%str\r
-    %ok=%f;break\r
-  else\r
-    break\r
-  end\r
-end\r
-if %lhs==%nn+2 then\r
-  execstr('%'+string(%lhs-1)+'=%str')\r
-end\r
-endfunction\r
+//  Scicos
+//
+//  Copyright (C) INRIA - METALAU Project <scicos@inria.fr>
+//                      - Alan Layec <alan.layec@inria.fr>
+//  Copyright (C) 2010 - DIGITEO - ClĂ©ment DAVID <clement.david@scilab.org>
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+//
+// See the file ../license.txt
+//
+
+function [%ok,%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]=setvalue(%desc,%labels,%typ,%ini)
+
+    // To avoid infinite loops in set section of blocks during eval
+    if %scicos_prob==%t then
+        %ok=%f
+        [%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]=(0,0,0,0,0,...
+        0,0,0,0,0,...
+        0,0,0,0,0,...
+        0,0,0,0,0,...
+        0,0,0,0,0,...
+        0,0,0,0,0)
+    return;end
+    //  setvalues -  data acquisition, getvalue equivalent without dialog
+    //%Syntax
+    //  [%ok,x1,..,x18]=setvalue(desc,labels,typ,ini)
+    //%Parameters
+    //  desc    : column vector of strings, dialog general comment
+    //  labels  : n column vector of strings, labels(i) is the label of
+    //            the ith required value
+    //  typ     : list(typ1,dim1,..,typn,dimn)
+    //            typi : defines the type of the ith required value
+    //                   if may have the following values:
+    //                   'mat' : stands for matrix of scalars
+    //                   'col' : stands for column vector of scalars
+    //                   'row' : stands for row vector of scalars
+    //                   'vec' : stands for  vector of scalars
+    //                   'str' : stands for string
+    //                   'lis' : stands for list
+    //                   'pol' : stands for polynomials
+    //                   'r'   : stands for rational
+    //            dimi : defines the size of the ith required value
+    //                   it must be
+    //                    - an integer or a 2-vector of integers (-1 stands for
+    //                      arbitrary dimension)
+    //                    - an evaluatable character string
+    //  ini     : n column vector of strings, ini(i) gives the suggested
+    //            response for the ith required value
+    //  %ok      : boolean ,%t if %ok button pressed, %f if cancel button pressed
+    //  xi      : contains the ith required value if %ok==%t
+    //%Description
+    // getvalues function uses ini strings to evaluate required args
+    // with error checking,
+    //%Remarks
+    // All correct scilab syntax may be used as responses, for matrices
+    // and vectors getvalues automatically adds [ ] around the given response
+    // before numerical evaluation
+    //%Example
+    // labels=['magnitude';'frequency';'phase    '];
+    // [ampl,freq,ph]=setvalue('define sine signal',labels,..
+    //            list('vec',1,'vec',1,'vec',1),['0.85';'10^2';'%pi/3'])
+    //
+    //%See also
+    // x_mdialog, dialog
+    //!
+    // 17/01/07 -Alan- - %scicos_context behavior reviewed in accordance to context_evstr macro
+    //                 - pass int in field of type vec/mat/row/col (F. Nassif's Work)
+    //
+    // 05/02/07 -Alan- : update to %20 rhs parameters
+    //
+    // Copyright INRIA
+    [%lhs,%rhs]=argn(0)
+
+    %nn=prod(size(%labels))
+    if %lhs<>%nn+2&%lhs<>%nn+1 then error(41),end
+    if size(%typ)<>2*%nn then
+        error("typ : list(''type'',[sizes],...)")
+    end
+    %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=[];
+
+    if %rhs==3 then  %ini=emptystr(%nn,1),end
+    %ok=%t
+    while %t do
+        %str=%ini;
+        if %str==[] then %ok=%f,break,end
+        for %kk=1:%nn
+            %cod=ascii(%str(%kk))
+            %spe=find(%cod==10)
+            if %spe<>[] then
+                %semi=ascii(";")
+                %cod(%spe)=%semi*ones(%spe')
+                %str(%kk)=ascii(%cod)
+            end
+        end
+
+        [%vv_list,%ierr_vec]=context_evstr(%str,%scicos_context,%typ);
+
+        %noooo=0
+        for %kk=1:%nn
+            %vv=%vv_list(%kk)
+            %ierr=%ierr_vec(%kk)
+            select part(%typ(2*%kk-1),1:6)
+            case "mat   "
+                if %ierr<>0  then
+                    %noooo=-%kk,break,
+                end
+                //29/12/06
+                //the type of %vv is accepted if it is constant or integer
+                if and(type(%vv)<>[1 8]) then %nok=-%kk,break,end
+                %sz=%typ(2*%kk);if type(%sz)==10 then %sz=evstr(%sz),end
+                [%mmmm,%nnnnn]=size(%vv)
+                %ssss=string(%sz(1))+"-by-"+string(%sz(2)) + " matrix"
+                if %mmmm*%nnnnn==0 then
+                    if  %sz(1)>=0&%sz(2)>=0&%sz(1)*%sz(2)<>0 then %noooo=%kk,break,end
+                else
+                    if %sz(1)>=0 then if %mmmm<>%sz(1) then %noooo=%kk,break,end,end
+                    if %sz(2)>=0 then if %nnnnn<>%sz(2) then %noooo=%kk,break,end,end
+                end
+            case "vec   "
+                if %ierr<>0  then
+                    %noooo=-%kk,break,
+                end
+                //17/01/07
+                //the type of %vv is accepted if it is constant or integer
+                if and(type(%vv)<>[1 8]) then %nok=-%kk,break,end
+                %sz=%typ(2*%kk);if type(%sz)==10 then %sz=evstr(%sz),end
+                %ssss=string(%sz(1))
+                %nnnnn=prod(size(%vv))
+                if %sz(1)>=0 then if %nnnnn<>%sz(1) then %noooo=%kk,break,end,end
+            case "intvec"
+                if %ierr<>0  then
+                    %noooo=-%kk,break,
+                end
+                //the type of %vv is accepted if it is constant or integer
+                if and(type(%vv)<>[1 8]) then %nok=-%kk,break,end
+                %sz=%typ(2*%kk);if type(%sz)==10 then %sz=evstr(%sz),end
+                %ssss=string(%sz(1))
+                %nnnnn=prod(size(%vv))
+                if %sz(1)>=0 then if %nnnnn<>%sz(1) then %noooo=%kk,break,end,end
+            case "pol   "
+                if %ierr<>0  then
+                    %noooo=-%kk,break,
+                end
+                if %ierr<>0 then %noooo=-%kk;break,end
+                if (type(%vv)>2 & type(%vv)<>8) then %noooo=-%kk,break,end
+                %sz=%typ(2*%kk);if type(%sz)==10 then %sz=evstr(%sz),end
+                %ssss=string(%sz(1))
+                %nnnnn=prod(size(%vv))
+                if %sz(1)>=0 then if %nnnnn<>%sz(1) then %noooo=%kk,break,end,end
+            case "row   "
+                if %ierr<>0  then
+                    %noooo=-%kk,break,
+                end
+                //17/01/07
+                //the type of %vv is accepted if it is constant or integer
+                if and(type(%vv)<>[1 8]) then %nok=-%kk,break,end
+                %sz=%typ(2*%kk);if type(%sz)==10 then %sz=evstr(%sz),end
+                if %sz(1)<0 then
+                    %ssss="1-by-n matrix"
+                else
+                    %ssss="1-by-"+string(%sz(1))+" matrix"
+                end
+                [%mmmm,%nnnnn]=size(%vv)
+                if %mmmm<>1 then %noooo=%kk,break,end,
+                if %sz(1)>=0 then if %nnnnn<>%sz(1) then %noooo=%kk,break,end,end
+            case "col   "
+                if %ierr<>0  then
+                    %noooo=-%kk,break,
+                end
+                //17/01/07
+                //the type of %vv is accepted if it is constant or integer
+                if and(type(%vv)<>[1 8]) then %nok=-%kk,break,end
+                %sz=%typ(2*%kk);if type(%sz)==10 then %sz=evstr(%sz),end
+                if %sz(1)<0 then
+                    %ssss="m-by-1 matrix"
+                else
+                    %ssss=string(%sz(1))+"-by-1 matrix"
+                end
+                [%mmmm,%nnnnn]=size(%vv)
+                if %nnnnn<>1 then %noooo=%kk,break,end,
+                if %sz(1)>=0 then if %nnnnn<>%sz(1) then %noooo=%kk,break,end,end
+            case "str   "
+                clear %vv
+                %vv=%str(%kk)
+                if type(%vv)<>10 then %noooo=-%kk,break,end
+                %sz=%typ(2*%kk);if type(%sz)==10 then %sz=evstr(%sz),end
+                %ssss=string(%sz(1))
+                %nnnnn=prod(size(%vv))
+                if %sz(1)>=0 then if %nnnnn<>1 then %noooo=%kk,break,end,end
+            case "lis   "
+                if %ierr<>0  then
+                    %noooo=-%kk,break,
+                end
+                if type(%vv)<>15& type(%vv)<>16& type(%vv)<>17 then %noooo=-%kk,break,end
+                %sz=%typ(2*%kk);if type(%sz)==10 then %sz=evstr(%sz),end
+                %ssss=string(%sz(1))
+                %nnnnn=size(%vv)
+                if %sz(1)>=0 then if %nnnnn<>%sz(1) then %noooo=%kk,break,end,end
+            case "r     "
+                if %ierr<>0  then
+                    %noooo=-%kk,break,
+                end
+                if type(%vv)<>16 then %noooo=-%kk,break,end
+                if typeof(%vv)<>"rational" then %noooo=-%kk,break,end
+                %sz=%typ(2*%kk);if type(%sz)==10 then %sz=evstr(%sz),end
+                [%mmmm,%nnnnn]=size(%vv(2))
+                %ssss=string(%sz(1))+"-by-"+string(%sz(2))
+                if %mmmm*%nnnnn==0 then
+                    if  %sz(1)>=0&%sz(2)>=0&%sz(1)*%sz(2)<>0 then %noooo=%kk,break,end
+                else
+                    if %sz(1)>=0 then if %mmmm<>%sz(1) then %noooo=%kk,break,end,end
+                    if %sz(2)>=0 then if %nnnnn<>%sz(2) then %noooo=%kk,break,end,end
+                end
+            case "gen   "
+                //accept all
+            else
+                str = gettext("%s: Type %s is not implemented.\n");
+                mess = msprintf(str, arg1.gui + "(''set'')", %typ(2*%kk-1));
+                if length(arg1.doc) > 0 then
+                    warnBlockByUID(arg1.doc(1), mess); // arg1 is from the block interface function
+                else
+                    error(mess);
+                end
+            end
+            execstr("%"+string(%kk)+"=%vv")
+            clear %vv
+        end
+        if %noooo>0 then
+            str = gettext("%s: Wrong size for block parameter ''%s'': %s expected, getting %s");
+            mess = msprintf(str, arg1.gui + "(''set'')", %labels(%noooo), %ssss, %ini(%noooo));
+            if length(arg1.model.uid) > 0 then
+                warnBlockByUID(arg1.model.uid, mess); // arg1 is from the block interface function
+            else
+                disp(mess);
+            end
+            %ini=%str
+            %ok=%f;break
+        elseif %noooo<0 then
+            str = gettext("%s: Wrong type for block parameter ''%s'': %s(%s) expected, getting %s");
+            mess = msprintf(str, arg1.gui + "(''set'')", %labels(-%noooo), %typ(-2*%noooo-1), strcat(string(%typ(-2*%noooo))," by "), %ini(-%noooo));
+            if length(arg1.model.uid) > 0 then
+                warnBlockByUID(arg1.model.uid, mess); // arg1 is from the block interface function
+            else
+                disp(mess);
+            end
+            %ini=%str
+            %ok=%f;break
+        else
+            break
+        end
+    end
+    if %lhs==%nn+2 then
+        execstr("%"+string(%lhs-1)+"=%str")
+    end
+endfunction