大家好,我现在正在学习COBOL,而且我有点困难。 我目前正在使用德语书Insider COBOL进入这个主题。
现在问题: 我正在重建介绍示例,它是总价的计算器,您写下产品数量,价格和增值税,程序将为您提供净额,增值税金额和总金额。
最后我看到我在代码中有一个错字,所以我修复了它。 在那之后,整个程序部门在我创建gui的所有显示器中疯狂。
在语法错误之后,每个错误都说“语法错误,意外(”有些人说“期待OMITTED或Identifier”)。 如果thentntax已经改变了,我用google搜索,但我没有真正得到它,怎么回事。
以下是代码:
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 :(得分:2)
从代码和错误消息判断,看起来您正在尝试使用GnuCOBOL编译Microsoft COBOL。可悲的是,GnuCOBOL(尚未)认识到微软风格的位置指定者。因此,您必须手动将每个DISPLAY
和ACCEPT
语句翻译为标准COBOL;例如,
DISPLAY (3,1)
'MENGE..............................:'.
ACCEPT (3,40) E-MENGE.
变为
DISPLAY
'MENGE..............................:'
AT LINE 3 COL 1
ACCEPT E-MENGE LINE 3 COL 40.
更多问题是ERASE
中的DISPLAY
短语。最接近的GnuCOBOL必须是Micro Focus'DISPLAY SPACES
扩展名。要使用它,请更改,例如
DISPLAY (23,1) S-Strich ERASE.
到
DISPLAY S-Strict LINE 23 COL 1, SPACES