《IBM主机技术一本通》PDF下载

  • 购买积分:22 如何计算积分?
  • 作  者:吕新民编著
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2011
  • ISBN:9787121130830
  • 页数:808 页
图书介绍:本书是作者20多年主机应用与维护经验的总结,通过丰富的实例,深入浅出的讲解,使读者能够在较快的时间内学会IBM主机的基本知识并达到熟练运用的程度。本书涵盖的内容包括:ZOS基础(ISPF/ TSO/JCL)VSAM基础、COBOL程序设计、DB2程序设计导论和CICS程序设计导论。

MVS操作系统导论 2

第1章 TSO、ISPF、ISPF/PDF介绍 2

1.1 什么是TSO(Time Sharing Option) 2

1.2 TSO终端 3

1.3 TSO使用环境(与MVS/OS390/ZOS,ISPF之间的关系) 3

1.4 RMF概述 4

1.5 ISPF和ISPF/PDF概述 4

1.5.1 程序开发设备(PDF) 4

1.5.2 ISPF/PDF显示板的通用结构 5

1.6 ISPF设定功能——选项0 7

1.7 z/OS数据集介绍 8

1.7.1 顺序数据集 8

1.7.2 分区数据集 8

1.7.3 VSAM数据集类型 9

1.7.4 磁盘目录表(VTOC) 10

1.7.5 数据集命名规则 10

1.7.5.1 分区数据集命名规则 10

1.7.5.2 数据集命名惯例 10

1.8 查看数据集——选项1 11

1.9 编辑数据集——选项2 14

1.9.1 常用的行命令 15

1.9.2 常用的行命令(COMMAND)的例子 16

1.9.3 基本命令及例子 20

1.9.3.1 FIND/F——检索字符,功能键PF5/17=重新查找(REFIND) 20

1.9.3.2 CHANGE/C——改变指定字符串数据的内容 21

1.9.3.3 EXCLUDE/X——不显示与检索条件一致的行 22

1.9.3.4 COPY/MOVE——从其他文件复制和移动数据到正在编辑的文件 24

1.9.3.5 CUT/PASTE——剪切(CUT)和粘贴(PASTE)数据 24

1.9.3.6 CREATE/REPLACE——数据文件的建立和替换 26

1.9.3.7 RESET——重置(RESET)编辑界面中的各种数据显示 29

1.9.3.8 HEX——十六进制数显示 30

1.9.3.9 SORT——数据排序 33

1.9.3.10 SUBMIT——使用TSO SUBMIT命令执行JOB 34

1.9.3.11 EDIT——编辑其他的数据文件 34

1.9.3.12 START——建立新的会话 36

1.9.3.13 终止编辑会话 39

1.9.3.14 附加的基本命令 39

1.9.4 TSO编辑配置文件(PROFILE)的控制和显示 39

1.10 系统例程功能——选项3 41

1.10.1 库维护选项(3.1) 42

1.10.1.1 BLANK——显示分区数据集中的成员清单 43

1.10.1.2 C——压缩数据集 47

1.10.1.3 E——编辑数据集成员 49

1.10.1.4 V——查看数据集成员内容 50

1.10.1.5 R——为数据集成员改名 50

1.10.1.6 D——删除数据集成员 52

1.10.1.7 P——打印数据集成员内容 52

1.10.1.8 X——打印数据集索引 54

1.10.1.9 L——打印整个数据集 54

1.10.1.10 I——显示数据集信息 56

1.10.1.11 S——显示数据集简要信息 57

1.10.2 数据集例程选项(3.2) 57

1.10.2.1 分配新数据集 58

1.10.2.2 为数据集改名 59

1.10.2.3 删除数据集 61

1.10.2.4 将未登目数据集登目(Catalog) 61

1.10.2.5 将数据集从目录中移除(Uncatalog) 63

1.10.2.6 显示数据集简短信息 63

1.10.2.7 VSAM例程 64

1.10.3 数据集移动和复制选项(3.3) 65

1.10.4 数据集清单列表选项(3.4) 69

1.10.4.1 数据集成员显示、打印和操作 69

1.10.4.2 VTOC信息的显示和打印 73

1.10.5 重置(RESET)统计信息选项(3.5) 74

1.10.6 数据集打印选项(3.6) 75

1.10.7 作业输出清单选项(3.8) 76

1.10.8 TSO命令选项(3.9) 77

1.10.9 显示格式设定选项(3.11) 77

1.10.10 数据集比较选项标准版(3.12)和扩展版(3.13) 78

1.10.11 字符串检索选项标准版(3.14)和扩展版(3.15) 79

1.11 TSO命令 80

1.11.1 离开ISPF/PDF 80

1.11.2 输入TSO命令 81

1.11.2.1 ISPF/PDF选项6——TSO COMMAND 81

1.11.2.2 使用TSO前缀 82

1.11.3 TSO HELP 82

1.11.4 LISTCAT命令 83

1.11.5 LISTDS命令 85

1.11.6 LISTALC命令 86

1.11.7 DELETE命令 87

1.11.8 RENAME命令 87

第2章 作业控制语言(Job Control Language——JCL) 89

2.1 作业控制语言JCL的基本结构 89

2.2 JOB语句 92

2.2.1 JOB语句中的位置参数 93

2.2.1.1 账户信息 93

2.2.1.2 程序员名 93

2.2.2 JOB语句中的关键字参数 93

2.2.2.1 MSGLEVEL 94

2.2.2.2 MSGCLASS 94

2.2.2.3 COND 95

2.2.2.4 ADDRSPC 96

2.2.2.5 CLASS 96

2.2.2.6 NOTIFY 97

2.2.2.7 PRTY 97

2.2.2.8 REGION 97

2.2.2.9 TIME 97

