CHAPTER 5: Empress 変数


5.1 はじめに

Empress 問い合わせ言語は、文字列変数のリストとして管理しています。 変数は出力することができ、新しい変数の追加、古い変数の削除、および 変数の値の変更、また使用することが可能です。

変数は、以下の 3 種類があります。

  1. 英数字変数。 文字で始まり、文字と数字が含まれた名前。

  2. 数字変数。 "1" から "99"までの範囲の名前。

  3. システム変数。 Empressによって特定の目的に使用される変数。

英数字変数は、 Empress SQL: リファレンスSETコマンドに 記述されています。

変数の値は、変数名の前にドル記号($)を置くことで参照することができます。 また、変数名の後に特別な文字を入力するための必要がある箇所では、 次のように変数名は、中括弧で囲む必要があります。 ${VARIABLE} 例えば、"personnel_file"というデータファイルから、 データを"personnel"テーブルに挿入する場合、 入力の手間を省くために 変数"p""personnel"として、 次のように指定したとします。

   INSERT INTO $p FROM '$p_file';

この場合、変数p_fileが定義されていないため、 エラーメッセージが表示されるため、次のように入力します。

   INSERT INTO $p FROM '${p}_file';

これにより、目的のコマンドである "INSERT INTO personnel FROM personnel_file;" を実現できます。

ドル記号($)は、変数名の拡張であると認識しないようにするには、 ドル記号($)を重複させる必要があります。例えば、 $$pは、文字列の$pと評価されます。 これは文字列の任意の位置に適応し、各単語の最初だけに適用されるわけでは ありません。 注意として、変数の値を取得するために使用する文字と 区切りとして使用される文字はいずれも、 EmpressシステムMSQLVARCHARS変数の値を設定すること によって変更できます。 以下の例は、 "$"の代わりに "&" を指定し、 中括弧の代わりに大括弧を指定します。

   SET MSQLVARCHARS TO &[];

変数の設定は、SETコマンドを使用し、 削除は、UNSETコマンドを使用します。 変数の参照は、SHOWコマンドを使用します。



5.2 Empress システム変数

Empressは、行を継続するための文字、またロックされたテーブルに対し アクセスするための試行回数、およびSELECTコマンドの出力フォーマットなどの システムのデフォルトを決定する数多くのシステム変数を持っています。 これらの変数は、SQLセッション中の問い合わせ言語によって設定するか、 あるいはオペレーティングシステムからの継承による2つの方法があります。

問い合わせ言語からシステム変数を設定するためには、 以下の形式のコマンドを使用します。

   SET variable TO value;

上記のvariableは、システム変数名であり、 (変数名はすべて大文字でなくてはなりません。) valueは、値になります。 valueに、 空白、タブ、ピリオド、コロン、セミコロン、スラッシュ、または改行が 含まれる場合、引用符で囲む必要があります。

5.2.1 変数の設定

SQLセッション中の問い合わせ言語によって変数を設定した場合、 現在のセッション中でのみ有効であり、Empressを終了した場合は 再設定する必要があります。 また、オペレーティングシステム上で変数を設定した場合は、 オペレーティングシステムにログオンし続けている間は有効であるため、 SQLセッションの開始、終了を繰り返しても変数は有効です。 オペレーティングシステム上の設定された変数は、 Empress 4GLおよびEmpress Report Writer でも有効になります。

UNIX の場合

UNIX シェルから変数を設定するために C シェル環境においては setenvコマンドを使用します。 また、Bourne シェル環境ではexportコマンドを使用します。

例えば、変数MSEDITORに ""/usr/ucb/vi""を設定する場合、 C シェル環境では以下のように入力します。

   setenv MSEDITOR /usr/ucb/vi

B シェル環境では以下のように入力します。

   MSEDITOR=/usr/ucb/vi/
   export MSEDITOR

毎回の作業セッションにおいて Empressシステム変数のリストを 永続的に保持するためには 以下のいずれかの方法になります。

  1. UNIXファイル上にこれらの変数を設定し、 Empressを起動するたびにこのファイルから変数を設定します。

  2. .login (C シェル) または.profile(Bourne シェル) ファイルに変数を設定します。この設定方法については、UNIXシステムの ドキュメントなどを参照してください。

Windows NT の場合

