日本-日本語

製品  >  ソフトウェア  >  OpenVMS  >  マニュアル

OpenVMS マニュアル


≫ 

OpenVMS V8.3
ライブラリ

タイトルページ
目次
まえがき
第 1 章:V8.3の新機能
第 2 章:一般ユーザ機能
第 3 章:システム管理機能
第 4 章:光メディアのマスタリング
第 5 章:プログラミング機能
第 6 章:InfoServerユーティリティ
第 7 章:関連製品の機能
第 8 章:新規および改訂されたドキュメント
第 9 章:英語版ドキュメント一覧
第 10 章:各英語版ドキュメントの内容
索引
PDF
OpenVMS ホーム

HP OpenVMS
V8.3 新機能説明書


目次 索引

第 5 章
プログラミング機能

この章では,HP OpenVMS の本バージョンにおける,アプリケーション・プログラマおよびシステム・プログラマに関係がある新機能について説明します。

5.1 C 実行時ライブラリの機能拡張

以降の項では,OpenVMS Version 8.3 での C 実行時ライブラリ (RTL: Run-Time Library) の機能拡張について説明します。拡張された機能としては,UNIX とのポータビリティの向上,標準への準拠,より柔軟なユーザ制御の機能選択があります。新しい C RTL 関数も追加されています。詳細は,『C ランタイム・ライブラリ・リファレンス・マニュアル』を参照してください。

5.1.1 シンボリック・リンクと POSIX 準拠のパス名のサポート

OpenVMS Version 8.3 以降では,Open Group 準拠のシンボリック・リンクのサポートと,POSIX 準拠のパス名のサポートが含まれています。その目的は,UNIX や Linux のアプリケーションを OpenVMS に移植したり,UNIX スタイルの開発環境を使用しているパートナや顧客を支援し,移植作業に関連するアプリケーションの開発コストと複雑さを削減することです。

このサポートがあっても,OpenVMS システム上での UNIX のファイルの 100% の互換性は保証されません。 UNIX や Linux のアプリケーションを OpenVMS に移植するためには,変更を行わなければならない場合もありえます。

シンボリック・リンクと POSIX のパス名の処理をサポートするために,以下の機能が OpenVMS で提供されています。

  • 以下の Open Group 準拠のシンボリック・リンク関数が C の実行時ライブラリに追加されています。


    symlink 
    readlink 
    unlink 
    realpath 
    lchown 
    lstat 
    

  • creatopendelete,および removeなどの既存の C RTL 関数は,Open Group のシンボリック・リンクの仕様に準拠した振る舞いをするようになりました。

  • RMS では,C RTL で上記の関数の実装に対応します。 SYS$OPEN,SYS$CREATE,SYS$PARSE,および SYS$SEARCH などの RMS ルーチンは,シンボリック・リンクをサポートするようになりました。

  • OpenVMS でパスの解釈や検索の際にシンボリック・リンクが見つかると,その内容は POSIX パス名として解釈されます。 POSIX パス名が OpenVMS でサポートされるようになり,C RTL と RMS インタフェースで使用可能になりました。

  • 新しい機能論理名 DECC$POSIX_COMPLIANT_PATHNAMES が C RTL に追加されました。これは,アプリケーションが POSIX 準拠モードで動作することを示します。

  • DCL コマンド CREATE/SYMLINK は,シンボリック・リンクを作成するために使用します。

  • DCL コマンド SET ROOT は,システムの POSIX ルートを作成するために提供されています。

  • 2 つの GNV ユーティリティ mntおよび umntが,マウント・ポイントを設定するために提供されています。

  • 各種の DCL コマンドとユーティリティが,シンボリック・リンクを適切に処理するように変更されました。

  • TCP/IP Services for OpenVMS Network File System (NFS) のクライアントとサーバが,ODS5 ボリューム上のシンボリック・リンクをサポートするように拡張されています。

  • ln(シンボリック・リンクを作成) や ls(シンボリック・リンクの内容を表示) などの関連する GNV ユーティリティが,シンボリック・リンクにアクセスしそれを管理できるように更新されています。

シンボリック・リンクおよび POSIX パス名処理についての詳細は,『C ランタイム・ライブラリ・リファレンス・マニュアル』の第 12 章を参照してください。

5.1.2 バイト単位のロック

C RTL は, fcntl関数のコマンド F_GETLK, F_SETLK,および F_SETLKW を使用したバイト単位のファイル・ロックをサポートしています。この機能は,X/Open の仕様で定義されています。この機能を実装するために OpenVMS のロック・マネージャが使用されます。バイト単位のロックは,クラスタにまたがって使用することができます。ロックするオフセットには, 32 ビットの符号無し整数に収まる値を使用できます。詳細は,『C ランタイム・ライブラリ・リファレンス・マニュアル』の fcntl関数を参照してください。

