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


OpenVMS マニュアル


 

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

タイトルページ
目次
まえがき
第1章:はじめに
第2章:基本的な相違点
第3章:アプリケーションの調査
第4章:ソース・モジュールの移行
第5章:OpenVMS I64 開発環境
第6章:ポーティングの準備
第7章:その他の検討事項
付録A :アプリケーション評価チェックリスト
付録B :サポート対象外のレイヤード・プロダクト
付録C :アプリケーション固有のスタック切り換えコードの I64 へのポーティング
用語集
索引
PDF
OpenVMS ホーム

HP OpenVMS
OpenVMS Alpha から OpenVMS I64 へのアプリケーション・ポーティング・ガイド


目次 索引

第 3 章
ポーティングが必要なアプリケーションの調査

通常,新しいプラットフォームへのアプリケーションのポーティングでは,次の手順を実施することになります。

  1. ポーティングの必要性の調査

  2. アーキテクチャに依存するコード,および標準に準拠していないコードを必要に応じて書き直す作業

  3. アプリケーションのコンパイル,リンク,および実行

  4. ポーティング前後のテストの実施

  5. プログラムの再コンパイルと,必要に応じて手順1〜4の繰り返し

  6. 変更したアプリケーションの出荷

  7. プロセスまたはプロシージャの運用とインストール

  8. アプリケーションのサポートと保守

上記作業は順番に行いますが,問題が発生した場合は,一部のステップを繰り返さなければならないこともあります。

この章では,最初の作業,つまりポーティングの必要性の調査について説明します。残りの作業については,次の章以降でそれぞれ説明します。この章では,アプリケーションのポーティング計画を作成する際に開発者が考慮しなければならない項目および開発者の責任について説明します。特に,OpenVMS Alpha 環境から OpenVMS I64 環境へのポーティングを想定して説明します。また,開発者がポーティングの必要性を評価し,プランを作成し,ソフトウェアのポーティングを開始するのに必要な情報を提供します。

付録 A には,計画プロセスとポーティング・プロセスで使用するチェックリストがあります。

3.1 概要

OpenVMS Alpha で現在動作しているほとんどのアプリケーションは,ほとんど変更せずに OpenVMS I64 に簡単に移植できます。 OpenVMS の Alpha バージョンと I64 バージョンは, 1 つのソース・コードから開発されているため,開発者はそれぞれのバージョンでソース・コードを個別に変更しなくても,ハードウェアに依存しない機能を両方のバージョンに盛り込むことができます。その結果,確認テストに必要な時間を大幅に短縮でき,両方の OpenVMS プラットフォームで重要なアプリケーションを確実に提供することができます。

HP は,OpenVMS Alpha の推奨バージョンで現在「正常に動作」しているアプリケーションが OpenVMS I64 システムでも正常に動作するように,ソース・コードの上位互換性を保証し,維持していくための厳密なポリシを設定して管理しています。 公開されているシステム・サービスやライブラリ・インタフェースを使用しているアプリケーションであれば,ほとんどのケースで,ソース・コードをまったく変更せずに最新バージョンの OpenVMS I64 に移行できます。 しかし,OpenVMS Alpha で提供されている公開済みのシステム・サービスやライブラリ・インタフェースの中には, OpenVMS I64 で使用できなかったり,異なる動作をするものがあります。さらに,リンカ・ユーティリティは,OpenVMS Alpha でサポートされているすべての修飾子をサポートするわけではありません。これらの例外の詳細については, 第 4 章第 5 章 を参照してください。

OpenVMS I64 は,従来の OpenVMS システムとほとんど同じ見た目と使い勝手で使用できます。新しいアーキテクチャに対応するために,わずかな変更は必要でしたが,OpenVMS の基本構造および機能は変更されていません。

3.2 アプリケーションの評価

ポーティング作業の第 1 ステップでは,アプリケーションを OpenVMS I64 へ移植するために必要となる手順について,評価および確認を行います。評価作業の段階で以下の質問に回答することにより,ポーティング計画を作成することができます。

  • どのような方法でアプリケーションのポーティングを行うか?

  • ポーティングに必要な時間,作業量,コストはどの程度か?

  • HP のサービス部門から提供されるサポートが必要か?

評価プロセスは次の 4 つの手順に分かれます。

  1. ポーティングが必要なアプリケーションの洗い出し

  2. 他のソフトウェアへの依存関係の洗い出し

  3. ポーティング方法の選択

  4. 運用タスクの分析

