大型机COBOL程序之简易报表打印
大型机COBOL程序之简易报表打印

COBOL实验报告2一,实验目的1,能够利用cobol程序实现一个报表的编辑和制作。
2,能够对文件进行操作,比如说:打开,关闭,读和写 3,了解COBOL的常用语句和一些常用的数据类型,能够利用编辑型数据实现数据的友好输出。
4,能够运用sdsf修改程序中的错误5,学会编写稍微复杂的COBOL程序。
二,实验原理和内容1,修改UTE20.COBOL.MURACH.EXERCISE(RPT1000X) 使之正常运行。
2,在RPT1000原有基础上改进成增强的报表打印程序。
3,利用给定的数据和格式独立的制作一个报表三,实验环境PC机和TSO下的ISPF环境四,实验步骤1,步骤1和步骤2:修改UTE20.COBOL.MURACH.EXERCISE(RPT1000X) 使之正常运行,并在此基础上改进成增强型的报表打印程序。
1.1 代码:000100 IDENTIFICATION DIVISION.000200000300 PROGRAM-ID. RPT1000.000400000500 ENVIRONMENT DIVISION.000600000700 INPUT-OUTPUT SECTION.000800000900 FILE-CONTROL.001000001100 SELECT CUSTMAST ASSIGN TO CUSTMAST.001200 SELECT SALESRPT ASSIGN TO SALESRPT.001300001400 DATA DIVISION.001500001600 FILE SECTION.001700001800 FD CUSTMAST.001900002000 01 CUSTOMER-MASTER-RECORD.002100 05 CM-BRANCH-NUMBER PIC 9(2).002200 05 CM-SALESREP-NUMBER PIC 9(2).002300 05 CM-CUSTOMER-NUMBER PIC 9(5).002400 05 CM-CUSTOMER-NAME PIC X(20).002500 05 CM-SALES-THIS-YTD PIC S9(5)V9(2).002600 05 CM-SALES-LAST-YTD PIC S9(5)V9(2).002700002800 FD SALESRPT.002900003000 01 PRINT-AREA PIC X(132).003100003200 WORKING-STORAGE SECTION.003300003400 01 SWITCHES.003500 05 CUSTMAST-EOF-SWITCH PIC X VALUE "N".003600003700 01 PRINT-FIELDS.003800 05 PAGE-COUNT PIC S9(3) V ALUE ZERO.003900 05 LINES-ON-PAGE PIC S9(3) V ALUE +55.004000 05 LINE-COUNT PIC S9(3) V ALUE +99.004100 05 SPACE-CONTROL PIC S9.004200004300 01 TOTAL-FIELDS.004400 05 GRAND-TOTAL-THIS-YTD PIC S9(7)V99 VALUE ZERO.004500 05 GRAND-TOTAL-LAST-YTD PIC S9(7)V99 VALUE ZERO.00460001 CALCULATED-FILEDS.05 CHANGE-AMOUNT PIC S9(5)V99.004700 01 CURRENT-DATE-AND-TIME.004800 05 CD-YEAR PIC 9999.004900 05 CD-MONTH PIC 99.005000 05 CD-DAY PIC 99.005100 05 CD-HOURS PIC 99.005200 05 CD-MINUTES PIC 99.005300 05 FILLER PIC X(9).005400005500 01 HEADING-LINE-1.005600 05 FILLER PIC X(7) VALUE "DA TE: ".005700 05 HL1-MONTH PIC 9(2).005800 05 FILLER PIC X(1) VALUE "/".005900 05 HL1-DAY PIC 9(2).006000 05 FILLER PIC X(1) VALUE "/".006100 05 HL1-YEAR PIC 9(4).006200 05 FILLER PIC X(11) VALUE SPACE.006300 05 FILLER PIC X(20) V ALUE "YEAR-TO-DATE SALES R".006400 05 FILLER PIC X(20) VALUE "EPORT ". 006500 05 FILLER PIC X(8) VALUE " PAGE: ".006600 05 Hl1-PAGE-NUMBER PIC ZZZ9.006700 05 FILLER PIC X(52) VALUE SPACE.006800006900 01 HEADING-LINE-2.007000 05 FILLER PIC X(7) VALUE "TIME: ".007100 05 HL2-HOURS PIC 9(2).007200 05 FILLER PIC X(1) VALUE ":".007300 05 HL2-MINUTES PIC 9(2).007400 05 FILLER PIC X(58) VALUE SPACE.007500 05 FILLER PIC X(10) VALUE "RPT1000".007600 05 FILLER PIC X(52) VALUE SPACE.007700007800 01 HEADING-LINE-3.007900 05 FILLER PIC X(20) VALUE "CUST ". 008000 05 FILLER PIC X(20) VALUE " SALES ". 008100 05 FILLER PIC X(20) VALUE " SALES ".05 FILLER PIC X(20) VALUE "CHANGE CHANGE ". 008200 05 FILLER PIC X(52) VALUE SPACE.008300008400 01 HEADING-LINE-4.008500 05 FILLER PIC X(20) VALUE "NUM CUSTOMER NAME". 008600 05 FILLER PIC X(20) VALUE " THIS YTD ". 008700 05 FILLER PIC X(20) VALUE " LAST YTD ".05 FILLER PIC X(20) VALUE "AMOUNT PERCENT ". 008800 05 FILLER PIC X(52) VALUE SPACE.008900009000 01 CUSTOMER-LINE.009100 05 CL-CUSTOMER-NUMBER PIC 9(5).009200 05 FILLER PIC X(2) VALUE SPACE. 009300 05 CL-CUSTOMER-NAME PIC X(20).009400 05 FILLER PIC X(3) VALUE SPACE. 009500 05 CL-SALES-THIS-YTD PIC ZZ,ZZ9.99-.009600 05 FILLER PIC X(4) VALUE SPACE. 009700 05 CL-SALES-LAST-YTD PIC ZZ,ZZ9.99-.05 FILLER PIC X(4) VALUE SPACE.05 CL-CHANGE-AMOUNT PIC ZZ,ZZ9.99-.05 FILLER PIC X(3) VALUE SPACE.05 CL-CHANGE-PERCENT PIC ZZ9.9-.009800 05 FILLER PIC X(55) VALUE SPACE. 009900010000 01 GRAND-TOTAL-LINE.010100 05 FILLER PIC X(27) VALUE SPACE. 010200 05 GTL-SALES-THIS-YTD PIC Z,ZZZ,ZZ9.99-.010300 05 FILLER PIC X(1) VALUE SPACE. 010400 05 GTL-SALES-LAST-YTD PIC Z,ZZZ,ZZ9.99-.05 FILLER PIC X(1) VALUE SPACE.05 GTL-CHANGE-AMOUNT PIC Z,ZZZ,ZZ9.99-.05 FILLER PIC X(3) VALUE SPACE.05 GTL-CHANGE-PERCENT PIC ZZ9.9-.010500 05 FILLER PIC X(55) VALUE SPACE. 010600010700 PROCEDURE DIVISION.010800010900 000-PREPARE-SALES-REPORT.011000011100 OPEN INPUT CUSTMAST011200 OUTPUT SALESRPT.011300 PERFORM 100-FORMA T-REPORT-HEADING.011400 PERFORM 200-PREPARE-SALES-LINES011500 UNTIL CUSTMAST-EOF-SWITCH = "Y".011600 PERFORM 300-PRINT-GRAND-TOTALS.011700 CLOSE CUSTMAST011800 SALESRPT.011900 STOP RUN.012000012100 100-FORMA T-REPORT-HEADING.012200012300 MOVE FUNCTION CURRENT-DATE TOCURRENT-DATE-AND-TIME.012400 MOVE CD-MONTH TO HL1-MONTH.012500 MOVE CD-DAY TO HL1-DAY.012600 MOVE CD-YEAR TO HL1-YEAR.012700 MOVE CD-HOURS TO HL2-HOURS.012800 MOVE CD-MINUTES TO HL2-MINUTES.012900013000 200-PREPARE-SALES-LINES.013100013200 PERFORM 210-READ-CUSTOMER-RECORD.013300 IF CUSTMAST-EOF-SWITCH = "N"IF CM-SALES-THIS-YTD >= 10000013400 PERFORM 220-PRINT-CUSTOMER-LINE.013500013600 210-READ-CUSTOMER-RECORD.013700013800 READ CUSTMAST013900 A T END014000 MOVE "Y" TO CUSTMAST-EOF-SWITCH.014100014200 220-PRINT-CUSTOMER-LINE.014300014400 IF LINE-COUNT >= LINES-ON-PAGE014500 PERFORM 230-PRINT-HEADING-LINES.014600 MOVE CM-CUSTOMER-NUMBER TO CL-CUSTOMER-NUMBER. 014700 MOVE CM-CUSTOMER-NAME TO CL-CUSTOMER-NAME. 014800 MOVE CM-SALES-THIS-YTD TO CL-SALES-THIS-YTD. 014900 MOVE CM-SALES-LAST-YTD TO CL-SALES-LAST-YTD.COMPUTE CHANGE-AMOUNT =CM-SALES-THIS-YTD - CM-SALES-LAST-YTD.MOVE CHANGE-AMOUNT TO CL-CHANGE-AMOUNT.IF CM-SALES-LAST-YTD = ZEROMOVE 999.9 TO CL-CHANGE-PERCENTELSECOMPUTE CL-CHANGE-PERCENT ROUNDED =CHANGE-AMOUNT * 100 / CM-SALES-LAST-YTDON SIZE ERRORMOVE 999.9 TO CL-CHANGE-PERCENT.015000 MOVE CUSTOMER-LINE TO PRINT-AREA.015100 WRITE PRINT-AREA AFTER ADVANCING SPACE-CONTROL LINES.015200 ADD 1 TO LINE-COUNT.015300 ADD CM-SALES-THIS-YTD TO GRAND-TOTAL-THIS-YTD. 015400 ADD CM-SALES-LAST-YTD TO GRAND-TOTAL-LAST-YTD. 015500 MOVE 1 TO SPACE-CONTROL.015600015700 230-PRINT-HEADING-LINES.015800015900 ADD 1 TO PAGE-COUNT.016000 MOVE PAGE-COUNT TO HL1-PAGE-NUMBER.016100 MOVE HEADING-LINE-1 TO PRINT-AREA.016200 WRITE PRINT-AREA AFTER ADVANCING PAGE.016300 MOVE HEADING-LINE-2 TO PRINT-AREA.016400 WRITE PRINT-AREA AFTER ADVANCING 1 LINES.016500 MOVE HEADING-LINE-3 TO PRINT-AREA.016600 WRITE PRINT-AREA AFTER ADVANCING 2 LINES.016700 MOVE HEADING-LINE-4 TO PRINT-AREA.016800 WRITE PRINT-AREA AFTER ADVANCING 1 LINES.016900 MOVE ZERO TO LINE-COUNT.017000 MOVE 2 TO SPACE-CONTROL.017100017200 300-PRINT-GRAND-TOTALS.017300017400 MOVE GRAND-TOTAL-THIS-YTD TO GTL-SALES-THIS-YTD. 017500 MOVE GRAND-TOTAL-LAST-YTD TO GTL-SALES-LAST-YTD.COMPUTE CHANGE-AMOUNT =GRAND-TOTAL-THIS-YTD - GRAND-TOTAL-LAST-YTD.MOVE CHANGE-AMOUNT TO GTL-CHANGE-AMOUNT.IF GRAND-TOTAL-LAST-YTD = ZEROMOVE 999.9 TO GTL-CHANGE-PERCENTELSECOMPUTE GTL-CHANGE-PERCENT ROUNDED =CHANGE-AMOUNT * 100 / GRAND-TOTAL-LAST-YTDON SIZE ERRORMOVE 999.9 TO GTL-CHANGE-PERCENT 017600 MOVE GRAND-TOTAL-LINE TO PRINT-AREA. 017700 WRITE PRINT-AREA AFTER ADVANCING 2 LINES.1.2 输入与输出。
报表打印