Windows NT環境から変数を設定するためには環境設定コマンドを使用します。 例えば、Windows NT コマンドを使用して変数MSVALSEPに""|"" を設定する場合、以下のように入力します。

   set MSVALSEP=|

また、いくつかのEmpressシステム変数を永続的に設定したい場合は、 1 つの方法としてEmpressシステム変数をユーザー環境変数のリストに 追加することです。この設定方法については、Windowsシステムのドキュメントなど を参照してください。

5.2.2 Empress システム変数のリスト

以下にシステム変数のリストとそれぞれの簡単な説明を示します。

表 3-1 パスに関連する変数

変数 説明
MSHELPPATH Empress ヘルプファイルディレクトリ
MSTERMDB Empress 4GL端末定義データベース
MSAPFMDB Empress 4GLフォームデータベース
MS4GLPSHEADER Empress 4GLポストスクリプト・ヘッダーファイル
MSKILLLOGDIR Empressユーティリティempkillログファイルディレクトリ
MSCRAYQDELLOGDIR Empressユーティリティempqdelログファイルディレクトリ (クレイスーパーコンピュータのみ)
MSGUIDB Empress GUIのシステムディレクトリ
MSGUIDEFCOLORFILE Empress GUIのカラー定義ディレクトリ
MSSHAREDMEMORYDIR mmap(メモリーマッピング)で使用されるプラットフォームの メモリーマップファイルディレクトリ

表 3-2 全体に関する変数

変数 説明
MSDATELIMIT 2桁の年数の入力のための適切な世紀
MSDATEPIC 入出力のための日付フォーマット
MSDDLTRANS データ定義言語(DDL)コマンドのトランザクションによる保護
MSDISPLAYKATAKANA 半角カナ文字をサポートしていない端末(日本語バージョンのみ)
MSDOLLAR Dollarデータ型のフォーマット
MSEDITOR ".zz"コマンドおよびEmpress 4GLで利用されるエディタ
MSFILESOPEN Empressよってオープンされる最大ファイル数
MSFORCEPLOCK プロセスをメモリにロック(適切な特権を持っていると仮定します。)
MSINDEXLISTCUTOFF テーブルの総レコード数に対するパーセンテージを指定します。 それを超えた場合、検索においてインデックスを使用しません。
MSINDEXLISTCUTOFFMIN MSINDEXLISTCUTOFFの設定を無視し、インデックスから検索する最小レコード数
MSINDEXSORTCUTOFF テーブルの総レコード数に対するパーセンテージを指定します。 レコードのソート処理においてこの値を超えた場合にインデックスを使用します。
MSKEEPNONPRINTCHAR 非印刷文字を解釈するフラグ
MSLANG 出力するEmpressメッセージの言語指定
MSLINECONT 行を続けるために使用する文字列
MSLKCOMMITADDEND 連続登録処理間のロックマネージャへのアクセスを減らします。
MSLOCKPLAN Empressよるロック使用情報の提供
MSNLSCODESET 使用しているキーボードおよびモニターに適合するコードセット名
MSNULLVALUE null 値を置き換える文字列
MSPAGER 問い合わせ言語内でページ処理するためのシステムプログラム
MSPERMS Empress出力ファイルのアクセス許可
MSPRINTER プリンタへ出力を送るために使用するシステムプログラム
MSQUERYPLAN Empressによって使用されるインデックス情報を提供します。
MSSHELL Empress 中から使用するシステムのシェル
MSSORTBYPASS ソート処理中でのロックされたレコードをスキップするためのフラグ
MSSORTSPACE ソート処理中に使用されるスペースの制限バイト数
MSTHRESHOLDPFLSIZE 自動的なフラッシュおよびマージがグローバルフリーリストに実行される以前の 内部のプロセスフリーリストの最大サイズ
MSTMPDIR テンポラリファイルを作成するディレクトリ
MSTMPPFX テンポラリファイルに使用されるプリフィックス
MSVALSEP ダンプファイル中のアトリビュート値を分けるために使用される文字列
MSVERSIONMESG 起動時のEmpressバージョンの出力設定
MSWRAPMARGIN 行の中断とラッピングの制御
MSCASEINSENSITIVE 大文字・小文字を区別しない設定
MSNTMPFILECACHE 検索処理中に使用するテンポラリテーブルに関連した テンポラリファイルに使用するキャッシュサイズの指定
MSQUOTEDIDENTIFIERS 引用識別子の許可
MSSELEXTFETCH Empress mr ルーチンの mrprev 関数を使用する場合に 以前のバージョンとの互換性の問題のための設定
MSSELMAXROWS SELECT 文によって Empress 対話型 SQL インターフェースに戻される 最大レコード数(行数)の設定
MSSELTIMEOUT Empress 対話型 SQL インターフェースへ 戻るための SQLの SELECT文の実行の ウェイト秒数の設定
MSTMPFILECACHESIZE 検索処理中に使用するテンポラリテーブルに関連した テンポラリファイルに使用するキャッシュサイズの指定

