Top > old > AYA > ドキュメント > V5 > システム関数
  トップページへ   [ 一覧 | 検索 | 最終更新 ]   [ 差分 | バックアップ | 凍結 ]

AYA Version5 システム関数

AYA Version5 マニュアルも参照してください。

ACOS

アーク・コサインを返します。引数の単位はradianです。

ANY

文字列を与えた場合、それを簡易配列と見なして要素のうちの一つを無作為に選び返します。変数で与えた場合はそのデリミタが考慮されます。 汎用配列を与えた場合はその要素のうちの一つを無作為に選び返します。 整数もしくは実数を与えた場合はそれがそのまま返ります。引数が無いときは空の文字列を返します。 選択した序数はLSOで取得できます。

ARRAYSIZE

[v4:簡易配列部のみ互換性あり、引数2つのバージョンは廃止]

簡易配列、もしくは汎用配列の要素数を返します。

ASEARCH

汎用配列から値をひとつ検索します。第一引数にキー値を、第二引数以降に汎用配列を指定(簡易配列は不可)。 最初に見つかった要素の序数が返ります。見つからなかった場合は-1。

_tea = ("鉄観音", "烏龍", "やぶきた", "ジャスミン")
ipod = ASEARCH("烏龍", _tea)

ipodには 1 が格納されます。

nyaoh = ASEARCH("猫", "キリン", "猿", "ぞう", "猫", "兎")

nyaohには 3 が格納されます。 アルゴリズムは先頭から逐次比較する単純な線形探索ですので、処理に要する時間は配列サイズに比例して増大します。

ASEARCHEX

汎用配列から値を検索します。第一引数にキー値を、第二引数以降に汎用配列を指定(簡易配列は不可)。 発見された要素の序数が列挙された汎用配列が返ります。見つからなかった場合はIARRAY。

_tea = ("鉄観音", "烏龍", "やぶきた", "烏龍", "ジャスミン")
ipod = ASEARCHEX("烏龍", _tea)

ipodには汎用配列 (1,3) が格納されます。

ASIN

アーク・サインを返します。引数の単位はradianです。

ATAN

アーク・タンジェントを返します。引数の単位はradianです。

BINSTRTOI

[v4:BINSTRTONUMを改名]

2進数値文字列を整数へ変換します。引数が異常の場合は0を返します。

CEIL

[v4]

実数の小数点以下を切り上げます。

CHARSETLIB

外部ライブラリとの通信部で使用する文字コードを指定します。以下のうちひとつを選択します。

  • 0
    Shift_JISを指定します。
  • 1
    UTF-8を指定します。
  • 127
    OSのデフォルトの文字コードを指定します。

LOADLIBの直前に指定してください。 LOADLIB単位に異なる文字コードを設定可能です。 デフォルトの文字コードは基礎設定ファイルのcharsetエントリで設定した値です。 戻値はありません。

CHR

[v4:ASCの拡張。ASCII範囲では互換性あり]

UCS-2コードから1文字を返します。

CHRCODE

[v4:IASCの拡張。ASCII範囲では互換性あり]

指定された文字列先頭の1文字についてUCS-2文字コードを返します。

COS

[v4]

コサインを返します。引数の単位はradianです。

CUTSPACE

[v4]

文字列左右端に空白文字およびタブ文字がある場合、それらを取り除きます。

CVINT

[v4:TONUMBERを改名]

引数に整数値の形式を持つ文字列が格納された変数を指定すると、整数に変換して格納しなおします。
戻値はありません。

CVREAL

引数に実数値の形式を持つ文字列が格納された変数を指定すると、実数に変換して格納しなおします。
戻値はありません。

CVSTR

[v4:TOSTRINGを改名]

引数に変数を指定すると、内容を文字列に変換して格納しなおします。
戻値はありません。

ERASE

[v4:バイト単位から文字単位へ変更]

文字列の指定部分を削除します。
第一引数が対象文字列、第二引数が削除を開始する文字位置、第三引数が削除する文字数です。

ERASEVAR

[v4:ERASEVARIABLEを改名]

指定された変数を削除します。引数には変数そのものでなく変数名の文字列を与えてください。
戻値はありません。

EVAL

与えられた文字列を単一の文スクリプトとして実行します。
単一の、という点に注意してください。マルチステートメントは渡せません。したがって、現状ではEVALは数式の展開程度しかできません。if、forなどの制御構造を含むスクリプトを実行したり、新たに関数を定義したりするパフォーマンスは持っていません。

