You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Next »

9.40 DEFINE_OTHER_SERVER

注意: 9.1 組み込み関数の規則      &<a href="bifcat3_01.htm"&>利用オプション&</a&>
現在のRDMLファンクションに対するサーバーとして使用される非IBM i (他の)システムの詳細を定義します。
定義の詳細は、永続的なものではなく、LANSA環境がアクティブな間だけ存続します。サーバーを定義するのにかかる時間は、ほんのわずかです。
このBIFを使用するには、x_runパラメータCDLLをLCOMGR32.DLLに、x_runパラメータCMTHをCかTにそれぞれ設定する必要があります。
 
引数

番号

タイプ

必須/任意

記述

最小長

最大長

最小小数桁数

最大小数桁数

1

A

必須

SSN (サーバーの別名)。これは、今後のこのサーバーへのすべての参照でこのファンクションおよび他のRDMLファンクションが使用する名前です。

1

10

 

 

2

A

必須

サーバー・ネットワーク名

1

20

 

 

3

A

任意

LOCK_OBJECT 要求をこのサーバーに転送します。このオプションを使用する場合は、後続するすべてのLOCK_OBJECT要求がこのサーバーに転送されます。複数の サーバーが共にこのオプションを使用可能に設定している場合、各サーバーとも同じLOCK_OBJECT要求を受け取ります。
このような場合は、LOCK_OBJECTを実行するすべてのサーバーが正常に処理を完了するためには、サーバーにロックが許可されている必要があります。1つのサーバーでロックの許可に失敗すると、すでにオブジェクトのロックが許可されているすべてのサーバーに対してUNLOCK_OBJECT要求が発行されます。
Yまたは1:LOCK_OBJECT要求を転送する
Z:ロック要求を経路指定し、その上で権限要求を経路指定する
R:ロック要求、権限要求、リポジトリ・データ要求(ローカルで検出されない場合)を経路指定します。X_RUNパラメータについては、&<a href="depb3_0000.htm"&>「X_RUNコマンドの使用」&</a&>を参照してください。
その他:要求を転送しない
デフォルトはNです。

1

1

 

 

4

A

任意

接続待ちの間に「しばらくお待ちください」というメッセージを表示します。
Yまたは1:上記メッセージを表示する
その他:メッセージを表示しない
デフォルトはYです。

1

1

 

 

5

A

任意

X_RUN 例外引数

1

256

 

 

6

A

任意

サーバー依存例外引数。現在は実装されていません。
この引数を使用しないでください。

1

256

 

 

7

A

任意

将来の拡張のために予約されています。現在は実装されていません。
この引数を使用しないでください。

1

256

 

 

8

A

任意

将来の拡張のために予約されています。現在は実装されていません。
この引数を使用しないでください。

1

256

 

 

 
戻り値

番号

タイプ

必須/任意

記述

最小長

最大長

最小小数桁数

最大小数桁数

1

A

必須

戻りコード
OK:サーバーが定義された
ER:サーバーが未定義でエラー・メッセージが発行される

2

