大型机COBOL实验报告5COBOL商业编程技术.docx
《大型机COBOL实验报告5COBOL商业编程技术.docx》由会员分享,可在线阅读,更多相关《大型机COBOL实验报告5COBOL商业编程技术.docx(49页珍藏版)》请在冰豆网上搜索。
大型机COBOL实验报告5COBOL商业编程技术
大连理工大学
课程大作业
课程名称:
COBOL商业编程技术
学院(系):
软件学院
专业:
大型机方向
班级:
学号:
学生姓名:
2011年4月25日
一、实验内容
(1)实验背景:
假设有一公司要实现系统更新,将从开始至2011年一季度的数据备份到一个文件(数据集RYO.COBOL.RPT3000.FOLD)中,将第二季的数据保存在另一文件(数据集RYO.COBOL.RPT3000.FREC)中,要系统更新完成,要将两数据整合,并且第二季中的数据包括新的分公司的成立,原分公司的倒闭,原分公司数据更新。
(2)实验要求:
现要实现判断第二季度中的数据集中内容判断是否合法,将不合法的输出到错误文件(数据集RYO.COBOL.RPT3000.FERR)中,将倒闭(关闭)的分公司数据输出到(数据集RYO.COBOL.RPT3000.FCLO)中,将新的整合后的数据保存到(数据集RYO.COBOL.RPT3000.FNEW),并最终打印成报表输出到(数据集RYO.COBOL.RPT3000Z.OUTPUT01)中。
二:
实验目的
1)了解COBOL语言格式,数据类型和基本运算,能熟练掌握编写COBOL程序的技能
2)熟练掌握EVALUATE语句和PERFORMUNTIL语句等COBOL流程控制
3)熟练掌握对数据的排序和合并操作(SORT&MERGE)及对文件的操作
4)掌握表的基本用法和优点
5)熟练掌握子程序调用方法和具体实现原理
6)能正确编写JCL语言运行COBOL程序
三:
实验核心内容
实验代码分类如下:
(1)主程序代码
(2)子程序代码
(3)编译程序代码
(4)运行程序代码
(5)输入数据1:
RYO.COBOL.RPT3000.FOLD
(6)输入数据2:
RYO.COBOL.RPT3000.FREC
(6)输出数据1:
RYO.COBOL.RPT3000.FERR,RYO.COBOL.RPT3000.FCLO
(7)输出数据2:
RYO.COBOL.RPT3000.FNEW
(8)最终生成报表:
RYO.COBOL.RPT3000Z.OUTPUT01
主程序结构图:
子程序结构图:
(1)主程序代码
000100IDENTIFICATIONDIVISION.
000200*
000300PROGRAM-ID.RPT3000Z.
000400*
000500ENVIRONMENTDIVISION.
000600*
000700INPUT-OUTPUTSECTION.
000800*
000900FILE-CONTROL.
001000*
001100SELECTCUSTMASTASSIGNTOCUSTMAS1.
001200SELECTSALESRPTASSIGNTOSALESRP1.
001300*
001400DATADIVISION.
001500*
001600FILESECTION.
001700*
001800FDCUSTMAST.
001900*
00200001CUSTOMER-MASTER-RECORD.
00210005CM-BRANCH-NUMBERPIC9
(2).
00211005CM-BRANCH-NAMEPICX(20).
00220005CM-SALESREP-NUMBERPIC9
(2).
00230005CM-CUSTOMER-NUMBERPIC9(5).
00240005CM-CUSTOMER-NAMEPICX(20).
00250005CM-SALES-THIS-YTDPICS9(5)V9
(2).
00260005CM-SALES-LAST-YTDPICS9(5)V9
(2).
002700*
002800FDSALESRPT
002900RECORDCONTAINS132CHARACTERS.
00300001PRINT-AREAPICX(132).
003100*
003200WORKING-STORAGESECTION.
003300*
00340001SWITCHES.
00350005CUSTMAST-EOF-SWITCHPICXVALUE"N".
00350105FIRST-RECORD-SWITCHPICXVALUE"Y".
00350205FIRST-SALESREP-SWITCHPICXVALUE"Y".
003503*
00351001CALCULATED-FIELDS.
00352005CHANGE-AMOUNTPICS9(5)V99.
003600*
00360101CONTROL-FIELDS.
00360205OLD-BRANCH-NUMBERPIC99.
00360305OLD-SALESREP-NUMBERPIC99.
003604*
00370001PRINT-FIELDS.
00380005PAGE-COUNTPICS9(3)VALUEZERO.
00390005LINES-ON-PAGEPICS9(3)VALUE+55.
00400005LINE-COUNTPICS9(3)VALUE+99.
00410005SPACE-CONTROLPICS9.
00411005SPACE-LINEPICX(132)VALUEALLSPACE.
004200*
00430001TOTAL-FIELDS.
00440005SALESREP-TOTAL-THIS-YTDPICS9(6)V99VALUEZERO.
00440105SALESREP-TOTAL-LAST-YTDPICS9(6)V99VALUEZERO.
00440205BRANCH-TOTAL-THIS-YTDPICS9(6)V99VALUEZERO.
00440305BRANCH-TOTAL-LAST-YTDPICS9(6)V99VALUEZERO.
00440405GRAND-TOTAL-THIS-YTDPICS9(7)V99VALUEZERO.
00450005GRAND-TOTAL-LAST-YTDPICS9(7)V99VALUEZERO.
004600*
00470001CURRENT-DATE-AND-TIME.
00480005CD-YEARPIC9999.
00490005CD-MONTHPIC99.
00500005CD-DAYPIC99.
00510005CD-HOURSPIC99.
00520005CD-MINUTESPIC99.
00530005FILLERPICX(9).
005400*
00550001HEADING-LINE-1.
00560005FILLERPICX(7)VALUE"DATE:
".
00570005HL1-MONTHPIC9
(2).
00580005FILLERPICX
(1)VALUE"/".
00590005HL1-DAYPIC9
(2).
00600005FILLERPICX
(1)VALUE"/".
00610005HL1-YEARPIC9(4).
00620005FILLERPICX(11)VALUESPACE.
00630005FILLERPICX(20)VALUE"YEAR-TO-DATESALESR".
00640005FILLERPICX(20)VALUE"EPORT".
00650005FILLERPICX(8)VALUE"PAGE:
".
00660005Hl1-PAGE-NUMBERPICZZZ9.
00670005FILLERPICX(52)VALUESPACE.
006800*
00690001HEADING-LINE-2.
00700005FILLERPICX(7)VALUE"TIME:
".
00710005HL2-HOURSPIC9
(2).
00720005FILLERPICX
(1)VALUE":
".
00730005HL2-MINUTESPIC9
(2).
00740005FILLERPICX(58)VALUESPACE.
00750005FILLERPICX(10)VALUE"RPT3000".
00760005FILLERPICX(52)VALUESPACE.
007700*
00780001HEADING-LINE-3.
00790005FILLERPICX(08)VALUE"BRANCH".
00790105FILLERPICX(20)VALUE"BRANCH".
00790205FILLERPICX(08)VALUE"SALES".
00791005FILLERPICX(20)VALUE"CUST".
00800005FILLERPICX(20)VALUE"SALES".
00810005FILLERPICX(20)VALUE"SALES".
00811005FILLERPICX(20)VALUE"CHANGECHANGE".
00820005FILLERPICX(36)VALUESPACE.
008300*
00840001HEADING-LINE-4.
00850005FILLERPICX(08)VALUE"NUM".
00850105FILLERPICX(20)VALUE"NAME".
00850205FILLERPICX(08)VALUE"NUM".
00851005FILLERPICX(20)VALUE"NUMCUSTOMERNAME".
00860005FILLERPICX(20)VALUE"THISYTD".
00870005FILLERPICX(20)VALUE"LASTYTD".
00871005FILLERPICX(20)VALUE"AMOUNTPERCENT".
00880005FILLERPICX(36)VALUESPACE.
008900*
00900001CUSTOMER-LINE.
00910005FILLERPICX
(2)VALUESPACE.
00910105CL-BRANCH-NUMBERPICX
(2).
00910205FILLERPICX
(2)VALUESPACE.
00910305CL-BRANCH-NAMEPICX(20).
00910405FILLERPICX(4)VALUESPACE.
00910505CL-SALESREP-NUMBERPICX
(2).
00910605FILLERPICX(4)VALUESPACE.
00910705CL-CUSTOMER-NUMBERPIC9(5).
00920005FILLERPICX
(2)VALUESPACE.
00930005CL-CUSTOMER-NAMEPICX(20).
00940005FILLERPICX(3)VALUESPACE.
00950005CL-SALES-THIS-YTDPICZZ,ZZ9.99-.
00960005FILLERPICX(4)VALUESPACE.
00970005CL-SALES-LAST-YTDPICZZ,ZZ9.99-.
00971005FILLERPICX(4)VALUESPACE.
00972005CL-CHANGE-AMOUNTPICZZ,ZZ9.99-.
00973005FILLERPICX(3)VALUESPACE.
00974005CL-CHANGE-PERCENTPIC---9.9.
00975005CL-CHANGE-PERCENT-RREDEFINESCL-CHANGE-PERCENTPICX(6).
00980005FILLERPICX(29)VALUESPACE.
009900*
01000001SALESREP-TOTAL-LINE.
01010005FILLERPICX(43)VALUESPACE.
01011005FILLERPICX(22)VALUE"SALESRTPTOTAL".
01020005STL-SALES-THIS-YTDPIC$$$,$$9.99-.
01030005FILLERPICX
(1)VALUESPACE.
01040005STL-SALES-LAST-YTDPIC$,$$$,$$9.99-.
01041005FILLERPICX(3)VALUESPACE.
01042005STL-CHANGE-AMOUNTPIC$$$,$$9.99-.
01043005FILLERPICX(3)VALUESPACE.
01044005STL-CHANGE-PERCENTPIC+++9.9.
01045005STL-CHANGE-PERCENT-RREDEFINESSTL-CHANGE-PERCENT
010460PICX(6).
01050005FILLERPICX(19)VALUE"*".
010600*
01060101BRANCH-TOTAL-LINE.
01060205FILLERPICX(43)VALUESPACE.
01060305FILLERPICX(22)VALUE"BRANCHTOTAL".
01060405BTL-SALES-THIS-YTDPIC$$$,$$9.99-.
01060505FILLERPICX
(1)VALUESPACE.
01060605BTL-SALES-LAST-YTDPIC$,$$$,$$9.99-.
01060705FILLERPICX(3)VALUESPACE.
01060805BTL-CHANGE-AMOUNTPIC$$$,$$9.99-.
01060905FILLERPICX(3)VALUESPACE.
01061005BTL-CHANGE-PERCENTPIC+++9.9.
01061105BTL-CHANGE-PERCENT-RREDEFINESBTL-CHANGE-PERCENT
010612PICX(6).
01061305FILLERPICX(19)VALUE"*".
010614*
01061501GRAND-TOTAL-LINE.
01061605FILLERPICX(43)VALUESPACE.
01061705FILLERPICX(20)VALUE"GRANDTOTAL".
01061805GTL-SALES-THIS-YTDPIC$,$$$,$$9.99-.
01061905FILLERPICX
(1)VALUESPACE.
01062005GTL-SALES-LAST-YTDPIC$,$$$,$$9.99-.
01062105FILLERPICX
(1)VALUESPACE.
01062205GTL-CHANGE-AMOUNTPIC$,$$$,$$9.99-.
01062305FILLERPICX(3)VALUESPACE.
01062405GTL-CHANGE-PERCENTPIC+++9.9.
01062505GTL-CHANGE-PERCENT-RREDEFINESGTL-CHANGE-PERCENT
010626PICX(6).
01062705FILLERPICX(24)VALUE"**".
010628*
010700PROCEDUREDIVISION.
010800*
010810CALL'SORTRPT'.
010900000-PREPARE-SALES-REPORT.
011000*
011100OPENINPUTCUSTMAST
011200OUTPUTSALESRPT.
011300PERFORM100-FORMAT-REPORT-HEADING.
011400PERFORM300-PREPARE-SALES-LINES
011500UNTILCUSTMAST-EOF-SWITCH="Y".
011600PERFORM500-PRINT-GRAND-TOTALS.
011700CLOSECUSTMAST
011800SALESRPT.
011900STOPRUN.
012000*
012100100-FORMAT-REPORT-HEADING.
012200*
012300MOVEFUNCTIONCURRENT-DATETOCURRENT-DATE-AND-TIME.
012400MOVECD-MONTHTOHL1-MONTH.
012500MOVECD-DAYTOHL1-DAY.
012600MOVECD-YEARTOHL1-YEAR.
012700MOVECD-HOURSTOHL2-HOURS.
012800MOVECD-MINUTESTOHL2-MINUTES.
012900*
013000300-PREPARE-SALES-LINES.
013100*
013200PERFORM310-READ-CUSTOMER-RECORD.
013300IFCUSTMAST-EOF-SWITCH="N"
013310EVALUATETRUE
013320WHENFIRST-RECORD-SWITCH="Y"AND
013330FIRST-SALESREP-SWITCH="Y"
013400PERFORM320-PRINT-CUSTOMER-LINE
013500MOVE"N"TOFIRST-SALESREP-SWITCH
013510MOVE"N"TOFIRST-RECORD-SWITCH
013600MOVECM-SALESREP-NUMBERTOOLD-SALESREP-NUMBER
013700MOVECM-BRANCH-NUMBERTOOLD-BRANCH-NUMBER
013710WHENFIRST-RECORD-SWITCH="N"AND
014303CM-BRANCH-NUMBER>OLD-BRANCH-NUMBER
014304PERFORM355-PRINT-SALESREP-LINE
014305PERFORM360-PRINT-BRANCH-LINE
014306MOVE"Y"TOFIRST-RECORD-SWITCH
014307MOVE"Y"TOFIRST-SALESREP-SWITCH
014308PERFORM320-PRINT-CUSTOMER-LINE
014309MOVE"N"TOFIRST-RECORD-SWITCH
014310MOVE"N"TOFIRST-RECORD-SWITCH
014311MOVECM-BRANCH-NUMBERTOOLD-BRANCH-NUMBER
014312WHENFIRST-RECORD-SWITCH="N"AND
014313CM-BRANCH-NUMBERNOT>OLD-BRANCH-NUMBERAND
014314FIRST-SALESREP-SWITCH="Y"
014315PERFORM355-PRINT-SALESREP-LINE
014316PERFORM320-PRINT-CUSTOMER-LINE
014317MOVE"N"TOFIRST-SALESREP-SWITCH
014318MOVECM-SALESREP-NUMBERTOOLD-SALESREP-NUMBER
014319WHENFIRST-RECORD-SWITCH="N"AND
014320CM-BRANCH-NUMBERNOT>OLD-BRANCH-NUMBERAND
014321FIRST-SALESREP-SWITCH="N"AND
014322CM-SALESREP-NUMBER>OLD-SALESREP-NUMBER
014323PERFORM355-PRINT-SALESREP-LINE
014324MOVE"Y"TOFIRST-SALESREP-SWITCH
014325PERFORM320-PRINT-CUSTOMER-LINE
014326MOVE"N"TOFIRST-SALESREP-SWITCH
014327MOVECM-SALESREP-NUMBERTOOLD-SALESREP-NUMBER
014328WHENFIRST-RECORD-SWITCH="N"AND
014329CM-BRANCH-NUMBERNOT>OLD-BRANCH-NUMBERAND
014330FIRST-SALESREP-SWITCH="N"AND
014340CM-SALESREP-NUMBERNOT>OLD-SALESREP-NUMBER
014350PERFORM320-PRINT-CUSTOMER-LINE
014400ELSE
014401PERFORM355-PRINT-SALESREP-LINE
014402PERFORM360-PRINT-BRANCH-LINE.
014403310-READ-CUSTOMER-RECORD.
014404
014405READCUSTMAST
014406ATEND
014407MOVE"Y"TOCUSTMAST-EOF-SWITCH.
014408*
014409320-PRINT-CUSTOMER-LINE.