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


OpenVMS マニュアル


 

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

タイトルページ
目次
まえがき
第 1 章:DEC XTPU の概要
第 2 章:DEC XTPU のデータ・タイプ
第 3 章:DEC XTPU 言語のレキシカル要素
第 4 章:DEC XTPU 組込みプロシージャ
第 5 章:DEC XTPU の起動
第 6 章:呼び出し可能なDEC XTPU
付録 A :DEC XTPUにおける端末装置のサポートと制限事項
付録 B :DEC XTPU メッセージ
索引
PDF
OpenVMS ホーム
日本語 HP OpenVMS

日本語 HP OpenVMS
DEC XTPU リファレンス・マニュアル


目次 索引

第 6 章
呼び出し可能なDEC XTPU

この章では,呼び出し可能な DEC XTPU ルーチンについて説明します。すなわち,呼び出し可能なルーチンの目的,ルーチン呼び出しのパラメータ,および主なステータス値について解説します。呼び出し構文のパラーメータは, DEC XTPU ルーチンに渡すオブジェクトを表します。それぞれのパラメータの説明では,そのオブジェクトのデータ型と受け渡し方法とを示します。データ型は, OpenVMS の標準データ型です。受け渡し方法は,パラメータ・リストがどう解釈されるかを示します。

この章は,対象読者として,以下の事柄を十分に理解しているシステム・プログラマを想定しています。

  • OpenVMS 呼び出し規則

  • OpenVMS ランタイム・ライブラリ (RTL)

  • コンピュータ上でのデータ型の表現方法

  • メイン・プログラムと異なる言語で書かれたルーチンの呼び出し方



6.1 概要

呼び出し可能な DEC XTPU は,他の言語やアプリケーションの中から DEC XTPU にアクセスできるようにするものです。OpenVMS 呼び出し規則に従った呼び出しを生成する言語で書かれたプログラムであれば,その中から DEC XTPU を呼び出すことができます。また,MAIL ユーティリティなど, OpenVMS のユーティリティからも DEC XTPU を呼び出すことができます。呼び出し可能なDEC XTPU によって,ユーザ・プログラムの内部でテキスト処理機能を実行することが可能となります。

呼び出し可能なDEC XTPU はDEC XTPU の共有可能イメージである XTPUSHR.EXE に存在する呼び出し可能なルーチンから構成されます。呼び出し可能なDEC XTPU を使用するためには,この共有可能イメージとリンクします。共有可能イメージには,呼び出し可能なインタフェース・ルーチン名と定数が含まれています。DCL レベルの DEC XTPU インタフェースの場合と同様に,呼び出し可能なDEC XTPU への入力として,また出力として,ファイルを使用することができます。さらに入力,出力,およびメッセージを処理するために独自のルーチンを作成することもできます。

呼び出し側のプログラムは,DEC XTPU プロシージャに渡すパラメータが,その DEC XTPU プロシージャの受け付けるデータ型および形式であることを確実にしなければなりません。

この章で説明しているDEC XTPU ルーチンは,そのルーチンの終了ステータスを示す条件値を返します。返された条件値とテスト値を比較する場合には,ランタイム・ライブラリの LIB$MATCH_COND を使用しなければなりません。条件値を単純な整数としてテストしないようにしてください。

6.1.1 呼び出し可能なDEC XTPU に対する2つのインタフェース

呼び出し可能なDEC XTPU は,単純な呼び出し可能インタフェースと完全な呼び出し可能インタフェースの2通りの方法でアクセスすることができます。

単純な呼び出し可能インタフェース

呼び出し可能なDEC XTPU を使用するためのもっとも簡単な方法は,単純な呼び出し可能インタフェースを使用することです。DEC XTPU には,単純な呼び出し可能インタフェースで使用できる2つのルーチンがあります。これらのルーチンはさらに以下の操作を実行する他のルーチンを呼び出します。

  • エディタを初期化する

  • エディタの操作に必要なパラメータをエディタに与える

  • 編集セッションを制御する

  • エラー処理を実行する

単純な呼び出し可能インタフェースを使用する場合,DEC XTPU を起動するためのコマンド・ラインを指定する XTPU$XTPU ルーチンか,または入力ファイルと出力ファイルとを指定する XTPU$EDIT ルーチンを使用します。 XTPU$EDIT はコマンド文字列を作成し,それを XTPU$XTPU へ渡します。これらの2つのルーチンについては, 第 6.2 節 で詳しく説明します。