第六章打印第六章打印6.1报表打印当需要打印多户单位的报表时,为了简化打印操作,提高打印效率,系统采用了“报表打印”功能,可对多户单位的多张报表进行连续打印,具体操作如下:1、单击【打印/报表打印】,弹出选择单位窗口;2、选择要进行打印的单位,单击“确定”按钮,进入“多表打印”窗口,如图 6.1-1,在其中选择要打印的报表(如果打印全部报表,则此窗口不必改动设置);图 6.1-1 选择要打印的报表3、选择使用的打印机,在“打印份数”的编辑框中确定需打印的份数;4、如要打印报表金额转换后的数据,可选中“转换金额单位”前的复选框;5、在打印套表的过程中,如果遇到没有数据的空表,也想要同时打印,可选中“没有数据也打印空表”复选框;6、6.2打印方案选择系统提供几种常用打印方案:默认打印方案、1600K针式打印方案、B4纸打印方案、A4纸打印方案等。
在没有进行选择的情况下,系统自动选择为“默认打印方案”。
6.3 户数核对打印6.3户数核对打印打印户数变动分析表,表中包含的内容有:项目(名称)和户数。
操作如下:1、完成户数核对后,单击主菜单“打印”的下拉菜单“户数核对打印”,进入户数核对打印预览界面:2、单击“打印”按钮,弹出打印对话框,选择打印机、打印范围及打印份数,单击“确定”按钮进行打印输出;3、单击“关闭”按钮退出户数核对打印窗口。
操作过程中,可使用工具对打印内容进行编辑、修改。
6.4封面打印设置封面作为一套报表的首页,在打印时可能会有特殊要求,系统将封面打印内容的设置单独提出,设置或修改封面代码打印输出的样式。
操作如下:1、选择【高级/其他参数设置/封面打印设置】菜单,进入打印设置窗口,如图 6.4-1所示:图 6.4-1 封面打印设置2、在窗口左侧,系统列出了字段名(封面代码定义中定义的所有字段名称)、字段值(该代码字段所对应的当前企业填写的内容)、字段值含义(只有枚举字段才有此项,即为当前单位根据该枚举字段所填报的内容),供用户选择、编排;系统还提供了工具栏,可帮助用户设置满意的打印封面。
COBOL语言基础教程

