2017-10-20 159 views
1

你好傢伙我目前正在學習COBOL和我有點卡在我的練習 我目前正在使用德語書籍內幕COBOL進入主題COBOL語法錯誤'意外'(與顯示命令

現在的問題: 我在重建引入的例子,它是一個總價的計算器,你寫的產品數量,價格和增值稅和程序會給你淨額,增值稅金額和總額退款金額

最後我看到我在代碼中有一個錯別字,所以我就修好了它 之後,整個程序部門開始對所有m y顯示我創建gui的位置。

每一個錯誤說:「語法錯誤,意想不到的(」數說語法錯誤太后「期待省略或標識符」。 我一派,如果thesyntax已經改變了,但我真的不明白,什麼是錯。

下面是代碼:


PROCEDURE DIVISION. 
    ****************************************************************** 
    B100. 
    ****************************************************************** 
    ***** Ausgabe Bildkopf 
    ****************************************************************** 
     DISPLAY (1,1) ERASE.    *>Löschen des Bildschirms 
     DISPLAY (1,1) 
     'B R U T T O P R E I S B E R E C H N U N G   PROG01' 
       WITH HIGHLIGHT. 
     DISPLAY (2,1) S-Strich. 
    ****************************************************************** 
    ***** Einlesen der Daten 
    ****************************************************************** 
    B150. 
     DISPLAY (3,1) 
      'MENGE..............................:'. 
     ACCEPT (3,40) E-MENGE. 
     DISPLAY (4,1) 
      'EINZELPREIS:.......................:'. 
     ACCEPT (4,40) E-PREIS. 
     DISPLAY (5,1) 
      'MW-ST-PROZENTSATZ..................:'. 
     ACCEPT (5,40) E-MWST. 
     DISPLAY (6,1) S-Strich. 
    ****************************************************************** 
    ***** Berechnung 
    ****************************************************************** 
    B200. 
     COMPUTE S-NETTO = E-MENGE*E-PREIS. 
     COMPUTE 
      S-MWST-BETR = S-NETTO*E-MWST/100. 
     COMPUTE S-BRUTTO = S-NETTO+S-MWST-BETR. 
    ****************************************************************** 
    ***** Ausgabe der Ergebnisse 
    ****************************************************************** 
    B300. 
     MOVE S-NETTO  TO A-NETTO.  *>Übertragen in Ausgabe 
     DISPLAY (8,1) 
      'NETTOWERT:....................:'. 
     DISPLAY (8,30) A-NETTO. 
     MOVE S-MWST-BETR TO A-MWST-BETR. 
     DISPLAY (9,1) 
      'MEHRWERTSTEUER:...............:'. 
     DISPLAY (9,30) A-MWST-BETR. 
     MOVE S-BRUTTO TO A-BRUTTO. 
     DISPLAY (10,1) 
      'BRUTTOPREIS:..................:'. 
     DISPLAY (10,30) A-BRUTTO. 
    ****************************************************************** 
    ***** Ausgabe Systemzeile 
    ****************************************************************** 
    B400. 
     DISPLAY (23,1) S-Strich ERASE. 
     DISPLAY (24,1) 'WEITERE BERECHNUNGEN (J/N) :'. 
     ACCEPT (24,40) S-WEITER WITH AUTO-SKIP. 
     IF S-WEITER = 'J' *> es werden nur Großbuchstaben 
      GO TO B100  *> aktzeptiert 
     END-IF. 
     IF S-WEITER = 'N' 
      GO To B900 
     END-IF. 
    ***** falsche Eingabe: 
     GO TO B400. 

我希望我不是盲目或東西,謝謝你提前:)

+0

有什麼實際的,完整的錯誤信息? – melpomene

+0

語法錯誤,意外的(,期待OMITTED或標識符 //有時期望...部分丟失 – PIumpsKIo

+0

沒有文件名或行號? – melpomene

回答

2

從該編碼判斷和錯誤消息,它看起來像你試圖用GnuCOBOL編譯Microsoft COBOL。可悲的是,GnuCOBOL並沒有認識到微軟風格的位置說明符。因此,您必須手動將每個DISPLAYACCEPT聲明轉換爲標準COBOL;例如,

DISPLAY (3,1) 
    'MENGE..............................:'. 
ACCEPT (3,40) E-MENGE. 

成爲

DISPLAY 
    'MENGE..............................:' 
    AT LINE 3 COL 1 
ACCEPT E-MENGE LINE 3 COL 40. 

更多的問題是在DISPLAYERASE短語。最接近的GnuCOBOL必須是Micro Focus'DISPLAY SPACES擴展。要使用它,改變,例如,

DISPLAY (23,1) S-Strich ERASE. 

DISPLAY S-Strict LINE 23 COL 1, SPACES