IBM i で組み込み関数をコンパイル

以下のようにコンパイルして、サービス プログラムにリンクさせます。

     -->  標準のソース・エディターで .C ファイルを編集
   |     この .C ファイルと .ISB ファイルを以下にコピー
   |          <LANSA システムのベースパス>/x_lansa/source
   |    (多くの場合、LANSA システムのベースパスは <プログラム・ライブラリ名>)
   |    (ファイル名は小文字を使用 例: u_bif445.c)
   |    
   | 
   |    ライブラリ・リストの LANSA プログラム・ライブラリ
   |    コマンド入力画面で以下を入力:
   |       CALL DCXP8731 (U_BIFnnn x)
   |          (サービス・プログラムをデバッグ可能にする場合は x は Y)
   | 
   | 
    ---  エラー発生時の処理

   エラーがなければ、作成した組み込み関数を使用する
   RDML を実行してテスト

   自身の.c ファイル、 .ISB ファイル、 U_BIFnnn サービス・プログラムをバックアップ
   (U_BIFnnn サービス・プログラムは LANSA プログラム・ライブラリ内に作成されます。)

ヒントとテクニック

  • 最終的に生成されるオブジェクトは 1 つの DLL です。この DLL は Visual LANSA アプリケーションから動的に呼び出されるため、組み込み関数の変更時に Visual LANSA RDML ファンクションを再コンパイルする必要はありませんが、この DLL の新しい動的アドレスが解決されるように、自身の x_run "セッション"を終了して再起動する必要があります。

  • DLL がアクティブまたは使用中に再コンパイルしないようにしてください。
    DLL "使用中" のロッキングはオペレーティング・システムにより行われます。DLL テスト中に何度もエラーになる場合は、使用されていないのに DLL が使用中であるとオペレーティング・システムが混乱している可能性があります。この問題を解決するには、PC を再起動してください。 この問題はコンパイルやリンク処理中に "実行ファイルを作成できない" といった理由が提示されることが多いです。このファイルはオペレーティング・システムによりロックされているため、コンパイラーやリンカーが上書きできません。

  • 作成する組み込み関数が Windows と Linux で作動する必要がある場合は、標準の C 関数を使用してください。Windows と Linux で (別のヘッダー・ファイルを含めるなど) 異なるコードを書く必要がある場合、以下のマクロを使ってこれらのコードを区別します。
          /* Windows コード */
         #ifdef X_OPERATING_SYSTEM_WIN
         …
         #endif
         /* 標準コード */
         …
         /* Linux コード */
         #ifdef X_OPERATING_SYSTEM_Linux
         …
         #endif
  • No labels