[ 前のページ ] [ 次のページ ] [ 目次 ]

# 4 DECwindowsの使用

本章には, DECwindows起動後に行う作業の情報が含まれています。

トピック | セクション
--- | ---
ディスプレイの設定 | 第4.1節
SHOW DISPLAYコマンドの使用 | 第4.1.2 項
ログイン・シーケンス | 第4.2節
セッション・マネージャ環境のカスタマイズ | 第4.3節
ロゴの変更 | 第4.3.1 項
専用アカウントの作成 | 第4.3.2項
システム・リソース・ファイルの変更 | 第4.5節
プリント・フォーマットのカスタマイズ | 第4.6節

# 4.1 ディスプレイの設定

クライアント・アプリケーションが起動すると,アプリケーションはディスプレイ・ サーバとの接続を一つあるいは複数オープンします。ディスプレイ・ サーバは,ローカルまたは遠隔ノードに設置できます。アプリケーションは, 基礎となるツールキット,組み込みルーチンやXlibルーチンにディスプレイ・ サーバのノード名やほかの属性を伝えなければなりません。 この情報は, "display name"（ディスプレイ名）と呼ばれる文字列に含まれています。

アプリケーションはディスプレイ名を基礎ルーチンに渡せます。しかし通常, アプリケーションは基礎ルーチンにヌルのディスプレイ名を渡します。Xlib がディスプレイをオープンする際に,ディスプレイ名を探すために論理名DECW$DISPLAY を変換します。DECW$DISPLAYが定義されていない場合は, Xlib は論理名SYS$OUTPUTを変換します。

ディスプレイ名のフォーマットは以下のいずれかとなります(大括弧[] は,オプションの構文を表し,ディスプレイ名の一部としては含まれていません) 。

         node::server[.screen]
         node:server[.screen]
         WSAn:

ノード | ディスプレイ・サーバが実行されているノード名を指定します。 ノード名の次にコロン（:）が２つある場合, XlibはDECnetトランスポートを使用してディスプレイ・サーバとの接続を行います。 ノード名の次にコロンが1つある場合, XlibはTCP/IPトランスポートを使用します。 コロンが1つの構文は,日本語DECwindows Motif for OpenVMS V1.2以前のバージョンではサポートされておりませんので注意してください。
サーバ | ホスト・コンピュータのディスプレイ・ サーバの番号(10進数)を指定します。1台のCPU に1台以上のディスプレイを割り当てることができます。複数のディスプレイの番号は通常, 0 から始まります。
画面 | 指定サーバが使用する画面を10進数で指定します。1 台のサーバは複数の画面に表示できます。また,画面番号は0 から始まります。画面番号はオプションです。
WSAn: | トランスポート,ノードおよびサーバ番号,画面番号が入っているWS デバイスのデバイス名を指定します。

通常,ディスプレイは親プロセスから受け継ぐか,あるいはDCLコマンド, SET DISPLAYで指定します。SET DISPLAYコマンドはWSAn:デバイスを作成, あるいは変更し,トランスポート,ノード名,サーバ番号,画面番号を設定します。

SET DISPLAYコマンドはまた,このデバイスを指すためにDECW$DISPLAY論理名を定義します。DECW$DISPLAY がWSAn:デバイスを指していることがXlib にわかれば,アプリケーションが明確に指定した場合と同様, Xlibはトランスポート, ノード名,その他の情報を読むことができます。

## 4.1.1 ディスプレイの設定例

以下は,ディスプレイの設定方法をいくつか示した例です。

1. 以下の2つのコマンド・シーケンスのいずれかにより,省略時設定のサーバおよび画面番号とDECnet トランスポートを使用して, DOGノード上で「時計」アプリケーションを実行できます。

            $ DEFINE DECW$DISPLAY DOG::0
            $ RUN SYS$SYSTEM:DECW$CLOCK

            $ SET DISPLAY/CREATE/NODE=DOG
            $ RUN SYS$SYSTEM:DECW$CLOCK

   SET DISPLAYコマンドでは,トランスポートの省略時設定はDECnetで, サーバと画面番号の省略時設定は共に0であることに注意してください。/CREATE 修飾子は,新しいWSAn:デバイスが作成されるという意味です。

2. 以下のふたつのコマンド・シーケンスのいずれかにより,画面1 とTCP/IPトランスポートを使用して, DOGノード上で「時計」アプリケーションを実行できます。

            $ DEFINE DECW$DISPLAY DOG:0.1
            $ RUN SYS$SYSTEM:DECW$CLOCK

            $ SET DISPLAY/TRANSPORT=TCPIP/SCREEN=1
            $ RUN SYS$SYSTEM:DECW$CLOCK

   SET DISPLAYコマンドは, WSAn:が既に作成され,ノード名がDOGと設定されていることを前提とします。

3. 以下の例では,「時計」を切り離されたプロセスで実行し,出力をローカルのワークステーション画面に表示します。

            $ SET DISPLAY/CREATE/TRANSPORT=LOCAL
            $ RUN/DETACH/OUTPUT='F$TRNLNM("DECW$DISPLAY")' -
            _$ SYS$SYSTEM:DECW$CLOCK

   この方法は, DECW$DISPLAYが定義されていない場合, Xlibが論理名SYS $OUTPUTを変換してディスプレイ名を探すという点を利用しています。 XlibはSET DISPLAYコマンドを使用してWSAn:デバイスを作成してから, DECW$DESPLAY論理名を変換してWSデバイスのデバイス名を探します。 Xlibは,切り離されたプロセスのSYS$OUTPUTとしてこのデバイス名を渡します。

   WSデバイスではNLデバイスと同様に,デバイスからのQIO読み取りがEOF を返し,デバイスへのQIO書き込みが無視されます。