5.1.3 新しい C RTL 関数

第 5.1.1 項 に示したシンボリック・リンク関数の他に, X/Open 仕様に基づく以下の新しい関数が C RTL に追加されています。


crypt    
setkey   
encrypt 
fchmod 



5.1.4 C RTL の TCP/IP ヘッダ・ファイルの更新

CRTL では,ユーザが TCP/IP を呼び出すためのヘッダ・ファイルが提供されています。これらのヘッダには多数の問題があり,単純な TCP/IP プログラミング以外では使用できません。

以前は,いくつかのリリースの TCP/IP で,修正されたヘッダがプログラミング・サンプルの領域に提供されていました。 C RTL に対するこの機能拡張により,これらの修正済みヘッダは C RTL ヘッダ・ライブラリ (DECC$RTLDEF.TLB) に格納されました。詳細は,『OpenVMS V8.3 リリース・ノート』の C RTL の項を参照してください。

5.2 CDSA for OpenVMS および Secure Delivery

CDSA Version 2.2 for OpenVMS は,オープン・ソース・プロジェクトの CDSA を基にしています。また,OpenVMS 上での CDSA の実装は,Intel V2.0 Release 3 リファレンス・プラットフォームを基にしています。 CDSA Version 2.2 for OpenVMS の新機能には,Secure Delivery と HRS (Human Recognition Service Standard) のサポートがあります。ここではこれらの機能について説明します。

  • HRS (Human Recognition Service Standard) のサポート
    CDSA Version 2.2 for OpenVMS には,CDSA とともに動作する, HRS (Human Recognition Service) のサポートが含まれています。 HRS は,CSSM (Common Security Services Manager) の EMM (Elective Module Manager) です。これによって汎用の認証サービスが提供され, CDSA で動作する何らかの形の生体認証 (バイオメトリクス) とともに使用するのに適しています。
    HRS は,アプリケーション開発者とバイオメトリクス技術開発者の両方が使用することを目的としています。登録,確認,識別の基本機能を網羅しており,バイオメトリクス・サービス・プロバイダ (BSP) が本人識別情報を最適な性能で管理できるようにするためのデータベース・インタフェースが含まれています。

  • Secure Delivery
    Secure Delivery では,公開鍵とディジタル署名技術を使用して, OpenVMS のユーザが, OpenVMS および他の OpenVMS ベンダから提供されたファイルの認証と検証を行うことが可能となります。
    Secure Delivery では,ファイルに対するディジタル署名を作成できるため,ファイルとそれに関連するマニフェストをインターネットや CD/DVD 媒体などの保護されていないチャネル経由で配布することができます。ファイルが宛先のシステムに届いたら,マニフェストを使用して作成元を認証し,ターゲット・ファイルの内容を検証します。ターゲット・ファイルまたはマニフェストが何らかの形で改ざんされていた場合は,検証処理が失敗します。ファイルに署名するために使用された証明書が取り消されている場合は,検証処理に失敗します。
    Secure Delivery は PCSI に組み込まれており,OpenVMS にインストールするソフトウェアが改ざんされていないことをインストール前に自動的に確認します。 PCSI はインストールしようとしているすべてのキットでマニフェストがあるかどうかを確認します。マニフェストが見つからないと PCSI は警告を発し,処理を続行するかどうかを尋ねます。マニフェストが見つかったもののキットと一致しない場合は,インストールが中止されます。 PCSI データベースには,インストール時にキットが Secure Delivery を使用したかどうかについての情報が格納されます。
    OpenVMS Version 8.3 の配布媒体に含まれているほとんどのキットは, Secure Delivery を使用して署名されています。 OpenVMS I64 では,OpenVMS のアップグレードの 最中またはその後 にインストールされる,マニフェストを持つレイヤード・プロダクト・キットが検証されます。 OpenVMS Alpha では,OpenVMSのアップグレード 後にインストールされる,マニフェストを持つレイヤード・プロダクト・キットが検証されます。
    OpenVMS Version 8.3 で Secure Delivery が有効になる前に作成されたキットも,OpenVMS Version 8.3 上にインストールすることができますが,これらのキットは,PCSI 履歴ファイル中で検証済みのキットとしてではなく,署名なしとしてマークされます。 Version 8.3 より前にインストールされた製品については,PCSI 履歴ファイル内の検証ステータスが空白になります。

