前へ | 次へ | 目次 | 索引 |
SYS$SYSTEM:DECW$WML.EXEを使用して, UILファイルのオペランド解析をカスタマイズすることができます。 DECW$WML.EXE は, DECW$WML_TOKENS.DATファイルからトークン・リストを読み込みますが, DECwindows Motif の以前のバージョンでは,このトークン・ファイルは常にSYS$LIBRARYから読み込まれていました。日本語DECwindows Motif V1.2-4では, DECW$WML.EXEがまず最初に現在ディレクトリ内でこのファイルを検索してから, SYS$LIBRARYディレクトリ内を検索します。これによりカスタマイズしたトークン・ファイルを使用することができます。
4.1.9 ループしたオブジェクト参照による UIL コンパイルの問題
V1.2
自分自身を含んでいるオブジェクトの階層構造が存在し,それぞれの名前付きオブジェクトは階層内の他のオブジェクトから内部的に参照されるだけである場合, UIL コンパイラは UID ファイルから一部のオブジェクトに関する情報を省略することがあります。少なくとも階層内の参照の 1 つは子関係以外である必要があります。
どのオブジェクトで情報が省略されているかを判断するには,コンパイル時に /LIST および /MACHINE_CODE 修飾子を使用します。生成されるリスト・ファイルには,情報が省略されているオブジェクトが示されます。
この問題を回避するには,階層内の名前なしオブジェクトの 1 つに名前を追加してください。
4.1.10 _Xm ルーチンの使用
OSF/Motif ツールキットは,多くの「内部専用」ルーチンで実現されています。これらのルーチンは_Xmで始まり,標準Motif ウィジェットだけが使用するようになっています。 API (Application Programing Interface)については文書化されておらず, OSFではこれらのルーチンをサポートしていません。 OSF社はAPIを変更して新しい_Xm ルーチンを追加し,現在の_Xm ルーチンを削除し,あらゆる_Xm の機能性の変更を警告や予告なしに行う権利を保有しています。
弊社では,_Xm ルーチンを複写して, OSF/Motif リリース 1.2.2 ツールキットの共有可能イメージ転送ベクトルに置くことによって, _Xm ルーチンへアクセスできるようにしています。弊社では,これらのルーチンについて,その使用,ドキュメント,またはサポートを保証していません。これらの機能を使用するユーザは,ご自分の責任で行ってください。 |
V1.1
OpenVMS Alpha システムで, DECW$MOTIF.FORファイルなどの DECwindows Motif アプリケーションを Fortranで作成するために使用するインクルード・ファイルには,使用するコンパイラ・スイッチに応じてメモリ・レイアウトを変化させる構造体定義が含まれています。
次の処置のいずれかを行うことができます。
CDEC$ OPTIONS /ALIGN=RECORDS=NATURAL |
CDEC$ END OPTIONS |
例:
CDEC$ OPTIONS /ALIGN=RECORDS=NATURAL INCLUDE "DECW$MOTIF.FOR" CDEC$ END OPTIONS |
VAX C レイヤード製品のインストレーション・プロシージャでは, VAX C 定義ファイル(.h ファイル)を抽出するか,または.h ファイルをテキスト・ライブラリに残しておくかのいずれかを選択することができます。定義ファイルを抽出すると,次のフォーマットの#include 制御行を使用することができます。
#include <filename.h> |
DECwindows ヘッダ・ファイルは, .h ファイルが抽出されていることを前提としています。ヘッダ・ファイルには,組み込まれたファイルの #include <module_name.h>記述が含まれています。また, DECwindows Motif プログラミング関連マニュアルでも同じことを前提としています。
このため,VAX C をインストールするときには,ライブラリ・モジュール抽出を選ぶ必要があります。
すでにVAX C をインストールしていて, .h ファイルを抽出しなかった場合は, DECwindowsサンプル C プログラムは動作しません。この問題に対処するには, VAX Cを再度インストールして.h ファイルを抽出してください。
DEC C では, DECC$TEXT_LIBRARYの論理名を次のように定義すれば,ヘッダ・ファイルをテキスト・ライブラリから抽出する必要はありません。
$ DEFINE DECC$TEXT_LIBRARY SYS$LIBRARY:DECC$RTLDEF.TLB |
この節では,トランスポート・インタフェースの情報について説明します。
4.2.1 ユーザ作成トランスポートのサポートの終了
V1.3
DECwindows Motif for OpenVMS Version 1.3 では, ICE (Inter-Client Exchange) プロトコル, LBX (Low-Bandwidth X) プロキシ・サーバ,および入力メソッド・サーバの通信要件およびマルチスレッドに対応するために, DECwindows Motif トランスポート・ライブラリが大幅に変更されました。特に,サーバ接続に番号を割り当てる代替の方法が追加されました (『 『HP DECwindows Motif for OpenVMS Alpha New Features』 』を参照)。外部用として公開されるトランスポート関連機能は,論理接続番号 (LCN) インタフェースのサポートだけです。
DECnet,TCP/IP,LAT,およびローカル・ネットワーク・トランスポート・インタフェースはアップデートされており, DECwindows Motif V1.3 以降の環境でも引き続き利用でき,期待どおりに機能し,以前のバージョンのクライアント・ライブラリとの互換性もあります。しかし,以前のバージョンの DECwindows Motif 用に構築された,ユーザ作成のカスタム・トランスポートは, DECwindows Motif V1.3 以降のシステムではサポートされません。次のファイルに対して構築され,リンクされたトランスポートがこれに該当します。
SYS$LIBRARY:DECW$XPORTCOM.H
SYS$LIBRARY:DECW$XPORTCOM.MAR
SYS$LIBRARY:DECW$XPORTCOM.R32
SYS$LIBRARY:DECW$XPORTDEF.H
SYS$LIBRARY:DECW$XPORTDEF.MAR
SYS$LIBRARY:DECW$XPORTDEF.R32
これらのファイルはキットから削除されており,今後は提供されません。『『VMS DECwindows Transport Manual』』はアーカイブ化され,新しいライブラリについては,ドキュメントに記載されず,一般には提供されません。
カスタム・トランスポートを実装していて,このトランスポートを DECwindows Motif for OpenVMS Version 1.3 以降の環境に移行する場合は,移行計画の策定について弊社のカスタマ担当者にご相談ください。
4.3 X Window System ライブラリ (Xlib)
この節では,X Window System ライブラリ (Xlib) の情報について説明します。
4.3.1 ヌル値を返す関数に対する外部宣言の DECW$XLIBDEF.FOR への追加
V1.3--1
DECwindows Motif for OpenVMS Version 1.3 で提供されていた DECW$XLIBDEF.FOR には,値 (VOID 型) を返さない関数の外部宣言が含まれていませんでした。この問題は解決され,外部宣言が DECW$XLIBDEF.FOR に追加されました。
4.3.2 接続障害エラー・メッセージのレコード形式の変更
V1.3--1
接続要求が拒否されると,X ディスプレイ・サーバは情報メッセージを生成し,Xlib はそのメッセージを stderr に出力します。以前のバージョンでは,出力されるメッセージはレコードごとに 1 文字の形式でした。この出力形式は変更され,メッセージ全体が 1 つのレコードとして渡されるようになりました。
この変更は,レコード単位で記録されるエラー・メッセージ・ファイルでのみ明らかになります。たとえば,HP Digital Test Manager (DTM) で生成されたメッセージ・ファイルでは,変更された形式を確認できます。
4.3.3 廃止されたエントリ・ポイントと変更されたエントリ・ポイント
次のサポートされない Xlib エントリ・ポイントは, DECW$XLIBSHR イメージから削除されました。
XCMSCIELAB_VALIDSPEC
XCMSCIELUV_VALIDSPEC
XCMSCIEUVY_VALIDSPEC
XCMSCIEXYY_VALIDSPEC
XCMSCIEXYZ_VALIDSPEC
XCMSLRGB_RGBI_PARSESTRING
XCMSLRGB_RGB_PARSESTRING
XCMSTEKHVC_VALIDSPEC
また,次のファイルは廃止予定になっており, OpenVMS の今後のリリースで削除されます。
これらの関数を使用しているアプリケーションは,変更が必要です。
4.3.4 XConnectionNumber と ConnectionNumber の意味の変更
DECwindows Motif V1.3 では, XConnectionNumber 関数と ConnectionNumber マクロの意味が変更されました。
以前のバージョンの DECwindows Motif では,この関数とマクロのどちらも,イベント・フラグ番号 (EFN) を返していました。次のように一般的な方法で実装されている呼び出しでは,イベント・フラグは入力を受け取った時点で設定されました。
sys$clref (ConnectionNumber (dpy)); while (XPending (dpy) != 0) XNextEvent (dpy); sys$waitfr (ConnectionNumber (dpy)); |
DECwindows Motif V1.3 では, XInitThreads の呼び出しによってマルチスレッドのサポートが有効になったときの,この関数やマクロの動作が変更されました。マルチスレッドが有効になっている場合は,この関数やマクロは論理接続番号 (LCN) を返すようになりました。
LCN は,サーバからの入力が存在する場合,読み取り設定状態にあります。 LCN は,すべての出力バッファが使用中でなければ,書き込み設定状態にあります。これ以外の状態は,弊社で使用するために予約されています。
EFN の代りに LCN を使用するには,上記の実装を,次のように変更します。
int readState; while (XPending (dpy) != 0) XNextEvent (dpy); decw$lcn_select_one (ConnectionNumber (dpy), &readState); |
LCN 状態はサーバからの入力を反映し,応答の処理中にキューイングされたイベントは含まないため,イベント・キューが空になった後に select 呼び出しを行わなければなりません。
DECW_CONNECTIONNUMBER_IS_LCN マクロに true (1) を設定して XLIB.H をインクルードすることによって, ConnectionNumber マクロが LCN 値 (常に利用可能) を取得するように強制できます。例を次に示します。
#define DECW_CONNECTIONNUMBER_IS_LCN 1 #include <X11/Xlib.h> . . . |
これは,スレッドが初期化されているかどうかにかかわらず同様に機能しなければならない共有イメージやオブジェクト・ライブラリでこのマクロを使用する場合に便利です。
LCN インタフェースの詳細については,
『HP DECwindows Motif for OpenVMS Alpha New Features』 を参照してください。
4.3.5 OpenVMS システムでのロケールのサポート
DECwindows Motif V1.2-4 for OpenVMS で提供されるロケール・サポートは, DEC C ランタイム・ライブラリでのロケール・サポートと互換性があります。このロケール環境で,これらの関数を使用して国際化アプリケーションを作成する場合は,次の手順に従ってください。
/define=(X_LOCALE,X_WCHAR,_WCHAR_T_,XLIB_XPG4_FUNCS) |
4.3.6 XSelectAsyncEvent ルーチンと XSelectAsyncInput ルーチン
XSelectAsyncEvent ルーチンと XSelectAsyncInput ルーチンは, AST 引き渡し情報記憶用のメモリを割り当てます。このメモリは次のいくつかの方法で解放されます。
サブウィンドウ用の AST 引き渡し情報は, XDestroyWindow によっては解放されません。
所定のウィンドウ内のすべてのイベント・タイプの AST 通知をオフにし, AST 引き渡し情報も解放したいときには,クライアント・アプリケーションは, event_mask 引数に -1 (全ビット・セット) を指定し, ast_routine 引数に 0 を指定して XSelectAsyncEvent ルーチンあるいは XSelectAsyncInput ルーチンを呼び出してください。
DECwindows Motif for OpenVMS Version 1.3 以上を実行しているシステムでは, XInitThreads への呼び出しによってマルチスレッド処理が有効になっている場合, XSelectAsyncInput および XSelectAsyncEvents はサポートされません。同等の機能は,スレッド対応 Xlib 関数を使用することによって提供されます。 マルチスレッド環境におけるこれらの関数の使用についての詳細は 『HP DECwindows Motif for OpenVMS Alpha New Features』 を参照してください。 |
Pascal プログラムが Xlib 用と Motif 用の環境ファイルを利用できるように, SYS$LIBRARY:DECW$PEN_BUILD.COM コマンド・プロシージャを実行する必要があります。このコマンド・プロシージャは, DECW $XLIBDEF.PEN ファイルと DECW$MOTIF.PEN ファイルを生成します。 Pascal プログラムへのコンパイルには,提供されている .PAS ファイルよりも .PEN ファイルの方が高速となります。
4.3.8 パラメータ/プロトコルのデータ・サイズの不適合
いくつかの Xlib ルーチンはロングワードのパラメータを受け付けますが,サーバへ送信される X プロトコル・メッセージにはその全体は含められません。それぞれの場合で,Xlib ルーチンは,パラメータ値の最下位 16 ビットのみを送出します。これは,X プロトコル・メッセージ内のフィールド・サイズにより受ける制約です。
表 4-1 は, 16 ビット値としてのみ送出されるルーチンの名前とロングワード引数のリストです。
ルーチン名 | 引数 |
---|---|
XAllocColorCells/ALLOC_COLOR_CELLS | nplanes,npixels |
XDrawArc/DRAW_ARC | x,y,width,height, angle1,angle2 |
XDrawLine/DRAW_LINE | x1,x2,x3,x4 |
XDrawPoint/DRAW_POINT | x,y |
XDrawRectangle/DRAW_RECTANGLE | x,y,width,height |
XDrawString/DRAW_STRING | x,y |
XDrawString16/DRAW_STRING16 | x,y |
XDrawText/DRAW_TEXT | x,y |
XDrawText16/DRAW_TEXT16 | x,y |
XFillArc/FILL_ARC | x,y,width, height,angle1,angle2 |
XFillRectangle/FILL_RECTANGLE | x,y,width,height |
4.4 X Window System ツールキット (Xt)
この節では,X Window System ツールキット (Xt) についての注意事項を説明します。
4.4.1 複合クラス拡張レコードの実行時警告
X11R6.6 では,ブール値オプション allows_change_managed_set が CompositeClassExtensionRecデータ構造体に追加されました。このデータ構造体が変更された結果,以前のバージョンの CompositeClassExtensionRecでビルドされたアプリケーションでは,次のような警告メッセージが実行時に表示されることがあります。
X Toolkit Warning: widget class Calc has invalid CompositeClassExtension record. |
このメッセージが表示されないようにするには, DECwindows Motif for OpenVMS Version 1.3 に含まれているアップデートされた CompositeP.h ファイルを使用して,アプリケーションをビルドし直します。新しいオプションの値が適切かどうか確認してください。メモリがゼロに初期化された場合,以前と同じように動作します。初期化されていない場合の動作は予測できません。
4.4.2 XtOpenDisplay ルーチンと大文字/小文字の区別
XtOpenDisplay のアプリケーション名が,コマンド・ラインに入力されたアプリケーション名を表す argv[0] からきている場合があります。
この場合,大文字/小文字の区別が保持されなければならない環境 (大文字/小文字の区別を有効にしてODS-5 システムを参照したり,ユーザ定義の argv リストを渡す場合など) では,問題になることがあります。
前へ | 次へ | 目次 | 索引 |