IBM主机技术一本通(第2版)

IBM主机技术一本通(第2版)
作 者: 吕新民
出版社: 电子工业出版社
丛编项:
版权说明: 本书为公共版权或经版权方授权,请支持正版图书
标 签: 计算机/网络 硬件 外部设备 维修
ISBN 出版时间 包装 开本 页数 字数
未知 暂无 暂无 未知 0 暂无

作者简介

  1979.9-1983.7 华中科技大学,计算机软件专业1983.8-1992.10 中国银行山东省分行电脑部,程序员、系统分析员1992.11-1998.5 中银集团香港电脑中心,程序员、系统分析员1998.6-2003.11 高阳科技(香港)有限公司,系统分析员、系统架构师2003.12-2010.12 IBM公司,高级项目经理、高级培训师2011.1-2014.12 天鸿志科技(北京)有限公司,咨询架构师、研发总监2015.1-现在 深圳育桥软件有限公司,首席科学家

内容简介

本书由浅入深地讲述了IBM主机技术的各个方面,共分30章,包括:TSO、ISPF、JCL、VSAM、COBOL、DB2、CICS和常用的MVS主控台命令,通过演示报表(Magic Report)的方法,从实战出发,通过大量的源程序例子讲解了在应用开发过程中需要使用的IBM主机方面的技术,书中的例子都是作者亲自编写并运行成功的,可以作为读者学习的参考。因为本书在系统地介绍所需的基本技术的同时,也为具备多年开发经验的读者提供了某些高级的议题,所以本书既可以作为从事IBM主机开发的初学者学习,也可以作为已有几年甚至多年IBM主机开发经验的人士参考。

图书目录

MVS操作系统导论

第1章 TSO、ISPF、ISPF/PDF介绍\t2

1.1 什么是TSO(Time Sharing Option)\t2

1.2 TSO终端\t3

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

1.4 RMF概述\t4

1.5 ISPF和ISPF/PDF概述\t4

1.5.1 程序开发设备(PDF)\t4

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

1.6 ISPF设定功能――选项0\t7

1.7 z/OS数据集介绍\t8

1.7.1 顺序数据集\t8

1.7.2 分区数据集\t8

1.7.3 VSAM数据集类型\t9

1.7.4 磁盘目录表(VTOC)\t10

1.7.5 数据集命名规则\t10

1.7.5.1 分区数据集命名规则\t10

1.7.5.2 数据集命名惯例\t10

1.8 查看数据集――选项1\t11

1.9 编辑数据集――选项2\t14

1.9.1 常用的行命令\t15

1.9.2 常用的行命令(COMMAND)

的例子\t16

1.9.3 基本命令及例子\t20

1.9.3.1 FIND/F――检索字符,

功能键PF5/17=重新查找

(REFIND)\t20

1.9.3.2 CHANGE/C――改变指定

字符串数据的内容\t21

1.9.3.3 EXCLUDE/X――不显示与

检索条件一致的行\t22

1.9.3.4 COPY/MOVE――从其他

文件复制和移动数据到

正在编辑的文件\t24

1.9.3.5 CUT/PASTE――剪切

(CUT)和粘贴(PASTE)

数据\t24

1.9.3.6 CREATE/REPLACE――数据

文件的建立和替换\t26

1.9.3.7 RESET――重置(RESET)

编辑界面中的各种

数据显示\t29

1.9.3.8 HEX――十六进制数显示\t30

1.9.3.9 SORT――数据排序\t33

1.9.3.10 SUBMIT――使用TSO SUBMIT命令执行JOB\t34

1.9.3.11 EDIT――编辑其他的

数据文件\t34

1.9.3.12 START――建立新的会话\t36

1.9.3.13 终止编辑会话\t39

1.9.3.14 附加的基本命令\t39

1.9.4 TSO编辑配置文件(PROFILE)

的控制和显示\t39

1.10 系统例程功能――选项3\t41

1.10.1 库维护选项(3.1)\t42

1.10.1.1 BLANK――显示分区

数据集中的成员清单\t43

1.10.1.2 C――压缩数据集\t47

1.10.1.3 E――编辑数据集成员\t49

1.10.1.4 V――查看数据集成员

内容\t50

1.10.1.5 R――为数据集成员改名\t50

1.10.1.6 D――删除数据集成员\t52

1.10.1.7 P――打印数据集成员

内容\t52

1.10.1.8 X――打印数据集索引\t54

1.10.1.9 L――打印整个数据集\t54

1.10.1.10 I――显示数据集信息\t56

1.10.1.11 S――显示数据集简要

信息\t57

1.10.2 数据集例程选项(3.2)\t57

1.10.2.1 分配新数据集\t58

1.10.2.2 为数据集改名\t59

1.10.2.3 删除数据集\t61

1.10.2.4 将未登目数据集登目(Catalog)\t61

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

1.10.2.6 显示数据集简短信息\t63

1.10.2.7 VSAM例程\t64

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

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

1.10.4.1 数据集成员显示、打印

和操作\t69

1.10.4.2 VTOC信息的显示和

打印\t73

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

1.10.6 数据集打印选项(3.6)\t75

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

1.10.8 TSO命令选项(3.9)\t77

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

1.10.10 数据集比较选项标准版(3.12)

和扩展版(3.13)\t78

1.10.11 字符串检索选项标准版(3.14)

和扩展版(3.15)\t79

1.11 TSO命令\t80

1.11.1 离开ISPF/PDF\t80

1.11.2 输入TSO命令\t81

1.11.2.1 ISPF/PDF选项6――

TSO COMMAND\t81

1.11.2.2 使用TSO前缀\t82

1.11.3 TSO HELP\t82

1.11.4 LISTCAT命令\t83

1.11.5 LISTDS命令\t85

1.11.6 LISTALC命令\t86

1.11.7 DELETE命令\t87

1.11.8 RENAME命令\t87

第2章 作业控制语言(Job Control

Language――JCL)\t89

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

2.2 JOB语句\t92

2.2.1 JOB语句中的位置参数\t93

2.2.1.1 账户信息\t93

2.2.1.2 程序员名\t93

2.2.2 JOB语句中的关键字参数\t93

2.2.2.1 MSGLEVEL\t94

2.2.2.2 MSGCLASS\t94

2.2.2.3 COND\t95

2.2.2.4 ADDRSPC\t96

2.2.2.5 CLASS\t96

2.2.2.6 NOTIFY\t97

2.2.2.7 PRTY\t97

2.2.2.8 REGION\t97

2.2.2.9 TIME\t97

2.2.2.10 TYPRUN\t98

2.2.2.11 USER参数\t98

2.2.2.12 PASSWORD\t99

2.2.2.13 多个关键字参数

一起使用\t99

2.3 EXEC语句\t99

2.3.1 EXEC语句的位置参数\t100

2.3.1.1 PGM=位置参数\t100

2.3.1.2 PROC=位置参数\t101

2.3.1.3 省略PROC=关键字\t101

2.3.2 关键字参数\t101

2.3.2.1 PARM参数\t102

2.3.2.2 COND参数\t102

2.3.2.3 程序库\t104

2.4 DD语句\t106

2.4.1 DD语句参数\t107

2.4.2 DD语句的位置参数\t108

2.4.2.1 流内数据\t108

2.4.2.2 哑(Dummy)数据集\t109

2.4.3 DD语句的关键字参数\t110

2.4.3.1 DSN\t110

2.4.3.2 DISP\t111

2.4.3.3 UNIT\t112

2.4.3.4 VOLUME\t112

2.4.3.5 SPACE\t112