詳細は,『Open Source Security for OpenVMS Alpha, Volume 1: Common Data Security Architecture』を参照してください。

CDSA の詳細は,次の場所にある Common Data Security Architecture の Web サイトを参照してください。

http://sourceforge.net/projects/cdsa/



OpenVMS V8.3 では,1 秒未満のデッドロック待ち時間をプロセスがロック・マネージャに対して宣言できるようになりました。それには,システム・サービス $SET_PROCESS_PROPERTIES と,新しい項目コード PPROP$C_DEADLOCK_WAIT を使用します。この 1 秒未満のデッドロック待ち時間は,システム・パラメータ DEADLOCK_WAIT の時間より優先されます。さらに,システム・サービス $GETJPI とレキシカル関数 F$GETJPI では,項目コード JPI$_DEADLOCK_WAIT および DEADLOCK_WAIT を使用することで,この時間を読み出すことができます。使用方法の詳細については,『OpenVMS System Services Reference Manual』および『OpenVMS DCL ディクショナリ』を参照してください。

システム・パラメータ DEADLOCK_WAIT は秒単位であるため,設定できる最小の値は 1 秒です。システム・サービス $SET_PROCESS_PROPERTIES で設定した 1 秒未満のデッドロック待ち時間は,現在のイメージに対してだけ有効で,イメージが終了するとクリアされます。渡されるパラメータは 100n 秒単位の値で,1 秒を超えることはできません。値が小さすぎる場合は,最小値の 10m 秒に設定されます。パラメータ値ゼロでこのシステム・サービスを呼び出すと,以前設定した 1 秒未満の待ち時間をクリアすることができます。次の例を参照してください。


[...] 
#define TEN_MSEC 100000 
 
uint64 dead_wait; 
uint64 prev_value; 
 
 // 
 // Set a 0.5 second deadlock wait time for the current process 
 // 
 dead_wait = 50 * TEN_MSEC; 
 status = sys$set_process_properties ( 0, 0, 0, PPROP$C_DEADLOCK_WAIT, dead_wait, &prev_value ); 
[...] 



5.4 デバッガの新機能

ここでは,OpenVMS Version 8.3 での OpenVMS Debugger の新機能について説明します。

5.4.1 C++ の演算子名のサポートの強化

Alpha システムと Integrity サーバ・システムで,C++ の演算子名のサポートが強化されました。特に,ユーザ定義の演算子名がサポートされるようになりました。この変更の前までは,演算子名を %NAME で囲む必要がありました。

以下に例を示します。


DBG> SHOW SYMBOL /FULL operator == 
routine C::operator== 
    type signature: bool operator==(C) 
    code address: 198716, size: 40 bytes 
    procedure descriptor address: 65752 
DBG> SET BREAK operator== 



5.4.2 SET MODULE コマンドが省略可能になった

Alpha システムと I64 システムで,OpenVMS Debugger が自動的にモジュール情報を設定できるようになり,明示的な SET MODULE コマンドは省略可能となりました。この機能が実現されたのには 2 つの理由があります。

  • デバッガはグローバル・シンボル名を認識するため,シンボルから,それが宣言されているモジュールを決定することができます。

  • デバッガは,デバッガ・コマンドでモジュール名を指定すると,モジュール情報を自動的にロードします。たとえば,次のように入力したとします。


    DBG> SET BREAK X\Y 
    


    デバッガは,モジュール X のモジュール情報がロードされていることを確認し,Y という名前のルーチンの情報を探します。以前のデバッガでは,モジュール X 内の情報がロードされていないことを示すメッセージが表示されましたが,本バージョンではこの情報が自動的にロードされるようになりました。



5.4.3 SHOW STACK コマンドの新しい修飾子

Alpha システムと Integrity サーバ・システムでは,SHOW STACK コマンドで /START_LEVEL=n 修飾子が指定できるようになりました。この修飾子は,SHOW STACK に対して,呼び出しフレーム・レベル n のスタック情報から表示を開始するように指示します。

たとえば,フレーム 3 のスタック情報だけを表示するには,次のコマンドを入力します。


DBG> SHOW STACK/START=3 1 

4 番目と 5 番目のスタック・フレームの詳細を表示するには,次のコマンドを入力します。


DBG> SHOW STACK/START=4 2 



5.4.4 型のないストレージ位置に対する省略時のデータ型の変更

Alpha システムと Integrity サーバ・システムで,型のないストレージ位置に対する省略時のデータ型がロングワード (32ビット) からクォドワード (64 ビット) に変更されました。データ型情報があるストレージ位置については,これまでどおり,関連する型に応じて表示されます。

