HP OpenVMS Systems Documentation |
| 前へ | 次へ | 目次 | 索引 |
この章では, DECwindows Motif 環境でのプログラミングについての注意事項を説明します。
4.1 プログラミング全般
この節では, DECwindows Motif プログラミング環境全般についての注意事項を説明します。
4.1.1 OSF/Motif ツールキットのサポートと互換性
V1.3--1
次の表に, DECwindows Motif のリリースごとに,ベースとなっている OSF/Motif ツールキットと X Window System の最新バージョンを示します。
| DECwindows Motif | OSF/Motif ツールキット | X Window System |
|---|---|---|
| Version 1.3,1.3--1および1.5 | CDE Motif 1.0 (OSF/Motif Release 1.2.5) | Version 11 Release 6.6 (X11R6.6) |
| Version 1.2--4, 1.2--5, および 1.2--6 | CDE Motif 1.0 (OSF/Motif Release 1.2.5) | Version 11 Release 5 (X11R5) |
| Version 1.2--3 | OSF/Motif 1.2.3 (Common Desktop Environment (CDE) 用の拡張あり) | X11R5 |
| Version 1.2 | OSF/Motif 1.2.2 | X11R5 |
| Version 1.1 | OSF/Motif 1.1.3 | Version 11 Release 4 (X11R4) |
| Version 1.0 | OSF/Motif 1.1.1 | X11R4 |
日本語 DECwindows Motif for OpenVMS Version 1.1 アプリケーションは, DECwindows Motif の現在のバージョンに変更を加えなくても継続して実行することができますが,ドラッグ・ドロップ機能やテア・オフ・メニューなどのV1.2 の機能を利用することができるのは,OSF/Motif リリース 1.2.2 ツールキットに対してビルドされているアプリケーションだけです。
4.1.2 ランタイムおよびプログラミング環境
DECwindows Motif for OpenVMS Version 1.5 では,次のランタイムおよびプログラミング環境を提供します。
開発サポートは特に CDE Motif 1.0 Toolkit 用に提供されますが, DECwindows Motif for OpenVMS Version 1.2--4 より前からシステムに存在する OSF/Motif Release 1.1.3 プログラミング環境を保管することをインストール時に選択することもできます。
POLYCENTER Software Installation ユーティリティを使用してこのソフトウェアをインストールする際に OSF/Motif リリース 1.1.3 ツールキットのプログラミング・ファイルが存在している場合は, OSF/Motif リリース 1.1.3 アプリケーションの開発に使用されたヘッダ・ファイルおよび UIL コンパイラの保存を選択することができます。このファイルの保存を選択した場合,インストレーション・プロシージャはサブディレクトリ[.DECW$113] を作成し,以前のプログラミング・ファイルはこの新しいディレクトリに移されます。
Release 1.1.3 のプログラミング環境の保管については『HP DECwindows Motif for OpenVMS インストレーション・ガイド』を参照してください。 OpenVMS Alpha および OpenVMS I64 における Release 1.1.3 プログラミング・サポートに関するその他の情報は, 第 4.3.3 項 を参照してください。
4.1.3 アップコールが有効なマルチスレッド・アプリケーションでアドレスの間違いが発生する問題の解決 (Alpha のみ)
V1.5
DECwindows Motif for OpenVMS Alpha Version 1.3 以上のシステムで,マルチスレッドの DECwindows Motif アプリケーションをアップコールを有効にしてコンパイルし,実行すると,ユーザ・モード・スタックでランダム・アドレスに間違いが発生する場合があるという問題がありました。この問題は, DECwindows Motif for OpenVMS Version 1.5 で解決されています。
4.1.4 すべてのトランスポート・バッファが使用中の場合に DECwindows ディスプレイ・サーバが書き込み操作をブロックする問題
V1.5
すべてのトランスポート・バッファが使用中の場合, DECwindows X ディスプレイ・サーバは DECwindows クライアントへの書き込み操作をブロックします。クライアントが, 30 秒のタイムアウト期間内でバッファの読み取りおよび解放に失敗すると,サーバはその接続をクローズします。この場合,このタイムアウト時間内はサーバーはハング状態になりその他の要求あるいはイベントの処理を行いません。
DECwindows Motif Version 1.3 より前のバージョンでは,クライアント・ソフトウェアは,ユーザ・モード AST を使用してトランスポート・バッファから内部メモリへイベントを転送します。このため,一時停止状態の場合あるいはユーザ・モード AST が長期間無効な場合は,クライアントはバッファの読み取りに失敗します。
Version 1.3 以降, DECwindows Motif クライアントは,イベントを処理するクライアント機能,あるいは応答が必要なクライアント機能が呼び出されるまでトランスポート・バッファからの読み取りを行いません。特定の表示接続に関してクライアントがイベントをアクティブに処理していない場合,イベントが到着したときにサーバがハングし,接続がクローズします。 Xt を使用してアプリケーション・コンテキストを作成し XtAppMainLoop を使用してイベントを処理するプログラムでは,この問題は発生しません。
4.1.5 getaddrinfo および getnameinfo を呼び出す関数が TCP/IP 接続でスレッドセーフでない問題
V1.5
HP TCP/IP Services for OpenVMS では,現在は getaddrinfo および getnameinfo 関数のスレッドセーフの実装を提供していません。このため,XOpenDisplay および IceOpenConnection の DECwindows の実装,ならびにこれらの関数でビルドされたイメージも, TCP/IP トランスポートで接続がオープンされた場合はスレッドセーフではありません。この問題は,IPv4 あるいは IPv6 のどちらの名前フォーマットの TCP/IP トランスポート接続の場合も同じように適用されます。
4.1.6 UIL コンパイラでサポートするトップレベル・ウィジェットの最大数の変更方法
V1.3--1
UIL コンパイラでは,UID ファイルに書き込むことができるトップレベル・ウィジェットの最大数が設定されています。トップレベル・ウィジェットとは,名前が付けられ, UIL コンパイルで参照されないウィジェットのことです。ウィジェットの最大数のデフォルトは 1000 に設定されます。この最大数を超えると,UIL コンパイラは次のエラー・メッセージを表示します。
$ UIL test.uil %UIL-F-SUBMIT_SPR, internal error - submit defect report |
この制限を変更し,エラーが発生しないようにするには,論理名 DECW$MRM$MAX_MODULE_WIDGET を使用します。 UIL コンパイラを実行する前に,この論理名を次のように定義してください。
$ DEFINE DECW$MRM$MAX_MODULE_WIDGET 2000 $ UIL test.uil |
上記のエラー・メッセージは,コンパイルの他の問題によって発生することもあります。すでに論理名 DECW$MRM$MAX_MODULE_WIDGET を使用してトップレベル・ウィジェットの最大数を引き上げているのに,コンパイル時にこのエラー・メッセージが引き続き表示される場合は,ビルドの問題や依存関係の問題がないか,UIL ファイルを確認してください。 |
V1.3
DECwindows Motif クライアント・ライブラリへの重要な新機能の追加により,実行時に DECwindows Motif が使用するスタック領域が増えることがあります。 DECwindows Motif の関数をメイン・スレッド以外のスレッドから呼び出すクライアント・アプリケーションでは,スタック・オーバフローが発生することがあります。
オーバフローが発生した場合,生成されるスレッド用に大きいスタック・サイズを指定してアプリケーションを再構築してください。
この問題は,シングルスレッド・アプリケーションや, DECwindows Motif の関数をすべてアプリケーションのメイン・スレッドから呼び出すマルチスレッド・アプリケーションでは発生しません。
4.1.8 ICE,プロキシ・マネージャ,および LBX サーバ・プロセスに必要な特権
V1.3
ICE (Inter-Client Exchange),プロキシ・マネージャ,および LBX (Low-Bandwidth X) プロキシ・サーバはそれぞれ,独立したサーバ・プロセスを生成する機能を持っています。これらのサーバ・プロセスは, 1 つ以上のトランスポート・インタフェースにアクセスし,クライアント・コネクションを管理するために,システム・リソースを必要とすることがあります。
次の表では,ネットワーク・トランスポート別に,適切なリソースにアクセスするために必要な最小限の特権を示します。
| トランスポート | 特権 |
|---|---|
| TCPIP | NETMBX |
| DECNET | TMPMBX,NETMBX,SYSNAM |
| LOCAL | PRMMBX,SYSGBL |
4.1.9 Display PostScript のサポート終了
V1.2--6
1998年8月1日から, Adobe Display PostScriptソフトウェアはサポートされなくなりました。これは,Adobe Systems 社が Display PostScript のサポートを打ち切ったことに伴う措置です。
この決定により,弊社は契約上, DECwindows Motif ソフトウェアからすべての Display PostScript 機能を削除する義務を負います。これには,関連する変換イメージのサポートおよび次のプログラミング・リファレンス・マニュアルに記述されているすべての機能が含まれます。
現在のところ,これに対する回避策はありません。 DECwindows Motif 環境のアプリケーションに及ぼすおそれのある影響についての詳細は,以降の各項を参照してください。
4.1.9.1 DECwindows Motif アプリケーションへの影響
DECwindows Motif から Display PostScript が削除されたことにより, PostScript フォーマットのグラフィックスやドキュメントの表示に Display PostScript の機能を使用するアプリケーションが影響を受けます。
なお,これには,CDA ビューアなど,弊社が開発したアプリケーションだけでなく,次のいずれかのファイルやライブラリに依存するサード・パーティ製やユーザ作成のアプリケーション,および変換したVAX のアプリケーションも含まれます。これらのアイテムはもう製品キットには含まれておらず, DECwindows Motif クライアント・ソフトウェアの以前のバージョンからアップグレードする際にシステムから削除されます。
[SYSLIB]XDPS$DPSBINDINGSSHR.EXE
[SYSLIB]XDPS$DPSCLIENTSHR.EXE
[SYSLIB]XDPS$DPSLIBSHR.EXE
[SYSLIB]XDPS$DPSBINDINGSSHR_TV_SUPPORT.EXE
[SYSLIB]XDPS$DPSCLIENTSHR_TV_SUPPORT.EXE
[SYSLIB]XDPS$DPSLIBSHR_TV_SUPPORT.EXE
[SYSLIB]CDA$ACCESS_TV_SUPPORT.EXE
[SYSLIB]DDIF$VIEWSHR_TV_SUPPORT.EXE
[SYSLIB]DECW$BKRSHR__TV_SUPPORT.EXE
[SYSLIB]DECW$MAILSHR_TV_SUPPORT.EXE
Display PostScript 削除の実際の影響は,アプリケーションでインプリメントされている範囲によって異なります。 PSWRAP コマンドを呼び出すアプリケーションは,そのコマンドが呼び出される場所でのみ異常終了します。しかし,XDPS ライブラリにリンクしているアプリケーションまたは TIS イメージは,実行時に解決できないリンクがあるため全く実行できません。
このため,現在の DECwindows Motif 環境で正しく実行するために,これらのファイルに依存する DECwindows Motif アプリケーションの該当箇所を修正する必要があります。
4.1.9.2 Java アプリケーションへの影響
Java Development Kit (JDK) for OpenVMS V1.2.2-1 には, Display PostScript (XDPS) ライブラリにリンクする 2 つの共有可能イメージ (JAVA$FONT_MANAGER_SHR.EXE およびJAVA$FONT_MANAGER_G_SHR.EXE) が含まれています。このため,Display PostScript 機能を使用するこれらのキットでビルドされたすべての Java アプリケーションは,現在のバージョンの DECwindows Motif 環境では異常終了します。
この制限事項はバージョン1.2.2-1のキットにのみ適用されることに注意してください。 1.1* シリーズ用のJavaマシンは,バージョン1.2.2-1以降のすべての JDK のリリース同様,Adobe Display PostScript ソフトウェアまたはそのライブラリに依存していません。
4.1.10 DECW$INCLUDE:INTRINSIC.Hファイル使用上の問題
V1.2--5
DECwindowsのヘッダ・ファイルDECW$INCLUDE:INTRINSIC.Hは, /STANDARD=VAXCコンパイラ・スイッチが指定されているときでも, DEC Cコンパイラ使用時にglobalrefマクロをexternとして再定義します。これは,ユーザ・アプリケーションに広範な影響を与える可能性があります。
INTRINSIC.Hにこの再定義が要求されるのは,ユーザの作成したアプリケーションが DECwindows共有イメージにあるデータを参照するとき,必ず共有イメージのコンパイル時に使用したものと同じ外部モデルを使用するように, DECwindows側で保証する必要があるためです。
この問題を回避するため,アプリケーションでは変数にglobalrefとglobaldefを使用しないで,次のプリプロセッサ命令を使用してください。
#pragma extern_model strict_refdef |
この回避策には,厳密にANSIに適合するという利点があります。この pragma 命令は,『OpenVMSシステム用DEC Cユーザーズ・ガイド』に説明されています。
4.1.11 DECW$WML_TOKENS.DAT を現在のディレクトリで検索する DECW$WML.EXE
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.12 OpenVMS システムでの変換イメージの実行 (Alpha のみ)
V1.2--3
OpenVMS オペレーティング・システムは, OpenVMS VAX から OpenVMS Alpha へ移行する際の次のような問題を解決する変換イメージ・サポート (TIS) を提供します。
変換イメージ環境は, VMS Version 5.5-2 で導入された VAX プログラミング言語機能をサポートします。また,TIS 環境は VMS Version 5.5-2 システム・サービスおよびランタイム・ライブラリ・エントリ・ポイントを使用するよう制限されているイメージをサポートします。
DECwindows Motif の変換イメージのサポート機能は, DECwindows Motif のインストレーションによって使用可能となります。 DECwindows Motif TIS 環境では,変換された DECwindows Motif for OpenVMS VAX イメージを OpenVMS Alpha システム上で実行する機能がサポートされています。ただし,そのイメージは OSF/Motif Release 1.1.3 ライブラリに対してビルドされたという条件が付きます。それより新しい OSF/Motif Release ライブラリ (1.2 以上) でビルドされた変換イメージの実行は,サポートされません。
(DECwindows Motif for OpenVMS Versions 1.2 以降で提供される) より新しい OSF/Motif ライブラリに対してビルドされたアプリケーションを実行したい場合は, OpenVMS Alpha あるいは OpenVMS I64 システム上でネイティブにアプリケーションのコンパイルおよびリンクを実行しなければなりません。
OpenVMS Alpha システムで VAX アプリケーションをビルドできない場合, OpenVMS Migration Software for VAX to Alpha (OMSVA) を使用して変換することができます。ただし,そのアプリケーションが OSF/Motif Release 1.1.3 プログラミング環境でビルドされているという条件が付きます。
OSF/Motif Release 1.1.3 プログラミング環境に対してビルドされたほとんどの VAX イメージは,OpenVMS Alpha システムへコピーし,変換し,正しく実行することができます。ただし,変換イメージで使用される OSF/Motif Release 1.1.3 共有イメージはネイティブ・イメージのものとは異なり,ネイティブ・イメージに使用される共有イメージとは互換性がありません。このため,次のような制限事項が適用されます。
DECwindows Motif TIS 環境を有効にするための詳細については,『HP DECwindows Motif for OpenVMS インストレーション・ガイド』を参照してください。 OSF/Motif アプリケーション・プログラミング・サポートについての詳細は, 第 4.3 節 を参照してください。
| 前へ | 次へ | 目次 | 索引 |