cobol语言基础培训教程2009年04月23日| 5:23 下午分类:大型机|Mainframe| 标签:cobol 数据类型、COBOL 程序举例、cobol入门、cobol教程、cobol语言、大型机培训|CHAPTER 1 COBOL 概述COBOL 就是mon Business Oriented Language 得缩写。
它不仅就是商业数据处理得理想语言,而且广泛用于数据管理领域,因此COBOL 语言也被称为”用于管理得语言”。
一。
COBOL 语言得特点最适于数据处理领域:算数计算量少而逻辑处理量多,输入输出量大,数据间存在着一定得逻辑关系,大量得分类排序;COBOL比较接近英语,容易懂;通用性强,易移植,COBOL结构严谨,层次分明。
二。
COBOL得组成部分:1。
标识部(IDENTIFICATION DIVISION):用于标识程序名。
2。
环境部(ENVIRONMENT DIVISION):用于说明程序运行得环境。
3。
数据部(DATA DIVISION):用于说明程序中涉及得所有数据。
4。
过程部(PROCEDURE DIVISION):就是程序得核心部分,它决定计算机应进行什么操作。
三。
最简单得COBOL 程序举例:COL 1 —6 7 8 12—72 73—80 IDENTIFICATION DIVISION。
PROGRAM-ID。
PSAMPLE1。
ENVIRONMENT DIVISION。
DATA DIVISION。
PROCEURE DIVISION。
DISPLAY ’THIS IS A COBOL PROGRAM、’STOP RUN。
四。
COBOL 源程序得书写格式:第1 至 6 列为”标号区”。
第7列为”续行标志区”第8至此11列,称为”A区”。
程序中有些内容如部头,节头,段头,层号01,层号77 及文件描述符FD等应从A区开始写。
第12至此72列,称为”B区”。
写程序中得正文部分。
大型机COBOL大作业

