Tja, da sieht man wieder, dass Laufzeitprüfungen nicht passieren und wenn man Datei-Felder nur umbenennt, gibts anscheinend keine Signaturänderung sonst würde man ja bereits beim Open auf die Nase fallen.

Ich bin auch schon des öfteren mal bei RGPIV reingefallen, vor allem was die Typsicherheit angeht.
In der PF ist ein Feld packed(11, 2) definert.
In der DSPF ist das Feld mit 11S 2 definiert.
Wird nun von der PF eine E DS definiert und beide Dateien verwendet, wird in der DS die 11S 2-Variante generiert.
Dem RPG ists egal, da bei den Verwendungen Zoned und Packed gemischt verwendet werden.
Ebenso werden ja auch Moves zwischen DS und File-Puffern generiert, die dann die Typumwandlung vornehmen.

Allerdings nicht beim CALL!
Das Empfangs-Unterprogramm hatte nur die PF am Wickel, somit war der Parameter mit packed(11, 2) definiert.
Beim CALL mit dem Feld aus obiger DS aber wurd nun Zoned(11, 2) übergeben.

Gott sei Dank hat sich das mit Prototypen erledigt. Wobei Strukturen da leider nur als CHAR(n) geprüft werden, nicht aber die Unterfelder.
Somit gibts keine Compilerfehler bei der Übergabe von DS's an DS CONST, es wird einfach eine Kopie der DS in der Länge des Ziels erstellt. Ob die DS überhaupt die Richtige ist, wird nicht geprüft.
Dasselbe gilt für Return-DS'n.