4. LOGINOUT.EXEの特徴を利用して,前の例をより複雑な方法で実行することもできます。SYS$ERROR がWSデバイスを指す場合, LOGINOUTはDECW$DISPLAYをSYS$ERRORの変換として定義し, SYS$ERROR をSYS$OUTPUTの変換として再定義します。この方法では,切り離されたシステムからのエラー・ メッセージはログ・ファイルに書き込まれます。

            $ SET DISPLAY/CREATE/TRANSPORT=LOCAL
            $ CREATE TEST.COM
            $ RUN SYS$SYSTEM:DECW$CLOCK
            $ RUN/DETACH/ERROR='F$TRNLNM("DECW$DISPLAY")' -
                       /INPUT=TEST.COM/OUTPUT=TEST.LOG -
                       SYS$SYSTEM:LOGINOUT

## 4.1.2 SHOW DISPLAYコマンドの使用

SHOW DISPLAYコマンドを使って, WSデバイスからの情報を表示できます。 以下は同コマンド・シーケンスの例です。

         $ SET DISPLAY/CREATE
         $ SHOW DISPLAY

         Device:    WSA9:  [super]
         Node:      0
         Transport: DECNET
         Server:    0
         Screen:    0

/SYMBOL修飾子を使用して以下の例のように, SHOW DISPLAYコマンドからの情報をDCL シンボルに格納できます。

         $ SHOW DISPLAY/SYMBOL

         $ SHOW SYMBOL DECW$*

         DECW$DISPLAY_NODE == "0"
         DECW$DISPLAY_SCREEN == "0"
         DECW$DISPLAY_SERVER == "0"
         DECW$DISPLAY_TRANSPORT == "DECNET"

上記の前の例では, WSA9:はスーパーバイザ・モードで作成されています。

SYSNAM特権を持つユーザは,監視モードでディスプレイを作成することもできます。 スーパーバイザ・モードのWSデバイスは,このデバイスに対する最後のチャネルの割当が解除されると削除されます。 しかし監視モードのWS デバイスは,ユーザーがSET DISPLAY/DELETEコマンドで直接削除しない限り削除されません。

以下は, SYSNAM特権を持つユーザが監視モードのWSデバイスを作成する方法例です。

         $ SET DISPLAY/CREATE/EXEC
         $ SHOW DISPLAY

                       Device:    WSA10:  [exec]
                       Node:      0
                       Transport: DECNET
                       Server:    0
                       Screen:    0

システムの再起動後にDECwindowsが起動すると, DECW$STARTAPPS.COMコマンド・ プロシージャが監視モードのWSデバイス(最初はWSA1:)を作成し,これをDECwindows ログイン・プロシージャに渡して,「セッション起動」画面を作成します。 ユーザがログインすると,これと同じWSデバイスを使って「セッション・ マネージャ」を作成します。

セッション・マネージャがアプリケーションを起動すると, WSデバイスは 第4.1節で説明のDECW$DISPLAYメカニズムによりアプリケーションに渡されます。 この例として,セッション・マネージャから作成される「漢字端末エミュレータ」ウィンドウ( このウィンドウでは, SET DISPLAY コマンドが発行されていないと仮定した場合)があります。

「漢字端末エミュレータ」ウィンドウから起動されたDECwindowsのアプリケーションは, ユーザーがSET DISPLAYコマンドを発行しなくともローカル・ ノードに表示されることに注意してください。

# 4.2 ログイン手順

この節では,「セッション起動」ダイアログ・ボックスが現れてからセッション・ マネージャが起動するまでのDECwindowsのログイン手順を説明します。

正しいユーザ名とパスワードを「セッション起動」ダイアログ・ボックスに入力すると, 次の処理が行われます。

1. LOGINOUT.EXEがDECW$LOGINOUT.EXE内のルーチンを呼び出し,以下の機能を実行します。

   1. DW-MOTIFライセンスをチェックし,システムがディスプレイ・ サーバとの接続を許可されていることを確かめます。許可されていない場合には, DECW$LOGINOUT.EXE が警告メッセージを表示し, 再度起動して終了します。新しい「セッション起動」ダイアログ・ ボックスが表示されます。

   2. 入力ポインタを時計形カーソルに変更します。

   3. セキュリティ・リストを変更して,ディスプレイ・サーバに接続するアプリケーションの実行を可能にします。

   4. DECW$WAITFORSM.EXEを実行するプロセスを起動します。これは, 起動プロセス中にサーバとの接続を保持します。

   5. DECW$SESSIONにプロセス名を設定します。

   6. 「セッション起動」プロセスの累積CPU時間をゼロに初期化します。 これによって,ユーザ・プロセスは「セッション起動」ダイアログ・ ボックスの表示時間分を課金されなくなります。

   7. SYS$MANAGER:DECW$STARTSM.COMを, DCLが実行するコマンド・ プロシージャとして渡します。

   8. 終了します。DCLがプロセスの制御を担当します。

