COBOL编程实践1

来源:互联网 发布:关系数据库设计范式 编辑:程序博客网 时间:2024/06/06 02:53

问题描述:

读入一组产品销售记录,每读入一个记录,计算出销售总额(数量X单价).然后输出该产品的全部数据.数据形式如下:

           DATE    PRODCODE    CUST    QUANTITY    PRICE

          19921231   000001             AAAA      0100             5000

          19931231   100001             BBBB     0200             6000


 使得输出的数据形式如下:

           DATE              PROD-CODE  CUSTOMER-CODE QUANTITY  UNIT-PRICE SALES-VALUE

          1992 12 31     000001            AAAA                           0100            $5000             $500000

          1993 12 31     100001            BBBB                           0200             $6000             $1200000


编程要点:

1.数据部中数值型数据描述采用 B 控制空格而不是FILLER。

2.工作单元节中定义一个初始化静态数据项WS-INPUT-FILE-END 来控制程序结束。

3.PERFORM...THRU...需配套使用。

4.FILE1和FILE2需要自己新建。

新建一个COBOL程序,代码如下:

  1 000000 IDENTIFICATION DIVISION.  2 000000 PROGRAM-ID.    Z00000.  3 000000  4 000000 ENVIRONMENT DIVISION.  5 000000 CONFIGURATION SECTION.  6 000000 INPUT-OUTPUT SECTION.  7 000000 FILE-CONTROL.  8             SELECT INPUT-FILE ASSIGN TO "FILE1"  9 000000           ORGANIZATION IS LINE SEQUENTIAL 10                  ACCESS MODE  IS SEQUENTIAL 11                  FILE STATUS  IS WS-INPUT-FILE-STATUS. 12             SELECT OUTPUT-FILE ASSIGN TO "FILE2" 13                  ORGANIZATION IS LINE SEQUENTIAL 14                  ACCESS MODE  IS SEQUENTIAL 15                  FILE STATUS  IS WS-OUTPUT-FILE-STATUS. 16 17 000000 DATA DIVISION. 18 000000 FILE SECTION. 19        FD INPUT-FILE. 20        01 IN-REC. 21             05 IN-DATE      PIC 9(8). 22             05 IN-PROD-CODE PIC 9(6). 23             05 IN-CUSTOMER-CODE      PIC X(4). 24             05 IN-QUANTITY  PIC 9(4). 25             05 IN-UNIT-PRICE PIC 9(4). 26        FD OUTPUT-FILE. 27        01 OUT-REC. 28             05 OUT-DATE     PIC 9(4)B99B99B. 29             05 OUT-PROD-CODE PIC 9(6)B. 30             05 OUT-CUSTOMER-CODE PIC X(4)B. 31             05 OUT-QUANTITY PIC 9(4)B. 32             05 OUT-UNIT-PRICE PIC $9(4)B. 33             05 OUT-SALES-VALUE PIC $9(7). 34 000000 WORKING-STORAGE SECTION. 35             01 WS-VARIBLES. 36                  05 WS-INPUT-FILE-STATUS  PIC 9(2). 37                  05 WS-OUTPUT-FILE-STATUS PIC 9(2). 38             01 WS-INPUT-FILE-END          PIC X VALUE "N". 39 000000 40 000000 PROCEDURE DIVISION. 41 42 000000 A000-MIAN SECTION. 43             PERFORM A100-OPEN-FILE THRU A100-OPEN-FILE-EXIT. 44             PERFORM R000-READ-FILE THRU R000-READ-FILE-EXIT. 45             PERFORM A200-PROCESS-RECORD THRU A200-PROCESS-RECORD-EXIT 
 46                     UNTIL WS-INPUT-FILE-END = "Y". 47             PERFORM A300-CLOSE-FILE THRU A300-CLOSE-FILE-EXIT. 48        A000-MAIN-EXIT. 49             STOP RUN. 50 000000  51 000000 A100-OPEN-FILE. 52             OPEN INPUT INPUT-FILE. 53             OPEN OUTPUT OUTPUT-FILE. 54             INITIALIZE WS-VARIBLES. 55             DISPLAY WS-INPUT-FILE-STATUS. 56 57             IF WS-INPUT-FILE-STATUS NOT = 0 58                  DISPLAY "INPUT-FILE OPEN IS NOT SUCCESSFUL" 59                  PERFORM Z000-ABEND THRU Z000-ABEND-EXIT 60 000001      END-IF. 61             IF WS-OUTPUT-FILE-STATUS NOT = 0 62                  DISPLAY "OUTPUT-FILE OPEN IS NOT SUCCESSFUL" 63                  PERFORM Z000-ABEND THRU Z000-ABEND-EXIT 64 000002      END-IF. 65        A100-OPEN-FILE-EXIT. 66             EXIT. 67 000000 68 000000 A200-PROCESS-RECORD. 69             MOVE IN-DATE TO OUT-DATE. 70             MOVE IN-PROD-CODE TO OUT-PROD-CODE. 71             MOVE IN-CUSTOMER-CODE TO OUT-CUSTOMER-CODE. 72             MOVE IN-QUANTITY TO OUT-QUANTITY. 73             MOVE IN-UNIT-PRICE TO OUT-UNIT-PRICE. 74             COMPUTE OUT-SALES-VALUE = IN-QUANTITY * IN-UNIT-PRICE. 75             PERFORM W000-WRITE-FILE THRU W000-WRITE-FILE-EXIT. 76             PERFORM R000-READ-FILE THRU R000-READ-FILE-EXIT. 77        A200-PROCESS-RECORD-EXIT. 78             EXIT. 79 00000 80 000000 A300-CLOSE-FILE. 81             CLOSE INPUT-FILE. 82             CLOSE OUTPUT-FILE. 83        A300-CLOSE-FILE-EXIT. 84             EXIT. 85 000000 86 000000 R000-READ-FILE. 87             READ INPUT-FILE AT END 88                  MOVE "Y" TO WS-INPUT-FILE-END.
 89             DISPLAY "READ:" , WS-INPUT-FILE-STATUS. 90             IF (WS-INPUT-FILE-STATUS NOT = 0 AND 91                  WS-INPUT-FILE-STATUS NOT = 10) 92                  DISPLAY "IPUT-FILE READ IS NOT SUCCESSFUL" 93                  PERFORM Z000-ABEND THRU Z000-ABEND-EXIT 94 000003      END-IF. 95        R000-READ-FILE-EXIT. 96             EXIT. 97 000000 98 000000 W000-WRITE-FILE. 99             WRITE OUT-REC.100             DISPLAY  "WRITE:" , WS-INPUT-FILE-STATUS.101             IF (WS-OUTPUT-FILE-STATUS NOT = 0 AND102                  WS-OUTPUT-FILE-STATUS NOT = 10)103                  DISPLAY "OUTPUT-FILE WRITE IS NOT SUCCESSFUL"104                  PERFORM Z000-ABEND THRU Z000-ABEND-EXIT105 000004      END-IF.106        W000-WRITE-FILE-EXIT.107             EXIT.108 000000109 000000 Z000-ABEND.110             DISPLAY "PROGRAM ABEND".111             PERFORM A300-CLOSE-FILE THRU A300-CLOSE-FILE-EXIT.112        Z000-ABEND-EXIT.113             EXIT.


运行程序,运行成功后

将问题所给数据传入FILE1,同时编辑脚本文件

1 19921213000001AAAA01005000

2 19931213100001BBBB02006000


最后运行脚本文件,查看FILE2得到结果

   1 1992 12 13 000001 AAAA 0100 $5000 $0500000

  2 1993 12 13 100001 BBBB 0200 $6000 $1200000


编译成功的第一个COBOL程序,中途还是遇到了很多问题,光是查错就查了很久很久。继续努力吧。微笑

0 0
原创粉丝点击