2.2.2.10 TYPRUN 98

2.2.2.11 USER参数 98

2.2.2.12 PASSWORD 99

2.2.2.13 多个关键字参数一起使用 99

2.3 EXEC语句 99

2.3.1 EXEC语句的位置参数 100

2.3.1.1 PGM=位置参数 100

2.3.1.2 PROC=位置参数 101

2.3.1.3 省略PROC=关键字 101

2.3.2 关键字参数 101

2.3.2.1 PARM参数 102

2.3.2.2 COND参数 102

2.3.2.3 程序库 104

2.4 DD语句 106

2.4.1 DD语句参数 107

2.4.2 DD语句的位置参数 108

2.4.2.1 流内数据 108

2.4.2.2 哑(Dummy)数据集 109

2.4.3 DD语句的关键字参数 110

2.4.3.1 DSN 110

2.4.3.2 DISP 111

2.4.3.3 UNIT 112

2.4.3.4 VOLUME 112

2.4.3.5 SPACE 112

2.4.3.6 LABEL 112

2.4.3.7 DCB 113

2.4.3.8 SYSOUT 113

2.4.3.9 数据集串联(Concatenation) 113

2.4.3.10 存储管理子系统(SMS) 114

2.5 向后引用(Backward Reference) 114

2.6 条件JCL 117

2.7 INCLUDE组 122

2.8 从JCL向PROGRAM传递参数 123

2.9 JOB提交 124

2.10 JES2——作业处理步骤 124

2.11 JES3——作业处理步骤 125

2.12 系统显示和查询功能(SDSF) 125

2.12.1 输出队列的显示及操作 126

2.12.2 挂起队列的显示及操作 129

2.12.3 显示活动的作业清单及操作 130

2.12.4 显示所有作业清单及操作 131

2.12.5 输入队列清单及其操作 132

2.12.6 初始器(INIT)的显示及操作 132

2.12.7 系统日志(LOG) 134

2.12.8 用户日志(ULOG) 136

2.13 系统例程(Utility)及常用工具 136

2.13.1 选择需要的例程 137

2.13.2 例程使用的ddname 138

2.13.3 例程控制语句 138

2.13.4 复制和打印顺序数据集 139

2.13.5 编辑顺序数据集 140

2.13.6 转换顺序数据集为分区数据集的成员 142

2.13.7 转换顺序数据集到分区数据集——增加新成员 143

2.13.8 复制分区数据集或分区数据集成员 144

2.13.9 分区数据集的压缩 145

2.13.10 维护源程序库 146

2.13.11 打印分区数据集(PDS)目录清单 148

2.13.12 比较分区数据集 149

2.13.13 比较顺序数据集 150

2.13.14 比较分区数据集中的成员 150

2.13.15 顺序文件的建立和删除 151

2.13.16 文件的成批复制和重命名 152

2.13.17 分类 153

2.13.17.1 数据集的排序 153

2.13.17.2 数据集的合并 155

2.13.17.3 数据集的复制 156

2.13.17.4 数据集记录的筛选——包含满足条件的记录 156

2.13.17.5 数据集记录的筛选——生成头记录 158

2.13.17.6 数据集记录的筛选——跳过第1条记录 158

2.13.17.7 交易合计 159

2.13.17.8 将输入文件分成两个文件 159

2.14 JCL过程的定义 160

2.15 JCL过程的调用 161

2.16 过程调用中COND参数的使用 162

2.17 JCL符号参数 162

2.18 JCL过程的测试 164

2.19 过程定义和调用的例子 164

2.19.1 定义和调用流内过程 164

2.19.2 调用定义在系统过程库中的过程 165

2.19.3 调用定义在系统过程库中的过程并覆盖原过程中的参数 165

2.19.4 调用私有过程库中的过程并覆盖原过程中的某些参数 166

2.20 作业运行清单(JOB LOG)的阅读和查错 169

2.21 JCL过程参数置换和RESTART语句 171

第3章 VSAM文件处理 175

3.1 概念和设备 175

3.1.1 KSDS组成部分 175

3.1.2 ESDS组成部分 176

3.1.3 RRDS组成部分 177

3.1.4 控制间隔 177

3.1.5 控制区域 178

3.1.6 跨越记录(Spanned) 178

3.1.7 KSDS文件的物理实现 179

3.1.8 VSAM文件共享选项(SHARE OPTIONS) 180

3.1.8.1 跨区域(Cross-Region)选项 181

3.1.8.2 跨系统(Cross-System)选项 181

3.1.9 VSAM目录(VSAM Catalogs) 182

3.1.9.1 主目录 183

3.1.9.2 用户目录 183

3.1.9.3 VSAM数据空间 183

3.1.9.4 VSAM族 183

3.1.9.5 非VSAM数据集(Non-VSAM Datasets) 184

3.2 存取方式服务设施(Access Method Services) 184

3.2.1 语句的语法 184

3.2.2 定义用户目录 185

3.2.3 定义数据空间 186

3.2.4 定义别名 187

3.2.5 定义VSAM文件 188

3.2.6 装载记录到VSAM文件中 192

3.2.6.1 使用REPRO备份文件 194

3.2.6.2 从备份文件中恢复数据 194

3.2.7 建立VSAM文件的可移植备份 195

3.2.8 恢复VSAM文件的可移植备份 195

3.2.9 维护可移植备份的次索引 197

3.2.10 备份和恢复目录 197

3.2.11 删除VSAM和非VSAM目标 198

3.2.12 显示目录清单 199

3.2.13 打印或显示数据集内容 200

3.2.14 修改文件属性 201

3.2.15 辅助索引 202

3.2.16 核实VSAM数据集 206

3.3 世代数据集GDG 206

