大型机COBOL程序之简易报表打印_第1页
大型机COBOL程序之简易报表打印_第2页
大型机COBOL程序之简易报表打印_第3页
大型机COBOL程序之简易报表打印_第4页
大型机COBOL程序之简易报表打印_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 COBOL实验报告2一, 实验目的1, 能够利用cobol程序实现一个报表的编辑和制作。2, 能够对文件进行操作,比如说:打开,关闭,读和写 3, 了解COBOL的常用语句和一些常用的数据类型, 能够利用编辑型数据实现数据的友好输出。 4, 能够运用sdsf修改程序中的错误 5, 学会编写稍微复杂的COBOL程序。二, 实验原理和内容1,修改 UTE20.COBOL.MURACH.EXERCISE(RPT1000X) 使之正常运行。 2,在RPT1000原有基础上改进成增强的报表打印程序。 3, 利用给定的数据和格式独立的制作一个报表三,实验环境PC机和TSO下的ISPF环境四, 实验步骤

2、1, 步骤1和 步骤2:修改 UTE20.COBOL.MURACH.EXERCISE(RPT1000X) 使之正常运行,并在此基础上改进成增强型的报表打印程序。 1.1 代码:000100 IDENTIFICATION DIVISION. 000200 000300 PROGRAM-ID. RPT1000. 000400 000500 ENVIRONMENT DIVISION. 000600 000700 INPUT-OUTPUT SECTION. 000800 000900 FILE-CONTROL. 001000 001100 SELECT CUSTMAST ASSIGN TO CUSTM

3、AST. 001200 SELECT SALESRPT ASSIGN TO SALESRPT. 001300 001400 DATA DIVISION. 001500 001600 FILE SECTION. 001700 001800 FD CUSTMAST. 001900 002000 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

4、-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). 002700 002800 FD SALESRPT. 002900 003000 01 PRINT-AREA PIC X(132). 003100 003200 WORKING-STORAGE SECTION. 003300 003400 01 SWITCHES. 003500 05 CUSTMAST-EOF-SWITCH PIC X VALUE N. 003600 0

5、03700 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. 004200 004300 01 TOTAL-FIELDS. 004400 05 GRAND-TOTAL-THIS-YTD PIC S9(7)V99 VALUE ZERO. 004500 05 GRAND-TOTAL-LAST-Y

6、TD PIC S9(7)V99 VALUE ZERO. 004600 01 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). 005400 005500 01

7、 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

8、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. 006800 006900 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 :

9、. 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. 007700 007800 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

10、 SALES . 05 FILLER PIC X(20) VALUE CHANGE CHANGE .008200 05 FILLER PIC X(52) VALUE SPACE. 008300 008400 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 PERCEN

11、T .008800 05 FILLER PIC X(52) VALUE SPACE. 008900 009000 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)

12、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.009900 010000 01 GRAND-TOTAL-LINE. 010100 05 FILLER PIC X(27) VALUE SPA

13、CE.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

14、) VALUE SPACE.010600 010700 PROCEDURE DIVISION. 010800 010900 000-PREPARE-SALES-REPORT. 011000 011100 OPEN INPUT CUSTMAST 011200 OUTPUT SALESRPT. 011300 PERFORM 100-FORMAT-REPORT-HEADING. 011400 PERFORM 200-PREPARE-SALES-LINES 011500 UNTIL CUSTMAST-EOF-SWITCH = Y. 011600 PERFORM 300-PRINT-GRAND-TOTA

15、LS. 011700 CLOSE CUSTMAST 011800 SALESRPT. 011900 STOP RUN. 012000 012100 100-FORMAT-REPORT-HEADING. 012200 012300 MOVE FUNCTION CURRENT-DATE TO CURRENT-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.

16、 012800 MOVE CD-MINUTES TO HL2-MINUTES. 012900 013000 200-PREPARE-SALES-LINES. 013100 013200 PERFORM 210-READ-CUSTOMER-RECORD. 013300 IF CUSTMAST-EOF-SWITCH = N IF CM-SALES-THIS-YTD = 10000 013400 PERFORM 220-PRINT-CUSTOMER-LINE. 013500 013600 210-READ-CUSTOMER-RECORD. 013700 013800 READ CUSTMAST 01

17、3900 AT END 014000 MOVE Y TO CUSTMAST-EOF-SWITCH.014100 014200 220-PRINT-CUSTOMER-LINE. 014300 014400 IF LINE-COUNT = LINES-ON-PAGE 014500 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

