COBOL程序中的语法错误,如果是,则意外

时间:2016-02-08 02:51:36

标签: if-statement syntax-error cobol

我在COBOL编码,在添加下面列出的if语句之后,我一直在学习 " 在段落'000-main'中: 错误:语法错误,意外的错误"

fileName

在我添加下面的if语句之前,所有内容都在编译。

   Identification Division.
   Program-ID. Lab2.   
  *This program will generate a statement for a single investment
  *that compounds interest monthly.
  *  It will prompt use for 3 inputs, calculate total interest
  *  earned, final balance, & entire account balance schedule.
  *  It will then display all output to the console.
   Environment Division.
   Data Division.
   Working-Storage Section.
   01  invest-amt     pic S9(9)V99.

   01  invest-error-msg      pic x(40) value "Investment "
   &     "Amount must be positive".

   01  int-rate        pic S9(2)V99.
   01  int-rate-error-msg    pic x(40) value "Annual Interest "
   &     "Rate must be positive".

   01  int-rate-final  pic 9V99999.


   01  num-months   pic S9(3).
   01  num-months-error-msg  pic x(40) value "Number of Months "
   &     "must be positive".  

   01  multiply-rate pic 9V99999.

   01  blank-line     pic x value " ".


   01  month-counter   pic 99 value 1.
   01  balance-month   pic 9(9)V99.
   01  interest-month  pic 9(9)V99.

   01  total-interest  pic 9(9)V99.
   01  final-balance   pic 9(9)V99.

   01  additional-value  pic S9(9)V99.
   01  add-value-error-msg  pic x(40) value "Additional Value "
   &     "must be positive".  
   01  Q           pic 9(3).
   01  R           pic 9(3).
   01  months-in-year pic 9(2) Value 12.


   Procedure Division.
   000-main.
       perform 100-initialize

       perform until invest-amt >=0 
          display invest-error-msg
          perform 200-input
       end-perform

       perform 210-input-rate

       perform until int-rate >=0
          display int-rate-error-msg
          perform 210-input-rate
       end-perform

       perform 220-input-month

       perform until num-months >=0
          display num-months-error-msg
          perform 220-input-month
       end-perform

       perform 230-input-additional-value

       perform until additional-value >=0
          display add-value-error-msg
          perform 230-input-additional-value
       end-perform

       perform 300-print-words

       perform 400-process-interest
       perform 310-print-values
       display blank-line

       perform until month-counter = num-months
          add 1 to month-counter

          Divide month-counter By months-in-year Giving Q Remainder R

2 个答案:

答案 0 :(得分:3)

我的编译器抱怨缺少end-if并且不喜欢& 。我以明显的方式解决了& 问题。

end-if之后插入Add additional-value to balance-month似乎产生了一个干净的编译。当然,最终的end-perform需要一个句号

末端执行

我怀疑您的编译器正在生成该消息,因为您的if语句格式不正确。

答案 1 :(得分:0)

我没有编译你的代码。

您缺少IF语句的END-IF。 您还应该进行“停止运行”。在你的程序中。 例如......

 perform until month-counter = num-months
      add 1 to month-counter

      Divide month-counter By months-in-year Giving Q Remainder R
      if ( (num-months> months-in-year) & (R=0))
         Add additional-value to balance-month
      end-if ******* <- YOU NEED THIS
      multiply month-counter by months-in-year 

      add interest-month to balance-month rounded
      perform 400-process-interest
      perform 310-print-values
      display blank-line
   end-perform
  STOP RUN. *** <- THIS WOULD BE NICE AS WELL.