2

 

 

 
技術上の注記

  • この組み込み関数の呼び出しで指定するサーバー・ネットワーク名は、サーバーがLANSAコミュニケーション管理機能で登録されたか登録予定のパートナーLU名と一致している必要があります。
  • サーバー定義および接続のロジックは、多数のRDMLファンクションに分散させるのではなく、1つのファンクションにのみコーディングすることを強くお勧めします。このようにすることで、将来サーバーに対して加えられる変更からアプリケーションを保護することができます。
  • SSN 値は、メッセージにしばしば表示される場合があるため、エンド・ユーザーにとって意味のある名前にすることをお勧めします(CHICAGO、BOSTONCHARLIE1など)。
  • SSN 名は、英語のアルファベット(大文字のAからZまで)で始まる固有の名前である必要があります。
  • サーバーが接続されていない時は、繰り返し(再)定義することができます。現在接続されているサーバーを(再)定義しようとすると、致命的なエラーが発生します。
  • X_RUN 例外引数を使用して、サーバー・システム上で開始しているX_RUNコマンドのパラメータをオー バーライドすることができます。 デフォルトでは、サーバー・システム上で開始しているX_RUNコマンドに、以下のクライアントX_RUNパラメータが渡されます(このコマンドから継承されます)。CMTH=、CDLL=、DATF=、DATS=、DBCF=、DBCL=、DBLK=、DBTC=、DBUS=、DEVE=、FXQF=、FXQM=、HSKC=、INIT=、ITHP=、ITRC=、ITRL=、ITRM=、ITRO=、LANG=、PART=、PRTR=、PSPW=、PSTC=、PSWD=、TASK=、TERM=、USER=、XAFP=、およびXCMD。以下のクライアントX_RUNパラメータ値は、クライアントとサーバーが同じオペレーティング・システムを使用する場合にのみこれらから継承されます。DBID=、DBII=、DBIT=、DBUT=、ODBI=、およびWPEN (および関連するWindows印刷拡張&<a href="depb3_0090.htm"&>パラメータ&</a&>)。 サーバー・システム上のその他すべてのX_RUNパラメータ値は、通常の方法(プロフィール・ファイルから、システム環境設定からなど)でデフォルトが指定されます(サーバー・システム上で)。X_RUNコマンドに関する説明を参照して、すべてのパラメータの詳細およびその設定方法またはデフォルトの指定方法について確認してください。
  • CDLL=、CMTH=、DATF=、DATS=、DBUG=、DEVE=、LANG=、MODE=、PART=、PROC=、PSPW=、USER=、およびXAFP=以外のサーバーX_RUNパラメータは、(X_RUN例外引数値を使用して)すべてオーバーライドすることができます。これらのX_RUN引数は、無条件にクライアント・システムから継承されます。ただし、一部のパラメータは、CONNECT_SERVERを呼び出す前に「&<a href="set_session_value.htm"&>SET_SESSION_VALUE&</a&>」を呼び出すことにより変更できます。 パラメータのオーバーライドにより、特定の値または特殊な値*SERVERが指定される場合があります。*SERVERは、デフォルトのサーバーを使用する必要があることを示す値です。例えば、DBII=*NONEを使用するWindowsクライアントは、Oracleを実行するWindows Serverに接続する場合があります。デフォルトでは、Windowsはデータベース・タイプMSSQLS (SQL Server)を使用するため、DBUTをオーバーライドする必要があります。X_RUN例外引数値には、DBUT=ODBCORACLEかDBUT= *SERVERのいずれかを設定することができます。
  • この組み込み関数を使用して定義された詳細は、永続的なものではありません。X_RUNコマンドが終了すると消滅します。ユーザー独自のSQLベースのテーブルを定義して、サーバー詳細を保持したり、テーブルを実際に読み込んでこの組み込み関数に渡される値を取得することができます。
  • これらの機能で十分に経験を積んでから、組織で使用する特定のサーバー・アーキテクチャを設計するようにしてください。サーバー・アーキテクチャは、以下のような特徴が必要です。
  • 組織の要件を満たしている
  • 手早く容易に変更できる
  • 拡張可能である

       大規模な設計あるいは開発プロジェクトに着手する前に、これを実行してください。

  • クライアントの日付形式は自動的にサーバーに渡されます。日付形式同士が異なる場合 (MDYとDMYなど)、サーバーはクライアントの形式で自動的にデータを戻します。 クライアントの日付形式は、x_runパラメータのDATF=を指定するとデフォルトから変更することができます。このパラメータの詳細については、「&<a href="depb3_0005.htm"&>X_RUNパラメータ概要&</a&>」を参照してください。 クライアントとサーバーで日付形式が異なる場合、正確な形式(DDMMYY)を指定する日付形式の妥当性検査は失敗します(戻されるデータはMMDDYYの形式になる場合があります)。クライアントが別の日付形式を使用する必要がある地域(米国および英国のクライアントなど)では、SYSFMTの日付形式 を使用されることをお勧めします。

エラー処理に関する注意事項
複雑なエラー処理スキームをご使用のアプリケーションに組み込むことは避けるよう、強くお勧めします。アプリケーションのすべてのレベルで、以下のようなごく単純なトラップを使用するようにしてください。
if (#retcode *ne OK)
    abort msgtxt('Failed to .............................') 
endif
 
標準的なエラー処理を行うように、生成されるすべてのアプリケーションに組み入れて、問題に対処するようにしてください。ユーザー定義のエラー処理ロジックが非常に複雑になったために全RDMLコードの40から50%を占有するようなケースもあります(アプリケーションには何のメリットもありません)。このような事態に陥らないようにしてください。

  • No labels