Compaq OpenVMS
V7.3 リリース・ノート【翻訳版】


前へ 次へ 目次 索引



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

この章では,OpenVMS システムでのアプリケーション・プログラミングとシステム・プログラミングの両方に関するリリース・ノートをまとめます。

OpenVMS バージョン 7.3 の新しいプログラミング機能の詳細については,『OpenVMS V7.3 新機能説明書』を参照してください。

6.1 Backup API

ここでは,Backup アプリケーション・プログラミング・インタフェース (API) のリリース・ノートをまとめます。

6.1.1 予測されない情報メッセージ

V7.2

Backup API は,バックアップが完了した後,不正な終了ステータス BACKUP-I-INCONQUALS を返し,情報メッセージを表示することがあります。しかし,バックアップは正常に行われます。

次の BCK_OPT_K_BEFORE_TYPE フラグと BCK_OPT_K_SINCE_TYPE フラグは削除されています。これらのフラグを 1 つ以上使用すると,情報メッセージが表示されることがあります。

BCK_OPTYP_BEFORE_K_CREATED
BCK_OPTYP_BEFORE_K_EXPIRED
BCK_OPTYP_BEFORE_K_MODIFIED
BCK_OPTYP_BEFORE_K_SPECIFIED
BCK_OPTYP_SINCE_K_CREATED
BCK_OPTYP_SINCE_K_EXPIRED
BCK_OPTYP_SINCE_K_MODIFIED
BCK_OPTYP_SINCE_K_SPECIFIED

6.1.2 ジャーナリング・コールバック・イベントの制限事項

V7.1

アプリケーションがジャーナリング・イベントのいずれかに対してコールバック・ルーチンを登録する場合は,すべてのジャーナリング・コールバック・イベントに対してコールバック・ルーチンを登録しなければなりません。ジャーナリング・コールバック・イベントは次のとおりです。

BCK_EVENT_K_JOURNAL_OPEN
BCK_EVENT_K_JOURNAL_WRITE
BCK_EVENT_K_JOURNAL_CLOSE

これは永久的な制限事項です。

コールバック・ルーチンの登録の詳細については,『OpenVMS Utility Routines Manual』の Backup API に関する章を参照してください。

6.1.3 BACKUP$START を繰り返し呼び出すとエラーが発生することがある

V7.1

BACKUP$START を繰り返し呼び出すと,次のエラーが発生することがあります。


%BACKUP-F-INSBUFSPACE, insufficient buffer space 

このエラーが発生するまでの呼び出しの繰り返し回数は,それまで実行したバックアップ操作に応じて異なります。

アプリケーションでこのエラーが発生した場合は,操作をいったん終了し,再起動しなければなりません。

6.2 バッチ・キューとプリント・キュー---バッチ・ジョブの実行の終了

V6.2

次の状況では,DELETE/ENTRY コマンドは実行中のバッチ・ジョブを停止できないことがあります。

DELETE/ENTRY コマンドを実行すると,ジョブは各フェーズごとに終了します。 delete_process AST ルーチンはユーザ・モード,スーパーバイザ・モード,エグゼクティブ・モードで実行されます。各モードの切り替えに少し時間がかかるため,バッチ・ジョブでユーザ・モード・イメージが終了した後,スーパーバイザ・モードの delete_process AST ルーチンが実行されるまでに,コマンド・プロシージャの実行が続行されることがあります。

SYNCHRONIZE コマンドの戻りステータスには,ターゲット・バッチ・ジョブの終了ステータスが含まれているものと解釈されます。さらに,コマンド・プロシージャは通常,SYNCHRONIZE コマンドを実行する前に, $ON ERROR THEN CONTINUE や $SET NOON などのコマンドを実行します。 SYNCHRONIZE コマンドを実行しているジョブに対して,DELETE/ENTRY コマンドが実行された場合,JBC$_JOBABORT は,SYNCHRONIZE コマンドの戻りステータスではなく,ターゲット・バッチ・ジョブの終了ステータスであると解釈されます。この結果,コマンド・プロシージャはこの誤った仮定のもとに,実行を短時間続行し,ターゲット・バッチ・ジョブをキューに再登録する,ターゲット・バッチ・ジョブの障害を誤って報告するなどの操作を行います。

この問題を解決するために,SYNCHRONIZE コマンドに対して,この状況を検出し,ユーザ・モードの実行が終了してからスーパーバイザ・モードの実行が終了するまでの遅延時間より長い時間,終了ハンドラを待機させるようにしています。

プログラムの戻りステータスとして,$SNDJBC システム・サービスの SJC$_ SYNCHRONIZE_JOB ファンクション・コードによって取得されたジョブ終了ステータスを報告する他のイメージは,次のようなロジックを実装しなければなりません。

  1. 終了ハンドラを宣言します。

  2. 終了ハンドラで次のロジックを実装します。


    IF (exit status is JBC$_JOBABORT) 
    THEN 
        Wait 10 seconds 
    ENDIF 
    

6.3 COM for OpenVMS (Alpha のみ)

V7.3

COM for OpenVMS のリリース・ノートについては,『OpenVMS コネクティビティ開発者ガイド』を参照してください。このドキュメントは,COM for OpenVMS のインストール・プロセスの一部としてインストールされ,PostScript 形式, HTML 形式,PDF 形式で提供されます。

また,『OpenVMS コネクティビティ開発者ガイド』は,次の場所にある OpenVMS Web サイトから入手することもできます。

http://digital.compaq.co.jp/openvms/document/

6.4 Compaq Ada 実行時ライブラリ

ここでは,Compaq Ada 実行時ライブラリに関するリリース・ノートをまとめます。

6.4.1 Ada 宣言が登録されている OpenVMS テキスト・ライブラリ

V7.2

次のファイルは,STARLET 用にオプションとして提供される OpenVMS テキスト・ライブラリであり,Ada 宣言が格納されています。

SYS$LIBRARY:STARLET_RECENT_ADA_SUBSET.TLB
SYS$LIBRARY:LIB_ADA_SUBSET.TLB

これらのファイルは,Compaq Ada V3.5A Predefined Library (最終更新は, OpenVMS バージョン 7.1) では提供されていません。

これらのファイルは,Compaq Ada ではサポートされていません。

6.4.2 予測されないストレージ・エラー (Alpha のみ)

V7.0

OpenVMS Alpha バージョン 7.0 およびそれ以降では,Compaq Ada タスクが使用するタスク空間のサイズに関して,誤った仮定を行う一部の DEC Ada プログラムで,バイナリの互換性が正しくとられていません。これまで発生していなかったストレージ・エラーがタスクで発生した場合は,タスクに対してストレージ・サイズを指定する length 句を追加しなければならない可能性があります。すでに length 句を使用している場合は,指定するストレージのサイズを大きくしなければなりません。この処理が必要なのは,指定したサイズ (またはデフォルト・サイズ) がタスクの実行にとって十分な大きさでない場合だけです。

6.4.3 AST プロシージャでアクセス違反は発生しない

V7.2

Compaq Ada で作成された AST プロシージャは,ヌル・スレッドや Compaq Ada 以外のスレッドが実行されているときに,そのプロシージャを起動する AST が発生すると,アクセス違反になっていました。

この問題への対処 (プラグマAST_ENTRYが設定されているタスク・エントリ・ポイントを使用するようにプログラムを書き直すこと) は不要になりました。

6.5 Compaq C 実行時ライブラリ

ここでは,Compaq C 実行時ライブラリ (RTL) に関するリリース・ノートをまとめます。

6.5.1 strptime 関数の XPG5 準拠

V7.3

strptime関数が,XPG5 (X/Open CAE Specification System Interfaces and Headers Issue 5) に準拠するよう変更されました。変更の内容は,世紀が指定されていない場合に,2 桁の年号を表す "%y" ディレクティブを, strptime関数が処理する方法に関するものです。

世紀が指定されていない場合,XPG5 では,"%y" ディレクティブの値が 69〜99 の範囲にある場合は 20 世紀 (1969年〜1999年) を意味し,00〜69 の範囲にある場合は 21 世紀 (2000〜2068) を意味することになっています。つまり,"%y" ディレクティブについて, strptimeが"ピボット"関数であり, 69 がピボット年となっているわけです。

変更前は, strptime関数は,世紀の指定がない場合に, 2 桁の年号をすべて 20 世紀の年号として解釈していました。

OpenVMS バージョン 7.3 では,XPG5 準拠の strptimeが, Compaq C RTL におけるデフォルトの strptime関数になっています。ただし,互換性を保つために,以前の非ピボットの XPG4 準拠の strptime関数も残されています。

ピボットは,DECC$XPG4_STRPTIME 論理名によって制御されます。非ピボットの strptimeを使用するには,次のいずれかを行います。

6.5.2 times 関数と clock 関数の AST リエントラント化

V7.3

times関数と clock関数が,AST リエントラントになりました。

変更前は, times関数と clock関数は,スレッドセーフな関数のクラスに属していましたが,AST リエントラントではありませんでした ( 『Compaq C Run-Time Library Reference Manual for OpenVMS Systems』のマルチスレッドに関する制限事項についての節を参照)。