2.4.3.6 LABEL\t112

2.4.3.7 DCB\t113

2.4.3.8 SYSOUT\t113

2.4.3.9 数据集串联

(Concatenation)\t113

2.4.3.10 存储管理子系统

(SMS)\t114

2.5 向后引用(Backward Reference)\t114

2.6 条件JCL\t117

2.7 INCLUDE 组\t122

2.8 从JCL向PROGRAM传递参数\t123

2.9 JOB 提交\t124

2.10 JES2――作业处理步骤\t124

2.11 JES3――作业处理步骤\t125

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

2.12.1 输出队列的显示及操作\t126

2.12.2 挂起队列的显示及操作\t129

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

2.12.4 显示所有作业清单及操作\t131

2.12.5 输入队列清单及其操作\t132

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

2.12.7 系统日志(LOG)\t134

2.12.8 用户日志(ULOG)\t136

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

2.13.1 选择需要的例程\t137

2.13.2 例程使用的ddname\t138

2.13.3 例程控制语句\t138

2.13.4 复制和打印顺序数据集\t139

2.13.5 编辑顺序数据集\t140

2.13.6 转换顺序数据集为分区数据集

的成员\t142

2.13.7 转换顺序数据集到分区数据集

――增加新成员\t143

2.13.8 IEBCOPY复制分区数据集或

分区数据集成员\t144

2.13.9 分区数据集的压缩\t145

2.13.10 维护源程序库\t146

2.13.11 打印分区数据集(PDS)

目录清单\t148

2.13.12 IEBCOMPR比较分区数据集\t149

2.13.13 比较顺序数据集\t150

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

2.13.15 IEFBR14顺序文件的建立

和删除\t151

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

2.13.17 分类\t153

2.13.17.1 数据集的排序\t153

2.13.17.2 数据集的合并\t155

2.13.17.3 数据集的复制\t156

2.13.17.4 数据集记录的筛选――

包含满足条件的记录\t156

2.13.17.5 数据集记录的筛选――

生成头记录\t158

2.13.17.6 数据集记录的筛选――

跳过第1条记录\t158

2.13.17.7 交易合计\t159

2.13.17.8 将输入文件分成

两个文件\t159

2.14 JCL过程的定义\t160

2.15 JCL过程的调用\t161

2.16 过程调用中COND参数的使用\t162

2.17 JCL符号参数\t162

2.18 JCL过程的测试\t164

2.19 过程定义和调用的例子\t164

2.19.1 定义和调用流内过程\t164

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

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

过程并覆盖原过程中的参数\t165

2.19.4 调用私有过程库中的过程并

覆盖原过程中的某些参数\t166

2.20 作业运行清单(JOB LOG)的

阅读和查错\t169

2.21 JCL过程参数置换和RESTART

语句\t171

第3章 VSAM文件处理\t175

3.1 概念和设备\t175

3.1.1 KSDS组成部分\t175

3.1.2 ESDS组成部分\t176

3.1.3 RRDS组成部分\t177

3.1.4 控制间隔(CI)\t177

3.1.5 控制区域(CA)\t178

3.1.6 跨越记录(Spanned)\t178

3.1.7 KSDS文件的物理实现\t179

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

3.1.8.1 跨区域(Cross-Region)

选项\t181

3.1.8.2 跨系统(Cross-System)

选项\t181

3.1.9 VSAM目录(VSAM Catalogs)\t182

3.1.9.1 主目录\t183

3.1.9.2 用户目录\t183

3.1.9.3 VSAM数据空间\t183

3.1.9.4 VSAM族\t183

3.1.9.5 非VSAM数据集

(Non-VSAM Datasets)\t184

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

3.2.1 语句的语法\t184

3.2.2 定义用户目录\t185

3.2.3 定义数据空间\t186

3.2.4 定义别名\t187

3.2.5 定义VSAM文件\t188

3.2.6 装载记录到VSAM文件中\t192

3.2.6.1 使用REPRO备份文件\t194

3.2.6.2 从备份文件中恢复数据\t194

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

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

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

3.2.10 备份和恢复目录\t197

3.2.11 删除VSAM和非VSAM目标\t198

3.2.12 显示目录清单\t199

3.2.13 打印或显示数据集内容\t200

3.2.14 修改文件属性\t201

3.2.15 辅助(次)索引\t202

3.2.16 核实VSAM数据集\t206

3.3 世代数据集GDG\t206

3.3.1 GDG的定义及建立\t207

3.3.2 GDG文件的应用\t209

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

4.1 JES2命令\t211

4.1.1 $D JOB显示特定作业(JOB)

的信息\t211

4.1.1.1 显示作业的输出信息\t212

4.1.1.2 显示使用缓冲区(SPOOL1)

超过1%的作业信息\t212

4.1.1.3 $D STC查看已启动任务

的作业号和状态\t212

4.1.1.4 显示系统中的TSU用户

及其作业号\t212

4.1.2 $D SPOOL显示缓冲区(Spool)

的状态\t213

显示系统中所有的缓存区及使用

百分比和总的缓冲区

使用百分比\t213

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

的状态\t213

4.1.3.1 显示系统中所有活动作业

的状态\t213

4.1.3.2 显示特定设备上所有活动

作业的状态\t213

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

的状态\t213

4.1.5 $D I显示JES中初始器(Initiator)

的状态\t214

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

和状态\t214

4.1.5.2 显示Initiator 3的

详细信息\t214

4.1.6 $D Q显示系统中所有的队列中

的作业信息\t215

4.1.6.1 显示系统中所有的队列

中的作业信息\t215

4.1.6.2 显示缓冲区中所有挂起

(Hold)作业的信息\t215

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

和STC\t215

4.1.8 $A A释放系统中所有挂起的作业\t215

4.1.9 $A JOB释放挂起的作业\t216

4.1.9.1 释放作业34到40\t216

4.1.9.2 释放作业号为10到15

的所有批处理作业、STC

和TSU用户\t216

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

4.1.11 $H JOB暂停特定的作业\t216

4.1.11.1 暂停作业10开始的

所有作业\t217

4.1.11.2 暂停作业STC00051\t217

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

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

4.1.12.2 启动Initiator 8到10\t217

4.1.13 $S XEQ让JES2开始从QUEUE

中选择作业执行\t217

4.1.14 $P JES2停止JES2的处理\t218

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

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

4.1.16.1 删除作业IBMUSERN

的输出信息\t218

4.1.16.2 将class A和B中的

所有作业输出删除掉\t218

4.1.16.3 解决JES2缓冲区

(SPOOL)满的问题\t218

4.1.17 $T JOB修改作业的类别和

优先级\t218

4.1.17.1 将作业45的运行CLASS

改为X\t219

4.1.17.2 将作业45的优先级加2\t219

4.1.17.3 将执行队列中用户为

IBMUSER的作业的运行

CLASS改为Y\t219

4.1.17.4 将执行队列中运行

CLASS为Y的作业的

CLASS改为A\t219

4.2 MVS命令\t220

4.2.1 DISPLAY JOBS显示当前正在运行

的作业、TSO用户和STC任务\t220

4.2.1.1 显示当前正在运行的

作业、TSO用户和

STC任务\t220

4.2.1.2 显示TSO用户IBMUSER

的详细信息\t220

4.2.1.3 显示所有IBMUSER

用户提交的交易\t220

4.2.2 Display Request显示控制台上

没有回答信息的总数\t221

4.2.2.1 显示控制台上没有回答

信息的总数\t221

4.2.2.2 查询未回答信息的

