第九章_编译和运行COBOL程序--CICS 技术文档09
COBOL+CICS文件操作

COBOL+CICS文件操作1.输入输出数据非CICS:ACCEPT数据来源:终端输入和系统接收。
一般系统接收数据为日期或者时间。
DA TE--YYMMDD.DAY---YYDDD.DAY-OF-WEEK--- PIC 9. 范围1-7.TIME---HHMMSSHH,最后HH表示hundredths from midnigth.如:DA TA DIVISION.WORKING-STORAGE SECTION.01 INPUT-DATE.05 INPUT-YEAR PIC 99.05 INPUT-MONTH PIC 99.05 INPUT-DAY PIC 99.*PROCEDURE DIVISION....ACCEPT TEST-DA TE.DISPLAY TEST-DATE. ---终端输入的数据ACCEPT TEST-DA TE FROM DA TE. --系统产生的数据DISPLAY TEST-DATE. --输出CICS下:如:DA TA DIVISION.WORKING-STORAGE SECTION.01 INFLDS.05 INLEN PIC 9(4) COMP.01 INPUT-NAME.05 INPUT-FIRST PIC X(10).05 INPUT-MIDDLE PIC X(10).05 INPUT-LAST PIC X(10).*PROCEDURE DIVISION....MOVE 15 TO INLEN.EXEC CICS RECEIVE INTO(INPUT-NAME)LENGTH(INLEN) --所接收的最大长度,小于为实际,大于为异常END-EXEC.EXEC CICS SEND FROM(INPUT-NAME)LENGTH(20) --为实际长度,并非变量。
输出位置为当前光标位置END-EXEC....GOBACK.2.文件操作普通文件非CICS:如:ENVIRONMENT DIVISION.INPUT-OUTPUT SECTION.FILE-CONTROLSELECT CUSTOMER-FILE ASSIGN TO S-SYSIN. --定义对应到COBOL文件名SELECT PRINT-FILE ASSIGN TO S-SYSOUT.*DATA DIVISION.FILE SECTION.FD CUSTOMER-FILE --定义FD记录RECORD MODE IS F.01 CUSTOMER-RECORD.05 CUST-NO PIC 9(5).05 CUST-NAME PIC X(10).FD PRINT-FILE.RECORD MODE IS F.LABEL RECORDS ARE OMITTEDRECORD CONTAINS 132 CHARACTERSDATA RECORD IS PRINT-LINE. --定义数据记录在程序中的名称01 PRINT-LINE PIC X(132).WORKING-STORAGE SECTION.01 EOF-FLAG PIC X V ALUE 'N'.01 HEADING-LINE.05 FILLER PIC X(5) V ALUE SPACES.05 FILLER PIC X(15) V ALUE 'CUSTOMER NO'.05 FILLER PIC X(7) V ALUE SPACE.05 FILLER PIC X(15) V ALUE 'CUSTOMER NAME'.05 FILLER PIC X(90).01 OUTPUT-FILE.05 FILLER PIC X(10) V ALUE SPACES.05 PRT-NO PIC X(5).05 FILLER PIC X(15) V ALUE SPACES.05 PRT-NAME PIC X(10).05 FILLER PIC X(92).*PROCEDURE DIVISION.OPEN INPUT CUSTOMER-FILE ---OPEN语句可以指出该文件时输入还是输出文件。
COBOL语言程序设计实用PPT课件

