3.2.1 SPPの実行環境の設定

SPPの実行環境を設定するときは,[TP1/LiNKアプリケーション管理SPP]ウィンドウの[サーバ定義(E)...]ボタンをクリックします。

ユーザサーバ名を選択してからボタンをクリックすると,選択したユーザサーバの環境を設定する[SPP環境設定]ダイアログボックスが表示されます。

ユーザサーバ名を選択しないでボタンをクリックすると,[アプリケーション環境SPP]ダイアログボックスが表示されます。

図3-14 [アプリケーション環境SPP]ダイアログボックス

[図データ]

ボタンの使い方
[新規作成(N)...]ボタン
SPPの実行環境を新しく設定する[SPP環境設定]ダイアログボックスを開きます。
[開く(O)...]ボタン
すでに設定したSPPの実行環境を変更する[SPP環境設定]ダイアログボックスを開きます。リストボックスから実行環境を変更するユーザサーバ名を選択して,[開く(O)...]ボタンをクリックします。
[削除(D)]ボタン
すでに設定したSPPの実行環境を削除します。リストボックスから削除するユーザサーバ名を選択して,[削除(D)]ボタンをクリックします。
[自動起動設定(A)...]ボタン
SPPの自動起動および自動起動の順番を指定する[自動起動設定]ダイアログボックスを開きます。
[終了(C)]ボタン
[アプリケーション環境SPP]ダイアログボックスを終了します。
SPPの環境を設定するダイアログボックスの開き方
新しくSPPの実行環境を設定する場合と,すでに設定してあるSPPの実行環境を変更する場合とで,ダイアログボックスの開き方が異なります。
  • 新しくSPPの実行環境を設定する場合
    [アプリケーション環境SPP]ダイアログボックスの[新規作成(N)...]ボタンをクリックすると,[SPP環境設定]ダイアログボックスが表示されます。
    新しくSPPの実行環境を設定する場合は,初期値が設定されています。[SPP環境設定]ダイアログボックスの初期値については,「2.3 セットアップしたときの初期値」を参照してください。
  • すでに設定してあるSPPの実行環境を変更する場合
    [アプリケーション環境SPP]ダイアログボックスのリストボックスから,実行環境を変更したいSPPのユーザサーバ名を選択します。そして,ユーザサーバ名をダブルクリックするか,または[開く(O)...]ボタンをクリックすると,[SPP環境設定]ダイアログボックスが表示されます。

図3-15 [SPP環境設定]ダイアログボックス

[図データ]

ボタンの使い方
[詳細設定(T)...]ボタン
SPPの環境の詳細を設定する[SPP詳細設定]ダイアログボックスを開きます。
[開く(O)]ボタン
[ユーザサーバ名(U)]ドロップダウンリストにユーザサーバ名を指定してから[開く(O)]ボタンをクリックすると,該当するSPPに設定している内容をダイアログボックスに表示します。
[初期値設定(I)]ボタン
[SPP環境設定]ダイアログボックスの,次に示す項目を初期値にします。
  • [プロセス数]欄
  • [優先順位]欄
  • [スケジュール情報]欄