6.5.3 ディレクトリのネストを 8 レベルまでとする上限の解除 (Alpha のみ)

V7.3

Compaq C RTL I/O サブシステムで,ODS-5 デバイスのディレクトリのネストを 8 レベルまでとする上限が解除されました。これは, accessmkdiropendirrmdir,および statなどの Compaq C RTL 関数に影響します。

6.5.4 引数としての OpenVMS スタイルの長いファイル名(Alpha のみ)

V7.3

OpenVMS Alpha バージョン 7.2 では,Compaq C RTL I/O 関数 ( creatstat,およびオープン・ファミリの関数に属する関数) が,ODS-5 デバイスについて,OpenVMS スタイルの長いファイル名を許容するようになりました。

OpenVMS Alpha バージョン 7.3,および chdirexecファミリの関数に属する関数以外のすべての Compaq C RTL 関数も,ODS-5 デバイスについて,OpenVMS スタイルの長いファイル名を許容するようになりました。

6.5.5 ファイル名の大文字小文字の維持のサポート(Alpha のみ)

V7.3

Compaq C RTL は,ODS-5 デバイスについて,ファイル名の大文字小文字を維持するようになりました。この機能は,ユーザが明示的に有効にする必要があります。詳細については,『OpenVMS V7.3 新機能説明書』を参照してください。

6.5.6 大文字小文字を維持する argv 引数のサポート (Alpha のみ)

V7.3

Compaq C RTL は,コマンド行で指定する引数の大文字小文字を維持するようになりました ( argv引数)。この機能は,ユーザが明示的に有効にする必要があります。詳細については,『OpenVMS V7.3 新機能説明書』を参照してください。

6.5.7 共用アクセス用のファイルのオープン

V7.3

Compaq C RTL は, open*または creat呼び出しで "shr=del,get,put,upd" を指定した場合と同様に,すべてのファイルを共用アクセス用にオープンするようになりました。この機能は,ユーザが明示的に有効にする必要があります。詳細については,『OpenVMS V7.3 新機能説明書』を参照してください。

6.5.8 UNIX ファイル指定を変換するための別の方法

V7.3

Compaq C RTL は,UNIX スタイルのファイル指定の頭の部分を,サブディレクトリ名またはデバイス名のいずれかとして解釈できるようになりました。

一定の機能テスト論理名が設定されている場合,Compaq C RTL は, UNIX スタイルの foo/barという名前を OpenVMS スタイルの [.foo]barという名前に変換します。以前のバージョンの OpenVMS では, foo:barという名前にしか変換できませんでした。詳細については,『OpenVMS V7.3 新機能説明書』を参照してください。

6.5.9 国際化のサポート

V7.3

OpenVMS バージョン 7.3 の I18N (国際化キット用) セーブセットの名前は VMSI18N073 です。このセーブセットをインストールするには,キットの名前にセーブセット名を使用し,OpenVMS の標準のインストール手順に従います。セーブセットの格納位置と名前については,『OpenVMS Version 7.3 Software Developer Toolkit CD--ROM Guide』を参照してください。

6.5.10 新しい関数

V7.3

Compaq C RTL は,OpenVMS バージョン 7.3 で次の関数を追加しました。


fchown         hsearch_r 
hcreate        link 
hcreate_r      utime 
hdestroy       utimes 
hdestroy_r     writev 
hsearch 

6.5.11 リンクのための新しい LINK/NOSYSSHR コマンド (VAX のみ)

V7.3

OpenVMS VAX システムでリンクを行うための LINK/NOSYSSHR コマンドが,次のように変更されました。


$ LINK/NOSYSSHR PROG, SYS$LIBRARY:DECCRTL.OLB/INCLUDE=(CMA$TIS,CMA$TIS_VEC)/LIB 

以前の LINK コマンドを次に示します。


$ LINK/NOSYSSHR PROG, SYS$LIBRARY:DECCRTL.OLB/INCLUDE=CMA$TIS/LIB 

6.5.12 ソケット関数による無効なファイル記述子の障害ステータスの通知

V7.3

指定されたファイル記述子セットで,無効なファイル記述子 ( errnoが EBADF に設定される) またはソケットに関連付けられていないファイル記述子 ( errnoが ENOTSOCK に設定される) が検出された場合, select関数が障害ステータスを返すようになりました。どちらのイベントでも, selectは,標準の規定どおり,処理を停止して操作を行いません。

errnoが EBADF に設定されている場合に障害ステータスを返すことは, select関数の標準の必要条件です。 errnoが ENOTSOCK に設定されている場合の障害ステータスは,現在, select関数がソケット上でのみ動作することを考えて,より多くの情報を提供するために追加されました。

以前のバージョンの C RTL は, selecterrnoを EBADF または ENOTSOCK に設定してはいましたが,無効なファイル記述子やソケットに関連付けられていないファイル記述子を無視して残りの有効なファイル記述子の処理を続けていました。このような以前どおりの動作を選択するには,アプリケーションを起動する前に,論理名 DECC$SELECT_IGNORES_INVALID_FD を任意の値に定義します。

6.6 Compaq COBOL 実行時ライブラリ (Alpha のみ)

ここでは,Compaq COBOL 実行時ライブラリ (RTL) for OpenVMS Alpha (旧名,DEC COBOLおよびDIGITAL COBOL) に関するリリース・ノートをまとめます。

6.6.1 Y2K 内部関数をサポートする新しいルーチン

V7.3

RTL は,4 桁の年号形式を持つ,次の 5 つの内部関数を新たにサポートするようになりました。

YEAR-TO-YYYY
DATE-TO-YYYYMMDD
DAY-TO-YYYYDDD
TEST-DATE-YYYYMMDD
TEST-DAY-YYYYDDD

6.6.2 パフォーマンスの向上

V7.3

ファイルにリダイレクトされる DISPLAY について,また /MATH=CIT3 と /MATH=CIT4RTL に準拠するプログラムでパフォーマンスの向上が図られました。

6.6.3 以前のバージョンとリンクするプログラムとの RTL の互換性

V7.3

次の領域において,V2.4 TIMA RTL および V2.5 RTL にリンクするプログラムとの間で,RTL の互換性が再度確保されました。

ACCEPT FROM DATE YYYYMMDD
ACCEPT FROM DAY YYYYDDD
/MATH=CIT3 (/SWITCH=DC_USE_CIT3 with V2.4 TIMA)

これらの機能を使用し,以前の V2.6 RTL (DEC$COBRTL V2.6-467 または V2.6-470) にリンクされているプログラムは,DEC$COBRTL V2.6-496 に再リンクする必要があります。再リンクしないと,プログラムが実行時に失敗し,おそらく誤った結果となります。COBORTL026 をインストールしておらず,V2.6 のプログラムにリンクしていない場合は,再リンクするプログラムがありません。また,先に述べた機能を使用しないプログラムも再リンクの必要はありません。

6.6.4 /NATIONALITY=JAPAN を使用した UNSTRING

V7.3

RTLが,/NATIONALITY=JAPAN と PIC N ソース文字列を使用する UNSTRING を正しく取り扱うようになりました。以前,RTL は,ソース文字列内の偶数バイト・オフセットで始まるデリミタに,誤って合わせていました。

6.6.5 ON SIZE ERROR のサポート

V7.3

RTL が,Compaq COBOL for OpenVMS VAX とより互換性の高い方法で ON SIZE ERROR を取り扱うようになりました。

6.6.6 READ PRIOR のサポート

V7.3

RTL は,READ PRIOR に符号付きロングワードを超える RFA を設定した場合でも,これを正しく取り扱うようになりました。

6.7 Compaq COBOL 実行時ライブラリ (VAX のみ)---Y2K 内部関数をサポートする新しいルーチン

V7.3

このリリース・ノートは,Compaq COBOL Run-Time Library (RTL) for OpenVMS VAX (旧称 VAX COBOL および DIGITAL VAX COBOL) をまとめたものです。 RTL は,4 桁の年号形式を持つ,次の 5 つの内部関数を新たにサポートするようになりました。

YEAR-TO-YYYY
DATE-TO-YYYYMMDD
DAY-TO-YYYYDDD
TEST-DATE-YYYYMMDD
TEST-DAY-YYYYDDD

6.8 Compaq DCE (Distributed Computing Environment) for OpenVMS

ここでは,Compaq DCE (Distributed Computing Environment) for OpenVMS VAX および OpenVMS Alpha の既存のユーザのためのリリース・ノートをまとめます。

OpenVMS バージョン 7.2 以降,リモート・プロシージャ・コール (RPC) は,オペレーティング・システムに統合されています。OpenVMS バージョン7.2-1 では,NTLM (NT Lan Manager) のセキュリティが,RPC 呼び出しで利用できます。 RPC 機能の詳細については,『Compaq DCE for OpenVMS VAX and OpenVMS Alpha Reference Guide』を参照してください。

警告

Compaq DCE for OpenVMS バージョン 1.4 を OpenVMS バージョン 7.2 以上のシステムにインストールしてはなりません。インストールすると,新しい RPC ファイルがバージョン 1.4 の RPC ファイルを上書きします。この問題は,Compaq DCE for OpenVMS バージョン 1.5 またはバージョン 3.0 では生じません。