• 创建分区数据集ST×××.COBOL.SOURCE(COB××) 存放源程序
• 创建分区数据集ST×××.COBOL.LOAD 存放可执行模块 它的属性比较特殊: Record format = U Record length = 0 Block size = 6144
▪用引号括起来的字符串 如:‘ABCD’, ‘$123’, ‘HELLO WORLD’
▪由纯数字组成的非数值常量不能用于计算 ‘123’和123不同
▪可以使用保留字,如: ‘DATA’ ▪可以写入引号,如:
MOVE QUOTE ‘HENRY’ QUOTE TO NAME
第18页/共22页
§1.9 常量 (三)
第15页/共22页
§1.8 数据名 • 数据名相当于其他语言的变量名,代表一个具体的数据项 • 数据名长度为1-30个字符 • 只能由字母(至少一个),数字和连字符“-”组成,连字符不能出现在两端,
不能包含空格 • 不应用保留字作为数据名
123, DECO.HENRY, OWEN-, 3R, DIVISION • 尽量使用有意义的英文字或拼音,如:NAME, AGE,GONGZI • 建议:多使用连字符,如:DEPTART-NUMBER
第14页/共22页
§1.7 COBOL字符和COBOL字 • COBOL字符是指在程序中允许出现的字符
包括数字,大小写字母及15个专用符号 +,-,*,/,=,逗号,句号,分号,引号, $,(,),<,>,空格
• COBOL字是由上述字符组成的最小单位 分为 保留字: 在COBOL已经规定专门用途的字 用户字: 用户自定义的名字 如:程序名,文件名,节名,段名,数据项名等
实验五COBOL程序的编译与运行

实验五 COBOL程序的编译与运行实验所属系列:操作系统高级试验实验对象:本科相关课程及专业:大型机系统管理,计算机专业实验类型:课程设计实验时数: 2●实验目的熟悉PCOM及ISPF环境;熟悉在大机系统编译连接与运行基本COBOL 程序的方法。
●实验内容与要求1.首先使用由老师分配的IBM的主机用户名和密码登陆大型机2.建立相应数据集:1)建立分区数据集<用户名>.COBOL.SOURCE,根据下图初始化数据集的参数,该参数只是参考,需要根据系统实际或者指导老师要求进行调整。
2)用同样方法建立分区数据集<用户名>.COBOL.JCL3)建立名为<用户名>.COBOL.LOAD的数据集,参数Record format改为U。
3.在数据集<用户名>.COBOL.SOURCE中建立一个member,并输入一下COBOL程序:4.输入编译JCL程序,并编译源程序为目标文件1)在<用户名>.COBOL.JCL中建立名为CTEST1的MEMBER,然后在其中输入如下JCL程序:注意,程序中的斜体部分应该换成实验者的用户名。
2)然后输入SUB提交该JCL程序,返回值如果不是0,请检查JCL程序是否有错。
若有错,修改后重新提交。
输出结果可以在SDSF的H里面看见。
5.输入运行的JCL程序,并运行编译结果1)在<用户名>.COBOL.JCL中建立名为CTEST1的MEMBER,然后在其中输入如下JCL程序:注意,程序中的斜体部分应该换成实验者的用户名。
2)然后输入SUB提交该JCL程序,返回值如果不是0,请检查JCL程序是否有错。
若有错,修改后重新提交。
输出结果可以在SDSF的H里面看见。
如果输出不是想要的结果,请检查COBOL源程序。
6.控制台方式运行编译程序1)在ISPF首页选6,输入如下命令:allocate fi(sysout) fi(sysin) da('*')并运行。
JCLb编译、执行COBOL程序

