大型机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下的I

2、SPF环境四, 实验步骤 1, 步骤1和 步骤2:修改 UTE20.COBOL.MURACH.EXERCISE(RPT1000X) 使之正常运行,并在此基础上改进成增强型的报表打印程序。 1.1 代码: IDENTIFICATION DIVISION. PROGRAM-ID. RPT1000. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT CUSTMAST ASSIGN TO CUSTMAST. SELECT SALESRPT ASSIGN TO SALESRPT. DATA DIVISION. FILE SE

3、CTION. FD CUSTMAST. 01 CUSTOMER-MASTER-RECORD. 05 CM-BRANCH-NUMBER PIC 9(2). 05 CM-SALESREP-NUMBER PIC 9(2). 05 CM-CUSTOMER-NUMBER PIC 9(5). 05 CM-CUSTOMER-NAME PIC X(20). 05 CM-SALES-THIS-YTD PIC S9(5)V9(2). 05 CM-SALES-LAST-YTD PIC S9(5)V9(2). FD SALESRPT. 01 PRINT-AREA PIC X(132). WORKING-STORAGE

4、 SECTION. 01 SWITCHES. 05 CUSTMAST-EOF-SWITCH PIC X VALUE N. 01 PRINT-FIELDS. 05 PAGE-COUNT PIC S9(3) VALUE ZERO. 05 LINES-ON-PAGE PIC S9(3) VALUE +55. 05 LINE-COUNT PIC S9(3) VALUE +99. 05 SPACE-CONTROL PIC S9. 01 TOTAL-FIELDS. 05 GRAND-TOTAL-THIS-YTD PIC S9(7)V99 VALUE ZERO. 05 GRAND-TOTAL-LAST-YT

5、D PIC S9(7)V99 VALUE ZERO. 01 CALCULATED-FILEDS. 05 CHANGE-AMOUNT PIC S9(5)V99. 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. 05 FILLER PIC X(9). 01 HEADING-LINE-1. 05 FILLER PIC X(7) VALUE DATE: . 05 HL1-MONTH PIC 9(2)

6、. 05 FILLER PIC X(1) VALUE /. 05 HL1-DAY PIC 9(2). 05 FILLER PIC X(1) VALUE /. 05 HL1-YEAR PIC 9(4). 05 FILLER PIC X(11) VALUE SPACE. 05 FILLER PIC X(20) VALUE YEAR-TO-DATE SALES R. 05 FILLER PIC X(20) VALUE EPORT . 05 FILLER PIC X(8) VALUE PAGE: . 05 Hl1-PAGE-NUMBER PIC ZZZ9. 05 FILLER PIC X(52) VA

7、LUE SPACE. 01 HEADING-LINE-2. 05 FILLER PIC X(7) VALUE TIME: . 05 HL2-HOURS PIC 9(2). 05 FILLER PIC X(1) VALUE :. 05 HL2-MINUTES PIC 9(2). 05 FILLER PIC X(58) VALUE SPACE. 05 FILLER PIC X(10) VALUE RPT1000. 05 FILLER PIC X(52) VALUE SPACE. 01 HEADING-LINE-3. 05 FILLER PIC X(20) VALUE CUST . 05 FILLE

8、R PIC X(20) VALUE SALES . 05 FILLER PIC X(20) VALUE SALES . 05 FILLER PIC X(20) VALUE CHANGE CHANGE . 05 FILLER PIC X(52) VALUE SPACE. 01 HEADING-LINE-4. 05 FILLER PIC X(20) VALUE NUM CUSTOMER NAME. 05 FILLER PIC X(20) VALUE THIS YTD . 05 FILLER PIC X(20) VALUE LAST YTD . 05 FILLER PIC X(20) VALUE A

9、MOUNT PERCENT . 05 FILLER PIC X(52) VALUE SPACE. 01 CUSTOMER-LINE. 05 CL-CUSTOMER-NUMBER PIC 9(5). 05 FILLER PIC X(2) VALUE SPACE. 05 CL-CUSTOMER-NAME PIC X(20). 05 FILLER PIC X(3) VALUE SPACE. 05 CL-SALES-THIS-YTD PIC ZZ,ZZ9.99-. 05 FILLER PIC X(4) VALUE SPACE. 05 CL-SALES-LAST-YTD PIC ZZ,ZZ9.99-.

10、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-. 05 FILLER PIC X(55) VALUE SPACE. 01 GRAND-TOTAL-LINE. 05 FILLER PIC X(27) VALUE SPACE. 05 GTL-SALES-THIS-YTD PIC Z,ZZZ,ZZ9.99-. 05 FILLER PIC X(1) VALUE SPACE. 05 GTL-