3.3.1 GDG的定义及建立 207

3.3.2 GDG文件的应用 209

第4章 常用的MVS主控台命令 211

4.1 JES2命令 211

4.1.1 $D JOB显示特定作业(JOB)的信息 211

4.1.1.1 显示作业的输出信息 212

4.1.1.2 显示使用缓冲区(SPOOL1)超过1%的作业信息 212

4.1.1.3 $D STC查看已启动任务的作业号和状态 212

4.1.1.4 显示系统中的TSU用户及其作业号 212

4.1.2 $D SPOOL显示缓冲区(Spool)的状态 213

4.1.3 $DA显示系统中所有活动的作业的状态 213

4.1.3.1 显示系统中所有活动作业的状态 213

4.1.3.2 显示特定设备上所有活动作业的状态 213

4.1.4 $D U显示JES2控制的设备的状态 213

4.1.5 $D I显示JES中初始器(Initiator)的状态 214

4.1.5.1 显示JES中所有的初始器(Initiator)所定义的分区和状态 214

4.1.5.2 显示Initiator 3的详细信息 214

4.1.6 $D Q显示系统中所有的队列中的作业信息 215

4.1.6.1 显示系统中所有的队列中的作业信息 215

4.1.6.2 显示缓冲区中所有挂起(Hold)作业的信息 215

4.1.7 $C JOB取消作业、TSO用户和STC 215

4.1.8 $AA释放系统中所有挂起的作业 215

4.1.9 $A JOB释放挂起的作业 216

4.1.9.1 释放作业34到40 216

4.1.9.2 释放作业号为10到15的所有批处理作业、STC和TSU用户 216

4.1.10 $H A暂停系统中的所有的作业 216

4.1.11 $H JOB暂停特定的作业 216

4.1.11.1 暂停作业10开始的所有作业 217

4.1.11.2 暂停作业STC00051 217

4.1.12 $S I启动初始器(Initiator) 217

4.1.12.1 将初始器Initiator 5从DRAINED状态变成INACTIVE状态 217

4.1.12.2 启动Initiator 8到10 217

4.1.13 $S XEQ让JES2开始从QUEUE中选择作业执行 217

4.1.14 $P JES2停止JES2的处理 218

4.1.15 $P I停止特定的初始器 218

4.1.16 $P O Job清除作业的输出信息 218

4.1.16.1 删除作业IBMUSERN的输出信息 218

4.1.16.2 将class A和B中的所有作业输出删除掉 218

4.1.16.3 解决JES2缓冲区(SPOOL)满的问题 218

4.1.17 $T JOB修改作业的类别和优先级 218

4.1.17.1 将作业45的运行CLASS改为X 219

4.1.17.2 将作业45的优先级加2 219

4.1.17.3 将执行队列中用户为IBMUSER的作业的运行CLASS改为Y 219

4.1.17.4 将执行队列中运行CLASS为Y的作业的CLASS改为A 219

4.2 MVS命令 220

4.2.1 DISPLAY JOBS显示当前正在运行的作业、TSO用户和STC任务 220

4.2.1.1 显示当前正在运行的作业、TSO用户和STC任务 220

4.2.1.2 显示TSO用户IBMUSER的详细信息 220

4.2.1.3 显示所有IBMUSER用户提交的交易 220

4.2.2 Display Request显示控制台上没有回答信息的总数 221

4.2.2.1 显示控制台上没有回答信息的总数 221

4.2.2.2 查询未回答信息的作业名 221

4.2.2.3 显示以IBM开头的作业的未回答信息 221

4.2.3 DISPLAY SMF显示系统中的SMF配置 221

4.2.3.1 显示系统中的SMF配置、使用的文件及每个文件的使用百分比 221

4.2.3.2 显示SMF的当前配置情况 222

4.2.4 DISPLAY CONSOLES显示控制台MASTCONS上的详细信息 222

4.2.4.1 显示控制台MASTCONS上的详细信息 222

4.2.4.2 查询主控台未回答信息的个数及系统可容许的总数 222

4.2.5 DISPLAY M显示当前系统设备的配置信息 223

4.2.5.1 显示当前系统的所有设备的配置信息 223

4.2.5.2 显示设备01C0的状态信息 223

4.2.6 DISPLAY OPDATA显示操作员信息 223

4.2.7 DISPLAY ASM显示系统中的PAGE数据集的信息 224

4.2.8 DISPLAY U显示直接存取设备的信息 224

4.2.9 DISPLAY DUMP显示DUMP数据集的信息 224

4.2.10 DISPLAY GRS监测资源争用状况 225

4.2.10.1 显示资源争用(Contention)信息 225

4.2.10.2 显示等待某资源的作业 225

4.2.10.3 显示某一特定资源的使用情况 225

4.2.10.4 DEVSERV查看NON-SMS管理的卷 226

COBOL程序设计导论 228

第5章 COBOL语言简介 228

5.1 COBOL特性 228

5.2 标识部(Identification Division) 229

5.3 环境部(Environment Division) 229

5.4 数据部(Data Division) 230

5.5 过程部(Procedure Division) 230

5.5.1 节(Section) 230

5.5.2 段(Paragraph) 230

5.5.3 语句和句子 231

5.6 完整的COBOL程序 231

5.7 最精致的COBOL程序 231

5.8 普通COBOL程序编译流程图及样板作业流 232

5.9 COBOL编码规则 235

5.10 名字的结构 236

5.11 数据描述和数据传送(Move)语句 236

5.11.1 COBOL数据类型及模式(Picture)短语 237

5.11.2 级别号表达数据的层次 238

5.11.3 特殊级别号数据项 238

5.11.4 组合项和基本项 239

5.11.5 数据用法(USAGE)短语 240