第一步:在SYSPRG1.COBOL.SRC里创建一个member(做为COBOL程序),member名尽量和COBOL程序名相同。
如:我的member名为TEST1,里面写如下代码:IDENTIFICATION DIVISION.PROGRAM-ID. TEST1.ENVIRONMENT DIVISION.DATA DIVISION.PROCEDURE DIVISION.S.DISPLAY "HELLO WORLD" .STOP RUN.第二步:写编译程序的JCL。
在SYSPRG1.COBOL.JCL里创建一个member,当然也可以不必自己写。
一般的在这个PDS里有一个名为COB2LINK的member,我们只要敲 E 进去,修改两个地方就可以编译自己的COBOL程序了。
//COB2LNK JOB (PLS,81038),'PETER SOPER',CLASS=A,REGION=4096K,// MSGLEVEL=(1,1),MSGCLASS=A,NOTIFY=&SYSUID//*************************************************************//* JOB TO COMPILE AND LINK A COBOL PROGRAM//*************************************************************//COMP EXEC PGM=IGYCRCTL//STEPLIB DD DSN=COBOL.V2R1M0.SIGYCOMP,DISP=SHR//SYSIN DD DSN=SYSPRG1.COBOL.SRC(TEST1),DISP=SHR//SYSLIB DD DSN=CEE.SCEELKED,DISP=SHR//SYSLIN DD DSN=&OBJ,SPACE=(3040,(40,40),,,ROUND),UNIT=VIO,// DISP=(MOD,PASS),// DCB=(BLKSIZE=3040,LRECL=80,RECFM=FBS,BUFNO=1)//SYSUT1 DD UNIT=VIO,SPACE=(1024,(120,120),,,ROUND)//SYSUT2 DD UNIT=VIO,SPACE=(1024,(120,120),,,ROUND)//SYSUT3 DD UNIT=VIO,SPACE=(1024,(120,120),,,ROUND)//SYSUT4 DD UNIT=VIO,SPACE=(1024,(120,120),,,ROUND)//SYSUT5 DD UNIT=VIO,SPACE=(1024,(120,120),,,ROUND)//SYSUT6 DD UNIT=VIO,SPACE=(1024,(120,120),,,ROUND)//SYSUT7 DD UNIT=VIO,SPACE=(1024,(120,120),,,ROUND)//SYSPRINT DD SYSOUT=*//SYSUDUMP DD SYSOUT=*/*//***************************************************//LKED EXEC PGM=IEWL,COND=(4,LT,COMP),// PARM='LIST,LET,XREF,MAP'//SYSLIB DD DSN=CEE.SCEELKED,DISP=SHR//SYSLIN DD DSN=&OBJ,DISP=(OLD,DELETE)// DD DDNAME=SYSIN//SYSLMOD DD DSN=SYSPRG1.COBOL.LOADLIB,DISP=SHR//SYSUT1 DD UNIT=VIO,SPACE=(1024,(120,120),,,ROUND)//SYSPRINT DD SYSOUT=*NAME TEST1(R)/*红色标出的两部分,是我的修改的。
COBOL经典讲义

COBOL语言的发展概述• COBOL是Common Business Oriented Language(商业通用语言)的缩写。
• COBOL不仅是商业数据处理的理想语言,而且广泛应用于数据管理领域,因此COBOL也被称为“用于管理的语言”。
• 在计算机的应用领域中,数据处理(data processing)是应用最为广泛的一个领域。
数据处理的日益广泛应用要求人们设计出能满足实际数据处理工作中各种要求的一种计算机语言。
COBOL就是在这种形势下应运而生的。
COBOL语言的特点• 最适于数据处理领域。
• COBOL比较接近于自然语言(英语)。
• 通用性强。
• COBOL的结构严谨,层次分明。
• COBOL的缺点是比较繁琐。
COBOL程序的结构• COBOL源程序的结构• 标识部 环境部 数据部 过程部段 段 段 节 节 节 节 节 节 节 节 节 段 …… 描述体 …… 段 ……句子 …… 句子 …… 语句 ……动词 ……COBOL的四部标识部(IDENTIFICATION DIVISION)主要用来指定源程序名字,也可以写入其它用作备忘的某些信息(如日期、作者等)。
环境部 (ENVIRONMENT DIVISION)指出程序中用到的数据文件名与计算机系统的设备的对应关系,即把某一文件名与某一外部设备联系起来。
数据部(DATA DIVISION)程序中所用到的全部变量都应在数据部中说明它们的类型和所占的内存。
过程部(PROCEDURE DIVISION)编写相应的程序语句来实现源程序需要实现的相应功能。
COBOL源程序的书写格式• ANSI书写格式标号区续行区 A 区 B 区(正文区)注释1 6 7 8 11 12 72 73 80• 终端格式• COBOL字符和COBOL字• COBOL字符 COBOL字• 系统字符集保留字• COBOL字符集例如:DIVISION,SECTION • 包括以下字符:用户字(非保留字)・数字:0〜9・大写字母:A〜Z・小写字母:a〜z・ 专用字符: + ,-,*,/等数据名的命名规则• 每个数据名的长度为1〜30个字符之间。
编译连接生成运行模块并且运行cobol程序

