第1章 认识COBOL的结构 1
1.1 COBOL学习环境配置 1
1.1.1 模拟大型机系统——Hercules 1
1.1.2 终端连接软件——PCOM 2
1.2 创建第一个COBOL程序 4
1.3 标志部——IDENTIFICATION DIVISION 9
1.4 环境部——ENVIRONMENT DIVISION 10
1.4.1 环境部的标识 10
1.4.2 输入/输出节 10
1.5 数据部——DATA DIVISION 11
1.5.1 文件节 11
1.5.2 工作存储节 14
1.6 过程部 16
1.7 小结 18
习题 18
第2章 语言的基本类型 19
2.1 基本数据类别 19
2.1.1 变量 19
2.1.2 常量 20
2.1.3 直接数 22
2.1.4 结构体 23
2.2 字符类型 26
2.3 整型数类型 26
2.4 浮点数类型 27
2.5 Signed Numbers符号类型 28
2.5.1 Signed Numbers符号类型的作用 28
2.5.2 Signed Numbers符号类型的输出 29
2.6 Numeric Edited Fields格式输出类型 30
2.6.1 货币 30
2.6.2 算术符号 32
2.6.3 算术数 34
2.6.4 日期 36
2.6.5 其他 36
2.6.6 综合应用实例 38
2.7 小结 40
习题 40
第3章 表达式语句 41
3.1 MOVE语句 41
3.1.1 传送单个数据项 41
3.1.2 传送不同类型和长度的单个数据项 42
3.1.3 传送一组数据 44
3.2 PERFORM语句 45
3.3 ACCEPT和DISPLAY语句 47
3.3.1 使用ACCEPT语句接受数据 47
3.3.2 使用DISPLAY语句输出数据 48
3.4 REDEFINES语句 50
3.5 文件相关语句 50
3.5.1 OPEN和CLOSE语句 50
3.5.2 READ语句 52
3.5.3 WRITE语句 54
3.6 小结 55
习题 56
第4章 字符串及其操作 57
4.1 字符串的基本概念 57
4.2 使用STRING语句合并字符串 58
4.2.1 STRING语句的基本用法 58
4.2.2 STRING语句的综合应用 60
4.3 使用UNSTRING语句拆分字符串 63
4.3.1 UNSTRING语句的基本用法 63
4.3.2 UNSTRING语句的综合应用 64
4.4 利用INSPECT语句替换字符串 68
4.4.1 对全体字符进行替换 68
4.4.2 对前缀字符进行替换 69
4.4.3 对首字符进行替换 70
4.4.4 字符串替换的综合应用 70
4.5 字符串转换 72
4.5.1 字符串中字母大小写的转换 72
4.5.2 将字符串转换为具体数值 73
4.6 子字符串的概念及应用 75
4.7 通过MAX和MIN得到最大和最小字符串 78
4.8 求取字符串的长度 80
4.9 小结 82
习题 82
第5章 数据的运算 83
5.1 算术运算 83
5.1.1 四舍五入运算ROUNDED 83
5.1.2 溢出错误ON SIZE ERROR 84
5.1.3 算术加运算ADD 85
5.1.4 算术减运算SUBTRACT 87
5.1.5 算术乘运算MULTIPLY 88
5.1.6 算术除运算DIVIDE 89
5.1.7 乘方运算COMPUTE 92
5.1.8 复合算术运算COMPUTE 92
5.1.9 统计算术运算COMPUTE 95
5.2 关系运算 97
5.3 逻辑运算 99
5.3.1 逻辑与运算 99
5.3.2 逻辑或运算 100
5.3.3 逻辑非运算 101
5.3.4 复合逻辑运算 101
5.3.5 逻辑常用的省略方式 103
5.4 小结 104
习题 105
第6章 流程控制 106
6.1 顺序结构 106
6.2 选择结构 107
6.2.1 选择结构的基本流程 108
6.2.2 条件判断表达式 109
6.2.3 使用IF语句控制选择结构流程 110
6.2.4 使用嵌套IF语句控制选择结构流程 113
6.2.5 使用EVALUATE语句控制多分支选择结构流程 116
6.2.6 使用ZERO简化选择结构编码 118
6.2.7 使用88层条件名简化选择结构编码 119
6.2.8 选择结构的综合应用 122
6.3 循环结构 124
6.3.1 循环结构的基本流程 125
6.3.2 使用PERFORM UNTIL语句控制循环结构流程 126
6.3.3 使用线上PERFORM语句控制循环结构流程 129
6.3.4 循环结构的综合应用 130
6.4 小结 132
习题 133
第7章 数据的排序与合并 134
7.1 排序与合并 134
7.1.1 什么是排序 134
7.1.2 什么是合并 135
7.2 数据的排序 136
7.2.1 定义排序中间文件 136
7.2.2 指定排序输入文件 137
7.2.3 指定排序输出文件 138
7.2.4 进行排序 139
7.2.5 编写排序中的输入处理过程 142
7.2.6 编写排序中的输出处理过程 143
7.2.7 包含输入/输出处理过程的SORT语句排序 144
7.3 数据的合并 147
7.3.1 指定合并输入/输出文件 147
7.3.2 编写合并中的输出处理过程 148
7.3.3 使用MERGE语句进行合并 149
7.4 小结 151
习题 151
第8章 COBOL中的表 152
8.1 认识表 152
8.1.1 为什么要使用表 152
8.1.2 什么是表 152
8.1.3 表的基本用途 153
8.1.4 几类具有典型结构的表 154
8.2 下标表 154
8.2.1 如何定义下标表 154
8.2.2 下标的作用 155
8.2.3 下标的格式要求 156
8.3 定义表语句OCCURS 157
8.3.1 OCCURS语句的使用方法 157
8.3.2 使用OCCURS语句得到的表空间结构 158
8.4 浏览表语句PERFORM VARYING 159
8.4.1 PERFORM VARYING语句的使用方法 159
8.4.2 如何使用PERFORM VARYING语句处理表中数据 160
8.4.3 PERFORM VARYING语句的一些灵活应用 161
8.4.4 PERFORM VARYING语句和PERFORM语句的比较 162
8.5 表的初始化 163
8.5.1 使用硬性编码方式初始化表 163
8.5.2 使用输入文件载入方式初始化表 164
8.5.3 对表初始化的一些灵活技巧 165
8.6 直接查找方式 166
8.6.1 如何定义用于直接查找的表 166
8.6.2 如何进行直接查找 167
8.6.3 对查找数据的处理 167
8.6.4 直接查找方式的适用范围 168
8.7 顺序查找方式 168
8.7.1 如何进行顺序查找 168
8.7.2 使用顺序查找方式时的注意事项 170
8.8 二分查找方式 171
8.8.1 可用于二分查找的表的特征 171
8.8.2 如何进行二分查找 173
8.8.3 二分查找方式的优点 174
8.9 三种查找方式的比较和总结 175
8.9.1 对表的要求 175
8.9.2 具体查找过程 175
8.9.3 查找效率 176
8.9.4 查找方式小结 177
8.10 对表中数据进行统计计算 177
8.10.1 计算数据总和 177
8.10.2 计算平均数 178
8.10.3 计算中位数 179
8.10.4 统计计算小结 180
8.11 小结 180
习题 180
第9章 COBOL中的高级表 181
9.1 索引表 181
9.1.1 为何要使用索引表 181
9.1.2 如何定义索引表 181
9.1.3 索引的特点 182
9.1.4 索引表的内部存储结构 183
9.1.5 索引表和下标表的比较 184
9.2 处理索引语句SET 186
9.2.1 使用SET语句对索引变量赋值 187
9.2.2 使用SET语句对索引变量进行算术运算 187
9.3 查找索引表语句SEARCH 188
9.3.1 SEARCH语句的格式 188
9.3.2 SEARCH语句的功能 189
9.4 查找索引表语句SEARCH ALL 191
9.4.1 SEARCH ALL语句的格式要求 191
9.4.2 SEARCH ALL语句的实际应用 192
9.5 定长表和变长表 193
9.5.1 定长表 193
9.5.2 如何定义变长表 194
9.5.3 变长表中数据的引用范围 196
9.5.4 变长表应用举例 196
9.6 嵌套表 197
9.6.1 如何定义嵌套表 197
9.6.2 嵌套下标表 199
9.6.3 嵌套索引表 199
9.7 小结 201
习题 201
第10章 程序的调试与测试 202
10.1 调试与测试 202
10.1.1 什么是程序的调试 202
10.1.2 什么是程序的测试 203
10.2 调试所需处理的错误类型 204
10.2.1 语法错误 204
10.2.2 逻辑错误 206
10.3 增殖式调试方法 208
10.4 使用DISPLAY语句辅助调试 211
10.5 测试基本类型 212
10.5.1 黑盒测试 212
10.5.2 白盒测试 213
10.6 测试基本步骤 216
10.7 数据合法性检测 217
10.7.1 数字与字母检测 217
10.7.2 数据正负性检测 218
10.7.3 数据范围检测 219
10.7.4 数据顺序检测 220
10.7.5 数据存在检测 220
10.8 错误信息列表 221
10.9 小结 222
习题 223
第11章 子程序的调用 224
11.1 子程序调用的作用 224
11.1.1 提高代码可重用性 224
11.1.2 提高部分功能段执行效率 226
11.1.3 防止数据意外丢失或被更改 227
11.2 子程序调用的特点 229
11.2.1 子程序的命名规则 229
11.2.2 子程序的调用顺序 230
11.2.3 子程序的终止方式 230
11.3 主调用程序 231
11.3.1 主调用程序中参数的定义 231
11.3.2 主调用程序中的调用过程 232
11.4 被调用程序 233
11.4.1 被调用程序中参数的定义 233
11.4.2 被调用程序中参数的引用 235
11.4.3 被调用程序中的入口地址 237
11.5 静态调用 238
11.5.1 静态调用的基本概念 238
11.5.2 静态调用程序示例 238
11.6 动态调用 240
11.6.1 动态调用的基本概念 240
11.6.2 动态调用程序示例 241
11.7 嵌套子程序 242
11.7.1 嵌套子程序的结构 243
11.7.2 嵌套子程序的调用权限 244
11.8 小结 244
习题 245
第12章 面向对象开发 246
12.1 面向对象的基本概念 246
12.1.1 对象 246
12.1.2 类 247
12.1.3 继承的概念 247
12.1.4 消息 248
12.1.5 多态 248
12.1.6 接口 248
12.2 定义类 249
12.2.1 标志部中的定义 249
12.2.2 环境部中的定义 249
12.2.3 数据部中的定义 250
12.2.4 类的完整定义 251
12.3 定义方法 252
12.3.1 方法的定义 252
12.3.2 嵌套在类与对象中的方法 253
12.4 定义客户程序 256
12.4.1 客户程序的定义 256
12.4.2 通过客户程序调用方法 257
12.4.3 包含实例变量的方法调用 258
12.5 定义子类 260
12.5.1 子类的定义 260
12.5.2 子类的应用 261
12.6 定义工厂对象 263
12.6.1 工厂对象的定义 263
12.6.2 工厂对象的应用 264
12.7 异常处理 266
12.8 小结 267
习题 268
第13章 VSAM文件 269
13.1 VSAM文件的概念 269
13.1.1 分类及作用 269
13.1.2 管理方式 270
13.1.3 组织结构 271
13.1.4 设计步骤 272
13.2 LDS 273
13.2.1 LDS的结构及特征 273
13.2.2 计算LDS的空间大小 274
13.3 ESDS 276
13.3.1 ESDS的结构及特征 276
13.3.2 ESDS的访问方式 277
13.3.3 Spanned Record技术 279
13.3.4 计算ESDS的空间大小 280
13.4 RRDS 282
13.4.1 RRDS的结构及特征 282
13.4.2 RRDS的访问方式 283
13.4.3 计算RRDS的空间大小 283
13.5 KSDS 284
13.5.1 KSDS的结构及特征 284
13.5.2 KSDS中的Key及索引 285
13.5.3 KSDS的访问方式 287
13.5.4 CI及CA分割技术 287
13.5.5 次索引技术 289
13.5.6 计算KSDS数据部分的空间大小 289
13.6 VRRDS 291
13.6.1 VRRDS的结构及特征 291
13.6.2 计算VRRDS数据部分的空间大小 291
13.7 VSAM文件及其空间计算总结 292
13.8 通过COBOL操作VSAM文件 293
13.8.1 在程序中指定VSAM文件 293
13.8.2 实现对VSAM文件的操作 294
13.9 小结 295
习题 296
第14章 开发小型银行账户管理信息系统 297
14.1 主菜单模块 297
14.2 添加账户功能模块 300
14.3 删除账户功能模块 308
14.4 修改账户功能模块 314
14.5 查询账户功能模块 323
14.6 小结 327
习题 328