5.11.6 数字编辑(EDITED)格式 242

5.11.7 数据传送(MOVE)语句 244

5.11.8 程序例子(MOVE语句) 245

5.11.9 运行结果(MOVE语句) 250

第6章 COBOL语言数据处理 252

6.1 DISPLAY语句 252

6.2 ACCEPT语句 252

6.3 DISPLAY和ACCEPT语句的程序例子 254

6.3.1 使用ACCEPT和DISPLAY的完整程序 254

6.3.2 运行ACCEPT和DISPLAY的程序的作业流 255

6.3.3 使用ACCEPT和DISPLAY的程序的输出结果 255

6.4 PERFORM语句 255

6.4.1 程序例子(PERFORM语句) 258

6.4.2 程序执行结果(PERFORM语句) 262

6.5 IF语句 262

6.6 SET语句 264

6.7 EVALUATE语句 264

6.8 CONTINUE和NEXT SENTENCE语句 266

6.8.1 程序例子(CONTINUE和NEXT SENTENCE语句) 267

6.8.2 运行结果报表(CONTINUE和NEXT SENTENCE语句) 267

6.9 算术运算语句 268

6.9.1 四舍五入(ROUNDED)选项 268

6.9.2 数据溢出(ON SIZE ERROR)选项 268

6.9.3 带有余数(REMAINDER)选项的DIVIDE语句 268

6.9.4 综合运算(COMPUTE)语句 269

6.9.5 程序例子(算术运算) 269

6.10 STRING命令 276

6.10.1 程序例子(STRING命令) 277

6.10.2 程序运行结果(STRING命令) 281

6.11 UNSTRING命令 281

6.11.1 程序例子(UNSTRING命令) 282

6.11.2 程序运行结果(UNSTRING命令) 285

6.12 INSPECT语句 286

6.12.1 程序例子(INSPECT命令) 288

6.12.2 程序运行结果(INSPECT命令) 290

6.13 COPY语句 290

6.13.1 程序例子(COPY命令) 291

6.13.2 程序编译清单(COPY命令) 292

第7章 向COBOL专家迈进 296

7.1 主程序和子程序 296

7.1.1 主程序的CALL语句 296

7.1.2 子程序 298

7.1.3 主程序例子1(MAIN1) 299

7.1.4 子程序例子1(MYSUB1) 301

7.1.5 程序运行结果(MAIN1) 301

7.1.6 主程序例子2(MAIN2) 302

7.1.7 程序运行结果(MAIN2) 303

7.1.8 子程序例子2(MYSUB2) 304

7.1.9 JCL调用例子(MYSUB2) 304

7.1.10 程序运行结果(MYSUB2) 305

7.2 表处理 305

7.2.1 表的定义 305

7.2.2 下标、索引和SET索引语句 306

7.2.3 SEARCH动词 307

7.2.4 表的初始化 310

7.2.5 二维表 311

7.2.6 表初始化程序例子(TABLE8) 313

7.2.7 表初始化作业流 315

7.2.8 表初始输入数据 315

7.2.9 表初始化运行结果 316

7.2.10 二维表初始化程序例子(TABLE6) 317

7.2.11 二维表初始化作业流 319

7.2.12 二维表初始输入数据 319

7.2.13 二维表初始化运行结果 321

7.2.14 顺序和折半检索程序例子(TABLE3) 322

7.2.15 运行作业流(TABLE3) 324

7.2.16 运行结果(TABLE3) 324

7.3 提要 325

第8章 顺序文件的维护 326

8.1 COBOL的扩充 326

8.1.1 SELECT语句 326

8.1.2 在COBOL程序中使用ddname 329

8.1.3 FD项目 329

8.1.4 OPEN和CLOSE语句 331

8.2 平衡线算法 332

8.3 银行主文件维护平衡线程序(BKUPD1) 334

8.4 交易文件的格式 339

8.5 主文件的格式 340

8.6 运行银行主文件维护平衡线程序的作业流(GOBKUPD1) 341

8.7 交易文件(BKTRAN) 341

8.8 按照账户分类以后的交易文件(RKTRAN-SORT) 343

8.9 旧主文件(BKMASTO) 345

8.10 新主文件(BKMASTN) 346

8.11 银行主文件维护的运行结果 346

8.12 银行主文件维护平衡线程序的扩充(BKUPD2) 348

8.13 运行银行主文件维护平衡线扩充程序的作业流(GOBKUPD2) 356

8.14 银行主文件维护平衡线扩充程序的运行结果 357

8.15 交易日报表 359

8.16 提要 362

第9章 索引文件 363

9.1 概要 363

9.2 文件组织的概念 363

9.3 COBOL要求 364

9.3.1 环境部 364

9.3.2 过程部 366

9.4 文件状态关键字概述 367

9.5 非顺序文件维护 369

9.6 平衡线算法的索引文件版程序(BKUPD3) 371

9.7 平衡线算法的索引文件版程序运行作业流(GOBKUPD3) 379

9.8 运行结果清单 382

9.9 与顺序文件输出结果的比较 384

9.10 提要 384

第10章 结构程序设计及源程序级查错 385

10.1 历史回顾 385

10.2 定义 385

10.3 基本结构的充分性 386

10.4 COBOL中的实现 387

10.5 结构程序设计的优点 387

10.6 结构理论的扩充 387

10.7 GO TO论战 388

10.8 源程序级查错 389

10.9 常见运行错误 389

10.9.1 未能初始化(再初始化)计数器 389

10.9.2 计数器定义得太小 389

10.9.3 循环内的错误 389

10.9.4 SEARCH动词的错误使用 390

10.9.5 不正确使用MOVE语句 390

10.9.6 与带符号数字打交道要特别小心 390

10.9.7 不适当使用嵌套IF语句 390