これらのステップを完了すると,効果的なポーティング計画を作成するのに必要な情報が得られます。最初の基本的な評価を行うための各ステップについては, 3.2.13.2.4 項で説明します。その後,各モジュール,イメージ,およびすべての依存関係の詳細な評価を行うことができます。

この後の各項で説明する評価ステップを完了した後,その結果を,ターゲット・プラットフォームでサポートされている製品,プロシージャ,および機能と比較してください。スケジュール上の問題点,サポートされない機能,矛盾する手順,サポートの問題などがないか確認します。ポーティング計画を完成させるには,すべてのコストと時間の影響も盛り込む必要があります。

3.2.1 ポーティング方法の選択

以下の各項で説明する評価プロセスを完了したら,実際にアプリケーションと開発環境のポーティングを行います。ソース・モジュールの他に,ビルド・プロシージャやテスト・ツール,場合によってはアプリケーションのデータ構造など,その他のコンポーネントについてもポーティングが必要になる場合があります。アプリケーションの各要素に最適なポーティング方法を選択する必要があります。一般に問題となるのは,アプリケーションをソースから再ビルドするのか,バイナリ・トランスレータを使用するのかという点です。この判断を下すには,アプリケーションの各要素に対して使用可能な方法と,それらに必要となる作業量を把握しておく必要があります。これらの疑問に答えるには, 図 3-1 に示す一連の質問に答え,各作業を行う必要があります。

ほとんどのアプリケーションは,再コンパイルと再リンクを実行することによりポーティングが可能です。ユーザ・モードのみで動作し,標準的な高級言語で書かれているアプリケーションは,ほとんどの場合,このカテゴリに分類されます。

図 3-1 アプリケーションのポーティング




ポーティングのためのアプリケーション評価の最初のステップでは,ポーティングが必要となる対象を正確に洗い出します。アプリケーションだけでなく,アプリケーションを正常に実行するのに必要なあらゆる要素を洗い出す必要があります。アプリケーションの評価を開始するには,まず,以下の要素の場所を確認します。

  • メイン・プログラムのソース・モジュール

  • 共有イメージ

  • オブジェクト・モジュール

  • ライブラリ (オブジェクト・モジュール,共有イメージ,テキスト,またはマクロ)

  • データ・ファイルとデータベース

  • メッセージ・ファイル

  • スクリプトとプロシージャ (ビルド・ファイル)

  • アプリケーション・ドキュメント (用意されている場合)

第 2 章 で説明した OpenVMS Alpha と OpenVMS I64 の相違点を考慮し,実際にポーティングを開始する前に,アプリケーション・コンポーネントに対して必要となる変更について把握します。さらに, 第 7 章 で説明する CPU の違いによる開発上の問題点も考慮してください。

