dbf 4.0.1 → 4.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +9 -0
- data/Gemfile +3 -0
- data/Gemfile.lock +68 -54
- data/Guardfile +1 -1
- data/LICENSE +1 -1
- data/README.md +115 -20
- data/bin/dbf +1 -1
- data/dbf.gemspec +1 -0
- data/docs/CNAME +1 -0
- data/docs/DBF.html +200 -0
- data/docs/DBF/Column.html +947 -0
- data/docs/DBF/Column/LengthError.html +124 -0
- data/docs/DBF/Column/NameError.html +124 -0
- data/docs/DBF/ColumnType.html +115 -0
- data/docs/DBF/ColumnType/Base.html +389 -0
- data/docs/DBF/ColumnType/Boolean.html +238 -0
- data/docs/DBF/ColumnType/Currency.html +238 -0
- data/docs/DBF/ColumnType/Date.html +242 -0
- data/docs/DBF/ColumnType/DateTime.html +246 -0
- data/docs/DBF/ColumnType/Double.html +238 -0
- data/docs/DBF/ColumnType/Float.html +238 -0
- data/docs/DBF/ColumnType/General.html +238 -0
- data/docs/DBF/ColumnType/Memo.html +246 -0
- data/docs/DBF/ColumnType/Nil.html +238 -0
- data/docs/DBF/ColumnType/Number.html +242 -0
- data/docs/DBF/ColumnType/SignedLong.html +238 -0
- data/docs/DBF/ColumnType/String.html +240 -0
- data/docs/DBF/Database.html +126 -0
- data/docs/DBF/Database/Foxpro.html +653 -0
- data/docs/DBF/Database/Table.html +346 -0
- data/docs/DBF/FileNotFoundError.html +124 -0
- data/docs/DBF/Header.html +723 -0
- data/docs/DBF/Memo.html +117 -0
- data/docs/DBF/Memo/Base.html +485 -0
- data/docs/DBF/Memo/Dbase3.html +242 -0
- data/docs/DBF/Memo/Dbase4.html +230 -0
- data/docs/DBF/Memo/Foxpro.html +268 -0
- data/docs/DBF/NoColumnsDefined.html +124 -0
- data/docs/DBF/Record.html +773 -0
- data/docs/DBF/Schema.html +980 -0
- data/docs/DBF/Table.html +1571 -0
- data/docs/_index.html +415 -0
- data/docs/class_list.html +51 -0
- data/docs/css/common.css +1 -0
- data/docs/css/full_list.css +58 -0
- data/docs/css/style.css +497 -0
- data/docs/file.README.html +359 -0
- data/docs/file_list.html +56 -0
- data/docs/frames.html +17 -0
- data/docs/index.html +359 -0
- data/docs/js/app.js +314 -0
- data/docs/js/full_list.js +216 -0
- data/docs/js/jquery.js +4 -0
- data/docs/method_list.html +675 -0
- data/docs/top-level-namespace.html +110 -0
- data/lib/dbf/column.rb +5 -4
- data/lib/dbf/column_type.rb +29 -8
- data/lib/dbf/database/foxpro.rb +7 -2
- data/lib/dbf/header.rb +11 -3
- data/lib/dbf/record.rb +5 -5
- data/lib/dbf/schema.rb +4 -3
- data/lib/dbf/table.rb +32 -12
- data/lib/dbf/version.rb +1 -1
- data/spec/dbf/column_spec.rb +17 -17
- data/spec/dbf/{database_spec.rb → database/foxpro_spec.rb} +0 -0
- data/spec/dbf/file_formats_spec.rb +22 -6
- data/spec/dbf/record_spec.rb +2 -2
- data/spec/dbf/table_spec.rb +8 -0
- data/spec/fixtures/dbase_02.dbf +0 -0
- data/spec/fixtures/polygon.dbf +0 -0
- data/spec/spec_helper.rb +0 -2
- metadata +59 -12
- data/docs/supported_encodings.csv +0 -60
- data/docs/supported_types.markdown +0 -53
data/lib/dbf/version.rb
CHANGED
data/spec/dbf/column_spec.rb
CHANGED
@@ -52,14 +52,14 @@ RSpec.describe DBF::Column do
|
|
52
52
|
end
|
53
53
|
end
|
54
54
|
|
55
|
-
context '
|
55
|
+
context 'with 0 length' do
|
56
56
|
it 'returns nil' do
|
57
57
|
column = DBF::Column.new table, 'ColumnName', 'N', 0, 0
|
58
58
|
expect(column.type_cast('')).to be_nil
|
59
59
|
end
|
60
60
|
end
|
61
61
|
|
62
|
-
context '
|
62
|
+
context 'with 0 decimals' do
|
63
63
|
it 'casts value to Integer' do
|
64
64
|
value = '135'
|
65
65
|
column = DBF::Column.new table, 'ColumnName', 'N', 3, 0
|
@@ -69,11 +69,11 @@ RSpec.describe DBF::Column do
|
|
69
69
|
it 'supports negative Integer' do
|
70
70
|
value = '-135'
|
71
71
|
column = DBF::Column.new table, 'ColumnName', 'N', 3, 0
|
72
|
-
expect(column.type_cast(value)).to eq
|
72
|
+
expect(column.type_cast(value)).to eq(-135)
|
73
73
|
end
|
74
74
|
end
|
75
75
|
|
76
|
-
context '
|
76
|
+
context 'with more than 0 decimals' do
|
77
77
|
it 'casts value to Float' do
|
78
78
|
value = '13.5'
|
79
79
|
column = DBF::Column.new table, 'ColumnName', 'N', 2, 1
|
@@ -83,13 +83,13 @@ RSpec.describe DBF::Column do
|
|
83
83
|
it 'casts negative value to Float' do
|
84
84
|
value = '-13.5'
|
85
85
|
column = DBF::Column.new table, 'ColumnName', 'N', 2, 1
|
86
|
-
expect(column.type_cast(value)).to eq
|
86
|
+
expect(column.type_cast(value)).to eq(-13.5)
|
87
87
|
end
|
88
88
|
end
|
89
89
|
end
|
90
90
|
|
91
91
|
context 'with type F (float)' do
|
92
|
-
context '
|
92
|
+
context 'with 0 length' do
|
93
93
|
it 'returns nil' do
|
94
94
|
column = DBF::Column.new table, 'ColumnName', 'F', 0, 0
|
95
95
|
expect(column.type_cast('')).to be_nil
|
@@ -105,7 +105,7 @@ RSpec.describe DBF::Column do
|
|
105
105
|
it 'casts negative value to Float' do
|
106
106
|
value = '-135'
|
107
107
|
column = DBF::Column.new table, 'ColumnName', 'F', 3, 0
|
108
|
-
expect(column.type_cast(value)).to eq
|
108
|
+
expect(column.type_cast(value)).to eq(-135.0)
|
109
109
|
end
|
110
110
|
end
|
111
111
|
|
@@ -126,13 +126,13 @@ RSpec.describe DBF::Column do
|
|
126
126
|
it 'supports negative binary' do
|
127
127
|
column = DBF::Column.new table, 'ColumnName', 'B', 1, 2
|
128
128
|
expect(column.type_cast("\x00\x00\x00\x00\x00\xC0\x65\xC0")).to be_a(Float)
|
129
|
-
expect(column.type_cast("\x00\x00\x00\x00\x00\xC0\x65\xC0")).to eq
|
129
|
+
expect(column.type_cast("\x00\x00\x00\x00\x00\xC0\x65\xC0")).to eq(-174.0)
|
130
130
|
end
|
131
131
|
end
|
132
132
|
end
|
133
133
|
|
134
134
|
context 'with type I (integer)' do
|
135
|
-
context '
|
135
|
+
context 'with 0 length' do
|
136
136
|
it 'returns nil' do
|
137
137
|
column = DBF::Column.new table, 'ColumnName', 'I', 0, 0
|
138
138
|
expect(column.type_cast('')).to be_nil
|
@@ -148,7 +148,7 @@ RSpec.describe DBF::Column do
|
|
148
148
|
it 'supports negative Integer' do
|
149
149
|
value = "\x24\xE1\xFF\xFF"
|
150
150
|
column = DBF::Column.new table, 'ColumnName', 'I', 3, 0
|
151
|
-
expect(column.type_cast(value)).to eq
|
151
|
+
expect(column.type_cast(value)).to eq(-7900)
|
152
152
|
end
|
153
153
|
end
|
154
154
|
|
@@ -167,7 +167,7 @@ RSpec.describe DBF::Column do
|
|
167
167
|
expect(column.type_cast('n')).to be false
|
168
168
|
end
|
169
169
|
|
170
|
-
context '
|
170
|
+
context 'with 0 length' do
|
171
171
|
it 'returns nil' do
|
172
172
|
column = DBF::Column.new table, 'ColumnName', 'L', 0, 0
|
173
173
|
expect(column.type_cast('')).to be_nil
|
@@ -232,7 +232,7 @@ RSpec.describe DBF::Column do
|
|
232
232
|
expect(column.type_cast(nil)).to be_nil
|
233
233
|
end
|
234
234
|
|
235
|
-
context '
|
235
|
+
context 'with 0 length' do
|
236
236
|
it 'returns nil' do
|
237
237
|
column = DBF::Column.new table, 'ColumnName', 'M', 0, 0
|
238
238
|
expect(column.type_cast('')).to be_nil
|
@@ -252,7 +252,7 @@ RSpec.describe DBF::Column do
|
|
252
252
|
expect(column.type_cast(nil)).to be_nil
|
253
253
|
end
|
254
254
|
|
255
|
-
context '
|
255
|
+
context 'with 0 length' do
|
256
256
|
it 'returns nil' do
|
257
257
|
column = DBF::Column.new table, 'ColumnName', 'G', 0, 0
|
258
258
|
expect(column.type_cast('')).to be_nil
|
@@ -269,14 +269,14 @@ RSpec.describe DBF::Column do
|
|
269
269
|
end
|
270
270
|
|
271
271
|
it 'supports negative currency' do
|
272
|
-
expect(column.type_cast("\xFC\xF0\xF0\xFE\xFF\xFF\xFF\xFF")).to eq
|
272
|
+
expect(column.type_cast("\xFC\xF0\xF0\xFE\xFF\xFF\xFF\xFF")).to eq(-1776.41)
|
273
273
|
end
|
274
274
|
|
275
275
|
it 'supports 64bit negative currency' do
|
276
|
-
expect(column.type_cast("pN'9\xFF\xFF\xFF\xFF")).to eq
|
276
|
+
expect(column.type_cast("pN'9\xFF\xFF\xFF\xFF")).to eq(-333_609.0)
|
277
277
|
end
|
278
278
|
|
279
|
-
context '
|
279
|
+
context 'with 0 length' do
|
280
280
|
it 'returns nil' do
|
281
281
|
column = DBF::Column.new table, 'ColumnName', 'Y', 0, 0
|
282
282
|
expect(column.type_cast('')).to be_nil
|
@@ -284,7 +284,7 @@ RSpec.describe DBF::Column do
|
|
284
284
|
end
|
285
285
|
end
|
286
286
|
|
287
|
-
|
287
|
+
describe '#name' do
|
288
288
|
it 'contains only ASCII characters' do
|
289
289
|
column = DBF::Column.new table, "--\x1F-\x68\x65\x6C\x6C\x6F world-\x80--", 'N', 1, 0
|
290
290
|
expect(column.name).to eq '---hello world---'
|
File without changes
|
@@ -1,17 +1,15 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
RSpec.shared_examples_for 'DBF' do
|
4
|
-
|
5
|
-
|
6
|
-
sum_of_column_lengths = table.columns.inject(1) { |sum, column| sum += column.length }
|
4
|
+
let(:header_record_length) { table.instance_eval { header.record_length } }
|
5
|
+
let(:sum_of_column_lengths) { table.columns.inject(1) { |sum, column| sum + column.length } }
|
7
6
|
|
7
|
+
specify 'sum of column lengths should equal record length specified in header plus one' do
|
8
8
|
expect(header_record_length).to eq sum_of_column_lengths
|
9
9
|
end
|
10
10
|
|
11
11
|
specify 'records should be instances of DBF::Record' do
|
12
|
-
table.
|
13
|
-
expect(record).to be_kind_of(DBF::Record)
|
14
|
-
end
|
12
|
+
expect(table).to all be_kind_of(DBF::Record)
|
15
13
|
end
|
16
14
|
|
17
15
|
specify 'record count should be the same as reported in the header' do
|
@@ -50,6 +48,24 @@ RSpec.shared_examples_for 'DBF' do
|
|
50
48
|
end
|
51
49
|
end
|
52
50
|
|
51
|
+
RSpec.describe DBF, 'of type 02 (FoxBase)' do
|
52
|
+
let(:table) { DBF::Table.new fixture('dbase_02.dbf') }
|
53
|
+
|
54
|
+
it_behaves_like 'DBF'
|
55
|
+
|
56
|
+
it 'reports the correct version number' do
|
57
|
+
expect(table.version).to eq '02'
|
58
|
+
end
|
59
|
+
|
60
|
+
it 'reports the correct version description' do
|
61
|
+
expect(table.version_description).to eq 'FoxBase'
|
62
|
+
end
|
63
|
+
|
64
|
+
it 'determines the number of records' do
|
65
|
+
expect(table.record_count).to eq 9
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
53
69
|
RSpec.describe DBF, 'of type 03 (dBase III without memo file)' do
|
54
70
|
let(:table) { DBF::Table.new fixture('dbase_03.dbf') }
|
55
71
|
|
data/spec/dbf/record_spec.rb
CHANGED
@@ -44,13 +44,13 @@ RSpec.describe DBF::Record do
|
|
44
44
|
|
45
45
|
describe 'when other does not have attributes' do
|
46
46
|
it 'returns false' do
|
47
|
-
expect((record ==
|
47
|
+
expect((record == instance_double('DBF::Record'))).to be_falsey
|
48
48
|
end
|
49
49
|
end
|
50
50
|
|
51
51
|
describe 'if other attributes match' do
|
52
52
|
let(:attributes) { {x: 1, y: 2} }
|
53
|
-
let(:other) {
|
53
|
+
let(:other) { instance_double('DBF::Record', attributes: attributes) }
|
54
54
|
|
55
55
|
before do
|
56
56
|
allow(record).to receive(:attributes).and_return(attributes)
|
data/spec/dbf/table_spec.rb
CHANGED
@@ -147,6 +147,14 @@ RSpec.describe DBF::Table do
|
|
147
147
|
allow(table).to receive(:deleted_record?).and_return(true)
|
148
148
|
expect(table.record(5)).to be_nil
|
149
149
|
end
|
150
|
+
|
151
|
+
describe 'when dbf has no column definitions' do
|
152
|
+
let(:dbf_path) { fixture('polygon.dbf') }
|
153
|
+
|
154
|
+
it 'raises a DBF::NoColumnsDefined error' do
|
155
|
+
expect { DBF::Table.new(dbf_path).record(1) }.to raise_error(DBF::NoColumnsDefined, 'The DBF file has no columns defined')
|
156
|
+
end
|
157
|
+
end
|
150
158
|
end
|
151
159
|
|
152
160
|
describe '#current_record' do
|
Binary file
|
Binary file
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dbf
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.
|
4
|
+
version: 4.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Keith Morrison
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-08-08 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: A small fast library for reading dBase, xBase, Clipper and FoxPro database
|
14
14
|
files.
|
@@ -31,8 +31,53 @@ files:
|
|
31
31
|
- Rakefile
|
32
32
|
- bin/dbf
|
33
33
|
- dbf.gemspec
|
34
|
-
- docs/
|
35
|
-
- docs/
|
34
|
+
- docs/CNAME
|
35
|
+
- docs/DBF.html
|
36
|
+
- docs/DBF/Column.html
|
37
|
+
- docs/DBF/Column/LengthError.html
|
38
|
+
- docs/DBF/Column/NameError.html
|
39
|
+
- docs/DBF/ColumnType.html
|
40
|
+
- docs/DBF/ColumnType/Base.html
|
41
|
+
- docs/DBF/ColumnType/Boolean.html
|
42
|
+
- docs/DBF/ColumnType/Currency.html
|
43
|
+
- docs/DBF/ColumnType/Date.html
|
44
|
+
- docs/DBF/ColumnType/DateTime.html
|
45
|
+
- docs/DBF/ColumnType/Double.html
|
46
|
+
- docs/DBF/ColumnType/Float.html
|
47
|
+
- docs/DBF/ColumnType/General.html
|
48
|
+
- docs/DBF/ColumnType/Memo.html
|
49
|
+
- docs/DBF/ColumnType/Nil.html
|
50
|
+
- docs/DBF/ColumnType/Number.html
|
51
|
+
- docs/DBF/ColumnType/SignedLong.html
|
52
|
+
- docs/DBF/ColumnType/String.html
|
53
|
+
- docs/DBF/Database.html
|
54
|
+
- docs/DBF/Database/Foxpro.html
|
55
|
+
- docs/DBF/Database/Table.html
|
56
|
+
- docs/DBF/FileNotFoundError.html
|
57
|
+
- docs/DBF/Header.html
|
58
|
+
- docs/DBF/Memo.html
|
59
|
+
- docs/DBF/Memo/Base.html
|
60
|
+
- docs/DBF/Memo/Dbase3.html
|
61
|
+
- docs/DBF/Memo/Dbase4.html
|
62
|
+
- docs/DBF/Memo/Foxpro.html
|
63
|
+
- docs/DBF/NoColumnsDefined.html
|
64
|
+
- docs/DBF/Record.html
|
65
|
+
- docs/DBF/Schema.html
|
66
|
+
- docs/DBF/Table.html
|
67
|
+
- docs/_index.html
|
68
|
+
- docs/class_list.html
|
69
|
+
- docs/css/common.css
|
70
|
+
- docs/css/full_list.css
|
71
|
+
- docs/css/style.css
|
72
|
+
- docs/file.README.html
|
73
|
+
- docs/file_list.html
|
74
|
+
- docs/frames.html
|
75
|
+
- docs/index.html
|
76
|
+
- docs/js/app.js
|
77
|
+
- docs/js/full_list.js
|
78
|
+
- docs/js/jquery.js
|
79
|
+
- docs/method_list.html
|
80
|
+
- docs/top-level-namespace.html
|
36
81
|
- lib/dbf.rb
|
37
82
|
- lib/dbf/column.rb
|
38
83
|
- lib/dbf/column_type.rb
|
@@ -48,12 +93,13 @@ files:
|
|
48
93
|
- lib/dbf/table.rb
|
49
94
|
- lib/dbf/version.rb
|
50
95
|
- spec/dbf/column_spec.rb
|
51
|
-
- spec/dbf/
|
96
|
+
- spec/dbf/database/foxpro_spec.rb
|
52
97
|
- spec/dbf/file_formats_spec.rb
|
53
98
|
- spec/dbf/record_spec.rb
|
54
99
|
- spec/dbf/table_spec.rb
|
55
100
|
- spec/fixtures/cp1251.dbf
|
56
101
|
- spec/fixtures/cp1251_summary.txt
|
102
|
+
- spec/fixtures/dbase_02.dbf
|
57
103
|
- spec/fixtures/dbase_03.dbf
|
58
104
|
- spec/fixtures/dbase_03_summary.txt
|
59
105
|
- spec/fixtures/dbase_30.dbf
|
@@ -90,12 +136,13 @@ files:
|
|
90
136
|
- spec/fixtures/foxprodb/setup.dbf
|
91
137
|
- spec/fixtures/foxprodb/types.CDX
|
92
138
|
- spec/fixtures/foxprodb/types.dbf
|
139
|
+
- spec/fixtures/polygon.dbf
|
93
140
|
- spec/spec_helper.rb
|
94
141
|
homepage: http://github.com/infused/dbf
|
95
142
|
licenses:
|
96
143
|
- MIT
|
97
144
|
metadata: {}
|
98
|
-
post_install_message:
|
145
|
+
post_install_message:
|
99
146
|
rdoc_options:
|
100
147
|
- "--charset=UTF-8"
|
101
148
|
require_paths:
|
@@ -104,20 +151,20 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
104
151
|
requirements:
|
105
152
|
- - ">="
|
106
153
|
- !ruby/object:Gem::Version
|
107
|
-
version:
|
154
|
+
version: 2.4.0
|
108
155
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
109
156
|
requirements:
|
110
157
|
- - ">="
|
111
158
|
- !ruby/object:Gem::Version
|
112
159
|
version: 1.3.0
|
113
160
|
requirements: []
|
114
|
-
rubygems_version: 3.
|
115
|
-
signing_key:
|
161
|
+
rubygems_version: 3.2.15
|
162
|
+
signing_key:
|
116
163
|
specification_version: 4
|
117
164
|
summary: Read xBase files
|
118
165
|
test_files:
|
119
|
-
- spec/dbf/file_formats_spec.rb
|
120
|
-
- spec/dbf/database_spec.rb
|
121
166
|
- spec/dbf/column_spec.rb
|
167
|
+
- spec/dbf/database/foxpro_spec.rb
|
168
|
+
- spec/dbf/file_formats_spec.rb
|
122
169
|
- spec/dbf/record_spec.rb
|
123
170
|
- spec/dbf/table_spec.rb
|
@@ -1,60 +0,0 @@
|
|
1
|
-
"Code Page", "Encoding", "Description"
|
2
|
-
"01", "cp437", "U.S. MS–DOS"
|
3
|
-
"02", "cp850", "International MS–DOS"
|
4
|
-
"03", "cp1252", "Windows ANSI"
|
5
|
-
"08", "cp865", "Danish OEM"
|
6
|
-
"09", "cp437", "Dutch OEM"
|
7
|
-
"0a", "cp850", "Dutch OEM*"
|
8
|
-
"0b", "cp437", "Finnish OEM"
|
9
|
-
"0d", "cp437", "French OEM"
|
10
|
-
"0e", "cp850", "French OEM*"
|
11
|
-
"0f", "cp437", "German OEM"
|
12
|
-
"10", "cp850", "German OEM*"
|
13
|
-
"11", "cp437", "Italian OEM"
|
14
|
-
"12", "cp850", "Italian OEM*"
|
15
|
-
"13", "cp932", "Japanese Shift-JIS"
|
16
|
-
"14", "cp850", "Spanish OEM*"
|
17
|
-
"15", "cp437", "Swedish OEM"
|
18
|
-
"16", "cp850", "Swedish OEM*"
|
19
|
-
"17", "cp865", "Norwegian OEM"
|
20
|
-
"18", "cp437", "Spanish OEM"
|
21
|
-
"19", "cp437", "English OEM (Britain)"
|
22
|
-
"1a", "cp850", "English OEM (Britain)*"
|
23
|
-
"1b", "cp437", "English OEM (U.S.)"
|
24
|
-
"1c", "cp863", "French OEM (Canada)"
|
25
|
-
"1d", "cp850", "French OEM*"
|
26
|
-
"1f", "cp852", "Czech OEM"
|
27
|
-
"22", "cp852", "Hungarian OEM"
|
28
|
-
"23", "cp852", "Polish OEM"
|
29
|
-
"24", "cp860", "Portuguese OEM"
|
30
|
-
"25", "cp850", "Portuguese OEM*"
|
31
|
-
"26", "cp866", "Russian OEM"
|
32
|
-
"37", "cp850", "English OEM (U.S.)*"
|
33
|
-
"40", "cp852", "Romanian OEM"
|
34
|
-
"4d", "cp936", "Chinese GBK (PRC)"
|
35
|
-
"4e", "cp949", "Korean (ANSI/OEM)"
|
36
|
-
"4f", "cp950", "Chinese Big5 (Taiwan)"
|
37
|
-
"50", "cp874", "Thai (ANSI/OEM)"
|
38
|
-
"57", "cp1252", "ANSI"
|
39
|
-
"58", "cp1252", "Western European ANSI"
|
40
|
-
"59", "cp1252", "Spanish ANSI"
|
41
|
-
"64", "cp852", "Eastern European MS–DOS"
|
42
|
-
"65", "cp866", "Russian MS–DOS"
|
43
|
-
"66", "cp865", "Nordic MS–DOS"
|
44
|
-
"67", "cp861", "Icelandic MS–DOS"
|
45
|
-
"6a", "cp737", "Greek MS–DOS (437G)"
|
46
|
-
"6b", "cp857", "Turkish MS–DOS"
|
47
|
-
"6c", "cp863", "French–Canadian MS–DOS"
|
48
|
-
"78", "cp950", "Taiwan Big 5"
|
49
|
-
"79", "cp949", "Hangul (Wansung)"
|
50
|
-
"7a", "cp936", "PRC GBK"
|
51
|
-
"7b", "cp932", "Japanese Shift-JIS"
|
52
|
-
"7c", "cp874", "Thai Windows/MS–DOS"
|
53
|
-
"86", "cp737", "Greek OEM"
|
54
|
-
"87", "cp852", "Slovenian OEM"
|
55
|
-
"88", "cp857", "Turkish OEM"
|
56
|
-
"c8", "cp1250", "Eastern European Windows"
|
57
|
-
"c9", "cp1251", "Russian Windows"
|
58
|
-
"ca", "cp1254", "Turkish Windows"
|
59
|
-
"cb", "cp1253", "Greek Windows"
|
60
|
-
"cc", "cp1257", "Baltic Windows"
|
@@ -1,53 +0,0 @@
|
|
1
|
-
# DBF supported data types
|
2
|
-
|
3
|
-
+---------+-----------------------------------+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
|
4
|
-
| Version | Description | C | N | L | D | M | F | B | G | P | Y | T | I | V | X | @ | O | + |
|
5
|
-
+---------+-----------------------------------+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
|
6
|
-
| 02 | FoxBase | Y | Y | Y | Y | - | - | - | - | - | - | - | - | - | - | - | - | - |
|
7
|
-
+---------+-----------------------------------+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
|
8
|
-
| 03 | dBase III without memo file | Y | Y | Y | Y | - | - | - | - | - | - | - | - | - | - | - | - | - |
|
9
|
-
+---------+-----------------------------------+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
|
10
|
-
| 04 | dBase IV without memo file | Y | Y | Y | Y | - | - | - | - | - | - | - | - | - | - | - | - | - |
|
11
|
-
+---------+-----------------------------------+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
|
12
|
-
| 05 | dBase V without memo file | Y | Y | Y | Y | - | - | - | - | - | - | - | - | - | - | - | - | - |
|
13
|
-
+---------+-----------------------------------+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
|
14
|
-
| 07 | Visual Objects 1.x | Y | Y | Y | Y | - | - | - | - | - | - | - | - | - | - | - | - | - |
|
15
|
-
+---------+-----------------------------------+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
|
16
|
-
| 30 | Visual FoxPro | Y | Y | Y | Y | Y | Y | Y | Y | N | Y | N | Y | N | N | N | N | - |
|
17
|
-
+---------+-----------------------------------+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
|
18
|
-
| 31 | Visual FoxPro with AutoIncrement | Y | Y | Y | Y | Y | Y | Y | Y | N | Y | N | Y | N | N | N | N | N |
|
19
|
-
+---------+-----------------------------------+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
|
20
|
-
| 7b | dBase IV with memo file | Y | Y | Y | Y | Y | Y | - | - | - | - | - | - | - | - | - | - | - |
|
21
|
-
+---------+-----------------------------------+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
|
22
|
-
| 83 | dBase III with memo file | Y | Y | Y | Y | Y | - | - | - | - | - | - | - | - | - | - | - | - |
|
23
|
-
+---------+-----------------------------------+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
|
24
|
-
| 87 | Visual Objects 1.x with memo file | Y | Y | Y | Y | Y | - | - | - | - | - | - | - | - | - | - | - | - |
|
25
|
-
+---------+-----------------------------------+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
|
26
|
-
| 8b | dBase IV with memo file | Y | Y | Y | Y | Y | - | - | - | - | - | - | - | - | N | - | - | - |
|
27
|
-
+---------+-----------------------------------+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
|
28
|
-
| 8e | dBase IV with SQL table | Y | Y | Y | Y | Y | - | - | - | - | - | - | - | - | N | - | - | - |
|
29
|
-
+---------+-----------------------------------+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
|
30
|
-
| f5 | FoxPro with memo file | Y | Y | Y | Y | Y | Y | Y | Y | N | Y | N | Y | N | N | N | N | N |
|
31
|
-
+---------+-----------------------------------+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
|
32
|
-
| fb | FoxPro without memo file | Y | Y | Y | Y | - | Y | Y | Y | N | Y | N | Y | N | N | N | N | N |
|
33
|
-
+---------+-----------------------------------+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
|
34
|
-
|
35
|
-
Data type descriptions
|
36
|
-
|
37
|
-
* C = Character
|
38
|
-
* N = Number
|
39
|
-
* L = Logical
|
40
|
-
* D = Date
|
41
|
-
* M = Memo
|
42
|
-
* F = Float
|
43
|
-
* B = Binary
|
44
|
-
* G = General
|
45
|
-
* P = Picture
|
46
|
-
* Y = Currency
|
47
|
-
* T = DateTime
|
48
|
-
* I = Integer
|
49
|
-
* V = VariField
|
50
|
-
* X = SQL compat
|
51
|
-
* @ = Timestamp
|
52
|
-
* O = Double
|
53
|
-
* + = Autoincrement
|