前へ | 次へ | 目次 | 索引 |
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
ATTACH
CREATE_PROCESS
SEND
SEND_EOF
SPAWN
ABORT
BREAK
COMPILE
EXECUTE
RETURN
SAVE
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
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 文字のみが使用できます。 |
この組込みプロシージャは,カーソルが文字境界上に存在しないときに行の先頭方向へカーソルを移動して,文字境界にカーソルを合わせます。
[integer :=] ALIGN_CURSOR
なし
ALIGN_CURSORによって移動したカラム数。
XTPU$_TOOMANY ERROR パラメータの数が多すぎる
この組込みプロシージャは,整数を 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以外の文字を扱いません。このため以下のような制限事項があります。
- パラメータ integer1 の値は0から255までのみが有効です。それ以外の値を指定したときには,ASCII の値が0である文字が戻されます。
- string パラメータとしてISO Latin1文字セットに属さない文字を指定したときは,整数値0が戻されます。
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 という変数に代入します。
この組込みプロシージャは,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 は次のように使用します。
- 任意の言語でプログラムを書きます。そのプログラムは XTPU$CALLUSER という名前のグローバル・ルーチンでなければなりません。
- プログラムをコンパイルします。
- オプション・ファイルを使ってプログラムをリンクし,共有イメージを作ります。
- 論理名 XTPU$CALLUSER に作ったルーチンが入ったファイルを定義します。
- DEC XTPU を起動します。
- 組込みプロシージャ 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 で書かれています。
- 渡された値の浮動小数点演算を行う 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
- プログラムをコンパイルします。
$ BASIC/LIST floatarigh
- BASIC のプログラムをリンクするときに使うオプション・ファイルを作ります。
!+ ! File: FLOATARITH.OPT ! ! Options file to link floatarith BASIC program with VAXTPU !- FLOATARITH.OBJ UNIVERSAL=XTPU$CALLUSER
- プログラムをリンクし,共有イメージを作ります。
$ LINK floatarith/SHARE/OPT/MAP/FULL
- 論理名 XTPU$CALLUSER に BASIC プログラムの実行イメージを定義します。
$ DEFINE XTPU$CALLUSER device:[directory]floatarith.EXE
- DEC XTPU を起動します。
- 以下の 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;
- プロシージャ my_call_user を呼び出すと,BASIC ルーチンに渡すパラメータを聞いてきます。パラメータは,オペレータ,値,値の順番で渡されます。例えばプロンプトに,+, 3.33, 4.44 と入力すると結果の7.77 がメッセージ領域に表示されます。
前へ | 次へ | 目次 | 索引 |