//IBMUSERC JOB 'COMP BA TCH',CLASS=A,MSGCLASS=H,// NOTIFY=IBMUSER,MSGLEVEL=(1,1)//******************************************************************** // SET SRC=HELLO//******************************************************************** //* JOB TO COMPILE AND LINK-EDIT COBOL PROGRAM//******************************************************************** //COBOL EXEC PGM=IGYCRCTL,REGION=2048K,// PARM='NODYNAM,LIB,OBJECT,RENT,RES,APOST,MAP,XREF,OFFSET' //STEPLIB DD DSNAME=IGY410.SIGYCOMP,// DISP=SHR//SYSPRINT DD SYSOUT=*//SYSLIN DD DSNAME=&&LOADSET,UNIT=SYSDA,// DISP=(MOD,PASS),SPACE=(TRK,(3,3)),// DCB=(BLKSIZE=3200)//SYSIN DD DSN=IBMUSER.TEST.COBOL(&SRC),DISP=SHR//SYSLIB DD DSN=IBMUSER.TEST.COPY,DISP=SHR//SYSUT1 DD UNIT=SYSDA,SPACE=(CYL,(1,1))//SYSUT2 DD UNIT=SYSDA,SPACE=(CYL,(1,1))//SYSUT3 DD UNIT=SYSDA,SPACE=(CYL,(1,1))//SYSUT4 DD UNIT=SYSDA,SPACE=(CYL,(1,1))//SYSUT5 DD UNIT=SYSDA,SPACE=(CYL,(1,1))//SYSUT6 DD UNIT=SYSDA,SPACE=(CYL,(1,1))//SYSUT7 DD UNIT=SYSDA,SPACE=(CYL,(1,1))//LKED EXEC PGM=HEWL,COND=(8,LT,COBOL),REGION=1024K,// PARM='LIST,XREF'//SYSLIB DD DSNAME=CEE.SCEELKED,DISP=SHR// DD DSN=IBMUSER.TEST.LOAD,DISP=SHR//SYSPRINT DD SYSOUT=*//SYSLIN DD DSNAME=&&LOADSET,DISP=(OLD,DELETE)//SYSLMOD DD DSNAME=IBMUSER.TEST.LOAD(&SRC),DISP=SHR//SYSUT1 DD UNIT=SYSDA,SPACE=(TRK,(10,10))//********************************************************//* RUN THE COMBOL PROGRAM//********************************************************//STEP020 EXEC PGM=HELLO//STEPLIB DD DSN=IBMUSER.TEST.LOAD(HELLO),DISP=SHR//SYSOUT DD SYSOUT=*//。
COBOL+CICS子程序

COBOL+CICS子程序子程序操作1.非CICS平台:静态和动态用于传递的参数必须在01或者77层。
主调用程序通常在工作单元节(除非也被其他调用在连接节),被调用程序参数要定义在连接节中。
参数在主调用程序中分配内存,通常只要求内存空间大小一致,其他不做要求。
参数引用的顺序必须和主程序定义的参数与其顺序和位置一致。
CALL调用和ENTER选择入口地址两种方式。
静态:在调用之前就已经加载,和主程序在同一加载模块,费内存,效率高。
通常情况下都是引用上一次调用后的状态。
除非单独对参数再次初始化。
一个程序改变,所有程序都要进行改动。
如:DA TA DIVISION. --------主程序WORKING-STORAGE SECTION.77 TEST-NUM PIC 99.*PROCEDURE DIVISION.PERFORM INIT-TEST-NUM.CALL 'STATIC-SUB' USING TEST-NUM.DISPLAY TEST-NUM. ---第一次调用25PERFORM INIT-TEST-NUM.CALL 'STATIC-ENTRY' USING TEST-NUM.--对应于子程序的ENTER调用DISPLAY TEST-NUM. ---第二次调用35(子程序数值在内存中没有被释放)PERFORM INIT-TEST-NUM.CALL 'STATIC-SUB' USING TEST-NUM.DISPLAY TEST-NUM. ---第三次调用25(子程序数据已被初始化)STOP RUN.INIT-TEST-NUM.MOVE 10 TO TEST-NUM.DATA DIVISION. --------子程序WORKING-STORAGE SECTION.01 PLUS-NUM PIC 99 V ALUE 15.LINKAGE SECTION.77 MAIN-NUM PIC 99. ---被调用程序参数要定义在连接节中。
CICS概述及命令-文档资料