完全な呼び出し可能インタフェース

完全な呼び出し可能インタフェースを使用する場合には,呼び出し可能な DEC XTPU のメイン・ルーチンを直接アクセスするプログラムを使用します。これらのルーチンは以下の操作を実行します。

エディタを初期化する XTPU$INITIALIZE
DEC XTPU プロシージャを実行する XTPU$EXECUTE_INIFILE
XTPU$EXECUTE_COMMAND
エディタを制御する XTPU$CONTROL
編集セッションを終了する XTPU$CLEANUP

完全な呼び出し可能インタフェースを利用する場合,一定のパラメータに値を指定しなければなりません。ある場合には,値として追加ルーチンのアドレスを指定することになります。たとえば,XTPU$INITIALIZE を呼び出す場合には,初期化オプションを指定するルーチンのアドレスを指定しなければなりません。アプリケーションによっては,ユーザが追加ルーチンを作成しなければならないこともあります。たとえば,ファイルを操作したり,エラーを処理したり,あるいは編集セッションを制御したりするルーチンを作成する必要があるかもしれません。呼び出し可能な DEC XTPU は,そうした作業のいくつかを肩代わりするユーティリティ・ルーチンを用意しています。ユーティリティ・ルーチンによって以下のようなことができます。

  • OpenVMS コマンド・ラインを解析して,エディタを初期化するときに使用するアイテム・リストを作成する

  • ファイル操作を処理する

  • エラー・メッセージを出力する

  • 条件処理を行う

完全な呼び出し可能インタフェースについては,以下の各節に詳しく説明されています。

第 6.3 節 まずインタフェースの簡単な説明が示されていますが,この節の大部分は呼び出し可能なDEC XTPU のメイン・ルーチンの説明にあてられています (XTPU$INITIALIZE,XTPU$EXECUTE_INIFILE,XTPU$CONTROL, XTPU$EXECUTE_COMMAND,XTPU$CLEANUP)。
第 6.3.2 項 完全な呼び出し可能インタフェースで使用できる追加ルーチンが説明されています。
第 6.3.3 項 完全な呼び出し可能インタフェースで使用できるルーチンを作成するための必要条件が定義されています。

完全な呼び出し可能インタフェースは,呼び出し可能なDEC XTPU メイン・ルーチンと DEC XTPU ユーティリティ・ルーチンから構成されます。

6.1.2 共有可能イメージ

単純な呼び出し可能インタフェースを使用する場合も,完全な呼び出し可能インタフェースを使用する場合も, DEC XTPU の共有可能イメージにリンクすることにより,呼び出し可能なDEC XTPU にアクセスすることができます。このイメージにはアプリケーションで使用できるルーチン名と定数が含まれています。さらに,XTPUSHR.EXE には,以下のシンボルも含まれています。

XTPU$GL_VERSION 共有可能イメージのバージョン
XTPU$GL_UPDATE 共有可能イメージの更新番号
XTPU$_FACILITY DEC XTPU のファシリティ・コード

共有可能イメージ,XTPUSHR.EXE のリンク方法については,『日本語 OpenVMS 概説書』を参照してください。

6.1.3 呼び出し可能なDEC XTPU ルーチンに対するパラメータの受渡し

パラメータは参照またはディスクリプタによって呼び出し可能なDEC XTPU に渡されます。パラメータがルーチンの場合には,パラメータはバウンド・プロシージャ値(BPV) データ・タイプとしてディスクリプタによって渡されます。

バウンド・プロシージャ値とは,2つのロングワードから構成される値であり,最初のロングワードにはプロシージャのアドレスが含まれており,2番目のロングワードには環境値が含まれています。 図 6-1 を参照してください。環境値は最初のバウンド・プロシージャ値を作成するときに言語固有の方法で決定されます。バウンド・プロシージャが呼び出されると,呼び出しプログラムは 2番目のロングワードをR1にロードします。

図 6-1 バウンド・プロシージャ値




6.1.4 エラー処理

