Hallo,
In einem Cobol-Pgm verwende ich Strukturen, die mittels eines RPG-Programmes und embedded-SQL generiert wurden.
Dies beschreibt eine phys. Datei mit zwei logischen Sichten. In jeder dieser Beschreibungen gibt es z.B. ein Feld KTSTAT, das einmal KTSTAT OF KTOSTML1 und einmal als KTSTAT OF KTOSTML2 angesprochen wird. Dieses Feld ist jeweils Schlüsselfeld neben zwei bzw. drei anderen.
Der compiler mault beide Fälle an, aber zuerst ein Auszug aus dem Coding:


INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT KTOSTM1 ASSIGN TO DATABASE-KTOSTML1-ALWNULL
ORGANIZATION IS INDEXED
ACCESS IS DYNAMIC
RECORD KEY IS KTSTAT OF KTOSTML1
FILE STATUS IS KTO-STAT1.

SELECT KTOSTM2 ASSIGN TO DATABASE-KTOSTML2-ALWNULL
ORGANIZATION IS INDEXED
ACCESS IS DYNAMIC
RECORD KEY IS KTSTAT OF KTOSTML2
FILE STATUS IS KTO-STAT2.


DATA DIVISION.
FILE SECTION.
FD KTOSTM1.
01 KTO-SATZ1.
COPY DDS-ALL-FORMATS OF KTOSTML1.

FD KTOSTM2.
01 KTO-SATZ2.
COPY DDS-ALL-FORMATS OF KTOSTML2.



WORKING-STORAGE SECTION.
01 KTOSTML1-NKM.
COPY DDS-ALL-FORMATS OF KTOSTML1 WITH NULL-KEY-MAP.

01 KTOSTML1-NM.
COPY DDS-ALL-FORMATS OF KTOSTML1 WITH NULL-MAP.

01 KTOSTML2-NKM.
COPY DDS-ALL-FORMATS OF KTOSTML2 WITH NULL-KEY-MAP.

01 KTOSTML2-NM.
COPY DDS-ALL-FORMATS OF KTOSTML2 WITH NULL-MAP.



PROCEDURE DIVISION.
START KTOSTM2
KEY NOT < KTSTAT IN KTOSTML2
NULL-KEY-MAP IS KTOSTML2-NKM
INVALID KEY SET KTOS2 TO TRUE
END-START.

IF KTOS2
PERFORM U800-FEHLER-IN-KONPF
END-IF.

READ KTOSTM2 NEXT RECORD
NULL-KEY-MAP IS KTOSTML2-NKM
NULL-MAP IS KTOSTML2-NM
AT END SET KTOR2 TO TRUE
END-READ.

Nachricht . . . : 'KTSTAT OF KTOSTML2' nicht als Name definiert.
Anweisung oder Klausel ignoriert.

Desweiteren:
Nachricht . . . : KEY RECORD fehlt für Datei 'KTOSTM1'.
Nachricht . . . : KEY RECORD fehlt für Datei 'KTOSTM2'.

Ganz unverständlich für mich diese Meldungen:
Nachricht . . . : Die Länge des Bezeichners 'BNKSTML1-NKM' in Phrase
NULL-KEY-MAP in Byte ist nicht gleich 0. Phrase akzeptiert.

Oder diese meldung:
Nachricht . . . : Datenname 'KTSTAT OF KTO-SATZ1' als Schlüsselname
in Anweisung START für Datei 'KTOSTM1' ungültig. Anweisung ignoriert.

Vielleicht gibt es ja eine einfache Lösung zu dem Problem. Danke im voraus.