connectionService()

vgLib.connectionService() システム関数には、以下の 2 つの利点があります。

vgLib.connectionService() を使用して新規接続を作成する場合は、 vgVar.sqlIsolationLevel システム変数を設定することによって分離レベルを指定します。VisualAge® Generator の互換性モードで実行中であり、vgVar.sqlIsolationLevel が 0 に設定されている場合、新しい接続は、repeatableRead の分離レベルになります。 それ以外の新しい接続は、serializableTransaction を使用します。詳しくは、sqlLib connect()関数を参照してください。

vgLib.connectionService() は、VisualAge Generator および EGL 5.0 からマイグレーションされたプログラムに対してのみ使用します。 関数は、EGL 設定 VisualAge Generator との互換性が選択されている場合 (開発時に)、または VAGCompatibility ビルド記述子オプションが YES に設定されている場合 (生成時に)、サポートされます。

新規プログラムの場合、代わりに以下のシステム関数を使用します。

vgLib.connectionService() は値を戻しません。

構文

  vgLib.connectionService(
    userID CHAR(8) in,
    password CHAR(8) in,
    serverName CHAR(18) in
    [, product CHAR(8) inOut,
       release CHAR(8) inOut
    [, connectionOption STRING in
    ]])
userID
データベースへのアクセスに使用するユーザー ID。 引数を指定する必要がありますが、COBOL 生成では引数は無視されます。 このトピックの『互換性』のセクションを参照してください。
password
データベースへアクセスするときに使用されるパスワード。引数を指定する必要がありますが、COBOL 生成では引数は無視されます。

このパスワードは、関数にストリング・リテラルを渡すと自動的に暗号化されます。 詳しくは、「EGL プログラマー・ガイド」の『パスワードの暗号化』を参照してください。 このトピックの『互換性』セクションも参照してください。

serverName
接続を指定し、引数 product および releasevgLib.connectionService() の呼び出しに含まれている場合は、指定した接続を使用してこれらの引数に値を代入します。
引数 serverName は必須です。有効な値を以下に示します。
ブランク (内容なし)
接続されている場合、vgLib.connectionService() はその接続を維持します。 接続されていない場合は、結果として実行単位の開始時に有効である接続状況に戻ります (値は代入されません)。 詳しくは、「EGL 生成ガイド」を参照してください。
RESET
COBOL の場合、RESET を指定することで、変更内容のコミット、カーソルの終了、ロックの解放、現行データベースからの切断、および実行単位の開始時に有効な接続状況へ戻すなどが実行されます。 このような状況であっても RESET を指定する場合は、vgLib.connectionService() を呼び出す前に sysLib.commit() または sysLib.rollback() を呼び出す必要があります。

Java™ プログラムについては、RESET を指定すると、デフォルト・データベースに再接続します。ただし、デフォルト・データベースが使用できない場合には、接続状況は変更されません。

デフォルト・データベースについて詳しくは、「EGL 生成ガイド」を参照してください。

databaseName
データベースを識別します。
COBOL プログラムとしてコードを実行する場合には、次の点に注意してください。
  • databaseName の値は、SYSIBM.LOCATIONS テーブルのロケーション列にある値にする必要があります。このテーブルは、DB2® UDB サブシステムにあります (CICS® の場合、このサブシステムは CICS 領域に接続されています)。
  • データベースがすべてのカーソルを閉じ、ロックを解除し、既存の接続を終了して、要求されたデータベースに接続するよう指定します。このような状況であっても databaseName の値を指定する場合は、vgLib.connectionService() を呼び出す前に sysLib.commit() または sysLib.rollback() を呼び出す必要があります。
Java プログラムとしてコードを実行する場合は、次の点に注意してください。
  • 物理データベース名は、vgj.jdbc.database.server プロパティー (servervgLib.connectionService() 呼び出しで指定したサーバーの名前) を検索することにより検出されます。 このプロパティーが定義されていない場合は、vgLib.connectionService() 呼び出しで指定したサーバー名がそのまま使用されます。
  • J2EE 接続と非 J2EE 接続では、データベース名の形式が以下のように異なります。
    • J2EE 環境で実行されるプログラムを生成した場合には、JNDI レジストリーでのデータ・ソースのバインド先となる名前 (jdbc/MyDB など) を使用します。 J2EE ビルド記述子オプションが YES に設定 されている場合に、この状態が発生します。
    • 非 J2EE JDBC 環境のためのプログラムを生成した場合 には、接続 URL (jdbc:db2:MyDB など) を使用します。J2EE オプションが NO に設定 されている場合に、この状態が発生します。