Compaq DCE for OpenVMS の詳細については,次のドキュメントを参照してください。

6.8.1 DCE のシステム管理用コマンド・プロシージャ

V7.3

OpenVMS バージョン 7.2-1 における DCE RPC ファイルの更新にともない, DCE システム管理用コマンド・プロシージャ (SYS$MANAGER:DCE$SETUP.COM) に次の変更が行われました。

6.8.2 NTLM の認証済み RPC 機能の採用

V7.3

NTLM (NT Lan Manager) プロトコルによる偽装と認証をはじめとする DCE for OpenVMS バージョン 3.0 の新しい認証済み RPC 機能が, OpenVMS バージョン 7.2-1 から利用できるようになりました。

NTLM の使用方法の詳細については,OpenVMS バージョン 7.2-1 およびバージョン 7.3 に付属の Compaq DCE for OpenVMS VAX および OpenVMS Alpha に関するドキュメントを参照してください。

6.9 デバッガ

ここでは,OpenVMS デバッガに関するリリース・ノートをまとめます。

6.9.1 ANALYZE/PROCESS_DUMP コマンド (Alpha のみ)

V7.3

ANALYZE/PROCESS_DUMP OpenVMS デバッガ・コマンドのドキュメントには, /IMAGE_PATH=directory-spec 修飾子を指定しない場合,デバッガが次のディレクトリでデバッガ・シンボル・テーブル・ファイル (.DSF または .EXE) を検索することが記載されています。

  1. ダンプ・ファイルが含まれているディレクトリ

  2. SYS$SHARE ディレクトリ

  3. SYS$MESSAGE ディレクトリ

現在のところ,/IMAGE_PATH=directory-spec 修飾子を指定しない場合,デバッガは,ダンプ・ファイルが含まれるディレクトリではなくデバッガを起動したディレクトリを検索します。

回避方法として,/IMAGE_PATH=directory-spec 修飾子を使用してデバッガ・シンボル・テーブル・ファイルの場所を指定してください。

6.9.2 SET MODULE コマンド

V7.3

SET MODULE コマンドは,ネストした有効範囲を最高 200 レベルまで扱えるようになりました。以前の上限は,100 レベルでした。

6.9.3 SET EVENT Ada コマンド

V7.3

前バージョンのデバッガでは,SET EVENT Ada コマンドが機能せず,イベント機能が THREADS のままになることがありました。この問題は修正済みです。

6.9.4 列挙リスト

V7.3

以前のバージョンのデバッガは,宣言を使用して列挙リストを照合すると,エラーが発生しました。たとえば,次の宣言を使用すると,論理エラーとなりました。


 namespace ns {  enum EE { Me, Myself, I };     } 
 main()       {  using ns::EE; 
                 EE e = Me;                     } 
 

発生した論理エラーは次のとおりです。


  DBG> EXAMINE EE 
  %DEBUG-E-INTERR, debugger error in DBGPARSER\PATHNAME_TO_PRIMARY 10... 

この問題は修正済みです。

6.9.5 クラス・メンバとしての列挙リテラル

V7.3

以前のバージョンのデバッガは,C++ 列挙リテラルをクラス・メンバとして取り扱いませんでした。この問題は修正済みです。たとえば,次の宣言がある場合,デバッガは 'B::red' と 'b.red',および 'p->red' を照合します。


  struct B { enum colors { yellow, red, green, purple }; } b, *p; 

6.9.6 グローバル・シンボル・テーブルの検索

V7.3

C プログラムおよび C++ プログラムをデバッグするとき,以前のバージョンのデバッガは,大文字小文字の区別についての誤った内部仮定が原因で,グローバル・テーブル検索の際に問題が発生していました。次に例を示します。


 DBG> EXAMINE FOO 
 %DEBUG-E-NOSYMBOL, symbol 'foo' is not in the symbol table 
 DBG> EXAMINE FOO 
 X_CXXC_BUGS3560A\foo:   0 

この問題は修正済みです。

6.9.7 グローバル・セクション・ウォッチポイント (Alpha のみ)

V7.3

以前のバージョンのデバッガは,グローバル・セクションの変数にウォッチポイントを設定できないことがありました。この問題は修正済みです。

6.9.8 VAX と Alpha で表示が異なる配列要素

V7.3

以前のバージョンの Alpha デバッガは,FORTRAN 配列を行優先で表示していました。新しいバージョンではこの問題が修正され,Alpha デバッガも列優先で表示するようになりました。

6.9.9 C++ における誤ったアドレス処理

V7.3

以前のバージョンのデバッガは,C++ プログラムのデバッグ時に,オブジェクトにアクセスできないことがありました。たとえば,次のような場合です。


 DBG> EXAMINE C 
 %DEBUG-E-NOACCESSR, no read access to address 000000017AEF3A34 

デバッガは,32 ビット・アドレスを検索すべきであるのに,64 ビット・アドレスを検索することがありました。この問題は修正済みです。

6.9.10 クロスイメージ・シンボルのフィックスアップ

V7.3

バージョン 7.2 Alpha デバッガを使用する際,クロスイメージ・シンボルのフィックスアップに問題があるために,ユニバーサル・データ変数が誤ったアドレスに解決されることがありました。この問題は修正済みです。

6.9.11 Compaq DECwindows Motif インタフェースでのプログラムへの割り込み

V7.3

バージョン 7.2 のデバッガでは,DECwindows Motif インタフェースの STOP ボタンと画面モードの Ctrl/C で,ユーザにコントロールを返さないことがありました。この問題は修正済みです。

6.9.12 ネストした匿名共用体

V7.3

以前のバージョンのデバッガでは,C++ で匿名共用体がネストされている場合に,誤ってシンボル化されることがありました。たとえば,次の定義は,u.s を 'u. ::s' とシンボル化していました。


   struct U { 
       int x; 
       union { int l; union { int s; int t; }; }; 
       } u; 

この問題は修正済みです。

6.9.13 C の匿名構造

V7.3

C の可変構造は,匿名構造を作成するための Compaq C の VAX C 拡張機能です。たとえば,次の定義により,'u.a' といった参照が可能になります。


    union { 
        variant_struct { 
           int a; 
           int b; 
        } vs; 
    } u; 

以前のバージョンのデバッガは,この処理ができませんでした。この問題は修正済みです。

6.9.14 C++ 参照のシンボル化

V7.3

以前のバージョンのデバッガは,C++ の参照をシンボル化するとき,末尾に余分のピリオドが付きました。次に例を示します。


    Source:      int &k = i; 
 
    Symbolization:     REFERENCE\k.:   0 

この問題は修正済みです。

6.9.15 クラス・シンボルとしての列挙子

V7.3

以前のバージョンのデバッガで,次の C++ 定義を行うとします。


  struct C_Outer { 
       struct C_Middle2 { 
               enum Middle2_E3 {}; 
       } middle2; 
  } c_outer; 

これにより,次のエラーが発生していました。


DBG> show SYMBOL/FULL C_Outer 
type C_Outer 
    struct (C_Outer, 1 component), size: 1 byte 
      contains the following members: 
%DEBUG-E-INTERR, debugger error in DBGDUMP\DBG$GET_SYMBOL_OFFSET 
            or session corruption 

この問題は修正済みです。

6.9.16 インライン・コード

V7.3

以前のバージョンのデバッガは,/OPTIMIZED スイッチを使用してコンパイルされるプログラムにおいて,インライン・ルーチンにブレークポイントを設定すると,次のようなエラーメッセージとともに,異常終了することがありました。


DBG> SET BREAK %LINE 37 
%DEBUG-E-INTERR, debugger error 
      in DBGEVENT_SEMANTICS\GET_LINE_BREAK_ADDRESSES 40 
      or session corruption 
%DEBUG-E-CMDFAILED, the SET BREAK command has failed 

この問題は修正済みです。

6.9.17 ネストした Ada パッケージ中のシンボル

V7.3

以前のバージョンのデバッガは,実際のパッケージ名を使用すると,ネストした Ada パッケージの中で宣言されたシンボルを探せなくなりました。次に例を示します。


DBG> EXAMINE AETS_SPECIAL_EVENTS_DETECTION_DATA_.POOL.STUB_COUNTER_PUT 
AETS_SPECIAL_EVENTS_DETECTION_DATA_.POOL.STUB_COUNTER_PUT:      0 
DBG> EXAMINE AETS_SPECIAL_EVENTS_DETECTION_DATA.POOL.STUB_COUNTER_PUT 
%DEBUG-E-NOSYMBOL, symbol 'AETS_SPECIAL_EVENTS_DETECTION_DATA\POOL.STUB_COUNTER_PUT' 
is not in the symbol table 

この問題は修正済みです。次に修正後の例を示します。


DBG> EXAMINE AETS_SPECIAL_EVENTS_DETECTION_DATA_.POOL.STUB_COUNTER_PUT 
AETS_SPECIAL_EVENTS_DETECTION_DATA_.POOL.STUB_COUNTER_PUT:      0 
DBG> EXAMINE AETS_SPECIAL_EVENTS_DETECTION_DATA.POOL.STUB_COUNTER_PUT 
AETS_SPECIAL_EVENTS_DETECTION_DATA_.POOL.STUB_COUNTER_PUT:      0 
 

