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


前へ 次へ 目次 索引


4.1.7 キーの定義

ADD_KEY_MAP
CREATE_KEY_MAP
CREATE_KEY_MAP_LIST
DEFINE_KEY
KEY_NAME (*)
LAST_KEY
LOOKUP_KEY
REMOVE_KEY_MAP
SET (KEY_MAP_LIST)
SET (POST_KEY_PROCEDURE)
SET (PRE_KEY_PROCEDURE)
SET (SELF_INSERT)
SET (SHIFT_KEY)
SET (UNDEFINED_KEY)
UNDEFINE_KEY

4.1.8 マルチ処理

ATTACH
CREATE_PROCESS
SEND
SEND_EOF
SPAWN

4.1.9 プログラムおよびプロシージャの実行

ABORT
BREAK
COMPILE
EXECUTE
RETURN
SAVE

4.1.10 DECwindows

CREATE_WIDGET
DEFINE_WIDGET_CLASS
GET_CLIPBOARD
GET_DEFAULT
GET_GLOBAL_SELECT
LOWER_WIDGET
MANAGE_WIDGET
RAISE_WIDGET
READ_CLIPBOARD
READ_GLOBAL_SELECT
REALISE_WIDGET
SEND_CLIENT_MESSAGE
SET (ACTIVE_AREA)
SET (CLIENT_MESSAGE)
SET (DEFAULT_FILE)
SET (DRM_HIERARCHY)
SET (ENABLE_RESIZE)
SET (FIRST_INPUT_ACTION)
SET (GLOBAL_SELECT)
SET (GLOBAL_SELECT_GRAB)
SET (GLOBAL_SELECT_READ)
SET (GLOBAL_SELECT_TIME)
SET (GLOBAL_SELECT_UNGRAB)
SET (ICON_NAME)
SET (ICON_PIXMAP)
SET (ICONIFY_PIXMAP)
SET (INPUT_FOCUS)
SET (INPUT_FOCUS_GRAB)
SET (INPUT_FOCUS_UNGRAB)
SET (MAPPED_WHEN_MANAGED)
SET (MENU_POSITION)
SET (RESIZE_ACTION)
SET (SCREEN_LIMITS)
SET (SCROLL_BAR)
SET (SCROLL_BAR_AUTO_THUMB)
SET (UID)
SET (WIDGET)
SET (WIDGET_CALL_DATA)
SET (WIDGET_CALLBACK)
SET (WIDGET_CONTEXT_HELP)
SET (WIDGET_RESOURCE_TYPES)
UNMANAGE_WIDGET
WRITE_CLIPBOARD
WRITE_GLOBAL_SELECT

4.1.11 その他

ASCII (*)
CALL_USER (*)
CODE (*)
COLUMN_LENGTH (*)
CONVERT
CONVERT_KANA (*)
CREATE_ARRAY
DEC_KANJI (*)
DELETE
DELETE_TANGO (*)
ENTER_TANGO (*)
EXIT
EXPAND_NAME
FAO (*)
HELP_TEXT
INDEX
INT
JOURNAL_CLOSE
JOURNAL_OPEN
LEARN_ABORT
LEARN_BEGIN
LEARN_END
LENGTH
MESSAGE
QUIT
READ_CHAR (*)
READ_KEY (*)
READ_LINE (*)
SET (EOB_TEXT)
SLEEP
STR
SUBSTR
SYMBOL (*)

4.2 組込みプロシージャの説明

各組込みプロシージャの説明には下記の項目が含まれています。

各組込みプロシージャはアルファベット順に説明されています。

注意

パラメータで使われる文字列のほとんどのものにはASCII 以外の文字を使用できますが,ファイル名,プロセス名などを指定するパラメータ文字列には,ASCII 文字のみが使用できます。


ALIGN_CURSOR

この組込みプロシージャは,カーソルが文字境界上に存在しないときに行の先頭方向へカーソルを移動して,文字境界にカーソルを合わせます。

形式

[integer :=] ALIGN_CURSOR


引数

なし


戻り値

ALIGN_CURSORによって移動したカラム数。

シグナル・エラー

XTPU$_TOOMANY ERROR パラメータの数が多すぎる


ASCII

この組込みプロシージャは,整数を ASCII 文字(半角文字)列に変換するか,あるいは ASCII文字を整数に変換します。

形式