CICS概述
CICS/VS是在操作系统(OS)控制下的一个分区中作为 一个主程序运行,而若干联机应用程序是在CICS控 制下运行。
OS
VSE/POWER分区 DB CICS 分区 终端
应用 1
应用 2
应用 N
终端
其它分区
CICS概述
CICS提供以下服务: 一致性的应用编程接口(API) 透明访问操作系统的功能 系统管理的辅助工具(由很多小模块组成) 特点: (1)具有商务级事务管理器所要求的整合性、可恢复性、安全性和可用性 (2)提供跨平台的API,可移植性好 (3)具有跨系统通信ISC(InterSystem Communication)能力 产品: CICS/VSE CICS/MVS CICS/400 CICS/6000 CICS/OS2 CICS FOR NT
批处理
概念:在用户不直接干预的条件下,计算机系统对一定批量 的原始材料在规定的时间进行例行处理的过程。 从程序设计的意义上,批处理程序又有以下的特点: 1.所有必须的I/O区和工作区都应在程序中给出定义。 2.由程序读入有关部门的输入数据。 3.程序直接想操作系统发出I/O指令。 4.输入数据必须在处理开始前准备就绪(包括录入、校 验等过程),在处理是顺序读入。输入数据具有可控制批量、 可预计规模、顺序排列的物理特点,因而处理进程意识可跟 踪的。 5.出现故障时,处理可重新进行,或从故障点继续向后处理。
工作机制——“TRANSACTION标识TRANSACTIONTASK 应用程序”。
2、MULTITASKING——多重任务功能
CICS对同一区域中同时运行的许多TASK实施控制,采取的控制技术是任务开 关技术(TASK SWITCHING),根据TASK的优先权分配资源。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
CICSCOBOL程序通过EXEC CICS SEND和RECEIVE语句与 最终用户通信,就像其它程序使用DISPLAY和ACCEPT一样, 不过在CICSCOBOL程序中,通常是全屏显示而不是一行显示。
COBOL中的CICS命令
通用格式 command option(arg)....
在COBOL中用EXEC CICS启动CICS 命令,用END EXEC.终止。
数据操作语言(DML)
DML提供宿主编程语言(比如COBOL )和数据库间的接口。
宿主编程语言
DML
database
数据语言DL/I
DL/I是IMS使用的DML,它不是独立的 语言,而是一组过程性代码和数值; COBOL可以作为DL/I的宿主编程语言 ,通过普通子程序调用的方式调用DL/I; 数据库对于COBOL来说是个黑盒子, 不能直接访问,COBOL用DL/I提供的 API访问数据库;
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
Exception condition:
MAPFAIL
符号Map
WORKING-STORAGE SECTION. COPY symbolic-map-member-name PROCEDURE DIVISION. MOVE xxx TO xxxO. EXEC CICS SEND MAP… END-EXEC.
DL/I IMS database
COBOL
Entry语句
COBOL程序中的第一条语句是ENTRY语句 , 说明本COBOL程序使用的PCB掩模,从而建 立与相应数据库的连接。
PROCEDURE DIVISl0N …… A000-MAIN-PROCESS. ENTRY ‘DLITCBL’ USING EMPLOYEE-DB-PCB-MASK.
COBOL应用开发架构
大部分传统COBOL系统都是用IBM硬件、操作系 统和编译器开发的; 近代的S/390、Z900、AS/400乃至最新的iSeries 、zSeries等服务器上仍然保持了对COBOL的支 持; COBOL应用程序的数据可以放在文件中,也可以 放在DBMS(数据库管理系统)中; 主机上COBOL应用程序后台的DBMS通常使用 IMS(层次数据库)或DB2(RDBMS),事务管 理的实现则使用CICS或者IMS TM。
CICS程序实例——屏1
CICS程序实例——屏2
CICS程序实例——屏3
CICS程序实例——屏4
COBOL与CICS
CICS的许多特性使程序员不必考虑CICS终端的结构和它们的 位置以及如何与网络联接就能编写出高级的事务处理应用程序; CICSCOBOL程序是COBOL语句与EXEC CICS语句的组合, 能与CICS通信,程序中的每一行是下列语句之一:
COBOL+CICS+DB2样本程序
详见TESTMENU
COBOL与IMS
IMS是大型机上的层次数据库,已经出现大 约45年; IMS是要求高性能、高可用性、高可靠性和 高可管理性的公司的应用程序的首选; 全球很多行业的商业运行都依赖于IMS, 1000家最大公司的90%都使用IMS; IMS支持Java、PL/1、C/C++等多种应用开 发语言,对COBOL的支持更是历史悠久。
例子:查询员工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
下述内容将在IMS相关课程中 介绍
IMS数据库的结构和存取原理 PCB掩模(PCB-mask) DL/I函数(DL/I-function) SEGMENT-IO-AREA(段记录布局) SSA(段查找变元)
样本IMS程序
详见EMPLOYEE。
宿主变量(host variable)
宿主变量(host variable)在SQL语句前面带 冒号(:); 宿主变量应该在COBOL中正确定义,对应于 列属性; DELETE语句不需要宿主变量; SELECT语句需要宿主变量; INSERT语句通常需要宿主变量,但也可以使 用VALUES从句; UPDATE语句也需要宿主变量,但只对要改 变数据的列。
物理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:
MAPFAIL
符号Map
WORKING-STORAGE SECTION. COPY symbolic-map-member-name PROCEDURE DIVISION. EXEC CICS RECEIVE MAP… END-EXEC. MOVE xxI TO xxx.
CICSCOBOL程序的限制
COBOL for Mainframe Fundamentals
CICS 技术文档 COBOL主机应用开发架构基础
本节内容
COBOL与传统系统 COBOL应用开发架构 COBOL与CICS COBOL与DB2 COBOL与IMS 更详尽的内容将在相关课程中讲述。
COBOL与传统系统
COBOL与CICS
CICS简介 CICSCOBOL
CICS简介
CICS是IBM的客户信息控制系统,是运行终端(联 机)系统的环境; CICS特别适合事务性系统,如处理机票购买和银行 存取款等; 40多年来,CICS一直活跃在全球一流公司的商业系 统中: 当今全球一共有大约50000个CICS站点; 在500个最大的IBM客户中,490个都是用CICS; 大约有100万编程人员编写和维护CICS程序,主 要是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等动词 不能使用。
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.
传统程序是用上一代技术开发的可操作计算 机程序或程序组,多数已经运行多年,并且 仍然能胜任所负责的工作的可行系统; 上世纪70年代~80年代,COBOL大量用于建 设大型、复杂的商业系统,因此用COBOL编 写的数据处理程序构成了传统程序的主体; 传统系统通常是公司进行关键商业活动时所 依赖的核心程序,当系统需要更新时不能中 断,从头改写往往是下策,其代码的修改和 改进为现代的COBOL编程人员带来了机遇和 挑战。
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)
CICS事务
CICS事务由一个或多个CICS程序组成,通常是用 COBOL编写,一般是用SQL命令读写关系数据库或 用DL/I读写IMS数据库,并负责与终端上的最终用户 交流信息; CICS保证事务或者完全成功,或者根本不执行,它 与COBOL配合协调,能高效地使用系统资源; COBOL程序的性质是不可再入(reentrant)的,即 一次只能有一个终端用户执行内存中的COBOL程序, 但CICS用伪再入(pseudo-reentrant)或准再入 (quasi-reentrant)技术解决了这个问题,它对 COBOL程序的每个实例保存一份工作存储节,但允 许程序的所有实例使用过程部。