CALL_FUNCTION

LANSA Composer

CALL_FUNCTION


このアクティビティで、指定のLANSAファンクションを呼び出します。このLANSAファンクションは同じサーバーかもしくは異なるサーバー(*)の別のLANSA構成に含まれる場合もあります。LANSA交換リストを使用して、最大7つの値を渡したり受け取ったりすることができます。すべてのパラメータはA(256)として渡されます。

(* 異なるサーバー・システムのLANSAファンクションを呼び出すには、リモート・サーバー用のLANSA Composerリモート・サーバー・ライセンスが必要なことに注意してください。)

ユーザーは以下の事項を確認する必要があります。

- 必要なLANSAシステムと区画でファンクションを使用できる

- 実行するジョブ(*)が呼び出しを行うために必要な権限を持っている

- 呼び出されるファンクションが目的に合っている

(*) 要求によりますが、実行するジョブは通常LANSA Composerのリクエスト・サーバーから提出されるジョブです。

CALL_FUNCTION アクティビティに関する詳しい情報は以下を参照してください。

 

呼び出すファンクションについてのLANSAプログラミングの考慮事項

LANSA Composerと同じシステムと区画のファンクションの呼び出し

別のLANSAシステムもしくは区画のファンクションの呼び出し

LANSA Composer リクエスト・サーバーを通して実行されるファンクション呼び出し

また以下も参照してください。

LANSAシステム構成

付録F. LANSA Composerリクエスト・サーバー

INPUTパラメータ:

LANSACONFIG :任意

このパラメータで、呼び出すファンクションが含まれるLANSAシステムと区画を識別するLANSAシステム構成の名前と、必要な場合はLANSAシステムのあるサーバー・システムに接続するための接続詳細を指定します。呼び出すファンクションを含む区画は複数言語対応でなければなりません。

PROCESS :任意

このパラメータで呼び出すファンクションが含まれるプロセス名を指定します。指定されない場合は、アクディビティでは*DIRECTが指定されたと推測されます。*DIRECTが指定される、もしくは推測されると、ファンクションはFUNCTION OPTIONS(*DIRECT)で定義されなければなりません。Windowsサーバー上ではリクエスト・サーバー経由で処理される要求の場合は、(*DIRECTではなく)プロセス名が指定されなければなりません。

FUNCTION:必須

このパラメータで呼び出すファンクションの名前を指定します。ファンクション名は必らず常に指定してください。

SYNCHRONOUS :任意

このパラメータでアクティビティがファンクションの呼び出しが完了するまで待つかどうかを指定します。省略値はYESです。つまり、アクティビティは完了まで待ちます。別の値が指定された場合、このアクティビティはファンクション呼び出し要求を送信するとすぐに完了します。このパラメータがYESの場合のみ、呼び出したファンクションからの戻り値(EXCH01 〜 EXCH07のINPUTおよびOUTPUTパラメータ)が受け取れることに注意してください。

SYNCHTIMEOUT :任意

このパラメータで、このアクティビティがリクエスト・サーバー経由で同時に実行されている呼び出しが完了するまで何秒待つかを指定します。指定されない場合、省略値は30秒です。タイムアウトの時間を超えると、アクティビティはエラーで終了します。このタイムアウトが適用されるのはリクエスト・サーバー経由で実行される要求のみです。

EXPIRES :任意

このパラメータはIBM i サーバーのみで、リクエスト・サーバーに送信された後、その要求を何秒間有効な状態にしておくかを指定します。リクエスト・サーバーが要求を処理し始める前にここで指定された時間が経過してしまうと、リクエスト・サーバーは要求の有効期限が終了したとみなし、処理を行いません。指定されなかった場合の省略値はゼロ(0)です。つまり、この要求には有効な期限が存在しないということです。この期限はIBM i サーバーのリクエスト・サーバー経由で実行される要求にのみに適用されることに注意してください。Windowsサーバー上で実行する場合には期限は設定できません。

LANSASYS :任意(廃止予定)

このパラメータで呼び出すファンクションを含むLANSAシステムのプログラム・ライブラリ名を指定します。指定されない場合、アクティビティではLANSA Composerが実行されているLANSAシステムだと判断されます。このパラメータはIBM i サーバーでのみ使用され、前バージョンとの互換性のために提供されています。Windowsサーバー(およびIBM i サーバーの新しいソリューション)では、LANSACONFIGパラメータでLANSAシステム構成名を指定してください。LANSACONFIGでLANSAシステム構成の名前が指定された場合、このパラメータの値は使用されません。

PARTITION :任意(廃止予定)

このパラメータで呼び出すファンクションを含む区画名を指定します。指定されない場合、アクティビティではLANSA Composerが実行されている区画だと判断されます。このパラメータはIBM i サーバーでのみ使用され、前バージョンとの互換性のために提供されています。Windowsサーバー(およびIBM i サーバーの新しいソリューション)では、LANSACONFIGパラメータでLANSAシステム構成名を指定してください。LANSACONFIGでLANSAシステム構成の名前が指定された場合、このパラメータの値は使用されません。この呼び出すファンクションを含む区画は複数言語対応の区画でなければなりません。

 

INPUTおよび OUTPUTパラメータ:

EXCH01
EXCH02
EXCH03
EXCH04
EXCH05
EXCH06
EXCH07
:任意

これらのパラメータを使用して、LANSA交換リストを介して、最大7つの値を呼び出されたファンクションに渡したり、呼び出されたファンクションから受け取ったりできます。パラメータは変数名EXCH01〜EXCH07を使用して、256文字の長さの文字変数として交換リストに置かれ、交換リストから受け取ることができます。

