COBOL-练习题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
要求:
请将练习题的代码(屏幕上必须含有USERID)、返回码、实现的结果进行截图,粘贴到每道题目的下边,全部题目完成后回传给授课教师。
1.参照书中的例子,编写自己的第一个程序,显示一行信息:
Hello COBOL!
2.编写一个程序,实现以下功能:
a)定义一个组合变量,如下:INITIALIZE
01TEST-DA TA-1.
05 TEST-9999 PIC 9(04).
05 TEST-XXX PIC X(03).
05 TEST-AAA PIC A(03).
b)使用INITIALIZE语句对TEST-DATA-1进行初始化
c)分别显示TEST-DA TA-1、TEST-9999、TEST-XXX、TEST-AAA
3.编写一个程序,实现以下功能:
4.编写一个程序,实现以下功能:
a)使用ACCEPT语句接收系统时间day of week
b)判断并输出今天是星期几(如:TODAY IS SUNDAY)
5.编写一个程序,实现以下功能:
a)使用ACCEPT语句接收一个数值:20121221
b)按如下格式显示该数值:
END OF THE WORLD:
Year: 2012
Month: 12
Day: 21
6.编写一个程序,使用MOVE语句,实现以下功能:
a)字符型不同长度变量之间的赋值,并显示赋值结果。
b)数值型不同长度变量之间的赋值,并显示赋值结果。
c)数值型向变量字符型变量赋值,并显示赋值结果。
d)字符型向变量数值型变量赋值,并显示赋值结果。
e)初等项与组合项变量之间的赋值,并显示赋值结果。
f)组合项与组合项变量之间的赋值,并显示赋值结果。
7.编写一个程序,实现以下功能:
a)
b)
当FLG = ‘A’时,计算并显示DATA-1 + DATA-2的值
当FLG = ‘S’时,计算并显示DATA-1 - DATA-2的值
当FLG = ‘M’时,计算并显示DATA-1 * DATA-2的值
当FLG = ‘D’时,计算并显示DATA-1 / DATA-2的值
8.使用IF语句完成第7题。
(要求IF 与END-IF一起使用)。
9.编写一个程序,实现以下功能:
练习ADD、SUBSTRACT、MULTIPLY、DIVIDE、COMPUTE的用法。
a)使用VALUE语句为A,B,C,D设初值分别为:15,18,22,55
b) A 加上B赋值给C;将B加上10,显示A和B的值
c)从A,B中减去3加上50,然后再乘以30,显示A、B的值
d)计算(B-A)的立方加上(A+B)的平方,放到D中,显示D的值
10.编写一个程序,实现以下功能:
a)向文件FILE1(文件的记录结构如下)中写入如下三条记录
b)将文件FILE1中产品代码为0003的记录中PROD-PRICE加200、STATUS赋值为
“UPDATED”后(其它字段内容同原记录)写入FILE2中(文件FILE2的记录结构如下)
c)处理完毕之后显示文件FILE1和FILE2的内容。
0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 1 9 9 9 0 3 2 2
0 0 0 2 0 1 0 0 0 0 0 1 6 0 0 2 0 0 9 0 5 2 2
0 0 0 3 0 1 0 0 0 0 0 1 8 0 0 2 0 1 1 0 8 2 5
FILE1:
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).
FILE2:
01 NEW-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).
02 STATUS PIC X(10).
11.编写一个程序,实现以下功能:
a)输出1~1000中可以被3整除、并且个位数是2。
并输出这个数的平方。
b)计算结果保存到数据集userid. PTEST.PS01中。
c)程序中要求使用PERFROM语句。
d)输出文件格式如下:
12 144
… …
12.将练习11改为用ESDS的VSAM文件存放,数据集名为USERID.PTEST.ES01,VSAM文件
中只保存数据如12和144。
13.将练习11改为用KSDS的VSAM文件存放,数据集名为USERID. PTEST.KS01,VSAM文件
中只保存数据如12和144。
编写一个程序,实现以下功能:
a)将金额大于500元的账户信息输出到文件FILE2(ESDS)(结构与FILE1相同)中。
b)计算并显示金额大于500元的账户的应收款项的总和,以及平均到每户的金额。
流程图:
15.学生成绩记录,内容包括:学号,姓名,五门(数学,语文等等)课成绩。
编写一个程序,实现以下功能:
a)建立文件FILE1(KSDS)并写入若干条记录(要求大于20条)。
b)输出所有记录到输出文件FILE2(ESDS),除上述全部信息外,还要输出每个学生的
平均成绩。
c)统计并显示输入记录数(即学生数),计算显示每个学生的总成绩,计算并显示各
学科全班的总成绩。
16.根据15题的输入文件,编写一个程序完成以下功能:
a)使用ACCEPT语句接收一个学号。
b)在文件FILE1中查找到等于这个学号的成绩记录。
c)输出符合条件的这条记录到文件FILE2(ESDS)中。
d)在文件FILE1中查找到所有大于这个学号的成绩记录。
e)输出符合条件的所有记录到文件FILE2(ESDS)中。
17.编写一个主程序,子程序,完成以下功能:
a)在主程序中给出长方体的长,宽,高
b)在子程序中计算出这个长方体的体积和周长,并显示出来
根据ACCEPT上述数据,计算并显示出相应的车费。
当DISTANCE(距离)= 0时,表示不在需要计算了。
费用计算公式:总费用= 慢车费+ 快车费+ 特快费+ 软席费+ 附加费
慢车费:当TRIAN-CODE = 0(慢车)时,
0—50km :2元
51—100km: 4元
超过100km的,每50km 加1元。
快车费:当TRIAN-CODE = 1(快车)时,
0—100km:3元
101—400km:4元
超过400km的,5元
特快费:当TRIAN-CODE = 2(特快)时,
0—100km:4元
超过100km的,每100km加1元。
软席费:当CLASS-CODE = 0(普通车厢)时,不收软席费
当CLASS-CODE = 1(软席车厢)时,
0—100km:5元
101—200km:10元
201—400km:15元
401—600km:20元
601km以上:25
附加费:当RESRV-CODE = 0(无附加费)时,不收附加费
当RESRV-CODE = 1(有附加费)时,收2元附加费。
程序要求:
主程序:使用ACCEPT语句接收数据,调用子程序完成各个费用计算,根据子程序返回的结果计算总费用,并显示总费用。
子程序:编写5个子程序分别计算慢车费,快车费,特快费,软席费,附加费
附加题-01
编写一个程序完成以下功能:
1.接收一个日期型数据(YYYYMMDD)
2.判断数据是否符合以下要求,如不符合,程序中断运行,输出提示信息日期输入有误。
a)接收的日期要小于当前系统日期
b)YYYY > 1900
c)MM <= 12
d)DD <= 31
3.如果日期符合要求,计算输入日期距离当前系统日期是多少天(包含输入日期和系统当
前日期)
附加题-02
编写一个程序完成以下功能:
1.接收一个9(06)数值型数据
2.按照以下格式输出:
a)接收:000123 显示输出:123___(3个下划线代表3个空格)
显示输出:123***
b)接收:012345 显示输出:12345_(1个下划线代表1个空格)
显示输出:12345*
c)接收:000005 显示输出:5_____(5个下划线代表5个空格)
显示输出:5*****
附加题-03
编写一个程序完成以下功能:
1.已知文件FILE1(ESDS)、FILE2(ESDS)格式如下
2.统计FILE1、FILE2中姓名相同的记录个数,并显示输出。
附加题-04
编写一个程序完成以下功能:
1.已知文件FILE1(KSDS)格式如下
2.顺序读取文件的前三条记录,并显示输出。
3.随机读取文件中ACCOUNT = 100002 、100004、100006的三条记录,并显示输出。
4.动态读取文件中ACCOUNT > 100003 的所有记录,并显示输出。
附加题-05
编写一个程序完成以下功能:
1.找出1—100内所有的素数,并显示输出。
附加题-06
编写一个程序完成以下功能:
1.接收一个天数的9(03)数值型数据。
2.计算出是多少周零多少天。
如:
a)接收014 输出显示:2 WEEKS + 0 DAY
b)接收017 输出显示:2 WEEKS + 3 DAY
c)接收005 输出显示:0 WEEKS + 5 DAY
附加题-07
编写一个程序完成以下功能:
1.已知文件FILE1(ESDS)格式如下
2.找到文件中AMOUNT(金额) 值为最大的记录,输出显示该记录的ACCOUNT(账号)
3.找到文件中AMOUNT(金额) 值为最小的记录,输出显示该记录的ACCOUNT(账号)
附加题-08
已知员工加班记录文件FILE1(KSDS),编写程序计算员工加班费。
1.主程序要求如下:
a)读入员工加班记录文件FILE1(KSDS)中员工编号大于00100的所有记录
b)调用子程序1,将读取的记录传送到子程序1
c)从子程序1中得到加班总数
d)调用子程序2,将从子程序1中得到加班总数传送到子程序2
e)从子程序2中得到加班费
f)将记录写入FILE2(KSDS)中
2.子程序1要求如下:
a)接收从主程序传送过来的记录信息
b)计算每个记录的加班总数
c)将计算好的加班总数返回给主程序
3.子程序2要求如下:
a)接收从主程序传送过来的加班总数
b)根据公式计算加班费
c)将计算好的加班费返回给主程序
计算公式:
1.加班总数= 平日加班+ 休日加班* 2
2.加班费:
a)0 < 加班总数<= 30 :加班费= 加班总数* 15
b)30 < 加班总数<= 50 :加班费= 加班总数* 20
c)50 < 加班总数<= 80 :加班费= 加班总数* 25
d)80 < 加班总数:加班费= 加班总数* 30
总结
请每位同学在充分复习、总结本门课程之后,回答如下三个问题:
1)对于本门课程,你学习到哪些知识?
2)你认为,本门课程中哪些知识是重点?
3)在你学习本门课程期间,遇到了哪些问题?你是如何解决的?。