2. SYS$MANAGER:DECW$STARTSM.COMは,セッション・マネージャの省略時設定のDCL コマンド・プロシージャとして実行されます。これは以下の機能を実行します。

   1. 論理名DECW$SM_WSQUOTAが定義されている場合,セッション・ マネージャのプロセス作業セット割当を論理名の値に設定します。

   2. システム・ログイン・コマンド・プロシージャをSYS$SYLOGIN 論理名で決められているように実行します。省略時設定は, SYLOGIN.COM です。

   3. 「セッション起動」ダイアログ・ボックスのユーザ名の後に/NOCOMMAND を指定しなかった場合には, LOGIN.COM(またはUAFレコードに指定されている他のログイン・ コマンド・プロシージャ) を実行します。使用中のLOGIN.COMのDECW$USER_DEFAULTS論理名を再定義すると, リソース・ファイルに使用するディレクトリを変更できます。

   4. SYS$SYSTEM:DECW$WSINIT.EXEを実行して,使用中のワークステーションのカスタマイズ・ ファイルを読みとります。このプログラムは, ディスプレイ・サーバとの接続をオープンし, Xlib呼び出しをユーザーの設定に適用し, 画面背景,ポインタの形状および色, そのほかのワークステーション設定を行います。また,ルート・ウィンドウにプロパティを作成し, ユーザーの設定を,後に起動されるDECwindows のアプリケーションに伝えます。

      注意
        DECwindowsのXUIバージョンを使用してから初めてDECwindows Motif へログインする場合は, DECW$WSINIT.EXEがXUIリソース・ファイルを読みとり, DECwindows Motif フォーマットに変換します。

   5. SYS$MANAGER:DECW$SYLOGIN.COMが存在する場合はこれを実行します。

   6. SYS$LOGIN:DECW$LOGIN.COMが存在する場合はこれを実行します。

   7. SYS$SYSTEM:DECW$SESSION.EXEを実行してセッション・マネージャを起動します。

# 4.3 セッション・マネージャ環境のカスタマイズ

DECwindows Motifには,ログイン・シーケンスを変更してカスタマイズできるテンプレート・ ファイルが備わっています。下記がテンプレート・ファイルです。

           SYS$MANAGER:DECW$PRIVATE_APPS_SETUP.TEMPLATE

このファイルを使用して, 表 4-1 のクライアント領域を変更します。

### 表 4-1 変更できるクライアント領域

クライアント領域 | グローバル・シンボル | 省略時設定
--- | --- | ---
オンライン・ ブックを探すのにブックリーダが使用するディレクトリ | DECW$BOOK | SYS$COMMON:[DECW$BOOK]
ファイルビュー・コマンド・ファイルのディレクトリ | VUE$LIBRARY | DECW$SYSCOMMON:[VUE$LIBRARY.USER], DECW$SYSCOMMON: [VUE$LIBRARY.SYSTEM]
キーマップ・ ファイルのディレクトリ | DECW$KEYMAP | DECW$SYSCOMMON: [SYS$KEYMAP.DECW.USER], DECW$SYSCOMMON: [SYS$KEYMAP.DECW.SYSTEM]
DECwindowsプログラム例のディレクトリ | DECW$EXAMPLES | SYS$COMMON:[SYSHLP.EXAMPLES.DECW]
XDPSプログラム例のディレクトリ | XDPS$EXAMPLES | SYS$COMMON:[SYSHLP.EXAMPLES.XDPS]
DECwindows起動が完了すると実行されるDCLコマンド | DECW$MAINAPP | SYS$SYSTEM:DECW$STARTLOGIN を実行
ログイン・ロゴ | DECW$LOGINLOGO | 無し
SET DISPLAYコマンドのパラメータ | DECW$APPSNODE DECW$APPSSERVER DECW$APPSSCREEN | ノード0 サーバ0 画面0
ユーザ確認が完了すると実行されるコマンド・ プロシージャ | DECW$SESSIO NCOM | SYS$MANAGER:DECW$STARTSM.COM
DECwindowsのSYLOGINコマンド・プロシージャ | DECW$SYLOGINCOM | 無し
正しいユーザ・リソース値でワークステーションを初期化するコマンド | DECW$SESSIONINIT | SYS$SYSTEM:DECW$WSINIT を実行
セッションを実行するコマンド | DECW$SESSIONMAIN | SYS$SYSTEM:DECW$SESSIONを実行
セッションをリセットするコマンド | DECW$SESSIONEND | 無し
DECwindows LOGINOUTのログ・ ファイル | DECW$LOGINLOG | 無し
ログインアウト中の複数接続の使用 | DECW$LOGINMANY | 許可されていない
セッション・マネージャをオフにできるログ・ ファイル | DECW$SESSIONLOG | ログ・ファイルはオン
コンピュータ・ ベース命令ファイルのディレクトリ | DECW$CBI | SYS$SYSROOT:[SYSCBI.DECW$CBI]
ファイルビューが共用プロファイル・ファイルを作成するディレクトリ | VUE$LIBRARY_ WRITE | SYS$COMMON:[VUE$LIBRARY.USER]
ユーティリティのディレクトリ | DECW$UTILS | SYS$SYSROOT: [SYSHLP.EXAMPLES.DECW.UTILS]
サブプロセスで実行可能なログイン・ ロゴ | DECW$LOGINLOGOSUB | 偽(切り離されたプロセス)
UNIXとの互換性定義論理名 | DECW$UNIXLOGICALS | 真
スナップショットを実行するために必要なログインまたはポーズ | DECW$SNAPSHOT_SECURITY | 真