11、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-. 05 FILLER PIC X(55) VALUE SPACE. PROCEDURE DIVISION. 000-PREPARE-SALES-REPORT. OPEN INPUT CUSTMAST OUTPUT SALESRPT. PERFORM 100-

12、FORMAT-REPORT-HEADING. PERFORM 200-PREPARE-SALES-LINES UNTIL CUSTMAST-EOF-SWITCH = Y. PERFORM 300-PRINT-GRAND-TOTALS. CLOSE CUSTMAST SALESRPT. STOP RUN. 100-FORMAT-REPORT-HEADING. MOVE FUNCTION CURRENT-DATE TO CURRENT-DATE-AND-TIME. MOVE CD-MONTH TO HL1-MONTH. MOVE CD-DAY TO HL1-DAY. MOVE CD-YEAR TO

13、 HL1-YEAR. MOVE CD-HOURS TO HL2-HOURS. MOVE CD-MINUTES TO HL2-MINUTES. 200-PREPARE-SALES-LINES. PERFORM 210-READ-CUSTOMER-RECORD. IF CUSTMAST-EOF-SWITCH = N IF CM-SALES-THIS-YTD = 10000 PERFORM 220-PRINT-CUSTOMER-LINE. 210-READ-CUSTOMER-RECORD. READ CUSTMAST AT END MOVE Y TO CUSTMAST-EOF-SWITCH. 220

14、-PRINT-CUSTOMER-LINE. IF LINE-COUNT = LINES-ON-PAGE PERFORM 230-PRINT-HEADING-LINES. MOVE CM-CUSTOMER-NUMBER TO CL-CUSTOMER-NUMBER. MOVE CM-CUSTOMER-NAME TO CL-CUSTOMER-NAME. MOVE CM-SALES-THIS-YTD TO CL-SALES-THIS-YTD. MOVE CM-SALES-LAST-YTD TO CL-SALES-LAST-YTD. COMPUTE CHANGE-AMOUNT = CM-SALES-TH

15、IS-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 * 100 / CM-SALES-LAST-YTD ON SIZE ERROR MOVE 999.9 TO CL-CHANGE-PERCENT. MOVE CUSTOMER-LINE TO PRINT-AREA. WRITE PRIN

16、T-AREA AFTER ADVANCING SPACE-CONTROL LINES. ADD 1 TO LINE-COUNT. ADD CM-SALES-THIS-YTD TO GRAND-TOTAL-THIS-YTD. ADD CM-SALES-LAST-YTD TO GRAND-TOTAL-LAST-YTD. MOVE 1 TO SPACE-CONTROL. 230-PRINT-HEADING-LINES. ADD 1 TO PAGE-COUNT. MOVE PAGE-COUNT TO HL1-PAGE-NUMBER. MOVE HEADING-LINE-1 TO PRINT-AREA.

17、 WRITE PRINT-AREA AFTER ADVANCING PAGE. MOVE HEADING-LINE-2 TO PRINT-AREA. WRITE PRINT-AREA AFTER ADVANCING 1 LINES. MOVE HEADING-LINE-3 TO PRINT-AREA. WRITE PRINT-AREA AFTER ADVANCING 2 LINES. MOVE HEADING-LINE-4 TO PRINT-AREA. WRITE PRINT-AREA AFTER ADVANCING 1 LINES. MOVE ZERO TO LINE-COUNT. MOVE

18、 2 TO SPACE-CONTROL. 300-PRINT-GRAND-TOTALS. MOVE GRAND-TOTAL-THIS-YTD TO GTL-SALES-THIS-YTD. 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 GT

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

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

21、M-ID. PRITABLE. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT CUSTMAST ASSIGN CUSTMAST. SELECT TABPRINT ASSIGN TABPRINT. 2.1.2 数据部 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

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

23、99. 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-AMOU

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

25、 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 :. 05 HL3-MINUTES PIC 9(2). 05 FILLER PIC X(53) VALUE SPACE. 05 FILLE

26、R PIC X(10) VALUE PROGRAMER:. 05 FILLER PIC X(5) VALUE EDWIN. 01 HEADING-LINE-4. 05 FILLER PIC X(80) VALUE SPACE. 01 HEADING-LINE-5. 05 FILLER PIC X(7) VALUE ACCOUNT. 05 FILLER PIC X(5) VALUE SPACE. 05 FILLER PIC X(11) VALUE SALES . 05 FILLER PIC X(5) VALUE SPACE. 05 FILLER PIC X(8) VALUE DISCOUNT. 05 FILLER PIC X(5) VALUE SPACE. 05 FILLER PIC X(11) VALUE NET . 05 FILLER PIC X(28) VALUE SPACE. 01 HEADING-LINE-6. 05 FILLER PIC X(7) VALUE NUMBER . 05 FILLER PIC

温馨提示

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

评论

0/150

提交评论