第九章_编译和运行COBOL程序--CICS 技术文档09
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SEND CONTROL命令
语法格式 EXEC CICS SEND CONTROL CURSOR(data-value) ERASE|ERASEUP FREEKB END-EXEC.
SEND MAP命令
语法格式 EXEC CICS SEND MAP (name) [MAPSET(name)] [FROM(data-area)] [LENGTH(data-value)] [DATAONLY|MAPONLY] [ALARM] [CURSOR(data-value)] [ERASE|ERASEUP] [FREEKB] END-EXEC.
文件控制
程序控制
Queue 控制
终端控制
对终端进行 I/O 命令:
SEND RECEIVE
基本的mapping支持
基本的mapping支持
字符屏幕显示( mapping ) 基于应用程序生成mapping 从终端接受数据或向终端发送数据
SEND命令
语法格式 EXEC CICS SEND FROM(data-area) LENGTH(data-value) END-EXEC.
传统程序是用上一代技术开发的可操作计算 机程序或程序组,多数已经运行多年,并且 仍然能胜任所负责的工作的可行系统; 上世纪70年代~80年代,COBOL大量用于建 设大型、复杂的商业系统,因此用COBOL编 写的数据处理程序构成了传统程序的主体; 传统系统通常是公司进行关键商业活动时所 依赖的核心程序,当系统需要更新时不能中 断,从头改写往往是下策,其代码的修改和 改进为现代的COBOL编程人员带来了机遇和 挑战。
环境部中与数据管理服务有关的项目不能使用; 数据部的文件节(file section)不能使用; REPORT-WRITER, SEGMENTATION, SORT 和 TRACE 等不能使用; COBOL READ, WRITE, OPEN 和 CLOSE 等语句不 能使用; ACCEPT, CURRENT-DATE, DATE, DAY, DISPLAY, EXHIBIT, INSPECT, SIGN IS SEPARATE, STOP RUN, TIME, UNSTRING等动词 不能使用。
物理Map
在CICS里用CEDA定义 CEDA DEF MAPSET
RECEIVE MAP命令
语法格式 EXEC CICS RECEIVE MAP(name) [MAPSET(name)] LENGTH(data-area) INTO(data-area) END-EXEC.
Exception condition:
DLITCBL是“DL/I to COBOL”的缩写。
COBOL中调用DL/I函数
CALL ’CBLTDBI’ USING function PCB-mask SEGMENT-IO-AREA SEGMENT-SEARCH-ARGUMA74TS. CBLTDL表示“COBOL to DL/I”。 DL/I-
SEND样例
WORKING-STORAGE SECTION. 01 MSG-LENGTH PIC S9(4) COMP. 01 OUTPUT-MESSAGE. 05 MSG-ID PIC X(4). 05 FILLER PIC X. 05 MSG-TXT PIC X(35). . . PROCEDURE DIVISION. MOVE 40 TO MSG-LENGTH. MOVE ‘INV1’ TO MSG-ID. MOVE ‘INVOICE NOW BEING PRINTED’ TO MSG-TXT. EXEC CICS SEND FROM (OUTPUT-MESSAGE) LENGTH (MSG-LENGTH) ERASE END-EXEC.
Exception condition:
MAPFAIL
符号Map
WORKING-STORAGE SECTION. COPY symbolic-map-member-name PROCEDURE DIVISION. MOVE xxx TO xxxO. EXEC CICS SEND MAP… END-EXEC.
CICS程序实例——屏1
CICS程序实例——屏2
CICS程序实例——屏3
CICS程序实例——屏4
COBOL与CICS
CICS的许多特性使程序员不必考虑CICS终端的结构和它们的 位置以及如何与网络联接就能编写出高级的事务处理应用程序; CICSCOBOL程序是COBOL语句与EXEC CICS语句的组合, 能与CICS通信,程序中的每一行是下列语句之一:
下述内容将在IMS相关课程中 介绍
IMS数据库的结构和存取原理 PCB掩模(PCB-mask) DL/I函数(DL/I-function) SEGMENT-IO-AREA(段记录布局) SSA(段查找变元)
样本IMS程序
详见EMPLOYEE。
MAPFAIL
符号Map
WORKING-STORAGE SECTION. COPY symbolic-map-member-name PROCEDURE DIVISION. EXEC CICS RECEIVE MAP… END-EXEC. MOVE xxI TO xxx.
CICSCOBOL程序的限制
CICSCOBOL程序的结束
语法 EXEC CICS RETURN END-EXEC.
COBOL与DB2
DB2是大型主机上支持的大型关系数据 库管理系统,COBOL应用程序通过执 行SQL语句来操作和访问DB2数据库; 在COBOL中,使用SQL有所不同:
SQL查询必须以EXEC SQL开始,以ENDEXEC结束; SQL查询通常使用COBOL宿主变量。
CICS命令一览
终端控制
SEND, SEND CONTROL, SEND MAP, RECEIVE, RECEIVE MAP
异常处理
HANDLE CONDITION, IGNORE CONDITION
READ, WRITE, REWRITE, WRITE, UNLOCK, STARTBR, READNEXT, READPREV, ENDBR, RESETBR LINK, XCTL, RETURN WRITEQ TS|TD, READQ TS|TD, DELETEQ TS|TD
DL/I IMS database
COBOL
Entry语句
COBOL程序中的第一条语句是ENTRY语句 , 说明本COBOL程序使用的PCB掩模,从而建 立与相应数据库的连接。
PROCEDURE DIVISl0N …… A000-MAIN-PROCESS. ENTRY ‘DLITCBL’ USING EMPLOYEE-DB-PCB-MASK.
COBOL与CICS
CICS简介 CICSCOBOL
CICS简介
CICS是IBM的客户信息控制系统,是运行终端(联 机)系统的环境; CICS特别适合事务性系统,如处理机票购买和银行 存取款等; 40多年来,CICS一直活跃在全球一流公司的商业系 统中: 当今全球一共有大约50000个CICS站点; 在500个最大的IBM客户中,490个都是用CICS; 大约有100万编程人员编写和维护CICS程序,主 要是COBOL程序。
COBOL应用开发架构
大部分传统COBOL系统都是用IBM硬件、操作系 统和编译器开发的; 近代的S/390、Z900、AS/400乃至最新的iSeries 、zSeries等服务器上仍然保持了对COBOL的支 持; COBOL应用程序的数据可以放在文件中,也可以 放在DBMS(数据库来自百度文库理系统)中; 主机上COBOL应用程序后台的DBMS通常使用 IMS(层次数据库)或DB2(RDBMS),事务管 理的实现则使用CICS或者IMS TM。
COBOL行(例如MOVE WS-TEMP TO WS-PERMANENT) EXEC CICS语句(例如EXEC CICS RETURN END-EXEC) 数据库访问语句(例如EXEC SQL SELECT NAME INTO:WSNAME FROM EMPLOYEE WHERE EMP_ID=:WS-ID END-EXEC)
宿主变量(host variable)
宿主变量(host variable)在SQL语句前面带 冒号(:); 宿主变量应该在COBOL中正确定义,对应于 列属性; DELETE语句不需要宿主变量; SELECT语句需要宿主变量; INSERT语句通常需要宿主变量,但也可以使 用VALUES从句; UPDATE语句也需要宿主变量,但只对要改 变数据的列。
CICSCOBOL程序通过EXEC CICS SEND和RECEIVE语句与 最终用户通信,就像其它程序使用DISPLAY和ACCEPT一样, 不过在CICSCOBOL程序中,通常是全屏显示而不是一行显示。
COBOL中的CICS命令
通用格式 command option(arg)....
在COBOL中用EXEC CICS启动CICS 命令,用END EXEC.终止。
例子:查询员工1并改变其性别
MOVE ‘FEMALE’ TO SEX OF DCLEMPLOYEE EXEC SQL UPDATE EMPLOYEE SET SEX=:DCLEMPLOYEE.SEX WHERE EMP_ID=1 END-EXEC.
注意在COBOL语法中的SEX OF DCLEMPLOYEE在 SQL中变成DCLEMPLOYEE.SEX
数据操作语言(DML)
DML提供宿主编程语言(比如COBOL )和数据库间的接口。
宿主编程语言
DML
database
数据语言DL/I
DL/I是IMS使用的DML,它不是独立的 语言,而是一组过程性代码和数值; COBOL可以作为DL/I的宿主编程语言 ,通过普通子程序调用的方式调用DL/I; 数据库对于COBOL来说是个黑盒子, 不能直接访问,COBOL用DL/I提供的 API访问数据库;
CICS事务
CICS事务由一个或多个CICS程序组成,通常是用 COBOL编写,一般是用SQL命令读写关系数据库或 用DL/I读写IMS数据库,并负责与终端上的最终用户 交流信息; CICS保证事务或者完全成功,或者根本不执行,它 与COBOL配合协调,能高效地使用系统资源; COBOL程序的性质是不可再入(reentrant)的,即 一次只能有一个终端用户执行内存中的COBOL程序, 但CICS用伪再入(pseudo-reentrant)或准再入 (quasi-reentrant)技术解决了这个问题,它对 COBOL程序的每个实例保存一份工作存储节,但允 许程序的所有实例使用过程部。
COBOL for Mainframe Fundamentals
CICS 技术文档 COBOL主机应用开发架构基础
本节内容
COBOL与传统系统 COBOL应用开发架构 COBOL与CICS COBOL与DB2 COBOL与IMS 更详尽的内容将在相关课程中讲述。
COBOL与传统系统
COBOL+CICS+DB2样本程序
详见TESTMENU
COBOL与IMS
IMS是大型机上的层次数据库,已经出现大 约45年; IMS是要求高性能、高可用性、高可靠性和 高可管理性的公司的应用程序的首选; 全球很多行业的商业运行都依赖于IMS, 1000家最大公司的90%都使用IMS; IMS支持Java、PL/1、C/C++等多种应用开 发语言,对COBOL的支持更是历史悠久。