COBOL
Chapter 1 : 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 ---678 12---7273---80
IDENTIFICATION 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 , 专用字符:+ - * / = , . ; ‘ ( ) < > $ 及空格。属于系统字符集而不属于COBOL字符集的字符只能出现在COBOL 程序中的字符串里。
六.常量:
COBOL 常量分为数值常量(如 100,-29),非数值常量(如 ‘ABC’ )和表意常量(如 ZERO,SPACE,HIGH-VALUE,LOW-VALUE ,QUOTE ,ALL 常量)。
七.COBOL 所处理的数据的特点
层次的概念:数据间存在的从属关系。
文件的概念:多个记录可以组成一个文件。
记录的概念:具有一定层次关系的一组数据项的最大集合,它是内存中具有独立逻辑含义的最大存取项,具有最高层次。
Chapter 2 : 过程部初步---最基本的过程部语句
一.输入输出语句
1.ACCEPT语句:直接从终端键盘或系统指定的输入设备上输入数据。
ACCEPT 标识符 [FROM 助忆名]
注:A。标识符(identifier)指的是能唯一地标识一个数据项的数据名,不能唯一地标识一个数据项的数据名不是标识符。标识符可以是组合项。
B。在ACCEPT语句中如不写FROM部分,如ACCEPT A ,则表示从系统隐含指定的设备上读入一个数据给A。如果不想从指定的设 备上输入,则要用FROM 选项,这时“助忆名”需要在环境部中事先说明和那种外部设备相联系。如:
ENVIRONMENT DIVISION。(环境部)
CONFIGRATION SECTION。(配置节)
SPECIAL-NAMES。(专用名段)
CONSOLE IS ABC
如在过程部中有 ACCEPT T FROM ABC。 则表示要从控制台接收数据
2.DISPLAY语句:从计算机内存中输出到某一指定的输出设备上。
DISPLAY { 标识符1,常量1}[标识符2,常量2]。。。[UPON 助忆名]
( 标识符和助忆名的说明同上)
ACCEPT语句和DISPLAY语句不必定义文件适用于少量的数据输入输出。
3.READ语句:COBOL语言中数据的输入输出主要是通过对外部文件的读写进行的。READ 语句就是从外部文件上读入数据输 出到程序中的数据项中。在程序中用到的所有文件都需要在环境部中指定程序中用到的文件名与实际外部文件的联系。数据部也要对文件加以描述。指定数据结构各数据项所占的内存单元长度以及数据形式。COBOL 的存取是以文件为对象以记录为单位的。
READ语句的最简单的格式为: READ 文件名
ENVIRONMENT DIVISION。
INPUT-OUTPUT SECTION。
FILE-CONTROL。
SELECT IN-FILLE ASSIGN TO 外部文件名。
为了存储读入的记录,必须在内存开辟一个与文件记录长度相等的存储区,即‘输入文件纪录区’。每一个输入文件都有相应的‘输入文件纪录区’,与之一一对应。亦即在数据部中描述文件的数据结构。
READ语句:
4.WRITE语句:将内存中的数据输出到外部设备,主要是由WRITE 语句来完成的。WRITE语句的最简单的格式为:
WRITE 记录名(注意WRITE语句的操作对象是记录,所以是‘记录名’而不是‘文件名’)
LABLE RECORD IS OMITTED :凡输出设备是打印机的都必须写明此句。如输出设备是磁盘,则仍用LABLE RECORD IS STANDARD。
01 层定义‘输出纪录区’ 的名字为OUT-RECORD,由于 01层属于FD描述体,因此也就指定了
OUT-RECORD 和OUT-FILE 的关系。
在用WRITE 语句输出一个记录之前,应向输出记录区传送数据。如已将数据传送到上述各数据项中,则在执行 W RITE OUT-RECORD 语句后,则记录区中的数据通过打印机打印出来。
5.OPEN语句:程序中如果需要读写文件,则该文件必须先用OPEN语句打开,系统在执行READ,WRITE以前先检查该文件是否已在规定的外部设备上准备就绪。
OPEN语句的一般格式为:
OPEN INPUT 文件名1 [,文件名2]。。。
OPEN OUTPUT 文件名3 [,文件名4]。。。 。。。
OPEN I-O 文件名5 [,文件名6]。。。
6.CLOSE语句:当对一个文件的读或写的操作已完成,就应关闭该文件。
CLOSE语句的一般格式为:
CLOSE 文件名 1 [,文件名2]。。。
COBOL通过2位长度的文件状态字(FILE-STATUS)来表示文件的操作结果是否成功,常见的文件状态值及意义:
二.算数运算语句
1.ADD语句:
ADD A TO C. (C=C+A)
2.SUBTRACT语句:
SUBTRACT A FROM C. (C=C-A)
SUBTRACT A FROM C GIVING D. (D=C-A)
3.MULTIPLY语句:
MULTIPLY Y BY B. (B=B*Y)
MULTIPLY Y BY B GIVING Z. (Z=B*Y)
4.DIVIDE语句:
DIVIDE Y INTO B. (B=B/Y)
DIVIDE Y INTO B GIVING Z. (Z=B/Y)
DIVIDE A BY B GIVING C REMAINDER D.将A除于B的商放入C,余数放入D.
5.COMPUTE 语句:
运算的优先级由高到低顺序为:(),正负号 ,** ,* 或 / ,+ 或 -
如:C = 3 ,D = 5 ,E = 2 , F = 1 则:
COMPUTE B = -(C + D)* 2 / E ** 3 - F = -3
三.传送语句 (MOVE)
MOVE 语句用来实现内存中数据的传送(而不是内存和外设之间的传送)。
MOVE语句的一般格式为:
MOVE 标识符1 TO 标识符2 [,标识符3]。。。
MOVE语句的传送规则:
1,如果接收项和发送项在数据部中描述的类型和长度相同,则按字节一一对应传送。
2,如果接收项和发送项长度不相同,而二者都是数值数据项,则按小数点对齐处理。
3,对字母或字符数据(非数值型数据)的传送,按左对齐处理。
4,初等项和组合项之间可以相互传送。关于各类数据之间的传送规则将在第五章中介绍。
四.转移语句(GO TO)
当需要使程序改变正常执行的顺序时,可以使用无条件转移语句 GO TO 。其一般格式为:
格式1: GO TO 过程名
格式2: GO TO 过程名1[,过程名2]。。过程名n DEPENDING ON 标识符
注意:只能转移到段或节的开头,不能转移到段或节的当中某一语句。段名或节名为过程名。
五.条件语句(IF)
当需要根据给出的某些条件是否满足来决定应执行哪一部分语句时,可以使用条件语句IF。
IF (A [NOT] > B) 等价于 IF (A [NOT] GREATER THAN B)
IF (A [NOT] < B) 等价于 IF (A [NOT] LESS THAN B)
IF (A [NOT] = B) 等价于 IF (A [NOT] EQUAL TO B)
IF (A >= B) 等价于 IF (A GREATER THAN OR EQUAL TO B)
IF (A <= B) 等价于 IF (A LESS THAN OR EQUAL TO B)
IF A IS [NOT] NUMERIC 数字和可选符号
IF A IS [NOT] ALPHABETIC A~Z,a~z字符和空格
IF A IS [NOT] ALPHABETIC-LOWER a~z字符和空格
IF A IS [NOT] ALPHABETIC-UPPER A~Z字符和空格
IF A IS [NOT] CLASS-NAME SPECIAL-NAMES定义的字符集
例如:SPECIAL-NAMES.
CLASS MYDEFINE IS "12345+ABCDE-".
格式1:IF 条件 THEN 语句1 ELSE 语句2 END-IF.
格式2:IF 条件 语句1 ELSE IF 语句2 ELSE 语句3 END-IF.
六.停止语句(STOP)
其一般格式为: STOP RUN. 终止主程序
七.EXIT PROGRAM
终止子程序并返回主程序
八.返回语句(GOBACK)
当出现于子程序时相当于EXIT PROGRAM
当出现于主程序时相当于STOP RUN
Chapter 3 : 标识部与环境部
一.标识部(IDENTIFICATION DIVISION)
IDENTIFICATION DIVISION.
PROGRAM-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。 {文件控制描述体}。。。
[I-O-CONTROL。 输入输出控制描述体]]
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段的作用是可以指定目标程序运行时,几个文件共用一个内存区,以省内存。在此暂不作介绍。
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 … ]
Chapter 4 : 数据部
一.数据部概述
1。 数据部的作用是定义数据项属性,描述数据结构。所有在过程部中出现的数据项都必须在数据部中对它们的属性进行说明。包括数据项的类型,数据项间的关系,记录与文件的关系,文件的属性。
2。 数据的层次和层号:COBOL中把有从属关系的数据用层次(level)关系来描述。数据的层次结构是:记录--》组合项--》初等项。如,在前面READ语句中定义的 IN-FILE 文件具有如下结构:
01 IN-RECORD。
02 PROD-CODE PIC 9(4)。
02 PROD-QUANTITY PIC 9(5)。
02 PROD-PRICE PIC 9(6)。
02 MANU-DATE。
05 DATE-CCYY PIC 9(4)。
05 DATE-MM PIC 9(2)。
05 DATE-DD PIC 9(2)。
层次规定如下:
(1)用来描述数据的层次结构的层号从01到49。记录的层次最高,定为01层号。
(2)从属项的层号比其下属项的层号高。层号不必要求连续。
(3)从属于同一组合项但不互相从属的数据项具有相同的层号。
3。数据部的结构: 数据部中通常用到的有以下几个节:
(1)FILE SECTION:描述程序中用到的输入输出文件及其记录中各数据项的属性。
(2)WORKING-STORAGE SECTION:描述程序中用到的中间数据项。
(3)LINKAGE SECTION:描述与调用程序间发生数据传递的数据项。
(4)REPORT SECTION:为了完成报表编制功能,此节用来规定欲输出的报表的‘体裁’,设计各报表栏的打印形式和方法等。
二.文件节
1。文件节的作用: 程序中每一个输入或输出文件都要在文件节中加以描述。内容包括:文件名和文件属性;文件中包括的记录名字;每个记录中数据的层次关系;记录中各数据项的数据形式和占内存的大小。
2。文件描述: 最简单的文件描述体的一般格式为:
FD 文件名
LABLE RECORD IS STANDARD
RECORDS ARE OMITTED
DATA RECORD IS 数据名
RECORDS ARE
3。记录描述:记录描述体由01层号开始,后跟记录名。如果记录本身就是一个初等项,则在记录名后描述记录长度;否则,数据名后跟句点,下面定义记录的数据结构。如:
DATA DIVISION。
FILE SECTION。
FD IN-FILE
LABLE RECORD IS STANDARD。
DATA RECORD IS IN-FILE-RECORD。
01 IN-FILE-RECORD PIC X(80)。
DATA DIVISION。
FILE SECTION。
FD IN-FILE
LABLE RECORD IS STANDARD。
DATA RECORD IS IN-FILE-RECORD。
01 IN-FILE-RECORD PIC X(80)。
或 ( 01 IN-FILE-RECORD。
05 DATE PIC 9(8)。
05 PROD-CODE PIC 9(4)。
05 PROD-PRICE PIC 9(6)。 )
4。数据项描述: 在每一个初等项的名字后跟一个PIC子句。用它来描述数据的类型和长度。PIC子句在下面详细说明。
5。文件节的书写格式: FD从A区开始书写,01层号也从A区开始,其它层号可以从A区也可以从B区开始。为了看起来层次分明,最好从B区开始。
三.PIC 子句
PIC即PICTURE的缩写。PIC子句用来描述每一个初等项。它说明:(1)数据项是什么类型。(2)数据项占多大内存域。(3)是否需要按打印的要求准备有关字符。PIC子句的主要作用在于描述一个初等项的一般特征和编辑要求。
PICTURE
定义基本项目的具体长度,格式,数据类型。可以简写成PIC.
格式字符串最多30个字符,可以包含下列字符:
A 字母A-Z,a-z,空格
B 插入空格
P 标量字符,代表字段中不显示的小数点位置
S 代数符号,实际显示取决于项目的USAGE
V 小数点位置
X 任何字符
Z 抑制前头的0并转换成空字符
0 插入0
9 数字0~9
/ 插入/
, 插入,(逗号不能作为字符串的最后一位,最后时逗号是分隔符)
. 插入.
* 抑制前头的0并转换成*
+ 正值插入+,负值插入-
- 正值插入空格,负值插入-
$ 插入美元号
CR 正值插入两个空格,负值插入CR
DB 正值插入两个空格,负值插入DB
例子:
03 VAR PIC AAAAA. STATE变量长度为5个字符,不能有数字,等价于03 STATE PIC A(5)。
输入ASDFG ,显示ASDFG
03 VAR PIC XXXXX. FILLER变量长度为5个任意字符。
等价于03 FILLER PIC X(5)。 输入123AS , 显示123AS
03 VAR PIC 99/XXX/9999 长度11,输入05may2004,显示05/may/2004
03 VAR PIC 0ABXXX/9999 长度11,输入05may2004,显示05 may/2004
03 VAR PIC 9(3) 长度3,0~999之间。
03 VAR PIC 9(4)V99 长度6,0.00~9999.99之间。
03 VAR PIC S9(5)V99 长度7,-99999.99~99999.99之间。
03 VAR PIC 9(6)PPP 长度6,可以是1000,2000,...,999999000。
输入1234, 显示1000。
03 VAR PIC PPP999 长度3,0.000001~0.000999之间。输入123,显示0.000123。
03 VAR PIC ZZZ.99,输入100.50,显示100.50;输入-51.50,显示51.50;
输入0,显示.00.
03 VAR PIC $ZZZ.ZZ-,输入100.50,显示$100.50;输入-51.50,显示$51.50-;
输入0,显示
03 VAR PIC $***,***.99CR,输入1000,显示$**1000.00;
输入-1000,显示 $**1000.00CR;
输入0,显示$***,***.00;输入51.5,显示$***,*51.50
03 VAR PIC $$$,$$$.99,输入100.50,显示$100.50;输入-100.50,显示$100.50;
输入0.777,显示$.77;输入0,显示$.00
03 VAR PIC $.$$$,输入1.00,显示$.00;输入0.65,显示$.65;
输入0,显示$.00;
03 VAR PIC $--,输入17.7,显示$17;输入-17.7,显示$-17;
输入-5,显示$-5
03 VAR PIC $999.99+,输入100.50,显示$100.50+;输入-100.50,显示$100.50-;
03 VAR PIC 9(3)B9(3),输入55,显示000 055;输入1000.78,显示001 000;
USAGE 表示基本或组数据的类型。有BINARY,COMPUTATIONAL(COMP),DISPLAY,INDEX,PACKED-DECIMAL.
JUSTIFIED
03 VAR1 PIC X(5) JUSTIFIED RIGHT.
03 VAR2 PIC X(5).
输入XYZ,VAR1显示的是" XYZ",VAR2显示的是"XYZ "。
BLANK WHEN ZERO
03 VAR PIC $999,999.99 BLANK WHEN ZERO .
当字段值为0,这个项目设置为全部空格。
VALUE
定义的时候就赋值。
03 VAR PIC X(5) VALUE "ABCDE".
01 VAR VALUE ALL SPACES.
03 VAR1 PIC XXX.
03 VAR2 PIC XX.
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)。
注意:(1)V在描述符的最后,则等于无小数点。
(2)一个数据的描述符中只能出现一个V。
(3)进行数据传送或运算时,按隐含的小数点位置对准进行传送或运算。
(4)V表示的小数点只在传送或运算时起作用,不能被显示或打印出来。
‘S’描述符:如果想在数据项中放入一个带符号的数,可以用‘S’描述符。如:
03 M PIC S9(3)V9(2)。
注意:(1)S描述符必须是最左边的一个描述符。
(2)在内存中,S不占位数,在传送或运算时起作用。
2。字母型数据的描述:字母型数据项用A描述符,在这种类型的数据项中只允许存放字母或空格。
3。字符型数据的描述:由任意的COBOL字符组成的数据,称为字符型数据,它是非数值型的,不能用于计算。用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)。插入逗号‘,’作分位号,用‘,’描述符。如:
02 A PIC 999,999。99。 (或PIC 9(3),9(3)。9(2))
(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 $$$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,数值为正时,此两字节留空格。
5.常用数值型数据
四.工作单元节(WORKING-STORAGE SECTION)
1。工作单元节的作用:程序中用的数据项分为两部分,一部分是属于输入或输出文件的,另一部分是非输入或输出的数据。如一些中间变量或用作累计的数据项等。非输入输出的数据就应在工作单元节中描述,还可以用工作单元节来赋初值。
2。VALUE子句:用于给变量赋初值。如:
02 A PIC 9(3) VALUE 123。
注意:
(1)只有对工作单元节中的数据项才能赋初值,不能对文件节中输入输出文件中的数据项赋初值。
(2)如果在组合项的描述体中使用VALUE,初值只能是表意常量或非数值型常量。对组合项整体而言,一律按字符型数据项处理。
(3)当用一个带符号的数值作初值时,相应的PIC子句中应有‘S’描述符。
(4)赋初值时应该注意类型的一致性。
(5)VALUE子句给出的值应适合PIC子句的描述范围,否则会出现截断或产生错误。
Chapter 5 : 过程部
一.MOVE 语句的较高技巧
1。各种类型数据之间的传送规则见下表:(Y:表示合法传送。N:表示非法传送。空白:表示某些时候是合法的。)
接收项 | 数值型 | 数值型 | 数值编辑型 | 字母型 | 字符型 | 字符编辑型 | 组合项 |
发送项 | 整数 | 非整数 |
|
|
|
|
|
数值型整数 | Y | Y | Y | N | Y | Y | Y |
数值型非整数 | Y | Y | Y | N | N | N | Y |
数值编辑型 | Y | Y | Y | N | Y | Y | Y |
字母型 | N | N | N | Y | Y | Y | Y |
字符型 |
|
|
|
| Y | Y | Y |
字符编辑型 | N | N | N | N | Y | Y | Y |
数值常量 | Y | Y | Y | N | N | N | Y |
非数值常量 | N | N | N | Y | Y | Y | Y |
ZERO | Y | Y | Y | N | Y | Y | Y |
SPACE | N | N | N | Y | Y | Y | Y |
组合项 |
|
|
|
| Y | Y | Y |
二.REDEFINES
可以用不同的变量描述同一内存。
01 PART_RECODE USAGE DISPLAY
03 PART-TYPE PICTURE...
03 PART_TYPE_A.
05 PART_NUMBER PICTURE...
05 PART_COST PICTURE...
03 PART_TYPE_B REDEFINES PART_TYPE_A.
05 UPC_CODE PICTURE...
03 PART_TYPE_C REDEFINES PART_TYPE_A.
05 ISBN PICTURE...
根据PART_TYPE决定用PART_TYPE_A还是PART_TYPE_B还是PART_TYPE_C。
规则:
PART_TYPE_B和PART_TYPE_C长度不能大于PART_TYPE_A。
数据项不能有VALUE。
01层不能用REDEFINES.
PART_TYPE_B和PART_TYPE_C中不能有OCCURS
三.PERFORM
过程调用,但是不传递参数。
PERFORM PROC1 [THROUGH PROC2]
执行完PROC1再执行PROC2.没有THROUGH(THRU)就只执行PROC1.
PERFORM PROC1 [THRU PROC2] N TIMES
执行PROC1[或者还有PROC2]N次。
PERFORM PROC1 [THRU PROC2] [WITH TEST BEFORE/AFTER] UNTIL A NOT EUQAL 0.
执行PROC1[或者还有PROC2]直到A不等于0。WITH TEST BEFORE/AFTER指定在第一次执行之前还是之后判断条件。默认是BEFORE,执行之前判断。
PERFORM PROC1 [THRU PROC2] [WITH TEST BEFORE/AFTER] VARYING A FROM B BY C UNTIL CONDITION1 [AFTER D FROM E BY F UNTIL CONDITION2].
相当于FOR循环,将A的值从B开始,以C为单位递增,直到满足CONDITION1。AFTER语句是一个嵌套的FOR 循环。VARYING是外循环,AFTER是内循环。A,B可以是索引。
过程也可以直接写入PERFORM中。但是THROUGH就不好用了。语法如下 :
PERFORM 过程语句 END-PERFORM.
PERFORM N TIMES 过程语句 END-PERFORM.
PERFORM [WITH TEST BEFORE/AFTER] UNTIL CONDITION 过程语句 END-PERFORM.
PERFORM [WITH TEST BEFORE/AFTER] VARYING A FROM B BY C UNTIL CONDITION1 过程语句 END-PERFORM.
四.EVALUATE
EVALUATE
相当于SWITCH CASE语句。
EVALUATE A
WHEN B ...
WHEN 0 THRU 100 ...(FROM 0 TO 100)
WHEN OTHER ...
[END-EVALUATE]
首先得到A的结果,和WHEN语句的参数比较,如果和B相等,就执行B后的操作,执行完了不再执行后面的WHEN语句。如果不等就执行下一条WHEN语句。如果没有相等的就执行WHEN OTHER语句。
EVALUATE A ALSO B
WHEN C ALSO D ...
WHEN E ALSO F ...
WHEN OTHER ...
对于有多个判断条件的,要多个条件同时满足。如上要C=A同时D=B,才执行WHEN语句。
Chapter 6 : 各部之间的关系
IDENTIFICATION DIVISION. |
|
ENVIRONMENT DIVISION. | 描述程序中用到的文件与外部文件的关系及控制信息 |
DATA DIVISION. | 描述程序中用到的所有文件及其记录中各数据项的属性及程序中用到的所有中间数据项的描述. |
PROCEDURE DIVISION. | 程序的核心部分,他决定计算机进行什么操作.如,文件的读写及其他处理 |