小于
ISEQUALTO
IS=TO
等于
NOTGREATERTHAN
NOT>
不大于
NOTLESSTHAN
NOT<
不小于
NOTEQUALTO
NOT=
不等于
2.IF语句的两种形式
(1)IF条件语句组
(2)IF条件语句组1ELSE语句组2
3.IF语句的一般格式
IF语句组1/NEXTSENTENCE[ELSE语句组2/NEXTSENTENCE]
六.STOP(停止语句)
语法:
STOPRUN/常量
标识部和环境部
一.标识部
1.必写部分
IDENTIFICATIONDIVISION
PROGRAM-ID.程序名.
2.任选部分
[AUTHOR作者姓名.]
[INSTALLATION.计算机设置的场所.]
[DATE-WRITTEN.源程序编写的日期.]
[DATE-COMPILED.源程序编译的日期.]
[SECURITY.保密程度.]
二.环境部
1.环境部的一般形式
ENVIRONMENTDIVISION.(环境部)
CONFIGURATIONSECTION.(配置节)
SOURCE-COMPUTER.源计算机名
OBJECT-COMPUTER.目标计算机名
[SPECIAL-NAMES.专用名描述项]
[INPUT-OUTPUTSECTION.(输入输出节)
FILE-CONTROL.{文件描述体}……
[I-O-CONTROL.输入输出控制描述体]]
2.配置节(CONFIGURATIONSECTION)
(1)源计算机段和目标计算机段的一般格式
SOURCE-COMPUTER.
OBJECT-COMPUTER.
[MEMORYSIZEIS整数{WORDS/CHARACTERS/MODULES}]
(2)专用名段
格式:
SPECIAL-NAMES.
[DECIMAL-POINTISCOMMA.]
[CURRENCYSIGNIS非数值常量.]
[专用名IS助记名.]
3.输入输出节(分为输入输出控制段与文件控制段)
文件控制段
格式:
INPUT-OUTPUTSECTION.(输入输出节)
FILE-CONTROL.(文件控制段)
SELECT文件名ASSIGNTO外部文件名.
说明:
SELECT的三种用法
(1) 在SELECT子句的“ASSIGNTO”的后面写上磁盘上实际的文件名。
(2) 在SELECT子句中只指出外部设备名。
(3) 在一些中、大型计算机系统,在SELECT子句中用该系统指定的逻辑名作为外部文件名,然后用作业控制语句将该逻辑名与实际的设备和文件相联系。
数据部
(一)
一.概述
1.数据有两种:
孤立的数据项,组合的数据项
2.数据的层次与层号
(1)数据的层次结构:
记录组合项初等项
(2)层次的规定如下:
用来描述数据层次结构的层号从01开始,到49。
记录的最高层次定为01号。
层号小的组合项包含层号大的数据项(组合项或初等项)。
一个层号为K的组合项包括它下面所有层号比它大的组合项和初等项,直到遇到层号小于K或等于K的层次为止。
3.数据部的结构
(1)文件节(FILESECTION)
用来描述程序中用到的输入文件和输出文件及其记录中各数据项的属性。
(2)工作单元节(WORKING-STORAGESECTION)
用来描述程序中用到的数据项。
(3)联接节(LINKAGESECTION)
用来描述与调用程序间发生数据传递的数据项。
(4)报表节(REPORTSECTION)
为了完成报表编制功能,此节用来规定欲输出的报表的“体裁“,设计各报表栏的打印形式和方法等。
二.文件节
1.文件描述
格式:
FD文件名LABEL{RECORDIS/RECORDSARE}{STANDARD/OMITTED}[DATA{RECORDIS/RECORDSARE}数据名]
2.记录描述
记录描述体由01层号开头,后跟记录名。
如果记录下面不再分项,即记录本身就是一个初等项,则这种描述体最简单。
三.字型子句(PIC子句)
1.数值型数据的描述
(1)“9”描述符:
表示在该位置上可以放入一个0-9之间的数字
举例:
02XPIC9999.
02YPIC9(5).
(2)“V”描述符:
支持在数值型数据结构中隐含的小数点位置
举例:
03MPIC999V999.
(3)“P”描述符:
对低位上有若干个零的数,可以用该描述符。
举例:
01APIC9P(9).表示10的9次方
01BPICPPPP99.表示0.000023
(4)“S”描述符:
如果想在数据项中放入一个带符号的数,可以用该描述符。
对于类似PICS99的数据项,系统在内存中该数据项的最后一个字节中,放入一个标记,表示此数为负。
二.字母型数据的描述
“A”描述符:
这种类型的数据项中只能放字母或空格
三.字符型数据的描述
(1)字符型数据的规定
概念:
由任意的COBOL字符组成的数据,称字符型数据。
说明:
I.字符型数据可以用X描述符来描述,也可以用9和A描述符来描述。
II.字母型数据可以用A来描述,也可以用X。
III.字符型数据中可以放数字。
四.编辑型描述符
1.插入小数点“.”,用“.”描述符。
2.插入逗号“,”作分位号,用“,”描述符。
3.插入零,用“0”描述符。
4.插入空格,用“B”描述符。
5.插入正负号,用“+”或“-”描述符。
6.插入“$”
(1)加到数字前。
(2)在数字前加正负号和$。
7.浮动插入正负号和“$”
8.取消高位零,用“Z”和“*”描述符。
9.插入“DB“和“CR”字符:
此两个描述符只能用作固定插入,而且只作最后一个描述符号。
当数值为正时,此两次留两个空格;为负时,在编辑型数据项中最后两个字节中置DB或CR。
五.PIC子句小结
1.格式:
PICTURE/PICIS描述字符串
2.每一种类型数据可以使用的描述字符如下:
数据类型
在PIC子句中允许使用的描述字符
数值数据项
9VSP
字母数据项
A
字符数据项
9AX
编辑数值数据项
9PV.,BZ+-$*0CRDB
编辑字符数据项
AX9B0
3.描述字符的含义
描述字符
含义
9
表示一个数字的位置
A
表示一个字母的位置
X
表示一个字符的位置
V
表示隐含小数点的位置
S
表示数值数据带符号
P
表示十进制比例换算,即指明落在数据域外的十进制小数点位置
$
插入货币号位置
.
插入小数点位置
插入逗号的位置
+
一律加符号
-
对负数加负号,对正数前留一空格
Z
取消高位零,以代空格
*
取消高位零,代以*
B
插入空格的位置
0
插入零的位置
DB(借方)
数据为负时,在数据后面出现DB,数据为正时,数据后空两格
CR(贷方)
数据为负时,在数据后面出现CR,数据为正时,数据后空两格
四.工作单元节(WORKING-STORAGESECTION)
1.工作单元节的作用
程序中用的数据项分两部分:
一部分是属于输入或输出文件的,另一部分是非输入或
输出的数据。
在工作单元节中描述的数据项也有两种形式:
一种是孤立的数据项,它们是初等项。
一种是组合项。
COBOL规定,孤立的数据项的描述体以层号77开头,组合项描述体以01到
49之间的一个数作层号。
在次序上常先写77层,再写01-49层。
2.赋初值子句(VALUE子句)
举例:
77APIC99VALUEIS0.
77TPICX(9)VALUE‘fogshadow’.
说明:
只有对工作单元节中的数据项可以赋初值。
过程部之二
一.传送语句(MOVE语句)的较高技巧
1.各种类型数据间的传送
(1)同类型数据间的传送
(2)编辑传送。
注意:
传送的方向必须是由数值型数据传送给编辑型数据,而不能由编辑型数据传送
给数值型数据。
(3)不同类型数据间的传送规则。
说明:
Y为允许传送,N为不允许,Z为在某些情况下是正确的
横-接收项
竖-发送项
数值型
数值编辑型
字母型
字符型
字符编辑型
组合项
整数
非整数
数值型
整数
Y
Y
Y
Y
Y
Y
Y
非整数
Y
Y
Y
N
N
N
Y
数值编辑型
N
N
N
N
Y
Y
Y
字母型
N
N
N
Y
Y
Y
Y
字符型
Z
Z
Z
Z
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
组合项
Z
Z
Z
Z
Y
Y
Y
2.组合项的传送
(1)发送项和接收项都是组合项,而且其结构和描述均相同,则可看作将各初等项一一对应传送。
(2)如发送项与接收项长度相同,但数据结构形式不同,则将发送项的内容原样不变地自左而右顺序地传送到接收项。
3.对应传送(带CORRESPONDING子句的MOVE语句)
(1)数据名的受限与受限名的传送
数据名和限定符之间用OF或IN来连接。
举例:
MOVA1OFAOFSUMTOT1.
(2)用CORRESPONDING子句的传送——对应传送(同名传送)
作用:
把一个组合项中若干项传送给另一组合项中同名的项。
格式:
MOVECORRESPONDING/CORR标识符1TO标识符2
二.算术运算语句的较高技巧
1.四舍五入处理(ROUNDED子句)
作用:
按照数据项的描述要求对多余位截断,然后对被截断的后一位数进行四舍五入处理。
举例:
ADDA,BTOCROUNDED
A+B+C值
C描述
有无ROUNDED
C内容
186.7851
999
有
187
186.7851
999V9
有
186.8
186.7851
999V99
有
186.79
186.7851
999V999
有
186.785
如果计算结果有多个,则应该分别说明哪一个接收项要进行舍入处理,ROUNDED应写在有关的接收项(结果数据项)的数据名后面,如
ADDA,B,CTOD,E,FROUNDED,GROUNDED,H
2.长度溢出处理
当计算结果的整数部分的长度如果比结果数据项描述所规定的整数部分长,则发生长度溢出,结果的高位部分被截断。
ONSIZEERROR子句提供“溢出”处理。
即当发生溢出错误的时候,按程序设计者事先指定的操作处理。
举例:
MULTIPLYABYBGIVINGC
ONSIZEERRORDISPLAY‘SIZEERROR‘
STOPRUN.
3.对应项间的运算(带CORRESPONDING子句的算术运算语句)
格式:
ADDCORRESPONDING/CORR标识符1TO标识符2[ROUNDED]
[;ONSIZEERROR强制语句]
SUBTRACTCORRESPONDING/CORR标识符1TO标识符2[ROUNDED]
[;ONSIZEERROR强制语句]
4.除法语句中的余数子句(REMAINDER子句)
举例:
DIVIDE1.5INTO7GIVINGCREMAINDERD.
三.IF语句的高级技巧
1.IF语句的嵌套
举例:
(注意IF与ELSE的一一配对)
IFA=B
MOVEBTOT
IFA=C
MOVECTOR
IFXSUBTRACTXFROMY
IFN=M
IFP=Q
DISPLAYP,Q
ELSENEXTSENTENCE
ELSENEXTSENTENCE
ELSENEXTSENTENCE
ELSENEXTSENTENCE
ELSENEXTSENTENCE
2.关系表达式条件
以下为关系条件的比较方式,其中,Y表示作为数值型比较,N表示作为非数值型(即字符型比较),Z表示不能比较。
横-客体
竖-主体
数值型
数值常量
非数值常量
字母型
字符型
组合项
数值型
Y
Y
N
N
N
N
数值常量
Y
Z
Z
N
N
N
非数值常量
N
Z
Z
N
N
字母型
N
N
N
N
N
N
字符型
N
N
N
N
N
N
组合项
N
N
N
N
N
N
3.符号条件
格式:
数据名/数值表达式IS[NOT]POSITIVE/NEGATIVE/ZERO
举例:
(1)IFXISPOSITIVE与IFX>0等价
(2)IFXISNEGATIVE与IFX<0等价
(3)IFXISZERO与IFX=0等价
4.类型条件
格式:
标识符IS[NOT]NUMERIC/ALPHABETIC
其中,NUMERIC表示数值类型,ALPHABETIC表示字母类型。
5.条件名条件
作用:
用来代替一系列繁杂的IF-ELSE语句。
格式:
88条件名VALUEIS/ARE常量1[THROUGH/THRU常量2]
[常量3[[THROUGH/THRU常量4]]……
举例:
首先在数据部说明
77X(条件变量)PIC9(6).
88X1VALUE0THRU99.
88X2VALUE100THRU999.
88X3VALUE1000THRU4999.
88X4VALUE5000THRU100000.
经过上面的说明后,可以在过程部中直接使用条件名条件。
IFX1MOVE0.03TOR.(在0<=X<100时,R=0.03)
IFX2MOVE0.04TOR.(在100<=X<1000时,R=0.04)
IFX3MOVE0.05TOR.(在1000<=X<5000时,R=0.05)
IFX4MOVE0.06TOR.(在5000<=X<=100000时,R=0.06)
6.复合条件
逻辑运算符有:
AND、OR、NOT
运算次序是:
NOTANDOR
五.字符串连接语句(STRING语句)
六.字符串分解语句(UNSTRING语句)
七.检测语句(INSPECT语句)
八.转换语句(TRANSFORM语句)
过程部之三
—执行语句(PERFORM语句)
一.执行语句的作用
类似于子程序
二.执行语句的最基本形式
格式:
PERFORM过程名1[THROUGH/THRU过程名2]
三.执行语句的使用规则
1.PERFORM语句的嵌套
2.在PERFORM语句所执行的语句序列中,可以含有转移语句,可以使流程转到语句序列之外,但一般应该转回到此语句序列,以便能最后能执行此语句序列的最后一个句子。
四.使用PERFORM语句实现循环
格式:
PERFORM过程名1[THROUGH/THRU过程名2]整数/标识符TIMES
说明:
1.标识符应为整数数据项
2.如果此标识符的值在执行语句序列中有变化,不会影响执行次数。
即以它开始时候的值来决定执行的次数。
五.执行语句的较复杂的形式
1.格式:
PERFORM过程名1[THROUGH/THRU过程名2]UNTIL条件
作用:
反复执行指定的语句序列,直到给定的条件满足为止。
2.格式:
PERFORM过程1[THROUGH/THRU过程名2]
VARYING标识符1FROM常数1/标识符2BY常数2/标识符3UNTIL条件
举例:
PERFORMT1THRUT2VARYINGXFROMA
BYBUNTILX>5
其作用是执行T1到T2语句序列,X是“循环变量”,是整型数据项。
A为初值,B为步长,它们都是整数或整数数据项。
六.执行语句的多重循环形式
格式:
PERFORM过程名1[THROUGH/THRU]过程名2
[VARYING参数1FROM初值1BY步长1UNTIL条件1]
[AFTER参数2FROM初值2BY步长2UNTIL条件2]
[AFTER参数3FROM初值3BY步长3UNTIL条件3]
说明:
1。
最后面的循环体先执行。
2.COBOL允许用到三重循环。
七.出口语句(EXIT语句)
作用:
提供一