6.9.18 シンボル・テーブルに関するエラー

V7.3

以前のバージョンのデバッガは,一部のデバッガ・シンボル・テーブル (DST) ファイルが読み取れないことがありました。次に例を示します。


    %DEBUG-E-INTERR, debugger error in DBG$RST_FROM_DST: could not find 
    corresponding RST or session corruption 

この問題は修正済みです。

6.9.19 デバッガが起動時にメモリ不足になる

V7.3

以前のバージョンのデバッガは,一定の大きさ以上のプログラムをロードすると,メモリ不足が発生しました。この問題は修正済みです。

6.9.20 一意でない COBOL シンボル・ルックアップ (VAX のみ)

V7.3

以前のバージョンのデバッガでは,一定の COBOL レコードコンポーネントをルックアップすると,シンボルが一意でないというエラーが発生します。次に例を示します。


DBG> SET MODULE B_COB 
DBG> EXAMINE D00_DIALLING_NO 
%DEBUG-I-NOUNIQ, symbol 'D00_DIALLING_NO' is not unique 
   record component A_COB\COMMON_DATA_FORMAT_WKSP.D00_CDF.CDF_WKSP.D00_DIALLING_NO 
   record component B_COB\COMMON_DATA_FORMAT_WKSP.D00_CDF.CDF_WKSP.D00_DIALLING_NO 
%DEBUG-E-REENTER, reenter the command using a more precise pathname 

この問題は修正済みです。

6.9.21 レジスタ・ビュー

V7.3

以前のバージョンのデバッガでは,レジスタ・ビューに関連する次の問題がありました。

これらの問題の中には,デバッガ内部の問題もあれば,DECwindows Motif の問題もあります。表示に関する問題は,実用に耐える程度に修正済みです。

Radix サブメニューの新しいオプション

Change Radix と Change All Radix の 2 つのサブメニュー (レジスタ・ビューの Register メニューにあるサブメニュー) には,新しいオプションが追加されました。VAX では,レジスタ表示に使用する f_float が, Alpha システムでは,同じくレジスタ表示に使用する g_float と t_float が選択できるようになりました。

6.9.22 ソース・ビューのエラー

V7.3

以前のバージョンのデバッガには,DECwindows Motif インタフェースのソース・ビューに,次のような問題がありました。

これらの問題は修正済みです。

6.9.23 ソース・ビューの更新

V7.3

以前のバージョンでは,呼び出しルーチンが別のソース・モジュールにある場合,サブルーチンからの戻りステップのコマンドで,デバッガのDECwindows Motif インタフェースによるソース・ビューの更新が正しく行われませんでした。この問題は修正済みです。

6.9.24 SHOW SYMBOL IN 句

V7.3

モジュールを動的に設定するデバッガの機能が向上しました。

6.9.25 誤ったスタック・エラー (Alpha のみ)

V7.3

最近のコンパイラを Alpha システムで使用したときに,スタック・エラーが発生することがあります。以前のバージョンのデバッガが,プログラムの実行中にこのようなエラーに遭遇すると,ブレークポイントで実行が中断され, STEP その他の再開のためのコマンドで次のエラーが発生することがあります。


%DEBUG-W-NORESUME, unable to resume execution, stack or PC corrupted. 

この問題は修正済みです。スタック・エラーが生じるコンパイラ使用している場合は,アップグレードする必要があります。

6.9.26 ジャスト・イン・タイム・デバッグ

V7.3

以前のバージョンのデバッガで,ジャスト・イン・タイム・デバッグ (たとえば,DBG$TRACEをSYS$SHARE:DEBUG.EXE に定義) を試みると,失敗することがあります。この問題は修正済みです。

6.9.27 デバッガがクライアント/サーバ・インタフェースの以前のバージョンをサポートしない

V7.3

OpenVMS バージョン 7.3 のデバッガは,以前のバージョンのクライアント/サーバ・インタフェースをサポートしません。次の表に従って,配布メディアのキットにあるクライアント/サーバ・インタフェースをインストールする必要があります。

CPU オペレーティング・システム クライアント・キット
Intel Microsoft Windows 95, 98 [DEBUG_CLIENTS011.KIT]DEBUGX86011.EXE
Intel Microsoft Windows NT, 2000 [DEBUG_CLIENTS011.KIT]DEBUGX86011.EXE
Alpha Microsoft Windows NT [DEBUG_CLIENTS011.KIT]DEBUGALPHA011.EXE

これらのクライアント・キットは,自己解凍型 .EXE ファイルです。

適切な実行可能ファイルをいったん PC に転送した後,そのファイルを実行して, PC にデバッグ・クライアントをインストールします。インストール手順は,InstallShield インストール・プロシージャによって示されます。

デフォルトでは,デバッグ・クライアントが \Program Files\OpenVMS Debuggerフォルダにインストールされます。Browse をクリックして,別のインストール先を選択することもできます。

6.10 デバッグ・モード---CPUSPINWAIT バグチェックの回避

V7.1

OpenVMS オペレーティング・システムには,複雑なハードウェアの問題やソフトウェアの問題をデバッグするのに役立つように,多くの特殊操作モードが準備されています。一般には,これらの特殊モードを使用すれば,特別なレベルでトレース,データの記録,一貫性チェックを行うことができ,このような機能は,問題があるハードウェア構成要素やソフトウェア構成要素を突き止めるのに役立ちます。これらの操作モードは,システム・パラメータ MULTIPROCESSING,POOLCHECK,BUGCHECKFATAL,SYSTEM_CHECK によって制御されます。

一般に I/O 負荷の高い特定の状況で,これらの特殊モードのいずれかを使用している場合は (たとえば,デバイス・ドライバや他の複雑なアプリケーションをデバッグする場合など),CPUSPINWAIT バグチェックが発生することがあります。CPUSPINWAIT バグチェックを防止するには,これらのシステム・パラメータに対して,システムのデフォルト設定を使用するか,またはシステムの負荷を低下させます。

何らかの理由でデフォルトの設定を変更しなければならない場合は, SMP_ LNGSPINWAIT システム・パラメータを 9000000 に設定することで,問題が発生する可能性を減らせます。

6.11 Hypersort (SORT/MERGE/CONVERT)---Alpha のみ

次の項では,High-Performance Sort/Merge ユーティリティ (Hypersort) の使用の制限事項や既知の問題点に関するリリース・ノートをまとめます。これらの制限事項や問題点は,『OpenVMS Utility Routines Manual』の説明の補足です。

Hypersort (HYPERSORT.EXE) をオプションで選択し,SORT,MERGE,CONVERT, Compaq COBOL,および Oracle Rdb で使用することができます。 SORT32 は,SORT32 自体に問題や制限事項がないかぎり Hypersort の問題点や制限事項の回避方法として使用できます。

6.11.1 Hypersort および /FORMAT=RECORD_SIZE - 制限事項

V7.3

Hypersort では,SORT または MERGE で使用する /FORMAT=RECORD_SIZE がサポートされません。

6.11.2 Hypersort と入力アスタリスク (*)---制限事項

V7.3

Hypersort では,入力ファイル指定にアスタリスク (*) を使用できません。

6.11.3 Hypersort と作業ファイルの空きディスク領域---制限事項

V7.3

Hypersort では,ソートまたはマージ操作を完了できる空きディスク領域以外の作業領域仕様をサポートしません。

6.11.4 Hypersort 作業ファイル・ディレクトリ---制限事項

V7.3

Hypersort 作業ファイルは,要求した作業ファイル数を処理できる複数のファイル・バージョンを格納できるディレクトリにリダイレクトする必要があります。この制限は,SORT32 にも適用されます。

6.11.5 Hypersort および VFC ファイル---既知の問題点

V7.3

Hypersort では,VFC 形式ファイルのキーのバイト・オフセットが正しく計算されません。

6.11.6 Hypersort および /STATISTICS ワーキング・セット表示---既知の問題点

V7.3

Hypersort では,/STATISTICS 出力で 1,000,000 ページ以上のワーキング・セットを表示する場合にオーバフローします。この問題は,SORT32 でも発生することがわかっています。

6.11.7 Hypersort および INSVIRMEM---制限事項

V7.3

SORT32 および Hypersort を実行する場合,仮想メモリ不足を防ぐために,ワーキング・セットのサイズとページ・ファイルの割合を正しく維持する必要があります。通常,仮想メモリ不足を防ぐには,ページ・ファイルのサイズは,ワーキング・セットのサイズの 3 倍以上である必要があります。

仮想メモリ不足が検出されると,SORT32 から INSVIRMEM にシグナルが送信され,ソートを完了させようとします。Hypersort では,INSVIRMEM または (おそらく) ACCVIO により終了します。

6.12 レキシカル関数---F$GETSYI レキシカル: NODE_HWTYPE アイテムの廃止

V7.2

