Ich kenne nun beide Sprachen gut genug. Aber COBOL ist eher eine Romanschreiberei, FreeRpg ist da schon erheblich einfacher.
Die ILE-Integration ist nur bedingt gelungen.
Man kann zwar Funktionen mit Returnwerten definieren, allerdings gibt es dafür eine eigene Call-Syntax die nicht in einen Move oder Compute eingebettet werden kann.
Das finde ich schon etwas lässtig:

COBOL:
call "MyFunction" using P1, Pp2, ... returning RetVal,
if RetVal
:
endif.

ILERPG:
if MyFunction(P1:P2:...);
:
endif;
Hinzu kommt, dass der Returnwert einer Funktion wiederum als Parameter an die nächste Funktion weitergegeben werden kann. Dass ist mit CALL nun überhaupt nicht möglich.
Es gibt zwar einen "Function" aufruf, der allerdings nur für integrierte Funktionen gilt.

Aber wie du schon sagst, jedem das seine.