たとえば以下のコードは変数iに1を代入します。

EVAL("i=1")

文にはエスケープシーケンスが存在しません。ダブルクォートを文字列に内包する場合はCHR(34)を使用してください。たとえば変数iに"test"を代入するには以下のように記述します。

EVAL("i=%(CHR(34))test%(CHR(34))")

%の展開を実行時に行いたい場合も、%をCHR(37)としてください。 以下の例は "%(foo)" を実行します。

EVAL("%(CHR(34))%(CHR(37))(foo)%(CHR(34))")

EVAL結果を文字列に変換する TOSTR(EVAL(<i>&quot;formula&quot;</i>)) と埋め込み展開 &quot%(<i>formula</i>)&quot; は同じ結果をもたらします。

FCHARSET

ファイル書込み/読み取りで使用する文字コードを指定します。以下のうちひとつを選択します。

  • 0
    Shift_JISを指定します。
  • 1
    UTF-8を指定します。
    読み取り時にファイル先頭でBOM(Byte Order Mark)が見つかった場合は、自動的に取り除かれます。BOMの書き込みは行いません。
  • 127
    OSのデフォルトの文字コードを指定します。

FOPENの直前に指定してください。

ファイル単位に異なる文字コードを設定可能です。
デフォルトの文字コードは基礎設定ファイルのcharsetエントリで設定した値です。
戻値はありません。

FCLOSE

[v4]

FOPENで開いたファイルを閉じます。
引数にはFOPENで指定したものと同じファイル名を指定します。
戻値はありません。

FCOPY

[v4]

ファイルをコピーします。
第一引数がコピー元ファイル名、第二引数がコピー先のディレクトリ名です。フルパス指定可能。相対パスの場合はDLL loadで渡された位置が基準となります。

戻値0/1=失敗/成功。

FDEL

[v4]

指定したファイルを削除します。
フルパス指定可能。相対パスの場合はaya5.dll loadで渡された位置が基準となります。

戻値0/1=失敗/成功。

FENUM

[v4]

指定位置に存在するファイル名/ディレクトリ名を列挙し、カンマ区切り文字列として返します。
フルパス指定可能。相対パスの場合はDLL loadで渡された位置が基準となります。
ディレクトリ名は先頭に&quot;\&quot;が付されます。

第二引数にデリミタを指定できます。

FLOOR

[v4]

実数の小数点以下を切り捨てます。

FMOVE

[v4]

ファイルを移動します。 第一引数が移動対象ファイル名、第二引数が移動先のディレクトリ名です。フルパス指定可能。~相対パスの場合はDLL loadで渡された位置が基準となります。 戻値0/1=失敗/成功。

FOPEN

[v4]

ファイルをオープンします。
第一引数がファイル名です。フルパス指定可能。相対パスの場合はDLL loadで渡された位置が基準となります。
第二引数は読取り/書き込み指定で、以下のいずれかを指定します。

  • &quot;w&quot; もしくは&quot;write&quot; 書き込みモードで開きます。
  • &quot;r&quot; もしくは&quot;read&quot; 読取りモードで開きます。
  • &quot;a&quot; もしくは&quot;append&quot; 追加モードで開きます。

戻値0/1/2=失敗/成功/既にオープンしている。

FREAD

[v4]

読取りモードで開いているファイルから1行読み取ります。
引数にはFOPENで指定したものと同じファイル名を指定します。
改行文字は取り除かれます。

ファイル終端に達した際は-1を返します。

FRENAME

[v4]

ファイル名を変更します。
第一引数が対象ファイル名、第二引数が新しいファイル名です。フルパス指定可能。相対パスの場合はDLL loadで渡された位置が基準となります。 戻値0/1=失敗/成功。

FSIZE

[v4]

指定されたファイルのサイズ(バイト数)を取得します。
フルパス指定可能。相対パスの場合はDLL loadで渡された位置が基準となります。 失敗した場合-1を返します。

FWRITE

[v4]

書き込みモードで開いているファイルに文字列を書き込みます。
引数にはFOPENで指定したものと同じファイル名を指定します。

戻値はありません。

FWRITE2

[v4]

書き込みモードで開いているファイルに文字列を書き込みます。
引数にはFOPENで指定したものと同じファイル名を指定します。
戻値はありません。 FWRITEは改行コードを自動的に書き込みます。FWRITE2は書き込みません。

GETDELIM

変数に設定されているデリミタ(簡易配列字の区切り文字)を返します。デフォルトのデリミタはカンマです。
第一引数に対象の変数を指定してください。

