[ 前のページ ] [ 次のページ ] [ 目次 ] [ 索引 ]


A OpenVMS DECTERM PORTルーチンの使用

アプリケーションでDECTERM PORTルーチンを使用すると,ローカルまたはリモートのいずれのノードでも, 漢字端末エミュレータのウィンドウを作成できます。CREATE/TERMINAL コマンドを生成して,漢字端末エミュレータのウィンドウを作成することもできますが,DECTERM PORT ルーチンを使用したほうが性能は高くなります( ユーザはセッション・マネージャの「アプリケーション」メニューから, またはDCLでCREATE/TERMINALコマンドを使用することによって, 漢字端末エミュレータを作成できます)。

例 A-1は,DECTERM PORTルーチンを使用して, リモート・システム上に漢字端末エミュレータを作成する方法を示しています。

例 A-1 リモート・ノード上での漢字端末エミュレータの作成

#include descrip     /* descriptor definitions */
#include ssdef       /* system status codes */
#include prcdef      /* stsflg bits for creating process */

main( )
{
  int status, stsflg;
  short device_length;
【1】
  char device_name[50];
  $DESCRIPTOR( command, "SYS$SYSTEM:LOGINOUT.EXE" );
  $DESCRIPTOR( input_file, "" );
  $DESCRIPTOR( output_file, "" );

/* send the message to the controller */
【2】
  status = DECwTermPort( 0, 0, 0, device_name, &device_length );
  if ( status != SS$_NORMAL )
     printf( "DECterm creation failed, status is %x\n", status );
  else
  {
     /* create a process that is already logged in */
     /* input from TWn: */
【3】input_file.dsc$w_length = device_length;
     input_file.dsc$a_pointer = device_name;

     /* output to TWn: */
     output_file.dsc$w_length = device_length;
     output_file.dsc$a_pointer = device_name;

     /* make it detached, interactive, logged in */
     stsflg = PRC$M_DETACH | PRC$M_INTER | PRC$M_NOPASSWORD;

     /* create the process */
【4】status = sys$creprc( 0, &command, &input_file,
                          &output_file, 0, 0, 0, 0, 4, 0, 0, stsflg );
     if ( status != SS$_NORMAL )
        printf( "Could not run LOGINOUT.EXE, status is %x\n", status );
   }
}

  1. DECTERM PORTルーチンは,この文字配列に仮想端末装置の名前を返します。

  2. DECTERM PORTルーチンに対するこの呼び出しは,リモート・ノード上に漢字端末エミュレータのウィンドウを作成します。 この例では, 引数displayは0として指定されています。これは省略時のディスプレイを使用しなければならないことを示しています。2 番めの引数に0 を指定することによって,省略時のセットアップ・ファイルを使用します。3 番めの引数に0を指定することによって,セットアップ・ファイルとリソース・ ファイルの省略時の値が更新されないよう指定します。

    DECTERM PORTルーチンは4番めの引数device_nameに,仮想端末装置の名前を返します。DECTERM PORT ルーチンは最後の引数 device_lengthに,仮想端末装置の名前の長さを書き込みます。

  3. リモート漢字端末エミュレータの作成後,すでにログインされているプロセスを作成します。

  4. SYS$CREPRCに対するこの呼び出しは,漢字端末エミュレータのウィンドウで実行するプロセスを作成します。 このプロセスのSYS$INPUT は漢字端末エミュレータのウィンドウであり,プロセスは優先順位4 で作成されます。このプロセスは独立プロセスとしてログインされています。

例 A-2はこのサンプル・プログラムをコンパイル, リンク,および実行するためのコマンド・プロシージャです。

例 A-2 リモード・ノード上で漢字端末エミュレータをコンパイル, リンク,実行するためのコマンド・プロシージャ

【1】
$ cc create_decterm
【2】
$ link create_decterm, sys$input/opt
sys$share:decw$xlibshr/share
sys$share:decw$dwtlibshr/share
sys$share:vaxcrtl/share
sys$share:decw$terminalshr/share
【3】
$ set display/create/node=mynode
【4】
$ run create_decterm

  1. このコマンド・プロシージャは,サンプル・プログラムをコンパイルするためにコンパイラを起動します。

  2. このコマンド・プロシージャは,コマンド行の引数としてオブジェクト・ モジュールの名前とオプション・ファイルを指定してリンカを起動します。 オプション・ファイルはサンプル・プログラムを実行するために必要な, 共用可能なライブラリをリストします。漢字端末エミュレータの共用可能イメージは decw$terminalshrで指定します。

  3. 省略時のディスプレイがmynodeに設定されます。例 A-1 では,DECTERM PORTルーチンに対する引数display に0が指定されているため,漢字端末エミュレータは mynode上に作成されます。DECTERM PORTルーチンに対する引数display にmynode::0を指定することによっても,同じ効果を得ることができます。

  4. コマンド・プロシージャがサンプル・プログラムを実行します。


[ 前のページ ] [ 次のページ ] [ 目次 ] [ 索引 ]