书籍详情

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

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

作者:吕新民 著

出版社:电子工业出版社

出版时间:2017-01-01

ISBN:9787121305474

定价:¥188.00

购买这本书可以去
内容简介
  本书由浅入深地讲述了IBM主机技术的各个方面,共分30章,包括:TSO、ISPF、JCL、VSAM、COBOL、DB2、CICS和常用的MVS主控台命令,通过演示报表(Magic Report)的方法,从实战出发,通过大量的源程序例子讲解了在应用开发过程中需要使用的IBM主机方面的技术,书中的例子都是作者亲自编写并运行成功的,可以作为读者学习的参考。因为本书在系统地介绍所需的基本技术的同时,也为具备多年开发经验的读者提供了某些高级的议题,所以本书既可以作为从事IBM主机开发的初学者学习,也可以作为已有几年甚至多年IBM主机开发经验的人士参考。
作者简介
  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-现在 深圳育桥软件有限公司,首席科学家
目录
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
猜您喜欢

读书导航