単純な呼び出し可能インタフェースを使用する場合,DEC XTPU はすべてのエラーを処理するために独自の条件ハンドラである XTPU$HANDLER を設定します。完全な呼び出し可能インタフェースを使用する場合には,以下の2通りの方法でエラーを処理することができます。

  • DEC XTPU の省略時の条件ハンドラである XTPU$HANDLER を使用することができる

  • 一部のエラーを処理するために独自の条件ハンドラを作成し,他のエラーは XTPU$HANDLER を呼び出すことにより処理することができる

省略時の条件ハンドラである XTPU$HANDLER については XTPU$FILEIO を参照してください。また,ユーザ独自の条件ハンドラを作成する方法については,『OpenVMS Programming Concepts Manual』を参照してください。

6.1.5 戻される値

DEC XTPU の条件コードはすべてユニバーサル・シンボルとして宣言されます。したがって,自分のプログラムを共有可能イメージにリンクすると,自動的にこれらのシンボルにアクセスできるようになります。DEC XTPU は条件コード値を R0 にセットします。DEC XTPU のリターン・コードについては,『DEC Text Processing Utility Reference Manual』を参照してください。DEC XTPU が返すリターン・コードとそのメッセージについては,Help/Message ファシリティを参照してください。

この後の節では,呼び出し可能なDEC XTPU ルーチンの説明の中に条件コードに関する情報も示されています。この情報は“戻される条件値”という見出しの下に示されており,省略時の条件ハンドラが設定されているときに戻される値を示しています。

6.2 単純な呼び出し可能インタフェース

DEC XTPU の単純な呼び出し可能インタフェースは XTPU$XTPUXTPU$EDIT という 2つのルーチンから構成されています。DEC XTPU に対するこれらのエントリ・ポイントは,以下のアプリケーションで使用することができます。

  • 1行のコマンド・ラインにすべての編集パラメータを指定できるアプリケーション

  • 入力ファイルと出力ファイルだけを指定するだけでよいアプリケーション



6.2.1 単純なインタフェースの例

次の例は XTPU$EDIT を呼び出して,INFILE.DAT 中のテキストを編集し,その結果を OUTFILE.DAT に書き込みます。XTPU$EDIT に渡すパラメータはディスクリプタ渡しでなければなりません。


/* 
  Sample C program that calls DEC XTPU.  This program uses XTPU$EDIT to 
  provide the names of the input and output files 
*/ 
 
#include descrip 
 
int return_status; 
 
static $DESCRIPTOR (input_file, "infile.dat"); 
static $DESCRIPTOR (output_file, "outfile.dat"); 
 
main (argc, argv) 
    int argc; 
    char *argv[]; 
 
    { 
    /* 
      Call DEC XTPU to edit text in "infile.dat" and write the result 
      to "outfile.dat".  Return the condition code from DEC XTPU as the 
      status of this program. 
    */ 
 
    return_status = XTPU$EDIT (&input_file, &output_file); 
    exit (return_status); 
    } 

以下の例は,上の例と同じ動作をします。ここではエントリ・ポイントとして XTPU$XTPUを使います。XTPU$XTPU は引数として "XTPU" で始まるコマンド文字列を受け取ります。コマンド文字列には "EDIT/XTPU" コマンドに使用できるすべての修飾子を使用できます。


/* 
  Sample C program that calls DEC XTPU.  This program uses XTPU$XTPU and 
  specifies a command string 
*/ 
 
#include descrip 
 
int return_status; 
 
static $DESCRIPTOR (command_prefix, "XTPU/NOJOURNAL/NOCOMMAND/OUTPUT="); 
static $DESCRIPTOR (input_file, "infile.dat"); 
static $DESCRIPTOR (output_file, "outfile.dat"); 
static $DESCRIPTOR (space_desc, " "); 
 
char command_line [100]; 
static $DESCRIPTOR (command_desc, command_line); 
 
main (argc, argv) 
    int argc; 
    char *argv[]; 
 
    { 
    /* 
      Build the command line for DEC XTPU.  Note that the command verb 
      is "XTPU".  The string we construct in the buffer command_line 
      will be 
        "XTPU/NOJOURNAL/NOCOMMAND/OUTPUT=outfile.dat infile.dat" 
    */ 
 
    return_status = STR$CONCAT (&command_desc, 
                                &command_prefix, 
                                &output_file, 
                                &space_desc, 
                                &input_file); 
    if (! return_status) 
        exit (return_status); 
 
    /* 
      Now call DEC XTPU to edit the file 
    */ 
    return_status = XTPU$XTPU (&command_desc); 
    exit (return_status); 
    } 