これらの変更に必要な時間とコストを評価します。 OpenVMS Alpha アーキテクチャに特に依存するコードは,変更する必要があります。たとえば,アプリケーションに以下のようなコードが含まれている場合は,変更が必要です。

  • 特定のマシン・インストラクションを操作したり,レジスタの数や特定のレジスタの機能を前提にしているコード。

  • OpenVMS Alpha の呼び出し規則の特定の要素に依存しているコード。
    OpenVMS Alpha と OpenVMS I64 の呼び出し規則の相違点については, 第 2.1.1 項 を参照。

  • 未公開のシステム・サービスやライブラリ・インタフェースに依存しているコード,または OpenVMS I64 で提供されていないか,提供されていても動作が異なる特定のシステム・インタフェースやライブラリ・インタフェースに依存しているコード。
    特定のシステム・インタフェースおよびライブラリ・インタフェースが提供されているかどうか,および動作が異なるかどうかについては, 第 4 章第 5 章 を参照。

  • OpenVMS Alpha のオブジェクト・ファイルの形式,実行イメージ・ファイルの形式,またはデバッグ・シンボル・テーブルの形式に依存しているコード。

  • 条件付きコード,あるいは OpenVMS VAX または OpenVMS Alpha システムで実行されることを前提にしており,それ以外のプラットフォームを取り扱うことができないようなロジックを含むコード。

  • 以下に示すような,OpenVMS Alpha または OpenVMS VAX の内部データ構造に依存しているコード。

    • IEEE 標準に準拠しない浮動小数点形式 (IEEE 浮動小数点形式は OpenVMS I64 のデフォルトであり, VAX 浮動小数点形式が不要な場合はこの形式を使用すべきです。詳細については, 第 3.2.4 項第 4.8.4 項 を参照)。

    • OpenVMS I64 のメカニズム・アレイ・データ構造は, OpenVMS Alpha と大きく異なります ( 第 4.8.3.3 項 を参照)。

      注意
    データ参照のパフォーマンスを向上するために,データは自然なアラインメントにすることをお勧めします。 OpenVMS Alpha システムでも OpenVMS I64 システムでも,アラインメントされていないデータを参照すると,パフォーマンスが大幅に低下します。さらに,アラインメントされていない共有データがあると,プログラムを正常に実行できないこともあります。共有データは自然なアラインメントにする必要があります。共有データは,シングル・プロセスのスレッドの間,プロセスと AST の間,またはグローバル・セクション内の複数のプロセスの間で使用されることがあります。データ・アラインメントの詳細については, 第 4.8.7 項 および『OpenVMS Programming Concepts Manual』を参照してください。

  • ターミナル・ドライバを参照する, (通常の) 呼び出しインタフェースを使用しないコード。
    たとえば,JSB (jump to subroutine) マクロを使用しているコードは,呼び出しインタフェースを使用するように変更する必要があります。

  • スレッドを実現するためにユーザが書いたコード。
    たとえば,ダイレクト・スタック・スイッチングを実行するコード,コルーチンやタスキング・モデルをインプリメントするコード,プロシージャ呼び出しスタック・フレームの性質に依存するコードなど。詳細については, 第 4.8.6 項 を参照。

  • 標準に準拠しなかったり,ドキュメントに記載されていないコーディング手法やインタフェースを使用しているコード。

さらに,ソース・コードのうち OpenVMS I64 ではコンパイラが提供されない言語で書かれたものは,書き直すか,変換する必要があります (サポートされるコンパイラの一覧については, 第 6 章 を参照)。 OpenVMS Alpha の特定の言語機能は, OpenVMS I64 ではサポートされませんので注意してください。詳細については,『HP OpenVMS Version 8.2 リリース・ノート [翻訳版]』を参照してください。また,特権モードで実行されるアプリケーションも変更が必要になることがあります。

ポーティングの前にソース・モジュールで必要な変更の詳細については, 第 4 章 を参照してください。

3.2.3 依存性の評価

次のステップでは,アプリケーションが依存しているソフトウェアおよび環境について評価します。

ソフトウェアへの依存性を考慮する場合,次のコンポーネントが関係します。

  • ランタイム・ライブラリ

  • HP 製レイヤード・ソフトウェア

  • 他社製ソフトウェア

  • ツール

これらの要素の多くは,すでに HP OpenVMS I64 に移植されています。たとえば,次のものはすでに移植済みです。

  • 以下のコンポーネントも含めて, OpenVMS オペレーティング・システムにバンドルされている HP 製ソフトウェア

    • ランタイム・ライブラリ

    • その他の共有ライブラリ,たとえば,ユーティリティ・ルーチンや,その他のアプリケーション・ライブラリ・ルーチンを提供するライブラリ

  • 以下のコンポーネントを含む HP 製レイヤード・ソフトウェア

    • コンパイラとコンパイラ・ランタイム・ライブラリ

    • データベース・マネージャ

    • ネットワーク環境

  • 他社製品
    現在,多くの他社製品が OpenVMS I64 で稼動しています。特定のアプリケーションが移行されているかどうかについては,アプリケーションを提供しているベンダにお問い合わせください。

      重要
    他社製のソフトウェアが提供されているかどうかが,ポーティング・プロジェクトの最大の障害になることがあります。ターゲット・オペレーティング・システム用の他社製ソフトウェアの有無とその価格を確認する必要があります。これには,ビルド環境ツール,サードパーティ・ライブラリ,自動テスト・ツールなどが含まれます。 OpenVMS で無料で提供されるツールについては, 第 5 章 を参照してください。



アプリケーションが依存している開発環境について検討します。たとえば,オペレーティング・システムの構成,ハードウェア,開発ユーティリティ,ビルド・プロシージャ (CMS: Code Management System や MMS: Module Management System などの HP 製ツールを含む) などについて検討してください。