{integer2 | string2} := ASCII ({integer1 | keyword | string1})


引数

integer1

ISO Latin1 文字セットに含まれる文字を示す 10 進数。

keyword

キーワードはキー名でなければなりません。キー名が印字可能文字を生成するキーの名前のときは,ASCII はその文字を返します。そうでなければ,ASCII の値が0 である文字を返します。

string1

ASCII 値を得たい文字。文字列の長さが1文字よりも長いときには,最初の文字の ASCII 値が得られます。

戻り値

指定された ASCII 値を持つ文字(integer または keyword パラメータを指定したとき)。または,指定された文字の ASCII 値 (string パラメータを指定したとき)。

説明

ASCII 組込みプロシージャの基本的な説明は,『DEC Text Processing Utility Reference Manual』を参照してください。

ASCII 組込みプロシージャはISO Latin1以外の文字を扱いません。このため以下のような制限事項があります。

ISO Latin1 文字セットに属さない文字に関して,文字と数字の相互変換を行いたいときには,DEC_KANJI組込みプロシージャまたはCODE組込みプロシージャを使用してください。


シグナル・エラー

XTPU$_ARGMISMATCH ERROR パラメータのデータ・タイプが正しくない
XTPU$_NEEDTOASSIGN ERROR ASCII は代入文の右辺でのみ使用できる
XTPU$_NULLSTRING WARNING 長さ 0 の文字列が渡された
XTPU$_TOOFEW ERROR パラメータの数が少なすぎる
XTPU$_TOOMANY ERROR パラメータの数が多すぎる



1. my_character := ASCII (182) 

この代入ステートメントは my_character という変数に ISO Latin1 文字の"¶" を代入します。


2. character := ASCII ("B") 

この代入ステートメントは,"B" という文字のASCII値(66)を character という変数に代入します。


CALL_USER

この組込みプロシージャは,DEC XTPU の内部から他の言語で書かれたプログラムを呼び出します。CALL_USER のパラメータはそのまま外部ルーチンに渡されます。 DEC XTPU はパラメータに対して何の処理も行いません。パラメータ integer は参照によって渡され,string1 はディスクリプタによって渡されます。string2 は外部プログラムから返される値です。

形式

string2 := CALL_USER (integer, string1)


引数

integer

ユーザ作成プログラムに参照によって渡される整数値。

string1

ユーザ作成プログラムにディスクリプタによって渡される文字列。

戻り値

呼び出されたプログラムから返される値。

説明

CALL_USER に返される値 string2 に加えて,外部プログラムは正しく実行されたかどうかを示すステータス・コードを返します。このステータス・コードは,ON_ERROR 文によって処理することができます。偶数のステータス・コードが返されると ON_ERROR 文が実行されます。ERROR 文はプログラムからのステータス値をキーワードとして戻します。

CALL_USER は次のように使用します。

  1. 任意の言語でプログラムを書きます。そのプログラムは XTPU$CALLUSER という名前のグローバル・ルーチンでなければなりません。

  2. プログラムをコンパイルします。

  3. オプション・ファイルを使ってプログラムをリンクし,共有イメージを作ります。

  4. 論理名 XTPU$CALLUSER に作ったルーチンが入ったファイルを定義します。

  5. DEC XTPU を起動します。

  6. 組込みプロシージャ CALL_USER に必要なパラメータを指定して,DEC XTPU セッションから外部プログラムを実行します。プログラムが正しくリンクされて論理名 XTPU$CALLUSER が定義されていると,組込みプロシージャ CALL_USER はパラメータを外部ルーチンに渡します。

CALL_USER のパラメータは呼び出したプログラムへの入力パラメータになります。 DEC XTPU は,パラメータに対して何の処理も行わずに外部プロシージャに渡します。呼び出されるルーチンが必要としていない場合でも,パラメータは必ず2つ渡さなければなりません。値を渡す必要のないときには,以下のような NULL パラメータを渡してください。


  CALL_USER (0, "") 


シグナル・エラー

XTPU$_CALLUSERFAIL WARNING CALL_USER ルーチンの実行が失敗した
XTPU$_ARGMISMATCH ERROR パラメータのデータ・タイプが正しくない
XTPU$_BADUSERDESC ERROR ユーザ・ルーチンがリターン・ディスクリプタに正しくない値を入れた
XTPU$_INVPARAM ERROR パラメータの型が間違っている
XTPU$_NEEDTOASSIGN ERROR CALL_USER は代入文の右辺でのみ使用できる
XTPU$_NOCALLUSER ERROR 実行するルーチンが光からない
XTPU$_TOOFEW ERROR パラメータの数が少なすぎる
XTPU$_TOOMANY ERROR パラメータの数が多すぎる



  ret_value := CALL_USER (6, "ABC") 