NODE_HWTYPE アイテムは廃止されました。代わりに HW_NAME アイテムを使用してください。

NODE_HWTYPE アイテムは削除されていません。したがって,このアイテムを使用するプログラムは今後も動作します。しかし,新しい機能を利用できる場合は,このようなプログラムを移行して,HW_NAME アイテムを使用するようにしてください。

OpenVMS VAX システムでは,NODE_HWTYPE を使用するアプリケーションに対して,すべての VAX システムの場合は 4 文字の秘密のシステム・モデル名が与えられ,すべての Alpha システムの場合は ALPH という文字列が与えられます。一方,HW_NAMEアイテムは OpenVMS VAX システムと OpenVMS Alpha システムの両方で動作し,これまでより長くてわかりやすい名前を返します。たとえば, HW_NAME は "VAXstation II" を返しますが,NODE_HWTYPE は同じシステムに対して "VUV2" を返します。

6.13 Librarian ユーティリティ---PGFLQUOTA は 23000 以上必要 (Alpha のみ)

V1.5

OpenVMS Alpha の LIBRARIAN は圧縮,データ・リダクション,データ拡張操作でエラーを通知しないことがあります。この問題が発生するのは, LIBRARIAN が動作しているアカウントまたはプロセスの PGFLQUOTA プロセス・クォータが低い場合です。$PUTMSG システム・サービスは,エラーが発生した場合でも,必ず SS$_NORMAL というステータスを返すので,操作エラーがただちに明らかになりません。しかし,エラーが発生した場合には, LIBRARIAN は Success 以外のステータスを返します。

この問題を回避するには,PGFLQUOTA プロセス・クォータが 23000 より大きい値に設定されたアカウントで,圧縮,データ・リダクション,データ拡張操作を実行します。さらに,コマンド・プロシージャで LIBRARY コマンドからの戻りステータスを確認するようにしてください。

6.14 Linker ユーティリティ---スタックのエレメント数は最大 25 に制限

V7.2

オブジェクト・ファイルを作成する開発者は,Linker の内部スタックのエレメント数が最大 25 に制限されていることに注意しなければなりません。どのような計算も,この制限の範囲内で実行しなければなりません。

6.15 LTDRIVER---CANCEL SELECTIVE は IO$_TTY_PORT 関数を取り消すことができない

V6.1

OpenVMS バージョン 6.1 より前のリリースでは,LTDRIVER は「拡張 DDT」ビットをセットしていませんでした。したがって,POSIX 関数 CANCEL SELECTIVE は LTDRIVER で動作しませんでした。この問題は解決されましたが,まだ制限事項が残っています。

この修正により,$QIO 読み込みと書き込みを選択的に取り消すことができるようになりましたが,ポート・ドライバに対して行った $QIO (つまり, LAT 接続 $QIO などのように IO$_TTY_PORT 関数修飾子を使用して行ったもの) は, CANCEL SELECTIVE によって取り消すことができません

6.16 MACRO--32 Compiler for OpenVMS Alpha (Alpha のみ)

MACRO-32 コンパイラに関する注意事項については, 第 8 章 を参照してください。

6.17 Mail ユーティリティ---呼び出し可能メールのスレッドの制限事項

V7.1

OpenVMS呼び出し可能メール・ルーチンはスレッド・セーフでは ありません。スレッド化されたアプリケーション内での非スレッド・セーフ・ルーチンの呼び出しの詳細については,『Guide to POSIX Threads Library』を参照してください。

呼び出し可能メールのコンテキスト情報は,プロセス単位(スレッド単位ではない) で管理されるので,コンテキスト・ベースの処理を実行する複数のスレッドは相互に同期をとり,特定のタイプのメール・コンテキストが一度に 1 つ だけアクティブになるようにしなければなりません。この条件が満たされないと,1 つのスレッドが他のスレッドのメール操作を妨害する可能性があります。

OpenVMS Alpha システムでは,マルチスレッド環境でカーネル・スレッドが有効に設定されている場合,この他にも追加制限事項があります。この環境では,呼び出し可能メールは初期スレッドでのみ使用しなければなりません。

6.18 Mathematics (MTH$) 実行時ライブラリ---イメージのリンク

V6.1

OpenVMS VAX のこのバージョンでは,Mathematics 実行時ライブラリ (RTL) イメージ THRTL.EXE,UVMTHRTL.EXE,VMTHRTL.EXE の更新されたバージョンが提供されます。これらのイメージには,DEC Fortran バージョン 6.0 のサポートの新しいエントリ・ポイントが含まれています (UVMTHRTL.EXE は MTHRTL.EXE の代替形式であり,次の段落で MTHRTL.EXE について説明している部分は,UVMTHRTL.EXE にも適用されます)。

MTHRTL.EXE に多くのエントリ・ポイントが追加されたため,そのイメージの転送ベクタが拡張され,グローバル・セクション照合識別子が増分されました。つまり,MTHRTL.EXE の新しいバージョンに対してリンクされたイメージは,システムに DEC Fortran バージョン 6.0 もインストールされていない限り, OpenVMS VAX の以前のバージョンを稼動しているシステムで実行できません。さらに,新しい MTHRTL.EXE に対してリンクされたイメージは,DECmigrate を使用して OpenVMS Alpha で実行できるように変換することができません。

OpenVMS VAX の以前のバージョンで動作するようにイメージをリンクするには,サポートする最も古いバージョンの SYS$LIBRARY ディレクトリから .EXE ファイルと .OLB ファイルの保存されているコピーを格納したディレクトリを作成し,リンクの前に,そのディレクトリを指すように論理名 SYS$LIBRARY を定義します。 OpenVMS VAX は,MTHRTL.EXE または UVMTHRTL.EXE を参照するためにシステム論理名 MTHRTL も定義するので,以前のイメージのディレクトリのコピーを指すように,プロセス・テーブルまたはジョブ・テーブルで論理名として MTHRTL を定義しなければなりません。


$ DEFINE/USER SYS$LIBRARY disk:[OLD_SYSLIB]
$ DEFINE/USER MTHRTL SYS$LIBRARY:MTHRTL.EXE
$ LINK ...

DECmigrate を使用して変換されるイメージは,OpenVMS VAX バージョン 5.5-2 およびそれ以前の SYS$LIBRARY ファイルに対してリンクしなければなりません。

6.19 OpenVMS レジストリ (Alpha のみ)

ここでは,OpenVMS レジストリに関連するリリース・ノートをまとめます。

OpenVMS レジストリのリリース・ノートについては,『OpenVMS コネクティビティ開発者ガイド』を参照してください。このドキュメントは,COM for OpenVMS のインストールの一部としてインストールされ,OpenVMS ドキュメント CD-ROM で提供されます。

6.19.1 レジストリのキー属性変更通知はサポートされない

V7.3

$REGISTRY システム・サービスでは,関数 REG$FC_NOTIFY_CHANGE_KEY_VALUE が提供されます。この関数では,キーに変更が加えられたときに通知を受信するように指定できます。この関数では,アイテム・コード REG$_NOTIFYFILTER を指定して,特定のタイプのキーへの変更を通知またはフィルタ処理することができます。このアイテム・コードは,渡す変更タイプのマスクです。現在,渡されるまたはフィルタ処理される通知の決定に影響するのは,REG$M_CHANGENAME, REG$M_CHANGELASTSET,および REG$M_CHANGESECURITY マスク・ビットだけです。 REG$M_CHANGEATTRIBUTES マスク・ビットは,現在サポートされていません。

通常,REG$M_CHANGENAME,REG$M_CHANGELASTSET,および REG$M_CHANGESECURITY マスク・ビットは,REG$M_CHANGEATTRIBUTES マスク・ビットと同じ機能を果たします。属性変更の場合は,名前の変更,キーの更新,またはセキュリティ記述子の変更も渡されます。

OpenVMS の今後のバージョンでは,属性変更の通知をサポートする予定です。

6.19.2 レジストリ・データ転送サイズの制限の緩和

V7.3

旧バージョンの OpenVMS では,$REGISTRY システム・サービスと OpenVMS レジストリ・サーバの間のデータ転送サイズに制限がありました。同様に,データ転送の制限は,レジストリ・データベースに保存する,またはデータベースから取得する 1 データ・ブロックの最大サイズを制限していました。また,旧バージョンでは,REG$CP 検索コマンドの深さ,およびユーザがメンバになれる Advanced Server ドメイン・グループの数が制限されていました。これらの制限は,OpenVMS V7.3 で緩和されていますが,完全に解消されたわけではありません。

以前の送信では約 8KB (サービスからサーバへ) で,受信では 4KB の制限がありました。現在の制限は,SYSGEN パラメータ MAXBUF の設定によって異なります。 MAXBUF の範囲は,4K 〜 64K です (デフォルト値は 8K)。

MAXBUF は,単一のバッファード入出力パケットの最大サイズです。MAXBUF を変更すると,バッファード入出力を実行するシステムの他の領域に影響します。

今後の OpenVMS では,これらの制限が緩和される予定です。

6.20 POSIX スレッド・ライブラリ

ここでは,POSIX スレッド・ライブラリ (旧名,DECthreads) に関するリリース・ノートをまとめます。