作业名\t221

4.2.2.3 显示以IBM开头的作业

的未回答信息\t221

4.2.3 DISPLAY SMF显示系统中的

SMF配置\t221

4.2.3.1 显示系统中的SMF配置、

使用的文件及每个文件的

使用百分比\t221

4.2.3.2 显示SMF的当前

配置情况\t222

4.2.4 DISPLAY CONSOLES显示控制

台MASTCONS上的详细信息\t222

4.2.4.1 显示控制台MASTCONS

上的详细信息\t222

4.2.4.2 查询主控台未回答信息的

个数及系统可容许的总数\t222

4.2.5 DISPLAY M显示当前系统设备

的配置信息\t223

4.2.5.1 显示当前系统的所有设备

的配置信息\t223

4.2.5.2 显示设备01C0的

状态信息\t223

4.2.6 DISPLAY OPDATA显示

操作员信息\t223

4.2.7 DISPLAY ASM显示系统中

的PAGE数据集的信息\t224

4.2.8 DISPLAY U显示直接存取设备

的信息\t224

4.2.9 DISPLAY DUMP显示DUMP

数据集的信息\t224

4.2.10 DISPLAY GRS监测资源

争用状况\t225

4.2.10.1 显示资源争用

(Contention)信息\t225

4.2.10.2 显示等待某资源的作业\t225

4.2.10.3 显示某一特定资源的

使用情况\t225

4.2.10.4 DEVSERV查看NON-SMS

管理的卷\t226

COBOL程序设计导论

第5章 COBOL语言简介\t228

5.1 COBOL特性\t228

5.2 标识部(Identification Division)\t229

5.3 环境部(Environment Division)\t229

5.4 数据部(Data Division)\t230

5.5 过程部(Procedure Division)\t230

5.5.1 节(Section)\t230

5.5.2 段(Paragraph)\t230

5.5.3 语句和句子\t231

5.6 完整的COBOL程序\t231

5.7 最精致的COBOL程序\t231

5.8 普通COBOL程序编译流程图及

样板作业流\t232

5.9 COBOL编码规则\t235

5.10 名字的结构\t236

5.11 数据描述和数据传送(Move)

语句\t236

5.11.1 COBOL数据类型及模式

(Picture)短语\t237

5.11.2 级别号表达数据的层次\t238

5.11.3 特殊级别号数据项\t238

5.11.4 组合项和基本项\t239

5.11.5 数据用法(USAGE)短语\t240

5.11.6 数字编辑(EDITED)格式\t242

5.11.7 数据传送(MOVE)语句\t244

5.11.8 程序例子(MOVE语句)\t245

5.11.9 运行结果(MOVE语句)\t250

第6章 COBOL语言数据处理\t252

6.1 DISPLAY语句\t252

6.2 ACCEPT语句\t252

6.3 DISPLAY和ACCEPT语句的

程序例子\t254

6.3.1 使用ACCEPT和DISPLAY的

完整程序\t254

6.3.2 运行ACCEPT和DISPLAY的

程序的作业流\t255

6.3.3 使用ACCEPT和DISPLAY的

程序的输出结果\t255

6.4 PERFORM语句\t255

6.4.1 程序例子(PERFORM语句)\t258

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

6.5 IF语句\t262

6.6 SET语句\t264

6.7 EVALUATE语句\t264

6.8 CONTINUE和NEXT SENTENCE

语句\t266

6.8.1 程序例子(CONTINUE和

NEXT SENTENCE语句)\t267

6.8.2 运行结果报表(CONTINUE

和NEXT SENTENCE语句)\t267

6.9 算术运算语句\t268

6.9.1 四舍五入(ROUNDED)选项\t268

6.9.2 数据溢出(ON SIZE ERROR)

选项\t268

6.9.3 带有余数(REMAINDER)选项

的DIVIDE语句\t268

6.9.4 综合运算(COMPUTE)语句\t269

6.9.5 程序例子(算术运算)\t269

6.9.6 程序运行结果(算术运算)\t276

6.10 STRING命令\t276

6.10.1 程序例子(STRING命令)\t277

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

6.11 UNSTRING命令\t281

6.11.1 程序例子(UNSTRING命令)\t282

6.11.2 程序运行结果(UNSTRING

命令)\t285

6.12 INSPECT语句\t286

6.12.1 程序例子(INSPECT命令)\t288

6.12.2 程序运行结果(INSPECT

命令)\t290

6.13 COPY语句\t290

6.13.1 程序例子(COPY命令)\t291

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

第7章 向COBOL专家迈进\t296

7.1 主程序和子程序\t296

7.1.1 主程序的CALL语句\t296

7.1.2 子程序\t298

7.1.3 主程序例子1(MAIN1)\t299

7.1.4 子程序例子1(MYSUB1)\t301

7.1.5 程序运行结果(MAIN1)\t301

7.1.6 主程序例子2(MAIN2)\t302

7.1.7 程序运行结果(MAIN2)\t303

7.1.8 子程序例子2(MYSUB2)\t304

7.1.9 JCL调用例子(MYSUB2)\t304

7.1.10 程序运行结果(MYSUB2)\t305

7.2 表处理\t305

7.2.1 表的定义\t305

7.2.2 下标、索引和SET索引语句\t306

7.2.3 SEARCH动词\t307

7.2.4 表的初始化\t310

7.2.5 二维表\t311

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

7.2.7 表初始化作业流\t315

7.2.8 表初始输入数据\t315

7.2.9 表初始化运行结果\t316

7.2.10 二维表初始化程序例子

(TABLE6)\t317

7.2.11 二维表初始化作业流\t319

7.2.12 二维表初始输入数据\t319

7.2.13 二维表初始化运行结果\t321

7.2.14 顺序和折半检索程序例子

(TABLE3)\t322

7.2.15 运行作业流(TABLE3)\t324

7.2.16 运行结果(TABLE3)\t324

7.3 提要\t325

第8章 顺序文件的维护\t326

8.1 COBOL的扩充\t326

8.1.1 SELECT语句\t326

8.1.2 在COBOL程序中使用ddname\t329

8.1.3 FD项目\t329

8.1.4 OPEN和CLOSE语句\t331

8.2 平衡线算法\t332

8.3 银行主文件维护平衡线程序

(BKUPD1)\t334

8.4 交易文件的格式\t339

8.5 主文件的格式\t340

8.6 运行银行主文件维护平衡线程序

的作业流(GOBKUPD1)\t341

8.7 交易文件(BKTRAN)\t341

8.8 按照账户分类以后的交易文件(BKTRAN-SORT)\t343

8.9 旧主文件(BKMASTO)\t345

8.10 新主文件(BKMASTN)\t346

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

8.12 银行主文件维护平衡线程序

的扩充(BKUPD2)\t348

8.13 运行银行主文件维护平衡线

扩充程序的作业流(GOBKUPD2)\t356

8.14 银行主文件维护平衡线扩充程序

的运行结果\t357

8.15 交易日报表\t359

8.16 提要\t362

第9章 索引文件\t363

9.1 概要\t363

9.2 文件组织的概念\t363

9.3 COBOL要求\t364

9.3.1 环境部\t364

9.3.2 过程部\t366

9.4 文件状态关键字概述\t367

9.5 非顺序文件维护\t369

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

9.7 平衡线算法的索引文件版程序

运行作业流(GOBKUPD3)\t379

9.8 运行结果清单\t382

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

9.10 提要\t384

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

10.1 历史回顾\t385

10.2 定义\t385

10.3 基本结构的充分性\t386

