# File lib/numru/nusdas.rb, line 668
    def search_dir(fnames, nusdef=false)
      fnames = Dir[File.join(fnames,'*')] unless nusdef
      flag = false
      fnames.each{|fname|
        next if File.basename(fname).upcase == "NUSDAS_DEF"
        if File.directory?(fname)
          flag = search_dir(fname) || flag
        elsif File.file?(fname)
          hash = Hash.new
          file = File.open(fname,"rb")
          hash[:file] = file
          if nusdef
            skip_record(file)
          else
            name, mtime, str = get_record(file)
            unless name == "NUSD"
              file.close
              next
            end
            parse_nusd(str)
          end

          name, mtime, str = get_record(file)
          unless name == "CNTL"
            file.close
            next
          end
          hash.update parse_cntl(str, nusdef)

          name, mtime, str = get_record(file)
          case name
          when "INDX"
            hash.update parse_indx(str,hash)
          when "INDY"
            hash.update parse_indy(str,hash)
          else
            file.close
            next
          end

          flag2 = false
          @meta[:nsubc].times{|i|
            name, mtime, str = get_record(file)
            unless name == "SUBC"
              file.close
              flag2 = true
              break
            end
            @meta[:subc] ||= Hash.new
            @meta[:subc].update parse_subc(str,hash)
          }
          next if flag2
          files_push(hash, nusdef)
          flag = true
        end
      }

      return flag
    end