8.2 MCFメイン関数の作成
TP1/NET/TCP/IPは,OpenTP1プロセスサービスによって起動されます。
TP1/NET/TCP/IPを起動するためには,MCFメイン関数を作成し,コンパイル,およびリンケージを行ってTP1/NET/TCP/IPの実行形式プログラムを作成する必要があります。リンケージには,mcfpltcpコマンドを使用します。
MCFメイン関数では,スタート関数(dc_mcf_svstart)を呼び出します。UOCを使用する場合は,MCFメイン関数でUOCの関数アドレスを指定してください。
UOCは,MCFメイン関数と同じ言語(ANSI C,C++またはK&R版 C)で作成してください。
TP1/NET/TCP/IPには,製品で提供しているUOC(標準提供UOC)があります。
標準提供している入力セグメント判定UOCを使用する場合は,MCFメイン関数で標準提供UOC関数(dc_mcf_stduoc_tcp_segchk)の関数アドレスを指定してください。
ユーザが独自のUOCを作成する場合,標準提供UOC関数(dc_mcf_stduoc_tcp_segchk)の関数名称は使用しないでください。
MCFメイン関数のコーディング概要を図8-1,図8-2に示します。また,ディレクトリへの組み込み方法を図8-3に示します。
なお,これらのコーディング例は,次のファイルで提供しています。
- 適用OSがWindowsの場合
-
-
%DCDIR%\examples\mcf\tcpip\cmlib\c\com.c
-
- 適用OSがLinuxの場合
-
-
/opt/OpenTP1/examples/mcf/TCPIP/cmlib/ansi/com.c
-
/opt/OpenTP1/examples/mcf/TCPIP/cmlib/c/com.c
-
- その他のOSの場合
-
-
/BeTRAN/examples/mcf/TCPIP/cmlib/ansi/com.c
-
/BeTRAN/examples/mcf/TCPIP/cmlib/c/com.c
-
- 注※
-
TP1/NET/TCP/IPが標準提供する入力セグメント判定UOCを使用する場合,関数名は「segchk01」ではなく,「dc_mcf_stduoc_tcp_segchk」としてください。
- 注※
-
TP1/NET/TCP/IPが標準提供する入力セグメント判定UOCを使用する場合,関数名は「segchk01」ではなく,「dc_mcf_stduoc_tcp_segchk」としてください。
-
TP1/NET/TCP/IPで提供するヘッダファイルを取り込みます。
-
使用するUOC関数をextern宣言します。UOCのリターン値はDCLONG型にしてください。
UOCをまったく使用しない場合,このコーディングは必要ありません。
-
UOCテーブルをextern宣言します。UOCを使用する場合,必ずこのとおりにコーディングしてください。
UOCをまったく使用しない場合,このコーディングは必要ありません。
-
各UOC関数のアドレスを,次に示すシステム提供変数に設定します。使用するUOCだけコーディングしてください。
dcmcf_uoctbl.segchk /*入力セグメント判定UOCアドレス*/ dcmcf_uoctbl.msgrcv /*入力メッセージ編集UOCアドレス*/ dcmcf_uoctbl.msgsend /*出力メッセージ編集UOCアドレス*/
UOCをまったく使用しない場合,このコーディングは必要ありません。
-
スタート関数を呼び出します。MCFメイン関数には必ずコーディングしてください。
スタート関数を呼び出したあとは,MCFメイン関数に制御が戻りません。そのため,スタート関数のあとにコーディングした処理は実行されませんので,ご注意ください。
- 注※1
-
UOCを使用しない場合は,必要ありません。
- 注※2
-
mcfpltcpコマンドでリンケージします。
mcfpltcpコマンドの詳細については,TP1/NET/TCP/IPの「リリースノート」を参照してください。
- 注※3
-
TP1/NET/TCP/IPの実行形式プログラム名は,先頭がmcfuで始まる8文字以内の名称にしてください。