表 3-3 トランザクション関連の変数

変数 説明
MSTRANSCOMMENT トランザクションのコメント文字列
MSTRANSSYNC 即時にファイルへ書き込みさせるフラグ
MSTRANSTABLELOCK トランザクション中は強制的にテーブルレベルロックにするフラグ
MSTRANSUFNBI トランザクション前イメージリストのサイズ
MSTRANSUFNGFL フリーレコードへのアクセス制御
MSTRANSWARMPROTECT ウォームリスタートからトランザクションを保護するフラグ

表 3-4 ロック関連の変数

変数 説明
MSCFEXCLRETRY コーディネーターファイルへの排他ロックアクセスのリトライ回数
MSCFEXCLSLEEP コーディネーターファイルへの排他ロックアクセスのリトライ間のインターバル
MSEXCLRETRY ロックファイルへ排他的アクセスをするためのリトライ数
MSEXCLSLEEP ロックファイルへ排他的アクセスをするためのリトライ間のインターバル
MSIAEXCLRETRY 対話型インターフェイスのための排他アクセスリトライ数
MSIAEXCLSLEEP 対話型インターフェイスのための排他アクセスリトライのインターバル
MSIALOCKRETRY 対話型インターフェイスのためのロックリトライ数
MSIALOCKSLEEP 対話型インターフェイスのためのロックリトライのインターバル
MSINDEXRETRY インデックスをロックするためのリトライ数
MSINDEXSLEEP インデックスをロックするためのリトライ間のインターバル
MSLOCKRETRY 実際のロックエントリするためのリトライ数
MSLOCKSLEEP 実際のロックエントリするためのリトライ間のインターバル

表 3-5 クエリ関連の変数

変数 説明
MSQLAUTOPAGE すべてのコマンド出力をページ処理プログラムに送るかどうかのフラグ
MSQLCMDSAVE 履歴機能によって保存するコマンド数
MSQLCOUNT 検索、更新、削除されたレコード件数を表示するかどうかのフラグ
MSQLECHO コマンドのエコーの制御
MSQLONELINE 改行がコマンドの終了を指示
MSQLPROMPT1 第1のEmpressプロンプト
MSQLPROMPT2 第2のEmpressプロンプト
MSQLTRANSACTION 各コマンドがトランザクション上で実行され、キャンセルされる可能性があります。
MSQLVARCHARS Empress変数表示で使用される文字

表 3-6 SELECT出力フォーマット関連の変数

変数 説明
MSQLGCHARWIDTH パラメータなしのcharcterデータのカラム幅
MSQLGDATEWIDTH パラメータなしのdateデータのカラム幅
MSQLGDECIMALWIDTH パラメータなしのdecimalデータのカラム幅
MSQLGFLOATWIDTH パラメータなしのfloatデータのカラム幅
MSQLGINTEGERWIDTH パラメータなしのintegerデータのカラム幅
MSQLSELBOX 出力データに外枠表示をおこなうかどうかのフラグ
MSQLSELCOLSEP カラムセパレータ文字
MSQLSELGROUPCOLCROSS グループセパレータと交差するカラムに表示する文字
MSQLSELGROUPSEP グループセパレータ文字
MSQLSELHEAD ヘッダーを出力するかどうかのフラグ
MSQLSELHEADCOLCROSS ヘッダーと交差するカラムに表示する文字
MSQLSELHEADSEP ヘッダーセパレータ文字
MSQLSELKEEPDUPLICATE 重複したグループの値を表示するフラグ
MSQLSELROWCOLCROSS カラムと交差する行に表示する文字
MSQLSELROWSEP 行セパレータ文字
MSQLSELTRUNCATE 長い行の切り詰めのフラグ
MSQLSELWARN 関数にnull引数がある場合、警告を表示

