Jede offen definierte Schnittstelle ist immer mit einer "Aufrufkonvention" festgelegt sonst funktioniert diese eben nicht.
Diese Diskussion haben wir hier schon des öfteren geführt.
Hält man die Schnittstelle nicht ein, gibts halt Fehler um die Ohren (MCH-, CPF-).

Dies gilt auch für objektorientierte Sprachen wie Java/.NET und etwas eingeschränkt auch für C++.
Während in Java und .Net die Schnittstellendefinition im Objekt mit abgelegt wird und somit zur Laufzeit die Prüfung erfolgt (und mittels "Reflection" auch dynamisch verwendet werden kann).

In den HLL-Sprachen RPG/COBOL werden per Definition Pointer übergeben.
Die PR/PI-Definitionen helfen da leider nur zur Compilezeit, zur Laufzeit erfolgt keine Prüfung mehr.
Dies geht sogar soweit, dass gebundene Serviceprogramme nicht mehr über den Namen der Procedur aufgerufen werden sondern über die laufende Nummer der exportierten Funktion.
Verwendet man keine BindaryLanguage, wo man das Verhalten besser beeinflussen kann, sortiert der Compiler die Exporte alphabetisch und generiert eine Hash-Signatur für das gesamte Objekt, diese Signatur wird beim Binden übernommen.
So wird zur Laufzeit der Aufruf des Serviceprogrammes verhindert, wenn die Signatur nicht passt.
Mit BindaryLanguage vergibt man ein eigene Signatur und legt die Reihenfolge der Exporte selber fest.
Neue Funktionen werden dann immer am Ende (in der BindaryLanguage, im Modul ist das egal) hinzugefügt, so dass bestehende Programme über den Index des Exportes die korrekte Prozedur aufrufen.
Fügt man eine neue Funktion irgendwo mitten drin hinzu ohne die Signatur zu ändern, werden von den Programmen sogar die falschen Funktionen aufgerufen.
Eine Laufzeitprüfung erfolgt nicht!

Also wann immer man Parameter für eine Schnittstelle festlegt, sollte man diese "Aufrufkonvention" als Copy zur Compilezeit zur Verfügung stellen und in ILE reduziert man somit die Probleme.

Es regt sich ja auch keiner darüber auf, dass die tausenden von API's über feste Parameter verfügen und bei Nichteinhaltung das API eben nicht funktioniert.