10.4 COBOL中的实现\t387

10.5 结构程序设计的优点\t387

10.6 结构理论的扩充\t387

10.7 GO TO论战\t388

10.8 源程序级查错\t389

10.9 常见运行错误\t389

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

10.9.2 计数器定义得太小\t389

10.9.3 循环内的错误\t389

10.9.4 SEARCH动词的错误使用\t390

10.9.5 不正确使用MOVE语句\t390

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

10.9.7 不适当使用嵌套IF语句\t390

10.9.8 遗漏或多余句号\t391

10.9.9 WRITE后存取FD区域\t391

10.9.10 从被PERFORM模块中不

适当地跳出\t391

10.9.11 未能设置或重新设置开关\t391

10.9.12 不适当调用子程序\t391

10.9.13 文件开始或结束条件错误\t391

10.9.14 索引或下标非法\t391

10.9.15 不适当使用注解\t392

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

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

的位移\t393

10.10.2 生成带有程序指令位移的

COBOL程序编译清单\t393

10.10.3 确定导致程序异常结束的

COBOL源程序语句\t411

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

10.11 提要\t413

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

11.1 保持动词的层次关系\t414

11.2 选择有意义的名字\t415

11.3 格式化数据部分\t416

11.4 有吸引力的空白行\t417

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

11.6 避免使用逗号(,)\t417

11.7 使用第73~80列\t417

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

11.9 避免使用常数\t418

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

11.11 使用适当的注解\t419

11.12 PERFORM 段而不是节\t419

11.13 避免使用MOVE

CORRESPONDING\t420

11.14 去掉77级项目\t421

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

11.16 对复合算术运算使用

COMPUTE动词\t422

11.17 避免使用文字常数\t422

11.18 动态初始化表\t423

11.19 使用READ INTO、WRITE

FROM和WS BEGINS HERE\t423

11.20 传送单个01级到子程序\t424

11.21 避免“聪明的代码”\t424

11.22 不要过于看重效率,但仔细

地选择算法\t425

11.23 预防式地编码\t426

11.24 首先考虑,然后编码\t427

11.25 提要\t427

DB2实用程序设计

第12章 DB2的概念\t430

12.1 DB2目标层次结构\t430

12.2 数据库的连接\t431

12.3 SQL语言类型\t431

12.4 数据定义语言(DDL)\t431

12.4.1 DB2存储组\t431

12.4.2 数据库(Database)\t432

12.4.3 数据库表空间(Tablespace)\t433

12.4.4 数据库的表(Table)\t435

12.4.5 引用完整性(Referential

Integrity)\t440

12.4.6 索引(Index)\t441

12.4.7 视图(View)\t444

12.4.7.1 视图之上的视图\t446

12.4.7.2 视图上的SELECT、

插入、修改和删除\t446

12.4.7.3 UNION/UNION ALL

视图\t447

12.4.7.4 CHECK OPTION引起

视图中的行消失了\t448

12.4.7.5 WITH CHECK OPTION

的例子\t449

12.4.8 同义词(SYNONYM)\t449

12.4.9 别名(ALIAS)\t449

12.4.10 数据库目标的删除(DROP)\t450

12.4.11 DDL语句的应用实例\t451

12.5 数据控制语言(Data Control

Language――DCL)\t454

12.5.1 赋予(GRANT)和废除

(REVOKE)语句\t454

12.5.2 赋予及废除权限\t457

12.6 数据操作语言(Data Manipulation

Language――DML)\t463

12.6.1 数据检索\t464

12.6.1.1 检索整个表\t465

12.6.1.2 从表中挑选特定的列\t465

12.6.1.3 改变列的排序\t466

12.6.1.4 从表中挑选特定的行\t466

12.6.1.5 使用多个条件挑选特定

的行\t466

12.6.1.6 从多个表中选择要求

的列\t467

12.6.1.7 使用关系名\t468

12.6.1.8 查询结果排序\t468

12.6.1.9 计算出的列\t469

12.6.1.10 为计算出的列命名\t470

12.6.1.11 函数(Functions)\t470

12.6.1.12 分组合计(Grouping

Values)\t472

12.6.1.13 约束一组数据的使用\t472

12.6.1.14 去掉重复的记录\t473

12.6.1.15 字符串模式查找\t474

12.6.1.16 按数据范围搜索\t474

12.6.1.17 搜索空值(Null

Values)\t475

12.6.1.18 按否定的条件查询\t475

12.6.1.19 检索一组值\t476

12.6.2 数据更新\t476

12.6.2.1 插入数据记录\t476

12.6.2.2 插入一组值\t477

12.6.2.3 插入大量数据\t478

12.6.2.4 修改数据记录\t478

12.6.2.5 修改大量的数据\t479

12.6.2.6 删除数据\t479

12.6.2.7 删除表中的所有行\t481

12.6.3 存储过程\t481

12.6.3.1 建立或修改存储过程\t482

12.6.3.2 模式限定符\t483

12.6.3.3 删除存储过程\t483

12.6.4 用户定义函数\t483

12.6.4.1 外部用户定义函数

(External UDFs)\t483

12.6.4.2 有源用户定义函数

(Sourced UDFs)\t484

12.6.4.3 表函数

(Table Functions)\t484

12.6.4.4 执行用户定义函数\t485

12.6.5 触发器\t485

12.7 DB2I工具\t487

12.7.1 DB2I工具概要\t487

12.7.2 SPUFI\t487

第13章 DB2程序准备\t489

13.1 DB2程序编译流程图及样板

作业流\t489

13.2 预编译和绑定\t491

13.2.1 预编译\t491

13.2.1.1 预编译器\t492

13.2.1.2 修改过的源程序代码\t493

13.2.1.3 DBRM\t493

13.2.2 绑定\t494

13.2.2.1 绑定到包和直接绑定

方案的区别\t495

13.2.2.2 方案、包和集合\t496

13.2.2.3 运行时COBOL装载

模块调用DBRM\t497

13.3 绑定与再绑定\t497

13.3.1 自动再绑定\t498

13.3.2 绑定与再绑定选项\t498

13.3.3 让绑定决定存取的目标\t501

13.3.4 绑定的其他考虑因素\t502

13.4 删除包或方案\t502

第14章 DB2程序结构\t503

14.1 分隔符\t503

14.2 主变量和主变量组合项\t504

14.2.1 主变量的用法\t505

14.2.2 主变量组合项的用法\t506

14.2.3 主变量――接收单行数据\t507

14.2.4 主变量――接收多行数据\t507

14.2.5 主变量――插入记录行\t507

14.2.6 主变量――修改数据\t508

14.2.7 主变量――各种语言的定义\t508

14.3 DCLGEN\t510

14.3.1 从DB2I主菜单进入DCLGEN

选项\t510

14.3.2 DCLGEN输出例子\t511

14.4 处理空数据\t512

14.5 SQLCA――SQL通信区\t515

14.6 SQL INCLUDE 语句\t517

14.7 查询客户资料程序\t518

14.7.1 查询DB2客户资料源程序

(BKINQ)\t519

14.7.2 数据库表CUSTINFO的记录

格式及DCLGEN输出\t520

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

格式\t521

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

14.7.5 程序运行结果\t522

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

14.8.1 修改客户资料源程序\t523

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

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

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

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

14.9 修改明细客户资料程序――

空值和变长记录处理\t527

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

14.9.2 客户明细资料表CUSTINF1的

记录格式及DCLGEN输出结果\t531

14.9.3 计算字符串长度子程序\t532

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

14.9.5 输入文件CUSTINFO\t534

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

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