[削除(D)]ボタン
[ユーザサーバ名(U)]一覧に指定したユーザサーバ名の設定内容を削除します。
[自動起動設定(A)...]ボタン
SPPの自動起動および自動起動の順番を指定する[自動起動設定]ダイアログボックスを開きます。
[上書き保存(V)]ボタン
[SPP環境設定]ダイアログボックスに設定した各項目の値を保存します。項目をすべて設定し終えてから[上書き保存(V)]ボタンをクリックすると,各項目を設定できます。
新規に作成したユーザサーバまたは[登録するサービス]欄を変更したユーザサーバの環境を設定すると,設定した環境に合わせたスタブのソースファイルが生成されます。スタブのソースファイルは,%DCDIR%¥aplib¥フォルダの下に「ユーザサーバ名_sstb.c」の名称で作成されます。ただし,すべてのサービスにUAP共用ライブラリ(DLL)を指定した場合は,スタブのソースファイルは生成されません。
[終了(C)]ボタン
[SPP環境設定]ダイアログボックスを終了します。
ダイアログボックスに設定する項目
[ユーザサーバ名(U)]  ~<1~8文字の識別子>
新しくSPPの実行環境を設定するときは,実行環境を設定するSPPのユーザサーバ名を入力します。すでに設定してあるSPPの実行環境を変更するときは,ドロップダウンリストからユーザサーバ名を選択します。
ユーザサーバ名には,英字の大文字と小文字の区別はありません。小文字で指定しても,すべて大文字で管理されます。
[サービスグループ名(G)]  ~<1~31文字の識別子>
SPPのサービスグループ名を入力します。ここには[ユーザサーバ名(U)]一覧の指定と同じ名称が表示されます。名称を変更するときは,直接入力してください。
[プログラム名(M)]  ~<1~14文字の識別子>
SPPの実行形式ファイル名を,".exe"を付けないで入力します。ここには[ユーザサーバ名(U)]一覧の指定と同じ名称が表示されます。名称を変更する場合は,直接入力してください。
[コメント]
このダイアログボックスの内容に関するコメントを任意で入力します。入力したコメントは,[アプリケーション環境SPP]ダイアログボックスのコメントの行に表示されます。
[プロセス数]欄
SPPの常駐プロセスと非常駐プロセスの数を指定します。[システム環境設定]ウィンドウの[サーバ数]欄にある[SPP(P)]には,常駐プロセス数と非常駐プロセス数の合計を指定してください。
常駐プロセス数と非常駐プロセス数の両方に0を指定すると,「常駐プロセス数1,非常駐プロセス数0」が仮定されます。[常駐(R)]の値と[非常駐(N)]の値の合計が128までになるように指定してください。合計が128を超える値は指定できません。
  • [常駐(R)]  ~<符号なし整数>((0~128))《1》
    このSPPを実行する常駐プロセスの数を指定します。常駐プロセス数に0を指定したときは,非常駐プロセス数には1以上の値を指定してください。
  • [非常駐(N)]  ~<符号なし整数>((0~128))《0》
    このSPPを実行する非常駐プロセスの数を指定します。非常駐プロセス数に0を指定すると,常駐プロセスだけのユーザサーバになります。
[優先順位]欄
  • [プロセス(P)]  ~<符号なし整数>((0~39))《0》
    このSPPが実行されるときの優先順位を指定します。値が小さいほど優先順位が高くなります。ここで指定する優先順位は,次に示す4段階に分かれます。
    0~9:THREAD_PRIORITY_NORMAL(優先度高い)
    10~19:THREAD_PRIORITY_BELOW_NORMAL
    20~29:THREAD_PRIORITY_LOWEST
    30~39:THREAD_PRIORITY_IDLE(優先度低い)
    [プロセス(P)]で指定できるのは,ユーザサーバのスレッド優先順位だけです。スレッド優先順位については,Microsoft Visual C++のWin32 APIの文法を参照してください。
  • [スケジュール(H)]  ~<符号なし整数>((1~16))《8》
    スケジュールの優先順位を指定します。値が小さいほど優先順位が高くなります。
[スケジュール情報]欄
  • [非常駐プロセスを開始するプロセスあたりのサービス滞留数(Q)]  ~<符号なし整数>((0~512))《3》
    非常駐プロセスを起動する目安になる,サービスの滞留数を指定します。(ここに指定した値×起動中のプロセス)の数を超えてサービス要求が滞留したときに,TP1/LiNKは非常駐プロセスを起動します。スケジュールキューに滞留しているサービス要求の数が(ここに指定した値×起動中のプロセス)の数以下になると,TP1/LiNKは非常駐プロセスを終了させます。
    この項目の指定は,非常駐プロセスを使うSPPの場合だけ有効になります。
  • [サービスの最大入力データ長(L)]  ~<符号なし整数>((1~30719))《3》(単位:キロバイト)
    サービスを要求されたときにクライアントから渡されるデータの最大長を指定します。
  • [サービス要求データ格納プール長(B)]  ~<符号なし整数>((1~30719))《12》(単位:キロバイト)
    サービスを要求されたときにクライアントから渡されるデータを格納するプールの最大長を指定します。[サービスの最大入力データ長(L)]よりも少ない値を指定するとエラーになります。ここに指定する値を大きくすると,処理待ちのサービス要求をより多く滞留できます。
    SPP環境設定のサービス要求データ格納プール長に十分な値を指定しなかった場合,KFCA00850-EまたはKFCA00854-Eのエラーメッセージが出力される場合があります。この場合,該当するSPPの[サービス要求データ格納プール長(B)]に,次に示す計算式で求めた値を指定して保存したあと,TP1/LiNKを正常開始させてください。
    サービス要求データ格納プール長=↑((dc_rpc_call関数のinパラメタ長+512バイト)×サービス滞留数)÷1024↑
    (凡例)
    ↑↑:小数点以下を切り上げます。
