COBOL源程序的书写格式。
1~6列,为“标号区”。
第7列,是“续行标志区”。
第8~11列,称为“A区”,第8列称为“A区边界”。
第12~72列,称为“B区”。
第73~80列,称为“注释区”
过程部:
过程部是程序中的第四部分,以:PROCEDURE DIVISION 开头
节-段-句子-语句
过程部的程序以一个动词开始,如ADD,OPEN,READ,WRITE,IF(在Cobol中if也做动词对待),表示计算机应执行的部分。
ADD语句(加法)
几种常见的运算:
ADD A TO B A+B=B
ADD A,B TO C A+B+C=C
ADD A,B GIVING C A+B=C
ADD A,B TO C,D A+B+C=C A+B+D=D
ADD A,B HIVING C,D A+B=C A+B=D
注意 TO 和 GIVING 后面只能跟数据名,TO前后数据名不要随便更改,GIVING后面可以跟几个数据名,不能跟常量,参加运算的只能是数值常量
不同的组合项中可以包含相同名字的数据项。
01 A.
02 B1.
03 C…
03 D…
02 B2.
03 C...
03 D....
ADD C OF B1 TO D OF B1
SUBTRACT语句(减法)
SUBTRACT A FROM B B-A=B
SUBTRACT A,B FROM C C-A-B=C
SUBTRACT A,B FROM C,D C-A-B=C D-A-B=D
SUBTRACT A,B FROM C GIVING D C-A-B=D
MULTIPLY语句(乘法)
MULTIPLY A BY B A*B=B
MULTIPLY 0.5 BY A 0.5*A=A
MULTIPLY A BY B GIVING C A*B=C
31-
DIVIDE 语句(除法)
DIVIDE A INTO B B/A=B
DIVIDE A INTO B GIVING C B/A=C
DIVIDE A BY B GIVING C A/B=C
加、减、乘、除语句 特点:
1.一个语句只能进行一种单一的运算,不能在一个语句中实现两种不同的运算。
2.加法和减法语句可以进行两个以上数值量的计算
ADD A,B TO C
SUBTRACT A,B FROM C
乘法、除法语句只能在两个量之间进行,既只能进行一次乘法或者除法。
3.四种算数语句,都有两种形式,既带GIVING部分和不带GIVING部分的。
例1
IDENTIFICATION DIVISION (标识部)
PROGRAM-ID. EXAM.
ENVIRONMENT DIVISION. (设备部)
DATA DIVISION. (数据部)
WORKING-STORAGE SECTION. (工作单元节)
77 N PIC 99 //两个字节的数据项。
PROCEDURE DIVISION. (过程部)
ACCEPT N //接受语句 等待从指定的设备上接受数据给N
ADD 3 TO N.
DIVIDE 5 INTO N.
SUBTRACT 2 FROM X.
MULTIPLY 8 BY N.
DISPLAY N.
STOP RUN.
ADD DAYTIME TO TIME GIVING SUMTIME
MULTIPLY SUMTIME BY STM GIVING SUMMONY
MULTIPLY SUMMONY BY BILI GIVING DELE
SUBTRACT DELE FROM SUMMONY GIVING SALARY
取余:
DIVIDE 400 INTO T1 GIVING R REMAINDER C.
这个C就是你要取的余数。
单纯的GIVING R只是把1900除400的结果送给R
所以COMPUTE的结果为0。
COMPUTE (计算语句)
COMPUTE 可以进行比较复杂的运算
COMPUTE T = (A + B) * C / D
MOVE (传送语句)
将一个数据从一个内存域送到另一个内存域中。是数据在内存中的传送,而不是内存和外部设备之间的传送。
MOVE A TO B A为发送项,B为接收项
ACCEPT (接受语句)
DISPLAY (显示语句)
GO TO (转向语句)
是一个无条件转向语句。
格式1: GO TO 过程名
格式2: GO TO 过程名1 [,过程名2] 。。。过程名n DEPENDING ON 标识符
GO TO A,B,C,D,E DEPENDING ON I
当I=1时,转到A段,I=2时,转到B段,I=3时,转到C段,以此类推,I=n时,转到GO TO后面的第n个过程名所指定的节(段)去。
如果GO TO后面只提供五个过程的名字,则I的值应1<=I<=5,否则执行此语句时出错。
ACCEPT NUM
ACCEPT NUM
DIVIDE 50 FROM NUM GIVING I
ADD 1 TO I
GO TO A,B,C,D,E DEPENDING ON I
A COMPUTE T = NUM * 10.
GO TO F.
B COMPUTE T = NUM*9.
GO TO F.
F DISPLAY NUM, T .
IF (条件语句)
IS GREATER THAN / IS >
IS LESS THAN / IS <
IS EQUAL TO /IS =
NOT GREATER THAN /NOT >
NOT LESS THAN /NOT <
NOT EQUAL TO /NOT =
例如:IF A NOT GREATER THAN 0 DISPLAY A.
IF A NOT > 0 DISPLAY A.
如果A不大于0
两种基本形式:
IF 条件 语句
IF 条件 语句1 ELSE 语句2
读语句(READ语句)
READ CARD-FILE INTO T AT END GO TO A1
=》READ CARD—FILE AT END GO TO A1
MOVE CARD—RECORD TO T.
READ 文件名 RECORD [INTO标识符] [; AT END 强制语句]
写语句(WRITE语句)
写语句是将内存中一个输出记录区的内容输出到指定的外部介质上
WRITE T 将记录名为T的记录内容输出。
打开语句(OPEN语句)
如果需要读写文件,必须先用OPEN语句打开,系统在执行READ(读)前会检查该文件是否已在规定的外部设备上准备好。
OPEN INPUT X1,X2,X3 打开输入文件。 用读语句从X1,X2,X3文件上读入数据
OPEN OUTPUT Y1,Y2,Y3 打开输出文件。用写语句将相应的记录输出给这些文件。
关闭语句(CLOSE)
对一个文件读或写的操作已完成,应关闭不在使用的文件。
CLOSE 文件名1[,文件名2].。。。。。。。
停语句(STOP)语句
执行此语句将程序停止运行。
STOP RUN/常量
STOP常量,表示程序暂时挂起不往下执行,在控制台上显示出此常量。
标识部和设备部
标识部,程序中不可缺少的部分。作用:表示一个COBOL源程序,既为程序加上标志,以便识别。
必写部分:IDENTIFICATION DIVISION
PROGRAM—ID 程序名.