日本-日本語
日本HPホーム 製品 & サービス OpenVMS製品情報
≫  お問い合わせ


OpenVMS マニュアル


 

OpenVMS ドキュメント
ライブラリ

タイトルページ
目次
まえがき
第 1 章:一般ユーザ向けリリース・ノート
第 2 章:システム管理者向けリリース・ノート
第 3 章:プログラミングに関するリリース・ノート
第 4 章: 関連ドキュメントに関するリリース・ノート
第 5 章:日本語機能に関するリリース・ノート
付録 A :OSF/Motif リリース 1.2 リリース・ノート
付録 B :OSF/Motif サンプル・プログラム
索引
PDF
OpenVMS ホーム
日本語 HP DECwindows Motif for OpenVMS

日本語 HP DECwindows Motif
for OpenVMS
リリース・ノート


目次 索引

第 3 章
プログラミングに関するリリース・ノート

この章では, DECwindows Motif 環境でのプログラミングについての注意事項を説明します。

3.1 プログラミング全般

この節では, DECwindows Motif プログラミング環境全般についての注意事項を説明します。

3.1.1 V1.3-1 またはそれ以降でアプリケーションが正しく表示されない問題

V1.6

DECW$INCLUDE:XLIB.h に定義されている ConnectionNumber マクロを使用して LCN を取得し,サーバからのイベントをポーリングしているアプリケーションで,この問題が報告されました。 V1.3-1 またはそれ以降の ConnectionNumber マクロの実装では, LCN ではなく EFN が返されます。これにより,V1.3-1 またはそれ以降のアプリケーションは,サーバからのイベントを受信しなくなります。アプリケーションはサーバからイベントを受信しないため,正しく表示されず,アプリケーションがハングアップしているように見えます。

この問題に対処するために, ConnectionNumber マクロの実装が変更されました。このマクロは,イベント・フラグ番号を返す (DECwindows V1.2-6 との互換性のため) ことも,論理接続番号を返すこともできます。 DECW_Select 関数では,論理接続番号を使用する必要があります。

ConnectionNumber マクロは, DECW_USE_LCN_FOR_CONNECTION マクロが設定された状態でコンパイルすると,必ず論理接続番号を返します。このマクロが設定されておらず,XInitThread が呼び出されない場合は, ConnectionNumber はイベント・フラグ番号を返します。このマクロが設定されていないが,XInitThread が呼び出された場合は,論理接続番号が返されます。

XConnectionNumber 関数は, XInitThreads が呼び出されていなければイベント・フラグを返し, XInitThreads が呼び出されており, DECW_USE_LCN_CONNECTION マクロの影響がなければ論理接続番号を返します。しかし,DECW_USE_LCN_FOR_CONNECTION が定義されていれば, XConnectionNumber は, DECW$ConnectionNumber 関数にマッピングされるマクロとして定義されます。この関数は,論理接続番号を返すように定義されています。

3.1.2 XPOLL.H の変更

V1.6

XPOLL.H ヘッダ・ファイルは, relaxed_ansi モードでコンパイルできるように変更されました。 XPOLL.H は, fd_set 型の代わりに DECW_FD_Set 型を定義し, FD_ZERO,FD_CLR,FD_SET,FD_ISSET,および Select の代わりにマクロ DECW_FD_ZERO,DECW_FD_CLR,DECW_FD_SET,DECW_FD_ISSET, DECW_Select を定義している点で X.org のサンプル実装と異なっています。これは,OpenVMS をインストールすることで提供される socket.h および time.h で行われている別の定義との衝突を避けるためです。 XPOLL.H をインクルードする前に DECW_USE_FD_SET マクロが設定されている場合,標準の名前が使用されますが,これらの名前は対応する DECW マクロを指します。

たとえば, xpoll.h をインクルードする前に DECW_USE_FD_SET マクロを設定すると, FD_CLR は DECW_FD_CLR と同じになります。 time.h または select.h からの定義もプログラム中で必要な場合には,この設定は行わないでください。

XPOLL.H は "DECW_Select" マクロを定義しますが,これはソケット関数 "select" と同じではありません。 "DECW_Select" マクロは X-Lib と ICE が用意する接続番号だけをサポートしていますが,"select" 関数は,オープン済みソケットのファイル記述子だけをサポートしています。

XPOLL.H のマクロは,XInitThreads が呼び出されていてもいなくても,使用することができます。ただし, ConnectionNumber マクロを使用する際には次の点に注意してください。

XPOLL.H を使用したコード例を次に示します。

