9.22 CONNECT_SERVER

LANSA

9.22 CONNECT_SERVER


Þ 注:組 み込み関数の規則

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

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

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

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

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

各製品の対応

LANSA/AD

使 用可

RDMLX でのみ使用可

Visual LANSA for Windows

使 用可

 

Visual LANSA for Linux

使 用可

 

引数

番号

タイプ

必須/任意

記述

最小長

最大長

最小小数桁数

最大小数桁数

1

A

必 須

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

1

10

 

 

2

A

任 意

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

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

こ の値を指定しない場合、接続パラメータで定義されたパスワードを使用するデータベース・サーバー接続により、DEFINE_DB_SERVERが上書きさ れます。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

技術上の注記

·         す べての「接続」のロジックは、多数のRDMLファンクションに分散させるのではなく、1つのファンクションだけにコーディングすることを強くお勧めしま す。このようにすることで、将来サーバーに対して加えられる変更からアプリケーションを保護することができます。

·         こ の組み込み関数は、デフォルトでは、クライアントのシステム上で現在使用されているシステム区画と同じ識別子を持つサーバー・システム上のシステム区画へ の接続を実行します。異なる識別子を持つシステム区画への接続方法については、組み込み関数SET_SESSION_VALUEの CONNECT_PARTITIONオプションを参照してください。

·         IBM iサーバーに対してケルベロス認証を使用する場合、Windowsドメイン・ユーザー(そのユーザーの権限でアプリケーションを実行)のケルベロス・プリ ンシパル名をLANSAユーザーに関連付ける必要があります。この関連付けは、iSeries Enterprise Identity Mapping (EIM)機能を使用して行います。

技術ノート (iSeriesの場合)

·         同 時に複数のIBM iサーバーに接続することができます。

·         同 じIBM iサーバーに何度でも接続することができます(もちろん異なるSSN名を使用します)。

·         デー タベース・サーバー接続のセットアップは、通常、通信サーバーに比べると、より簡潔にできます。通信サーバーへの「初回」の接続が、最も困難です。初回の 接続では、複雑で多くの場合に意味不明な(『Host Integration Server 2000 Error Major/Minor error codebook』を参照しない限り)エラー・メッセージ番号が次々と表示され、フラストレーションが募ります。

·         ワー クステーション・クライアントとIBM iサーバー間の通信の構成や保守については本書の範囲外ですが、以下のヒントや手法が問題の原因を突き止めるのに役立つかもしれません。

現在使用中のユーザー・プロファイルについて、以下の点を確認します。

·         I5/OS に定義されているか

·         必 要なLANSAの区画に対する権限があるか

·         長 さは10文字以下であるか

·         関 連するジョブ記述を持ち、その初期ライブラリ・リストにLANSAのプログラム・ライブラリ(多くの場合、DC@PGMLIB)およびライブラリQGPL が含まれているか

·         問 題解決を試みる場合は、そのジョブ記述のログ・レベルがLOG(4 00 *SECLVL)に設定されているかどうか。このように設定することで、プロファイルが開始するI5/OSのジョブにより、I5/OSジョブ・ログを作成 できます。ジョブ・ログによって、ほとんどの場合に有益なエラー情報が提供されます。

·         ADDDIRE コマンドおよびADDOFCENRコマンドを通じてOffice Servicesに登録します。

·         ダ ム端末にサインオンし、その直後にLANSA PARTITION(xxx)コマンドを入力してI5/OSユーザー・プロファイルを検証してください。思いがけない事態になりましたか?

通信リンクを通じてユーザー・プロファイルのテストを行う前に、明らかになったエラーまたは使用権限の問題の原因を取り除いてください。

·         I5/OS コマンドのWRKSBSJOB QCMNを使用して、サブシステムQCMNにアクティブなジョブを表示してください。F5のリフレッシュを繰り返し使用して、通信ジョブが開始されるよう に、リストをリフレッシュしてください。
サブシステムQCMNがアクティブになっていますか?

NO の場合:

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

YES の場合:

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

& nbsp;    YESの場合:

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

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

& nbsp;    NOの場合:

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

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

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

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

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

if (#retcode *ne OK) 

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

endif

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