14.10 使用游标\t535

14.10.1 定义游标\t535

14.10.2 打开游标\t536

14.10.3 执行SQL语句\t537

14.10.3.1 取数据(FETCH)\t537

14.10.3.2 定位修改(Positioned

UPDATE)\t537

14.10.3.3 定位删除(Positioned

DELETE)\t538

14.10.3.4 游标定位修改或删除

的一些限制\t538

14.10.4 关闭游标\t539

14.10.5 保持游标(Cursor WITH

HOLD)\t539

14.10.6 游标的重新定位\t539

14.11 浏览客户资料表(BKNMINQ)

――使用游标处理多个记录\t541

14.11.1 浏览客户资料表源程序\t542

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

的JCL\t544

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

14.11.4 浏览客户资料表程序的

查询结果\t545

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

15.1 可恢复单元(Unit of Recovery)\t546

15.2 提交(COMMIT)和回滚

(ROLLBACK)\t547

15.3 保存点(SAVEPOINT)\t548

15.4 数据恢复\t550

15.4.1 日志\t550

15.4.2 日志数据集\t550

15.4.3 引导数据集BSDS\t551

15.4.4 SYSIBM.SYSLGRNX\t551

15.4.5 数据库恢复三部曲\t551

15.5 数据锁\t552

15.5.1 锁的属性\t553

15.5.2 锁的大小(Lock Sizes)\t553

15.5.2.1 表锁(Lock Table)

语句\t554

15.5.2.2 锁定选定的分区\t554

15.5.2.3 大对象(LOB)锁\t554

15.5.3 锁模式(Lock Modes)\t555

15.5.3.1 表或表空间锁\t556

15.5.3.2 页锁或行锁\t557

15.5.4 表空间和表锁的持续时间

(Lock Durations)\t557

15.5.5 页锁或行锁的持续时间――

隔离级别\t558

15.5.5.1 可重复读\t559

15.5.5.2 读稳定性\t559

15.5.5.3 游标稳定性\t559

15.5.5.4 未提交读\t560

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

15.5.7 锁的覆盖与避免\t560

15.5.8 悲观锁定与乐观锁定\t562

第16章 动态SQL介绍\t563

16.1 使用动态SQL\t563

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

16.3 完整的非SELECT语句\t564

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

16.3.2 完整的非SELECT语句――

程序运行前表中的内容\t566

16.3.3 完整的非SELECT语句――

运行程序的作业流\t567

16.3.4 完整的非SELECT语句――程序

运行后的显示信息及表中的记录\t567

16.4 参数化的非SELECT语句\t568

16.4.1 参数化的非SELECT语句

源程序(BKDYNA2)\t568

16.4.2 参数化的非SELECT语句――

程序运行前表中的内容\t570

16.4.3 参数化的非SELECT语句――

运行程序的作业流\t570

16.4.4 参数化的非SELECT语句――程序

运行后的显示信息及表中的记录\t571

16.5 固定列表的SELECT语句\t571

16.5.1 固定列表的SELECT语句

源程序(BKDYNA3)\t571

16.5.2 固定列表的SELECT语句――

运行程序的作业流\t574

16.5.3 固定列表的SELECT语句――

程序运行结果\t575

第17章 管理DB2测试数据\t576

17.1 数据移动例程\t576

17.1.1 装载(Load)例程\t576

17.1.2 装载的完整作业流\t577

17.1.2.1 增加或覆盖\t579

17.1.2.2 装载排好序的行\t580

17.1.2.3 装载分区表\t580

17.1.2.4 数据类型转换\t581

17.1.2.5 引用完整性(Referential Integrity)\t581

17.1.2.6 不强制执行

(ENFORCE NO)\t582

17.1.3 数据卸载(Unload)例程\t582

17.1.4 使用DSNTIAUL程序卸载数据\t585

17.2 数据统计\t587

17.2.1 数据统计概述\t588

17.2.2 统计(RUNSTATS)例程\t588

17.2.2.1 输出报告并修改DB2

编目表\t589

17.2.2.2 运行统计例程时存取

数据库\t589

17.2.2.3 样本数据\t589

17.2.2.4 在DB2编目表上运行

统计例程\t589

17.2.2.5 统计例程完整作业流\t589

17.3 重组(REORG)\t590

17.3.1 重组表空间\t590

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

17.3.3 重组索引\t592

第18章 DB2性能调优的理论及实践\t593

18.1 存取路径及优化\t593

18.2 DB2解释(EXPLAIN)工具\t594

18.3 收集解释数据\t594

18.4 分析解释数据\t596

18.5 存取路径评估\t599

18.5.1 索引存取\t599

18.5.2 表存取\t600

18.5.3 预取\t601

18.6 存取路径提示(优化提示)\t601

18.7 使用解释表输出的指引\t601

18.8 改善性能的索引设计\t602

18.8.1 匹配索引扫描

(MATCHCOLS > 0)\t602

18.8.2 索引筛选\t603

18.8.3 不匹配索引扫描(ACCESSTYPE =

I而且MATCHCOLS = 0)\t603

18.8.4 IN列表索引扫描

(ACCESSTYPE = N)\t603

18.8.5 多索引存取(ACCESSTYPE为

M、MX、MI或MU)\t603

18.8.6 一次获取存取

(ACCESSTYPE = I1)\t604

18.8.7 只存取索引

(INDEXONLY = Y)\t604

18.8.8 相等唯一索引(MATCHCOLS =

索引列数)\t604

18.9 使用索引以避免分类\t604

18.10 避免死锁\t604

18.11 DB2索引、谓词和DB2运行

架构\t606

18.11.1 DB2索引回顾\t606

18.11.2 DB2谓词分析\t606

18.11.3 索引管理器\t607

18.11.4 常见问题及解答\t609

18.12 大型银行核心系统DB2调优

实践\t610

18.12.1 性能调优工作流程\t610

18.12.2 典型案例1:公共转睡眠户

-CBF0070J\t610

18.12.3 典型案例2:活期主档扫描

-SDD0011J\t612

CICS程序设计导论

第19章 CICS应用程序环境\t616

19.1 CICS 基本概念回顾\t616

19.2 CICS联机交易\t618

19.3 CICS模块组成\t620

19.3.1 CICS管理功能\t620

19.3.2 CICS基本组成\t620

19.3.3 CICS管理模块\t621

19.3.4 CICS系统控制表\t622

19.3.5 CICS数据区域\t623

19.4 CICS交易工作流程\t625

19.5 CICS程序并行工作原理\t625

第20章 CICS应用系统设计\t627

20.1 对话与伪对话\t627

20.2 通信区(COMMAREA)\t629

20.3 伪对话程序的实现方法\t630

第21章 CICS命令概述\t632

21.1 编写CICS命令\t632

21.2 程序准备\t634

21.3 基本界面支持(Basic Mapping

Support)\t637

21.3.1 3270字段基本概念\t637

21.3.2 界面定义样本\t638

21.3.2.1 如何编写BMS宏命令\t638

21.3.2.2 如何编写汇编语言语句\t638

21.3.2.3 如何使用DFHMSD

宏命令定义界面集

(Mapset)\t640

21.3.2.4 如何使用DFHMDI

宏命令定义界面集中

的界面(Map)\t643

21.3.2.5 如何使用DFHMDF

宏命令定义界面中

的字段\t643

21.3.2.6 BMS字段定义模板\t645

21.3.3 银行柜员签到程序的界面格式

及界面集完整代码\t647

21.4 界面准备\t649

21.5 符号界面及符号界面格式\t652