表 3-7 オンラインバックアップ関連の変数

変数 説明
MSCOORDTIMERFREQ クライアントがコーディネータにチェックインしなければならない期間(秒単位)
MSOLBBACKUPDEVICE オンラインバックアップ装置名
MSOLBBLOCKSIZE オンラインバックアップ装置のブロックサイズ
MSOLBRECOVERYLOG オンラインバックアップのリカバリログファイル

表 3-8 シェアードメモリ関連の変数

変数 説明
MSMKDBSHMEM シェアードメモリを伴ったデータベースの作成のフラグ
MSSHMLOCATION シェアードメモリセグメントが存在するシステムアドレスの設定
MSSHMPERMS シェアードメモリパーティションのアクセス許可の設定

表 3-9 ダーティリードとデータストリーミング関連の変数

変数 説明
MSBULKSEGMENTSIZE バルクデータの最小ブロックを転送するためのメモリサイズ
MSVALIDATELEVEL チェックサムの結果によってのダーティリードの動作規定
MSVALIDATERETRY 無効なレコードを読むためにEmpressがおこなうリトライ数
MSVALIDATESLEEP 無効なレコードを読むためのリトライ間のインターバル秒数

表 3-10 データベースユーティリティ関連の変数

変数 説明
MSKILLRETRY empkillMSKILLSIGNAL変数によって指定された終了シグナルを 送るリトライ数 MSKILLSIGNAL.
MSKILLSLEEP empkillMSKILLSIGNAL変数によって指定された終了シグナルを 送るリトライ間のインターバル秒数
MSKILLSIGNAL empkillによって送られる終了シグナル

表 3-11 サーバー/インターネット関連の変数

変数 説明
MSSERVERHEARTBEAT データベースサーバーのアイドルタイムをチェックするための期間
MSSERVERNETTYPE サーバーアクセスタイプ
MSSERVERTERSELOG コンパクトなフォーマットのサーバーログファイル情報
MSINETREPLYTIMEOUT 高レベルの応答を待つクライアントのタイムアウト値
MSINETREPLYRETRY 高レベルの応答を待つクライアントのリトライ数
MSINETMESSAGETIMEOUT 確認を待つクライアントのメッセージハンドラのためのタイムアウト値
MSINETMESSAGERETRY 確認を待つクライアントのメッセージハンドラのためのリトライ数
MSINETPACKETTIMEOUT 確認を待つクライアントのパケットハンドラのためのタイムアウト値
MSINETPACKETRETRY 確認を待つクライアントのパケットハンドラのためのリトライ数
MSGETHOSTTIME ホスト情報を検索するためのタイムアウト値
MSHOSTNAME システムのホスト名

表 3-12 オペレーティングシステムに関連した変数

変数 説明
MSGETPW ユーザーIDを得るために getwuidシステムコールの代わりにgetpwを使用します。 これは互換性のため。
MSGCWDSIGCHLDRESET オペレーティングシステムコールgetcwdのためにシグナルを リセットします。
MSCRAYQDELSLEEP empqdelが、リクエストが死んだかどうかをチェックする前に待つ秒数。 クレイシステムのみで有効。
MSCRAYQDELRETRY empqdelが、終了シグナルを送ることを試行する回数。 クレイシステムのみで有効。
MSCRAYQDELSIGNAL empqdelためのシグナル番号またシンボル名の設定。 クレイシステムのみで有効。
MSMIGRATERETRY 移行したファイルへアクセスするためのリトライ数 クレイシステムのみで有効。
MSMIGRATESLEEP 移行したファイルへアクセスするためのリトライのインターバルタイム クレイシステムのみで有効。

表 3-13 レポートライター関連の変数

変数 説明
MSMWNULLOK ヌルの出力時のエラーを抑止します。
MSPAGELENGTH レポートのデフォルトページ長
MSPAGEWIDTH レポートのデフォルトページ幅

表 3-14 フォートランインターフェイス関連の変数