while (!XEventsQueued (dpy, QueuedAfterReading)) 
{ 
/* wait for more events */ 
DECW_FD_Set fds; 
DECW_FD_ZERO (&fds); 
DECW_FD_SET (ConnectionNumber(dpy), &fds); 
DECW_Select (1, &fds, 0, 0, 0); 
} 

このコードが正しく動作するためには,XEventsQueued 呼び出しと DECW_Select 呼び出しの間で,イベントがイベント・キューに移動されず,処理されないことが重要です。このような状況は,他のスレッドが XEventsQueued を呼び出した場合に発生することがあります。ディスプレイに対して,XSelectAsyncInput または XSelectAsyncEvent が呼び出された場合にも発生することがあります。そのため, DECW_Select 関数では非同期イベントの処理を有効にしないでください。

3.1.3 XLIBINT.H の変更

V1.6

XLIBINT.H 内の LockDisplay() マクロを参照するアプリケーションをコンパイルすると, LockDisplay() が使用する SYS$SETAST() ルーチンにプロトタイプがないため,診断警告メッセージが出力されていました。

XLIBINT.H ヘッダ・ファイルが修正され,この診断警告メッセージの出力は解消されています。

3.1.4 _XDefaultIOError でのエラー処理の問題

V1.6

V1.3 および V1.3-1 での _XDefaultIOError ルーチンの実装のバグにより,このルーチンを使用するプログラムが,失敗にもかかわらず $STATUS として 1 を返していました。この問題は修正され,"-E-" エラーが通知されるようになりました。

3.1.5 _XDefaultError でのエラー処理の問題

V1.6

V1.3 および V1.3-1 の _XDefaultError ルーチンの実装のバグにより,プログラムがエラーで異常終了します。この問題は修正され,"-E-" エラーが通知されるようになりました。このコードにより,省略時のエラーハンドラに処理が引き継がれます。ただし,X-lib の X.Org 仕様では,省略時のエラー処理はメッセージを出力し,終了するように規定されています。この標準との相違については,注意する必要があります。

3.1.6 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 ツールキットに対してビルドされているアプリケーションだけです。

3.1.7 ランタイムおよびプログラミング環境

V1.5

DECwindows Motif for OpenVMS Version 1.5 では,以下のランタイムおよびプログラミング環境を提供します。

  • CDE Motif 1.0 ツールキット (OSF/Motif リリース 1.2.5), OSF/Motif リリース 1.1.3 ツールキット,および X ユーザ・インタフェース (XUI) ツールキットには,ランタイム・サポートが用意されています。

  • 開発サポートは CDE Motif 1.0 ツールキットだけに用意されています。

  • Pascal,Fortran,C 用にアップデートされた Motif 言語バインディングとともに, C++ の言語サポートが提供されます。

  • Ada 用の言語バインディングは,レイヤード製品 Ada Version 3.5A for OpenVMS の一部として, OpenVMS Alpha および OpenVMS VAX プラットフォームで利用できます。ただし,これらのバインディングは DECwindows Motif for OpenVMS Version 1.2--6 以後に追加された拡張を含みません。

開発サポートは特に 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 プログラミング・サポートに関するその他の情報は, 第 3.3.3 項 を参照してください。

3.1.8 アップコールが有効なマルチスレッド・アプリケーションでアドレスの間違いが発生する問題の解決 (Alpha のみ)

V1.5

DECwindows Motif for OpenVMS Alpha Version 1.3 以上のシステムで,マルチスレッドの DECwindows Motif アプリケーションをアップコールを有効にしてコンパイルし,実行すると,ユーザ・モード・スタックでランダム・アドレスに間違いが発生する場合があるという問題がありました。この問題は, DECwindows Motif for OpenVMS Version 1.5 で解決されています。

3.1.9 すべてのトランスポート・バッファが使用中の場合に DECwindows ディスプレイ・サーバが書き込み操作をブロックする問題

V1.5

すべてのトランスポート・バッファが使用中の場合, DECwindows X ディスプレイ・サーバは DECwindows クライアントへの書き込み操作をブロックします。クライアントが, 30 秒のタイムアウト期間内でバッファの読み取りおよび解放に失敗すると,サーバはその接続をクローズします。この場合,このタイムアウト時間内はサーバはハング状態になりその他の要求あるいはイベントの処理を行いません。

DECwindows Motif Version 1.3 より前のバージョンでは,クライアント・ソフトウェアは,ユーザ・モード AST を使用してトランスポート・バッファから内部メモリへイベントを転送します。このため,一時停止状態の場合あるいはユーザ・モード AST が長期間無効な場合は,クライアントはバッファの読み取りに失敗します。