10.9.8 遗漏或多余句号 391

10.9.9 WRITE后存取FD区域 391

10.9.10 从被PERFORM模块中不适当地跳出 391

10.9.11 未能设置或重新设置开关 391

10.9.12 不适当调用子程序 391

10.9.13 文件开始或结束条件错误 391

10.9.14 索引或下标非法 391

10.9.15 不适当使用注解 392

10.10 查找运行时错误产生的原因 392

10.10.1 确定导致程序异常终止的指令的位移 393

10.10.2 生成带有程序指令位移的COBOL程序编译清单 393

10.10.3 确定导致程序异常结束的COBOL源程序语句 411

10.10.4 确定导致程序异常结束的原因 412

10.11 提要 413

第11章 程序设计风格的探讨 414

11.1 保持动词的层次关系 414

11.2 选择有意义的名字 415

11.3 格式化数据部分 416

11.4 有吸引力的空白行 417

11.5 将句号(.)单独写在一行 417

11.6 避免使用逗号(,) 417

11.7 使用第73~80列 417

11.8 限制开关和下标于单个用途 417

11.9 避免使用常数 418

11.10 放置模块使得能找到它们 419

11.11 使用适当的注解 419

11.12 PERFORM段而不是节 419

11.13 避免使用MOVE CORRESPONDING 420

11.14 去掉77级项目 421

11.15 使用88级项目以减少复合条件 421

11.16 对复合算术运算使用COMPUTE动词 422

11.17 避免使用文字常数 422

11.18 动态初始化表 423

11.19 使用READ INTO、WRITE FROM和WS BEGINS HERE 423

11.20 传送单个01级到子程序 424

11.21 避免“聪明的代码” 424

11.22 不要过于看重效率,但仔细地选择算法 425

11.23 预防式地编码 426

11.24 首先考虑,然后编码 427

11.25 提要 427

DB2实用程序设计 430

第12章 DB2的概念 430

12.1 DB2目标层次结构 430

12.2 数据库的连接 431

12.3 SQL语言类型 431

12.4 数据定义语言(DDL) 431

12.4.1 DB2存储组 431

12.4.2 数据库(Database) 432

12.4.3 数据库表空间(Tablespace) 433

12.4.4 数据库的表(Table) 434

12.4.5 引用完整性(Referential Integrity) 440

12.4.6 索引(Index) 441

12.4.7 视图(View) 444

12.4.8 数据库目标的删除(DROP) 446

12.4.9 DDL语句的应用实例 446

12.5 数据控制语言(Data Control Language——DCL) 449

12.5.1 赋予(GRANT)和废除(REVOKE)语句 449

12.5.2 赋予及废除权限 452

12.6 数据操作语言(Data Manipulation Language——DML) 459

12.6.1 数据检索 460

12.6.1.1 检索整个表 461

12.6.1.2 从表中挑选特定的列 461

12.6.1.3 改变列的排序 462

12.6.1.4 从表中挑选特定的行 462

12.6.1.5 使用多个条件挑选特定的行 462

12.6.1.6 从多个表中选择要求的列 463

12.6.1.7 使用关系名 464

12.6.1.8 查询结果排序 465

12.6.1.9 计算出的列 465

12.6.1.10 为计算出的列命名 466

12.6.1.11 函数(Functions) 466

12.6.1.12 分组合计(Grouping Values) 468

12.6.1.13 约束一组数据的使用 468

12.6.1.14 去掉重复的记录 469

12.6.1.15 字符串模式查找 470

12.6.1.16 按数据范围搜索 470

12.6.1.17 搜索空值(Null Values) 471

12.6.1.18 按否定的条件查询 471

12.6.1.19 检索一组值 472

12.6.2 数据更新 472

12.6.2.1 插入数据记录 472

12.6.2.2 插入一组值 473

12.6.2.3 插入大量数据 474

12.6.2.4 修改数据记录 474

12.6.2.5 修改大量的数据 475

12.6.2.6 删除数据 476

12.6.2.7 删除表中的所有行 477

12.6.3 存储过程 477

12.6.3.1 建立或修改存储过程 478

12.6.3.2 模式限定符 479

12.6.3.3 删除存储过程 479

12.6.4 用户定义函数 479

12.6.4.1 外部用户定义函数(External UDFs) 479

12.6.4.2 有源用户定义函数(Sourced UDFs) 480

12.6.4.3 表函数(Table Functions) 480

12.6.4.4 执行用户定义函数 481

12.6.5 触发器 481

12.7 DB2I工具 483

12.7.1 DB2I工具概要 483

12.7.2 SPUFI 483

第13章 DB2程序准备 485

13.1 DB2程序编译流程图及样板作业流 485

13.2 预编译和绑定 487

13.2.1 预编译 487

13.2.1.1 预编译器 488

13.2.1.2 修改过的源程序代码 489

13.2.1.3 DBRM 489

13.2.2 绑定 490

13.2.2.1 绑定到包和直接绑定方案的区别 491

13.2.2.2 方案、包和集合 492

13.2.2.3 运行时COBOL装载模块调用DBRM 493

13.3 绑定与再绑定 493

13.3.1 自动再绑定 494

13.3.2 绑定与再绑定选项 494

13.3.3 让绑定决定存取的目标 497

13.3.4 绑定的其他考虑因素 498

13.4 删除包或方案 498

第14章 DB2程序结构 499

14.1 分隔符 499

14.2 主变量和主变量组合项 500

14.2.1 主变量的用法 501

14.2.2 主变量组合项的用法 502

14.2.3 主变量——接收单行数据 503

14.2.4 主变量——接收多行数据 503

14.2.5 主变量——插入记录行 503

14.2.6 主变量——修改数据 504