これらの領域のいずれかをカスタマイズするには, SYS$MANAGER:DECW$PRIVATE_APPS_SETUP.TEMPLATEファイルを以下の要領でSYS$MANAGER:DECW$PRIVATE_APPS_SETUP.COM にコピーします。

         $ COPY SYS$COMMON:[SYSMGR]DECW$PRIVATE_APPS_SETUP.TEMPLATE -
         _$ SYS$SPECIFIC:[SYSMGR]DECW$PRIVATE_APPS_SETUP.COM/LOG

その後,ファイルを編集して該当するシンボルを変更します。

本章の残りの節では,テンプレート・ファイルを使用してDECwindowsのクライアント環境をカスタマイズする実行例を説明します。

## 4.3.1 ロゴの変更

DECwindowsにログインするには,「セッション起動」画面を使用しなければなりませんが, ユーザのロゴを表示するアプリケーションを実行すると, digitalロゴをユーザのロゴで置き換えることができます。

これには, DECW$PRIVATE_APPS_SETUP.COMファイルにグローバル・シンボルを定義し, ユーザのロゴを表示するコマンドを含むDCLコマンド・ファイルを作成する必要があります。

ユーザのロゴをログイン画面に表示するには,以下を実行する必要があります。

- コマンド・ファイル(たとえば, SYS$MANAGER:LOGO.COM)を作成します。

- グローバル・シンボルDECW$LOGINLOGOを, SYS$MANAGER:DECW$ PRIVATE_APPS_SETUP.COMに定義し,その値をユーザのコマンド・ファイル名に設定します。 このコマンド・ファイルはシステム・アカウントによって実行されることに注意してください。

例

1. SYS$MANAGERディレクトリにコマンド・ファイルがない場合には, テンプレート・ファイルをコマンド・ファイルにコピーします。

            $ COPY SYS$COMMON:[SYSMGR]DECW$PRIVATE_APPS_SETUP.TEMPLATE -
            _$ SYS$SPECIFIC:[SYSMGR]DECW$PRIVATE_APPS_SETUP.COM/LOG

2. ファイルを編集し,シンボルDECW$LOGINLOGOを,ユーザのロゴを表示するコマンド・ ファイルを指すように定義します。

   以下の行を加えます。

            $ DECW$LOGINLOGO == "SYS$MANAGER:MYLOGO.COM"

3. ユーザのロゴを表示するコマンド・ファイルを作成します。 これには,手順2で指定されているファイル名とディレクトリが必要です。 コマンド・ファイルはSYSTEMアカウントでは切り離されたプロセスとして実行されることに注意してください。 ご自分のロゴで他のユーザーがシステムにアクセスしないよう, 気をつけてください。ファイルビューや漢字端末エミュレータのようなアプリケーションは, ユーザー設定ロゴとして実行しないでください。

   たとえば, SYS$MANAGER:MYLOGO.COMファイルにこのコマンドを入れて, プログラム例として供給されている二十面体を表示することも可能です。

            $ RUN DECW$EXAMPLES:ICO

4. DECW$STARTUPを実行してDECwindowsを再起動するか,あるいはワークステーションを再起動します。DECwindows を起動するDECW$STARTUP コマンド・プロシージャを実行しない限り,セッション終了時にロゴが表示されることはありません。

            $ @SYS$STARTUP:DECW$STARTUP RESTART

   注意
     DECwindowsのサーバを再起動すると, 現在のクライアント・プロセスの接続がすべて切り離されます。

   Digitalロゴを復元するには, DECW$PRIVATE_APPS_SETUP.COMファイルからDECW$LOGINLOGO の定義を取り除き, DECwindowsを再起動します。

## 4.3.2 専用アカウントの作成

システム管理者は,特定のアプリケーションだけを実行するユーザ・アカウントをセットアップできます。 たとえば,一般ユーザーに「ブックリーダ」アプリケーションだけを使用させる場合が考えられます。

本節では,専用DECwindowsアカウントをセットアップする次の三種類の方法を説明します。

- セッション・マネージャのコマンド・プロシージャの変更

- セッション・マネージャの実行可能ファイルの変更

- セッション・マネージャのプロファイル・ファイルの変更

### 4.3.2.1 セッション・マネージャのコマンド・プロシージャの変更

グローバル・シンボルDECW$SESSIONCOM をSYS$MANAGER:DECW$PRIVATE_APPS_SETUP.COMファイルに定義すると, ユーザがログインした時, LOGINOUTがDECW$STARTSM.COM以外のコマンド・ ファイルを実行します。これにより,セッション・マネージャをバイパスします。

例 4-1では, DECW$SESSIONCOMはDECW$PRIVATE_APPS_SETUP.COM に定義され,私用コマンド・プロシージャであるSYS$MANAGER:PRIVATE_SESSIONCOM.COM を指すようになっています。 省略時設定のコマンド・ファイルは, SYS$MANAGER:DECW$STARTSM.COM です。

