home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 10 / 10.iso / l / l455 / 2.ddi / MUTOOLS2.DI$ / PASS1.M < prev    next >
Encoding:
Text File  |  1993-03-11  |  2.2 KB  |  74 lines

  1. %function [arraydata,arraylen,err] = pass1(var)
  2.  
  3. %mod 7/6/90
  4. %  simply pulls apart a    INPUT_TO_     or     OUTPUTVAR
  5. %  variable to get the various channels that make it up
  6. %   EXAMPLE:   >> var = '[ andy(3,4) + johanna ; -tedd - keith + john(7)]';
  7. %              >> [arraydata,arraylen,err] = pass1(var);
  8. %
  9. %      THEN  arraydata = (character string array, a line for each
  10. %                                                     set of channels)
  11. %                         +andy(3,4)+johanna 
  12. %                         -tedd-keith+john(7)
  13. %
  14. %            arraylen = (integer array, lengths of the strings)
  15. %                         18
  16. %                         19
  17. %
  18. %            err = 0 (integer, signifies all is OK)
  19. %
  20. function [arraydata,arraylen,err] = pass1(var)
  21.  err = 0;
  22.  var = var(find(var~=' '));
  23.  if var(1) ~= '[' | var(length(var)) ~= ']'
  24.    err = 1;
  25.  else
  26.    var = var(2:length(var)-1);
  27.    if length(find(var=='[' | var==']')) > 0
  28.      err = 5;
  29.      return
  30.    end
  31.    scol = find(var==';');
  32.    lparens = find(var=='(');
  33.    rparens = find(var==')');
  34.    if length(lparens) ~= length(rparens)
  35.      err = 2;
  36.    else
  37. %    lefts have to occur before rights
  38.      if min(rparens-lparens) <= 0
  39.        err = 3;
  40.      else
  41.        go = 1;
  42.        j = 1;
  43.        while go == 1
  44.          if length(scol) > 0
  45.            if length(find(scol(j)>rparens)) ~= length(find(scol(j)>lparens))
  46.              go = 0;
  47.              err = 4;
  48.              return
  49.            end
  50.          end
  51.          j = j+1;
  52.          if j > length(scol)
  53.            go = 0;
  54.            arraydata = [];
  55.            arraylen = [];
  56.            tlen = length(var);
  57.            places = [0 scol length(var)+1];
  58.            for i=1:length(scol)+1
  59.              data = var(places(i)+1:places(i+1)-1);
  60.              if data(1) ~= '+' & data(1) ~= '-'
  61.                data = ['+' data];
  62.              end
  63.              arraylen = [arraylen ; length(data) ];
  64.              arraydata = [arraydata ; data mtblanks(tlen-length(data)) ];
  65.            end
  66.            arraydata = arraydata(:,1:max(arraylen));
  67.          end
  68.        end
  69.      end
  70.    end
  71.  end
  72. %
  73. % Copyright MUSYN INC 1991,  All Rights Reserved
  74.