PIC X(20).
002792 05 C-SALES-THIS-YTD
PIC S9(5)V9(2).
002793 05 C-SALES-LAST-YTD
PIC S9(5)V9(2).
002794 05 FILLER
PIC X(30).
002795
002800 FD ERREPT.
002900
003000 01 ERREPT-MESSAGE.
COBOL 程序设计大作业
学院(系): 专 业: 班 级: 学 号: 姓 名:
大连理工大学
Dalian University of Technology
1 程序功能描述
(1) 程序分为 3 个部分,分别是 IBMUSER.COBOL.RPTCH、IBMUSER.RPT.DEAL、 IBMUSER.RPT.SORT。其中 IBMUSER.COBOL.RPTCH 是主程序,调用 IBMUSER.RPT.DEAL 子程序,IBMUSER.RPT.DEAL 又调用 IBMUSER.RPT.SORT 子程序。 (2) 存在一个新的交易数据表,其中有添加交易操作、更新交易操作、删除交易 操作、增开一个分公司及其交易操作信息。对其进行合法性验证,错误的信息输入 到错误文件中,正确的信息和原来老的交易信息合并并且排序后生成新的交易信 息。 (3) 分公司信息表中记录分公司编号和分公司名字的对应情况,销售代表信息表 中记录销售代表编号和姓名的对应情况,另外还有新生成的交易信息表,将 3 个表 的信息同时按分公司和销售代表统计信息,生成统计报表。
PIC X(1).
002103 05 S-BRANCH-NUMBER
PIC 9(2).
002104 05 S-BRANCH-NAME
cobol课件大型机基本操作

对文件进行读取和写入操作。
打开文件
使用适当的命令或函数打开已存在的文件。
关闭文件
完成文件操作后,使用命令或函数关闭文件。
数据传
对数据进行格式转换以满 足特定需求。
将数据从大型机导出到外 部目的地。
将数据从外部源导入到大 型机中。
数据导入
数据导出
数据转换
程序执行与调试
编译程序
01
将源代码编译成可执行程序。
解决方案
使用编译器提供的错误信息,定位问题所在,并 逐一修正。
数据处理错误
总结词
数据处理错误通常是由于数据类 型不匹配、数据范围超出限制或 数据操作不当引起的。
详细描述
检查数据类型是否匹配,数据范 围是否在允许的范围内,以及数 据操作是否正确。
解决方案
根据数据类型和范围要求,对数 据进行适当的转换和验证,确保 数据操作的正确性。
执行程序
02
运行编译后的程序并查看输出结果。
调试程序
03
使用调试工具检查程序中的错误并进行修复。
04 常见问题与解决方案
程序编译错误
1 2 3
总结词
编译错误通常是由于语法错误、拼写错误或结构 问题引起的。
详细描述
检查代码中的拼写错误、语法错误和结构问题, 确保所有语句都符合COBOL语法规则,并且程 序结构清晰。
系统运行错误
总结词
系统运行错误通常是由于系统资源不足、系统故障或外部因素引 起的。
详细描述
检查系统资源是否充足,系统是否正常运行,以及是否存在外部干 扰因素。
解决方案
合理分配系统资源,确保系统正常运行,同时采取措施避免外部干 扰因素对系统的影响。
COBOL 概述PART 12

