版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、COBOL基础培训,COBOL 培训内容,CHAPTER 1COBOL 概述 CHAPTER 2标识部和环境部 CHAPTER 3数据部 CHAPTER 4过程部之一 CHAPTER 5过程部之二 CHAPTER 6过程部之三 CHAPTER 7各部之间的关系及程序举例 CHAPTER 8COBOL的编译、链接、执行 CHAPTER 9联机及批量程序的一些差异 CHAPTER 10COBOL 编程规范,CHAPTER 1 COBOL概述,COBOL 是Common Business Oriented Language 的缩写。它不仅是商业数据处理的理想语言,而且广泛用于数据管理领域,因此COB
2、OL 语言也被称为“用于管理的语言”。 一。COBOL 语言的特点: 最适于数据处理领域:算数计算量少而逻辑处理量多,输入输出量大,数据间存在着一定的逻辑 关系;COBOL比较接近英语,容易懂;通用性强,易移植,COBOL结构严谨,层次分明。 二。COBOL的组成部分: 1。标识部(IDENTIFICATION DIVISION):用于标识程序名。 2。环境部(ENVIRONMENT DIVISION):用于说明程序运行的环境。 3。数据部(DATA DIVISION):用于说明程序中涉及的所有数据。 4。过程部(PROCEDURE DIVISION):是程序的核心部分,它决定计算机应进行什么
3、操作。,三。最简单的COBOL 程序举例: COL 1 -6 7 8 12-7273-80 IDENTIFICATIONDIVISION。 PROGRAM-ID。PSAMPLE1。 ENVIRONMENTDIVISION。 DATADIVISION。 PROCEUREDIVISION。 DISPLAY HELLO WORLD! STOP RUN。,CHAPTER 1 COBOL概述,四。COBOL 源程序的书写格式 1 列 1 6 :标识区(SEQUENCE NUMBER AREA) 2 列 7: 指示区(INDICATOR AREA) “*”: 表示“注释行”(COMMENT LINE);
4、“D”: 表示DEBUG 行 ; 3 列 8 11: A区 (A AREA) 下面的程序语句必须从A区开始写: Division 头、Section 头、Paragraph 头(paragraph 名); 01 和 77级变量定义; 文件描述符FD等应从A区开始写。 4 列1272: B区(B AREA) 下面的程序语句必须从B区开始写: Entries, sentences, statements, clauses , Continuation lines. 5 列7380:行注释区,CHAPTER 1 COBOL概述,五。COBOL字符 COBOL字符集包括:数字0 - 9 ,字母 A-
5、Z ,a - z , 专用字符:+ - * / = , . ; ( ) $ 及空格。属于系统字符集而不属于COBOL字符集的字符只能出现在COBOL程序 中的字符串里。 保留字(RESERVED WORD): 有五种类型的保留字:键字(Keywords)如:MOVE ,ADD 等 可选字(Optional words)如:USAGE IS 等 专用字符(Special characters)运算符:+ - * / 等 ;比较符 = 等 表意常量(Figurative constants)有:ZERO/ZEROS/ZEROES; SPACE/SPACES; HIGH-VALUE/HIGH-VAL
6、UES;LOW-VALUE/LOW-VALUES; QUOTE/QUOTES; symbolic-character;ALL;NULL/NULLS 专用寄存器(Special registers)有:ADDRESS OF ;DEBUG-ITEM; LENGTH OF; LINAGE-COUNTER;RETURN-CODE;SHIFT-OUT and SHIFT-IN; SORT-CONTROL;SORT-CORE-SIZE;SORT-FILE-SIZE;SORT-MESSAGE; SORT-MODE-SIZE;SORT-RETURN;TALLY;WHEN-COMPILED 其它: 如:SYST
7、EM-NAME,DBCS字符,CHAPTER 1 COBOL概述,六。常量 COBOL 常量分为数值常量(如 100,-29),非数值常量(如 ABC )和表意常量(如 ZERO,SPACE,HIGH-VALUE,LOW-VALUE ,QUOTE ,ALL 常量)。 七。COBOL 所处理的数据的特点 层次的概念:数据间存在的从属关系。 文件的概念:多个记录可以组成一个文件。 记录的概念:具有一定层次关系的一组数据项的最大 集合,它是内存中具有独立逻辑含义的最大存取项, 具有最高层次。,CHAPTER 1 COBOL概述,本章主要从整体上对COBOL语言程序进行了大致的介绍。本章内容分别包括C
8、OBOL语言的特点、COBOL语言程序的组成部分、最简单的COBOL程序、COBOL程序的书写格式以及COBOL语言中的字符、常量及COBOL程序所能处理的数据特点。 学习本章内容,需要了解COBOL语言的特点及应用特点,了解COBOL语言组成部分、书写格式及COBOL语言中的字符、常量及所处理的数据特点。需要注意的是在书写程序时一定要注意书写格式及变量命名时不要用COBOL字符中的关键字。需要掌握如何构建结构完整的COBOL程序。,CHAPTER 1 COBOL概述(本章小结),一。标识部(IDENTIFICATION DIVISION) IDENTIFICATION DIVISION. P
9、ROGRAM-ID. 程序名。 AUTHOR。 作者名。 INSTALLATION。 计算机设置场所。 DATE-WRITTEN。 源程序编写日期。 DATE-COMPILED。 源程序编译日期。 SECURITY。 保密程度。 二。环境部(ENVIRONMENT DIVISION) ENVIRONMENT DIVISION. CONFIGRATION SECTION。 SOURCE-COMPUTER。 源计算机名。 OBJECT-COMPUTER。 目标计算机名。 SPECIAL-NAMES。 专用名描述项。 INPUT-OUTPUT SECTION。 FILE-CONTROL。 文件控制描
10、述体。 I-O-CONTROL。 输入输出控制描述体,CHAPTER 2 标识部和环境部,1。CONFIGRATION SECTION。 专有名段的一般格式: SPECIAL-NAMES。 DICIMAL-POINT IS COMMA。 CURRENCY SIGN IS 非数值常量。 专用名 IS 助忆名。 2。INPUT-OUTPUT SECTION。 INPUT-OUTPUT SECTION 包括两个段,即:FILE-CONTROL 和 I-O-CONTROL。FILE-CONTROL段是为文件分配外部文件。I-O-CONTROL段的作用是可以指定目标程序运行时,几个文件共用一个内存区,以
11、省内存。在此暂不作介绍。 FILE-CONTROL段的主要功能是给程序中使用的文件命名。指出存放该文件的外部设备及其它有关文件控制的信息。对文件的描述是由SELECT子句实现的。 FILE-CONTROL段的一般格式: INPUT-OUTPUT SECTION。 FILE-CONTROL。 SELECT 文件名 ASSIGN TO 外部文件名 ORGANIZAION IS (SEQUENCIAL , INDEXED , RELATIVE) ACCESS MODE IS (SEQUENCIAL, RANDOM , DYNAMIC) RECORD KEY IS FILE STATUS IS ,CH
12、APTER 2 标识部和环境部,Virtual Storage Access Method VSAM是一种虚拟存取方法,它是为了与直接存取存储设备DASD(Direct Access Storage Device-能够在文件上直接地存取任何记录的设备)一起使用而研制的文件管理系统。,VSAM的组织形式和存取方法,文件的组织形式 : 是指数据记录在文件中的排列方式。 文件的存取方法 : 是指从文件中找到数据记录的方法。,组 织 形 式,存 取 方 法,键顺序数据组织(Indexed Sequential Organization),键顺序数据集KSDS Key Sequenced Data Se
13、t,进入顺序数据组织(Entry Sequential Organization),进入顺序数据集ESDS Entry Sequenced Data Set,相对记录数据组织(Relative Organization),相对记录数据集RRDS Relative Record Data Set,VSAM文件分类,ESDS进入顺序数据集 记录以进入数据集的顺序安排其存放位置,新加入的记录放在数据 集的末尾。存取的顺序按排列顺序进行,也可以通过相对字节地址 访问。 KSDS关键字顺序数据集 记录由索引部分和数据部分组成,索引部分是一种树型结构,关 键字按升序排列,以关键字或相对字节地址访问,即可以
14、顺序存 取,也可以通过索引直接存取。 RRDS相对记录数据集 文件空间被划分成若干逻辑框,每个逻辑框只存放一个记录, 从第一个逻辑框开始赋予连续的记录号,这样的号码称为相对 记录号,通过相对记录号来实现记录的定位。,VSAM在COBOL程序的应用,VSAM在程序中的操作 (环境部),环境部(INPUT-OUTPUT SECTION)(FILE-CONTROL),SELECT ASSIGN TO ORGANIZATION IS SEQUENTIAL ACCESS MODE IS SEQUENTIAL FILE STATUS IS,SELECT ASSIGN TO ORGANIZATION IS
15、INDEXED ACCESS MODE IS SEQUENTIAL RANDOM DYNAMIC RECORD KEY IS FILE STATUS IS,SELECT ASSIGN TO ORGANIZATION IS RELATIVE ACCESS MODE IS SEQUENTIAL RANDOM DYNAMIC RELATIVE KEY IS FILE STATUS IS,ESDS,KSDS,RRDS,本章主要对COBOL语言程序中最先出现的两个部标识部和环境部进行了介绍。需要注意的是,这两个部必须出现的内容和可选出现的内容部分。学习本章内容,需要了解标识部和环境部的作用从而学会如何在
16、满足需要的情况下书写正确的标识部和环境部的内容。,CHAPTER 2 标识部和环境部(本章小结),一。数据部概述。 1。 数据部的作用是定义数据项属性,描述数据结构。所有在过程部中出现的数据项都必须在数据部中对它们的属性进行说明。包括数据项的类型,数据项间的关系,记录与文件的关系,文件的属性。 2。数据部的结构: 数据部中通常用到的有以下几个节: (1)FILE SECTION:描述程序中用到的输入输出文件及其记录中各数据项的属性。 (2)WORKING-STORAGE SECTION:描述程序中用到的中间数据项。 (3)LINKAGE SECTION:描述与调用程序间发生数据传递的数据项。
17、(4)REPORT SECTION:为了完成报表编制功能,此节用来规定欲输出的报表的体 裁,设计各报表栏的打印形式和方法等。 二。数据的层次和层号:COBOL中把有从属关系的数据用层次(level)关系来描述。数据的层次结构是:记录-组合项-初等项。如,在前面READ语句中定义的 IN-FILE 文件具有如下结构: 01 IN-RECORD。 02 PROD-CODEPIC 9(4)。 02 PROD-QUANTITYPIC 9(5)。 02 PROD-PRICEPIC 9(6)。 02 MANU-DATE。 05 DATE-CCYYPIC 9(4)。 05 DATE-MMPIC 9(2)。
18、05 DATE-DDPIC 9(2)。,CHAPTER 3 数据部,三。层次规定如下: 1 用来描述数据的层次结构的层号从01到49。描述数据的最高层为01层,最低层为49层。 2 从属项的层号比其下属项的层号高。 3 层号不必要求连续。 4 从属于同一组合项但不互相从属的数据项具有相同的层号。 5 66层为数据描述项保留。 6 77层一般用于定义常量。 7 88层为数据项目条件名保留。 8 层号越高数据项越基本。 9 重要的是不同层次数据间的关系,而不是数据的层号。 01 STUDENT. 01 STUDENT. 03 NAME PIC X(10). 05 NAME PIC X(10). 0
19、3 BIRTHDAY. 05 BIRTHDAY. 05 YEAR PIC 9(4). 10 YEAR PIC 9(4). 05 MONTH PIC 9(2). 10 MONTH PIC 9(2). 05 DAY PIC 9(2). 10 DAY PIC 9(2). 03 SEX PIC A. 05 SEX PIC A.,CHAPTER 3 数据部,四。文件节。 1。文件节的作用: 程序中每一个输入或输出文件都要在文件节中加以描述。内容包括:文件名和文件属性;文件中包括的记录名字;每个记录中数据的层次关系;记录中各数据项的数据形式和占内存的大小。,2。文件描述: 最简单的文件描述体的一般格式为:
20、 FD文件名 LABLE RECORD IS STANDARD RECORDS ARE OMITTED DATA RECORD IS 数据名 RECORDS ARE 3。记录描述:记录描述体由01层号开始,后跟记录名。 如果记录本身就是一个初等项,则在记录名后描述记录长度; 否则,数据名后跟句点,下面定义记录的数据结构。如:,CHAPTER 3 数据部,DATADIVISION。 FILESECTION。 FD IN-FILE LABLE RECORD IS STANDARD。 DATA RECORD IS IN-FILE-RECORD。 01 IN-FILE-RECORD PIC X(80)
21、。 或 (01 IN-FILE-RECORD。 05 DATEPIC 9(8)。 05 PROD-CODEPIC 9(4)。 05 PROD-PRICEPIC 9(6)。 ) 4。数据项描述: 在每一个初等项的名字后跟一个PIC子句。用它来描述数据的类型和长度。PIC子句在下面详细说明。 5。文件节的书写格式: FD从A区开始书写,01层号也从A区开始,其它层号可以从A区也可以从B区开始。为了看起来层次分明,最好从B区开始。,CHAPTER 3 数据部,五。PIC 子句。PIC即PICTURE的缩写。PIC子句用来描述每一个初等项。它说明:(1)数据项是什么类型。(2)数据项占多大内存域。(3
22、)是否需要按打印的要求准备有关字符。PIC子句的主要作用在于描述一个初等项的一般特征和编辑要求。 1。数值型数据的描述: 9描述符: 表示该位置上可以放入一个0 9 之间的数字。因此: 01 A PIC 999。 或 01 A PIC 9(3)。 表示A可以存放000 999 之间的一个三位数。有几个9表示有几位数。 注意:(1)在数值型数据项中只能放数字不能放空格。 (2)用9描述符只能表示整数,如输入小数部分,则小数部分被舍弃。 (3)如送入一个负数,则负号被舍弃。 V描述符: 指出在数值数据结构中隐含的小数点的位置。小数点不占内存单元。 如: 03 M PIC 9(3)V9(2)。 注意
23、:(1)V在描述符的最后,则等于无小数点。 (2)一个数据的描述符中只能出现一个V。 (3)进行数据传送或运算时,按隐含的小数点位置对准进行传送或运算。 (4)V表示的小数点只在传送或运算时起作用,不能被显示或打印出来。,CHAPTER 3 数据部,S描述符: 如果想在数据项中放入一个带符号的数,可以用S描述符。如: 03 M PIC S9(3)V9(2)。 注意:(1)S描述符必须是最左边的一个描述符。 (2)在内存中,S不占位数,在传送或运算时起作用。 2。字母型数据的描述:字母型数据项用A描述符,在这种类型的数据项中只允许存放字母或空 格。 3。字符型数据的描述:由任意的COBOL字符组
24、成的数据,称为字符型数据,它是非数值型的,不能用于计算。用X描述符来表示字符型数据。如: 03 M PIC X(5)。 注意:(1)字符型数据可以用X描述符,也可以用9和A描述符来描述。如描述数据 COB-74可以用PIC X(6),也可以用PIC A(3)X9(2)。 (2)字母型数据既可以用A描述,也可以用X。 (3)字符型数据中可以放数字。 4。编辑型描述符:编辑型数据项只是作为输出数据时增加或改变某些所需的符号,起编辑作 用,它不是作计算用的。下面分别介绍编辑数据项中用到的编辑描述符。 (1)。插入小数点。,用。描述符。如: 77 T PIC 99。99。 (2)。插入逗号,作分位号,
25、用,描述符。如: 02 A PIC 999,999。99。 (或PIC 9(3),9(3)。9(2),CHAPTER 3 数据部,(3)。插入空格,用B描述符。如: 02 A PIC B9(3)B。 (4)。插入正负号,用+或-描述符。如: 02 A1 PIC +9(3)。(或 PIC 9(3)+) 02 A2 PIC -9(3)。(或PIC 9(3)-) 注意:描述符+,一侓加符号。描述符-只对负值加负号。 (5)。插入$ 。如: 02 A1 PIC $999。99。 02 A2 PIC +$99999。 02 A3 PIC -$999。9。 (6)。浮动插入正负号和$ 02 A1 PIC
26、$99.99. 02 A2 PIC $.$. 02 A3 PIC +9.99. (7)。取消高位零,用Z和*描述符。在高位零的位置上代以空格或*。如: 02 A1 PIC Z(5)。99。 02 A2 PIC *(5)。*(2)。 02 A3 PIC +ZZZ,ZZZ,ZZ。ZZ。 02 A4 PIC -*,*,*。99。 (8)。插入DB和CR字符。DB和CR只能用作固定插入,当数值为负时,在编辑 型数据项中最后两个字节中置DB或CR,数值为正时,此两字节留空格。如: 02 A1 PIC $9(3)。99DB 02 A2 PIC $9(3)。99CR。,CHAPTER 3 数据部,5.常用数
27、值型数据,CHAPTER 3 数据部,六。工作单元节(WORKING-STORAGE SECTION) 1。工作单元节的作用:程序中用的数据项分为两部分,一部分是属于输入或输出文件的,另一部分是非输入或输出的数据。如一些中间变量或用作累计的数据项等。非输入输出的数据就应在工作单元节中描述,还可以用工作单元节来赋初值。 2。VALUE子句:用于给变量赋初值。如: 02 A PIC 9(3) VALUE 123。 注意:(1)只有对工作单元节中的数据项才能赋初值,不能对文件节中输入输出文件中的 数据项赋初值。 (2)如果在组合项的描述体中使用VALUE,初值只能是表意常量或非数值型常量。 对组合项
28、整体而言,一律按字符型数据项处理。 (3)当用一个带符号的数值作初值时,相应的PIC子句中应有S描述符。 (4)赋初值时应该注意类型的一致性。 (5)VALUE子句给出的值应适合PIC子句的描述范围,否则会出现截断或产生错误。,CHAPTER 3 数据部,本章主要对COBOL语言程序中的数据部进行了介绍。数据部的内容均为涉及到数据项及文件的说明。本章主要介绍了数据部的作用、数据部的层次规定、数据部的结构、文件节和工作存储节的说明及PIC子句的用法。 学习本章内容,需要了解数据部的作用及其结构,要知道数据部里面的节在什么情况下应该出现及出现时该如何说明; 学习本章内容需要了解数据部中层次的规定,
29、注意COBOL语言中体现的是数据之间的层次关系而不是采用哪种层号、注意66层、77层、88层的作用。 学习本章内容需要了解到,在需要访问文件的情况下,应该学会文件节的书写内容。 学习本章内容需要掌握工作存储节、文件节以及其他相关节中PIC子句的基本用法(主要是数值型数据及字符型数据的基本定义方法),了解PIC子句中字母型及编辑型数据的基本定义方法。,CHAPTER 3 数据部(本章小结),一。输入输出语句。 1。ACCEPT语句:直接从终端键盘或系统指定的输入设备上输入数据。 ACCEPT 标识符 FROM 助忆名 注:A。标识符(identifier)指的是能唯一地标识一个数据项的数据名,不
30、能唯一地标识一 个数据项的数据名不是标识符。标识符可以是组合项。 B。在ACCEPT语句中如不写FROM部分,如ACCEPT A ,则表示从系统隐含指 定的设备上读入一个数据给A。 如果不想从指定的设 备上输入,则要用FROM 选 项, 这时“助忆名”需要在环境部中事先说明和那种外部设备相联系。如: ENVIRONMENT DIVISION。(环境部) CONFIGRATION SECTION。(配置节) SPECIAL-NAMES。(专用名段) CONSOLE IS ABC 如在过程部中有 ACCEPT T FROM ABC。 则表示要从控制台接收数据 C 。 取得日期和时间 ACCEPT
31、IDENT FROM DATE DAY DAY OF WEEK TIME,CHAPTER 4 过程部之一,2。DISPLAY语句:从计算机内存中输出到某一指定的输出设备上,如监视器、系统输出流等。 DISPLAY 标识符1,常量1标识符2,常量2。UPON 助忆名 ( 标识符和助忆名的说明同上) ACCEPT语句和DISPLAY语句不必定义文件适用于少量的数据输入输出。 3。INITIALIZE语句:将数据项的值设为初始值。若不指定要设置的数据,则按照数据项的类型分别设置为或空格。用于数据项目时,相当于将所有的基本项目都初始化。 INITIALIZE ident REPLACING ALPHA
32、BETIC ALPHANUMERIC NUMERIC ALPHANUMERIC-EDITED NUMERIC-EDITED DATA BY id-lit,CHAPTER 4 过程部之一,3。READ语句:COBOL语言中数据的输入输出主要是通过对外部文件的读写进行的。READ 语句就是从外部文件上读入数据输出到程序中的数据项中。在程序中用到的所有文件都需要在环境部中指定程序中用到的文件名与实际外部文件的联系。数据部也要对文件加以描述。指定数据结构各数据项所占的内存单元长度以及数据形式。COBOL的 的存取是以文件为对象以记录为单位的。 READ语句的最简单的格式为:READ文件名 例如:REA
33、D IN-FILE 表示从指定的IN-FILE 中读入一条记录(而不是整个文件)。IN-FILE 为内部文件名,它所对应的实际存在的外部文件必须在环境部中指定: ENVIRONMENTDIVISION。 INPUT-OUTPUTSECTION。 FILE-CONTROL。 SELECT IN-FILLE ASSIGN TO 外部文件名。 为了存储读入的记录,必须在内存开辟一个与文件记录长度相等的存储区,即输入文件记录区。每一个输入文件都有相应的输入文件记录区,与之一一对应。亦即在数据部中描述文件的数据结构。,CHAPTER 4 过程部之一,3。READ语句: 假设 IN-FILE 文件每一记录
34、中包含的内容为:产品代码,产品数量,产品单价,生产日期。设某一记录的具体数据 如下:0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 1 9 9 9 0 3 2 2 prodcode quantity price year mon day 如果我们希望读入该记录并对各数据项进行处理,则需要在 输入记录区中划分出各数据项,以便存放相应的数据。定义输入记录区以及划分记录区中各数据项的工作是由数据部来完成的。下面我们简单介绍数据部定义记录区方法,针对上面输入数据的特点,我们可以在数据部中对记录区作如下描述: DATADIVISION。 FD IN-FILE LABLE RECORD IS
35、STANDARD。 01 IN-RECORD。 (定义记录区名为IN-RECORD) 02 PROD-CODEPIC 9(4)。 02 PROD-QUANTITYPIC 9(5)。 02 PROD-PRICEPIC 9(6)。 02 MANU-DATE。(生产日期为一组合项) 05 DATE-CCYYPIC 9(4)。 05 DATE-MMPIC 9(2)。 05 DATE-DDPIC 9(2)。,CHAPTER 4 过程部之一,其中,FD 即 FILE DESCRIPTION,表示从该行起是文件描述体。 LABLE RECORD IS STANDARD :所有的磁盘文件和磁带文件都必须写明此
36、句。 01 层定义输入记录区 的名字为IN-RECORD,由于 01层属于FD描述体,因此也就指定了 IN-RECORD 和 IN-FILE 的关系。亦即从IN-FILE 读入的数据存放在 IN-RECORD记录区中。 这样,在执行一次READ语句后,文件中一个记录的数据便输入到内存记录区,按排列顺序分别送到记录区中各数据项中。注意文件的各记录中的数据是不分数据项的,只是按一定的顺序把数据存放在各字节中。所以数据部对记录区中各数据项的描述应该与文件的记录中各数据排列次序和长度相一致。 READ 语句的一般形式:READ 文件名 RECORD INTO 标识符 AT END 执行语句 , 例如:
37、 READ IN-FILE INTO TEMP-RECORD AT END STOP RUN 该语句除了将读到的数据传送到IN-RECORD之外,还传送到TEMP-RECORD中。在遇到文件尾时,程序结束运行。,CHAPTER 4 过程部之一,4。WRITE语句:将内存中的数据输出到外部设备,主要是由WRITE 语句来完成的。WRITE语句的最简单的格式为: WRITE 记录名 (注意WRITE语句的操作对象是记录,所以是记录名而不是文件名) 与输入文件相似输出文件也要在环境部中指定所对应的实际存在的外部文件: ENVIRONMENTDIVISION。 INPUT-OUTPUTSECTION。
38、 FILE-CONTROL。 SELECT OUT-FILLE ASSIGN TO 打印机名。 也要在数据部中定义输出记录区: DATADIVISION。 FD OUT-FILE LABLE RECORD IS OMITTED。 01 OUT-RECORD。 02 PROD-CODEPIC 9(4)。 02 PROD-QUANTITYPIC 9(5)。 02 PROD-PRICEPIC 9(6)。 02 MANU-DATE 05 DATE-CCYYPIC 9(4)。 05 DATE-MMPIC 9(2)。 05 DATE-DDPIC 9(2)。,CHAPTER 4 过程部之一,LABLE RE
39、CORD IS OMITTED :凡输出设备是打印机的都必须写明此句。如输出设备是磁盘,则仍用LABLE RECORD IS STANDARD。 01 层定义输出纪录区 的名字为OUT-RECORD,由于 01层属于FD描述体,因此也就指定了OUT-RECORD 和OUT-FILE 的关系。 在用WRITE 语句输出一个记录之前,应向输出记录区传送数据。如已将数据传送到上述各数据项中,则在执行 W RITE OUT-RECORD 语句后,则记录区中的数据通过打印机打印出来。,WRITE 语句的一般形式: 标识符 2 LINE BEFORE 整数 LINES WRITE 记录名 FROM 标识符
40、1 AFTER ADVANCING 助忆名 PAGE 5。OPEN语句:程序中如果需要读写文件,则该文件必须先用OPEN语句打开,系统在执行READ,WRITE以前先检查该文件是否已在规定的外部设备上准备就绪。 OPEN语句的一般格式为: OPEN INPUT OUTPUT FILE-NAME I-O EXTEND,CHAPTER 4 过程部之一,INPUT:输入文件,文件只能读取。写入、修改、删除记录会发生错误。若打开的文件不存在,则产生错误;除非,在环境部FILE-CONTROL中声明文件为OPTIONAL,则产生空记录的新文件 OUTPUT:输出文件,生成要写入记录的新文件。如果打开的文
41、件已经存在,则删除所有现存的记录 I-O:文件可以读取也可以写入。若打开的文件不存在,则产生错误;除非,在环境部FILE-CONTROL中声明文件为OPTIONAL,则产生空记录的新文件 EXTEND:打开顺序文件,只能写入文件,将记录插入到现有文件的末尾。除非,在环境部FILE-CONTROL中声明文件为OPTIONAL,则产生空记录的新文件,否则打开不存在的文件,操作不成功,CHAPTER 4 过程部之一,VSAM在程序中的操作 (数据部与过程部),数据部,FD file-name LABEL RECORDS ARE STANDARD,过程部,OPEN INPUT file-name1 O
42、UTPUT file-name2 I-O file-name3,READ file-name NEXT RECORD INTO data-name END-READ,WRITE record-name FROM data-name END-WRITE,REWRITE record-name FROM data-name END-REWRITE,DELETE file-name RECORD END-DELETE,CLOSE file-name,START file-name KEY = / / = data-name END-start,FD file-name LABEL RECORDS A
43、RE STANDARD,FD file-name LABEL RECORDS ARE STANDARD,文件性质与OPEN 方式的关系,6。CLOSE语句:当对一个文件的读或写的操作已完成,就应关闭该文件。 CLOSE语句的一般格式为: CLOSE文件名 1 ,文件名2。 注意: 只有关闭了文件,才能保证文件中的信息不被意外的错误操作而毁 坏,同时也释放了对内存的占用,为处理文件提供自由的空间。 已经打开的文件,需要CLOSE才能在同一程序中再次打开。,CHAPTER 4 过程部之一,COBOL通过2位长度的文件状态字(FILE-STATUS)来表示文件的操作结果是否成功,常见的文件状态值及意
44、义:,CHAPTER 4 过程部之一,二。算数运算语句 1。ADD语句,直接将一个或多个数据项与一个或多个数据项相加: 格式1:ADD 标识符1,标识符2。 TO 标识符m ,标识符n。 常量1,常量2 格式2:ADD 标识符1 ,标识符2 ,标识符3 常量1 ,常量2 ,常量3 。GIVING 标识符m ,标识符n。,2。SUBTRACT语句,从一个或数据项中减去一个或几个减去数据项的和: 格式1:SUBTRACT 标识符1,标识符2 。 FROM 标识符m ,标识符n。 常量1,常量2 格式2:SUBTRACT 标识符1 ,标识符2 。 FROM 标识符 常量1 ,常量2 常量 GIVIN
45、G 标识符n ,标识符p。,CHAPTER 4 过程部之一,例如:ADD NUM1,NUM2 GIVING NUM3. BEFORE 10 25 11 AFTER 10 25 35 ADD NUM1 TO NUM2 BEFOR 10 25 AFTER 10 35 注意:ADD TO和GIVING不能同时出现 SUBSTRACT NUM1 FROM NUM2 GIVING NUM3. BEFORE 10 25 11 AFTER 10 25 15 SUBSTRACT NUM1,15 FROM NUM2,NUM3. BEFORE 10 55 100 AFTER 10 30 75,CHAPTER 4
46、过程部之一,3。MULTIPLY语句,将两个数据项相乘,将结果存放在数字型或数字编辑型字段中: 格式1:MULTIPLY 标识符1 BY标识符2 ,标识符3。 常量1, 格式2:MULTIPLY 标识符1 BY标识符2 GIVING 标识符3 ,标识符4。 常量1,常量2 例:MULTIPLY NUM1 BY NUM2. BEFORE 10 12 AFTER 10 120 MULTIPLY NUM1 BY NUM2 GIVING NUM3. BEFORE 10 12 11 AFTER 10 12 120,CHAPTER 4 过程部之一,4。DIVIDE语句,将一个字据项(被除数)除以另一个数据
47、项(除数),并将结果存放在数字或数字编辑型数据项中: 格式1:DIVIDE 标识符1 INTO标识符2 ,标识符3。 常量1 格式2:DIVIDE 标识符1 INTO标识符2 GIVING 标识符3 ,标识符4。 常量1 BY常量2 注意: DIVIDE A INTO B 是指 B/AB DIVIDE A INTO B GIVING C 是指 B/AC DIVIDE A BY B GIVING C 是指 A/BC,CHAPTER 4 过程部之一,5。COMPUTE 语句: COMPUTE 标识符1 ,标识符2 。= 算术表达式 运算的优先级由高到低顺序为:(),正负号 ,* ,* 或 / ,+
48、 或 - 如:C = 3 ,D = 5 ,E = 2 , F = 1 则: COMPUT A,B = -(C + D)* 2 / E * 3 - F = -3,三。传送语句 (MOVE) MOVE 语句用来实现内存中数据的传送(而不是内存和外设之间的传送)。 MOVE语句的一般格式为: MOVE 标识符1 TO 标识符2 ,标识符3。 常量1 MOVE语句的传送规则: 1,如果接收项和发送项在数据部中描述的类型和长度相同,则按字节一一对应传送。 2,如果接收项和发送项长度不相同,而二者都是数值数据项,则按小数点对齐处理。 3,对字母或字符数据(非数值型数据)的传送,按左对齐处理。 4,初等项和
49、组合项之间可以相互传送。 关于各类数据之间的传送规则将在第五章中介绍。,CHAPTER 4 过程部之一,四。转移语句(GO TO) 当需要使程序改变正常执行的顺序时,可以使用无条件转移语句 GO TO 。其一般格式为: 格式1:GO TO 过程名 格式2:GO TO 过程名1 ,过程名2。过程名n DEPENDING ON 标识符 注意:只能转移到段或节的开头,不能转移到段或节的当中某一语句。段名或节名为过程名。,五。条件语句(IF) 当需要根据给出的某些条件是否满足来决定应执行哪一部分语句时,可以使用条件语句IF。 其一般格式为: IF 条件 语句组1 ELSE 语句组1 END-IF NE
50、XT SENTENCE NEXT SENTENCE COBOL关系运算符: IS GREATER THAN () IS LESS THAN () (=) NOT EQUAL TO (NOT =),CHAPTER 4 过程部之一,注意:1 句点在IF 语句中的特殊作用。 如:IF A 0 DISPLAY A。 ADD A TO TOTAL。 DISPLAY TOTAL。 与 IF A 0 DISPLAY A ADD A TO TOTAL。 DISPLAY TOTAL。就不同。 为避免出现问题应该使用显式终止符(END-IF,END-PERFORM等)代替隐式终止符 (句点“。”) 2 显式终止符
51、:如END-IF,END-ADD,END-EVALUATE等嵌套语句中,有时必须有此终 止符 3 隐式终止符:另一语句开始时,终止前一语句 (除IF语句之外); 句号 .,每一PARAGRAPH必须以 .结尾。,CHAPTER 4 过程部之一,六。停止语句(STOP) 其一般格式为: STOP RUN 常量 STOP RUN 执行后,程序停止运行,停止后不能再接着运行,如需要,可重新运行一次。 STOP 常量,表示程序暂时挂起不往下执行,显示出此常量。 七。返回语句(GOBACK) 停止运行,将控制权返回给上一级。可用本语句代替STOP语句。子程序必须用GOBACK 而不能用STOP:因为ST
52、OP停止的是一个RUN UNIT(运行单元)。,CHAPTER 4 过程部之一,本章主要对COBOL语言程序中的基础语句做了简要的介绍。COBOL程序中所有的语句都写在过程 部中,本章涉及到的是一些基本语句。学了本章之后学员已经具备了应用这些基本语句完成一 定功能的应用程序的能力。 最基本的过程部语句包括六部分,分别是输入输出语句、算术运算语句、传送语句、转移语句 、条件语句、停止语句和返回语句。这些语句中,除了GOTO转移语句由于容易引起程序逻辑的 混乱不推荐使用之外,其他的语句都要求能够应用基本的用法。 其中输入出语句中的读语句READ和写语句WRITE,一定要通过相应的练习才能熟悉里面的
53、参数 设置,同时要结合环境部、数据部正确的设置,要结合JCL用恰当的文件(DATASET)。而输入 输出语句中的初始化语句INITIALIZE,在应用程序的位置不可小觑,原因在于如果部分变量未 初始化就被使用会导致程序非正常结束。 应用传送语句进行数据传送时,一定要注意类型的兼容性。 需要注意条件语句IF中隐示终止符(.)的正确位置。,CHAPTER 4 过程部之一(本章小结),CHAPTER 5 过程部之二,一。MOVE 语句的较高技巧 1。各种类型数据之间的传送规则见下表:(Y:表示合法传送。N:表示非法传送。空白:表示某些时候是合法的。),2。用CORRESPONDING子句的传送 对应
54、传送(同名传送) 对应传送的一般格式: MOVE CORRESPONDING 标识符1 TO 标识符2 CORR 说明:(1)如果两个组合项中包括的项不同,则只传送同名的项。 (2)传送的两者间必须有成对的同名数据项,而且这一对中必须至少有一个项是初等项。 否则不能作为对应项传送。 (3)所谓同名,指的是它们有相同的全程受限,即全程同名。 假如T1和T2的描述分别为: 01 T1。 01 T2。 02 X。 02 X。 03 X1。 03 X2。 03 X3。 03 X1。 02 Y1。 02 Y。 03 A1。 03 A1。 那么执行MOVE T1 TO T2 语句之后,T1中的A1与T2中
55、的A1就因为不是全程同名而不能传送。,CHAPTER 5 过程部之二,二.算术运算语句的较高技巧。 1。四舍五入处理(ROUNDED子句):ROUNDED的作用是按照数据项的描述要求对多余位进行截断,然后对被截断的后一位进行四舍五入处理。 如: ADD A,B TO C ROUNDED,E,F ROUNDED COMPUTE A ROUNDED = B * C +D 2。长度溢出处理 (ON SIZE ERROR 子句):当发生溢出错误时,按程序设计者事先指定的操作处理。如: MULTIPLY A BY B GIVING C ON SIZE ERROR DISPLAY SIZE ERROR S
56、TOP RUN。 DISPLAY C。 注意:1) 计算出来的结果比数据项的长度要长,就被称为长度溢出。例如A,B,C均定义为9V9,A 为 1.2, B为 9.0 则C A*B ,应该为10.8,此时发生长度溢出。 2) 当ROUNDED 与ON SIZE ERROR 一起使用时,先按ROUNDED 作四舍五入处理,再判断是否溢出。 3。对应项间的运算(带CORRESPONDING 子句的算术运算语句): 一般格式: ADD CORR 标识符1 TO 标识符2 ROUNDED ;ON SIZE ERROR 强制语句 SUBTRACT CORR 标识符1 FROM 标识符2 ROUNDED ;ON SIZE ERROR 强制语句,CHAPTER 5过程部之二,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 数据采集与处理人才培养方案
- 农产品加工企业原料供应商管理办法
- 住宅精装修工程监理实施细则
- 设备机房综合降噪施工技术方案
- 社区垃圾分类设施优化配置方案
- 流域总氮治理调查技术指南
- 企业供应链协同平台建设方案
- 模具入厂检验规范
- 儿童职业体验嘉年华活动策划案
- 水源地面源污染控制建设设计方案
- 公路水运工程试验检测计价办法(四川省)
- 绵阳中学2026届高一化学第一学期期中质量跟踪监视模拟试题含解析
- 灯箱维修施工方案
- 读后续写题型讲解课件-高中英语人教版第一册
- 铁路防断培训课件
- 2025年gsp药品批发企业质量风险管理试题及答案
- 药物制剂技术专业教学标准(高等职业教育专科)2025修订
- 泡沫厂生产管理制度
- 《经济法基础》 (第2章) 第一章 总论
- 《海康威视使用说明》课件
- 创新方法大赛理论知识考核试题题库及答案
评论
0/150
提交评论