2007-8-12 COBOL语言程序随堂笔记摘要
缓和下气分,一天7小时对电脑搞程序快要死人了!
小笑话一个:
爹对儿子说,我想给你找个媳妇。
儿子说,可我愿意自己找! 爹说,但这个女孩子是比尔盖茨的女儿!儿子说,要是这样,可以。
然后他爹找到比尔盖茨,说,我给你女儿找了一个老公。比尔盖茨说,不行,我女儿还小!爹说,可是这个小伙子是世界银行的副总裁! 比尔盖茨说,啊,这样,行!
最后,爹找到了世界银行的总裁,说,我给你推荐一个副总裁!总裁说,可是我有太多副总裁了,多余了!爹说,可是这个小伙子是比尔盖茨的女婿! 总裁说,这样呀,行!
好了,进入今天的内容:
过程部常用语句及其操作
算数运算语句
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 常量
GIVING 标识符n [,标识符p]。。。
3。MULTIPLY语句:
格式1:MULTIPLY 标识符1 BY 标识符2 [,标识符3]。。。
常量1,
格式2:MULTIPLY 标识符1 BY 标识符2 GIVING 标识符3 [,标识符4]。。。
常量1 , 常量2
4。DIVIDE语句:
格式1:DIVIDE 标识符1 INTO 标识符2 [,标识符3]。。。
常量1
格式2:DIVIDE 标识符1 INTO 标识符2 GIVING 标识符3 [,标识符4]。。。
常量1 BY 常量2
B à 注意: DIVIDE A INTO B 是指 B/A
DIVIDE A INTO Cà B GIVING C 是指 B/A
DIVIDE A BY B C àGIVING C 是指 A/B
5。COMPUTE 语句:
COMPUTE 标识符1 [,标识符2 ]。。。= 算术表达式
运算的优先级由高到低顺序为:(),正负号 ,**(次方) ,* 或 / ,+ 或 -
如:C = 3 ,D = 5 ,E = 2 , F = 1 则:
COMPUT A,B = -(C + D)* 2 / E ** 3 - F = -3
注意1。每个语句中红色标记的部分,不同的语句之间不要弄混。
2.计算都遵循:右标识符 算数运算符 左标识符 (A +/-/*// B)
3.其中BY在乘除法中都可以用,区别在于前面的关键字。
对比BY 和 INTO都表示除法时的不同:BY是前除以后,INTO是后除以前。
6.自己动手写个小程序
算术语句的说明
l 四舍五入处理(ROUNDED子句):
ADD A,B TO C ROUNDED,E,F ROUNDED
COMPUTE A ROUNDED = B*C +D
l 长度益处处理(ON SIZE ERROR子句):
MULTIPLY A BY B GIVING C
ON SIZE ERROR DISPLAY ‘SIZE ERROR’
STOP RUN。
DISPLAY C。
l 当ROUNDED与ON SIZE ERROR一起使用时,先按ROUNDED做四舍五入再判断是否益出。
l 除法语句中的余数语句(REMAINDER子句):
DIVIDE A INTO B GIVING C REMAINDER D
注意:长度益出只检查商的值而不检查余数。
传送语句 (MOVE)
MOVE 语句用来实现内存中数据的传送(而不是内存和外设之间的传送)。
MOVE语句的一般格式为:
MOVE 标识符1 TO 标识符2 [,标识符3]。。。
常量1
MOVE语句的传送规则:
1,如果接收项和发送项在数据部中描述的类型和长度相同,则按字节一一对应传送。
2,如果接收项和发送项长度不相同,而二者都是数值数据项,则按小数点对齐处理。
3,对字母或字符数据(非数值型数据)的传送,按左对齐处理。
4,初等项和组合项之间可以相互传送。
关于各类数据之间的传送规则将在第五章中介绍。
转移语句(GO TO)
当需要使程序改变正常执行的顺序时,可以使用无条件转移语句 GO TO 。其一般格式为:
格式1: GO TO 过程名
格式2: GO TO 过程名1 [,过程名2]。。过程名n DEPENDING ON 标识符
注意:只能转移到段或节的开头,不能转移到段或节的当中某一语句。段名或节名为过程名。
条件语句(IF)
当需要根据给出的某些条件是否满足来决定应执行哪一部分语句时,可以使用条件语句IF。
其一般格式为:
IF 条件 语句组1 ELSE 语句组1 [END-IF]
NEXT SENTENCE NEXT SENTENCE
COBOL关系运算符: IS GREATER THAN (>)
IS LESS THAN (<)
IS EQUAL TO (=)
NOT GREATER THAN (NOT >) (<=)
NOT LESS THAN (NOT <) (>=)
NOT EQUAL TO (NOT =)
注意:句点在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等)代替隐式终止符(句点“。”)
停止语句(STOP)
其一般格式为: STOP RUN
常量
STOP RUN 执行后,程序停止运行,停止后不能再接着运行,如需要,可重新运行一次。
STOP 常量,表示程序暂时挂起不往下执行,显示出此常量。
返回语句(GOBACK)
停止运行,将控制权返回给上一级。可用本语句代替STOP语句。子程序必须用GOBACK而
不能用STOP:因为STOP停止的是一个
RUN UNIT(运行单元)。
执行语句
执行语句的作用:在一个COBOL程序中,过程部中往往有一部分语句需要执行多次。为了让重复的部分在程序中只出现一次,可以把重复的部分单独写成一段或一节(有一个段名或节名),每次执行这部分语句时转去该段,执行完转回来。这时候就需要用到执行语句(PERFORM. )。
执行语句的一般形式:
PERFORM 过程名1 [THRU] 过程名2
使用PERFORM语句实现循环:
1。 PERFORM 过程名1 [{THRU} 过程名2 ] 整数 TIMES
标识符
2。 PERFORM 过程名1 [{THRU} 过程名2 ] UNTIL 条件
3。 PERFORM 过程名1 [{THRU} 过程名2 ]
VARYING 标识符1 FROM 常数1 BY 常数2 UNTIL 条件
标识符2 标识符3
执行语句的多重循环形式:COBOL 允许三重循环,其一般格式可写为:
PERFORM 过程名1 [{THRU} 过程名2 ]
[VARYING 参数1 FROM 初值1 BY 步长1 UNTIL 条件1 ]
[AFTER 参数2 FROM 初值2 BY 步长2 UNTIL 条件2 ]
[AFTER 参数3 FROM 初值3 BY 步长3 UNTIL 条件3 ]
出口语句(EXIT):EXIT语句提供了一组过程的公共出口,即指出了被调用过程的逻辑终点。
从 老师演示中偷学的注释表示法:
*****************************************************************
** 在这里写你要对程序总的说明或是其他什么总之你想写的
** 东西,省掉简单程序每行注释的麻烦!!!
*****************************************************************
当然其实除了星星你还可以使用‘D’‘ /’‘ –’来进行注释。需要注意的只是必须从A区开始书写。发现这个也是利用了它系统自动的报错功能。如图:
插话:养成良好习惯:书写标识部等四个部时建议从第11列开始写,这样再书写一定得在B区书写的内容时不会搞忘,因为只要一个空格即可。但为了安全起见,很多的时候我们会键入两个空格。
作业题目:1。日期显示: 2007-08-12
2.九九乘法表。
作业代码:1。
******把日期的070812改为 2007-08-12 显示******
IDENTIFICATION DIVISION.
PROGRAM-ID. STRING01.
ENVIRONMENT DIVISION.
*
DATA DIVISION.
WORKING-STORAGE SECTION.
01 DAYSTR PIC XX.
01 MONTHSTR PIC X(2).
01 YEARSTR PIC X(2).
01 DATESTR PIC X(10) VALUE ALL "-".
*
PROCEDURE DIVISION.
ACCEPT DATESTR FROM DATE.
DISPLAY "BEFORE DATE IS :" DATESTR.
UNSTRING DATESTR
INTO YEARSTR, MONTHSTR, DAYSTR
END-UNSTRING.
STRING "20" DELIMITED BY SIZE
YEARSTR DELIMITED BY SPACES
"-" DELIMITED BY SIZE
MONTHSTR DELIMITED BY SPACES
"-" DELIMITED BY SIZE
DAYSTR DELIMITED BY SIZE
INTO DATESTR
END-STRING.
DISPLAY "TODAY IS :" DATESTR.
STOP RUN.
2.
C版本的
#include <stdio.h>
void main ()
{
int i,j;
for(i=1;i<=9;i++)
{
for(j=1;j<=i;j++)
printf("%d*%d=%d/t",j,i,i*j);
printf("/n");
}
}
自己最后的版本 更新 2007-08-13
********************************99CHENGFABIAO***********************
///AUTHOR NAME :BI JIANG*********************************
IDENTIFICATION DIVISION.
PROGRAM-ID. 99CHENFA.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
77 I PIC 99.
77 J PIC 99.
77 K PIC 99.
77 II PIC Z9.
77 JJ PIC Z9.
77 KK PIC Z9.
PROCEDURE DIVISION.
DISPLAY "THIS PROGRAM IS WRITTEN BY JIANGBI."
DISPLAY "STUDENT NUMBER IS : 0543041279."
PERFORM VARYING I FROM 1 BY 1 UNTIL I > 9
PERFORM VARYING J FROM 1 BY 1 UNTIL J > I
COMPUTE K = J * I
MOVE I TO II
MOVE J TO JJ
MOVE K TO KK
DISPLAY JJ "*" II "=" KK " " WITH NO ADVANCING
END-PERFORM
DISPLAY " "
END-PERFORM.
STOP RUN.