报表编制功能一、概述COBOL的报表编制功能很强,规定也比较多,根据所记录信息的不同类型可分为以下七种报表栏:1.报表头栏:整个报表的封面或标题。
2.报表尾栏:报表的“封底”,输出报表的结尾信息。
3.页头栏:输出每一页的标题。
4.页尾栏:输出本页的结束信息。
5.控制头栏:输出统计单位信息。
6.控制尾栏:输出本单位统计数字的小计。
7.明细栏:报表的具体统计数字。
例:生产月报表 (报表头 REPORT HEADING)1994年10月 (总控制头 CONTROL HEADING FINAL) 单位产品编号产品名数量单价金额 (页头 PAGE HEADING)1车间 (控制头 CONTROL HEADING)A-01 W-12 100 20 2000A-02 P-12 20 200 4000 (细目 DETAIL)……小计 6000 (控制尾 CONTROL FOOTING)2车间 B-01 F-12 25 400 10000……小计: 10000--01-- (页尾 PAGE FOOTING) ……全部金额: 234000 (总控制尾 COMTROL FOOTING FINAL)工厂生产科制表 (报表尾 REPORT FOOTING)二、报表编制功能在COBOL程序中的描述1.在数据部中的描述(1)文件节:在本节中对报表所在的文件进行描述,一般格式为RECORDS ARELABEL STANDARDRECORD ISRECORDSBLOCK CONTAINS [整数1 TO ] 整数2CHARACTERS[RECORD CONTAINS [整数3 TO ] 整数4 CHARACTERS]RECORDS AREDATA 数据名1 [,数据名2]…RECORD IS数据名4 数据名5VALUE OF数据名3 IS ,数据名4 IS常量1 常量2 [CODE CHARACTERS]REPORT IS报表名1 [,报表名2]…REPORTS ARE(2)报表节:在本节中对报表编制功能进行详细描述,一般格式为REPORT SECTION[ RD 报表名CODE 字符串CONTROL IS 数据名1 , [数据名2] ……CONTROLS ARE FINAL, [数据名1] , [数据名2] ……LIMIT IS LINEPAGE 整数1 [ , HEADING整数2 ] LIMITS ARE LINES[FIRST DETAIL整数3] [, LAST DETAIL整数4][ , FOOTING整数5] ]{ 报表描述体 } …… ] …2.在过程部中的描述(1)INITIATE语句(初始化语句)INITIATE 报表名1 [,报表名2]…此语句的作用是是这些报表的求和计数器和行计数器置零。
COBOL基础操作

AHEADETP MF4组1班COBOL上机实验报告姓名:编号:CN0001日期: 2011.02.XXListCOBOL Exercise (3)1. HELLO (3)2. ACCEPT1 (5)3. READ1 (12)4. WRITE (14)5. SIGN1 (21)6. STRING (25)7. DATE1 (29)8. PARM1 (32)9. COPY1 (36)10. SUBPROGRAM (38)11. TABLE1 (45)12. SEARCH1 (52)13. SORT1 (54)14. SEQ1000 (57)15. SEQ2000 (60)16. RPT1000 (63)COBOL Exercise1.HELLO这是一个入门程序,功能是显示:“HELLO WORLD”创建CN0001.COBLE.LOADLIB 的PDS数据集文件:COBOL语言编译的HELLO源程序代码,源代码如图:文件名为COMPILE的JCL文件源代码如图:文件名为GOHELLO的JCL文件源代码如图:2.ACCEPT1这个程序主要是学习ACCEPT语句,该语句主要用于接收数据,当用户从终端上输入数据时,这些数据将通过ACCEPT语句保存到相应变量中。
文件名为ACCEPT1的COBOL文件源代码如图:运行后结果如图:运行文件名为GACCEPT1的JCL文件源代码如图:运行结果如图:COMPUTE1和COMPUTE2利用ACCEPT语句接受数据,然后进行简单的运算。
COMPUTE1:COBOL代码如图:把文件名为COMPILE 的JCL文件SUB,使相应的COBOL变为可执行文件,运行后如图:编写Gcompute1的JCL源程序代码文件,它可调用上步生成的可执行文件,源代码如图:运行后结果如下图:COBOL代码如图:把文件名为COMPILE 的JCL文件SUB,使相应的COBOL变为可执行文件,运行后如图:编写文件名为Gcompute2的JCL源程序代码文件,它可调用上步生成的可执行文件,源代码如图:对接收的值N.的一系列运算过程参照相应的COBOL程序,如下图:运行后值=【(12+3)/5 – 2 】* 8=08,下图为运行结果:3.READ1这个程序主要是学习READ语句,该语句用于从文件中读取数据。
大型机-COBOL大作业-COBOL练习汇总