18、-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 = ZERO MOVE 999.9 TO CL-CHANGE-PERCENT ELSE COMPUTE CL-CHANGE-PERCENT ROUNDED = CHANGE-AMOUNT * 1

19、00 / CM-SALES-LAST-YTD ON SIZE ERROR MOVE 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-LAS

20、T-YTD. 015500 MOVE 1 TO SPACE-CONTROL. 015600 015700 230-PRINT-HEADING-LINES. 015800 015900 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 P

21、RINT-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. 017100 017200 300-P

22、RINT-GRAND-TOTALS. 017300 017400 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 = ZERO MOVE 999.9 TO GTL-CHAN

23、GE-PERCENT ELSE COMPUTE GTL-CHANGE-PERCENT ROUNDED = CHANGE-AMOUNT * 100 / GRAND-TOTAL-LAST-YTD ON SIZE ERROR MOVE 999.9 TO GTL-CHANGE-PERCENT 017600 MOVE GRAND-TOTAL-LINE TO PRINT-AREA. 017700 WRITE PRINT-AREA AFTER ADVANCING 2 LINES. 1.2 输入与输出。输出结果:输入数据集:1.3 结果分析此程序的过程调用大致为: 000PREPARESALESREPORT2

24、00PREPARESALESLINES100INITIALIZATIONHEADINGDATE-TIME300PRINTGRANDLINES220PRINTFRIENDLYRECORD230PRINTHEADINGLINES210PREPAREFILESRECORD写比较复杂的COBOL程序时,应当先设计好输入输出文件的对应关系,能够理清里面的数据,能够利用数值型来计算数据和能够利用编辑型数据用来输出;还有程序的核心过程部,最好先搞清楚程序的基本架构和其段与段之间的掉用关系,不会搞错逻辑关系。2 步骤2 利用给出的数据和结构编辑报表2.1 代码 标识部和环境部 ID DIVISION. PRO

25、GRAM-ID. PRITABLE. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT CUSTMAST ASSIGN CUSTMAST. SELECT TABPRINT ASSIGN TABPRINT. 数据部 DATA DIVISION. FILE SECTION. FD CUSTMAST. 01 CUSTOMER-MASTER-RECORD. 05 CM-SPACE-1 PIC X. 05 CM-ACCOUNT-NUMBER PIC 9(5). 05 CM-SPACE-2 PIC X(3). 05 CM-SA

26、LES-AMOUNT PIC S9(5)V9(2). 05 CM-SPACE-3 PIC X(64). FD TABPRINT. 01 TABLE-PRINT-RECORD PIC X(80). WORKING-STORAGE SECTION. 01 SWITCHES. 05 CUSTMAST-EOF-SWITCH PIC X VALUE N. 01 CURRENT-DATE-AND-TIME. 05 CD-YEAR PIC 9999. 05 CD-MONTH PIC 99. 05 CD-DAY PIC 99. 05 CD-HOURS PIC 99. 05 CD-MINUTES PIC 99.

27、 05 FILLER PIC X(9). 01 PRINT-FIELDS. 05 PAGE-COUNT PIC S9(3) VALUE ZERO. 05 LINES-ON-PAGE PIC S9(3) VALUE +17. 05 LINE-COUNT PIC S9(3) VALUE +99. 05 SPACE-CONTROL PIC S9. 01 TOTAL-FIELDS. 05 SALES-AMOUNT-TOTAL PIC S9(7)V99 VALUE ZERO. 05 DISCOUNT-AMOUNT-TOTAL PIC S9(5)V99 VALUE ZERO. 05 NET-AMOUNT-

28、TOTAL PIC S9(7)V99 VALUE ZERO. 01 HEADING-LINE-1. 05 FILLER PIC X(32) VALUE SPACE. 05 FILLER PIC X(15) VALUE EMPLOYEE REPORT. 05 FILLER PIC X(23) VALUE SPACE. 05 FILLER PIC X(7) VALUE PAGES: . 05 HL1-PAGE-NUMBER PIC ZZ9. 01 HEADING-LINE-2. 05 FILLER PIC X(7) VALUE DATE: . 05 HL2-YEAR PIC 9(4). 05 FILLER PIC X(1) VALUE /. 05 HL2-MONTH PIC 9(2). 05 FILLER PIC X(1) VALUE /. 05 HL2-DAY PIC 9(2). 05 FILLER PIC X(63) VALUE SPACE. 01 HEADING-LINE-3. 05 FILLER PIC X(7) VALUE TIME: . 05 HL3-HOURS PIC 9(2). 05 FILLER PIC X(1) VALUE :.

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论