この文はユーザが書いたプログラムを呼び出します。DEC XTPU を起動する前に論理名 XTPU$CALLUSER で CALL_USER によって呼び出したいプログラムが入っているファイルを指定します。DEC XTPU は第1パラメータ (6) を参照によって,第2パラメータ ("ABC") をディスクリプタによって渡します。もし数字と文字列を入力値として使っているならば,プログラムは 6 と "ABC" を処理します。プログラムが結果を返すように作られていれば,結果は ret_value に返されます。

以下の例は,組込みプロシージャ CALL_USER の使い方を具体的に示したものです。浮動小数点演算を行うために呼び出されるルーチンは,BASIC で書かれています。

  1. 渡された値の浮動小数点演算を行う BASIC のプログラムを書きます。


    ! Filename:FLOATARITH.BAS 
     
    1     sub XTPU$CALLUSER ( some_integer% , input_string$ , return_string$) 
     
    10    ! don't check some_integer% because this function only does 
          ! floating point arithmetric 
     
    20    ! parse the input string 
          ! find and extract the operation 
          comma_location = pos ( input_string$, ",", 1% )
          if comma_location = 0 then go to all_done end if 
     
          operation$ = seg$( input_string$, 1%, comma_location - 1% ) 
     
          ! find and extract the 1st operand 
          operand1_location = pos ( input_string$, ",", comma_location +1)
          if operand1_location = 0 then go to all_done end if 
     
          operand1$ = seg$( input_string$, comma_location + 1%, & 
                                 operand1_location -1 ) 
     
          ! find and extract the 2nd operand 
          operand2_location = pos ( input_string$, ",", operand1_location + 1)
          if operand2_location = 0 then 
                  operand2_location = len( input_string$) + 1 
          end if 
     
          operand2$ = seg$( input_string$, operand1_location + 1%, & 
                            operand2_location -1 ) 
     
          select operation$ ! do the operation 
          case "+" 
                  result$ = sum$( operand1$, operand2$ ) ! 
          case "-" 
                  result$ = dif$( operand1$, operand2$ ) ! 
          case "*" 
                  result$ = num1$( Val( operand1$ ) * Val( operand2$ )) 
          case "/" 
                  result$ = num1$( Val( operand1$ ) / Val( operand2$ )) 
          case else 
                  result$ = "unkown operation." 
          end select 
     
          return_string$ = result$ 
     
    999   all_done: end sub 
    

  2. プログラムをコンパイルします。


      $ BASIC/LIST floatarigh
    

  3. BASIC のプログラムをリンクするときに使うオプション・ファイルを作ります。


      !+ 
      !   File: FLOATARITH.OPT 
      ! 
      !   Options file to link floatarith BASIC program with VAXTPU 
      !- 
      FLOATARITH.OBJ 
      UNIVERSAL=XTPU$CALLUSER 
    

  4. プログラムをリンクし,共有イメージを作ります。


      $ LINK floatarith/SHARE/OPT/MAP/FULL
    

  5. 論理名 XTPU$CALLUSER に BASIC プログラムの実行イメージを定義します。


      $ DEFINE XTPU$CALLUSER device:[directory]floatarith.EXE
    

  6. DEC XTPU を起動します。

  7. 以下の DEC XTPU プロシージャを書いてコンパイルします。


      PROCEDURE my_call_user 
     
      ! test the built-in procedure call_user 
     
        LOCAL output, 
              input; 
     
        input := READ_LINE ("Call user >");  ! パラメータを入力 
        output := CALL_USER (0, input);      ! プログラムの呼び出し 
        MESSAGE (output); 
      ENDPROCEDURE; 
    

  8. プロシージャ my_call_user を呼び出すと,BASIC ルーチンに渡すパラメータを聞いてきます。パラメータは,オペレータ,値,値の順番で渡されます。例えばプロンプトに,+, 3.33, 4.44 と入力すると結果の7.77 がメッセージ領域に表示されます。


前へ 次へ 目次 索引