8.27 CONNECT_SERVER

実行するファンクションをファイルをサーバーに接続します。この接続は、組み込み関数DISCONNECT_SERVERを使用するか、Visual LANSA環境を終了させるなどの明らかな停止処理が取られるまで有効です。

サーバーとして、DEFINE_OS_400_SERVER、DEFINE_ANY_SERVER、DEFINE_OTHER_SERVER、 DEFINE_DB_SERVERのいずれかのBIFで定義されたSSNを指定することができます。このSSNは、ローカル・データベース・サーバーを参照する特殊なSSN *LOCALDBにすることも可能です。詳細については、「データベース接続」を参照してください。

接続が確立されるまでには、多少の時間を要します。

アプリケーションを設計する際は、複数の接続/接続切断を使用するのではなく、シングル・エントリー・ポイント接続が要求されるような設計にするべきです。

すでに接続中のサーバーに対する接続要求は無視されます。エラーにはなりません。

引数

番号

タイプ

必須/任意

記述

最小長

最大長

最小小数桁数

最大小数桁数

1

A

必須

定義されているサーバーのSSN

1

10

 

 

2

A

任意

サーバー接続用のパスワード。この値はファンクション呼び出し中にのみ存在し、保管されることはありません。

この値を指定しないと、アプリケーション・サーバー接続では、デフォルトのパスワードにx_runパラメータのPSPW= の値を使用します。

この値を指定しない場合、接続パラメータで定義されたパスワードを使用するデータベース・サーバー接続により、DEFINE_DB_SERVERが上書きされます。8.37 DEFINE_DB_SERVER の例に示すように、ODBCプロンプトでパスワードを要求する設定が可能です。

1

256

 

 

3

A

任意

この値が 'Y' の場合、パスワード値が無視され、Windowsアプリケーションを実行している権限が、サーバーでのケルベロス・プロトコルによる認証に使用されます。

この値が'N'の場合は、認証にパスワード引数が使用されます。

この値を指定しない場合は、PSTCパラメータの現行の設定がデフォルト値になります。「PSXX=パラメータ」を参照してください。

1

1

 

 

4

A

任意

サーバーへの接続に使用するユーザー名。この値はファンクション呼び出し中にのみ存在し、保管されることはありません。

この値を指定しない場合、アプリケーション・サーバーの接続では、デフォルトのユーザー名として、X_RUNパラメータのUSER=の値が使用されます。

この値は、データベース・サーバー接続では無視されます。

1

256

 

 

A

任意

サーバー・エラーをハンドル

この値が 'Y' の場合、クライアントの X_Run セッションはサーバーからエラーが戻ってきてもアボートしません。その代わり戻りコードに "FE" がセットされ、サーバーのエラーメッセージはメッセージキューに格納されます。

この値が'N'の場合、サーバーからエラーが戻ってくるとクライアントの X_Run セッションがアボートします。

省略値は 'N' です。

1

 

 

 

戻り値

番号

タイプ

必須/任意

記述

最小長

最大長

最小小数桁数

最大小数桁数

1

A

必須

戻りコード
OK:接続が確立された
ER:接続が確立されなかった
FE:致命的なエラー

2

2

 

 

2

A

任意

サーバー・タイプ

SuperServer の場合、以下のいずれかになります。
AS400 (IBM i RPG)
RDMLX400 (IBM i RDMLX)
LINUX
WINDOWS

データーベース・サーバーの場合、以下のいずれかになります。
DB_ODBCORACLE
DB_MSSQLS
DB_MSACCESS
DB_SQLANYWHERE
DB_XXXXX (XXXXXはユーザー定義のデータベース・タイプ)

注:タイプが判別できない場合は、サーバー・タイプはUNKNOWNとして戻されます。

3

15

 

 

3

N

任意

接続エラー・コード

戻りコードがOKまたはLANSAがエラー・コードを判定できない場合はゼロ

SuperServer の場合はコミュニケーション・エラー・コードになります。最も一般的なエラー・コードは、次のとおりです。
 6:ログオンできなかった
17:クライアントまたはサーバーで予期しないエラーが発生した
20:サーバーを検出できなかった

データベース・サーバーの場合は、ネイティブのデータベース・エラー、ODBC/CLI API戻りコード、または内部LANSAエラーを示す-9999になることがあります。

10

10

0

0

 

技術上の注記

技術上の注記 (IBM i の場合)

Kerberos は、このために直接サーバーの構成をする必要がなく、SQL サーバーやファイル共有などのサーバー以外のものにアクセスもすることなく、作動します。

サーバー以外のものにアクセスする必要がある、いわゆるマルチホップの場合は、以下の状態がサポートされます。

1.コンピュータ全体を *すべての* サービスに信頼を委任します。- これはテスト済で、作動することが確認されています。
2.特定のドメイン・ユーザーを *すべての* サービスに信頼を委任します。- これはテスト済で、作動することが確認されています。(このためには、特定のユーザーで実行できるよう、リスナーが適切に設定されている必要があります。まず最初に lcoecho を使って検証してください。)

上記の構成のいずれかが可能でない環境の場合は、マルチホップは使用できません。

技術上の注記 (IBM i の場合)

いいえ:

サブシステムを開始し、操作をやり直してください。

はい:

サブシステムQCMNにIBM i の「サーバー」ジョブが表示されていますか?

表示されている場合:

直ちに「5=処理」を使用して、このジョブをトレースしてください。トレースが終了するまで待ち、ジョブ・ログ・ファイルにスプールされた結果を詳しくチェックしてください。ログが生成されていない場合は、問題の原因がトレースされるまで、使用中のユーザー・プロファイルに関連するジョブの記述をLOG (4 00 *SECLVL)に変更してください。

IBM iシステムに、"LXX"(LANSA SuperServer)ライセンスがインストールされていますか?また、それは最新ですか?LANSA REQUEST(LICENSE)コマンドを使用してチェックしてください。

表示されていない場合:

PC 上でコミュニケーション・マネージャ、PC Support、その他のコミュニケーション・ルーターが開始されていますか?

コミュニケーション・マネージャのメッセージの表示オプションに、エラー情報が表示されますか?

IBM i のDSPLOG(ログ表示)コマンドを実行すると、通信エラー情報が表示されますか?

エラー処理に関する注意事項

複雑なエラー処理スキームをご使用のアプリケーションに組み込むことは避けるよう、強くお勧めします。アプリケーションのすべてのレベルで、以下のようなごく単純なトラップを使用するようにしてください。

if (#retcode *ne OK) 

     abort msgtxt('Failed to .............................') 

endif

標準的なエラー処理を行う組み込み関数を生成されるアプリケーションに組み入れて、問題に対処するようにしてください。ユーザー定義のエラー処理ロジックが非常に複雑になったために全RDMLコードの40から50%を占有するようなケースもあります(アプリケーションには何のメリットもありません)。このような事態に陥らないようにしてください。