COBOL+CICS文件操作
3.CICS编程基础 Part 2

35
添加数据库数据记录
36
添加多条数据库数据记录
WORKING-STORAGE SECTION.
1
EXEC SQL DECLARE DEPTA00 TABLE (EMPNIMBER CHAR(6) NOT NULL, FNAME VCHAR(12) NOT NULL, LNAME VCHAR(12) NOT NULL, HRDATE DATE ) … EXEC SQL DECLARE TEMPL TABLE (EMPNO CHAR(6) NOT NULL, …. PROCEDURE DIVISION.
19 19
数据库存取的程序组织
数据库存取程序 的组织结构如右 图所示:
图中需要注意: 由程序使用的表和视图必须先要在工作存储节中声明。 SQLCA用来与SQL语句执行的结果进行通信。 Data Division中的工作存储节和连接节中定义Host Variables,用来存放获取的 关系数据。 COBOL程序中的SQL语句都以EXEC SQL开头,以END-EXEC结束。
2
数据访问功能总揽
3
程序结构
4
文件相关命令
5
READ File命令
6
Read command
EXEC CICS READ FILE(name) INTO(data-area) RIDFLD(data-area) | [RBA|RRN] [LENGTH(data-area)] [SET(ptr-ref)[ [GENERIC][KEYLENGTH(data-value)] [GTEQ|EQUAL]|[UPDATE] END-EXEC
28
游标的定义及使用
29
数据库数据更新
上图是更新数据库记录的方法
CICS常用命令列表

CICS常用命令列表cicscp说明:CICS 控制程序,可用于创建、删除、启动、停止DCE,SFS服务器,CICS Region和PPC gatewayeneral cicscp usage:cicscp [-?|([<common_options>] [<command> <noun_phrase><specific_options>])]where common options are:-I - ignore errors-l logfile - log progress messages to file-v - produce more verbose outputSpecific commands are:version:versioncreate COBOL:create coboldestroy COBOL:destroy cobolcreate SNA:create sna -d <Control Point Name>-w <Local Network Name>-x <XID Node ID>-y <Link Station Type>[-q <Link Station Name>][-s <Link Station Address>][-b <Local Secondary Station Address>]destroy SNA:destroy sna [-f]start SNA:start sna [-f]stop SNA:stop sna [-f]create telnet server:create telnet_server <server> [-P <port>][-c <client codeset>][-e <emulation>][-h <host list>][-l <locale>][-m <model>][-n <netname>][-r <region>][-s <server codeset>][-t <transaction>]destroy telnet server:destroy telnet_server <server> [-f]create SFS server:create sfs_server <server> [-m <model>][attribute overrides for SSD stanza]destroy SFS server:destroy sfs_server <server> [-f]start SFS server:start sfs_server <server> [attribute overrides for SSD stanza] stop SFS server:stop sfs_server <server> [-f]status SFS server:status sfs_server <server>stop sfs_server allcreate PPC gateway server:create ppcgwy_server <server> [-m <model>][attribute overrides for GSD stanza]destroy PPC gateway server:destroy ppcgwy_server <server> [-f]start PPC gateway server:start ppcgwy_server <server> [attribute overrides for GSD stanza]stop PPC gateway server:stop ppcgwy_server <server> [-f]status PPC gateway server:status ppcgwy_server <server>status ppcgwy_server allcreate SNA link:create sna_link [<Link Station Name>]-y <Link Station Type>[-s <Link Station Address>][-b <Local Secondary Station Address>]destroy SNA link:destroy sna_link <Link Station Name> -y <Link Station Type> create region (SFS):create region <region> [-g <group-id>][-i <infile>][-l <c|m|o|r>][-d]create region (DB2):create region <region> [-g <group-id>][-i <infile>][-l <c|m|o|r>][-a <alias> -o <instance>[-u <user[,passwd]>] [-n|-s]]create region (ORACLE):create region <region> -o ORACLE[-g <group-id>][-i <infile>][-l <c|m|o|r>][-u <user[/passwd]>] [-n|-s]destroy region (SFS):destroy region <region> [-f] [-s]destroy region (DB2):destroy region <region> [-f] [-s [-u <user[,passwd]>]] destroy region (ORACLE):destroy region <region> [-f] [-s [-u <user[/passwd]>]]start region:start region <region> [-d <distributed servers>][attribute overrides for RD stanza]stop region:stop region <region> [(-c | -f)]status region:status region <region>status region alldestroy all:destroy all [-f]start all:start allstop all:stop allstatus all:status all使用举例:5.1版本以前:创建DCEcicscp –v create dce -R删除DCE:cicscp -v destroy dce创建Region:cicscp -v create region CICSRGN1启动SFS 服务器:cicscp -v start sfs_server /.:/cics/sfs/SFS_SERVcicsadd说明:添加CICS资源定义Usage: cicsadd {-?|-c className [-r regionName] [-P|-B] [-f fileName] [-m modelId] resourceName[[attributeName=attributeValue]...]}使用举例:以下命令在CICSRGN1中增加一个通讯定义。
COBOL简易教程

COBOL简易教程主要内容1.COBOL语言的基本概念及程序的结构•一个例子●COBOL程序的结构●COBOL源程序的书写格式2.COBOL数据表示•常量•层次的概念•PICTURE语句•数据在内存中的各种形式3.算术运算●变量赋值 (MOVE, MOVE CORR)●算术运算(ADD, SUB, MUL, DIV, COMPUTE等)●内部函数4.字符串处理●合并、分离、取子串、替换等5.程序逻辑控制•条件的分类•IF、EVALUATE●PERFORM6.表处理定义、赋值、引用、查询7.读、写多格式记录文件8.常用语句小结9.子程序1.关于COBOL的初步知识◆COBOL是Common Business Oriented Language (通用商业语言,或称管理语言)的缩写◆最适用于数据处理◆比较接近于自然语言(英语)◆COBOL的结构严谨,层次性强◆COBOL的缺点是比较烦琐。
1.1 一个例子:***************************************************************** * * COBOL TRAINING PROGRAM * * VERSION 2.1.0 COPYRIGHT (C) 2004 * * WISTRON DALIAN SOFTWARE CO., LTD. * * ALL RIGHTS RESERVED. * * * **************************************************************** IDENTIFICATION DIVISION.PROGRAM-ID. EXERCIS6.AUTHOR. QXLU (WISTRON DALIAN).DATE-WRITTEN. 04-06-23.DATE-COMPILED. 04-06-23.*----------------------------------------------------------------* * COMMENT : * * * *----------------------------------------------------------------* ENVIRONMENT DIVISION.CONFIGURATION SECTION.SOURCE-COMPUTER. IBM-3084.OBJECT-COMPUTER. IBM-3084.INPUT-OUTPUT SECTION.FILE-CONTROL.SELECT DDI01 ASSIGN TO "DDI01".SELECT DDO01 ASSIGN TO "DDO01".*DATA DIVISION.FILE SECTION.*FD DDI01 LABEL RECORD IS STANDARD DATA RECORD AREIN-AREA0, IN-AREA1.01 IN-AREA0.05 IN-YEAR-NUM PIC 9(2).05 IN-PRINCIPAL PIC 9(4)V99.05 FILLER PIC X(07).05 RMARK PIC X(01) VALUE X"0A".01 IN-AREA1.05 IN-INTEREST-RATE OCCURS 5 TIMES PIC V999.05 RMARK PIC X(01) VALUE X"0A".FD DDO01 BLOCK 0 RECORDS LABEL RECORD STANDARD RECORDING F.01 PRT-REC.05 FILLER PIC X(79).**===============================================================* WORKING-STORAGE SECTION.01 IN-FILE-DATA.05 YEAR-NUM PIC 9(2).05 PRINCIPAL PIC 9(4)V99.05 INTEREST-RATE-TABLE.15 INTEREST-RATE OCCURS 5 TIMES PIC V999.*01 HEADER0 PIC X(79) VALUE' TABLE OF SIMPLE INTEREST'.01 HEADER1 PIC X(79) VALUE' ************************************'.01 HEADER2 PIC X(79) VALUE' PRINCIPAL 4,000.00 FOR 10 PERIODS'.01 HEADER3 PIC X(79) VALUE SPACE.01 HEADER4 PIC X(79) VALUE' PERIOD INTEREST RATE'.01 HEADER5.05 OUT-I-R OCCURS 5 TIMES PIC BBBBBBBBB.999.01 DETAIL0.05 OUT-PERIOD PIC ZZZ.05 OUT-P-I-S-ITEM OCCURS 5 TIMES.10 FOURSPACES PIC X(04) VALUE SPACE.10 OUT-P-I-SUM PIC 9,999.99.01 CNT-YEAR-NUM PIC 9(2).01 I-R-INDEX PIC 9.01 P-I-SUM PIC 9(6)V99.****************************************************************** * P R O C E D U R E D I V I S I O N * ***************************************************************** PROCEDURE DIVISION.*INPUT-DATA SECTION.OPEN INPUT DDI01.OPEN OUTPUT DDO01.READ DDI01.MOVE IN-YEAR-NUM TO YEAR-NUM.MOVE IN-PRINCIPAL TO PRINCIPAL.READ DDI01.MOVE IN-AREA1 TO INTEREST-RATE-TABLE.*PROCESS-OUTPUT-DATA SECTION.*PRINT HEADERWRITE PRT-REC FROM HEADER0 BEFORE 1.WRITE PRT-REC FROM HEADER1 BEFORE 1.WRITE PRT-REC FROM HEADER2 BEFORE 1.WRITE PRT-REC FROM HEADER3 BEFORE 1.WRITE PRT-REC FROM HEADER4 BEFORE 1.* PRINT INTEREST RATEPERFORM TEST BEFORE VARYING I-R-INDEXFROM 1 BY 1 UNTIL I-R-INDEX > 5MOVE INTEREST-RATE( I-R-INDEX ) TO OUT-I-R( I-R-INDEX )END-PERFORM.WRITE PRT-REC FROM HEADER5 BEFORE 1.*PROCESS & PRINT DETAILSPERFORM PRINT-DETAILVARYING CNT-YEAR-NUM FROM 1 BY 1UNTIL CNT-YEAR-NUM > YEAR-NUM.*CLOSE-FILES SECTION.CLOSE DDI01.CLOSE DDO01.*STOP RUN.**---------------------------------------------------------------** PRINT-DETAIL **---------------------------------------------------------------*PRINT-DETAIL SECTION.*MOVE CNT-YEAR-NUM TO OUT-PERIOD.PERFORM PROCESS-DETAILVARYING I-R-INDEX FROM 1 BY 1 UNTIL I-R-INDEX > 5.WRITE PRT-REC FROM DETAIL0 BEFORE 1.*PRINT-DETAIL-RTN.EXIT.**---------------------------------------------------------------** PROCESS-DETAIL **---------------------------------------------------------------*PROCESS-DETAIL SECTION.*COMPUTE P-I-SUM = PRINCIPAL *( INTEREST-RATE( I-R-INDEX ) * CNT-YEAR-NUM + 1 ).MOVE P-I-SUM TO OUT-P-I-SUM( I-R-INDEX ).*PROCESS-DETAIL-RTN.EXIT.** *** END OF CODING EXERCIS6 ***1.2 COBOL 程序的结构(1/p4)部(Division) 一部可包括若干节节(Section) 一节可包含若干段段(Paragraph) 一段可包含若干句子句子(Sentence) 一个句子可包含若干语句语句(Statement) 制定计算机完成一定的操作子句(Clause) 制定完成某一方面的功能每个程序应包含四个部IDENTIFICATION DIVISION (标识部)主要用来指定源程序名字,也可以写入其他用作备忘的某些信息(如日期、作者等)。
第1章 COBOL简介

第1章 COBOL简介COBOL是Common Business Oriented Language的缩写,即公用面向商业语言的意思。
在系统地学习COBOL程序设计语言之前,有必要首先对COBOL有一个大致的了解。
本章将分别从背景知识、语法格式、以及实际创建COBOL程序3个方面对其进行简要介绍。
1.1 背景知识在介绍COBOL之前,首先需要了解一下大型机的概念。
大型机也叫主机、大机、mainframe等,属于一种商用高端服务器。
目前大型机主要由IBM公司所生产,最新型号为z系列大型机。
COBOL便是用于大型机上应用软件开发的最主要的程序设计语言。
大型机上的工作大体上可以分为两类,分别为系统方向和开发方向。
系统方向的分工很多,包括使用Tivoli监控系统;使用RACF进行安全管理;使用SMS进行存储管理等等。
开发方向的市场需求相对系统方向则要大得多。
对于开发方向,主要需要掌握以下知识。
❑COBOL:最主要的程序设计语言。
❑JCL:作业控制语言,调用由COBOL编写的程序。
❑VSAM:程序中通常用到的文件类型。
❑DB2:大型机上最主要的数据库,通常以COBOL语言为宿主语言。
❑CICS:用于联机交易的中间件,通常也是以COBOL语言为宿主语言。
对于以上知识,在本书中都有详细介绍。
此外,对于大型机底层的开发,还需要掌握大型机上的汇编语言。
对于大型机汇编语言,在本书中也有具体讲解。
COBOL作为大型机上最主要的程序设计语言,迄今已有40多年的历史。
然而,经过40多年的沧桑,COBOL不仅没有被淘汰,反而在当今愈加流行起来。
关于这一点,主要应该是由以下3个因素所决定的。
❑COBOL广泛应用于广泛应用于银行业、信用卡业、保险业、制造业、航空业等等。
这些领域对于稳定性的要求都是十分高的,因此从很大程度上也保证了COBOL的不可取代性。
❑COBOL自身也在不断发展和更新中。
例如,COBOL本身主要属于面向过程的语言。
cobol课件大型机基本操作

对文件进行读取和写入操作。
打开文件
使用适当的命令或函数打开已存在的文件。
关闭文件
完成文件操作后,使用命令或函数关闭文件。
数据传
对数据进行格式转换以满 足特定需求。
将数据从大型机导出到外 部目的地。
将数据从外部源导入到大 型机中。
数据导入
数据导出
数据转换
程序执行与调试
编译程序
01
将源代码编译成可执行程序。
解决方案
使用编译器提供的错误信息,定位问题所在,并 逐一修正。
数据处理错误
总结词
数据处理错误通常是由于数据类 型不匹配、数据范围超出限制或 数据操作不当引起的。
详细描述
检查数据类型是否匹配,数据范 围是否在允许的范围内,以及数 据操作是否正确。
解决方案
根据数据类型和范围要求,对数 据进行适当的转换和验证,确保 数据操作的正确性。
执行程序
02
运行编译后的程序并查看输出结果。
调试程序
03
使用调试工具检查程序中的错误并进行修复。
04 常见问题与解决方案
程序编译错误
1 2 3
总结词
编译错误通常是由于语法错误、拼写错误或结构 问题引起的。
详细描述
检查代码中的拼写错误、语法错误和结构问题, 确保所有语句都符合COBOL语法规则,并且程 序结构清晰。
系统运行错误
总结词
系统运行错误通常是由于系统资源不足、系统故障或外部因素引 起的。
详细描述
检查系统资源是否充足,系统是否正常运行,以及是否存在外部干 扰因素。
解决方案
合理分配系统资源,确保系统正常运行,同时采取措施避免外部干 扰因素对系统的影响。
CICS简单介绍及一个简单的CICS程序-1

将一个指定组中的资源动态的加入到当前运行的 CICS 系统中。 语法
INSTALL [GROUP(groupname)] [Resourcetype(resourcename)]
二、一个简单的 CICS 程序
嵌入式 CICS 命令
嵌入式 CICS 命令使用在 PROCEDURE DIVISION 里,每条命令由关键字、分隔符、功能 名称、选项、参数和结束标志组成。命令的参数是 COBOL 程序里定义的数据变量,用来与 CICS 进行数据交换。
CICS 事务的启动
有以下几种方式 z CICS 任务启动最普通的方式是终端输入; z 利用内部 TDQ 的记录自动触发另一 CICS 事务的功能来启动任务。 z 可以在 CICS 程序中采用基于程序的逻辑,用 START 命令来启动任务, 且可传数据给启动的任务。
CICS 程序控制
CICS 提供几种访问其他程序的方法: z RETURN 释放控制于上一高层程序 z LINK 传递控制于指定的程序,并预期返回,类似于执行一个子程序。 z XCTL 传递控制于指定程序,但不返回本层,而返回 CICS
同时进行业务处理。 ②重复性:联机事务处理可提供同一业务重复处理。 ③短交互性:联机事务处理支持对多用户同时进行交易的处理,给予每一个用户及时
的响应。 ④数据共享:反映同一组织结构的数据只有一个。 ⑤低成本:联机事务处理能降低客户业务处理的成本
OLTP,(On-Line Transaction Processing)
一.CICS 概念
概念: CICS (Customer Information Control System)是ibm公司一个用于处理联机应用的产
品,充当操作系统和应用程序之间的接口,是一种用于主机环境的联机事务处理(OLTP)产 品。
COBOL语言的字符串操作模式

了解COBOL语言的字符串操作模式COBOL语言中常用的字符串操作模式是什么?什么是COBOL语言的字符串操作?COBOL(cobol)语言的程序对输入的数据进行某种编辑处理,然后将结果输出到屏幕或文件中,这是处理的基础。
这次介绍的字符串操作经常被用作编辑处理。
在这里,我们将首先介绍如何编写COBOL语言字符串操作的基本字符串的一部分并将其显示在屏幕上的过程,因此让我们了解如何编写和使用它。
如何写:数据项(起始字符位置:[长度])使用例:使用示例是从WK-MOJI这一数据项的第1位中取出3个字符,并在屏幕上显示结果的程序。
如本示例所示,如果您使用提取某个字符串的一部分的过程,例如,如果字符串由代码值和名称组成,您将能够仅提取代码值并将其用于下一个过程。
実行结果:COBOL(cobol)语言中的一种字符串操作模式既然您已经了解了如何编写COBOL语言的基本字符串操作,接下来我们将介绍字符串操作的模式。
COBOL语言的字符串操作主要分为四种模式: 1.字符串初始化,2.字符串分割,3.字符串连接,4.使用集体项目进行字符串操作。
让我们按顺序来看看它的写法和使用方法。
怎么写1:初始化字符串INITIALIZE数据项使用例1:使用示例是初始化“123456”的初始值设定的WK-MOJI的数据项的值,并在屏幕上显示结果的程序。
在使用数据项进行编辑处理时,为了防止程序发生故障,通常也会像本使用例那样明确地初始化数据项。
実行结果1:如何编写2:分割字符串利用前面介绍的“字符串的一部分和检索处理”使用例2:使用示例是这样的程序:从WK-MOJI这一数据项的第1位中取出3个字符,从第4位中取出3个字符,并在屏幕上显示结果。
在COBOL(cobol)语言中,可以很容易地实现这样一个数据项的分割和使用。
実行结果2:如何编写3:连接字符串STRING数据项1、数据项2・・DELIMITED BY SIZEINTO数据项3[WITH POINT ER起始字符位置][结束字符串]使用例3:使用示例是将WK-MOJI 1、WK-MOJI 2这些字符串连接起来,存储在WK-MOJI中,然后在屏幕上显示结果的程序。
COBOl常用操作

COBOL 概述COBOL 是Common Business Oriented Language 的缩写。
它不仅是商业数据处理的理想语言,而且广泛用于数据管理领域,因此COBOL 语言也被称为“用于管理的语言”。
一。
COBOL 语言的特点最适于数据处理领域:算数计算量少而逻辑处理量多,输入输出量大,数据间存在着一定的逻辑关系,大量的分类排序;COBOL比较接近英语,容易懂;通用性强,易移植, COBOL结构严谨,层次分明。
二。
COBOL的组成部分:1。
标识部(IDENTIFICATION DIVISION):用于标识程序名。
2。
环境部(ENVIRONMENT DIVISION):用于说明程序运行的环境。
3。
数据部(DATA DIVISION):用于说明程序中涉及的所有数据。
4。
过程部(PROCEDURE DIVISION):是程序的核心部分,它决定计算机应进行什么操作。
三。
最简单的COBOL 程序举例:COL 1 ---6 7 8 12---72 73---80IDENTIFICATION DIVISION。
PROGRAM-ID。
PSAMPLE1。
ENVIRONMENT DIVISION。
DATA DIVISION。
PROCEURE DIVISION。
DISPLAY …THIS IS A COBOL PROGRAM.‟STOP RUN。
四。
COBOL 源程序的书写格式:第1 至6 列为“标号区”。
第7列为“续行标志区”第8至此11列,称为“A区”。
程序中有些内容如部头,节头,段头,层号01,层号77 及文件描述符FD等应从A区开始写。
第12至此72列,称为“B区”。
写程序中的正文部分。
如过程部中的句子只能从B区开始写。
第73至80列,称为“注释区”。
五。
COBOL字符集包括:数字0 --- 9 ,字母A--- Z ,a --- z , 专用字符:+ - * / = , . ; … ( ) < > $ 及空格。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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语句可以指出该文件时输入还是输出文件。
OUTPUT PRINT-FILE.也可以直接读到其他地方。
READ CUSTOMER-FILE --READ后为文件名,而WRITE为记录。
AT END MOVE 'Y' TO EOF-FLAG --AT END-读到末尾所要采取的操作。
END-READ.MOVE HEADING-LINE TO PRINT-LINE.WRITE PRINT-LINE.PERFORM 100-PROCESS-RECORDSUNTIL EOF-FLG = 'Y'CLOSE CUSTOMER-FILEPRINT-FILE.STOP RUN.100-PROCESS-RECORDS.IF CUST-NO > 100MOVE CUST-NO TO PRT-NO.MOVE CUST-NAME TO PRT-NAME.WRITE PRINT-LINE FROM OUTPUT-LINEEND-IFREAD CUSTOMER-FILEAT END MOVE 'Y' TO EOF-FLAYEND-READ.VSAM文件非CICS:如:ENVIRONMENT DIVISION.INPUT-OUTPUT SECTION.FILE-CONTROL.* SELECT KS-FILE ASSIGN TO VKSDSSELECT OPTIONAL MACC ASSIGN TO KSDSFILEORGANIZATION INDEXED --逻辑结构,通常为顺序或索引ACCESS MODE DYNAMIC --访问方式,顺序,直接,动态(包括前面两个)RECORD KEY TEST-NO --文件中的KEYFILE STATUS TEST-STAT. --反应读取或写入的状态*DATA DIVISION.FILE SECTION.FD KS-FILE01LABEL RECORD IS STANDARD --指明该VSAM文件是否含有标号。
DATA RECORD IS TEST1. --定义该VSAM逻辑记录在程序中的名称。
01 TEST1.05 TEST1-NO PIC X(5).05 TEST1-NAME PIC X(10)....*PROCEDURE DIVISION.OPEN INPUT KS-FILE01,KS-FILE02 --只可以WRITEI-O RR-FILE --可以REWRITEOUTPUT ES-FILE.READ KS-FILE01 NEXT RECORDAT END GO TO 100-TEST-ENDEND-READ.READ KS-FILE01 KEY IS TEST-NOINV ALID KEY GO TO 200-TEST-END --指定INV ALID语句END-READ.WRITE KS01-RCD FROM TEST1.REWRITE RR-RCD FROM TESTX.DELETE KS-FILE01 RECORD INV ALID KEY ... --删除START KS-FILE KEY < TEST-NO --指针定位DISPLAY '....'CLOSE KS-FILE01,KS-FILE02,RR-FILE,ES-FILE.VSAM文件CICS中:不用手工定义和打开,有CICIS中FCT-文件控制表统一管理。
如:DATA DIVISION01 FILE-AREA.05 RECL PIC S9(4) COMP.05 RECKEY PIC X(6).01 REC-FIELD.05 F-CODE PIC X(10) V ALUE SPACES.05 F-NAME PIC X(20) V ALUE SPACES....读:READEXEC CICS READ FILE('TESTF') --文件名INTO(REC-FIELD) --记录名RIDFLD(RECKEY) --KEY名(KSDS-KEY,ESDS-RBA,RRDS-RRN)LENGTH(RECL) --文件中逻辑记录长度RESP(ERR-CODE) --返回码END-EXEC.写:一般用REWRITE,先UPDATE锁定,再REWRITE.EXEC CICS READ FILE('TESTF')UPDATE--先UPDA TE锁定RIDFLD(RECKEY)INTO(REC-FIELD)LENGTH(RECL)RESP(ERR-CODE)END-EXEC.EXEC CICS REWRITE FILE('TESTF') --不用指定KEY了,上面UPDATE已经锁定,KEY 也不能被更改FROM(REC-FIELD)LENGTH(RECL)RESP(ERR-CODE)END-EXEC/浏览:STARTBR, READNEXT ,ENDBR.EXEC CICS STARTBR FILE('TESTF')RIDFLD(RECKEY)RESP(ERR-CODE)END-EXECIF ERR-CODE EQUAL DFHRESP(NORMAL)PERFORM UNTIL ERR-CODE EQUAL DFHRESP(ENDFILE)EXEC CICS READNEXT FILE('TESTF')INTO(REC-FIELD)LENGTH(RECL)RIDFLD(RECKEY)RESP(ERR-CODE)END-EXEC....END-PERFORMEXEC CICS ENDBR FILE('TESTF')END-EXEC.ONLINE:VSAM不用在COBOL中打开或关闭,在CICS下处理。
实现多终端操作,不必等待资源。
BATCH: VSAM在COBOL中必须打开和关闭,每次只能一个作业对文件操作。
/u/2630100442。