パラメータ値を受け取るためには、呼び出されるファンクションにも変数名EXCH01〜EXCH07を使用する必要があります。呼び出されたファンクションがこれらの変数を使用して値を返す必要がある場合は、適切な時点でEXCHANGEコマンド実行する必要があります。

このアクティビティでは、いくつかのパラメータ(最大7つ)を交換リストに入れたり、リストから受け取ったりし、ユーザーが値や代替変数名を指定します。使用する場合、連続して指定する必要があります(値が指定されていないパラメータがあると、そこでアクティビティが停止します)。

このアクティビティは呼び出すファンクションが同時に実行される場合のみ、戻り値を受け取れることに注意してください。SYNCHRONOUSパラメータの説明を参照してください。

交換リストを使用して情報をやり取りする詳細については、LANSA製品マニュアルでEXCHANGE RDMLコマンドの説明を参照してください。

 

呼び出すファンクションについてのLANSAプログラミングの考慮事項

以下に記されているLANSAプログラミングの考慮事項では、呼び出すファンクションの定義方法を示します。

  • PROCESSパラメータに*DIRECTが指定されている場合、ファンクションはFUNCTION OPTIONS(*DIRECT)で定義されていなくてはいけません。
  • 呼び出されるファンクションはRDMLであっても、RDMLXであっても構いません。
  • 呼び出すファンクションを含む区画は複数言語対応の区画でなければなりません。
  • 指定したCALL_FUNCTIONアクティビティに対応する値を(交換リストを経由して)受け取るためには、ファンクションでEXCH01 〜 EXCH07のフィールドを定義してください。
  • 指定したCALL_FUNCTIONアクティビティのパラメータに対応する変数の戻り値を(交換リストを経由して)受け取るためには、ファンクションでEXCH01 〜 EXCH07のフィールドを使用してEXCHANGEコマンドを使わなければなりません。
  • IBM i サーバーでは、CALL_FUNCTIONアクティビティはLANSA Composerのリクエスト・サーバー経由で実行されます。このファンクションをコンパイルする前にLANSAデータ・エリアDC@A01の桁位置487に'Y'を設定してください。この条件が満たされないと、呼び出すファンクションはEXCH01 〜 EXCH07の変数値を正常に受信・返信できません。

 

上記に記載されているLANSAの機能についての情報はLANSAの文書を参照してください。

 

条件にもよりますが、この考慮事項ではプログラマーがこの目的のために特別なファンクションを書かざるをえない場合もあります。しかしそうであったとしても、そのファンクションはLANSAアプリケーションに存在する他のファンクションを呼び出す簡単な”スタブ”ファンクションとしてひんぱんに利用することができます。

 

LANSA Composerと同じシステムと区画のファンクションの呼び出し

LANSA Composerと同じLANSAシステムと区画にあるファンクションを呼び出す場合は、FUNCTIONパラメータにファンクション名を指定するだけで、どんな値もEXCH01 〜 EXCH07のパラメータで交換できます。LANSACONFIG、PROCESS、SYNCHRONOUSパラメータを(LANSASYS、PARTITIONパラメータも含み)指定する必要はありません。

(1)PROCESSパラメータに*DIRECTが指定される、もしくは推測されて、(2)SYNCHRONOUSパラメータにYESが指定される、もしくは推測された場合、ファンクションは同じジョブ内、同じ状況でアクティビティ・プロセッサから直接実行されます。ALL_FUNCTIONアクティビティがこのモードで実行されると、SYNCHTIMEOUTパラメータの値は無視されます。

このような方法で呼び出すファンクションは、FUNCTION OPTIONS(*DIRECT)で定義されていなくてはいけません。

 

別のLANSAシステムもしくは区画のファンクションの呼び出し

同じサーバーまたは異なるサーバー上のLANSA Composerと異なるLANSAシステムや区画のファンクションを呼び出すことができます。そのためには以下のことを行ってください。

a) 使用したいLANSAシステム、区画を識別するLANSA ComposerのLANSAシステム構成を作成する。

b) LANSAシステム構成名をLANSACONFIGパラメータに指定する。

 

これによりかなりの柔軟性が生まれます。例えば(*DIRECTのかわりに)指定したプロセスを通して必要なファンクションを呼び出したり、同期的もしくは非同期的に要求を処理したりできます。このタイプのファンクション呼び出しはLANSA Composerリクエスト・サーバー経由で実行され、特別な考慮事項が適用されます。

 

LANSA Composer リクエスト・サーバーを通して実行されるファンクション呼び出し

CALL_FUNCTIONアクティビティは以下のいずれかにあてはまる場合、LANSA Composerリクエスト・サーバーを通してファンクション呼び出しが実行されます。

  • LANSACONFIGパラメータを使ってLANSAシステム構成名を指定した場合
    (もしくはIBM i サーバーで、LANSASYSやPARTITIONパラメータに指定した値がLANSA Composerシステムと異なるLANSAシステムや区画の場合)
  • PROCESSパラメータで(*DIRECTではなく)プロセス名を指定した場合
  • SYNCHRONOUSパラメータでYES以外を指定した場合

上記のような方法で実行される場合、ファンクションの呼び出しは(リクエスト・サーバーの)別のプロセスまたはジョブで実行されます。LANSA Composerとリクエスト・サーバーのプロセスやジョブはたがいに協調しながら要求を実行したり、結果を戻したりして通信します。

ただしこれらの実行方法に関していくつか特別に考慮すべきことがあり、それには以下の項目に関連する考慮事項が含まれます。

  • ユーザー・プロファイル、権限、実行環境
  • IBM i 作業管理 (ジョブやサブシステム)
  • 呼び出されるファンクションがコンパイルされる方法

LANSA Composerリクエスト・サーバーを通じて実行される要求の考慮事項に関してはLANSA Composerガイドの付録F(LANSA Composerリクエスト・サーバー)を参照してください。