Нужна помощь с ошибкой синтаксиса (COBOL) - PullRequest
0 голосов
/ 09 декабря 2010

Я работаю над своим последним домашним заданием для COBOL в этом семестре, и меня сбивает синтаксическая ошибка, которая останавливает мой прогресс. Вот что я получил:

   ENVIRONMENT DIVISION.
   INPUT-OUTPUT SECTION.
   FILE-CONTROL.

       SELECT USED-CAR-FILE-OUT
           ASSIGN TO 'USED-CAR.RPT'
           ORGANIZATION IS LINE SEQUENTIAL.

   DATA DIVISION.
   FILE SECTION.

   FD  USED-CAR-FILE-OUT.
   01  USED-CAR-RECORD-OUT         PIC X(80).

   WORKING-STORAGE SECTION.
   01  ID-CODE                     PIC X(3).
   01  TOTAL-CASH-PAYMENT          PIC 9(5).
   01  MONTHLY-PAYMENT             PIC 9(4).
   01  NUMBER-OF-MONTHS            PIC 9(3).

   01  BALANCE-TOTAL               PIC S9(6)V99 VALUE ZEROS.

   01  INTEREST-EARNED             PIC S99V99   VALUE ZEROS.

   01  COMPARE-MONTH               PIC 99       VALUE ZEROS.

   01  YEAR-NUMBER                 PIC 99       VALUE ZEROS.

   01  MONTH-NUMBER                PIC 99       VALUE ZEROS.

   01  DETAIL-LINE.
       05  ID-CODE-DL              PIC X(3).
       05                          PIC X(3)    VALUE SPACES.
       05                          PIC X(4)    VALUE 'Yr='.
       05  YEAR-NUMBER-DL          PIC Z9      VALUE ZEROS.
       05                          PIC X(4)    VALUE SPACES.
       05                          PIC X(4)    VALUE 'Mo='.
       05  MONTH-NUMBER-DL         PIC Z9.
       05                          PIC X(4)    VALUE SPACES.
       05                          PIC X(5)    VALUE 'Pmt='.
       05  PAYMENT-DL              PIC $$$,$$$.
       05                          PIC X(4)    VALUE SPACES.
       05                          PIC X(5)    VALUE 'Int='.
       05  INTEREST-EARNED-DL      PIC $$$$.99.
       05                          PIC X(3)    VALUE SPACES.
       05                          PIC X(5)    VALUE 'Bal='.
       05  BALANCE-DL              PIC $$$,$$$.99.

   PROCEDURE DIVISION.
   100-MAIN.
       OPEN OUTPUT USED-CAR-FILE-OUT

       PERFORM 200-INPUT THRU 299-EXIT

       CLOSE USED-CAR-FILE-OUT
       STOP RUN.

   200-INPUT.
       DISPLAY 'Used Car Sales Report'
       DISPLAY 'Enter the ID Code (or END) - maximum three char.'
       ACCEPT ID-CODE
       IF ID-CODE = 'END'
           GO TO 299-EXIT
       END-IF
       DISPLAY 'Enter the Total Cash Payment - maximum five digits'
       ACCEPT TOTAL-CASH-PAYMENT
       DISPLAY 'Enter the Monthly Payment - maximum four digits'
       ACCEPT MONTHLY-PAYMENT
       DISPLAY 'Enter the Number of Months - maximum three digits'
       ACCEPT NUMBER-OF-MONTHS
       PERFORM 300-PROCESS.

   299-EXIT.
       EXIT.

   300-PROCESS.
       IF TOTAL-CASH-PAYMENT > 0
           MOVE TOTAL-CASH-PAYMENT TO PAYMENT-DL
       END-IF
       IF MONTHLY-PAYMENT > 0
           MOVE MONTHLY-PAYMENT TO PAYMENT-DL
       END-IF
       ADD PAYMENT-DL TO BALANCE-TOTAL
       COMPUTE INTEREST-EARNED ROUNDED = .0175 / BALANCE-TOTAL
       ADD INTEREST-EARNED TO BALANCE-TOTAL
       MOVE BALANCE-TOTAL TO BALANCE-DL
       ADD 1 TO COMPARE-MONTH
       IF MONTH-NUMBER-DL > 13
           ADD 1 TO MONTH-NUMBER
           MOVE MONTH-NUMBER TO MONTH-NUMBER-DL
       END-IF
       IF MONTH-NUMBER-DL = 13
           MOVE 1 TO MONTH-NUMBER
           MOVE MONTH-NUMBER TO MONTH-NUMBER-DL
       END-IF
       IF MONTH-NUMBER = 1
           ADD 1 TO YEAR-NUMBER
           MOVE YEAR-NUMBER TO YEAR-NUMBER-DL
       END-IF
       MOVE DETAIL-LINE TO USED-CAR-RECORD-OUT
       WRITE USED-CAR-RECORD-OUT
           AFTER ADVANCING 1 LINE
       IF TOTAL-CASH-PAYMENT > 0
           MOVE 0 TO TOTAL-CASH-PAYMENT
           MOVE 0 TO PAYMENT-DL
       END-IF
       IF COMPARE-MONTH > NUMBER-OF-MONTHS
           PERFORM 300-PROCESS
       END-IF

Проблема заключается в PAYMENT-DL, INTEREST-EARNED-DL и BALANCE-DL. Там написано, что это нелегальный персонаж, но я знаю, что он должен работать, так как он показывает те пункты рисунков в моей книге, и учитель выдал неполную версию программы, которую я должен написать. Что мне нужно сделать, чтобы избавиться от этих ошибок?

1 Ответ

2 голосов
/ 09 декабря 2010

Недопустимым символом является знак "$".

Это должно быть в порядке, но ваш компилятор может быть настроен на использование символа местной валюты по умолчанию.

Вы можете переключиться на знак местной валюты (если вы это знаете!) Или изменить его на «$».Смена значения на «$» зависит от того, какой компилятор вы используете и как установлены значения по умолчанию - вам действительно нужно прочитать руководство для вашего конкретного компилятора, чтобы узнать, как это сделать.

...