DECW$SESSIONCOMはシステム論理名テーブルに定義されているため,すべてのユーザ名についてセッション・ マネージャの起動に影響します。私用コマンド・ ファイルは実行中のユーザ名をチェックして,非専用アカウントの通常のDECW$STARTSM.COM プロシージャを実行する必要があります。

注意
  この方法では,以下の起動コマンド・ プロシージャ(通常, DECW$STARTSM.COMから実行される)は実行されません。SYLOGIN.COM, LOGIN.COM, DECW$SYLOGIN.COM, DECW$LOGIN.COM

セッション・マネージャのコマンド・プロシージャを変更する場合は以下の手順で行ってください。

1. 例 4-1のコマンド・プロシージャを作成します。

   ### 例 4-1 セッション・マネージャ私用コマンド・ ファイルの使用

       $ CREATE SYS$MANAGER:PRIVATE_SESSIONCOM.COM
       $!
       $! Check to see whether this is the dedicated DECwindows account.
       $! If it isn't, run the normal procedure to start the
       $! Session Manager.
       $!
       $ username = F$USER()
       $ IF F$LOCATE("BOOK_READER", username) .NE. F$LENGTH(username) -
            THEN GOTO dedicated
       $!
       $! Normal, nondedicated DECwindows login
       $!
       $ @SYS$MANAGER:DECW$STARTSM
       $ EXIT
       $!
       $! Dedicated DECwindows login.  Run Bookreader and then exit.
       $!
       $ dedicated:
       $!
       $ RUN SYS$SYSTEM:DECW$WSINIT
       $ display = F$LOGICAL("decw$display")
       $ RUN/DETACHED/OUTPUT='display' SYS$SYSTEM:DECW$MWM 【1】
       $ RUN SYS$SYSTEM:DECW$BOOKREADER
       $ endsession := $DECW$ENDSESSION 【2】
       $ endsession -noprompt 【3】
       $ STOP/ID=0 【4】

   1. DECW$MWMがMotifウィンドウ・マネージャです。 DECW$DISPLAYが切り離されたプロセスに正しく定義されるようにDECW$MWM のSYS$OUTPUT定義を, DECW$DISPLAYの変換シンボルに設定する必要があります。

   2. DECW$ENDSESSIONがサーバをリセットし,「セッション起動」ダイアログ・ ボックスを表示します。

   3. -noprompt修飾子があるため, DECW$ENDSESSIONはユーザにセッションを終了するかどうかを確かめません。( ユーザが「セッション終了」を取り消すと, ブックリーダが終了し,ログイン・ボックスが表示されないため, ワークステーションは使用不能となります。)

   4. STOP/ID=0はSYS$OUTPUTにエラー・メッセージを書き込まずに, プロセスをログアウトします。

2. 以下のように, DECW$SESSIONCOMシンボルをDECW$PRIVATE_ APPS_SETUP.COMに定義します。

            $ DECW$SESSIONCOM :== SYS$MANAGER:PRIVATE_SESSIONCOM.COM

   SYS$MANAGER:DECW$PRIVATE_APPS_SETUP.COMが存在しない場合には,以下のようにテンプレート・ ファイルから作成します。

            $ COPY SYS$MANAGER:DECW$PRIVATE_APPS_SETUP.TEMPLATE -
            _$ SYS$COMMON:[SYSMGR]DECW$PRIVATE_APPS_SETUP.COM

3. 以下のコマンドを入力して, DECwindowsを再起動します。

            $ @SYS$MANAGER:DECW$STARTUP RESTART

   この処理は, DECW$PRIVATE_APPS_SETUP.COMに加えた変更を有効にするために必要です。

4. DECwindowsシステムの専用アカウントにログインします。

   ユーザ名と専用アカウントのパスワードを入力すると,ブックリーダが起動し, セッション・マネージャは表示されません。ユーザがブックリーダを終了すると, PRIVATE_SESSIONCOM.COM プロシージャがセッションを終了して, ログアウトします。セッション終了コマンドが「セッション起動」画面を表示します。

### 4.3.2.2 セッション・マネージャ実行可能ファイルの変更

DECW$SESSIONMAINをSYS$MANAGER:DECW$PRIVATE_APPS_SETUP.COMファイルに定義すると, DECW$STARTSM.COM がDECW$SESSION.EXEの代わりに,指定されたコマンド・ ファイルを実行します。セッション・マネージャはリソース・ ファイルを読み込み,ログイン・コマンド・ファイルを実行しますが, セッション・マネージャのメニュー・バーは表示されません。この方法では, セッション終了コマンドが確認を求めないことを確かめる必要があります。

DECW$STARTSM.COMが起動すると(つまり, DECW$SESSIONCOMに省略時設定の値が設定されている場合), 論理名DECW$SESSIONMAINに定義されているDCL コマンドを実行してセッション・マネージャを起動します。この論理名を定義するには, グローバル・シンボルDECW$SESSIONMAINを実行するDCLコマンドとして定義するよう, SYS$MANAGER:PRIVATE_APPS_SETUP.COM を編集します。