21.6 界面的输出\t654

21.7 界面的输入\t655

21.8 常用标识键描述(DFHAID)\t656

21.9 界面显示属性常量

(DFHBMSCA)\t658

21.10 异常状态\t660

第22章 CICS程序对程序的控制\t662

22.1 CICS程序对程序的控制概述\t662

22.2 LINK命令\t662

22.3 XCTL命令\t663

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

22.5 COBOL CALL与LINK或XCTL

的比较\t665

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

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

22.8 RETURN命令\t669

第23章 CICS数据处理\t670

23.1 CICS存取VSAM的方法\t670

23.2 VSAM基本概念回顾\t671

23.2.1 VSAM文件的组织形式和

存取方法\t672

23.2.1.1 键顺序数据组织\t672

23.2.1.2 进入顺序数据组织\t672

23.2.1.3 相对顺序数据组织\t673

23.2.1.4 三种数据组织形式

的比较\t673

23.2.2 VSAM的物理结构与逻辑结构\t673

23.3 VSAM文件独占控制\t675

23.4 交易死锁\t676

23.5 工作单元的资源保护\t676

23.6 联机程序的组织结构\t677

23.7 CICS中访问VSAM文件的

常用命令\t677

23.7.1 READ命令\t678

23.7.2 WRITE命令\t679

23.7.3 REWRITE命令\t680

23.7.4 DELETE命令\t681

23.7.5 UNLOCK命令\t682

23.8 CICS中浏览VSAM文件的

常用命令\t682

23.8.1 STARTBR命令\t683

23.8.2 READNEXT命令\t684

23.8.3 READPREV命令\t685

23.8.4 ENDBR命令\t687

23.8.5 RESETBR命令\t688

23.8.6 CICS中按照次索引浏览

VSAM文件\t689

23.9 银行交易浏览程序例子\t690

23.9.1 联机交易文件的格式\t690

23.9.2 定义交易文件新格式和次索引

的作业流\t691

23.9.3 浏览交易界面源代码\t693

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

23.9.5 浏览交易COBOL程序完整

源代码\t696

23.9.6 银行浏览交易联机CICS

资源定义\t706

23.9.7 银行浏览交易联机运行

结果演示\t709

23.10 CICS存取DB2的方法\t712

23.11 CICS访问DB2的程序结构\t712

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

23.13 CICS应用程序访问DB2

的准备工作\t715

23.13.1 定义CICS与DB2之间

的连接(DB2CONN)\t715

23.13.2 定义进入线程(DB2ENTRY)\t717

23.13.3 定义DB2交易(DB2TRAN)\t718

23.14 其他CICS常用命令\t719

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

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

23.14.2.1 ASKTIME命令\t721

23.14.2.2 FORMATTIME命令\t721

23.14.3 存取CICS系统公共信息

(ADDRESS命令)\t722

23.14.4 内存管理命令(GETMAIN

和FREEMAIN)\t723

23.14.4.1 GETMAIN命令\t723

23.14.4.2 FREEMAIN命令\t724

23.14.5 DELAY命令\t725

23.14.6 CANCEL命令\t726

23.14.7 ASSIGN命令\t727

23.14.8 ALLOCATE(APPC)命令\t728

23.14.9 CONNECT PROCESS命令\t729

23.14.10 SEND(APPC)命令\t731

23.14.11 RECEIVE(APPC)命令\t732

23.14.12 DEFINE COUNTER命令\t733

23.14.13 SUSPEND命令\t734

第24章 CICS队列\t735

24.1 CICS队列设备\t735

24.2 分区内过渡队列\t735

24.3 分区外过渡队列\t736

24.3.1 定长记录文件\t737

24.3.2 变长记录文件\t738

24.3.3 结尾记录文件\t738

24.4 间接目的地\t738

24.5 过渡队列服务\t739

24.5.1 输出数据到过渡队列\t739

24.5.2 从过渡队列中读出数据\t739

24.5.3 从过渡队列中删除数据\t740

24.6 触发交易启动\t740

24.7 临时存储队列概述\t741

24.8 临时存储队列服务\t741

24.8.1 写数据到临时存储队列\t742

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

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

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

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

24.10 临时存储队列命名\t745

24.11 删除临时存储队列\t746

24.12 临时数据的存放位置\t746

24.13 队列的老化\t746

24.14 队列属性\t746

24.15 过渡数据队列和临时存储

队列的比较\t746

24.16 CEBR\t747

24.16.1 默认TS队列\t747

24.16.2 CEBR的帮助\t748

24.16.3 队列显示\t748

24.16.4 获取TD队列\t749

第25章 银行系统实例\t750

25.1 银行系统流程图\t750

25.2 柜员签到模块\t752

25.2.1 程序(EMLOGON)\t752

25.2.2 交易(EMPL)\t757

25.2.3 界面(EMPSET1)\t757

25.2.4 柜员信息表(EMPLINFO)\t758

25.3 账户维护菜单模块\t759

25.3.1 程序(EMMENU)\t759

25.3.2 交易(EMME)\t762

25.3.3 界面(EMESET1)\t763

25.4 建立新账户模块\t764

25.4.1 程序(CREATE)\t765

25.4.2 子程序(AUTOPE)\t772

25.4.3 子程序(STRLEN)\t773

25.4.4 子程序(NUMEDIT)\t774

25.4.5 交易(CREA)\t776

25.4.6 界面(CRESET1)\t777

25.4.7 文件(AUTOPE)\t780

25.4.8 客户账户资料表(CUSTINFO)\t781

25.4.9 交易流水表(OPERATIN)\t782

第26章 CICS提供的交易及调试CICS

应用程序\t784

26.1 CICS系统的启动和关闭\t784

26.2 CICS提供的交易\t785

26.3 CICS签到交易CESN\t786

26.4 CICS签退交易CESF\t786

26.5 查看终端状态交易CEOT\t787

26.6 信息查找CMAC交易\t788

26.7 命令层的解释程序CECI和

CECS交易\t788

26.8 CEMT(MASTER TERMINAL)

交易\t791

26.8.1 移除资源(DISC)\t791

26.8.2 查询CICS资源状态\t792

26.8.2.1 查看CICS定义的

文件状态\t792

26.8.2.2 查看CICS定义的

程序状态\t792

26.8.2.3 查看CICS定义的

终端状态\t793

26.8.2.4 查看CICS定义的转存

文件状态\t793

26.8.2.5 查看CICS运行的

任务状态\t793

26.8.2.6 查看CICS定义的

交易状态\t794

26.8.2.7 查看CICS定义的外部

连接状态\t794

26.8.3 修改CICS资源状态\t795

26.8.3.1 更新联机程序的新版本\t795

26.8.3.2 更改文件状态\t795

26.8.3.3 切换当前使用的转存

(DUMP)文件\t796

26.8.3.4 停止正在运行的任务

(TASK)\t797

26.8.3.5 更改交易的状态\t797

26.8.3.6 更改终端的状态\t798

26.8.4 执行特殊的CICS功能\t798

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

26.9.1 CEDA命令的子命令\t800

26.9.2 CEDA DELETE命令和CEDA REMOVE命令的异同点\t801

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

26.9.4 CEDA常用命令的使用方法\t802

26.9.4.1 定义程序\t802

26.9.4.2 定义界面集\t802

26.9.4.3 定义文件\t803

26.9.4.4 查看交易清单及交易

详细定义\t804

26.9.4.5 查看程序清单及程序

详细定义\t804

26.9.4.6 查看界面清单及

界面定义\t805