Version 1.3 以降, DECwindows Motif クライアントは,イベントを処理するクライアント機能,あるいは応答が必要なクライアント機能が呼び出されるまでトランスポート・バッファからの読み取りを行いません。特定の表示接続に関してクライアントがイベントをアクティブに処理していない場合,イベントが到着したときにサーバがハングし,接続がクローズします。 Xt を使用してアプリケーション・コンテキストを作成し XtAppMainLoop を使用してイベントを処理するプログラムでは,この問題は発生しません。

3.1.10 getaddrinfo および getnameinfo を呼び出す関数が TCP/IP 接続でスレッドセーフでない問題

V1.5

HP TCP/IP Services for OpenVMS では,現在は getaddrinfo および getnameinfo 関数のスレッドセーフの実装を提供していません。このため,XOpenDisplay および IceOpenConnection の DECwindows の実装,ならびにこれらの関数でビルドされたイメージも, TCP/IP トランスポートで接続がオープンされた場合はスレッドセーフではありません。この問題は,IPv4 あるいは IPv6 のどちらの名前フォーマットの TCP/IP トランスポート接続の場合も同じように適用されます。

3.1.11 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 の関数をすべてアプリケーションのメイン・スレッドから呼び出すマルチスレッド・アプリケーションでは発生しません。

3.1.13 ICE,プロキシ・マネージャ,および LBX サーバ・プロセスに必要な特権

V1.3

ICE (Inter-Client Exchange),プロキシ・マネージャ,および LBX (Low-Bandwidth X) プロキシ・サーバはそれぞれ,独立したサーバ・プロセスを生成する機能を持っています。これらのサーバ・プロセスは, 1 つ以上のトランスポート・インタフェースにアクセスし,クライアント・コネクションを管理するために,システム・リソースを必要とすることがあります。

次の表では,ネットワーク・トランスポート別に,適切なリソースにアクセスするために必要な最小限の特権を示します。

トランスポート 特権
TCPIP NETMBX
DECNET TMPMBX,NETMBX,SYSNAM
LOCAL PRMMBX,SYSGBL



3.1.14 Display PostScript のサポート終了

V1.2--6

1998年8月1日から, Adobe Display PostScriptソフトウェアはサポートされなくなりました。これは,Adobe Systems 社が Display PostScript のサポートを打ち切ったことに伴う措置です。

この決定により,弊社は契約上, DECwindows Motif ソフトウェアからすべての Display PostScript 機能を削除する義務を負います。これには,関連する変換イメージ・サポートおよび次のプログラミング・リファレンス・マニュアルに記述されているすべての機能が含まれます。

  • 『VMS DECwindows Display PostScript System Programming Supplement』

  • 『Display PostScript System: Perspective for Software Developers』

  • 『Display PostScript System: Client Library Reference Manual』

  • 『Display PostScript System: Color Extensions』

  • 『Display PostScript System: pswrap Reference Manual』

  • 『PostScript Document Structuring Conventions Specification Version 2.1』

現在のところ,これに対する回避策はありません。 DECwindows Motif 環境のアプリケーションに及ぼすおそれのある影響についての詳細は,以降の各項を参照してください。

DECwindows Motif から Display PostScript が削除されたことにより, PostScript フォーマットのグラフィックスやドキュメントの表示に Display PostScript の機能を使用するアプリケーションが影響を受けます。

なお,これには,CDA ビューアなど,弊社が開発したアプリケーションだけでなく,次のいずれかのファイルやライブラリに依存するサード・パーティ製やユーザ作成のアプリケーション,および変換したVAX のアプリケーションも含まれます。これらのアイテムはもう製品キットには含まれておらず, DECwindows Motif クライアント・ソフトウェアの以前のバージョンからアップグレードする際にシステムから削除されます。

  • PSWRAP コマンド (DCL)

  • Display PostScript (XDPS) ライブラリ
    [SYSLIB]XDPS$DPSBINDINGSSHR.EXE
    [SYSLIB]XDPS$DPSCLIENTSHR.EXE
    [SYSLIB]XDPS$DPSLIBSHR.EXE

  • Display PostScript ヘッダ・ファイルおよびサンプル・プログラム

  • 変換イメージ・サポート(TIS) ファイル
    [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 アプリケーションの該当箇所を修正する必要があります。


目次 索引

© 2012 Hewlett-Packard Development Company, L.P.