9.36 DEFINE_ANY_SERVER
注意: 9.1 組み込み関数の規則 利用オプション
サーバーとして使用するためのLANSAシステムの詳細を定義します。
定義の詳細は、永続的なものではなく、LANSA環境がアクティブな間だけ存続します。
サーバーを定義するのにかかる時間は、ほんのわずかです。
プラットフォームについて
IBM i サーバー
|
この組み込み関数は、RDMLXファイルに対して実行するI/Oコマンドで使用する必要があります。それ以外の場合は、サーバーでRDMLXファンクションを呼び出してください。RDMLXの区画が使用可能になった後に、この組み込み関数を再コンパイルしている場合は、非RDMLXオブジェクトにアクセスするためにDEFINE_OS_400_SERVERの代わりに使用することもできます。
区画がRDMLXに対して使用可能になっていない場合、または非RDMLXオブジェクトが再コンパイルされていない場合は、非RDMLXオブジェクトにアクセスするにはDEFINE_OS_400_SERVERを使用する必要があります。
|
その他のサーバー
|
この組み込み関数かDEFINE_OTHER_SERVERを使用してサーバー上の任意のオブジェクトにアクセスすることができます。
|
引数
番号
|
タイプ
|
必須/ 任意
|
記述
|
最小長
|
最大長
|
最小小数桁数
|
最大小数桁数
|
1
|
A
|
必須
|
SSN (サーバーの別名)。これは、今後のこのサーバーへのすべての参照でこのファンクションおよび他のRDMLファンクションが使用する名前です。
|
1
|
10
|
|
0
|
2
|
A
|
必須
|
LU パートナー名
|
1
|
20
|
|
0
|
3
|
A
|
必須
|
非 IBM i サーバーでは無視 (常にY) Y または 1:サーバー上でコミットメント制御を開始する。このサーバーの接続が完了すると、クライアントからRDMLレベルのCOMMITまたは ROLLBACKコマンドが発行されるたびに、"commit" または "rollback" 要求を受け取ります。 その他:コミットメント制御を使用しない
|
1
|
1
|
|
|
4
|
A
|
任意
|
X_RUN 例外引数
|
1
|
256
|
|
0
|
5
|
A
|
任意
|
LOCK_OBJECT 要求をこのサーバーに転送します。このオプションを使用する場合は、後続するすべてのLOCK_OBJECT要求がこのサーバーに転送されます。複数のサーバーが同時このオプションを使用可能に設定している場合、各サーバーとも同じLOCK_OBJECT要求を受け取ります。
このような場合は、LOCK_OBJECTを実行するすべてのサーバーが正常に処理を完了するためには、サーバーにロックが許可されている必要があります。1つのサーバーでロックの許可に失敗すると、すでにオブジェクトのロックが許可されているすべてのサーバーに対してUNLOCK_OBJECT要求が発行されます。
ロックがサーバーに転送される場合、システム変数 *AUTONUM、*AUTOALP、および *DTAssslllxxxxxxxxxx もサーバーから取得されることに注意してください。詳細は、『LANSA アプリケーション設計ガイド』の「*AUTONUM、*AUTOALP システム変数 (データ領域) および *DTASSSLLLXXXXXXXXXX システム変数 (データ域)」を参照してください。
Y または1:LOCK_OBJECT要求を転送する
Z: LOCK_OBJECT要求を転送し、このサーバーに権限検査要求も転送する(権限検査要求を転送する対象としては、1つのサーバーのみ指定してください)
R:ロック要求、権限要求、リポジトリ・データ要求(ローカルで検出されない場合)を経路指定します。X_RUN パラメータ PSRR のX_RUN パラメータに関する注意事項も参照してください。
その他 - LOCK_OBJECT要求を転送しない
デフォルトはZです。
|
1
|
1
|
|
0
|
6
|
A
|
任意
|
接続待ちの間に「しばらくお待ちください」というメッセージを表示します。 Yまたは1:上記メッセージを表示する その他:メッセージを表示しない デフォルトはYです。
|
1
|
1
|
|
0
|
7
|
A
|
任意
|
IBM i以外のサーバーでは無視 実行優先順位。デフォルトは20です。他の値は、IBM iのCHGJOBコマンドのRUNPTYパラメータで指定してください。指定された値を変更する権限がユーザーに許可されている必要があります。
|
1
|
2
|
|
|
8
|
A
|
任意
|
IBM i以外のサーバーでは無視 クライアントからサーバーへの変換テーブル名。ライブラリ名は指定できません。デフォルトは*JOBで、この場合、IBM iサーバーのジョブのCCSIDとクライアント・コード・ページに基づいて変換テーブルが生成されます。 この引数が*JOBの場合、サーバーからクライアントへの変換テーブルも*JOBである必要があります。
|
1
|
10
|
|
0
|
9
|
A
|
任意
|
IBM i以外のサーバーでは無視 サーバーからへクライアントの変換テーブル名。ライブラリ名を指定することはできません。デフォルトは*JOBで、この場合、IBM iサーバーのジョブのCCSIDおよびクライアント・コード・ページに基づいて変換テーブルが生成されます。 この引数が*JOBの場合、クライアントからサーバーへの変換テーブルも*JOBである必要があります。
|
1
|
10
|
|
0
|
|
戻り値
番号
|
タイプ
|
必須/任意
|
記述
|
最小長
|
最大長
|
最小小数桁数
|
最大小数桁数
|
1
|
A
|
必須
|
戻りコード: OK:サーバーが定義された
|
2
|
2
|
|
0
|
|
技術上の注記
- このBIFを使用するには、x_runパラメータCDLLをLCOMGR32.DLLに、x_runパラメータCMTHをCかTにそれぞれ設定する必要があります。
- この組み込み関数の呼び出しで指定するサーバー・ネットワーク名は、サーバーが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印刷拡張パラメータ)。
サーバー・システム上のその他すべての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を呼び出す前に「 SET_SESSION_VALUE」を呼び出すことにより変更できます。
パラメータのオーバーライドにより、特定の値または特殊な値*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=を指定するとデフォルトから変更することができます。このパラメータの詳細については、『Deploying Client and Server Applications』の標準の「X_RUNパラメータ」を参照してください。
クライアントとサーバーで日付形式が異なる場合、正確な形式(DDMMYY) を指定する日付形式の妥当性検査は失敗します(戻されるデータはMMDDYY の形式になる場合があります)。クライアントが別の日付形式を使用する必要がある地域(米国および英国のクライアントなど)では、SYSFMTの日付形式を使用されることをお勧めします。
コミット制御に関する注意事項
- サーバーがコミット制御を使用するよう指定されると、それ以降のすべてのCOMMITおよびROLLBACK コマンドで適用されます。
COMMITまたはROLLBACK コマンドが発行されると、現在接続中のすべてのサーバーに対して関連するルーチンがループします。
コミット制御がアクティブなサーバーに対しては、"commit"もしくは"rollback"要求を発行し、サーバーからの応答を待機してから続行します。
これは、ローカル/クライアント・データベース・マネジメント・システムに対してcommit/rollbackが正しく発行された後で実行されます。
エラー処理に関する注意事項
複雑なエラー処理スキームをご使用のアプリケーションに組み込むことは避けるよう、強くお勧めします。アプリケーションのすべてのレベルで、以下のようなごく単純なトラップを使用するようにしてください。
if (#retcode *ne OK)
abort msgtxt('失敗しました.............................')
endif
標準的なエラー処理を行うように、生成されるすべてのアプリケーションに組み入れて、問題に対処するようにしてください。ユーザー定義のエラー処理ロジックが非常に複雑になったために全RDMLコードの40から50%を占有するようなケースもあります(アプリケーションには何のメリットもありません)。このような事態に陥らないようにしてください。
DBCSに関する考慮事項
サーバーがDBCS使用可能に指定されている場合は、クライアントのPC上に追加の変換テーブルが必要となります。
このテーブルは、X_CT<language code>.DATという名前で、X_LANSA\EXECUTEディレクトリに保管されている必要があります。
<language code>の部分が "JPN" (日本語) のX_CTJPN.DATという名前のテーブルは、日本語を使用するユーザー用のものです。
この変換ファイルの使用では、以下の点に注意してください。
- このテーブルは、ユーザーが変更できるように「現状のまま」の状態で出荷されます。警告は、明示的にも暗黙的にも示されません。このテーブルの保守および検証は、各ユーザーの責任で行う必要があります。
- このテーブルは、現在の言語がDBCS使用可能に指定されている場合、Visual LANSAのDEFINE_ANY_SERVERファンクションによってロードされます。
- ロードされたテーブルの名前は、"x_ct" と現在の言語コード (jpnなど) に接尾辞 ".dat" が組み合わされたものになります。したがって、言語コード jpnを使用する場合のテーブル名は、"x_ctjpn.dat"となります。言語コードがtchiの場合は、テーブル名は "x_cttchi.dat" です。
- このテーブルは、<drive>:\x_lansa\executeディレクトリにある必要があり、<drive>は、Visual LANSAがインストールされているローカルまたはサーバーのディスク・ドライブです。
- この変換テーブルは、文字列のダブル・バイトの部分に対してのみ使用されます。文字列のシングル・バイトの部分(DBCSのサポートの有無に関わらず)は、常に、DEFINE_ANY_SERVERファンクション呼び出しで指定されたIBM i のシングル・バイト・テーブルを使用して変換されます。
- これは、ダブル・バイトとシングル・バイトが混在するフィールドは、ある部分はこのテーブルによって、別の部分は (DBCSと非DBCSの両方の変換に使用される) シングル・バイトの変換テーブルによって変換されることを意味します。
- フィールドがDBCS使用可能に指定されている (例:ディクショナリ・キーボード属性がj、e、o等) の場合、および現在の言語がDBCS使用可能の場合にのみ、個々のフィールド内のデータのDBCS変換が実行されます。これらの条件が両方とも当てはまらない場合は、前述のシングル・バイト変換テーブルによって、フィールド全体がシングル・バイト文字列に変換されます。
- 1 列目 (先頭) に*がある行はコメント行であることを示します。
- すべての値は、16進数のフォーマットで指定されます。
区切り文字に使用できるのは、シングル・カンマ (,) のみです。