次節では,完全な呼び出し可能インタフェースによって呼び出されるルーチンについて詳しく説明します。単純な呼び出し可能インタフェースを使用した場合には,これらのルーチンがインタフェースによって呼び出されます。完全な呼び出し可能インタフェースを使用する場合には,ユーザ・プログラムが直接これらのルーチンを呼び出します。

6.3 完全な呼び出し可能インタフェース

DEC XTPU の完全な呼び出し可能インタフェースは,以下の作業を実行するために使用できる複数のルーチンから構成されています。

  • 初期化パラメータを指定する

  • ファイルの入出力を制御する

  • エディタが実行するコマンドを指定する

  • 条件の処理方法を制御する

単純な呼び出し可能インタフェースを使用する場合には,上記の操作は自動的に実行されます。これらの機能を実行する各 DEC XTPU ルーチンはユーザ作成プログラムから呼び出すことができ,DEC XTPU の完全な呼び出し可能インタフェースと呼ばれます。このインタフェースには2種類のルーチンが含まれています。すなわち DEC XTPU の呼び出し可能なメイン・ルーチンと DEC XTPU ユーティリティ・ルーチンです。これらの DEC XTPU ルーチンと,DEC XTPU ルーチンにパラメータを渡すユーザ・ルーチンを使用することにより,アプリケーション・プログラムが DEC XTPU を制御します。

以降の節では,呼び出し可能なメイン・ルーチン,これらのルーチンに対するパラメータの受渡し方法,DEC XTPU ユーティリティ・ルーチン,およびユーザ作成ルーチンの必要条件について説明します。



6.3.1 主な呼び出し可能なDEC XTPU ユーティリティ・ルーチン

この節では,以下の呼び出し可能なDEC XTPU ルーチンについて説明します。

  注意
これらのルーチンを呼び出す前に,条件ハンドラとして XTPU$HANDLER かまたはユーザ独自のルーチンを設定しておかなければなりません。条件ハンドラの設定については,この章の XTPU$HANDLER ルーチンの説明および『OpenVMS Calling Standard』を参照してください。



完全な呼び出し可能インタフェースにはユーティリティ・ルーチンがいくつか含まれており,それらに対してはパラメータを渡すことができます。アプリケーションによっては,ユーザ独自のルーチンの代わりにこれらのルーチンが利用できる場合があります。ユーティリティ・ルーチンには以下のものがあります。

XTPU$CLIPARSE コマンド・ラインを解析し,XTPU$INITIALIZE 用のアイテム・リストを作成する
XTPU$PARSEINFO コマンドを解析し,XTPU$INITIALIZE 用のアイテム・リストを作成する
XTPU$FILEIO 省略時のファイル入出力ルーチン
XTPU$MESSAGE MESSAGE 組込みプロシージャを使ってエラー・メッセージや文字列を出力する
XTPU$HANDLER 省略時の条件ハンドラ
XTPU$CLOSE_TERMINAL CALL_USER ルーチンの実行中,DEC XTPU のターミナルへのチャネルをクローズする
XTPU$SPECIFY_ASYNC_ACTION XTPU$CONTROL ルーチンを中断するための非同期イベントを指定する
XTPU$TRIGGER_ASYNC_ACTION 指定の非同期イベントで XTPU$CONTROL ルーチンを中断する

XTPU$CLIPARSE および XTPU$PARSEINFO は,コマンド解析のために CLI$ ルーチンによって保持されているデータを破壊することに注意してください。

6.3.3 ユーザ作成ルーチン