26.9.4.7 查看DB2进入线程

清单及详细定义\t805

26.9.4.8 查看DB2交易清单及

详细定义\t805

26.9.4.9 安装资源到CICS中\t806

26.10 CICS联机交易诊断工具\t807

26.10.1 CEDF交易\t807

26.10.1.1 开始EDF跟踪

(单终端模式)\t808

26.10.1.2 PF7/PF8滚动显示\t808

26.10.1.3 覆盖参数(Argument)

的值\t809

26.10.1.4 覆盖返回码

(Response)\t810

26.10.1.5 显示翻译器中的源

程序行数\t811

26.10.1.6 PF6显示用户界面\t818

26.10.1.7 PF2以十六进制格式

显示屏幕上的内容\t818

26.10.1.8 PF5显示工作存储区\t818

26.10.1.9 在存储区界面用

PF4显示EIB\t819

26.10.1.10 在存储区界面使用

PF2调用CEBR交易\t819

26.10.1.11 在存储区界面使用

PF5调用CECI交易\t820

26.10.1.12 设定停止显示的条件\t821

26.10.1.13 显示以前的命令\t821

26.10.1.14 伪对话的继续\t821

26.10.1.15 程序终止\t822

26.10.1.16 任务终止\t822

26.10.1.17 申请异常中断\t822

26.10.1.18 开始EDF跟踪

(双终端模式)\t822

26.10.2 CEDX交易\t824

26.10.3 设置用户跟踪入口点\t825

第27章 COBOL函数及编译选项\t827

27.1 COBOL提供的内部函数\t827

27.1.1 内部函数的类型\t828

27.1.2 嵌套函数\t828

27.1.3 函数对数组项目的处理\t828

27.2 数据项目转换内部函数\t829

27.2.1 转换大小写(UPPER-CASE,LOWER-CASE)\t829

27.2.2 转换字符串的排列次序

(REVERSE)\t830

27.2.3 转换成数字(NUMVAL,

NUMVAL-C)\t830

27.2.4 数字去编辑(DE-EDITING)\t831

27.2.5 代码页(Code page)转换

(DISPLAY-OF和

NATIONAL-OF)\t832

27.3 求数据项的值\t835

27.3.1 求单个字符在代码集中的

序号(ORD)\t835

27.3.2 按代码集中的序号返回对应

的字符(CHAR)\t836

27.3.3 求数据项的最大值和最小值\t836

27.3.4 返回最大和最小序号值

ORD-MAX和ORD-MIN\t837

27.3.5 找出数据项的长度\t837

27.3.6 字母数字(alphanumeric)函数

返回变长结果\t838

27.4 找出程序编译日期\t838

27.5 EBCDIC和ASCII排列次序\t839

27.5.1 EBCDIC排列次序

(collating sequence)\t839

27.5.2 美国英语ASCII代码页

(code page)\t842

27.6 货币符号的使用\t845

27.7 日期相关的函数\t846

27.7.1 获取系统当前日期和时间(CURRENT-DATE)\t847

27.7.2 获取整数日子(INTEGER-

OF-DATE)\t847

27.7.3 获取整数日期(DATE-OF-

INTEGER)\t848

27.7.4 转换儒略日到整数日子

(INTEGER-OF-DAY)\t848

27.7.5 转换整数日子到儒略日

(DAY-OF-INTEGER)\t848

27.8 数据统计\t849

27.9 IBM企业级COBOL编译选项\t851

27.9.1 满足COBOL 85标准的编译选项\t853

27.9.2 互相排斥的编译选项\t853

27.9.3 编译选项说明\t854

27.9.3.1 ADATA\t854

27.9.3.2 ADV\t855

27.9.3.3 ARITH\t855

27.9.3.4 AWO\t855

27.9.3.5 BUFSIZE\t856

27.9.3.6 CICS\t856

27.9.3.7 CODEPAGE\t856

27.9.3.8 COMPILE\t857

27.9.3.9 CURRENCY\t857

27.9.3.10 DATA\t858

27.9.3.11 DATEPROC\t858

27.9.3.12 DBCS\t859

27.9.3.13 DECK\t859

27.9.3.14 DIAGTRUNC\t859

27.9.3.15 DLL\t860

27.9.3.16 DUMP\t860

27.9.3.17 DYNAM\t860

27.9.3.18 EXIT\t861

27.9.3.19 EXPORTALL\t861

27.9.3.20 FASTSRT\t862

27.9.3.21 FLAG\t862

27.9.3.22 FLAGSTD\t862

27.9.3.23 INTDATE\t863

27.9.3.24 LANGUAGE\t864

27.9.3.25 LIB\t864

27.9.3.26 LINECOUNT\t864

27.9.3.27 LIST\t865

27.9.3.28 MAP\t865

27.9.3.29 NAME\t866

27.9.3.30 NSYMBOL\t866

27.9.3.31 NUMBER\t866

27.9.3.32 NUMPROC\t867

27.9.3.33 OBJECT\t867

27.9.3.34 OFFSET\t868

27.9.3.35 OPTIMIZE\t868

27.9.3.36 OUTDD\t868

27.9.3.37 PGMNAME\t869

27.9.3.38 QUOTE/APOST\t871

27.9.3.39 RENT\t871

27.9.3.40 RMODE\t871

27.9.3.41 SEQUENCE\t872

27.9.3.42 SIZE\t872

27.9.3.43 SOURCE\t872

27.9.3.44 SPACE\t873

27.9.3.45 SQL\t873

27.9.3.46 SSRANGE\t873

27.9.3.47 TERMINAL\t874

27.9.3.48 TEST\t874

27.9.3.49 THREAD\t875

27.9.3.50 TRUNC\t875

27.9.3.51 VBREF\t878

27.9.3.52 WORD\t878

27.9.3.53 XREF\t878

27.9.3.54 YEARWINDOW\t879

27.9.3.55 ZWB\t879

提要\t\t880

第28章 CICS交易Dump分析及查错\t881

28.1 CICS/ESA概览\t881

28.2 解决CICS问题的一般方法\t887

28.2.1 确定问题前的初步检查\t887

28.2.2 确定问题的方法\t888

28.3 解决CICS问题的主要资源\t888

28.3.1 编译输出\t888

28.3.2 编译选项\t889

28.3.3 CICS Log输出\t890

28.3.4 CICS信息格式\t890

28.3.5 CICS的Abend代码\t891

28.3.6 CMAC交易\t891

28.3.7 信息处置方法\t891

28.3.8 交易轨迹(Traces)的类型\t892

28.3.9 统计输出(Statistics Output)\t892

28.3.10 基本手册(Essential Manuals)\t893

28.4 CICS提供的交易\t893

28.4.1 CEOT交易的执行\t894

28.4.2 CEMT交易执行\t894

28.4.3 CEMT查询功能\t894

28.4.4 CEMT查询交易状态\t895

28.4.5 CEMT查询交易的类别

(Tclass)\t895

28.4.6 CEMT查询程序的状态\t896

28.4.7 CEMT交易查询文件状态\t896

28.4.8 CEMT查询数据集(Dataset)

的状态\t897

28.4.9 CEMT交易查询TD Queue状态\t897

28.4.10 CEMT查询TS Queue状态\t897

28.4.11 CEMT查询任务(Task)状态\t898

28.4.12 CEMT查询VTAM通信状态\t899

28.4.13 CEMT查询IRC的状态\t899

28.4.14 CEMT查询连接(Connection)

状态\t900

28.4.15 从主控台执行CICS提供

的交易\t900