GETLASTERROR

[v4:戻値の体系変更]

直前に発生したシステム関数エラーのコードを返します。コードは以下の通りです。

コード意味
8引数不足。
9引数の値が不正。
10空の文字列は処理できない。
11結果を入れる変数がない。
12範囲外、もしくは無効な値。
13処理失敗。
14指定された外部ライブラリはロードされていない。
15指定されたファイルはオープンしていない。
16正規表現の文法に誤りがある。もしくは複雑すぎる。
17正規表現の処理中に未定義のエラーが発生した。
18変数を渡すべき引数が変数となっていない。

この関数が返す値はSETLASTERROR関数で設定することもできます。 GETLASTERRORを使用して、エラーが起きそうな場所を確実にチェックするには以下のようにすると良いです。

SETLASTERROR(0)
(システム関数を使用している何らかの処理)
if !GETLASTERROR {
    "エラーが発生しました。"
}

GETMEMINFO

[v4:memory系システム変数相当]

動作環境のメモリ情報を取得します。結果は以下の汎用配列で返されます。

物理メモリの使用率,物理メモリ量,空き物理メモリ量,仮想+物理メモリ量,仮想+物理空きメモリ量

GETSETTING

動作中の文に設定されている情報を返します。 第一引数に取得したい情報を示す番号を指定します。

  • 0
    バージョン番号。&quot;5.6.0.232&quot;といった文字列です。
  • 1
    文字コード。以下の数値で取得されます。
    • 0
      Shift_JIS。
    • 1
      UTF-8。
    • 127
      OSのデフォルトの文字コード。
  • 2
    文がカレントとして認識するディレクトリ絶対パス。

GETSTRBYTES

文字列を格納するために必要なバイト数を返します。
第一引数が対象文字列、第二引数は解釈する文字コードです。以下のうちひとつを選択します。

  • 0
    Shift_JISを指定します。
  • 1
    UTF-8を指定します。
  • 127
    OSのデフォルトの文字コードを指定します。

第二引数は省略可能で、省略時は0(Shift_JIS)となります。

GETTICKCOUNT

[v4:システム変数systemuptickcount相当]

OSが起動してからの経過時間を返します。単位ms。
24日と20時間あまりで0に戻ります。

GETTIME

[v4:時刻取得系システム変数相当]

現在の日時情報を取得します。結果は以下の汎用配列で返されます。

西暦年,月,日,曜日,時,分,秒 曜日は0~6で、0が日曜日です。

GETTYPE

[v4:ISINTEGER、ISREAL相当]

値の型を得ます。

0内部エラー
1整数
2実数
3文字列
4汎用配列

HEXSTRTOI

[v4:HEXSTRTONUMを改名]

16進数値文字列を整数へ変換します。引数が異常の場合は0を返します。

IARRAY

空の汎用配列を返します。

INSERT

[v4:バイト単位から文字単位へ変更]

文字列を挿入します。
第一引数が対象文字列、第二引数が挿入する文字位置、第三引数が挿入する文字列です。

ISFUNC

[v4:ISFUNCTIONから改名]

指定した名前の関数が存在するかを返します。

0/1/2=なし/関数/システム関数

ISINTSTR

与えられた文字列を整数として解釈可能なら1を、それ以外で0を返します。

ISREALSTR

与えられた文字列を実数として解釈可能なら1を、それ以外で0を返します。

ISVAR

指定した名前の変数が存在するかを返します。 0/1/2=なし/グローバル変数/ローカル変数

LETTONAME

[v4]

第一引数の文字列を変数名と見なし、第二引数の値を代入します。| 戻値はありません。

LOADLIB

[v4]

外部ライブラリをロードします。LoadLibraryして、loadを実行します。
外部ライブラリはインタフェース用として文と同じ公開されたload/unload/request関数を持っている必要があります。

戻値0/1/2=失敗/成功/既にロードしている。

LOG

[v4]

自然対数を返します。

LOG10

[v4]

常用対数を返します。

LOGGING

[v4:指定文字列のみ書き込むように変更]

ログファイルへ指定された値を書き込みます。値の型は問いません。簡易配列は各値をカンマで結合して表現されます。
戻値はありません。

LSO

Last Selection Order. 最後に行われた選択の結果を、位置を表す数値で返します。

request
{
    _i = foo
    LSO
}

foo
{
    "earth"
    "moon"
    "sun"
}