この節では,ユーザ作成ルーチンの必要条件を定義します。これらのルーチンを DEC XTPU に渡す場合には,バウンド・プロシージャ値として渡さなければなりません (バウンド・プロシージャ値については 第 6.1.3 項 を参照してください)。アプリケーションに応じて,以下に示すルーチンのうち,1つまたはすべてを作成しなければなりません。

  • 初期化コールバックのためのルーチン
    このルーチンは,初期化パラメータの値を入手するために, XTPU$INITIALIZE によって呼び出されます。初期化パラメータはアイテム・リストとして返します。

  • ファイル入出力のためのルーチン
    このルーチンはファイル操作を処理するルーチンです。独自のファイル入出力ルーチンを作成する代わりに, XTPU$FILEIO ユーティリティ・ルーチンを使用することもできます。ただし,ジャーナル・ファイル操作や SAVE 組込みプロシージャによって実行される動作ではこのルーチンは使用されません。

  • 条件処理のためのルーチン
    このルーチンはエラー条件を処理するルーチンです。独自の条件ハンドラを作成する代わりに,省略時の条件ハンドラである XTPU$HANDLER を使用することもできます。

  • CALL_USER 組込みプロシージャのためのルーチン
    このルーチンは CALL_USER 組込みプロシージャによって呼び出されるルーチンです。この仕組みを利用すれば,編集セッション中に制御をユーザ・プログラムに渡すことができます。



6.4 DEC XTPU ルーチンの使用例

例 6-1例 6-2 ,および 例 6-3 は,呼び出し可能な DECXTPU を使用したものです。これらの例は解説を目的としたものであり,DEC はこれらの信頼性について,その責任を負いません。

例 6-1 DEC FORTRAN における通常のDEC XTPU セットアップ
C       A sample FORTRAN program that calls DEC XTPU to act 
C       normally, using the programmable interface. 
C 
C       IMPLICIT NONE 
 
        INTEGER*4       CLEAN_OPT       !options for clean up routine 
        INTEGER*4       STATUS          !return status from DEC XTPU routines 
        INTEGER*4       BPV_PARSE(2)    !set up a Bound Procedure Value 
        INTEGER*4       LOC_PARSE       !a local function call 
 
C       declare the DEC XTPU functions 
 
        INTEGER*4       XTPU$CONTROL 
        INTEGER*4       XTPU$CLEANUP 
        INTEGER*4       XTPU$EXECUTE_INIFILE 
        INTEGER*4       XTPU$INITIALIZE 
        INTEGER*4       XTPU$CLIPARSE 
 
C       declare a local copy to hold the values of DEC XTPU cleanup variables 
 
        INTEGER*4       RESET_TERMINAL 
        INTEGER*4       DELETE_JOURNAL 
        INTEGER*4       DELETE_BUFFERS,DELETE_WINDOWS 
        INTEGER*4       DELETE_EXITH,EXECUTE_PROC 
        INTEGER*4       PRUNE_CACHE,KILL_PROCESSES 
        INTEGER*4       CLOSE_SECTION 
        INTEGER*4       CLOSE_KANJI_DIC 
 
C       declare the DEC XTPU functions used as external 
 
        EXTERNA         XTPU$HANDLER 
        EXTERNAL        XTPU$CLIPARSE 
 
        EXTERNAL        XTPU$_SUCCESS    !external error message 
 
        EXTERNAL        LOC_PARSE       !user supplied routine to 
 
C                                       call TPUCLIPARSE and setup 
C       declare the DEC XTPU cleanup variables as external these are the 
C       external literals that hold the value of the options 
 
        EXTERNAL        XTPU$M_RESET_TERMINAL 
        EXTERNAL        XTPU$M_DELETE_JOURNAL 
        EXTERNAL        XTPU$M_DELETE_BUFFERS,XTPU$M_DELETE_WINDOWS 
        EXTERNAL        XTPU$M_DELETE_EXITH,XTPU$M_EXECUTE_PROC 
        EXTERNAL        XTPU$M_PRUNE_CACHE,XTPU$M_KILL_PROCESSES 
        EXTERNAL        XTPU$M_CLOSE_KANJI_DIC 
 
100     CALL LIB$ESTABLISH ( XTPU$HANDLER ) !establish the condition handler 
 
C       set up the Bound Procedure Value for the call to XTPU$INITIALIZE 
 
        BPV_PARSE( 1 ) = %LOC( LOC_PARSE ) 
        BPV_PARSE( 2 ) = 0 
 
C       call the DEC XTPU initialization routine to do some set up work 
 
        STATUS = XTPU$INITIALIZE ( BPV_PARSE ) 
 
C       Check the status if it is not a success then signal the error 
 
        IF ( STATUS .NE. %LOC ( XTPU$_SUCCESS ) ) THEN 
 
                CALL LIB$SIGNAL( %VAL( STATUS ) ) 
                GOTO 9999 
 
        ENDIF 
 