28.4.16 CRTE――执行远程交易\t901

28.4.17 CMSG交易传递信息\t901

28.4.18 CEDF互动式查错\t902

28.5 使用Trace Tabel帮助查错\t902

28.6 读懂CICS Trace记录\t906

28.7 使用CETR交易控制Trace

记录内容\t907

28.8 使用交易Dump帮助查错\t910

28.8.1 Dump中的十六进制计数\t910

28.8.2 症状(Symptom)字符串和

寄存器组\t911

28.8.3 任务控制区的用户区

(Task Control Area - User Area)\t912

28.8.4 任务控制区的系统区(Task

Control Area - System Area)\t913

28.8.5 从CICSDump中找到TCAPCHS\t913

28.8.6 从CICS DUMP中找到EIB

和EIS的内容\t914

28.8.7 Dump中的交易内存区\t915

28.8.8 TCTTE(Terminal Control Table Terminal Entry)数据区\t916

28.8.9 Dump中的程序内存区\t917

28.8.10 Dump的结尾\t918

28.8.11 不经常访问的Dump数据区域\t919

28.8.12 CICS Command Level程序编码\t919

28.8.13 CICS程序初始化\t920

28.8.14 CICS程序的执行\t920

28.8.15 定位应用程序的RSA\t920

28.8.16 从CICS Dump找到寄存器

14的三种方法\t921

28.8.17 从CICS Dump中找到COBOL

程序出错的EXEC CICS语句\t922

28.8.18 从CICS Dump中找到COBOL

程序出错的其他EXEC CICS语句\t923

28.8.19 COBOL数据区域\t924

28.8.20 COBOL内存映像

(Memory Map)\t924

28.8.21 从CICS Dump中定位Working

Storage字段的方法\t925

28.8.22 快速访问被Link程序\t927

28.8.23 设置Dump表交易\t929

28.8.24 Dump处理\t930

28.8.25 Abends的源头\t931

28.8.26 程序检查(Program Checks)\t932

28.8.27 程序状态字(Program Status

Word,PSW)\t934

28.8.28 交易Abend控制块(Transaction

Abend Cobtrol Block ? TACB)\t935

28.9 使用交易Dump解决ASRA Abend

的实例\t936

28.9.1 解决ASRA Abend问题的

通用方法\t936

28.9.2 解决ASRA问题第1步\t936

28.9.3 解决ASRA问题第2步\t937

28.9.4 解决ASRA问题第3步\t937

28.9.5 解决ASRA问题第4步\t938

28.9.6 解决ASRA问题第5步\t939

28.9.7 解决ASRA问题第6步\t939

28.9.8 解决ASRA问题的一些提示\t941

28.9.9 从CICS/ESA V3.2开始引入的

新Abend\t941

28.10 使用交易Dump解决AEYD

Abend的方法\t942

28.10.1 从CICS/ESA V4开始引入的

新Abend(AEYD)\t942

28.10.2 解决AEYD Abend的方法\t942

28.11 使用交易Dump解决死

循环(Loop)的方法\t943

28.11.1 紧凑循环和执着循环

(Tight and Non-Yielding Loops)\t944

28.11.2 柔软的循环(Yielding Loop)\t944

28.11.3 Trace Table的用法\t944

28.11.4 解决循环的通用方法\t945

28.11.5 其他的选项\t945

28.12 使用交易Dump解决错误

输出的方法\t946

28.13 使用交易Dump解决ASRA

的真实案例\t948

28.14 使用交易Dump解决AEYD

的真实案例\t960

28.15 使用交易Dump解决循环

(Loop)的提示\t967

提要\t\t968

第29章 CICS通道容器

(Channel Container)\t969

29.1 通道容器引入的背景\t969

29.2 绕开32KB限制的非标准方法\t970

29.3 通道容器的概念\t971

29.3.1 当前通道(The Current

Channel)\t972

29.3.2 通道的范围(Scope of a

Channel)\t974

29.3.3 通道的生命周期(Lifetime of a Channel)\t975

29.4 通道容器相关的API命令\t975

29.4.1 容器(Container)命令\t975

29.4.2 程序调用/转移命令\t975

29.4.3 交易调用/转移命令\t976

29.4.4 查询命令\t976

29.4.5 容器浏览命令\t976

29.5 数据转换(Data Conversion)\t976

29.6 应用场景\t977

29.6.1 使用通道的基本应用场景\t977

29.6.2 应用场景,多组件\t978

29.6.3 应用场景,松耦合\t978

29.7 迁移到通道容器\t979

29.7.1 使用LINK程序的迁移\t979

29.7.2 使用START程序的迁移\t979

29.8 程序例子\t981

29.9 最佳实践\t983

29.9.1 定义接口\t984

29.9.2 DPL性能\t984

提要\t\t985

第30章 排序/合并及软件质量控制\t986

30.1 排序的概念\t986

30.2 实现排序的步骤\t987

30.3 COBOL中与排序有关的成分\t988

30.4 SORT语句的第一种形式\t990

30.5 SORT语句的第二种形式\t994

30.6 MERGE(合并)语句\t1001

30.7 软件质量控制的一些思考\t1003

30.7.1 软件行业的最高指导原则――

KISS原则\t1003

30.7.2 COBOL程序现状\t1003

30.7.3 COBOL程序质量低劣体现

在哪里\t1005

30.7.4 如何鉴定程序质量的好坏\t1006

30.7.5 如何做高质量的COBOL程序\t1007

30.7.6 为何需要编程规范\t1008

30.7.7 实际软件开发规范细则\t1008

30.7.8 让COBOL全程自动监控I-O

操作的“DECLARATIVES”\t1015

30.7.9 让CICS全程自动监控CICS

命令的“HANDLE”\t1016

30.7.10 联机CICS程序中用户功能键

的处理\t1018

30.7.11 程序段(节)名前缀与

位置布局\t1019

30.7.12 COBOL程序例子1(排序

程序改进版)\t1022

30.7.13 COBOL程序例子2(报表

文件双页合并)\t1026

30.7.14 文件对碰(MATCH)的

定式写法\t1029

提要\t\t1035

第31章 数字货币及背后的技术\t1036

31.1 数字货币\t1036

31.2 比特币\t1037

31.3 区块链\t1041

31.3.1 区块链是一种新的数据库――

准备重写一切\t1041

31.3.2 逐渐走向去中心的世界\t1044

31.3.3 系统的网络效应\t1045

31.3.4 比特币与“其他的”区块链\t1046

31.4 数字货币多元化\t1047

31.4.1 技术\t1047

31.4.2 网络效应(Network Effects)\t1048

31.4.3 网络效应和元货币(Metacoin)\t1050

31.4.4 网络效应和侧链(Sidechains)\t1050

31.4.5 修订的货币网络效应\t1051

31.4.6 激励与心理观点\t1052

31.4.7 新的策略\t1053

31.5 以太坊\t1054

31.5.1 为何需要新的平台\t1054

31.5.2 彩色币\t1055

31.5.3 元币\t1055

31.5.4 哲学\t1056

31.5.5 基础区块创建\t1057

31.5.6 修改实施幽灵协议\t1057

31.5.7 以太坊客户端P2P协议\t1058

31.5.8 货币及其发行\t1058

31.5.9 合约\t1059

31.5.10 子货币\t1059

31.5.11 未来应用\t1059

31.5.12 以太坊小结\t1060

31.6 应用案例和最新的进展\t1060

31.6.1 国外应用情况\t1060

31.6.2 国内应用情况\t1062

提要\t\t1063

附录A 参考资料\t1064