第4.2節 − 組込みプロシ ージャのうち日本語特有な機能変更や,DEC XTPUで追加のあったものについ て個別に説明されています。また,DEC XTPUでは制限付きで使用できるプロ シージャも記述されています。
注意
パラメータで使われる文字列のほとんどのものには ASCII以外の文字を使用できますが,ファイル名,プロセス名などを 指定するパラメータ文字列には,ASCII文字のみが使用できます。
[integer :=] ALIGN_CURSOR
| XTPU$_TOOMANY | ERROR | パラメータの数が多すぎる |
{integer2 | string2} := ASCII ({integer1 | keyword | string1})
ASCII組込みプロシージャはISO Latin1以外の文字を扱いません。このため以 下のような制限事項があります。
| 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と
いう変数に代入します。
string2 := CALL_USER (integer, string1)
CALL_USERは次のように使用します。
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で書かれています。
! 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
!+ ! File: FLOATARITH.OPT ! ! Options file to link floatarith BASIC program with VAXTPU !- FLOATARITH.OBJ UNIVERSAL=XTPU$CALLUSER
$ LINK floatarith/SHARE/OPT/MAP/FULL
$ DEFINE XTPU$CALLUSER device:[directory]floatarith.EXE
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;
[{returned_buffer |
returned_range |
returned_string} :=] CHANGE_CASE ({buffer | range |
string},{LOWER | UPPER |
INVERT | LATIN | WIDE_LATIN
| SIZE_INVERT | HIRAGANA
| KATAKANA | KANA_INVERT
| NARROW_KANA | KANA} [,
{IN_PLACE | NOT_IN_PLACE}])
| returned_buffer | 第1パラメータにバッファを指定したときに, 変更されたテキストが含んだバッファが戻されるバッファ型の変数。 変数"returned_buffer"は第1パラメータで指定されたバッファと同じバッファを示します。 |
| returned_range | 第1パラメータにレンジを指定したときに, 変更されたテキストを含んだレンジが戻されるレンジ型の変数。変数 "returned_range"は第1パラメータで指定されたレンジと同じレンジを示します。 |
| returned_string | 第1 パラメータに文字列を指定したときに,変更されたテキストを含む文字列が 戻される文字列型の変数。IN_PLACEを指定したときにも,文字列は戻されま す。 |
表 4-1はCHANGE_CASEの各キーワードとその変換項目です。
| キーワード | ||||||||
|---|---|---|---|---|---|---|---|---|
| 文字列 |
LATIN |
WIDE_ LATIN |
KANA |
HIRA GANA |
KATA KANA |
KANA_ INVERT |
NARROW_ KANA |
SIZE_ INVERT |
| 半角 | none | 全角 | ひら | none | none | none | none | 全角 |
| 全角 | 半角 | none | ひら | none | none | none | none | 半角 |
| ひらがな | none | none | none | none | カタ | カタ | 半カ | none |
| カタカナ | none | none | ひら | ひら | none | ひら | 半カ | none |
| 半角カナ | none | none | ひら | ひら | カタ | none | none | none |
none = 変換されない ひら = ひらがな カタ = カタカナ 半カ = 半角カナ | ||||||||
| XTPU$_BADKEY | WARNING | 間違ったキーワードが指定された |
| XTPU$_NOTMODIFIABLE | WARNING | 変更できないバッファの中のテキストを変更することはできない |
| XTPU$_ARGMISMATCH | ERROR | 引数の型が正しくない |
| XTPU$_CONTROLC | ERROR | CHANGE_CASEの実行中に[Ctrl/C]が押された |
| XTPU$_INVPARAM | ERROR | パラメータのデータ・タイプが間違っている |
| XTPU$_TOOFEW | ERROR | パラメータの数が少なすぎる |
| XTPU$_TOOMANY | ERROR | パラメータの数が多すぎる |
[{returned_buffer |
returned_range} :=] CHANGE_CODE ({buffer | range }, keyword1,
keyword2)
| returned_buffer | 第1パラメータにバッファを指定したときに, 変更されたテキストが含んだバッファが戻されるバッファ型の変数。 変数"returned_buffer"は第1パラメータで指定されたバッファと同じバッファを示します。 |
| returned_range | 第1パラメータにレンジを指定したときに, 変更されたテキストを含んだレンジが戻されるレンジ型の変数。変数 "returned_range"は第1パラメータで指定されたレンジと同じレンジを示します。 |
| XTPU$_BADKEY | WARNING | 間違ったキーワードが指定された |
| XTPU$_NOTMODIFIABLE | WARNING | 変更できないバッファの中のテキストを変更することはできない |
| XTPU$_CONTROLC | ERROR | CHANGE_CODEの実行中に[Ctrl/C]が押された |
| XTPU$_INVPARAM | ERROR | パラメータのデータ・タイプが間違っている |
| XTPU$_TOOFEW | ERROR | パラメータの数が少なすぎる |
| XTPU$_TOOMANY | ERROR | パラメータの数が多すぎる |
{integer3|string2} := CODE ({integer1|keyword|string1} [,
integer2])
文字列パラメータが与えられたときには,このプロシージャは最初の文字に 対応するUCS-2コードを通知します。
| XTPU$_NULISTRING | WARNING | 長さ0の文字列が渡された |
| XTPU$_ARGMISMATCH | ERROR | 引数のデータ・タイプが正しくない |
| XTPU$_NEEDTOASSIGN | ERROR | CODEは代入文の右辺でのみ使用できる |
| XTPU$_TOOFEW | ERROR | 引数の数が少なすぎる |
| XTPU$_TOOMANY | ERROR | 引数の数が多すぎる |
integer := COLUMN_LENGTH ({buffer | range | string})
| XTPU$_ARGMISMATCH | ERROR | COLUMN_LENGTHのパラメータは,バッファ,レンジ, 文字列のいずれかでなければならない |
| XTPU$_CONTROLC | ERROR | COLUMN_LENGTHの実行中に [Ctrl/C]が押された |
| XTPU$_NEEDTOASSIGN | ERROR | COLUMN_LENGTHは代入文の右辺でのみ使用できる |
| XTPU$_TOOFEW | ERROR | パラメータの数が少なすぎる |
| XTPU$_TOOMANY | ERROR | パラメータの数が多すぎる |
[{strint2|integer2} :=] CONVERT_KANA (keyword [,{string1 |
integer1}])
| START_CONVERSION | 新しい変換を開始し,変換文字列を返します |
| FORWARD | 現在の文節の次候補を含む変換文字列を返します |
| REVERSE | 現在の文節の前候補を含む変換文字列を返します |
| NONE | 現時点での変換文字列を返します |
| END_CONVERSION | 漢字辞書を更新します |
| HIRAGANA | 現在の文節をひらがなに変換し,変換文字列を返します |
| KATAKANA | 現在の文節をカタカナ(全角)に変換し,変換文字列を返します |
| NARROW_KANA | 現在の文節を半角カナに変換し,変換文字列を返します |
| ROMAN | 現在の文節を全角英数字に変換し,変換文字列を返します |
| SHRINK | 現在の文節の長さを縮小し,変換文字列を返します |
| EXPAND | 現在の文節の長さを拡大し,変換文字列を返します |
| CLAUSE_OFFSET | 現在の文節の漢字列中の文字オフセットを返します |
| CLAUSE_LENGTH | 現在の文節の文字長を返します |
| PHONETIC_OFFSET | 現在の文節の読み文字列中の文字オフセットを返します |
| PHONETIC_LENGTH | 現在の文節の読みの長さを返します |
| CLAUSE_NEXT | 次の文節に移動します |
| CLAUSE_PREVIOUS | 前の文節に移動します |
| CLAUSE_NUMBER | 現在の文節番号を設定します |
| MAX_CLAUSE_NUMBER | 現在の変換文字列の文節数を返します |
キーワードがCLAUSE_OFFSETの場合,現在の文節の変換文字列中での文字オフ セットの値が整数値で返されます。CLAUSE_LENGTHの場合,現在の文節の変換 後文字列に占める文字長が整数値で返されます。
キーワードがCLAUSE_OFFSET,CLAUSE_LENGTHの場合,変換された文字列を 返します。この文字列は,現在の文節に対応する文字列ではなく,string1 で指定した読み文字列全体に対する変換文字列です。ただし,FORWARD, REVERSE,HIRAGANAなどの変換操作の対象となるのは,文字列全体ではなく, 現在の文節に対応する文字列です。
かなを漢字に変換する場合,いくつかの候補文字(同音異字語)が存在するこ とがあります。このプロシージャは,START_CONVERSIONのキーワードを指定 すると辞書の第1候補を返し,FORWARD,REVERSEを指定するとそれぞれ次候 補,前候補を返します。また,END_CONVERSIONを指定するとその時点での候 補の,次に同じ単語の変換(START_CONVERSION)を開始する時の優先順位が上 がるので,よく使われる単語は再変換の回数が少なくてすむようになります。
変換機能
ASCII(半角) / ROMAN(全角)からひらがな,カタカナ,ローマ字へ,あるいは ひらがな,カタカナから漢字への変換が可能です。
| START_CONVERSION | string1 で指定された読みの変換を開始します。 このとき,string1 に対する文法解析を行い,変換文字列は1またはそれ以上の 文節に分けられます。このとき,現在の文節は1番目の文節となります。 |
| FORWARD | 現在の文節の自立語の次候補を求め,新しい変換文字列を返します。 |
| REVERSE | 現在の文節の自立語の前候補を求め, 新しい変換文字列を返します。 |
| NONE | 現時点での変換文字列をそのまま返します。 |
| END_CONVERSION | 変換文脈を終了し, 変換文字列を確定するとともに,個人辞書の学習を行います。 |
| HIRAGANA | 現在の文節をひらがなに変換し, 新しい変換文字列を返します。ASCII,ROMAN,ひらがなおよび カタカナからなる部分が変換対象となります。 |
| KATAKANA | 現在の文節をカタカナ(全角)に変換し, 新しい変換文字列を返します。1回目に呼ばれた時は文節の自立語のみをカタカナに 変換し,2回目に呼ばれた時は文節全体をカタカナに変換します。STARTの時 string1 にはひらがなで渡されていなければなりません。 |
| NARROW_KANA | 現在の文節を半角カナに変換し, 新しい変換文字列を返します。1回目に呼ばれた時は文節の自立語 のみを半角カナに変換し,2回目に呼ばれた時は文節全体を半角カナに変換します。 STARTの時 string1 にはひらがなで渡されていなければなりません。 |
| ROMAN | 現在の文節を全角英数字に変換し, 新しい変換文字列を返します。ASCIIからなる部分のみが変換対象となります。 |
| SHRINK | 現在の文節の長さを1文字分縮小し,文法解析を再び行って新しい変換文字列を 返します。文法解析の結果,文節の長さが1以上縮小されることもあります。 |
| EXPAND | 現在の文節の長さを拡大し, 文法解析をやりなおして新しい変換文字列を返します。 |
一般的に,文節の縮小/拡大を実行すると,現在の文節以降の文字列が変化 し,それに伴って文節数も変化する可能性が高いので注意してください。
| CLAUSE_OFFSET | 現在の文節が,変換文字列の中 のどの位置から始まるかを文字オフセットとして返します。文節移動を行 った結果として値が変化します。 |
| CLAUSE_ LENGTH | 現在の文節の長さを返します。変換操作を行 った後は値が変化する可能性があります。 |
| PHONETIC_OFFSET | 現在の文節が,読み文字列の中の どの位置から始まるかを文字オフセットとして返します。文節移動を行 った結果として値が変化します。 |
| PHONETIC_ LENGTH | 現在の文節の読み文字列の長さを返します。変 換操作を行った後は値が変化する可能性があります。 |
| CLAUSE_NEXT | 変換対象を次の文節に移動します。 この結果,FORWARD,REVERSEなどの対象となる部分が次の文節に移動しま す。 |
| CLAUSE_PREVIOUS | 変換対 象を前の文節に移動します。現在の文節が先頭の文節である場合,最後の文 節に移動します。この結果,FORWARD,REVERSEなどの対象となる部分が次の 文節に移動します。 |
| CLAUSE_NUMBER | パラメータ integer1 で指定した文節を現在の文節とします。integer1 を指定しなかったときは,現在の文節の文節番号を返します。 |
| MAX_CLAUSE_NUMBER | 現在の変換文字列の文 節数を返します。 |
| XTPU$_ROUND | INFORMATION | FORWARDによる次候補が一巡して最初の単語に戻った |
| XTPU$_NEEDTOASSIGN | ERROR | 返される値を代入する変数が必要である |
| XTPU$_NODIC | WARNING | この編集セッションでは辞書を使用していない |
| XTPU$_BADVALUE | ERROR | 指定した整数値が有効な範囲内にない |
| XTPU$_CNVERR | ERROR | かな漢字変換ルーチンの内部エラーが発生した |
| XTPU$_DICUPDERR | ERROR | 個人辞書の更新時にエラーが発生した |
| XTPU$_INVPARAM | ERROR | 引数の型が正しくない |
| XTPU$_NOCLA | ERROR | 変換対象となる文節が指定されていない,変換を開始していない |
| XTPU$_NODICENT | WARNING | 文節の縮小あるいは拡大ができない。単語が辞書にない(変換不可能) |
| XTPU$_STRTOOLONG | ERROR | 入力文字数が253文字を越えた |
| XTPU$_TOOFEW | ERROR | パラメータの数が少なすぎる |
| XTPU$_TOOMANY | ERROR | パラメータの数が多すぎる |
| XTPU$_TRUNCATE | WARNING | 変換文字列が長すぎるため,切り捨てが行われた |
{integer2|string2} := DEC_KANJI ({integer1|string1})
文字列パラメータが与えられたときには,このプロシージャは最初の文字に 対応するASCIIコードあるいはDEC漢字コードを戻します。
| XTPU$_NULLSTRING | WARNING | 長さ0の文字列が渡された |
| XTPU$_ARGMISMATCH | ERROR | 引数のデータ・タイプが正しくない |
| XTPU$_NEEDTOASSIGN | ERROR | DEC_KANJIは代入文の右辺でのみ使用できる |
| XTPU$_TOOFEW | ERROR | 引数の数が少なすぎる |
| XTPU$_TOOMANY | ERROR | 引数の数が多すぎる |
PROCEDURE user_kanji_list (jis_ku)
LOCAL cnt, col, low_byte;
cnt := jis_ku * 256 + 41120;
max := cut + 94;
COPY_TEXT (FAO('第 !ZL 区', jis_ku));
SPLIT_LINE;
COPY_TEXT ("0 123 4 5 6 7 8 9 A B C D E F");
SPLIT_LINE;
COPY_TEXT (user_hex(cnt) + ' ');
col := 1;
LOOP
EXITIF cnt 〉max;
IF col 〉16 THEN
SPLIT_LINE;
UPDATE (current_window);
col := 1;
COPY_TEXT (user_hex(cnt) + ' ');
ENDIF;
low_byte := cnt\((cnt / 256)*256);
IF low_byte〈〉160 THEN
COPY_TEXT (' '+ DEC_KANJI(cnt));
ELSE
COPY_TEXT (' ');
ENDIF;
cnt := cnt + 1;
col := col + 1;
ENDLOOP;
SPLIT_LINE
ENDPROCEDURE
PROCEDURE user_hex (dec_num)
LOCAL res, rmn, temp;
temp := dec_num;
IF temp =0 THEN
res := '0'
ELSE
res := ''
ENDIF;
LOOP
EXITIF temp 〈= 0;
rmn := temp\((temp / 16) * 16);
temp := temp / 16;
IF (0〈 rmn) AND (rmn〈 16) THEN
res := SUBSTR ('123456789ABCDEF', rmn, 1) + res;
ELSE
res := '0' + res;
ENDIF;
ENDLOOP;
user_hex := res;
ENDPROCEDURE
DELETE_TANGO (string1, string2)
5章"かな漢字変換ライブラリ"のJLB$DEL_TANGOを参照してください。
| XTPU$_NODIC | WARNING | この編集セッションでは個人辞書は使用していない |
| XTPU$_NODICENT | WARNING | 個人辞書に指定された単語が見つからない |
| XTPU$_DICUPDERR | ERROR | 個人辞書の変更時にエラーが発生した |
| XTPU$_INVPARAM | ERROR | 引数のデータ・タイプが正しくない |
| XTPU$_NORETURNVALUE | ERROR | DELETE_TANGOは値を返さない |
| XTPU$_TOOFEW | ERROR | 引数の数が少なすぎる |
| XTPU$_TOOMANY | ERROR | 引数の数が多すぎる |
1. DELETE_TANGO (" じゅうしょ", "東京都秋川市")
このステートメントは,個人辞書に登録されている単語"東京都秋川市
"と,その読み"じゅうしょ"を個人辞書から削除します。
次のサンプル・プロシージャは,選択された単語を個人辞書から削除しま す。読みがなを引数としてとり,引数が空文字であると,その読みをロー マ字で入力するように要求します。単語が選択されていない場合や削除に 失敗した(単語とその読みが正しくない)ときにはエラー・メッセージが表 示されます。このプロシージャで用いているuser_select_positionは,選 択開始位置を示すグローバル変数です。
! This procedure specifies start position of selection
PROCEDURE user_select
ON_ERROR
IF error = XTPU$_ONESELECT THEN
MESSAGE ("すでに選択されています。");
RETURN;
ENDIF;
ENDON_ERROR;
user_select_position := SELECT (reverse);
ENDPOROCEDURE
! This procedure removes selected TANGO and its YOMIGANA
! from personal dictionary.
PROCEDURE user_delete_tango (yomi)
LOCAL yomigana, tango_range, tango;
ON_ERROR
IF (error = XTPU$_NOSELECT) OR (error = XTPU$_SELRANGEZERO) THEN
MESSAGE ("単語が選択されていません。");
ELSE
MESSAGE ("単語を削除できません。");
ENDIF;
user_select_position := 0;
RETURN;
ENDON_ERROR;
tango_range := select_range;
user_select_position := 0; ! This global variable is used to
! specify start position of selection
POSITION (BEGINNING_OF(tango_range));
tango := SUBSTR (tango_range, 1, LENGTH(tango_range));
tango_range := 0;
yomigana := yomi;
IF yomigana = ''THEN
yomigana := READ_LINE (" 読みがなをローマ字で入力してください:");
ENDIF;
CHANGE_CASE (yomigana, KANA);
DELETE_TANGO (yomigana, tango);
ENDPROCEDURE
ENTER_TANGO (string1, string2)
5章"かな漢字変換ライブラリ"のJLB$ENT_TANGOを参照してください。
| XTPU$_NODIC | WARNING | この編集セッションでは個人辞書は使用していない |
| XTPU$_DICUPDERR | ERROR | 個人辞書の変更時にエラーが発生した |
| XTPU$_INVPARAM | ERROR | 引き数のデータ・タイプが正しくない |
| XTPU$_NORETURNVALUE | ERROR | ENTER_TANGOは値を返さない |
| XTPU$_TOOFEW | ERROR | 引数の数が少なすぎる |
| XTPU$_TOOMANY | ERROR | 引数の数が多すぎる |
1. ENTER_TANGO (" じゅうしょ", "東京都秋川市")
このステートメントは,個人辞書に単語"東京都秋川市"と,その読み"じ
ゅうしょ"を新しく登録します。
次のサンプル・プロシージャは,選択された単語を個人辞書に登録しま す。読みがなを引数としてとり,引数が空文字であると,その読みをロー マ字で入力するように要求します。単語が選択されていないときや登録に 失敗した(単語とその読みが正しくない)ときにはエラー・メッセージを表 示します。このプロシージャで用いているuser_select_positionは,選択 開始位置を示すグローバル変数です。
PROCEDURE user_select
! This procedure specifies start position of selection
ON_ERROR
IF error = XTPU$_ONESELECT THEN
MESSAGE ("すでに選択されています。");
RETURN;
ENDIF;
ENDON_ERROR;
user_select_position := SELECT (REVERSE);
ENDPROCEDURE
! This procedure reserves selected TANGO and its YOMIGANA
! in personal dictionary.
PROCEDURE user_enter_tango (yomi)
LOCAL yomigana, tango_range, tango;
ON_ERROR
IF (error = XTPU$_NOSELECT) OR (error = XTPU$_SELRANGEZERO) THEN
MESSAGE ("単語が選択されていません。");
ELSE
MESSAGE ("単語を登録できません。");
ENDIF;
user_select_position := 0;
RETURN;
ENDON_ERROR;
tango_range := select_range;
user_select_position := 0; ! This global variable is used to
! specify start position of selection
POSITION (BEGINNING_OF(tango_range));
tango := SUBSTR (tango_range, 1, LENGTH(tango_range));
tango_range := 0;
yomigana := yomi;
IF yomigana = '' THEN
yomigana := READ_LINE (" 読みがなをローマ字で入力してください:");
ENDIF;
CHANGE_CASE (yomigana, KANA);
ENTER_TANGO (yomigana, tango);
ENDPROCEDURE
FAOには最大127個までのパラメータを指定することができます。
FAOは,指定された文字列をメッセージ・コードセットに指定されたコード セットに変換して,$FAOシステム・サービスを呼び出します。このため, そのときのメッセージ・コードセットで表現できない文字は,FAOを呼び出 した結果,失われます。メッセージ・コードセットについて詳しくは,SET (MESSAGE_CODESET)組込みプロシージャを参照してください。
$FAOシステム・サービスについての詳しい説明は, 『OpenVMS System Services Reference Manual』を参照してください。
string2 := FAO (string1 [,FAO parameters])
文字列の一部として指定することができるFAOディレクティブは下記のとおりです。
| !AS | 文字列を入力されたとおりに挿入する |
| !OL | 倍長語(ロングワード)を8進数に変換する |
| !XL | 倍長語(ロングワード)を16進数に変換する |
| !ZL | 倍長語(ロングワード)を10進数に変換する |
| !UL | 倍長語(ロングワード)を10進数に変換するが, 負の数値に対する調整は実行しない |
| !SL | 倍長語(ロングワード)を10進数に変換し, 負の数値も正しく変換する |
| !/ | 新しい行を挿入する(キャリッジ・リターン/ライン・フィード) |
| !_ | タブを挿入する |
| !^ | フォーム・フィードを挿入する |
| !! | 感嘆符を挿入する |
| !%S | 最後に変換された数値が1でない場合にはSを挿入する |
| !%T | パラメータとして0を入力した場合には, 現在の時刻を挿入する(DEC XTPUは4倍長語を使用しないため, 特定の時刻を渡すことはできない) |
| !%D | パラメータとして0を入力した場合には, 現在の日付と時刻を挿入する(DEC XTPUは4倍長語を使用しないため特定の日付を 渡すことはできない) |
FAOパラメータについてはを参照してください。一般的には,FAOパラメータ は string1 のFAOディレクティブに対応しています。
FAO組込みプロシージャの引数に指定される文字列は,メッセージ・コードセ ットに指定される文字列でなければなりません。メッセージ・コードセット についての詳しい説明は,SET (MESSAGE_CODESET)を参照してください。
| XTPU$_INVFAOPARAM | WARNING | 引数が整数または文字列でない |
| XTPU$_INVPARAM | ERROR | FAOの第1引数は文字列でなければならない |
| XTPU$_NEEDTOASSIGN | ERROR | FAO組込みプロシージャは代入文の右辺でのみ使用できる |
| XTPU$_TOOFEW | ERROR | 引数の数が少なすぎる |
FILL ({buffer|range}, [string [,integer1 [,integer2 [,
integer3]]]])
DEC XTPUではFILL組込みプロシージャが2カラム以上の文字(複数カラム文字) を扱うことができます。複数カラム文字が含まれているときには,1カラム文 字のワード区切り文字に加えて,2つの複数カラム文字の間もワード区切りと して扱われます。すなわち,2つの複数カラム文字の間で行が分割されること があります。
DEC XTPUのFILL組込みプロシージャでは,日本語の禁則処理をすること ができます。行頭禁則文字の指定には,SET (FILL_NOT_BEGIN)を,行末禁 則文字の指定には,SET (FILL_NOT_END)を使います。また,SET (MARGIN_ ALLOWANCE)で,右マージンの右側に置くことのできる行頭禁則文字の文字数 を指定することができます。
Latin文字からなる文章にFILLを実行したときに行末に空白文字がくると, その空白文字は削除されます。また,FILLの結果複数行がつながると,そ の間に空白文字が置かれます。しかし複数カラム文字が含まれているとき には,この機能が不要になることがあります。そのようなときには,SET (FILL_TRIM_SPACE)でFILLを実行するときに,空白文字の削除および追加を行 うかどうかを制御できます。
| XTPU$_BADMARGINS | WARNING | 正しくないFILLのマージンが指定された |
| XTPU$_INVRANGE | WARNING | 正しくないレンジ領域が指定された |
| XTPU$_NOTMODIFIABLE | WARNING | 変更が禁止されているバッファでFILLを実行することはできない |
| XTPU$_ARGMISMATCH | ERROR | パラメータのデータ・タイプが正しくない |
| XTPU$_CONTROLC | ERROR | FILLの実行中に[Ctrl/C]が押された |
| XTPU$_INVPARAM | ERROR | パラメータのデータ・タイプが正しくない |
| XTPU$_NOCACHE | ERROR | 割り当てられたメモリの不足で新しい行が作れない |
| XTPU$_TOOFEW | ERROR | パラメータの数が少なすぎる |
| XTPU$_TOOMANY | ERROR | パラメータの数が多すぎる |
return_value := GET_INFO (parameter1, parameter2)
return_value := GET_INFO (parameter1, parameter2, parameter3)
| parameter1 | parameter2 | 戻り値 | 戻り値の説明 |
|---|---|---|---|
| バッファ変数 | "character_index" | 整数 | 現在の編集位置の文字境界からのカラム・オフセット |
| "character_length" | 整数 | 現在の編集位置の文字のカラム長 | |
| "codeset" | キーワード | バッファのコードセットを示すキーワード | |
| "output_codeset" | キーワード | バッファの出力コードセットを示すキーワード | |
| マーカ変数 | "character_index" | 整数 | マーカの文字境界からのカラム・オフセット |
| "character_length" | 整数 | マーカのある文字のカラム長 |
| parameter1 | parameter2 | 戻り値 | 戻り値の説明 |
|---|---|---|---|
| COMMAND_LINE | "codeset" | キーワード | /CODESET=に指定したコードセット名 |
| "kanji_dictionary" | [1]整数 (1か0) |
/KANJI_DICTIONARYがアクティブであるかどうかを示す値(省略時の値によって, またはDEC XTPUを呼び出すときに/KANJI_DICTIONARYを指定することによって) | |
| "kanji_dictionary_file" | 文字列 | /KANJI_DICTIONARY=に指定した個人辞書ファイル名 | |
| SCREEN | "video_character_set" | [1]整数 (1か0) |
第3パラメータで指定した文字セットを画面に表示できるかどうかを示す値 |
| SYSTEM | "codeset" | キーワード | システム・コードセットを示すキーワード |
| "fill_not_begin" | 文字列 | 行頭禁則文字からなる文字列 | |
| "fill_not_end" | 文字列 | 行末禁則文字からなる文字列 | |
| "fill_trim_space" | [1]整数 (1か0) |
FILL組込みプロシージャで分割された行の最後の空白文字を取り除くかどうかを示す値 | "jis_roman" | [1]整数 (1か0) |
JISローマ字文字セットがASCII文字セットに代わって使われるかどうかを示す値 |
| "kanji_dictionary_file" | 文字列 | DEC XTPUが呼びだされたときに使用された個人辞書ファイル名 | |
| "keyboard_codeset" | キーワード | キーボード・コードセットを示すキーワード | |
| "margin_allowance" | 整数 | 右マージンを越えて置くことができる行頭禁則文字の数 | |
| "message_codeset" | キーワード | メッセージ・コードセットを示すキーワード | |
|
[1] 1という整数値は条件が真であることを示し,0 という整数値は偽であ ることを示す。 | |||
| XTPU$_BADREQUEST | WARNING | 2番目の引数によって指定される要求が最初の引数のデータ・タイプに対して正しくないものである |
| XTPU$_BADKEY | WARNING | 最初の引数として誤ったキーワード値,または認識されないデータ・タイプが渡されていた |
| XTPU$_NOBREAKPOINT | WARNING | 文字列定数が使用できるのはブレーク・ポイントの後のみである |
| XTPU$_NOCRRENTBUF | WARNING | 現在のバッファが定義されていない |
| XTPU$_NOKEYMAP | WARNING | キー・マップが定義されていない |
| XTPU$_NOKEYMAPLIST | WARNING | キー・マップ・リストが定義されていない |
| XTPU$_NONAMES | WARNING | 要求された名前にマッチするものがない |
| XTPU$_INVPARAM | ERROR | 引数のデータ・タイプに誤りがある |
| XTPU$_NEEDTOASSIGN | ERROR | GET_INFO組込みプロシージャは代入文の右辺でのみ使用できる |
| XTPU$_TOOFEW | ERROR | 引数の数が少なすぎる |
| XTPU$_TOOMANY | ERROR | 引数の数が多すぎる |
| XTPU$_UNKEYWORD | ERROR | 引数に誤ったキーワードが使われた |
1. my_dictionary := GET_INFO (SYSTEM, "kanji_dictionary_file");この代入ステートメントは,現在使用中の個人辞書の名前をmy_ dictionaryという変数に代入します。
2. current_codeset := GET_INFO (CURRENT_BUFFER, "codeset");この代入ステートメントは,現在のバッファのコードセットをcurrent_ codesetという変数に代入します。
keyword2 := KEY_NAME ({integer|key-name|string} [,SHIFT_KEY]
[,{FUNCTION|KEYPAD}])
string パラメータに,日本語の全角文字を指定することができます。また, 日本語の全角文字もキー定義に使用することができます。
| XTPU$_BADKEY | WARNING | 指定 できるキーワードはSHIFT_KEY,FUNCTION,KEYPADのみである |
| XTPU$_INCKWDCOM | WARNING | キーワードの組み合せが正しくない |
| XTPU$_MUSTBEONE | WARNING | 文字列は1文字でなければならない |
| XTPU$_NOTDEFINABLE | WARNING | キーに定義されない値が指定された |
| XTPU$_NEEDTOASSIGN | ERROR | KEY_NAMEは代入文の右辺でのみ使用できる |
| XTPU$_ARGMISMATCH | ERROR | パラメータのデータ・タイプが正しくない |
| XTPU$_TOOFEW | ERROR | パラメータの数が少なすぎる |
| XTPU$_TOOMANY | ERROR | パラメータの数が多すぎる |
1. key1 := KEY_NAME (' タ')
この代入ステートメントはキーボードの"タ"というキーに対してkey1とい
うキー名を作成します。
2. key2 := KEY_NAME (' タ', SHIFY_KEY)
この例では,キーの組合せに対してキー名を作成するためにKEY_NAMEが使
用されています。
marker := MARK (keyword)
| BLINK | マーカが点滅することを指定します。 |
| BOLD | マーカがボールド体で表示されることを指定します。 |
| FREE_CURSOR | マーカがフリー・マーカ(文字に対応しないマーカ) であることを指定します。MARK(FREE_CURSOR)が実行されたときのカーソル位置が, 行頭より前,行末より後ろ,タブの中,DEC漢字文字の 第2カラム上,バッファの終端より下でないときにはフリー・マーカに はなりません。フリー・マーカはビデオ属性を持ちません。 |
| NONE | ビデオ属性がマーカに適用されないことを指定します。 |
| REVERSE | マーカが反転表示されることを指定します。 |
| UNDERLINE | マーカにアンダーラインが引かれることを指定します。 |
マーカは文字の境界にセットされます。したがって,たとえば漢字上にカー ソルがあるときに,マーカをセットしようとすると,現在の文字位置が漢字 の2カラム目にあるときでも,マーカはその文字の1カラム目にセットされま す。ただしフリー・マーカは漢字の2カラム目にセットすることができます。
| XTPU$_NOCURRENTBUF | WARNING | マーカはバッファ中にのみ設定できる |
| XTPU$_TOOFEW | ERROR | パラメータの数が少なすぎる |
| XTPU$_TOOMANY | ERROR | パラメータの数が多すぎる |
| XTPU$_NEEDTOASSIGN | ERROR | MARKは代入文の右辺でのみ使用できる |
| XTPU$_INVPARAM | ERROR | パラメータのデータ・タイプが正しくない |
| XTPU$_BADKEY | ERROR | 指定できるキーワードはNONE,BOLD,BLINK, REVERSE,UNDERLINE,FREE_CURSORのいずれかである |
| XTPU$_UNKKEYWORD | ERROR | 正しくないキーワードが指定された |
| XTPU$_INSVIRMEM | FATAL | マーカを作るのに十分なメモリがない |
integer2 := PCS_CLASS (string [,integer1])
| クラス | ビット | 定数 |
|---|---|---|
| ASCII_CHAR | 0 | XTPU$K_ASCII_CHAR |
| DEC_SUPPLEMENTAL | 1 | XTPU$K_DEC_SUPP |
| LATIN1_SUPPLEMENTAL | 2 | XTPU$K_LATIN1_SUPP |
| JIS_ROMAN | 3 | XTPU$K_JIS_ROMAN |
| JIS_KATAKANA | 4 | XTPU$K_JIS_KATAKANA |
| KANJI_1 (JIS X0208) | 8 | XTPU$K_KANJI_1 |
| KANJI_UDC | 16 | XTPU$K_KANJI_UDC |
| XTPU$_INVPARAM | ERROR | 引数の型が正しくない |
| XTPU$_NEEDTOASSIGN | ERROR | PCS_CLASSは代入文の右辺でのみ使用できる |
| XTPU$_TOOFEW | ERROR | パラメータの数が少なすぎる |
| XTPU$_TOOMANY | ERROR | パラメータの数が多すぎる |
string := READ_CHAR
キーボードから入力される文字コードの解釈は,キーボード・コードセット の設定に従います。詳しくはGET_INFO (SYSTEM,"keyboard_codeset")および SET (KEYBOARD_CODESET)を参照してください。
| XTPU$_NEEDTOASSIGN | ERROR | READ_CHARは代入文の右辺でのみ使用できる |
| XTPU$_NOCHARREAD | WARNING | READ_CHARが文字を読まなかった |
| XTPU$_TOOMANY | ERROR | パラメータの数が多すぎる |
keyword := READ_KEY
キーボードから入力される文字コードの解釈は,キーボード・コードセット の設定に従います。詳しくはGET_INFO (SYSTEM,"keyboard_codeset")および SET (KEYBOARD_CODESET)を参照してください。
| XTPU$_CONTROLC | ERROR | READ_KEYの実行中に[Ctrl/C]が押された |
| XTPU$_NEEDTOASSIGN | ERROR | READ_KEYは代入文の右辺でのみ使用できる |
| XTPU$_REQUIRESTERM | ERROR | NODISPLAYモードではREAD_KEYを使用できない |
| XTPU$_TOOMANY | ERROR | パラメータの数が多すぎる |
string2 := READ_LINE [(string1 [,integer])]
キーボードから入力される文字コードの解釈は,キーボード・コードセット の設定に従います。詳しくはGET_INFO (SYSTEM,"keyboard_codeset")および SET (KEYBOARD_CODESET)を参照してください。
| XTPU$_INVPARAM | ERROR | パラメータのデータ・タイプが正しくない |
| XTPU$_NEEDTOASSIGN | ERROR | READ_LINEは代入文の右辺でのみ使用できる |
| XTPU$_TOOMANY | ERROR | パラメータの数が多すぎる |
SELECTから通知されるマーカは選択・レンジの最初の文字位置を示していま す。マーカに対して指定したビデオ属性は選択・レンジに含まれるすべての 文字に適用されます。選択・レンジの作成方法については,SELECT_RANGE を 参照してください。
marker := SELECT (keyword)
| BLINK | マーカが点滅することを指定します |
| BOLD | マーカがボールド体で表示されることを指定します |
| NONE | ビデオ属性がマーカに適用されないことを指定します |
| REVERSE | マーカが反転表示されることを指定します |
| UNDERLINE | マーカにアンダーラインが引かれることを指定します |
SELECTが実行されたときに,現在の編集位置が複数カラム文字の2カラム目以 降にあった場合には,マーカは1カラム目にセットされます(現在の編集位置 は動きません)。
| XTPU$_BADKEY | WARNING | 正しくないキーワードが指定された |
| XTPU$_NOCURRENTBUF | WARNING | 現在のバッファが設定されていない |
| XTPU$_ONESELECT | WARNING | SELECTは現在のバッファですでに実行中である |
| XTPU$_TOOFEW | ERROR | パラメータの数が少なすぎる |
| XTPU$_TOOMANY | ERROR | パラメータの数が多すぎる |
| XTPU$_NEEDTOASSIGN | ERROR | SELECTは代入文の右辺でのみ使用できる |
| XTPU$_INVPARM | ERROR | SELECTのパラメータがキーワードでない |
range := SELECT_RANGE
| XTPU$_NOCURRENTBUF | WARNING | 現在のバッファが設定されていない |
| XTPU$_NOSELECT | WARNING | 現在のバッファでSELECTが実行されていない |
| XTPU$_SELRANGEZERO | WARNING | 選択されたレンジに文字が入っていない |
| XTPU$_NEEDTOASSIGN | ERROR | SELECT_RANGEは代入文の右辺でのみ使用できる |
| XTPU$_TOOMANY | ERROR | パラメータの数が多すぎる |
SET (keyword, parameter [,...])
これらの各キーワードとその後に指定されるパラメータについては,以降の ページで詳しく説明します。キーワードはアルファベット順に説明されています。
SET (CODESET, {SYSTEM | buffer}, keyword)
バッファのコードセットには2種類あり,SET (CODESET)で指定するコードセ ットは,READ_FILE組込みプロシージャでファイルを読み込むときに使われま す。ファイルに書き出すときに使用させれるコードセット(出力コードセッ ト)は,SET (OUTPUT_CODESET)組込みプロシージャで設定します。
SET (KEYBOARD_CODESET),SET (MESSAGE_CODESET),SET (OUTPUT_CODESET)も 参照してください。
| XTPU$_TOOFEW | ERROR | 引数の数が少なすぎる |
| XTPU$_TOOMANY | ERROR | 引数の数が多すぎる |
| XTPU$_INVPARAM | ERROR | 引数の型が正しくない |
| XTPU$_BADKEY | ERROR | 正しくないキーワードが指定された |
| XTPU$_ARGMISMATCH | ERROR | 引数の型が正しくない |
SET (FILL_NOT_BEGIN, string)
FILL,SET (FILL_NOT_END),SET (MARGIN_ALLOWANCE)も参照してください。
| XTPU$_TOOFEW | ERROR | 引数の数が少なすぎる |
| XTPU$_TOOMANY | ERROR | 引数の数が多すぎる |
| XTPU$_INVPARAM | ERROR | 引数の型が正しくない |
SET (FILL_NOT_END, string)
FILL,SET (FILL_NOT_BEGIN),SET (MARGIN_ALLOWANCE)も参照してください。
| XTPU$_TOOFEW | ERROR | 引数の数が少なすぎる |
| XTPU$_TOOMANY | ERROR | 引数の数が多すぎる |
| XTPU$_INVPARAM | ERROR | 引数の型が正しくない |
SET (FILL_TRIM_SPACE, {ON | OFF | 1 | 0})
| XTPU$_TOOFEW | ERROR | 引数の数が少なすぎる |
| XTPU$_TOOMANY | ERROR | 引数の数が多すぎる |
| XTPU$_INVPARAM | ERROR | 引数の型が正しくない |
| XTPU$_BADKEY | WARNING | 正しくないキーワードが指定された |
| XTPU$_ONOROFF | ERROR | 第2パラメータはON,OFF,1,0のいずれかでなければならない |
SET (KEYBOARD_CODESET, keyword)
SET (CODESET),SET (MESSAGE_CODESET),SET (OUTPUT_CODESET)も参照して ください。
| XTPU$_BADKEY | WARNING | 正しくないキーワードが指定された |
| XTPU$_TOOFEW | ERROR | 引数の数が少なすぎる |
| XTPU$_TOOMANY | ERROR | 引数の数が多すぎる |
| XTPU$_INVPARAM | ERROR | 引数の型が正しくない |
SET (MARGIN_ALLOWANCE, integer)
初期値は0で,行頭禁則文字は右マージンを越えて存在できません。この場合 は,行頭禁則文字が行の先頭にこないように,行頭禁則文字でない文字を伴 って次の行に移されるので,右マージンまで埋まらない行ができることがあります。
FILL,SET (FILL_NOT_BEGIN),SET (FILL_NOT_END)も参照してください。
| XTPU$_TOOFEW | ERROR | 引数の数が少なすぎる |
| XTPU$_TOOMANY | ERROR | 引数の数が多すぎる |
| XTPU$_INVPARAM | ERROR | 引数の型が正しくない |
| XTPU$_BADVALUE | ERROR | 負の値が指定された |
SET (MESSAGE_CODESET, keyword)
SET (CODESET),SET (KEYBOARD_CODESET),SET (OUTPUT_CODESET)も参照して ください。
| XTPU$_BADKEY | WARNING | 正しくないキーワードが指定された |
| XTPU$_TOOFEW | ERROR | 引数の数が少なすぎる |
| XTPU$_TOOMANY | ERROR | 引数の数が多すぎる |
| XTPU$_INVPARAM | ERROR | 引数の型が正しくない |
SET (OUTPUT_CODESET, buffer, keyword)
SET (CODESET),SET (KEYBOARD_CODESET),SET (MESSAGE_CODESET)も参照し てください。
| XTPU$_BADKEY | WARNING | 正しくないキーワードが指定された |
| XTPU$_TOOFEW | ERROR | 引数の数が少なすぎる |
| XTPU$_TOOMANY | ERROR | 引数の数が多すぎる |
| XTPU$_INVPARAM | ERROR | 引数の型が正しくない |
SET (VIDEO_CHARACTER_SET, keyword, {ON|OFF|1|0})
しかしDEC XTPUが端末が持っている文字セットの正しい情報を持っていない と文字化けを起こしたり,表示できるはずの文字がダイアモンド・シンボル になってしまいます。このような場合はSET (VIDEO_CHARACTER_SET)組込みプ ロシージャで正しい情報をDEC XTPUに知らせることができます。
| XTPU$_BADKEY | WARNING | 間違ったキーワードが指定された |
| XTPU$_TOOFEW | ERROR | 引数の数が少なすぎる |
| XTPU$_TOOMANY | ERROR | 引数の数が多すぎる |
| XTPU$_INVPARAM | ERROR | 引数の型が正しくない |
SPLIT_LINE
現在の文字位置が2カラム文字の2カラム目にあるときにSPLIT_LINEを実行す ると,1カラム目にあるときと同様に行が分割されます。
| XTPU$_NOCURRENTBUF | WARNING | 現在のバッファが設定されていない |
| XTPU$_NOTMODIFIABLE | WARNING | 変更が禁止されているバッファの内容は変更できない |
| XTPU$_NOCACHE | ERROR | 十分なメモリがない |
| XTPU$_TOOMANY | ERROR | パラメータの数が多すぎる |
string2 := SYMBOL (string1)
| XTPU$_TOOFEW | ERROR | 引数の数が少なすぎる |
| XTPU$_TOOMANY | ERROR | 引数の数が多すぎる |
| XTPU$_INVPARAM | ERROR | 引数の型が正しくない |
| XTPU$_NEEDTOASSIGN | ERROR | SYMBOLは代入文の右辺でのみ使用できる |
PROCEDURE user_symbol
COPY_TEXT (SYMBOL('=/'));
ENDPROCEDURE;
{range | 0} := VERIFY_BUFFER (keyword, {FORWARD | REVERSE})
| XTPU$_BADKEY | WARNING | 間違ったキーワードが渡された |
| XTPU$_TOOFEW | ERROR | 引数の数が少なすぎる |
| XTPU$_TOOMANY | ERROR | 引数の数が多すぎる |
| XTPU$_INVPARAM | ERROR | 引数の型が正しくない |
| XTPU$_NEEDTOASSIGN | ERROR | VERIFY_BUFFER組込みプロシージャは代入文の右辺でのみ使用できる |