第1章 COBOL简介 1
1.1 背景知识 1
1.2 语法格式 2
1.3 COBOL学习环境配置 3
1.3.1 模拟大型机系统——Hercules 3
1.3.2 终端连接软件——PCOM 5
1.4 创建第一个COBOL程序 6
1.5 本章回顾 11
第2章 程序结构 12
2.1 标志部 12
2.2 环境部 13
2.2.1 配置节 13
2.2.2 输入/输出节 13
2.3 数据部 14
2.3.1 文件节 14
2.3.2 工作存储节 17
2.4 过程部 19
2.5 本章回顾 21
第3章 常用语句 22
3.1 MOVE语句 22
3.1.1 复制单个数据项 22
3.1.2 复制不同类型和长度的单个数据项 23
3.1.3 复制一组数据 25
3.2 PERFORM语句 26
3.3 ACCEPT和DISPLAY语句 28
3.3.1 使用ACCEPT语句接受数据 28
3.3.2 使用DISPLAY语句输出数据 29
3.4 REDEFINES语句 30
3.5 文件相关语句 31
3.5.1 OPEN和CLOSE语句 31
3.5.2 READ语句 32
3.5.3 WRTTE语句 34
3.6 本章回顾 35
第4章 基本数据类型 37
4.1 基本数据类别 37
4.1.1 变量 37
4.1.2 常量 38
4.1.3 直接数 40
4.1.4 结构体 41
4.2 字符类型 44
4.3 整型数类型 44
4.4 浮点数类型 46
4.5 Signed Numbers符号类型 47
4.5.1 Signed Numbers符号类型的作用 47
4.5.2 Signed Numbers符号类型的输出 48
4.6 Numeric Edited Fields格式输出类型 48
4.6.1 货币格式 49
4.6.2 算术符号格式 50
4.6.3 算术数格式 53
4.6.4 日期格式 54
4.6.5 其他格式 54
4.6.6 各种格式的综合应用 56
4.7 本章回顾 58
第5章 字符串及其操作 59
5.1 字符串的基本概念 59
5.2 使用STRING语句合并字符串 60
5.2.1 STRING语句的基本用法 60
5.2.2 STRING语句的综合应用 62
5.3 使用UNSTRING语句拆分字符串 64
5.3.1 UNSTRING语句的基本用法 64
5.3.2 UNSTRING语句的综合应用 66
5.4 利用INSPECT语句替换字符串 69
5.4.1 对全体字符进行替换 69
5.4.2 对前缀字符进行替换 70
5.4.3 对首字符进行替换 71
5.4.4 字符串替换的综合应用 71
5.5 字符串转换 73
5.5.1 字符串中字母大小写的转换 73
5.5.2 将字符串转换为具体数值 74
5.6 子字符串的概念及应用 76
5.7 通过MAX和MIN得到最大和最小字符串 79
5.8 求取字符串的长度 80
5.9 本章回顾 82
第6章 基本运算 83
6.1 算术运算 83
6.1.1 四舍五入运算ROUNDED 83
6.1.2 运算结果溢出报错ON SIZE ERROR 84
6.1.3 算术加运算ADD 85
6.1.4 算术减运算SUBTRACT 87
6.1.5 算术乘运算MULTIPLY 88
6.1.6 算术除运算DIVIDE 89
6.1.7 乘方运算COMPUTE 91
6.1.8 复合算术运算COMPUTE 92
6.1.9 算术统计运算COMPUTE 94
6.2 关系运算 96
6.3 逻辑运算 98
6.3.1 逻辑与运算 98
6.3.2 逻辑或运算 99
6.3.3 逻辑非运算 100
6.3.4 复合逻辑运算 100
6.3.5 逻辑运算表达式中常用的省略方式 102
6.4 本章回顾 104
第7章 流程控制 105
7.1 顺序结构流程控制 105
7.2 选择结构流程控制 107
7.2.1 选择结构的基本流程 107
7.2.2 条件判断表达式 108
7.2.3 使用IF语句控制选择结构流程 109
7.2.4 使用嵌套IF语句控制选择结构流程 112
7.2.5 使用EVALUATE语句控制多分支选择结构流程 115
7.2.6 使用ZERO简化选择结构编码 117
7.2.7 使用88层条件名简化选择结构编码 118
7.2.8 选择结构的综合应用 120
7.3 循环结构流程控制 123
7.3.1 循环结构的基本流程 123
7.3.2 使用PERFORM UNTIL语句控制循环结构流程 125
7.3.3 使用线上PERFORM语句控制循环结构流程 127
7.3.4 循环结构的综合应用 129
7.4 本章回顾 130
第8章 数据的排序与合并 132
8.1 排序与合并概述 132
8.1.1 排序的基本概念 132
8.1.2 合并的基本概念 133
8.2 数据的排序 134
8.2.1 使用SD语句定义排序中间文件 134
8.2.2 使用USING短语指定排序输入文件 135
8.2.3 使用GIVING短语指定排序输出文件 136
8.2.4 使用SORT语句进行排序 137
8.2.5 编写排序中的输入处理过程 140
8.2.6 编写排序中的输出处理过程 141
8.2.7 包含有输入输出处理过程的SORT语句排序 142
8.3 数据的合并 145
8.3.1 指定合并输入输出文件 145
8.3.2 编写合并中的输出处理过程 146
8.3.3 使用MERGE语句进行合并 147
8.4 本章回顾 149
第9章 COBOL中的表 150
9.1 表的简介 150
9.1.1 为什么要使用表 150
9.1.2 表的基本概念 150
9.1.3 表的基本用途 151
9.1.4 几类典型结构的表 152
9.2 下标表 153
9.2.1 如何定义下标表 153
9.2.2 下标的作用 153
9.2.3 下标的格式要求 155
9.3 定义表语句OCCURS 155
9.3.1 OCCURS语句的使用方法 156
9.3.2 使用OCCURS语句得到的表空间结构 156
9.4 浏览表语句PERFORM VARYING 157
9.4.1 PERFORM VARYING语句的使用方法 157
9.4.2 如何使用PERFORM VARYING语句处理表中数据 159
9.4.3 PERFORM VARYING语句的一些灵活应用 160
9.4.4 PERFORM VARYING语句和PERFORM语句的比较 160
9.5 表的初始化 161
9.5.1 使用硬性编码方式初始化表 161
9.5.2 使用输入文件载入方式初始化表 161
9.5.3 对表初始化的一些灵活技巧 163
9.6 直接查找方式 163
9.6.1 如何定义用于直接查找的表 164
9.6.2 如何进行直接查找 164
9.6.3 对查找数据的处理 165
9.6.4 直接查找方式的适用范围 165
9.7 顺序查找方式 166
9.7.1 如何进行顺序查找 166
9.7.2 使用顺序查找方式的注意事项 168
9.8 二分查找方式 168
9.8.1 可用于二分查找的表的特征 168
9.8.2 如何进行二分查找方式 170
9.8.3 二分查找方式的好处 172
9.9 3 种查找方式的比较和总结 172
9.9.1 对表的要求 172
9.9.2 具体查找过程 173
9.9.3 查找效率 174
9.9.4 查找方式小结 174
9.10 对表中数据的统计计算 175
9.10.1 计算数据总和 175
9.10.2 计算平均数 176
9.10.3 计算中位数 176
9.10.4 统计计算小结 177
9.11 索引表 178
9.11.1 为何要使用索引表 178
9.11.2 如何定义索引表 178
9.11.3 索引的特点 178
9.11.4 索引表的内部存储结构 180
9.11.5 索引表和下标表的比较 181
9.12 处理索引语句SET 183
9.12.1 使用SET语句对索引赋值 183
9.12.2 使用SET语句对索引进行算术运算 184
9.13 查找索引表语句SEARCH 185
9.13.1 SEARCH语句的格式 185
9.13.2 SEARCH语句的功能 186
9.14 查找索引表语句SEARCH ALL 187
9.14.1 SEARCH ALL语句的格式要求 187
9.14.2 SEARCH ALL语句的实际应用 188
9.15 定长表和变长表 189
9.15.1 定长表 189
9.15.2 如何定义变长表 190
9.15.3 变长表中数据的引用范围 192
9.15.4 变长表应用举例 192
9.16 嵌套表 193
9.16.1 如何定义嵌套表 194
9.16.2 嵌套下标表 195
9.16.3 嵌套索引表 195
9.17 本章回顾 197
第10章 程序的调试与测试 198
10.1 调试与测试的基本概念 198
10.1.1 调试的基本概念 198
10.1.2 测试的基本概念 198
10.2 调试所需处理的错误类型 200
10.2.1 语法错误 200
10.2.2 逻辑错误 202
10.3 增殖式调试方法 204
10.4 使用DISPLAY语句辅助调试 206
10.5 测试基本类型 207
10.5.1 黑盒测试 208
10.5.2 白盒测试 209
10.6 测试基本步骤 211
10.7 数据合法性检测 213
10.7.1 数字与字母检测 213
10.7.2 数据正负检测 214
10.7.3 数据范围检测 214
10.7.4 数据顺序检测 215
10.7.5 数据存在检测 216
10.8 错误信息列表 216
10.9 本章回顾 218
第11章 子程序调用 219
11.1 子程序调用的作用 219
11.1.1 提高代码可重用性 219
11.1.2 提高部分功能段执行效率 222
11.1.3 防止数据意外丢失或被更改 223
11.2 子程序调用的特点 224
11.2.1 子程序的命名规则 224
11.2.2 子程序的调用顺序 225
11.2.3 子程序的终止方式 225
11.3 主调用程序 226
11.3.1 主调用程序中参数的定义 226
11.3.2 主调用程序中的调用过程 227
11.4 被调用程序 228
11.4.1 被调用程序中参数的定义 228
11.4.2 被调用程序中参数的引用 231
11.4.3 被调用程序中的入口地址 232
11.5 静态调用 233
11.5.1 静态调用的基本概念 234
11.5.2 静态调用程序示例 234
11.6 动态调用 236
11.6.1 动态调用的基本概念 236
11.6.2 动态调用程序示例 236
11.7 嵌套子程序 238
11.7.1 嵌套子程序的结构 238
11.7.2 嵌套子程序的调用权限 239
11.8 本章回顾 240
第12章 COBOL中的面向对象技术 241
12.1 面向对象的基本概念 241
12.1.1 对象的概念 241
12.1.2 类的概念 242
12.1.3 继承的概念 242
12.1.4 消息的概念 243
12.1.5 多态的概念 243
12.1.6 接口的概念 243
12.2 定义COBOL中的类 244
12.2.1 标志部中的定义 244
12.2.2 环境部中的定义 244
12.2.3 数据部中的定义 245
12.2.4 类的完整定义 246
12.3 COBOL中的方法 247
12.3.1 方法的定义 247
12.3.2 嵌套在类与对象中的方法 248
12.4 COBOL中的客户程序 251
12.4.1 客户程序的定义 251
12.4.2 通过客户程序调用方法 252
12.4.3 包含实例变量的方法调用 253
12.5 COBOL中的子类 255
12.5.1 子类的定义 255
12.5.2 子类的应用 256
12.6 COBOL中的工厂对象 258
12.6.1 工厂对象的定义 258
12.6.2 工厂对象的应用 259
12.7 异常处理 260
12.8 本章回顾 261
第13章 处理VSAM文件 263
13.1 VSAM文件的基本概念 263
13.1.1 VSAM文件的分类及作用 263
13.1.2 VSAM文件的管理方式 264
13.1.3 VSAM文件的组织结构 265
13.1.4 VSAM文件的设计步骤 266
13.2 VSAM中的LDS 267
13.2.1 LDS的结构及特征 267
13.2.2 计算LDS的空间大小 268
13.3 VSAM中的ESDS 270
13.3.1 ESDS的结构及特征 270
13.3.2 ESDS的访问方式 271
13.3.3 Spanned Record技术 273
13.3.4 计算ESDS的空间大小 274
13.4 VSAM中的RRDS 276
13.4.1 RRDS的结构及特征 276
13.4.2 RRDS的访问方式 277
13.4.3 计算RRDS的空间大小 277
13.5 VSAM中的KSDS 278
13.5.1 KSDS的结构及特征 278
13.5.2 KSDS中的Key及索引 279
13.5.3 KSDS的访问方式 280
13.5.4 CI及CA分割技术 281
13.5.5 次索引技术 282
13.5.6 计算KSDS数据部分的空间大小 283
13.6 VSAM中的VRRDS 284
13.6.1 VRRDS的结构及特征 284
13.6.2 计算VRRDS数据部分的空间大小 284
13.7 VSAM文件及其空间计算总结 285
13.8 通过COBOL操作VSAM文件 286
13.8.1 在程序中指定VSAM文件 287
13.8.2 实现对VSAM文件的操作 287
13.9 本章回顾 289
第14章 JCL扩展 290
14.1 基本概念 290
14.1.1 作业与作业步 290
14.1.2 JCL语法规则 291
14.1.3 JCL语句类型 293
14.1.4 参数的类别及书写规则 293
14.2 JOB语句 295
14.2.1 JOB语句中的位置参数 295
14.2.2 JOB语句中的关键字参数 296
14.2.3 JOB语句中参数的综合应用 300
14.3 EXEC语句 300
14.3.1 EXEC语句中的位置参数 301
14.3.2 EXEC语句中的关键字参数 302
14.3.3 COND参数 304
14.4 DD语句 306
14.4.1 DD语句的语句名 306
14.4.2 DD语句中的位置参数 307
14.4.3 DD语句中与数据集相关的关键字参数 310
14.4.4 DD语句中与设备相关的关键字参数 312
14.4.5 特殊的DD语句 314
14.5 JCL实用程序 316
14.5.1 IEFBR14实用程序 316
14.5.2 IEBGENER实用程序 316
14.5.3 IEBCOPY实用程序 318
14.5.4 ICEMAN实用程序 320
14.5.5 IEBPTPCH实用程序 320
14.5.6 IEBCOMPR实用程序 321
14.5.7 IEHLIST实用程序 322
14.6 JCL的过程 322
14.7 通过JCL管理VSAM数据集 324
14.8 本章回顾 327
第15章 DB2扩展 328
15.1 基本概念 328
15.1.1 关系数据库的概念 328
15.1.2 DB2简介 330
15.1.3 DB2的组织结构及创建步骤 332
15.2 DB2的基本应用 334
15.2.1 DB2在COBOL中的编码 334
15.2.2 含DB2的COBOL编译过程 336
15.3 常用SQL语句 338
15.3.1 DML类别的SQL语句 338
15.3.2 DDL类别的SQL语句 341
15.3.3 DCL类别的SQL语句 343
15.4 嵌入式SQL 344
15.4.1 主变量 344
15.4.2 指示变量 345
15.4.3 SQLCA 346
15.5 动态SQL 347
15.5.1 不合参数的非SELECT语句 347
15.5.2 含有参数的非SELECT语句 348
15.6 DB2中的游标 349
15.6.1 游标的基本定义及用法 349
15.6.2 回滚游标的概念及指向方式 352
15.6.3 静态回滚游标 352
15.6.4 动态回滚游标 354
15.6.5 利用游标同时处理多行记录 354
15.7 DB2中的锁 356
15.8 访问路径以及EXPLAIN 357
15.8.1 访问路径 358
15.8.2 EXPLAIN优化工具 360
15.9 本章回顾 361
第16章 CICS扩展 362
16.1 基本概念 362
16.1.1 CICS简介 362
16.1.2 CICS中的交易和任务 363
16.1.3 CICS的基本操作 365
16.2 CICS编译处理过程 366
16.2.1 CICS程序编译流程 367
16.2.2 使用CEDA定义资源 367
16.2.3 使用CEMT查询和设置资源 370
16.2.4 使用CEDF调试程序 371
16.3 CICS在COBOL中的基本应用 371
16.3.1 基本程序结构 372
16.3.2 使用CICS进行输入输出 372
16.3.3 输入过程中的异常处理 374
16.3.4 输出过程中的光标定位 375
16.3.5 获取CICS的终端信息 376
16.3.6 获取CICS的时间信息 377
16.3.7 获取CICS的日期信息 379
16.4 伪会话程序 382
16.4.1 伪会话程序的基本概念 382
16.4.2 RETURN到不同的程序 384
16.4.3 RETURN到相同的程序 386
16.5 CICS中的程序调用 388
16.5.1 使用LINK命令进行程序调用 388
16.5.2 使用XCTL命令进行程序调用 389
16.6 CICS中的MAP 390
16.6.1 MAP的基本概念 390
16.6.2 MAP的创建 391
16.6.3 MAP的应用 393
16.7 CICS对于文件的操作 395
16.7.1 读取文件 395
16.7.2 写入文件 396
16.8 CICS中的队列 397
16.9 本章回顾 398
第17章 大型机汇编语言扩展 400
17.1 基本概念 400
17.1.1 主存组织 400
17.1.2 数码表示 401
17.1.3 寄存器与程序状态字 402
17.1.4 操作数的主存地址表示方式 403
17.1.5 程序基本结构 405
17.2 指令类型与机器码 406
17.2.1 RR指令类型及其机器码 406
17.2.2 RX指令类型及其机器码 407
17.2.3 RS指令类型及其机器码 408
17.2.4 SI指令类型及其机器码 408
17.2.5 SS指令类型及其机器码 409
17.3 数据的定义 410
17.3.1 使用DC定义常量 410
17.3.2 使用DS定义存储空间 411
17.4 数据的传递 413
17.5 数据的运算 414
17.5.1 打包十进制数的运算 415
17.5.2 定点二进制数的运算 416
17.6 数据的转换 417
17.6.1 使用CVB和CVD指令转换数据 418
17.6.2 使用PACK和UNPK指令转换数据 418
17.6.3 使用ED指令转换数据 419
17.7 跳转指令与宏命令 421
17.8 程序模块化与DCB参数 422
17.9 综合实例 423
17.9.1 输出商品报表实例 423
17.9.2 显示系统时间实例 425
17.10 本章回顾 428
第18章 开发小型银行账户管理信息系统 429
18.1 主菜单模块 429
18.2 添加账户功能模块 432
18.3 删除账户功能模块 439
18.4 修改账户功能模块 445
18.5 查询账户功能模块 452
18.6 本章回顾 456