この方法は, 第4.3.2.1項で説明された方法に似ていますが, 以下の点が異なります。この方法では, DECW$STARTSM.COM がSYLOGIN.COM, LOGIN.COM, DECW$SYLOGIN.COM, DECW$LOGIN.COMの各コマンド・ プロシージャを実行します。またDECW$STARTSM.COMがDECW$WSINIT.EXE を実行するため,私用コマンド・プロシージャがこれを実行する必要はありません。

セッション・マネージャの実行可能ファイルを変更するには以下の手順に従ってください。

1. 例 4-2の説明のようにコマンド・ プロシージャを作成します。

   ### 例 4-2 セッション・マネージャの実行可能ファイルの変更

       $ CREATE SYS$MANAGER:PRIVATE_SESSIONMAIN.COM
       $!
       $! Check to see whether this is the dedicated DECwindows account.

       $! If it isn't, run the normal procedure to start the
       $! Session Manager.
       $!
       $ username = F$USER()
       $ IF F$LOCATE("BOOK_READER", USERNAME) .NE. F$LENGTH(USERNAME) -
            THEN GOTO dedicated
       $!
       $! Normal, nondedicated DECwindows login
       $!
       $ RUN SYS$SYSTEM:DECW$SESSION
       $ EXIT
       $!
       $! Dedicated DECwindows login.  Run Bookreader and then exit.
       $!
       $ dedicated:
       $!
       $ display = F$LOGICAL("decw$display")
       $ RUN/DETACHED/OUTPUT='display' SYS$SYSTEM:DECW$MWM 【1】
       $ RUN SYS$SYSTEM:DECW$BOOKREADER
       $ endsession := $DECW$ENDSESSION 【2】
       $ endsession -noprompt 【3】
       $ STOP/ID=0 【4】

   1. DECW$MWMは, Motifウィンドウ・マネージャです。 DECW$DISPLAYは切り離されたプロセスに正しく定義されるように, SYS$OUTPUT 定義をDECW$DISPLAYの変換シンボルに設定する必要があります。

   2. DECW$ENDSESSIONがサーバをリセットし,新しい「セッション起動」画面を表示します。

   3. -noprompt修飾子があるため, DECW$ENDSESSIONはセッション終了プロンプトを表示しません( ユーザがセッション終了プロンプトを取り消すと, ブックリーダが終了し,「セッション起動」画面が表示されないためワークステーションは使用不能となります。)

   4. STOP/ID=0で, SYS$OUTPUTにエラー・メッセージを書き込まずにプロセスからログアウトします。

2. DECW$SESSIONMAINシンボルをDECW$PRIVATE_APPS_SETUP.COMに定義します。

   このコマンド・プロシージャを編集し, DECW$SESSIONMAINを定義します。 このシンボルはDCLコマンドとして定義しなければなりません(コマンド・ プロシージャ名として定義されるDECW$SESSIONCOMとは異なる) 。

                 $ DECW$SESSIONMAIN :== @SYS$MANAGER:PRIVATE_SESSIONMAIN.COM

   SYS$MANAGER:DECW$PRIVATE_APPS_SETUP.COMが存在しない場合は,以下のようにテンプレート・ ファイルから作成します。

                 $ COPY SYS$MANAGER:DECW$PRIVATE_APPS_SETUP.TEMPLATE -
                 _$ SYS$COMMON:[SYSMGR]DECW$PRIVATE_APPS_SETUP.COM

3. 以下のコマンドを入力してDECwindowsを再起動します。

                 $ @SYS$MANAGER:DECW$STARTUP RESTART

   この処理は, DECW$PRIVATE_APPS_SETUP.COMに加えた変更を有効にするために必要です。

4. DECwindowsシステムの専用アカウンドにログインします。

専用アカウンドのユーザ名とパスワードを入力すると,ブックリーダが起動し, セッション・マネージャのメニュー・バーは表示されません。ブックリーダを終了すると, PRIVATE_SESSIONMAIN.COM プロシージャがセッション終了操作を行ってからログアウトします。 セッション終了コマンドはDECwindows 「セッション起動」画面を表示します。

### 4.3.2.3 セッション・マネージャのプロファイル・ ファイルの変更

この方法ではセッション・マネージャを通常通りに起動しますが,システム管理者は自動的に起動しないアプリケーションを削除して, メニューをカスタマイズします。 システム管理者はある種のアプリケーションを削除することによって, ユーザのアプリケーションへのアクセスを制限します。

この方法では,セッション・マネージャのメニュー・バーは表示され,ユーザは, システム管理者がオフにしないどのダイアログ・ボックスとも対話できます。

セッション・マネージャのプロファイル・ファイルを変更するには,以下の手順に従ってください。

1. DECwindowsシステムの専用アカウントにログインします。

   専用アカウントのユーザ名とパスワードを入力すると,セッション・マネージャが起動します。

2. ユーザがログインした時に表示させたい自動起動リストをアプリケーションに加えます。

   セッション・マネージャの「オプション」メニューから「自動起動... 」を選びます。セッション・マネージャが「自動起動」ダイアログ・ ボックスを表示します。

   このダイアログ・ボックスを使用して,「ファイルビュー」などの不要なアプリケーションを自動起動リストから削除します（自動起動」ダイアログ・ ボックスの使用に関して詳しくは, 『VMS DECwindows Motif User's Guide』を参照してください）。

   注意
     「ウィンドウ・マネージャ」と「セッション・ イベント」は,自動起動リストから削除しないようにしてください。

   この例ではリストに「ブックリーダ」を加え,「了解」でクリックします。