オペレーティング環境に関して,次の問題点を検討します。

  • システム属性
    アプリケーションの実行と保守に必要とされるシステム。たとえば,必要なメモリ容量やディスク容量など。

  • テスト・ツール
    テストを行って,移植したアプリケーションが正常に動作することを確認し,パフォーマンスを評価する必要があります。新製品の開発,特に新しいシステムへのアプリケーションのポーティングの際には,リグレッション・テストがきわめて重要です。リグレッション・テストは,新しいバージョンのオペレーティング・システムおよびプラットフォームでソフトウェアをテストするのに役立ちます。リグレッション・テストは以下のいずれか 1 つ,またはその組み合わせによって構成できます。

    • 考えられるすべてのコード・パスおよび機能を実行するために,開発チームが作成したソフトウェア・プログラム

    • 一連の DCL コマンド・プロシージャ

    • (ソフトウェアによる自動実行ではなく) 手動で実行する対話型テスト

    • HP Digital Test Manager またはそれに相当するオープンソース・ツール



3.2.4 運用タスク

アプリケーションのポーティングと保守に必要な運用タスクの要件と責任を評価します。たとえば,次のタスクに関する検討が必要です。

  • インストールの要件

  • コンパイルの要件

    • アプリケーションで使用したコンパイラは,本バージョンの OpenVMS I64 でもサポートされますか?

    • アプリケーションのポーティングに先立って, OpenVMS Alpha システムで最新バージョンの OpenVMS Alpha コンパイラを使用してアプリケーションをコンパイルすることをお勧めします。この作業を行うことで,アプリケーションを OpenVMS I64 でコンパイルしたときに発生する可能性がある問題点を,あらかじめ検出できることがあります。新しいバージョンのコンパイラでは,既存のコンパイラ標準より厳密な解釈が適用されたり,新たに厳密な標準が適用されていることがあります。本バージョンの OpenVMS I64 でサポートされるコンパイラの詳細については, 第 6 章 を参照してください。

    • OpenVMS Alpha システムでコンパイルのテストを行い,問題を解決した後,アプリケーションを OpenVMS I64 システムに移植し,再度コンパイル,リンク,および確認作業を行う必要があります。これらの作業に関するプランを作成します。

    • VAX 浮動小数点データ・タイプを IEEE 浮動小数点データ・タイプに変更することができますか?
      一般に,OpenVMS I64 でも,アプリケーションで VAX 浮動小数点データ・タイプを使用できます。以前に生成されたバイナリ浮動小数点データにアクセスすることが必要な場合は, VAX 浮動小数点形式を使用します。 OpenVMS I64 システムでは,VAX 浮動小数点形式はソフトウェアでインプリメントされます。 HP 製コンパイラは,VAX 浮動小数点形式の値を IEEE 浮動小数点形式に変換して算術演算を実行するのに必要なコードを自動的に生成します。しかし,その後,値を VAX 浮動小数点形式に戻します。この追加変換のために,アプリケーションの実行時にオーバヘッドが発生します。この理由から,できるだけアプリケーションを IEEE 浮動小数点形式に変更することを検討してください。
      Alpha ハードウェアでは IEEE 浮動小数点がサポートされるため,OpenVMS Alpha で動作するアプリケーションは,パフォーマンスを犠牲にせずに, IEEE 浮動小数点形式を使用するように変更できます。このような変更をあらかじめ行っておくと, OpenVMS I64 へのアプリケーションの移行が容易になります。 IEEE 浮動小数点形式は,Itanium ハードウェアでサポートされる唯一の浮動小数点形式です。さらに,この形式を使用することで,アプリケーションのパフォーマンスも向上します。
      OpenVMS Alpha システムで IEEE 修飾子を指定してアプリケーションをコンパイルすると, IEEE 浮動小数点形式の値を使用してアプリケーションの動作をテストできます (多くのコンパイラでは,コンパイラ・オプション /FLOAT=IEEE を指定します。 I64 BASIC を使用している場合は,/REAL_SIZE 修飾子を指定します)。その結果,望ましい結果が得られた場合は,同じ修飾子を使用して OpenVMS I64 システムで (さらに必要であれば Alpha でも) アプリケーションを単純にビルドすることができます。
      詳細については, 第 4.8.4 項 およびホワイトペーパー『Intel® Itanium® における OpenVMS 浮動小数点演算について』を参照してください。このホワイトペーパーが入手できる Web サイトについては,「まえがき」の「関連資料」の項を参照してください。

  • バックアップおよび復元機能

  • オペレータ・インタフェースの見た目と使い勝手

  • システム管理


目次 索引

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