_iに&quot;sun&quot;が代入された場合、LSOは2となります。 とにかく択一がされる場合すべてについて動作します。したがって、該当処理が完了した直後に値を取得しないと意味がありません。

request
{
    {
        "This is a "+ANY("pen", "pencil", "eraser")+"."
    }
    res = LSO
}

ANYの選択結果を得ようとしているならこのコードは誤りです。この位置にあるLSOは{ }の選択結果を取得します。したがってresは常に0です。 以下のように修正することで意図どおり動作するようになります。

request
{
    {
        "This is a "+ANY("pen", "pencil", "eraser") + "."
        res = LSO
    }
}

出力確定子がある場合、LSOはすべての取り得る組み合わせに対して動作します。

request
{
    {
        "1"
        "2"
        "3"
        --
        "A"
        "B"
    }
    _i = LSO
}

たとえば上の関数内の{ }部は以下のいずれかを出力します。

"1A" "2A" "3A" "1B" "2B" "3B"

LSOの値の範囲もこれと一致し、0~5を取ります。各値は上の並びと一致します。

MKDIR

[v4]

ディレクトリを作成します。フルパス指定可能。相対パスの場合はDLL loadで渡された位置が基準となります。
一階層づつしか作成できません。

戻値0/1=失敗/成功。

POW

[v4]

第一引数の第二引数乗を返します。

RAND

[v4]

乱数を得ます。第一引数で範囲を指定します。0~(第一引数-1)の範囲で発生します。
引数が無い場合は0~99を発生します。

RE_GETLEN

正規表現系関数の実行結果を取得します。

戻値は汎用配列で、( )にマッチした部分文字列の長さが列挙されています。要素0が正規表現全体にマッチした文字列の長さ、
要素iはi番目の( )にマッチした部分文字列の長さです。

RE_GETPOS

正規表現系関数の実行結果を取得します。

戻値は汎用配列で、( )にマッチした部分文字列の位置が列挙されています。要素0が正規表現全体にマッチした文字列の位置、
要素iはi番目の( )にマッチした部分文字列の位置です。

RE_GETSTR

正規表現系関数の実行結果を取得します。 戻値は汎用配列で、( )にマッチした部分文字列が列挙されています。要素0が正規表現全体にマッチした文字列、
要素iはi番目の( )にマッチした部分文字列です。

RE_GREP

正規表現で文字列を検索し、結果を列挙します。
第一引数が処理対象文字列、第二引数が正規表現です。
見つかった数を返します。

結果の詳細はRE_GETSTR、RE_GETPOS、RE_GETLENで取得します。 使用可能な正規表現文法については以下をご覧下さい。 boost::Regex++ Regular expression syntax(日本語訳)

RE_MATCH

処理対象文字列全体が与えられた正規表現と完全にマッチしたとき1を返します。それ以外では0を返します。
第一引数が処理対象文字列、第二引数が正規表現です。

結果の詳細はRE_GETSTR、RE_GETPOS、RE_GETLENで取得します。

RE_REPLACE

正規表現で文字列を検索し、発見された部分をすべて別の文字列へ置換します。
第一引数が処理対象文字列、第二引数が正規表現、第三引数が置換後文字列です。

結果の詳細はRE_GETSTR、RE_GETPOS、RE_GETLENで取得します。

RE_REPLACEとRE_SPLITに限り、RE_GETSTR、RE_GETPOS、RE_GETLENの意味が他と異なります。
これらにはマッチしたi番目の( )の内容ではなく、対象文字列において正規表現全体にマッチしたi番目の内容を表します。

RE_SEARCH

処理対象文字列内に与えられた正規表現とマッチする箇所があれば1を返します。それ以外では0を返します。
第一引数が処理対象文字列、第二引数が正規表現です。 結果の詳細はRE_GETSTR、RE_GETPOS、RE_GETLENで取得します。

RE_SPLIT

正規表現で文字列を分割します。分割した結果を汎用配列で返します。 結果の詳細はRE_GETSTR、RE_GETPOS、RE_GETLENで取得します。

REPLACE

[v4:バイト単位から文字単位へ変更]

文字列を置換します。 第一引数が対象文字列、第二引数が変換前文字列、第三引数が変換後文字列です。該当するすべてが置換されます。

REQUESTLIB

[v4:戻値追加]

ロード済の外部ライブラリへrequestによって文字列を送出し、結果を受け取ります。 第一引数はロードした時に指定したライブラリファイル名、第二引数は送出するリクエスト文字列です。 戻値は結果文字列です。

RMDIR

[v4]