14.2.7 主变量——各种语言的定义 504

14.3 DCLGEN 506

14.3.1 从DB2I主菜单进入DCLGEN选项 506

14.3.2 DCLGEN输出例子 507

14.4 处理空数据 508

14.5 SQLCA——SQL通信区 511

14.6 SQL INCLUDE语句 513

14.7 查询客户资料程序 514

14.7.1 查询DB2客户资料源程序(BKINQ) 514

14.7.2 数据库表CUSTINFO的记录格式及DCLGEN输出 516

14.7.3 数据库表通信区SQLCA的记录格式 517

14.7.4 运行客户资料查询程序的JCL 517

14.7.5 程序运行结果 518

14.8 修改客户资料程序(BKUPDT) 519

14.8.1 修改客户资料源程序 519

14.8.2 程序运行前客户资料表中的记录 521

14.8.3 运行客户资料修改程序的JCL 522

14.8.4 客户资料修改的输入文件 522

14.8.5 客户资料修改后表中的内容 523

14.9 修改明细客户资料程序——空值和变长记录处理 523

14.9.1 修改明细客户资料源程序 524

14.9.2 客户明细资料表CUSTINF1的记录格式及DCLGEN输出结果 527

14.9.3 计算字符串长度子程序 528

14.9.4 明细客户资料表中原来的内容 529

14.9.5 输入文件CUSTINFO 530

14.9.6 运行明细客户资料程序的JCL 530

14.9.7 修改后的明细客户资料表 530

14.10 使用游标 531

14.10.1 定义游标 531

14.10.2 打开游标 532

14.10.3 执行SQL语句 533

14.10.3.1 取数据(FETCH) 533

14.10.3.2 定位修改(Positioned UPDATE) 533

14.10.3.3 定位删除(Positioned DELETE) 534

14.10.3.4 游标定位修改或删除的一些限制 534

14.10.4 关闭游标 535

14.10.5 保持游标(Cursor WITH HOLD) 535

14.10.6 游标的重新定位 535

14.11 浏览客户资料表(BKNMINQ)——使用游标处理多个记录 537

14.11.1 浏览客户资料表源程序 537

14.11.2 运行浏览客户资料表程序的JCL 540

14.11.3 程序运行前客户资料表的内容 541

14.11.4 浏览客户资料表程序的查询结果 541

第15章 DB2恢复和锁定的概念 542

15.1 可恢复单元(Unit of Recovery) 542

15.2 提交(COMMIT)和回滚(ROLLBACK) 543

15.3 保存点(SAVEPOINT) 544

15.4 数据恢复 546

15.4.1 日志 546

15.4.2 日志数据集 546

15.4.3 引导数据集BSDS 547

15.4.4 SYSIBM.SYSLGRNX 547

15.4.5 数据库恢复三部曲 547

15.5 数据锁 548

15.5.1 锁的属性 549

15.5.2 锁的大小(Lock Sizes) 549

15.5.2.1 表锁(Lock Table)语句 550

15.5.2.2 锁定选定的分区 550

15.5.2.3 大对象(LOB)锁 550

15.5.3 锁模式(Lock Modes) 551

15.5.3.1 表或表空间锁 552

15.5.3.2 页锁或行锁 553

15.5.4 表空间和表锁的持续时间(Lock Durations) 553

15.5.5 页锁或行锁的持续时间——隔离级别 554

15.5.5.1 可重复读 555

15.5.5.2 读稳定性 555

15.5.5.3 游标稳定性 555

15.5.5.4 未提交读 556

15.5.6 WITH RR/RS/CS/UR短语的使用 556

15.5.7 锁的覆盖与避免 556

15.5.8 悲观锁定与乐观锁定 558

第16章 动态SQL介绍 559

16.1 使用动态SQL 559

16.2 在应用程序中嵌套动态SQL 559

16.3 完整的非SELECT语句 560

16.3.1 完整的非SELECT语句源程序(BKDYNA1) 560

16.3.2 完整的非SELECT语句——程序运行前表中的内容 562

16.3.3 完整的非SELECT语句——运行程序的作业流 563

16.3.4 完整的非SELECT语句——程序运行后的显示信息及表中的记录 563

16.4 参数化的非SELECT语句 564

16.4.1 参数化的非SELECT语句源程序(BKDYNA2) 564

16.4.2 参数化的非SELECT语句——程序运行前表中的内容 566

16.4.3 参数化的非SELECT语句——运行程序的作业流 566

16.4.4 参数化的非SELECT语句——程序运行后的显示信息及表中的记录 567

16.5 固定列表的SELECT语句 567

16.5.1 固定列表的SELECT语句源程序(BKDYNA3) 567

16.5.2 固定列表的SELECT语句——运行程序的作业流 570

16.5.3 固定列表的SELECT语句——程序运行结果 571

第17章 管理DB2测试数据 572

17.1 数据移动例程 572

17.1.1 装载(Load)例程 572

17.1.2 装载的完整作业流 573

17.1.2.1 增加或覆盖 575

17.1.2.2 装载排好序的行 576

17.1.2.3 装载分区表 576

17.1.2.4 数据类型转换 577

17.1.2.5 引用完整性(Referential Integrity) 577

17.1.2.6 不强制执行(ENFORCENO) 578

17.1.3 数据卸载(Unload)例程 578

17.1.4 使用DSNTIAUL程序卸载数据 581

17.2 数据统计 583

17.2.1 数据统计概述 584

17.2.2 统计(RUNSTATS)例程 584

17.2.2.1 输出报告并修改DB2编目表 585

17.2.2.2 运行统计例程时存取数据库 585

17.2.2.3 样本数据 585

17.2.2.4 在DB2编目表上运行统计例程 585

