PDA

View Full Version : IFS API für Cobol



ltsrole
21-10-04, 14:04
Hallo zusammen,
für RPG gibt es ja tolle APIs, um mit dem IFS zu arbeiten.

Weiß jemand, ob solche APIs auch in Cobol eingesetzt werden können?

Vielen Dank im voraus.

Bruno Jakob
21-10-04, 14:11
Das geht auch.

Gruß
Bruno

ltsrole
21-10-04, 14:13
Danke für die schnelle Antwort.

Gibt es irgendwo Beispielcode?

Gruß Roland

Fuerchau
21-10-04, 14:36
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".