現在地: LANSA テクニカル リファレンスガイド > 9. 組み込み関数 > 9.195 SET_SESSION_VALUE

9.195 SET_SESSION_VALUE

この組み込み関数を使用すると、Visual LANSAのセッション値を実行アプリケーションによって動的に変更することができます。

セッション値への変更は、そのセッション(X_RUNコマンド)が実行を完了すると無効になることに注意してください。

詳細は、「標準X_RUNパラメータ」を参照してください。

 

引数

番号

タイプ

必須/任意

記述

最小長

最大長

最小小数桁数

最大小数桁数

1

A

必須

設定またはリセットされるセッション値の名前。現在、この組み込み関数によって次のセッション値を設定またはリセットすることができます。

USER:現在のユーザー - IBM iでは変更できません。USERを設定すると、USEX (サーバーへの接続時のデフォルト・ユーザーID)も設定されます。「セッション値USER=、GUSR=、およびUSEXに関する技術上の注記 」を参照してください。

GUSR:現在のグループ・ユーザー - IBM iでは変更できません。

USER_AUDIT:ユーザー編集スタンプで使用されるユーザー。IBM iで明示的に設定されている必要があります。 Visual LANSAで変更しても、スーパーサーバー・アプリケーション内でIBM iは更新されません。

PRTR:現在のプリンター

PPTH:プリンター・ファイル用の現在の完全修飾ディレクトリ

JOBPTY:ジョブ待ち行列の優先順位

DBMS_OPTIMIZE:大量のDBMSアクティビティの最適化

CONNECT_PARTITION: CONNECT_SERVER組み込み関数によって使用されるデフォルトの区画

DPTH:エミュレートされたIBM i データ待ち行列が作成/アクセスされるディレクトリ

EXPS:オブジェクト・セキュリティ・レコードのインポート時に実行されるアクション

HELP:使用するヘルプ・システム

HLPF:使用するヘルプ・ファイル

HMJB:現在のアプリケーションがホスト・モニターのジョブであるかどうかを識別します。YまたはN。LANSA開発チーム専用に予約されています。

LANG:現在実行中の言語を変更します。このセッション値には、LANSAの内部作業に関する詳しい知識が必要なため、LANSA開発チームによって作成されたアプリケーションだけに使用が制限されます。

ITRO などすべてのトレース・パラメータ。これは、問題が発生したときだけトレースを有効にする場合に役立ちます。これによって、トレース・ファイルのサイズを最小限に抑えることができます。

PSRA =:一次サーバー経路権限。PSRA=Yを設定することによって、権限チェックがサーバーにルーティングされることを示します。
このコマンドを使用して、実行中に値を設定します。値の設定は、接続を定義して確立する前に行ってください(X_RUN パラメータ詳細の「PSRA (プライマリ・サーバー・ルート証明機関)」に記載されている注意点を参照してください)。

PSRR:一次サーバー経路リポジトリ。PSRR=Y(デフォルト)を設定することによって、リポジトリのデータがローカルで取得できない場合、そのデータを取得するために要求がサーバーに送信されることを示します。
このコマンドを使用して、実行中に値を設定します。値の設定は、接続を定義して確立する前に行ってください(X_RUN パラメータ詳細の(a href="depb3_0000.htm")「PSRA (プライマリ・サーバー・ルート証明機関)」に記載されている注意点を参照してください)。

UDEF:スペースを含むユーザー定義の値(最大256バイト)。値にスペースが含まれている場合、または埋め込み引用符を使用する場合は、引用符で囲んでください。この場合、使用可能な長さは254バイトになります。注:埋め込み引用符はすべて一重引用符でなければなりません。二重引用符を使用すると、送信されたジョブが失敗します。

WPEN、 WPPN、WPPS、WPPD、WPFD、WPDF、WPDS、WPFO、WPASなどのWindowsの拡張印刷パラメータをこのパラメータで指定することができます。引数2で指定する値は、コマンド行でWindowsの拡張印刷パラメータを使用する際に適用されるものと同じ規則に従わなければなりません((a href="depb3_0090.htm")「Windows拡張印刷パラメータ」</a>を参照してください)。

XCMD:パスワードなどの特定パラメータ値を隠します。このパラメータは、設定後に送信されたジョブに対してのみアクティブになります。

CIPH: LANSAからOPenSSLを呼び出す際に使用する対称鍵暗号

1

50

 

 

2

A

必須

セッション値が設定またはリセットされる値。詳細については、以下の「技術上の注記」を参照してください。