3. セッション・マネージャのメニュー・バーからアプリケーションを削除します。

   セッション・マネージャの「オプション」メニューから「メニュー・ バー...」を選択します。セッション・マネージャは「メニュー・バー」ダイアログ・ ボックスを表示します。

   このダイアログ・ボックスを使用して,表示したくないアプリケーションを削除します。( 「メニュー」ダイアログ・ボックスの使用に関しては, 『VMS DECwindows Motif User's Guide』を参照してください。)

   「了解」でクリックして変更を保管し,ダイアログ・ボックスを消します。

4. セッション・マネージャの「オプション」メニューから「セッション・ マネージャを保管」を選択し,メニュー・バーの設定を保存します。

5. 「オプション」メニューに表示したくないメニュー項目を削除します。

   セッション・マネージャの「オプション」メニューから「メニュー... 」を選択し,セッション・マネージャの「オプション」メニューから以下のメニュー項目を削除します。
   「自動起動...」
   「メニュー...」
   「メニュー・バー...」
   「セッション・マネージャを保管」

   専用アカウントで一般ユーザにアクセスを許可したくない「セキュリティ」などの他のメニュー項目も削除する必要があります。

   メニュー項目を削除したら,「了解」でクリックしてダイアログ・ボックスを消し, メニュー設定を保管します。

6. セッション・マネージャのセッション・メニューから「セッション終了」を選択します。

   ここで専用アカウントからログアウトし,セッション・マネージャがDECwindows のログイン・ボックスを表示します。

7. 専用アカウントにログインしなおします。

変更をテストするには, DECwindowsログイン・ボックスから専用アカウントにログインします。 ブックリーダとセッション・マネージャが省略時設定で起動し, これ以外のアプリケーションは起動できないはずです。ログアウトするには, セッション・メニューから「セッション終了」を選択します。

アカウントを非専用アカウントに戻すか,あるいはシステムのメニュー・ バーから削除したダイアログ・ボックスに変更を加えるには,専用アカウントのSYS$LOGIN ディレクトリからVUE$PROFILE.VUE$DATファイルを削除または名称変更します。

# 4.4 セッション・マネージャの動作変更

DECwindowsのセッション・マネージャの動作を,いくつかの論理名を使用して変更できます。 これらの論理名は,通常は使用されませんが,同一システム上で二つのセッション・ マネージャを実行している場合などの特別な状況では役に立つことがあります。 表 4-2はこれらの論理名とその意味の表です。

### 表 4-2 セッション・マネージャの論理名

論理名 | 意味
--- | ---
DECW$VUENOAUTOSTART | セッション・マネージャの自動起動リストのアプリケーションを起動させない。
DECW$VUENORESET | セッション・マネージャ終了時, ディスプレイ・サーバをリセットしない。
DECW$VUELOGINOUTPUT | セッション・マネージャからアプリケーションが起動する時, ログイン・コマンド・ファイル(SYSLOGIN, LOGIN, DECW$LOGIN) からの出力を保管する。「セッション・ マネージャ」ウィンドウのセッション・メニューにある,「処理中」ダイアログ・ ボックスの「出力表示」ボタンをクリックするとこの情報にアクセスできる。

これらの論理名は,漢字端末エミュレータあるいはログイン・コマンド・ ファイル(SYSLOGIN, LOGIN, DECW$LOGINファイル)で定義できます。これらの論理名を設定するには, 以下の例のように論理名に値を定義します。

         $  DEFINE DECW$VUENOAUTOSTART 1

# 4.5 システム・リソース・ファイルの変更

大部分のDECwindowsアプリケーションには, DECwidnows環境のカスタマイズとユーザーの設定保管用のオプションがあるダイアログ・ ボックスが備わっています。 たとえばセッション・マネージャの「オプション」メニューを使用すると, 事前に定義された設定を調べてから,新しい設定を選択, 保管できます。

ただしすべてのアプリケーションに,設定の変更,保管用のダイアログ・ボックスが備わっているわけではありません。 たとえば,あるアプリケーションでアプリケーションの主要ウィンドウのサイズや位置を変更, 保管できても, ほかのアプリケーションではできません。ダイアログ・ボックスでは行えない設定の変更, 保管は, DECW$XDEFAULTS.DATファイルにリソースを指定することで可能です。

注意
  以下の理由から,リソースの変更の際は十分な注意を払ってください。

  - 「オプション」ダイアログ・ボックスは, DECW$XDEFAULTS.DAT ファイルに指定された設定の変更には使用できません。

  - DECwindowsの将来のリリースでは,アプリケーションのダイアログ・ ボックスに, XDEFAULTSファイルに付け加えたオプションが入る可能性があります。 この場合このような変更を反映させるために, DECW$XDEFAULTS.DATファイルを変更することが必要となるでしょう。

  - リソースのエラー処理は,本バージョンのDECwindowsでは用意されておりません。 リソース・ファイルに構文エラーがあると, DECwindowsはエラー・メッセージを出さずに終了することがあります。

  - サイズの大きいDECW$XDEFAULTS.DATファイルを使用すると,アプリケーションの起動性能が著しく低下します。

リソースを使用してアプリケーションの設定を変更する場合は,論理名DECW$USER_DEFAULTS で指定されているディレクトリに,ファイル(DECW$XDEFAULTS.DAT) を作成します。このファイルに,変更したいアプリケーション用リソースの設定を指定します。 または,変更がある一つのアプリケーション専用である場合は, そのアプリケーションのリソース・ ファイル(たとえば, DECW$MAIL.DAT)を変更することで行うことができます。

DCW$XDEFAULTS.DATファイルの各リソース指定は,構文規則に厳密に従っていることに注意してください。 リソースの構文について詳しくは, 『VMS DECwindows Guide to Xlib (Release 4) Programming: MIT C Binding』または『X Window System 』を参照してください。

以下のアプリケーションのリソースについては, 『VMS DECwindows Motif User's Guide』を参照してください。

- ブックリーダ

- 電卓

- カレンダ

- カード管理

- CDAビューア

- 時計

- 漢字端末エミュレータ

- ファイルビュー

- セッション・マネージャ

- リンクワークス・マネージャ

- メール

- Motifウィンドウ・マネージャ

# 4.6 プリント・フォーマットのカスタマイズ

本節では,プリント・フォーマットの設定方法を説明し, DECwindows Motifソフトウェア用の論理名および関連プリント・ フォーマットを示します。構成によっては, DECwindows Motif のカスタマイズ・ タスクにプリント・フォーマットを指定する論理名の定義を含むことも可能です。

システムを起動する前に,日本語OpenVMS起動プロシージャを編集し, プリント・キューをプリント・フォーマットに対応させる論理名を定義します。 この起動プロシージャは続いてDECwindows Motif起動プロシージャを呼び出します。

## 4.6.1 プリント・フォーマットの定義

多くのDECwindows Motifアプリケーションで, 「印刷」ダイアログ・ボックスを使用してファイルや画面をプリンタ・ キューに入れます。省略時設定では,システムのすべての印刷デバイスが「プリンタ」リスト・ ボックスに表示されます。ただし論理名を定義すれば, 印刷キューをプリント・フォーマットに対応させることもできます。DECwindows Motif 起動プロシージャを呼び出す前に, 日本語OpenVMS起動コマンド・プロシージャに論理名を定義します。 プリント・キューはコンマまたはスペースで区切って並べます。 この場合,最初のキューが省略時の設定となります。

表 4-3の論理名のいずれかを定義すれば, 「印刷」ダイアログ・ボックスに表示されるプリンタ・キューのリストをカスタマイズできます。 この方法は,「印刷」ダイアログ・ボックスを使用してシステム上のすべてのキューの名称（このうち多くは, 該当するプリンタ・ フォーマットに当てはまりません）を導き出すより,早く実行できます。 下記は,日本語OpenVMS起動ファイルにプリント・フォーマットの論理名を定義する方法例です。

             $ Define DECW$PRINTER_FORMAT_TEXT
         "CLUSTER_LN03,CLUSTER_PRINT, -
             _$ ANSI_ARTWRK,ANSI_PROTON"
             $ Define DECW$PRINTER_FORMAT_LINE   "CLUSTER_PRINT"
             $ Define DECW$PRINTER_FORMAT_ANSI2
         "CLUSTER_LN03,ANSI_ARTWRK,ANSI2_PROTON"
             $ Define DECW$PRINTER_FORMAT_ANSI
         "CLUSTER_LN03,ANSI_ARTWRK,ANSI_PROTON"
             $ Define DECW$PRINTER_FORMAT_PS     "PS_ARTWRK,PS_PROTON"
             $ Define DECW$PRINTER_FORMAT_REGIS  "SYS$NULL"

たとえば, DECW$PRINTER_FORMAT_ANSI2がCLUSTER_LN03, ANSI_ARTWRK, ANSI2_PROTONと定義されていると,プリント・フォーマット・リスト・ ボックスからANSI2を選択した時に, CLUSTER_LN03, ANSI_ARTWRKおよびANSI2_PROTON のみが「プリンタ」リスト・ボックスに表示されます。この場合, CLUSTER_LN03 が省略時の設定となります。

## 4.6.2 論理名とプリント・フォーマット

表 4-3は, DECwindows Motif ソフトウエアの論理名と対応プリント・フォーマットの表です。

### 表 4-3 「印刷」ダイアログ・ボックスの論理名

論理名 | プリント・フォーマット
--- | ---
DECW$PRINTER_FORMAT_DEFAULT | 省略時の設定
DECW$PRINTER_FORMAT_TEXT | テキスト
DECW$PRINTER_FORMAT_ LINE | ラインプリンタ
DECW$PRINTER_FORMAT_TERM | 端末
DECW$PRINTER_FORMAT_ANSI2 | ANSI2
DECW$PRINTER_FORMAT_ANSI | ANSI
DECW$PRINTER_ FORMAT_PS | PostScript
DECW$PRINTER_FORMAT_REGIS | ReGIS
DECW$PRINTER_FORMAT_TEK | Tektronix
DECW$PRINTER_FORMAT_ DDIF | DDIF

システム全体に適用される論理名テーブルに論理名を定義して,ユーザが論理名を必要に応じてオーバーライドすることもできます。

[ 前のページ ] [ 次のページ ] [ 目次 ]