# File lib/rbase/table.rb, line 10
    def self.create(name, schema, options = {})
      date = Date.today

      record_size = 1+schema.columns.inject(0) { |size, column| size + column.size }

      data = ''
      data << [0xf5].pack('C') # version
      #data << [0x3].pack('C') # version
      data << [date.year % 100, date.month, date.day].pack('CCC') # last modification date
      data << [0].pack('L') # number of records
      # data << [32+schema.columns.size*32+263+1].pack('v') # data size
      data << [32+schema.columns.size*32+1].pack('v') # data size
      data << [record_size].pack('v') # record size
      data << [].pack('x2') # reserved
      data << [].pack('x') # incomplete transaction
      data << [].pack('x') # encyption flag
      data << [].pack('x4') # reserved
      data << [].pack('x8') # reserved
      data << [0].pack('c') # mdx flag
      data << [options[:language]].pack('C') # language driver
      data << [].pack('x2') # reserved

      offset = 1 # take into account 1 byte for deleted flag
      data << schema.columns.collect do |column|
        s = ''
        s << [column.name.to_s[0..9]].pack('a11') # field name
        s << [column.type].pack('a') # field type
        s << [offset].pack('L') # field data offset
        s << [column.size].pack('C') # field size
        s << [column.decimal || 0].pack('C') # decimal count
        s << [].pack('x2') # reserved
        s << [].pack('x') # work area id
        s << [].pack('x2') # reserved
        s << [].pack('x') # flag for SET FIELDS
        s << [].pack('x7') # reserved
        s << [].pack('x') # index field flag
        offset += column.size
        s
      end.join

      data << [13].pack('C') # terminator

      data << [26].pack('C') # end of file

      File.open("#{name}.dbf", 'wb') do |f|
        f.write data
      end
    end