17.2.2.5 统计例程完整作业流 585

17.3 重组(REORG) 586

17.3.1 重组表空间 586

17.3.2 重组表空间的完整作业流 587

17.3.3 重组索引 588

第18章 DB2性能方面的考虑 589

18.1 存取路径及优化 589

18.2 DB2解释(EXPLAIN)工具 590

18.3 收集解释数据 590

18.4 分析解释数据 592

18.5 存取路径评估 595

18.5.1 索引存取 595

18.5.2 表存取 596

18.5.3 预取 597

18.6 存取路径提示(优化提示) 597

18.7 使用解释表输出的指引 597

18.8 改善性能的索引设计 598

18.8.1 匹配索引扫描(MATCHCOLS>0) 598

18.8.2 索引筛选 599

18.8.3 不匹配索引扫描(ACCESSTYPE=I而且MATCHCOLS=0) 599

18.8.4 IN列表索引扫描(ACCESSTYPE=N) 599

18.8.5 多索引存取(ACCESSTYPE为M、MX、MI或MU) 599

18.8.6 一次获取存取(ACCESSTYPE=I1) 600

18.8.7 只存取索引(INDEXONLY=Y) 600

18.8.8 相等唯一索引(MATCHCOLS=索引列数) 600

18.9 使用索引以避免分类 600

18.10 避免死锁 600

CICS程序设计导论 604

第19章 CICS应用程序环境 604

19.1 CICS基本概念回顾 604

19.2 CICS联机交易 606

19.3 CICS模块组成 608

19.3.1 CICS管理功能 608

19.3.2 CICS基本组成 608

19.3.3 CICS管理模块 609

19.3.4 CICS系统控制表 610

19.3.5 CICS数据区域 611

19.4 CICS交易工作流程 613

19.5 CICS程序并行工作原理 613

第20章 CICS应用系统设计 615

20.1 对话与伪对话 615

20.2 通信区(COMMAREA) 617

20.3 伪对话程序的实现方法 618

第21章 CICS命令概述 620

21.1 编写CICS命令 620

21.2 程序准备 622

21.3 基本界面支持(Basic Mapping Support) 625

21.3.1 3270字段基本概念 625

21.3.2 界面定义样本 626

21.3.2.1 如何编写BMS宏命令 626

21.3.2.2 如何编写汇编语言语句 626

21.3.2.3 如何使用DFHMSD宏命令定义界面集(Mapset) 628

21.3.2.4 如何使用DFHMDI宏命令定义界面集中的界面(Map) 631

21.3.2.5 如何使用DFHMDF宏命令定义界面中的字段 631

21.3.2.6 BMS字段定义模板 633

21.3.3 银行柜员签到程序的界面格式及界面集完整代码 635

21.4 界面准备 637

21.5 符号界面及符号界面格式 640

21.6 界面的输出 641

21.7 界面的输入 643

21.8 常用标识键描述(DFHAID) 644

21.9 界面显示属性常量(DFHBMSCA) 646

21.10 异常状态 648

第22章 CICS程序对程序的控制 650

22.1 CICS程序对程序的控制概述 650

22.2 LINK命令 650

22.3 XCTL命令 651

22.4 通信区长度不匹配的讨论 652

22.5 COBOL CALL与LINK或XCTL的比较 653

22.6 用户表的装载(LOAD)和释放(RELEASE) 654

22.7 启动新交易(START)并接收(RETRIEVE)所传递的数据 656

22.8 RETURN命令 657

第23章 CICS数据处理 658

23.1 CICS存取VSAM的方法 658

23.2 VSAM基本概念回顾 659

23.2.1 VSAM文件的组织形式和存取方法 660

23.2.1.1 键顺序数据组织 660

23.2.1.2 进入顺序数据组织 660

23.2.1.3 相对顺序数据组织 661

23.2.1.4 三种数据组织形式的比较 661

23.2.2 VSAM的物理结构与逻辑结构 661

23.3 VSAM文件独占控制 663

23.4 交易死锁 664

23.5 工作单元的资源保护 664

23.6 联机程序的组织结构 665

23.7 CICS中访问VSAM文件的常用命令 665

23.7.1 READ命令 666

23.7.2 WRITE命令 667

23.7.3 REWRITE命令 668

23.7.4 DELETE命令 669

23.7.5 UNLOCK命令 670

23.8 CICS中浏览VSAM文件的常用命令 670

23.8.1 STARTBR命令 671

23.8.2 READNEXT命令 672

23.8.3 READPREV命令 673

23.8.4 ENDBR命令 675

23.8.5 RESETBR命令 675

23.9 银行交易浏览程序例子 676

23.9.1 联机交易文件的格式 677

23.9.2 定义交易文件新格式和次索引的作业流 677

23.9.3 浏览交易界面源代码 679

23.9.4 浏览交易简化的符号界面 682

23.9.5 浏览交易COBOL程序完整源代码 683

23.9.6 银行浏览交易联机CICS资源定义 693

23.9.7 银行浏览交易联机运行结果演示 696

23.10 CICS存取DB2的方法 698

23.11 CICS访问DB2的程序结构 699

23.12 CICS访问DB2程序的编译步骤 699

23.13 CICS应用程序访问DB2的准备工作 702

23.13.1 定义CICS与DB2之间的连接(DB2CONN) 702

23.13.2 定义进入线程(DB2ENTRY) 703

23.13.3 定义DB2交易(DB2TRAN) 705

23.14 其他CICS常用命令 706

23.14.1 任务控制命令(ENQ和DEQ) 706

23.14.2 获取系统日期和时间信息 707

23.14.2.1 ASKTIME命令 707

23.14.2.2 FORMATTIME命令 708

23.14.3 存取CICS系统公共信息(ADDRESS命令) 709

