Wie immer ist es in COBOL etwas schwieriger:

Process nomonoprc

Eine Prozedur-Deklaration wie bei RPG ist nicht erforderlich, der Aufruf an sich bestimmt über die Parameter:

01 WorkSpaceSize pic s9(9) comp-4.
01 WorkSpaceEmpty usage pointer.

call procedure "calloc" using by value 1 WorkSpaceSize
returning WorkSpaceEmpty

In diesem Beispiel wird die C-Routine calloc aufgerufen.
Wichtig bei COBOL ist die GENAUE Übergabe von Parametern, da es sonst zu undefinierten Ergebnissen kommen kann.
Eine automatische Typanpassung wie bei RPGLE gibt es nicht !

"by value" ist anzugeben, wenn eben nicht die Adresse verwendet wird
"by reference" übergibt die Adresse.

Da es bei Aufrufen auch zu gemischten Parametern kommt, muss eben für jeden Parameter explizit value/reference angegeben werden.

01 SqlCmpPtr usage procedure-pointer.
01 ReturnLong pic s9(9) comp-4.
* Sortierte Namensliste
01 WrkSortNames.
05 NoOfSrtNames pic s9(9) comp-4.
05 SortNamesTable occurs 1 to 2
depending on NoOfSrtNames
ascending SrtType
ascending SrtName
indexed by I-SrtIndex.
10 SrtType pic x.
10 SrtName pic x(30).
10 SrtIndex pic s9(4) comp-4.

set SqlCmpPtr to entry procedure "SQLCPYCOMP"
call procedure "qsort"
using by reference SortNamesTable (1)
by value NoOfSrtNames
ReturnLong
SqlCmpPtr

Aufruf der C-Routine "qsort".