首页 > 解决方案 > 建议对简单的 Cobol 程序进行改进

问题描述

我是一个“有抱负的”程序员,目前正在尝试学习 Cobol。下面的代码显然是一个非常简单的带有硬编码值的 Cobol 程序。但是我很想知道一个更有经验的 Cobol 程序员如何改进这样简单的程序。也许我错过了很多东西?

随意建议你将如何完成它。

   IDENTIFICATION DIVISION.
   
   ENVIRONMENT DIVISION.
   
   DATA DIVISION.
   
   WORKING-STORAGE SECTION.
   
   01  WORK-FIELDS.
       05  EMPTY-LINE      PIC X(132)  VALUE SPACES.
       
   01  HEADLINE.
       05      VALUE "Invoice Specification".
       
   01  FOOTER.

       05      VALUE "Invoice End".
    
   01  CALC-FIELDS.

           10  SPOILER           PIC 9(4).
           10  WINDSHIELD        PIC 9(3).
           10  PARTSUM           PIC 9(4).
           10  DISCOUNT          PIC 9(4).
           10  TO-PAY-EXKL       PIC 9(6).
           10  VAT               PIC 9(3).
           10  TOTAL-TO-PAY      PIC 9(4).

   
   01  PRINT-FIELDS.
           
       05  GROUP-1.
           10                  PIC X(36)
           VALUE  "01 SPOILER left-front, 1250:-".
           10  SPOILER-EDITED PIC Z,ZZZ.99.
           10                  PIC X(2)    VALUE ":-".
 
       05  GROUP-2.
           10                  PIC X(36)
           VALUE  "02 Windshield, 390:-".
           10  WINDSHIELD-EDITED PIC Z,ZZZ.99.
           10                  PIC X(2)    VALUE ":-".

       05  GROUP-3.
           10                  PIC X(36)
           VALUE  "Part Sum".
           10  PARTSUM-EDITED PIC Z,ZZZ.99.
           10                  PIC X(2)    VALUE ":-".
           
       05  GROUP-4.
           10                  PIC X(36)
           VALUE  "Discount 15%".
           10  DISCOUNT-EDITED   PIC Z,ZZZ.99.
           10                  PIC X(2)    VALUE ":-".
           
       05  GROUP-5.
           10                  PIC X(36)
           VALUE  "To Pay exkl VAT".
           10  TO-PAY-EDITED   PIC Z,ZZZ.99.
           10                  PIC X(2)    VALUE ":-".
           
       05  GROUP-6.
           10                  PIC X(36)
           VALUE  "Added VAT 25%".
           10 VAT-EDITED      PIC Z,ZZZ.99.
           10                  PIC X(2)    VALUE ":-".
       
       05  GROUP-7.
           10                  PIC X(36)
           VALUE  "Total Amount to Pay".
           10                  PIC X(4)    VALUE "SEK ".
           10  TOTAL-EDITED   PIC Z,ZZZ.99.
           10                  PIC X(2)    VALUE ":-".
           

   PROCEDURE DIVISION.
   
   100-GENERATE-INVOICE.
       
       PERFORM 200-CALCULATE.
       PERFORM 300-PRINT-VALUES.
       
       STOP RUN.
       
   200-CALCULATE.
       
       MOVE 1250 TO SPOILER
       MOVE SPOILER TO SPOILER-EDITED
       MOVE 390  TO WINDSHIELD
       MOVE WINDSHIELD TO WINDSHIELD-EDITED
       
       ADD SPOILER WINDSHIELD TO PARTSUM
       MOVE PARTSUM TO PARTSUM-EDITED

       MULTIPLY PARTSUM BY 0.15 GIVING DISCOUNT
       MOVE DISCOUNT TO DISCOUNT-EDITED
       
       SUBTRACT DISCOUNT FROM PARTSUM GIVING TO-PAY-EXKL
       MOVE TO-PAY-EXKL TO TO-PAY-EDITED
       
       MULTIPLY TO-PAY-EXKL BY 0.25 GIVING VAT
       MOVE VAT TO VAT-EDITED
       
       MULTIPLY TO-PAY-EXKL BY 1.25 GIVING TOTAL-TO-PAY
       MOVE TOTAL-TO-PAY TO TOTAL-EDITED
       .
   
   300-PRINT-VALUES.
           
       DISPLAY HEADLINE
       DISPLAY EMPTY-LINE
       DISPLAY EMPTY-LINE
       DISPLAY GROUP-1
       DISPLAY GROUP-2
       DISPLAY GROUP-3
       DISPLAY GROUP-4
       DISPLAY GROUP-5
       DISPLAY GROUP-6
       DISPLAY EMPTY-LINE
       DISPLAY GROUP-7
       DISPLAY EMPTY-LINE
       DISPLAY EMPTY-LINE
       DISPLAY FOOTER
       .
      

标签: cobolgnucobol

解决方案


我们不知道这段代码的目的。需要考虑的事项:

  1. 确定目标
  2. 确定输入和输出
  3. 设计输入文件/数据库访问模式(顺序/随机/从标准开始...等)。
  4. 识别业务规则。
  5. 设计输出(你会只通过显示产生结果,你会更新数据库吗?你会打印报告吗?)
  6. 为预期的处理设计一个流程。
  7. 对所需部分进行编码。请注意,您上面的代码没有 PROCEDURE DIVISION。

也许这里的一些代码可以在已经存在的大量代码中提供帮助: 示例代码


推荐阅读