23.14.4 内存管理命令(GETMAIN和FREEMAIN) 710

23.14.4.1 GETMAIN命令 710

23.14.4.2 FREEMAIN命令 711

第24章 CICS队列 713

24.1 CICS队列设备 713

24.2 分区内过渡队列 713

24.3 分区外过渡队列 714

24.3.1 定长记录文件 715

24.3.2 变长记录文件 716

24.3.3 结尾记录文件 716

24.4 间接目的地 716

24.5 过渡队列服务 717

24.5.1 输出数据到过渡队列 717

24.5.2 从过渡队列中读出数据 717

24.5.3 从过渡队列中删除数据 718

24.6 触发交易启动 718

24.7 临时存储队列概述 719

24.8 临时存储队列服务 719

24.8.1 写数据到临时存储队列 720

24.8.2 修改临时存储队列中的数据 721

24.8.3 从临时存储队列中读取数据 721

24.8.4 删除临时存储队列中的数据 722

24.9 临时存储队列的典型用法 722

24.10 临时存储队列命名 723

24.11 删除临时存储队列 724

24.12 临时数据的存放位置 724

24.13 队列的老化 724

24.14 队列属性 724

24.15 过渡数据队列和临时存储队列的比较 724

24.16 CEBR 725

24.16.1 默认TS队列 725

24.16.2 CEBR的帮助 726

24.16.3 队列显示 726

24.16.4 获取TD队列 727

第25章 银行系统实例 728

25.1 银行系统流程图 728

25.2 柜员签到模块 730

25.2.1 程序(EMLOGON) 730

25.2.2 交易(EMPL) 735

25.2.3 界面(EMPSET1) 735

25.2.4 柜员信息表(EMPLINFO) 736

25.3 账户维护菜单模块 737

25.3.1 程序(EMMENU) 737

25.3.2 交易(EMME) 740

25.3.3 界面(EMESET1) 741

25.4 建立新账户模块 742

25.4.1 程序(CREATE) 743

25.4.2 子程序(AUTOPE) 750

25.4.3 子程序(STRLEN) 751

25.4.4 子程序(NUMEDIT) 752

25.4.5 交易(CREA) 754

25.4.6 界面(CRESET1) 755

25.4.7 文件(AUTOPE) 758

25.4.8 客户账户资料表(CUSTINFO) 759

25.4.9 交易流水表(OPERATIN) 760

第26章 CICS提供的交易及调试CICS应用程序 762

26.1 CICS系统的启动和关闭 762

26.2 CICS提供的交易 763

26.3 CICS签到交易CESN 764

26.4 CICS签退交易CESF 764

26.5 查看终端状态交易CEOT 765

26.6 信息查找CMAC交易 766

26.7 命令层的解释程序CECI和CECS交易 766

26.8 CEMT(MASTER TERMINAL)交易 769

26.8.1 移除资源(DISC) 769

26.8.2 查询CICS资源状态 770

26.8.2.1 查看CICS定义的文件状态 770

26.8.2.2 查看CICS定义的程序状态 770

26.8.2.3 查看CICS定义的终端状态 771

26.8.2.4 查看CICS定义的转存文件状态 771

26.8.2.5 查看CICS运行的任务状态 771

26.8.2.6 查看CICS定义的交易状态 772

26.8.2.7 查看CICS定义的外部连接状态 772

26.8.3 修改CICS资源状态 773

26.8.3.1 更新联机程序的新版本 773

26.8.3.2 更改文件状态 774

26.8.3.3 切换当前使用的转存(DUMP)文件 774

26.8.3.4 停止正在运行的任务(TASK) 775

26.8.3.5 更改交易的状态 775

26.8.3.6 更改终端的状态 776

26.8.4 执行特殊的CICS功能 777

26.9 联机资源定义交易(CEDA) 777

26.9.1 CEDA命令的子命令 778

26.9.2 CEDA DELETE命令和CEDA REMOVE命令的异同点 779

26.9.3 添加资源到成员清单的步骤 780

26.9.4 CEDA常用命令的使用方法 780

26.9.4.1 定义程序 780

26.9.4.2 定义界面集 781

26.9.4.3 定义文件 781

26.9.4.4 查看交易清单及交易详细定义 782

26.9.4.5 查看程序清单及程序详细定义 783

26.9.4.6 查看界面清单及界面定义 783

26.9.4.7 查看DB2进入线程清单及详细定义 784

26.9.4.8 查看DB2交易清单及详细定义 784

26.9.4.9 安装资源到CICS中 785

26.10 CICS联机交易诊断工具 786

26.10.1 CEDF交易 786

26.10.1.1 开始EDF跟踪(单终端模式) 786

26.10.1.2 PF7/PF8滚动显示 787

26.10.1.3 覆盖参数(Argument)的值 788

26.10.1.4 覆盖返回码(Response) 789

26.10.1.5 显示翻译器中的源程序行数 789

26.10.1.6 PF6显示用户界面 797

26.10.1.7 PF2以十六进制格式显示屏幕上的内容 797

26.10.1.8 PF5显示工作存储区 797

26.10.1.9 在存储区界面用PF4显示EIB 798

26.10.1.10 在存储区界面使用PF2调用CEBR交易 798

26.10.1.11 在存储区界面使用PF5调用CECI交易 799

26.10.1.12 设定停止显示的条件 799

26.10.1.13 显示以前的命令 800

26.10.1.14 伪对话的继续 800

26.10.1.15 程序终止 800

26.10.1.16 任务终止 801

26.10.1.17 申请异常中断 801

26.10.1.18 开始EDF跟踪(双终端模式) 801

26.10.2 CEDX交易 803

26.10.3 设置用户跟踪入口点 804

附录A 参考资料 806