変数 説明
MSF77BACKSCAN フォートランコンパイラの動作について定義する内部設定
MSF77BUFCOPY フォートラン文字列を補助バッファにコピーする必要があるかどうかフラグ
MSF77IGNORELENGTH フォートラン文字列の受け渡しの長さを無視する設定
MSF77TERMCHAR ASCII(0)の代わりにフォートラン文字列を終了するための文字を与えます。
MSF90BACKSCAN フォートランコンパイラの動作について定義する内部設定
MSF90BUFCOPY フォートラン文字列を補助バッファにコピーする必要があるかどうかフラグ
MSF90IGNORELENGTH フォートラン文字列の受け渡しの長さを無視する設定
MSF90TERMCHAR ASCII(0)の代わりにフォートラン文字列を終了するための文字を与えます。

表 3-15 Empress 4GL 関連の変数

変数 説明
MS4GLCHKNULVAL NOT NULLアトリビュートのために null 値を見つけます。
MS4GLCOMPATCHK 可能な互換性の問題をチェックします。
MS4GLDEBUGSETUP Empress 4GL デバッガーのセットアップ情報を保存したファイルパス。
MS4GLFLUSHTYPEAHEAD Empress 4GLが反応可能以上に速くタイプされる キーボード入力を保存します。
MS4GLFONTNAME Empress 4GLで使用されるフォント名。
MS4GLNOLOADRUNMSG アプリケーションがコールされた時のインフォメーションメッセージの抑止。
MS4GLPRINTSCREEN 画面ダンプファイル名
MS4GLPRINTSCREENFORMAT 画面ダンプフォーマット
MS4GLPSWIDTH ポストスクリプト出力のためのバウンディング・ボックスの幅
MS4GLPSHEIGHT ポストスクリプト出力のためのバウンディング・ボックスの高さ
MS4GLXASYNCOFF 割り込み処理
MS4GLXCOLORTOLERANCE 色の扱い
MS4GLXCURSORCOLOR テキストカーソルの色
MS4GLXPOINTERCOLOR X Windows ポインタの色
MS4GLXNEWCOLORMAP 使用するカラーマップ
MS4GLXWINDOWTITLE 画面タイトル
MSTERM 端末タイプ
MSTERMSYS 端末タイプのプリフィックス

表 3-16 Empress GUI に関する変数

変数 説明
MSGUIDEFAULTSTYLE アプリケーション画面スタイル
MSGUIFONTSPEC Xterm のフォント定義
MSGUIRGBTEXT X Windows の RGB テキストファイルのパス
MSGUISYSMAIN Empress GUI ビルダー システムのメイン画面スタイル

表 3-17 Empress 内部変数

変数 説明
MSSAVECWD 作業ディレクトリの値の保存
MSBUFFERRECORDFACTOR バッファリング動作の読み込みレコード数の制御
MSMAXPROCS ロックファイル中のロックマネージャにアクセス可能な最大プロセス数
MSFILELOCKNBUCKETS ロックファイル中のロックマネージャのハッシュ・バケット数
MSFILELOCKNLOCKS ロックファイル中のロックマネージャの最大ロック数
MSNRECORDCACHE レコード数分のキャッシュサイズ
MSLICENCE ライセンス情報

表 3-18 ネットワーク・サーバーに関する変数

変数 説明
MSUSERAUTHCONFIGFILE ユーザー認証コンフィグレーションファイル名
MSNETSERVERCONFIGFILE ネットワークサーバーコンフィグレーションファイル名
MSNETTYPECONFIGFILE ネットワークタイプコンフィグレーションファイル名
MSCONFIGFILEPATH ネットワークサーバー関連コンフィグレーションファイルのパス

表 3-19 リプリケーションに関する変数

変数 説明
MSREPLOCKRETRY リプリケーション同期の中のマスターテーブル上のロックを取得するためのリトライ数
MSREPLOCKSLEEP リプリケーション同期の中のマスターテーブル上のロックを取得するためのリトライ の間のインターバル
MSREPENABLUPDATE リプリケーションテーブルを更新可能にすることを有効にする内部変数。
MSREPPURGEINTERVAL MSREPPURGEINTERVAL は、 削除されたレコードが自動的に消去される前に、 その従属したリプリケーションリプリケートと同期する リプリケーションテーブルに許可する 最大合計時間を設定します。