第一章 系统环境和准备工作 1
1.1 dBASE的各种版本 1
1.2 支持dBASE的操作系统 1
1.3 运行dBASE所需的文件 2
1.4 操作系统配置所需的改变 3
1.5 dBASE缓冲区 3
1.6 dBASE运行时的特性和配置 4
1.7 安装 6
1.8 硬盘系统 6
第二章 基本概念 7
2.1 文件名 7
2.2 别名 8
2.3 字段名 8
2.4 内存变量名 9
2.5 dBASE数据库文件的类型 9
2.6 全屏幕操作控制键 10
第三章 数据类型 12
3.1 字符型数据 12
3.2 数值型数据 14
3.2.1 数的范围和精度 14
3.2.2 数值数据的操作符和函数 14
3.2.3 数值数据的内部表示法 15
3.3 逻辑型数据 16
3.4 日期型数据 16
3.5 MEMO字段 17
第四章 数据结构 18
4.1 概述 18
4.2 数据文件的结构 18
4.3 索引文件的结构 22
4.3.1 二进制树 22
4.3.2 B-树 23
4.3.3 B?树 24
4.3.4 dBASEⅡ索引文件结构 24
4.3.5 dBASEⅡ中的索引搜索算法 25
第五章 命令文件的处理 26
5.1 概述 26
5.2 命令文件的基本框架 27
5.2.1 命令文件的头 27
5.2.2 命令文件的尾 27
5.2.3 命令文件的体 28
5.3 程序结构 29
5.3.1 IF命令 29
5.3.2 CASE命令 29
5.3.3 循环结构 31
5.3.4 过程结构 33
5.4 命令文件间数据的变换 34
5.5 算法 36
5.5.1 记录文件的细节 36
5.5.2 结构程序命令中的注解 37
5.5.3 子程序的使用 38
5.5.4 递归 41
5.5.5 DO……WITH命令的改进 43
5.5.6 dBASE的加密版本 43
5.5.7 应注意的问题 43
第六章 工作环境参数的设置 45
6.1 概述 45
6.2 环境参数简表 45
6.3 算法 47
6.3.1 环境参数设置举例 47
第七章 数据的处理 49
7.1 概述 49
7.1.1 直接和间接 49
7.1.2 变量 49
7.1.3 操作符 49
7.1.4 函数 50
7.1.5 其它符号 52
7.1.6 表达式 53
7.1.7 关于MEMO字段 54
7.1.8 算法 54
7.2 字符数据的处理 57
7.2.1 子字符串 57
7.2.2 字符串的相等 58
7.2.3 算法 59
7.3 日期数据的处理 62
7.3.1 日期格式 62
7.3.2 日期的计算 63
7.3.3 算法 63
7.4 逻辑数据的处理 66
7.4.1 逻辑表达式 66
7.4.2 算法 66
7.5 数值数据的处理 68
7.5.1 数的范围 68
7.5.2 数的精度 68
7.5.3 数值运算的函数 68
7.5.4 数值运算中的错误 68
7.5.5 算法 69
第八章 内存变量 71
8.1 概述 71
8.2 内存变量区和内存变量的大小 72
8.3 内存变量的特性 72
8.4 宏代替 73
8.5 优先权 75
8.6 内存变量文件 75
8.7 内存变量的管理 76
8.8 空内存变量 76
8.9 算法 76
8.9.1 在DO WHILE…ENDDO循环中的宏 76
8.9.2 内存变量的类型的转换 76
8.9.3 数组 76
8.9.4 应注意的问题 81
第九章 屏幕处理 82
9.1 概述 82
9.2 屏幕输出处理 82
9.2.1 格式化方式 82
9.2.2 非格式化方式 84
9.2.3 颜色的控制 85
9.2.4 算法 91
9.3 屏幕输入处理 95
9.3.1 屏幕输入处理的方式 95
9.3.2 格式化输入 99
9.3.3 格式文件 101
9.3.4 算法 102
第十章 数据文件的处理 109
10.1 概述 109
10.1.1 建立文件 110
10.1.2 改变文件的结构 111
10.1.3 优先权 113
10.1.4 算法 113
10.2 文件的打开和关闭 118
10.2.1 概述 118
10.2.2 算法 120
10.3 添加数据 121
10.3.1 从文件中输入 121
10.3.2 从键盘上输入 121
10.3.3 算法 123
10.4 数据的排序 124
10.4.1 概述 124
10.4.2 分类法 124
10.4.3 索引法 125
10.4.4 算法 126
10.5 移动数据和寻找数据 130
10.5.1 概述 130
10.5.2 按数据进行移动 132
10.5.3 按记录进行移动 134
10.5.4 算法 136
10.6 修改数据 141
10.6.1 用数据文件来修改数据 141
10.6.2 从键盘上修改数据 141
10.6.3 应注意的几个问题 142
10.7 显示数据 143
10.7.1 概述 143
10.7.2 算法 143
10.8 拷贝到另一个数据文件中 150
10.8.1 概述 150
10.8.2 算法 151
10.9 使用多个文件和多个盘片 151
10.9.1 使用多个文件 151
10.9.2 使用多个盘片 154
10.9.3 算法 154
第十一章 外部文件和已关闭的文件 156
11.1 外部文件 156
11.2 对已关闭文件的操作 160
11.3 算法 161
第十二章 报表生成和打印 163
12.1 概述 163
12.2 格式化输出 164
12.3 表格生成和输出 165
12.4 关于打印机的一些问题 167
12.5 算法 168
12.5.1 屏幕拷贝 168
12.5.2 页计数 168
12.5.3 列格式化 171
12.5.4 在报表文件中用空格代替0值 172
12.5.5 改进数据输出 174
12.5.6 应注意的几个问题 175
第十三章 汇编语言接口 176
13.1 概述 176
13.2 8位系统 177
13.3 16位系统 178
13.4 算法 179
13.4.1 日期测试 179
13.4.2 改变用户区 183
第十四章 多用户环境 185
14.1 概述 185
14.2 算法 187
第十五章 调试 189
15.1 引起错误的常见原因 189
15.1.1 语法错 189
15.1.2 结构错 189
15.1.3 逻辑错 190
15.2 调试技术 191
15.2.1 检查系统 191
15.2.2 缩小范围 192
15.2.3 临时去掉程序的某些部分 193
15.2.4 纠正错误 193
15.3 算法 194
15.3.1 程序优化 194
第十六章 交互方式 196
16.1 概述 196
16.2 MODIFY COMMAND命令 196
16.3 外部MEMO字段 197
16.4 功能键 197
16.5 算法 198
16.5.1 命令文件园点提示符 198
16.5.2 长命令行 200
附录A 错误信息 201
附录B 子程序 212
B.1 日期子程序 212
B.1.1 使用日期子程序的说明程序 212
B.1.2 设置dBASEⅡ系统日期 214
B.1.3 核实日期的有效性 215
B.1.4 把日历变为Julian周期 217
B.1.5 把Julian周期变为日历 217
B.1.6 从日历求星期几 219
B.1.7 列出两个日期之间的记录 220
B.1.8 把普通日历日期变为Julian周期日 221
B.2 通用子程序 223
B.2.1 把美元数转变成等价的字符 223
B.3 数学子程序 227
B.3.1 使用数学子程序的说明程序 227
B.3.2 开方子程序 229
B.3.3 指数子程序 230
B.3.4 自然对数子程序 231
B.3.5 三角函数子程序的使用说明 233
B.3.6 三角函数子程序 235
附录C 程序 240
C.1 命令模拟程序 240
C.1.1 UPDATE模拟程序 240
C.1.2 JOIN模拟程序 241
C.1.3 TOTAL模拟程序 242
C.1.4 QUIT TO模拟程序 243
C.2 通用程序 245
C.2.1 打印 邮政标签 245
C.2.2 计算索引文件的大小 248
C.2.3 从一个字段中把名和姓分开 249
C.2.4 把大写字符字段变为仅第一个字符大写 252
C.2.5 把一个句子分段 255
C.2.6 计算标准误差 257
C.2.7 以随机字符记录建立一个数据文件 259
C.2.8 16进制变为10进制 261
C.2.9 10进制变为16进制 262
C.3 系统开发程序 264
C.3.1 打印系统信息 264
C.3.2 建立变量的交叉索引表 271
C.3.3 接受通行字到应用系统 279
C.3.4 退出应用系统前的转贮程序 281
C.3.5 测定一条dBASEⅢ命令的执行时间 287
C.3.6 测定几条dBASEⅢ命令的执行时间 290
C.4 生成程序的程序 293
C.4.1 生成主菜单和子菜单的程序 293
C.4.2 生成报表命令文件 302
C.4.3 生成dBASEⅡ中的STORE和REPLACE语句 316
C.4.4 生成dBASEⅢ中的STORE和REPLACE语句 320
附录D 汇编语言子程序 324
D.1 汇编码接口程序 324
D.1.1 把INTEL 16进制文件变为dBASEⅡPOKE序列(1) 324
D.1.2 把INTEL 16进制文件变为dBASEⅡPOKE序列(2) 327
D.1.3 从一个二进制文件中建立一个POKE序列 330
D.2 CP/M—80程序 333
D.2.1 CP/M—80程序的说明程序 333
D.2.2 等待控制台输入或延时结束 337
D.2.3 CP/M 2.2上的Inkey函数 338
D.2.4 用前置0代替前置空格 340
D.2.5 左对齐字符串 341
D.2.6 用空格代替文件的控制字符 342
D.2.7 求盘上剩余的容量 349
D.3 CP/M—86程序 357
D.3.1 用空格代替文件的控制字符 357
D.3.2 求盘上剩余的容量 364
D.3.3 取盘驱动器的状态 366
D.4 DOS 2.0程序 370
D.4.1 DOS 2.0程序的说明程序 370
D.4.2 MS—DOS 2.0X目录拷贝程序 373
D.4.3 取IBM PC系统日期 377
D.4.4 改变MS—DOS 2.0X上的目录 377
D.4.5 求盘上的剩余的容量 381
D.4.6 取IBM PC系统时间 385
D.4.7 置IBM PC系统日期 387
D.4.8 用空格代替文件的控制字符 388
D.4.9 在菜单的指定位置显示系统时间 396
附录E 各种表格 402
E.1 操作符表 402
E.2 环境参数表 403
E.3 函数表 409
E.4 命令表 413
E.5 其它符号表 429
E.6 术语定义表 430
E.7 ASCII码表 432
附录F 技术参考资料 435
F.1 @…SAY…GET[dBASEⅡ 2.3 B,2.4] 435
F.2 使用多个索引文件时应注意的问题[2.3 B,2.4] 437
F.3 MODIFY COMMAND命令中的问题 439
F.4 SET ALTERNATE TO[〈文件〉][dBASEⅡ 2.3 B,2.4] 440
F.5 在dBASEⅡ中使用索引文件时的问题[2.3,2.4] 441
F.6 禁止分号符的功能[2.3 B,2.4] 443
F.7 禁止换页[2.3,2.4,2.4 1] 444
F.8 矫正dBASEⅡ数据文件头中的记录计数[2.3 B,2.4] 445
F.9 在MP/M操作系统下使用dBASEⅡ[2.3 B,2.4] 446
F.10 重建dBASEⅡ数据文件头[2.3,2.4] 448
F.11 支持国际字符集[2.4 版,16位系统] 449
F.12 防止dBASEⅡ截掉一个命令过程的最后几行 450