2010-12-08 40 views
0

Je travaille sur mon dernier devoir pour COBOL ce semestre et je suis frappé par une erreur de syntaxe qui m'empêche de progresser. Voici ce que je suis:Besoin d'aide avec une erreur de syntaxe (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 

Le problème est avec PAIEMENT-DL, INTÉRÊTS GAGNÉ-DL et BALANCE-DL. Il dit que c'est un personnage illégal, mais je sais que cela devrait fonctionner car il montre ces clauses dans mon livre et l'enseignant a distribué une version incomplète du programme que je dois écrire. Que dois-je faire pour me débarrasser de ces erreurs?

+0

Personne n'a la moindre idée de ce problème? – Kimmy1235

Répondre

2

Le caractère non valide est le signe "$". Cela devrait être OK, mais votre compilateur peut avoir été personnalisé pour utiliser un symbole de devise locale par défaut.

Vous pouvez passer à votre symbole de devise locale (si vous le connaissez!) Ou le remplacer par "$". Le retour à "$" dépend du compilateur que vous utilisez et de la façon dont les valeurs par défaut sont définies - vous devez vraiment lire le manuel de votre compilateur pour savoir comment cela est fait.

+0

C'était tout! Je joue beaucoup de jeux japonais et je dois mettre mon unicode en japonais pour les jouer alors quand je le reglerai pour qu'il fonctionne, ça a marché. Je vous remercie! – Kimmy1235