

function [DB, unit, label] = ReadDB(filename)
  


  %data = fscanf (fid, '%e');

  
  
  fid = fopen (filename, "r");
  i=1;
  start = 0;
  ende = 0;
  while ! feof(fid) %&& i<35
    text_line = fgetl(fid);
    
    if start & !ende
      if strfind(text_line, 'END_DATA_BLOCK')
        ende = 1;
      else
        % Variablen extrahieren:
        text = strrep(text_line, ' ', '');
        VarEnde = strfind(text, ':=');
        VarTrennstelle = strfind(text(1:VarEnde-1), '.');
        VarFeld = strfind(text(1:VarEnde-1), '[');
        
        VarTrenn = [0 VarTrennstelle VarEnde];
        VarAnz = length(VarTrennstelle) + 1;
        
        for j=2 : VarAnz + 1
          VarFeldInd = 0;
          for k=1:length(VarFeld)
            if VarFeld(k) < VarTrenn(j) && VarFeld(k) > VarTrenn(j-1)
              VarFeldInd = VarFeld(k);
            endif
          endfor
          
          if VarFeldInd > 0
            Name{j-1} = text(VarTrenn(j-1)+1:VarFeldInd-1);
            IndexHelp = extractNumFromStr(text(VarFeldInd+1:VarEnde));
            Index(j-1) = IndexHelp(1);
          else
          NameHelp = text(VarTrenn(j-1)+1:VarTrenn(j)-1);
          Name{j-1} = NameHelp;
          %jTest = j-1
          %Name{j-1}
            %Name(j-1) = text(VarTrenn(j-1)+1:VarTrenn(j)-1)
            Index(j-1) = 1;
          endif
          
        endfor
        
        % Komma durch Punkt ersetzten:
        text = strrep(text(VarEnde+2:end), ',', '.');
        
        % Struktur aufbauen - mit Tiefe 5:
        % todo: lässt sich mit eval ersetzen: eval('a.b=20')
        switch(VarAnz)
          case 1
            DB.(Name{1})(Index(1)) = extractNumFromStr(text);
            
          case 2
            DB.(Name{1})(Index(1)).(Name{2})(Index(2)) = extractNumFromStr(text);
            
          case 3

            DB.(Name{1})(Index(1)).(Name{2})(Index(2)).(Name{3})(Index(3)) = extractNumFromStr(text);
            
          case 4
            DB.(Name{1})(Index(1)).(Name{2})(Index(2)).(Name{3})(Index(3)).(Name{4})(Index(4)) = extractNumFromStr(text);
            
          case 5
            DB.(Name{1})(Index(1)).(Name{2})(Index(2)).(Name{3})(Index(3)).(Name{4})(Index(4)).(Name{5})(Index(5)) = extractNumFromStr(text);
        endswitch
      endif
      
      
      %data = fscanf
      
      
    endif
    if !start
      if strfind(text_line, 'BEGIN')
        start = 1;
      endif
    endif
    
    
    i+= 1;
  endwhile
  
  fclose (fid);
  
  
  
  
endfunction