Problem:
Release 4.0/5.0:
Das nachfolgende Programm laesst sich fehlerfrei uebersetzen, obwohl Anweisungen, wie z.B. DISPLAY "Hallo Welt", nicht im Bereich B (ab Spalte 12) beginnen! Es sollen aber Standards bei der Codierung eingehalten werden und der Compiler sollte deshalb beim Umwandeln feststellen, ob gegen Regeln verstossen wird. Es wird die beiliegende COBOL.DIR eingesetzt :
CONFIRM
SEQUENTIAL"LINE"
RECMODE"V"
CHARSET"ASCII"
ANS85
REMOVE"name"
NOSPZERO
BOUND
DIALECT"BS2000"
1234567A9..B
IDENTIFICATION DIVISION.
PROGRAM-ID. X230B01P.
/
ENVIRONMENT DIVISION.
/
DATA DIVISION.
/
PROCEDURE DIVISION.
0000-STEUERUNG SECTION.
0000-L000.
*
DISPLAY "HALLO WELT"
*
.
0000-EXIT.
STOP RUN.
1234567A..
Resolution:
Die Loesung liegt in der COBOL.DIR:
Nach der Direktive ANS85 fuer die Einstelllung des COBOL-Sprachstandards folgt die Direktive DIALECT(BS2000) und diese wiederum impliziert eine Direktive NOANS85.
Der vorgelegte Quelltext wird mit den Direktiven ANS85 und FLAG(ANS85) umgewandelt. Der Compiler bemaengelt die Position von DISPLAY .. und STOP.. , wenn diese nicht im Bereich B beginnen mit: COBCH0010: Word starts or is continued in wrong area of source line.
Ein Verschieben der Anweisungen DISPLAY und STOP in den Bereich B behebt das anschliessend.
Im Anhang befindet sich ein Quellprogramm Program1.cbl, das den gewuenschten Fehlerhinweis erzeugt, wenn Anweisungen nicht im Bereich B beginnen.