9.1Dは、当然のことながら、古代時代遅れとサポートされていないですが、それはありません、そうであってもDLLとしてCルーチンを呼び出すことをサポートします。いくつかの詳細な例については、UNIX Shared Librariesのこのプレゼンテーションが参考になるかもしれません。 (つまり、自分の環境だ場合血みどろの詳細は異なりますが、同じ考え方では、Windowsのために働く。)4GL側の
簡単な例:
は
define variable x as integer no-undo.
define variable c as memptr no-undo.
define variable m as memptr no-undo.
procedure sprintf external "/lib64/libc.so.6":
define input-output parameter fStr as memptr.
define input parameter mask as memptr.
define input parameter arg as double.
define return parameter x as long.
end.
set-size(c) = 1024.
set-size(m) = 1024.
put-string(m, 1) = "%1.4e".
run sprintf(input-output c, m, 0.0123, output x).
display get-string(c, 1) format “x(20)”.
return.
あなたのための主な問題は、Cプログラマとして、提供しているがAPIとデータ構造を使用して、4GLのユーザーが簡単に作業できるようにします。
最も単純な方法は、単純な単純なパラメータ(上記のような)を行うことです。おそらくあなたの機能が何をしているのかによっては、1つのレコードが一度に1つになる可能性があります。レコードのセットが必要な場合は、レコードを収集して何らかの形で管理する必要があります。
実際に構造体を作成してmemptrで構造体を構築する必要がある場合は、4GLのメンバーと密接に協力してAPIを定義し、memptrの外観に同意する必要があります。私はそれがたくさんの仕事になると思う - 私はそれを避け、私ができるならば簡単なパラメータで行く方法を見つけるだろう。