6.20.1 プロセス・ダンプ

V7.3

POSIX スレッド・ライブラリで実行時に修正不能な重大エラー (アプリケーション内のデータ破損によって損傷したデータ構造など) が検出されると,ライブラリにより実行中のイメージが終了されることがあります。終了中に,ライブラリによりプロセス・ダンプ・ファイルの作成がトリガーされます (このファイルは, ANALYZE/PROCESS_DUMP によりエラー診断に使用されます)。このようなプロセス・ダンプ・ファイルのサイズは,エラー時のプロセスのアドレス空間に依存するため,非常に大きくなることがあります。

6.20.2 動的 CPU 構成の変更

V7.3

OpenVMS バージョン 7.3 以降,POSIX スレッド・ライブラリは,マルチプロセッサ Alpha システムを実行する CPU の数の動的変化に対応するようになりました。 1 つのイメージに対して,複数のカーネル・スレッドが使用できるように指定 (LINK/THREADS_ENABLE 修飾子または THREADCP コマンド動詞により) すると, POSIX スレッド・ライブラリが,アプリケーションの明白な並列処理を監視して,利用可能な CPU の数を最大とする数のカーネル・スレッドを作成します。それぞれのカーネルスレッドは,OpenVMS エグゼクティブによってスケジューリングされて別々の CPU で実行されるので,同時に実行することができます。

アプリケーションの実行中,オペレータは CPU を個別に停止または開始することができます。このような動的変化を反映して,これ以降にイメージがアクティブ化されたときに作成できるカーネル・スレッドの数が変化します。また,現在実行中のイメージにも反映されるようになりました。

CPU を追加または除去すると,スレッド・ライブラリは,追加,除去後のアクティブな CPU の数を照会し,プロセスが現在使用しているカーネル・スレッドの数と比較します。現在 CPU がカーネル・スレッドよりも多い場合,ライブラリは既存の POSIX スレッドを CPU まで延長します (必要に応じて,すぐに,または後に新しいカーネル・スレッドを作成します)。逆に CPU がカーネル・スレッドよりも少ない場合,ライブラリは余分のカーネル・スレッドを強制的にハイバネートさせ,残りのカーネル・スレッド上で POSIX スレッドを再度スケジューリングします。これにより,プロセスに関する限り,利用可能な数以上のカーネル・スレッドが, CPU リソースを奪い合うということがなくなります。

6.20.3 スレッド・プログラムの高度デバッグ

V7.3

POSIX スレッド・ライブラリは,監視ツールとデバッグ・ツールをサポートするための,高度なデータ収集機能を備えています。これらの機能は, OpenVMS Alpha システム上のスレッド・プログラムのための新しいデバッグ,分析ツールであるビジュアル・スレッドをサポートします。ビジュアル・スレッドは,OpenVMS バージョン 7.3 でライセンスされており,監視機能,自動デバッグ機能,およびマルチスレッド・アプリケーションのパフォーマンス評価機能を備えています。ビジュアル・スレッドについての情報は,『OpenVMS V7.3 新機能説明書』を参照してください。

6.20.4 POSIX 1003.4a Draft 4 インタフェースの廃止

V7.0

POSIX スレッド・ライブラリの POSIX 1003.4a,Draft 4 ("d4") インタフェースは,将来のリリースで廃止される予定です。POSIX 1003.4a, Draft 4 インタフェースを使用して作成されたアプリケーションは,POSIX スレッド・ライブラリで提供される新しい POSIX 1003.1c 標準 ("pthread") インタフェースに移行しなければなりません。移行に役立つように,このリリースで Draft 4 POSIX 1003.4a インタフェースの互換性モードが提供されます。互換性モードは,将来のリリースでは削除されます。

6.20.5 NUMA システムにおける MULTITHREAD SYSGEN パラメータの設定

V7.3

1 つのイメージに対して,複数のカーネル・スレッドが使用できるように指定 (LINK/THREADS_ENABLE 修飾子または THREADCP コマンド動詞により) すると, POSIX スレッド・ライブラリが,アプリケーションの明白な並列処理を監視して,利用可能なCPUの数を最大とする数のカーネル・スレッドを作成します。それぞれのカーネルスレッドは,OpenVMS エグゼクティブによってスケジューリングされて別々の CPU で実行されるので,同時に実行することができます。1 つのプロセスが作成できるカーネル・スレッドの数は,さらに SYSGEN パラメータである MULTITHREAD の値によって制限されます。

OpenVMS バージョン 7.3 が Non-Uniform Memory Access (NUMA) プラットフォーム (たとえば,GS160) で実行されている場合,スレッド・ライブラリで作成されるカーネル・スレッドは,リソースのホームのリソース・アフィニティ・ドメイン (RAD) にある CPU でのみ実行されます。通常,RAD には 4 つの CPU があります。スレッド・アプリケーションのパフォーマンスを最適化するときには,1 つのプロセスが 5 以上のカーネル・スレッドを作成しないよう,MULTITHREAD パラメータを 4 以下に設定するとよいでしょう。

プロセスが 5 以上のカーネル・スレッドを作成すると,それら全部のカーネル・スレッドが,プロセスのホーム RAD にある (たとえば) 4 つの CPU を奪い合うことになります。よくても,パフォーマンスがほとんどまたはまったく向上せず,実際にはスケジューリングのためのオーバヘッドが余分にかかるので,パフォーマンスの低下すら考えられます。

6.20.6 POSIX スレッド・ライブラリ・デバッガの評価機能

V7.0

POSIX スレッド・ライブラリ・デバッガの評価機能は,このリリースでは動作しません。

6.20.7 C 実行時ライブラリ errno の値

V7.0

errno が OpenVMS デバッガからアクセスされると,グローバル errno (各スレッドの errno ではない) の値が返されます (これは新たに発生した問題ではなく,以前からあった問題ですが,ドキュメントに示されていませんでした)。

6.20.8 SET TASK/ACTIVE コマンド

V6.2

OpenVMS デバッガ・コマンド SET TASK/ACTIVE は,POSIX スレッド・ライブラリに対して動作せず (OpenVMS Alpha システムと VAX システムの両方),POSIX スレッド・ライブラリを使用して実装されている Compaq Ada for OpenVMS Alpha システムに対しても動作しません。

このような場合は,POSIX スレッド・ライブラリに対して次の方法を有効に使用できます。

6.21 特権付きインタフェースと構造体 (Alpha のみ)

ここでは,特権付きコードと構造体に関するリリース・ノートをまとめます。

6.21.1 スレッド単位のセキュリティと下位互換性

V7.2

複数の構造体にこれまで格納されていたセキュリティ情報は,新しい Persona Security Block (PSB) 構造体に移動され,これらの構造の関連フィールドは OpenVMS バージョン 7.2 で廃止されました。影響のある構造としては Access Rights Block (ARB) ,Process Control Block (PCB), Process Header Descriptor (PHD),Job Information Block (JIB), Process Control (CTL) 領域フィールドがあります。

表 6-1 に,廃止されたデータ・セルと,これらのセルの情報の移動先を示します。

プロセス内で 1 つのペルソナが実行される場合は,下位互換性を維持するために,廃止されたデータ・セルが管理されます。プロセスが多重ユーザ・レベル・ペルソナで実行されている間,セルは管理されません (以前のセルをチェックするコードは,セキュリティに関して誤った判断を下す可能性があるため) 。

注意

JIB 内のセキュリティ情報 (JIB$T_ACCOUNT,アカウント・セル) には下位互換性がありません。これは,JIB がジョブ・ツリー内のすべてのプロセス間で共有されるからです。マルチプロセス・ジョブ・ツリー内で JIB ユーザ名セル (JIB$T_USERNAME) を変更すると,そのジョブ・ツリー内のほかのプロセスに悪影響を与えることがあります。

注意

プロセスは,ナチュラル・ペルソナという 1 つのユーザ・モード・セキュリティ・プロファイルを使用して作成されます。廃止されたセルと新しい PSB 構造体の間の下位互換性のレベルを定義する新しい SYSGEN パラメータ ARB_SUPPORT の現在の値を基に,下位互換性が維持されますが,プロセスはこのユーザ・モード・ペルソナ状態のままです (ARB_SUPPORT パラメータの詳細については,『Compaq OpenVMS システム管理ユーティリティ・リファレンス・マニュアル』を参照してください)。

多重ユーザ・モード・ペルソナが存在する場合は,下位互換性はサポートされません。多重ユーザ・モード・ペルソナは,$PERSONA_CREATE システム・サービスを使用して作成されます。

廃止されたデータ・セルの下位互換性は,OpenVMS の将来のリリースでは維持されません。特権付きコードを作成するプログラマは,コード内で廃止されたシンボルを検索し,コードの中で廃止されたセルに依存する部分を削除し,新しい場所から情報を取得するように,必要な変更を行ってください。