product
データベースのプロダクト名を受け取ります。引数を指定する場合は、CHAR(8) 変数にする必要があります。

コードで特定のデータベースへ接続するときに受け取るストリングを確認するには、データベースまたはドライバーの製品資料を参照するか、またはテスト環境でコードを実行し、受け取る値をファイルへ書き込んでください。

release
データベースのリリース・レベルを受け取ります。引数を指定する場合は、CHAR(8) 変数にする必要があります。

コードで特定のデータベースへ接続するときに受け取るストリングを確認するには、データベースまたはドライバーの製品資料を参照するか、またはテスト環境でコードを実行し、受け取る値をファイルへ書き込んでください。

connectionOption
このパラメーターは、COBOL のプログラムを生成している場合は無視されます。 以下の値が有効です。
D1A
オプション名の 1 は、 シングル・フェーズ・コミットがサポートされていることを示し、 A は、切断が自動的であることを示します。 このオプションには以下の特性があります。
  • 一度に 1 つのデータベースにしか接続できない
  • コミットまたはロールバックによって、既存の接続が終了する
D1C
オプション名の 1 は、 シングル・フェーズ・コミットのみがサポートされていることを示し、 C は、切断がコミットで行われることを示します (ただし、カーソルが HOLD で開かれていない場合)。 このオプションの特性は、以下のとおりです。
  • 一度に 1 つのデータベースにしか接続できない
  • コミットまたはロールバックによって、既存の接続が終了する
D1E
デフォルト値です。 オプション名の 1 は、 シングル・フェーズ・コミットがサポートされていることを示し、 E は、切断が明示的でなければならないことを示します。 この場合、コミットまたはロールバックは既存の接続で有効ではありません。
Java プログラムを作成する場合は、次の点に注意してください。
  • データベースへ接続しても、カーソルの終了、ロックの解放、既存の接続の終了は行わ れません。ただし、実行単位が既に同一データベースへ接続している場合には、DISC を指定してから D1E を指定した場合と同様の効果が得られます。
  • 複数のデータベースから読み取るために複数の接続を使用している場合には、1 つの作業単位で 1 つのデータベースのみを更新することができます。これは、シングル・フェーズ・コミットのみが実行可能であるためです。
DISC
指定されているデータベースから切断します。データベースから切断すると、このデータベースについてのみロールバックが実行され、ロックが解放されます。
DCURRENT
現在接続されているデータベースから切断します。データベースから切断すると、このデータベースについてのみロールバックが実行され、ロックが解放されます。
DALL
すべてのデータベースから切断します。すべてのデータベースから切断すると、これらのデータベースでロールバックが実行されます。ただし、他のリカバリー可能リソースではロールバックは実行されません。
SET
接続を現行接続に設定します。(デフォルトでは、実行単位内の最新の接続が現行接続になります。)

VisualAge Generator との互換性を維持するため、値 R、D2A、 D2C、D2E が許容されています。ただし、これらの値は D1E と同等です。

エラーに関する考慮事項

vgLib.connectionService() は、sqlLib と sysVar の両方で、以下の sqlData システム変数を設定します。
  • sqlData.sqlerrd[]
  • sqlData.sqlca
  • sqlData.sqlcode
  • sqlData.sqlerrmc (available in COBOL code only)
  • sqlData.sqlwarn[]

以下の例は、vgLib.connectionService() 関数を使用する方法を示しています。

  vgLib.connectionService(myUserid, myPassword, 
    myServerName, myProduct, myRelease, "D1E");

互換性

表 1. connectionService() の互換性に関する考慮事項
プラットフォーム 問題
Java 生成 Tomcat J2EE サーバーは、vgLib.connectionService() 関数からのユーザー IDパスワードを無視し、そのサーバー構成での値を使用します。

フィードバック