Cobol大作业班级姓名学号2011-4-25实验目的1.学会编写COBOL程序对输入数据按指定的要求处理,得到符合要求的规范的报表。
2.熟练掌握COBOL中文件处理的方式,使用READ和WRITE对文件中的记录进行读取和处理。
3.会使用SORT和MERGE对文件及其数据进行处理,实现文件中数据的排序以及多个文件的合并操作。
4.会使用TABLE对数据进行处理,掌握对TABLE中的数据的访问。
5.掌握PERFORM语句的使用,包括对数据的访问核对循环的处理。
6.了解系统函数的使用方法及其功能,在必要的时候调用系统函数,实现对应的功能。
7.学会对数据进行正确处理,包括怎样定义数据及处理异常数据等。
实验内容1.编辑一个关于公司销售情况输入文件,输入文件包含的数据记录有分公司号、销售代表号、分公司名、当年销售情况、去年销售情况,将公司的销售情况按指定格式做一个统计然后输出到指定文件中。
2.更新数据时,将原来的输入文件与更新的数据进行合并,得到一个新的输入文件,仍旧按指定的格式处理输入数据后输出到指定文件中。
3.使用表处理,将文件中相似的记录用表实现,使处理的过程更加方便。
4.处理数据的异常情况,包括数据错误、溢出的情况。
设计过程1.在编辑数据的过程,使用了READ和WRITE对文件进行了操作,读取输入文件中的数据并进行处理。
2.编辑数据时,使用了表对文件中的记录进行存储和处理,并按指定格式输出编辑后的结果。
3.在数据处理的过程中,会检测数据的合法性,对于不合法的数据报错或进行相应的其它处理。
4.更新数据时,创建一个用于存放更新数据的文件COBOL.UPDATE、一个中间文件COBOL.MERGE和一个用于存放输出结果COBOL.UPINPUT的文件,将输入文件中的数据进行更新后结果存放在创建的新文件COBOL.UPINPUT 中。
实验步骤1.编写代码,实现对输入文件COBOL.INPUT的处理,输入文件中的数据如下:2.程序的主要处理过程如下:3.编译程序,运行成功后,在COBOL.OUTPUT中查看输出结果,得到处理后的报表,如下:3.创建数据集COBOL.UPDATE、COBOL.UPINPUT,分别存放需要更新的数据和更新后得到的数据,COBOL.UPDATE中的数据如下:4.将输入数据集更新后得到一个新的数据集,更新的数据存放在COBOL.UPINPUT中,在源程序中需要对输入数据集进行处理,以得到更新后的数据,处理的过程如下:5.更新后运行程序,在COBOL.UPINPUT中便得到了一个新的输入文件,内容如下,可以看到,输入数据中增加了更新后的内容。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
COBOL实验报告2一,实验目的1,能够利用cobol程序实现一个报表的编辑和制作。
2,能够对文件进行操作,比如说:打开,关闭,读和写3,了解COBOL的常用语句和一些常用的数据类型,能够利用编辑型数据实现数据的友好输出。
4,能够运用sdsf修改程序中的错误5,学会编写稍微复杂的COBOL程序。
二,实验原理和内容1,修改UTE20.COBOL.MURACH.EXERCISE(RPT1000X) 使之正常运行。
2,在RPT1000原有基础上改进成增强的报表打印程序。
3,利用给定的数据和格式独立的制作一个报表三,实验环境PC机和TSO下的ISPF环境四,实验步骤1,步骤1和步骤2:修改UTE20.COBOL.MURACH.EXERCISE(RPT1000X) 使之正常运行,并在此基础上改进成增强型的报表打印程序。
1.1 代码:000100 IDENTIFICATION DIVISION.000200000300 PROGRAM-ID. RPT1000.000400000500 ENVIRONMENT DIVISION.000600000700 INPUT-OUTPUT SECTION.000800000900 FILE-CONTROL.001000001100 SELECT CUSTMAST ASSIGN TO CUSTMAST.001200 SELECT SALESRPT ASSIGN TO SALESRPT.001300001400 DATA DIVISION.001500001600 FILE SECTION.001700001800 FD CUSTMAST.001900002000 01 CUSTOMER-MASTER-RECORD.002100 05 CM-BRANCH-NUMBER PIC 9(2).002200 05 CM-SALESREP-NUMBER PIC 9(2).002300 05 CM-CUSTOMER-NUMBER PIC 9(5).002400 05 CM-CUSTOMER-NAME PIC X(20). 002500 05 CM-SALES-THIS-YTD PIC S9(5)V9(2). 002600 05 CM-SALES-LAST-YTD PIC S9(5)V9(2). 002700002800 FD SALESRPT.002900003000 01 PRINT-AREA PIC X(132).003100003200 WORKING-STORAGE SECTION.003300003400 01 SWITCHES.003500 05 CUSTMAST-EOF-SWITCH PIC X VALUE "N". 003600003700 01 PRINT-FIELDS.003800 05 PAGE-COUNT PIC S9(3) VALUE ZERO. 003900 05 LINES-ON-PAGE PIC S9(3) VALUE +55.004000 05 LINE-COUNT PIC S9(3) VALUE +99.004100 05 SPACE-CONTROL PIC S9.004200004300 01 TOTAL-FIELDS.004400 05 GRAND-TOTAL-THIS-YTD PIC S9(7)V99 VALUE ZERO.004500 05 GRAND-TOTAL-LAST-YTD PIC S9(7)V99 VALUE ZERO.00460001 CALCULATED-FILEDS.05 CHANGE-AMOUNT PIC S9(5)V99.004700 01 CURRENT-DATE-AND-TIME.004800 05 CD-YEAR PIC 9999.004900 05 CD-MONTH PIC 99.005000 05 CD-DAY PIC 99.005100 05 CD-HOURS PIC 99.005200 05 CD-MINUTES PIC 99.005300 05 FILLER PIC X(9).005400005500 01 HEADING-LINE-1.005600 05 FILLER PIC X(7) VALUE "DATE: ". 005700 05 HL1-MONTH PIC 9(2).005800 05 FILLER PIC X(1) VALUE "/".005900 05 HL1-DAY PIC 9(2).006000 05 FILLER PIC X(1) VALUE "/".006100 05 HL1-YEAR PIC 9(4).006200 05 FILLER PIC X(11) VALUE SPACE.006300 05 FILLER PIC X(20) VALUE "YEAR-TO-DATE SALES R".006400 05 FILLER PIC X(20) VALUE "EPORT ".006500 05 FILLER PIC X(8) VALUE " PAGE: ". 006600 05 Hl1-PAGE-NUMBER PIC ZZZ9.006700 05 FILLER PIC X(52) VALUE SPACE.006800006900 01 HEADING-LINE-2.007000 05 FILLER PIC X(7) VALUE "TIME: ". 007100 05 HL2-HOURS PIC 9(2).007200 05 FILLER PIC X(1) VALUE ":".007300 05 HL2-MINUTES PIC 9(2).007400 05 FILLER PIC X(58) VALUE SPACE.007500 05 FILLER PIC X(10) VALUE "RPT1000". 007600 05 FILLER PIC X(52) VALUE SPACE.007700007800 01 HEADING-LINE-3.007900 05 FILLER PIC X(20) VALUE "CUST ". 008000 05 FILLER PIC X(20) VALUE " SALES ". 008100 05 FILLER PIC X(20) VALUE " SALES ".05 FILLER PIC X(20) VALUE "CHANGE CHANGE ". 008200 05 FILLER PIC X(52) VALUE SPACE.008300008400 01 HEADING-LINE-4.008500 05 FILLER PIC X(20) VALUE "NUM CUSTOMER NAME".008600 05 FILLER PIC X(20) VALUE " THIS YTD ".008700 05 FILLER PIC X(20) VALUE " LAST YTD ".05 FILLER PIC X(20) VALUE "AMOUNT PERCENT ". 008800 05 FILLER PIC X(52) VALUE SPACE.008900009000 01 CUSTOMER-LINE.009100 05 CL-CUSTOMER-NUMBER PIC 9(5).009200 05 FILLER PIC X(2) VALUE SPACE. 009300 05 CL-CUSTOMER-NAME PIC X(20).009400 05 FILLER PIC X(3) VALUE SPACE.009500 05 CL-SALES-THIS-YTD PIC ZZ,ZZ9.99-. 009600 05 FILLER PIC X(4) VALUE SPACE. 009700 05 CL-SALES-LAST-YTD PIC ZZ,ZZ9.99-.05 FILLER PIC X(4) VALUE SPACE.05 CL-CHANGE-AMOUNT PIC ZZ,ZZ9.99-.05 FILLER PIC X(3) VALUE SPACE.05 CL-CHANGE-PERCENT PIC ZZ9.9-.009800 05 FILLER PIC X(55) VALUE SPACE. 009900010000 01 GRAND-TOTAL-LINE.010100 05 FILLER PIC X(27) VALUE SPACE. 010200 05 GTL-SALES-THIS-YTD PIC Z,ZZZ,ZZ9.99-. 010300 05 FILLER PIC X(1) VALUE SPACE. 010400 05 GTL-SALES-LAST-YTD PIC Z,ZZZ,ZZ9.99-.05 FILLER PIC X(1) VALUE SPACE.05 GTL-CHANGE-AMOUNT PIC Z,ZZZ,ZZ9.99-.05 FILLER PIC X(3) VALUE SPACE.05 GTL-CHANGE-PERCENT PIC ZZ9.9-.010500 05 FILLER PIC X(55) VALUE SPACE. 010600010700 PROCEDURE DIVISION.010800010900 000-PREPARE-SALES-REPORT.011000011100 OPEN INPUT CUSTMAST011200 OUTPUT SALESRPT.011300 PERFORM 100-FORMAT-REPORT-HEADING.011400 PERFORM 200-PREPARE-SALES-LINES011500 UNTIL CUSTMAST-EOF-SWITCH = "Y".011600 PERFORM 300-PRINT-GRAND-TOTALS.011700 CLOSE CUSTMAST011800 SALESRPT.011900 STOP RUN.012000012100 100-FORMAT-REPORT-HEADING.012200012300 MOVE FUNCTION CURRENT-DATE TOCURRENT-DATE-AND-TIME.012400 MOVE CD-MONTH TO HL1-MONTH.012500 MOVE CD-DAY TO HL1-DAY.012600 MOVE CD-YEAR TO HL1-YEAR.012700 MOVE CD-HOURS TO HL2-HOURS.012800 MOVE CD-MINUTES TO HL2-MINUTES.012900013000 200-PREPARE-SALES-LINES.013100013200 PERFORM 210-READ-CUSTOMER-RECORD.013300 IF CUSTMAST-EOF-SWITCH = "N"IF CM-SALES-THIS-YTD >= 10000013400 PERFORM 220-PRINT-CUSTOMER-LINE.013500013600 210-READ-CUSTOMER-RECORD.013700013800 READ CUSTMAST013900 AT END014000 MOVE "Y" TO CUSTMAST-EOF-SWITCH.014100014200 220-PRINT-CUSTOMER-LINE.014300014400 IF LINE-COUNT >= LINES-ON-PAGE014500 PERFORM 230-PRINT-HEADING-LINES.014600 MOVE CM-CUSTOMER-NUMBER TO CL-CUSTOMER-NUMBER.014700 MOVE CM-CUSTOMER-NAME TO CL-CUSTOMER-NAME.014800 MOVE CM-SALES-THIS-YTD TO CL-SALES-THIS-YTD.014900 MOVE CM-SALES-LAST-YTD TO CL-SALES-LAST-YTD.COMPUTE CHANGE-AMOUNT =CM-SALES-THIS-YTD - CM-SALES-LAST-YTD.MOVE CHANGE-AMOUNT TO CL-CHANGE-AMOUNT.IF CM-SALES-LAST-YTD = ZEROMOVE 999.9 TO CL-CHANGE-PERCENTELSECOMPUTE CL-CHANGE-PERCENT ROUNDED =CHANGE-AMOUNT * 100 / CM-SALES-LAST-YTDON SIZE ERRORMOVE 999.9 TO CL-CHANGE-PERCENT.015000 MOVE CUSTOMER-LINE TO PRINT-AREA.015100 WRITE PRINT-AREA AFTER ADVANCING SPACE-CONTROL LINES.015200 ADD 1 TO LINE-COUNT.015300 ADD CM-SALES-THIS-YTD TO GRAND-TOTAL-THIS-YTD. 015400 ADD CM-SALES-LAST-YTD TO GRAND-TOTAL-LAST-YTD. 015500 MOVE 1 TO SPACE-CONTROL.015600015700 230-PRINT-HEADING-LINES.015800015900 ADD 1 TO PAGE-COUNT.016000 MOVE PAGE-COUNT TO HL1-PAGE-NUMBER. 016100 MOVE HEADING-LINE-1 TO PRINT-AREA.016200 WRITE PRINT-AREA AFTER ADVANCING PAGE.016300 MOVE HEADING-LINE-2 TO PRINT-AREA.016400 WRITE PRINT-AREA AFTER ADVANCING 1 LINES. 016500 MOVE HEADING-LINE-3 TO PRINT-AREA.016600 WRITE PRINT-AREA AFTER ADVANCING 2 LINES. 016700 MOVE HEADING-LINE-4 TO PRINT-AREA.016800 WRITE PRINT-AREA AFTER ADVANCING 1 LINES. 016900 MOVE ZERO TO LINE-COUNT.017000 MOVE 2 TO SPACE-CONTROL.017100017200 300-PRINT-GRAND-TOTALS.017300017400 MOVE GRAND-TOTAL-THIS-YTD TO GTL-SALES-THIS-YTD. 017500 MOVE GRAND-TOTAL-LAST-YTD TO GTL-SALES-LAST-YTD.COMPUTE CHANGE-AMOUNT =GRAND-TOTAL-THIS-YTD - GRAND-TOTAL-LAST-YTD.MOVE CHANGE-AMOUNT TO GTL-CHANGE-AMOUNT.IF GRAND-TOTAL-LAST-YTD = ZEROMOVE 999.9 TO GTL-CHANGE-PERCENTELSECOMPUTE GTL-CHANGE-PERCENT ROUNDED =CHANGE-AMOUNT * 100 / GRAND-TOTAL-LAST-YTDON SIZE ERRORMOVE 999.9 TO GTL-CHANGE-PERCENT 017600 MOVE GRAND-TOTAL-LINE TO PRINT-AREA. 017700 WRITE PRINT-AREA AFTER ADVANCING 2 LINES.1.2 输入与输出。