表 6-1 廃止されたデータ・セルとセキュリティ情報の新しい場所
廃止されたデータ・セル 新しい場所
ARB$L_CLASS PSB$AR_CLASS (サポートされない 1)
ARB$L_RIGHTSLIST PSB$AR_RIGHTS (ライト・チェーン・ポインタの配列) --- ペルソナ,イメージ,システム・ライト・チェーン
ARB$L_UIC PSB$L_UIC
ARB$Q_PRIV (動作特権とイメージ特権の論理和) PSB$Q_WORKPRIV, PSB$Q_IMAGE_WORKPRIV
CTL$GQ_PROCPRIV PSB$Q_PERMPRIV
CTL$T_ACCOUNT PSB$T_ACCOUNT
CTL$T_USERNAME PSB$T_USERNAME
EXE$GL_RIGHTSLIST EXE$AR_SYSTEM_RIGHTS (ライト・チェーン・ポインタ)
JIB$T_ACCOUNT 2 PSB$T_ACCOUNT
JIB$T_USERNAME 2 PSB$T_USERNAME
PCB$L_NOAUDIT PSB$L_NOAUDIT
PCB$V_SECAUDIT PSB$L_SECAUDIT
PHD$Q_AUTHPRIV PSB$Q_AUTHPRIV
PHD$Q_IMAGPRIV PSB$Q_IMAGE_WORKPRIV
PHD$Q_PRIVMSK PSB$Q_WORKPRIV, PSB$Q_IMAGE_WORKPRIV --- 動作特権とイメージ特権の論理和 (PSB)
PHD$R_MAX_CLASS PSB$AR_CLASS (サポートされない 1)
PHD$R_MIN_CLASS PSB$AR_CLASS (サポートされない 1)


1OpenVMS バージョン 7.2 では,レベル B1 セキュリティ環境で MAC (必須アクセス・チェック) をサポートするための構造は管理されない。
2JIB がジョブ・ツリー内のすべてのプロセスで共有されるので,このセルのセキュリティ情報は下位互換性を維持しない。

6.21.2 バージョン 7.0 での特権付きコードの変更

V7.0

OpenVMS Alpha バージョン 7.0 で動作するように再コンパイルおよび再リンクされた特権付きコード・アプリケーションでは,OpenVMS Alpha バージョン 7.1 およびそれ以降で動作するようにソース・コードを変更したり,再コンパイルや再リンクする必要はありません。

OpenVMS Alpha バージョン 7.0 より前のリリースで作成された特権付きコード・アプリケーションで,OpenVMS Alpha バージョン 7.0 用に再コンパイルおよび再リンクされていないアプリケーションは,OpenVMS Alpha バージョン 7.1 およびそれ以降で動作するように再コンパイルおよび再リンクしなければなりません。

OpenVMS Alpha バージョン 7.0 で,OpenVMS Alpha 特権付きインタフェースと構造体に対して重要な変更が行われました。これらの変更の結果, OpenVMS Alpha バージョン 7.0 より前のリリースで作成された特権付きコード・アプリケーションは,OpenVMS Alpha バージョン 7.0 およびそれ以降で正しく動作するようにソース・コードを変更しなければならない可能性があります。 OpenVMS Alpha バージョン 7.0 で行われた変更のうち,特権付きコード・アプリケーションのソース・コードの変更が必要になる変更点の詳細については,『OpenVMS Alpha Guide to Upgrading Privileged-Code Applications』を参照してください。

デバイス・ドライバの再コンパイルと再リンクの詳細については, 第 7 章 を参照してください。

6.21.3 スレッド単位のセキュリティは特権付きコードとデバイス・ドライバに影響する

V7.2

セキュリティ・プロファイルを I/O Request Packet (IRP) に添付するために使用される方法が変更されました。

OpenVMS の以前のバージョンでは,プロセス単位の Access Rights Block (ARB) セキュリティ構造のアドレスは IRP に直接コピーされていました。 OpenVMS Alpha バージョン 7.2 以降,I/O 要求を出すスレッドの新しいセキュリティ・プロファイル構造 (Persona Security Block,PSB) のアドレスは IRP に移動されました。

I/O サブシステムは参照カウンタを介して,PSB へのアクセスを管理します。 I/O サブシステムは IRP の作成時にこの参照カウンタを増分し,I/O の終了時にカウンタを減分します。カウンタが 0 になると,PSB はシステムから削除されます。

1 つの要求に対して複数の I/O 操作を行うために IRP のコピーを作成し,コピーしたI RP を後処理のために I/O サブシステムに渡すデバイス・ドライバは, PSB への特別なデリファレンスを明らかにするために,コードを変更しなければなりません。このような変更は,IRP コピーの I/O 後処理の前に, NSA_STD$REFERENCE_PSB を呼び出し,コピーされた IRP にある PSB アドレスを渡すことで行います。NSA_STD$REFERENCE_PSB のインクルード・ファイルとルーチン呼び出しは次のとおりです。


#include <security-macros.h> 
 
/* Increment REFCNT of PSB that is now shared by both IRPs  */ 
 
nsa_std$reference_psb( irp->irp$ar_psb ); 

デバイス・ドライバは,次の状況でこの変更を行わなければなりません。

このような状況で NSA_STD$REFERENCE_PSB を呼び出さないと,PSB 内の追跡情報が破壊され,システム・クラッシュが発生する可能性があります。

NSA_STD$REFERENCE_PSB を呼び出すようにデバイス・ドライバのコードを変更する場合は,OpenVMS バージョン 7.3 で動作するように,ドライバを再コンパイルおよび再リンクしなければなりません。

6.22 Record Management Services (RMS)

ここでは,RMS に関するリリース・ノートをまとめます。

6.22.1 照合キーを指定する CONVERT/NOSORT で発生する可能のある CONVERT-I-SEQ エラー

V7.3

/NOSORT 修飾子および出力ファイルのキー・タイプに照合キーを指定する CONVERT コマンドでは,潜在的な動作の変更による影響があります。

変換コマンドの /NOSORT 修飾子は,主キーが入力ファイルですでにソート順に並べられているため,変換ユーティリティでソートしないことを表します。 OpenVMS バージョン 7.3 より前のバージョンの変換ユーティリティでは,出力ファイルに指定されたキーに照合キー・タイプが含まれる場合, /NOSORT が指定されているかどうかに関係なく,入力ファイルが必ずソートされるという欠陥がありました。OpenVMS バージョン 7.3 では,変換ユーティリティが修正され,出力ファイルのキーの 1 つが照合キーである場合でも,コマンド・ラインの /NOSORT 修飾子に正しく従うように修正されています。

そのため,以前に照合キー欠陥の 2 次的な影響で成功していた変換操作でも,入力ファイルが主キーによってソートされていない場合で,コマンド・ラインに /NOSORT が指定されているときには,%CONVERT-I-SEQ メッセージが表示されることがあります。入力ファイルが主キーによってソートされていない場合は,/NOSORT 修飾子は,使用しないでください。

6.22.2 循環ディレクトリ・パスの検出 (Alpha のみ)

V7.2

SET FILE/ENTER コマンドでサブディレクトリ・ツリーの下位ディレクトリに上位ディレクトリのディレクトリ名を入力すると,循環ディレクトリ・パスが発生します。バージョン 7.2 より以前には,このようなディレクトリ・ツリーは反復処理で RMS にとって循環パスとして表示されていました (たとえば, [A...] などの指定を処理するとき)。これは,SET FILE/ENTER コマンドから返されたディレクトリのディレクトリ ID (DID) がパスの上位ですでに検出されていることをRMS が検出しないからです。

以前のリリースでは,ディレクトリ・レベルを 8 レベルに制限することで, RMS がループしないようにしていましたが,DID の無限循環が発生する可能性がありました。OpenVMS バージョン 7.2 で深いディレクトリ構造が導入された結果, 8 レベルというディレクトリの制限は回避されました。このリリースでは,パス内のノードが循環を開始するときに,RMS がそのことを検出するように機能が強化されています。RMS はループする代わりに,パスの現在の分岐内の再開要素であるかのように,このようなノードを取り扱うようになりました。

6.22.3 ディレクトリ・キャッシュの上限の解除

V7.2

ほとんどのワイルドカード検索では,RMS はファイル・システムへの呼び出しを最適化するために,ターゲット・ディレクトリ・ファイルをメモリ・キャッシュに格納します。このリリースより以前には,RMS がキャッシュに格納するディレクトリ・ファイルの最大サイズは 127 ブロックでした。これより大きなディレクトリに対するワイルドカード・ルックアップはファイル・システムに直接アクセスしていました。

バージョン 7.2 以降,RMS はどのサイズのディレクトリもキャッシュに格納しようとします。ファイルをキャッシュに格納するために,メモリや他のリソースを使用できない場合は,ワイルドカード・ルックアップはファイル・システムに対して行われます。

6.23 実行時ライブラリ (LIB$) --コンパイル・エラーのあるモジュールに対する LIB$FIND_IMAGE_SYMBOL による警告

V7.1

LIB$FIND_IMAGE_SYMBOL は,起動されているイメージにコンパイル警告が発生するモジュールが含まれていることを示すために,警告 (LIB$_ EOMWARN) を通知することがあります。LIB$FIND_IMAGE_SYMBOL で使用される条件ハンドラは,この状況を特殊な場合として取り扱わなければなりません。