[登録するサービス]欄
  • [サービス名(S)]  ~<1~31文字の識別子>
  • [エントリポイント名(E)]  ~<1~20文字の識別子>
    このサービスグループに属するサービス名とそのサービスを提供するエントリポイント名の組をすべてのサービスについて指定します。エントリポイント名とは,C言語の場合は関数名,COBOL言語の場合はプログラム名または入り口名のことです。
    追加する場合は,欄内下の[サービス名(S)]および[エントリポイント名(E)]を入力して,[設定(J)]ボタンをクリックします。
    削除する場合は,リストボックスから削除するサービス名を選択して,[削除(K)]ボタンをクリックします。なお,登録したサービス名は昇順に表示されます。
  • [UAP共用ライブラリ(DLL)名(F)]  ~<1~63バイトのパス名>
    サービス関数動的ローディング機能を使うサービスの場合,UAP共用ライブラリを指定します。UAP共用ライブラリは,ダイナミックリンクライブラリ(Dynamic Link Library)と同じ意味です。一般に拡張子が,「.dll」であるファイルのことを指します。[UAP共用ライブラリ(DLL)名(F)]の指定を省略した場合,スタブを使うサービスが登録されます。
    なお,UAP共用ライブラリ名として,次に示す文字は指定できません。
    ・空白
    ・タブコード
    ・等号(=)
    ・コンマ(,)
    ・セミコロン(;)
    ・引用符(")
    UAP共用ライブラリの指定方法について次に説明します。
    ●環境変数を使用する場合
    UAP共用ライブラリのパス名に環境変数を指定する場合,パス名の先頭だけ環境変数を指定できます。また,ここで指定するユーザサーバの環境変数は,グローバルまたはローカルに指定できます。なお,環境変数を指定した場合は,環境変数展開後のパス名で最大123文字指定できます。
    指定例:
    [サービス名(S)]:serviceA
    [エントリポイント名(E)]:serviceA
    [UAP共用ライブラリ(DLL)名(F)]:%USRDIR%¥lib¥usrlib.dll
    ユーザサーバの環境変数:USRDIR
    ユーザサーバの環境変数値:C:¥OLTP1¥usrdir
     
    ●UAP共用ライブラリ名称をフルパスで指定する場合
    UAP共用ライブラリ名として,UAP共用ライブラリ名称のフルパスを指定した場合,TP1/LiNKは指定したUAP共用ライブラリを検索して使用します。
    指定例:
    [サービス名(S)]:serviceA
    [エントリポイント名(E)]:serviceA
    [UAP共用ライブラリ(DLL)名(F)]:C:¥OLTP1¥usrdir¥lib¥usrlib.dll
     
    ●UAP共用ライブラリ名称だけを指定する場合
    UAP共用ライブラリ名としてUAP共用ライブラリ名称だけを指定した場合,TP1/LiNKは指定したUAP共用ライブラリをOSのライブラリサーチパスを基に検索して使用します。
    指定例:
    [サービス名(S)]:serviceA
    [エントリポイント名(E)]:serviceA
    [UAP共用ライブラリ(DLL)名(F)]:usrlib.dll
    UAP共用ライブラリ名称だけを指定する場合は,指定するUAP共用ライブラリをOSのライブラリサーチパス内に配置してください。
    UAP共用ライブラリの検索順序:
    Windowsでは,次に示す順番で指定したUAP共用ライブラリの検索が行われます。
    1. SPP実行ファイルが存在するフォルダ
    2. SPPのカレントフォルダ(%DCDIR%¥tmp¥home¥ユーザサーバ名)※1
    3. Windowsシステムフォルダ※2
    4. Windowsフォルダ※2
    5.[システム環境設定]ウィンドウの[サーチパス]欄に指定したサーチパス※3
    注※1 TP1/LiNKが管理する一時フォルダです。このフォルダはTP1/LiNKシステムやUAPの起動時に削除されるので,UAP共用ライブラリを格納しないことを推奨します。
    注※2 WindowsシステムフォルダまたはWindowsフォルダには,UAP共用ライブラリを格納しないことを推奨します。また,Windowsシステムフォルダとは,標準的な環境で「C:¥Windows¥System32¥」のことを示します。Windowsフォルダとは,標準的な環境で「C:¥Windows¥」のことを示します
    注※3 複数のサーチパスを指定している場合,最初に検索されたサーチパスのUAP共用ライブラリが使用されます。
     
    ●UAP共用ライブラリ名称をフルパスで指定する方法と名称だけを指定する方法を併用する場合
    UAP共用ライブラリの名称をフルパスで指定する方法と名称だけを指定する方法は併用できます。UAP共用ライブラリは,各UAP共用ライブラリの指定方式に従ってUAP上にローディングされます。ただし,名称をフルパスで指定する方法で指定したUAP共用ライブラリと名称だけを指定する方法で指定したUAP共用ライブラリが同一名称の場合,記述する順序によってローディングされるUAP共用ライブラリパスが異なるため注意してください。記述する順序の違いによるUAP共用ライブラリの検索順序について次に説明します。
     
    指定例1:
    UAP共用ライブラリの記述順序は次のとおりです。
    記述する順序[サービス名(S)]の指定例[エントリポイント名(E)]の指定例[UAP共用ライブラリ(DLL)名(F)]の指定例
    1serviceAserviceAusrlib.dll
    2serviceBserviceBC:¥OLTP1¥usrdir¥lib¥usrlib.dll
    UAP共用ライブラリの検索順序:
    まず,UAP共用ライブラリ名称だけを指定する方法のパス検索順序に従って,ライブラリパスが検索されます。最初に見つかったフォルダ下のUAP共用ライブラリがローディングされます。次にフルパスで指定する方法で指定したUAP共用ライブラリがローディングされます。
    指定例1の場合,2種類の異なるUAP共用ライブラリがUAP上にローディングされます。ただし,名称だけを指定する方法でUAP共用ライブラリを検索した結果,フルパスで指定したUAP共用ライブラリと同じものが検索されれば,同じUAP共用ライブラリが2回ローディングされます。
     
    指定例2:
    UAP共用ライブラリの記述順序は次のとおりです。
    記述する順序[サービス名(S)]の指定例[エントリポイント名(E)]の指定例[UAP共用ライブラリ(DLL)名(F)]の指定例
    1serviceAserviceAC:¥OLTP1¥usrdir¥lib¥usrlib.dll
    2serviceBserviceBusrlib.dll
    UAP共用ライブラリの検索順序:
    フルパスで指定する方法で指定したUAP共用ライブラリがローディングされます。次に名称だけを指定する方法で指定したUAP共用ライブラリをローディングしようとします。
    先にフルパスで同一名称のUAP共用ライブラリがローディングされているため,名称だけを指定する方法のパス検索順序が適用されないで,フルパスで指定する方法で指定したUAP共用ライブラリが再度ローディングされます。この指定順序の場合,フルパス指定したUAP共用ライブラリが2回,UAP上にローディングされます。
    ●スタブおよびサービス関数動的ローディング機能を使用するサービスを併用する場合
    指定例:
    UAP共用ライブラリの記述順序は次のとおりです。
    記述する順序[サービス名(S)]の指定例[エントリポイント名(E)]の指定例[UAP共用ライブラリ(DLL)名(F)]の指定例
    1serviceAserviceA指定なし
    2serviceBserviceBC:¥OLTP1¥usrdir¥lib¥usrlib.dll
    UAP共用ライブラリの検索順序:
    サービスは指定したサービス名の昇順で検索されます。
[ユーザサーバの環境変数]欄  ~<1~63文字の英数字>
SPPの環境変数を設定します。
  • 環境変数を設定する場合
    環境変数をシステム全体で有効にする場合は,[グローバル欄]にカーソルを位置づけます。環境変数を[ユーザサーバ名(U)]欄のユーザサーバでだけ有効にする場合は,[ローカル]欄にカーソルを位置づけます。
    次に,欄内下の[変数(Y)]と[値(Z)]に値を入力してから,[設定(W)]ボタンをクリックします。
  • 環境変数を削除する場合
    削除する環境変数を[グローバル]欄または[ローカル]欄から選択します。そして,[削除(X)]ボタンをクリックします。
エラーメッセージ
[SPP環境設定]ダイアログボックスの操作中にエラーが起こったときは,エラーメッセージが出力されます。表示内容を確認してから[OK]ボタンをクリックしてください。