1

256

 

 

 

戻り値

戻り値はありません。

技術上の注記 (全般)

      define #chguser reffld(#user)

      begin_loop 

         request #chguser 

         use set_session_value with_args('user=' #chguser)

         display #user 

               end_loop

    このファンクションは、変更されたユーザーを表示しません。ファンクションが最初に呼び出されたときの#user(*USERからのデフォルト)を表示します。デフォルトとなるシステム変数*USERは、静的で、ファンクション起動時にのみ初期化されます。

セッション値USER=、GUSR=、およびUSEXに関する技術上の注記

セッション値USER_AUDITに関する技術上の注記

セッション値PRTR=とPPTH=に関する技術上の注記

セッション値JOBPTY=に関する技術上の注記

セッション値CONNECT_PARTITION=に関する技術上の注記

セッション値DBMS_OPTIMIZE=に関する技術上の注記

移植性に関する考慮事項

IBM i上で実行されるRDMLXコードでこの組み込み関数を使用する場合は、COMMITを実行して、コミット制御を開始する必要があります。

BEGIN_SYNC_nnnn

複雑なDBMSアクティビティの開始を指定し、DBMS最適化モードをオンに切り替えます。「ハード」コミットは、"nnnn"回の「ソフト」同期ポイントの呼び出しごとに実行されます。

SYNC_POINT

複雑なDBMSアクティビティの「ソフト」同期ポイントを指定します。ソフト同期ポイントは、「最適化された」コミット制御の境界に相当します。

END_SYNC

複雑なDBMSアクティビティの終了を指定し、DBMS最適化モードをオフに切り替えます。

DBMS_OPTIMIZEの使用法は、例をもとに説明します。

次の単純なRDMLファンクションについて考えてみます。

begin_loop from(1) to(2000) 

       insert fields(......) to_file(testfile) 

end_loop

通常の環境では、このファンクションは自動コミットを使用し、1回の挿入ごとにDBMSコミット操作を実行します。

通常、多くのDBMSコミット操作は非常に低速です。コミットは、このようなアプリケーション(すなわち、同じ操作を5回や10回ではなく数千回も繰り返すアプリケーション)のパフォーマンスに非常に大きく影響する可能性があります。

ファンクションを次のように変更します。

use set_session_value ( DBMS_OPTIMIZE BEGIN_SYNC_100 )

begin_loop from(1) to(2000)

   insert fields(......) to_file(testfile)

   use set_session_value ( DBMS_OPTIMIZE SYNC_POINT )

end_loop

use set_session_value ( DBMS_OPTIMIZE END_SYNC )

これによって、このファンクションは以前より速く実行される可能性があります。DBMS_OPTIMIZE操作によって、基となるOAM(オブジェクト・アクセス・モジュール)がトランザクションをより適切に解析し、それによってトランザクションを最適化できるようになります。

パフォーマンスが向上する最大の理由は、「ソフト」SYNC_POINTが100回実行されるごとに、「ハード」、つまり実際のDBMSコミット操作が発行されるためです。このため、BEGIN_SYNC_100という値が使用されています。これによって、DBMSトランザクション全体の処理が速くなります。

もう1つの例として、次の「バッチ」形式のファンクションを挙げます。

select fields(.....) from_file(customer) where(.......)

   select fields(.....) from_file(orders) with_key(customer)

       call *direct calculate

       select fields(.....) from_file(items) with_key(orderno) 

              update fields(.....) in_file(items) 

       endselect 

       update fields(.....) in_file(orders) 

  endselect 

endselect

このバッチ形式のプログラムを次のように変更することによって、そのパフォーマンスを向上させることができます。

use set_session_value ( DBMS_OPTIMIZE BEGIN_SYNC_20 )

 select fields(.....) from_file(customer) where(.......)

   select fields(.....) from_file(orders) with_key(customer) 

     call *direct calculate 

     select fields(.....) from_file(items) with_key(orderno)

           update fields(.....) in_file(items) 

   endselect 

   update fields(.....) in_file(orders) 

 endselect 

use set_session_value ( DBMS_OPTIMIZE SYNC_POINT ) endselect

use set_session_value ( DBMS_OPTIMIZE END_SYNC )

次に、DBMS_OPTIMIZEを使用するときに理解しておく必要がある項目および従う必要があるルールを示します。

BEGIN_SYNC_nnnn

SYNC_POINT

END_SYNC

LANSA SuperServerモードで使用された場合でも、コミットを発行します。