LIB$_EOMWARN が通知された後,LIB$FIND_IMAGE_SYMBOL が実行を続行するには,条件ハンドラが SS$_CONTINUE で終了しなければなりません。この理由から, LIB$FIND_IMAGE_SYMBOL の条件ハンドラとして LIB$SIG_TO_RET を使用することは適切ではありません。

6.24 Screen Management (SMG$) 機能のドキュメント

『OpenVMS RTL Screen Management (SMG$) Manual』の最後にある参照情報のトピックに,次の情報を追加してください。

V7.2

V7.1

6.25 ソフト・アフィニティ---無効化されたソフト・アフィニティ (Alpha のみ)

V7.3

OpenVMS バージョン 7.2 では,SMP システム --- AlphaServer 4100 シリーズおよび AlphaServer 2100 シリーズ --- について,ソフト・アフィニティが有効になっていました。しかしながら,予測できないハードウェアの動作のため, SMP システムのソフト・アフィニティが現在,無効化されています。 $SET_IMPLICIT_AFFINITY システム・サービスは,SS$_UNSUPPORTED エラー・ステータスを返します。SET PROCESS/AFFINITY=SOFT という DCL コマンドを実行すると,%SYSTEM-E-UNSUPPORTED エラー・メッセージが表示されます。

6.26 SORT32 (SORT/MERGE/CONVERT)

ここでは,SORT32 の使用に関するリリース・ノートをまとめます。 SORT32 (SORTSHR.EXE) は,SORT,MERGE,CONVERT,Compaq COBOL,および Oracle Rdb で使用します。

6.26.1 /WORK_FILES=2 以上の SORT32---制限事項

V7.3

SORT 作業ファイルが再定義され,所有者 UIC とプロセス UIC が一致しない共通ディレクトリが指定されている場合,SORT32 では,/WORK_FILES=2 以上がサポートされません。/WORK_FILES=2 は,SORT,MERGE,CONVERT,Compaq COBOL,および Oracle Rdb から SORT32 を使用するためのデフォルトです。

回避方法は,次のとおりです。

6.26.2 SORT32 作業ファイル・ディレクトリ---制限事項

V7.3

SORT32 作業ファイルは,要求した作業ファイル数を処理できる複数のファイル・バージョンを格納できるディレクトリにリダイレクトする必要があります。この制限は,Hypersort にも適用されます。

6.26.3 SORT32 および VFC 形式のファイル - 制限事項

V7.3

VFC 形式の入力ファイルに /PROCESS=TAG を使用した場合,SORT32 では, VFC 形式の出力ファイルに対して固定制御領域が 0 に初期化されます。この問題は,/PROCESS_RECORD を使用して解決します。

6.26.4 SORT32 および /STATISTICS ワーキング・セット表示

V7.3

SORT32 では, /STATISTICS 出力で 1,000,000 ページ以上のワーキング・セットを表示する場合にオーバフローします。この問題は,Hypersort でも発生することがわかっています。

6.27 システム・サービス

ここでは,システム・サービスに関するリリース・ノートをまとめます。

すべてのシステム・サービスは『OpenVMS System Services Reference Manual』に説明されています。

6.27.1 Performance API - $GETRMI

V7.3

$GETRMI システム・サービスでは,現在ドキュメントに記述されているところの CMKRNL 特権が必要ありません。

6.27.2 $PERSONA システム・サービス:無視されるフラグ (Alpha のみ)

V7.2

OpenVMS の以前のバージョンでは,$PERSONA_ASSUME システム・サービスと $PERSONA_CREATE システム・サービスが提供されていました。これらのサービスには,ペルソナが仮定または作成されるときに,どのペルソナ・サービス・オプションが採用されたかを指定するフラグ引数が含まれていました。

OpenVMS バージョン 7.2 では,これらのフラグは無視されます。

OpenVMS のこのバージョンでフラグが無視されるのは,スレッド単位のセキュリティの導入により,偽装の処理が,プロセス単位のセキュリティ構造を変更することから,プロセス内の個別のセキュリティ・プロファイルを変更することに変わったからです。この結果,ジョブ単位のセキュリティ構造に影響を与えずに,プロファイル内のすべてのセキュリティ情報を変更できるようになりました。これにより,セキュリティ構造を選択的に変更することを指定するために,ペルソナ・フラグを使用する必要がなくなりました。

表 6-2表 6-3 に,OpenVMS バージョン 7.2 で無視されるフラグ引数の値を示します。

表 6-2 無視される$PERSONA_ASSUME フラグ
フラグ 説明
IMP$M_ASSUME_SECURITY アクセス・ライト,UIC,登録されている特権,ユーザ名,セキュリティ監査フラグを仮定する。
IMP$M_ASSUME_ACCOUNT OpenVMS アカウントを仮定する。
IMP$M_ASSUME_JOB_WIDE マルチプロセス・ジョブでも新しいペルソナを仮定する。

表 6-3 無視される$PERSONA_CREATE フラグ
フラグ 説明
IMP$M_ASSUME_DEFCLASS デフォルト分類によってペルソナを作成する。

$PERSONA システム・サービスの詳細については,『OpenVMS System Services Reference Manual: GETUTC--Z』を参照してください。

6.27.3 $PERSONA システム・サービス:デフォルト特権の変更 (Alpha のみ)

V7.2

ペルソナ特権を割り当てるときのデフォルト動作は,OpenVMS Alpha バージョン 7.2 で変更されました。このリリースより以前には,ペルソナは,指定されたユーザの UAF レコードに登録されている特権をデフォルト特権として使用して作成されていました。ユーザのデフォルト特権は,$PERSONA_CREATE の呼び出しに IMP$V_ASSUME_DEFPRIV フラグがセットされている場合にだけ使用されていました。

このデフォルト動作は,OpenVMS セキュリティ・ポリシーと矛盾しているために, OpenVMS Alpha バージョン 7.2 で変更されました。新しいデフォルト動作では,ユーザのUAFレコードに指定されている特権を使用して,ペルソナが作成されます。

既存のプログラムを OpenVMS Alpha バージョン 7.2 で正しく実行するには,指定されたデフォルト特権が登録されている特権と等しくなるように,ユーザの UAF レコードを変更しなければならない可能性があります。

2 つの新しいフラグが $PERSONA_CREATE システム・サービスに追加されました。 ISS$V_CREATE_DEFPRIV は,以前のリリースの IMP$V_ASSUME_DEFPRIV フラグに相当し,下位互換性を維持するためにだけ提供されます。 ISS$V_ CREATE_AUTHPRIV は,呼び出し側が OpenVMS の以前のバージョンのデフォルト動作を実装できるように提供されます。つまり,ユーザの登録されている特権をデフォルト特権として使用するために提供されます。

OpenVMS VAX バージョン 7.2 では,$PERSONA_CREATE の動作は変更されていません。

6.27.4 $PERSONA システム・サービス: 監査レコードの変更 (Alpha のみ)

V7.2

ペルソナ作成のための監査レコードは,Server Login タイプから Persona Created タイプに変更されました。ペルソナは $PERSONA_CREATE システム・サービスを呼び出すことで作成されます。

6.27.5 以前のバージョンで実行するための SECURESHR イメージのリンク

V7.0

共有可能イメージ・ディスパッチ・ベクタにエントリ・ポイントが追加されました。この変更により,SECURESHR のバージョン 7.0 以上に対してリンクされているアプリケーションは,バージョン 7.0 より以前のシステムで動作しません。SECURESHR を使用するシステム・サービスは次のとおりです。

$FORMAT_ACL
$PARSE_ACL
$FORMAT_AUDIT
$DELETE_INTRUSION
$SCAN_INTRUSION
$SHOW_INTRUSION
$ADD_PROXY
$DELETE_PROXY
$DISPLAY_PROXY
$VERIFY_PROXY

プログラムでこれらのシステム・サービスを使用しており,バージョン 7.0 より以前のシステムで動作するバージョンを作成する必要がある場合は,バージョン 7.0 より以前のバージョンの OpenVMS を稼動しているシステムでプログラムをリンクしなければなりません。

6.27.6 $SUSPND はクラスタ環境で正しく動作しない

VAX V6.0
Alpha V1.5

$SUSPND システム・サービスを呼び出したときに,ターゲット・プロセスが $SUSPND サービスを呼び出しているプロセス以外のクラスタ・ノードで実行されている場合,カーネル・モードの一時停止フラグ (ビット 0) は無視されます。この結果,一時停止はスーパーバイザ・モードの一時停止として取り扱われます。

6.27.7 $PERSONA の制限事項の解除 (Alpha のみ)

V7.2

OpenVMS の以前のバージョンでは,$PERSONA システム・サービス ($PERSONA_ASSUME,$PERSONA_CREATE,$PERSONA_DELETE) の使用に関して制限がありました。OpenVMS バージョン 7.2 では,これらの制限事項はなくなりました。

スレッド単位のセキュリティの詳細については,『OpenVMS Guide to System Security』を参照してください。$PERSONA システム・サービスの詳細については,『OpenVMS System Services Reference Manual』を参照してください。


前へ 次へ 目次 索引