Das sieht mir sehr nach unterschiedlichen Aufrufkonventionen aus, ähnlich wie bei Microsoft.
Wie man diese nun für C/C++ definiert, weiß ich auch nicht.
Der Unterschied liegt im Verfahren ob die Parameter als Stack (Push/Pop) oder als Liste (P1, P2) erwartet werden.
Rein native in C++ ist hier häufig Stack der Fall, bei RPG/COBOL eher Liste.
In Microsoft löse ich das z.B. mit
extern "C" {
.. Funktionen...
}
Ob sowas auch für AS/400-C++ vorhanden ist muss man mal in der Doku nachlesen.