ディレクトリを削除します。フルパス指定可能。相対パスの場合はDLL loadで渡された位置が基準となります。
空のディレクトリしか削除できません。 返値0/1=失敗/成功。

ROUND

[v4]

実数の小数点以下桁を四捨五入します。

SAVEVAR

変数を保存します。unload時に行なわれる処理と同じものです。

SETDELIM

[v4:SETSEPARATORを改名]

変数の標準のデリミタ(簡易配列字の区切り文字)を設定します。デフォルトのデリミタはカンマです。
第一引数に対象の変数、第二引数にデリミタ文字列を指定してください。
戻値はありません。

この関数への引数の与え方には以下の制限があります。注意してください。
2つの引数は必ず直接与えねばなりません。

_i = (var, "/")
SETDELIM(_i)

上の例は変数varのデリミタを&quot;/&quot;へ変更しようとしていますが、これは正常に動きません。
下のように、第一引数に対象の変数、第二引数にデリミタを直接指定してください。

SETDELIM(var, "/")

SETLASTERROR

GETLASTERROR関数が返す値を整数で設定します。

SIN

[v4]

サインを返します。引数の単位はradianです。

SPLIT

文字列を分割して汎用配列として返します。RE_SPLITで代用可能ですが、正規表現を使わない分だけ高速です。
第一引数が対象文字列、第二引数が分割文字列です。
第三引数に最大分割数を指定できます。

_array = SPLIT("A//B//C//D//E"," //", 3)

_arrayは (&quot;A&quot;, &quot;B&quot;, &quot;C//D//E&quot;) です。 分割数0ですべて分割(省略でも同じ)。1とすると分割しないのでただの文字列代入となります。

SPLITPATH

与えられたパス文字列を要素に分解し、汎用配列として返します。
要素は「ドライブ名」「パス」「主ファイル名」「拡張子」の4つです。

_i = SPLITPATH("C:\umeici\sample\readme.txt")

_i には &quot;C:&quot;,&quot;\umeici\sample\&quot;,&quot;readme&quot;,&quot;.txt&quot; が代入されます。

SQRT

[v4]

平方根を返します。

STRFORM

書式化された文字列を返します。C言語のsprintf相当の機能です。 以下はsprintfとの比較です。結果を戻値で得る点と、書式指定のプレフィックス文字が$である点を除けば、まったく同様に使用できます。

// C言語
int year = 1941;
char *warname = "太平洋";
sprintf(str, "%04d年 %s戦争勃発。", year, warname);
// 文
year = 1941
warname = "太平洋"
str = STRFORM("$04d年 $s戦争勃発。", year, warname)

書式指定一つあたりで展開できる文字列の長さは1024文字までに制限されています。

STRLEN

[v4:バイト単位から文字単位へ変更、引数2つのバージョンは廃止]

文字列の文字数を返します。

STRSTR

[v4:バイト単位から文字単位へ変更。引数4つのバージョンは廃止]

文字列内の部分文字列を検索し、見つかった文字位置を返します。
第一引数は対象文字列、第二引数は検索する部分文字列、第三引数は検索を開始する文字位置です。

SUBSTR

[v4:バイト単位から文字単位へ変更]

文字列から部分文字列を抜き出します。
第一引数は対象文字列、第二引数は取得を開始する文字位置、第三引数は取得する文字数です。

TAN

[v4]

タンジェントを返します。引数の単位はradianです。

TOBINSTR

[v4]

整数を2進数値文字列へ変換します。引数が異常の場合は空の文字列を返します。

TOHEXSTR

[v4]

整数を16進数値文字列へ変換します。引数が異常の場合は空の文字列を返します。

TOINT

[v4:TONUMBER2を改名]

文字列を整数へ変換します。引数が異常の場合は0を返します。

TOLOWER

[v4]

文字列中に含まれる英大文字をすべて小文字へ変換します。

TOREAL

文字列を実数へ変換します。引数が異常の場合は0.0を返します。

TOSTR

[v4:TOSTRING2を改名]

整数、実数、汎用配列を文字列へ変換します。
汎用配列が与えられた場合は、カンマで結合した文字列を返します。つまり、汎用配列をカンマ区切りの簡易配列へ変換します。

TOUPPER

[v4]

文字列中に含まれる英小文字をすべて大文字へ変換します。

UNLOADLIB

[v4]

LOADLIBでロードした外部ライブラリのunloadを実行した後、FreeLibraryします。
引数はロードした時に指定したライブラリファイル名です。 戻値はありません。