5.4.5 SHOW SYMBOL コマンドでのオーバロード・シンボル・サポートの改善

Alpha システムと Integrity サーバ・システムでは,SHOW SYMBOL コマンドが機能拡張されて,オーバロード・シンボル名を認識するようになりました。これまでは,各種のオーバロード名が表示されるだけでした。この機能拡張によって,名前とその名前に関連付けられた情報が表示されるようになりました。以下に例を示します。


DBG> show symbol/full g 
overloaded name C::g 
    routine C::g(char) 
        type signature: void g(char) 
        address: 132224, size: 128 bytes 
    routine C::g(long) 
        type signature: void g(long) 
        address: 132480, size: 96 bytes 



5.4.6 GNAT Pro (Ada 95) コンパイラが Integrity サーバ・システムでも利用可能 (I64 のみ)

GNAT Pro (Ada 95) コンパイラが Integrity サーバ向けの OpenVMS 上でサポートされました。この製品については,直接 AdaCore 社にお問い合わせください。

弊社では HP Ada (Ada 83) コンパイラを OpenVMS Alpha から Integrity サーバ向けの OpenVMS に移植する予定はありません。

5.4.7 P2 空間にロードされたプログラムのデバッグをサポート

OpenVMS Version 8.3 Debugger では,P2 空間にロードされたプログラムのデバッグが可能となりました。

5.4.8 SET WATCH コマンドの改良

メモリ内の領域に対するウォッチポイント (静的ウォッチポイントと呼びます) では,非同期システム・サービスによる書き込みが検出されないことがあり,時には非同期システム・サービスによる書き込みが失敗することもあります。たとえば,SYS$QIO による出力パラメータ IOSB への非同期書き込みは,その IOSB が直接ウォッチされている場合,あるいは,アクティブな静的ウォッチポイントと同じページ上にあるだけの場合も失敗することがあります。

本バージョンでは,デバッガがこの状態を検出するようになりました。問題が発生する可能性がある場合,デバッガは静的ウォッチポイントと非同期システム・サービスの衝突についてユーザに警告します。以下に例を示します。


DBG> g 
%DEBUG-I-ASYNCSSWAT, possible asynchronous system service and static watchpoint collision 
break at LARGE_UNION\main\%LINE 24192+60 
DBG> sho call 
 module name    routine name     line           rel PC           abs PC 
*LARGE_UNION    main            24192       00000000000003A0 00000000000303A0 
*LARGE_UNION    __main          24155       0000000000000110 0000000000030110 
                                            FFFFFFFF80B90630 FFFFFFFF80B90630 
DBG> ex/sour %line 24192 
module LARGE_UNION 
 24192:             sstatus = sys$getsyi (EFN$C_ENF, &sysid, 0, &syi_ile, &myiosb, 0, 0); 

この条件が検出された場合にどのようにすればよいかを確認するには,デバッガで HELP MESSAGE ASYNCSSWAT と入力してください。

5.4.9 整数レジスタでの NaT (Not a Thing) のサポート

従来は,整数レジスタの NaT ビットが設定されたときに,デバッガはユーザに通知しませんでした。ユーザは,%GRNAT0 レジスタのビットを調べ,この情報を確認する必要がありました。以下の例では,整数レジスタ R9 および R10 の NaT ビットがオンになっています。


DBG> ex %r9:%r12 
TEST\%R9:       0000000000000000 
TEST\%R10:      0000000000000000 
TEST\%R11:      0000000000000000 
TEST\%SP:       000000007AC8FB70 
DBG> ex/bin grnat0 <9,4,0> 
TEST\%GRNAT0+1: 0110 
DBG> 

整数レジスタの NaT ビットがオンになっていると,デバッガが文字列 "NaT" を表示するようになりました。以下に例を示します。


DBG> ex %r9:%r12 
TEST\%R9:       0000000000000000 
TEST\%R10:      NaT 
TEST\%R11:      NaT 
TEST\%SP:       000000007AC8FB70 
DBG> ex/bin grnat0 <9,4,0> 
TEST\%GRNAT0+1: 0110 
DBG> 

型のオーバーライドを指定することで,NaT ビットがオンのレジスタの実際の生の値を表示することができます。以下に例を示します。


DBG> ex %r10 
TEST\%R10:      NaT 
DBG> ex/quad %r10 
TEST\%R10:      0000000000000000 
DBG> 


目次 索引

印刷用画面へ
プライバシー 本サイト利用時の合意事項