C       execute the XTPU$_ init files and also a command file if it 
C       was specified in the command line call to DEC XTPU 
 
        STATUS = XTPU$EXECUTE_INIFILE ( ) 
 
        IF ( STATUS .NE. %LOC ( XTPU$_SUCCESS ) ) THEN 
 
                CALL LIB$SIGNAL( %VAL( STATUS ) ) 
                GOTO 9999 
 
        ENDIF 
 
C       invoke the editor as it normally would appear 
 
        STATUS = XTPU$CONTROL ( )        !call the DEC XTPU editor 
 
        IF ( STATUS .NE. %LOC ( XTPU$_SUCCESS ) ) THEN 
 
                CALL LIB$SIGNAL( %VAL( STATUS ) ) 
C               GOTO 9999 
        ENDIF 
 
C       Get the value of the option from the external literals.  In FORTRAN you 
C       cannot use external literals directly so you must first get the value 
C       of the literal from its external location.  Here we are getting the 
C       values of the options that we want to use in the call to XTPU$CLEANUP. 
 
        DELETE_JOURNAL  = %LOC ( XTPU$M_DELETE_JOURNAL ) 
        DELETE_EXITH    = %LOC ( XTPU$M_DELETE_EXITH ) 
        DELETE_BUFFERS  = %LOC ( XTPU$M_DELETE_BUFFERS ) 
        DELETE_WINDOWS  = %LOC ( XTPU$M_DELETE_WINDOWS ) 
        EXECUTE_PROC    = %LOC ( XTPU$M_EXECUTE_PROC ) 
        RESET_TERMINAL  = %LOC ( XTPU$M_RESET_TERMINAL ) 
        KILL_PROCESSES  = %LOC ( XTPU$M_KILL_PROCESSES ) 
        CLOSE_SECTION   = %LOC ( XTPU$M_CLOSE_SECTION ) 
        CLOSE_KANJI_DIC = %LOC ( XTPU$M_CLOSE_KANJI_DIC ) 
 
C       Now that we have the local copies of the variables we can do the 
C       logical OR to set the multiple options that we need. 
 
        CLEAN_OPT = DELETE_JOURNAL .OR. DELETE_EXITH .OR. 
        1       DELETE_BUFFERS .OR. DELETE_WINDOWS .OR. EXECUTE_PROC 
        1       .OR. RESET_TERMINAL .OR. KILL_PROCESSES .OR. CLOSE_SECTION 
        1       .OR. CLOSE_KANJI_DIC 
 
 
C       do the necessary clean up 
C       XTPU$CLEANUP wants the address of the flags as the parameter so 
C       pass the %LOC of CLEAN_OPT which is the address of the variable 
 
        STATUS = XTPU$CLEANUP ( %LOC ( CLEAN_OPT ) ) 
 
        IF ( STATUS .NE. %LOC (XTPU$_SUCCESS) ) THEN 
 
                CALL LIB$SIGNAL( %VAL(STATUS) ) 
 
        ENDIF 
 
 
9999    CALL LIB$REVERT         !go back to normal processing -- handlers 
 
        STOP 
        END 
 
C 
C 
        INTEGER*4  FUNCTION LOC_PARSE 
 
        INTEGER*4       BPV(2)          !A local Bound Procedure Value 
 
        CHARACTER*13    EDIT_COMM       !A command line to send to XTPU$CLIPARSE 
 
C       Declare the DEC XTPU functions used 
 
        INTEGER*4       XTPU$FILEIO 
        INTEGER*4       XTPU$CLIPARSE 
 
C       Declare this routine as external because it is never called directly and 
C       we need to tell FORTRAN that it is a function and not a variable 
 
        EXTERNAL        XTPU$FILEIO 
 
        BPV(1) = %LOC(XTPU$FILEIO)       !set up the BOUND PROCEDURE VALUE 
        BPV(2) = 0 
 
        EDIT_COMM(1:18) = 'EDIT/XTPU TEST.TXT' 
 
C       parse the command line and build the item list for XTPU$INITIALIZE 
9999     LOC_PARSE = XTPU$CLIPARSE (EDIT_COMM, BPV , 0) 
 
        RETURN 
        END 


目次 索引

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