型取得/変換†

24 個の関数。

GETTYPE†

書式†

GETTYPE( var )

引数†

Parameter Description
var 型を調べる値・変数・式

戻り値†

解説†

指定した値のデータ型を取得する。

「要素数1の汎用配列は、その最初の(唯一の)要素の型を返します」という後方互換性のための動作がある。要素数1の汎用配列の型を正確に調べたい場合は GETTYPEEX を使用することが推奨される。

この動作は、唯一の要素が配列やハッシュ(入れ子)のときも同じで、それぞれ 4 と 5 を返す。

GETTYPE(PARSEJSON('[[1,2]]'))     // 4
GETTYPE(PARSEJSON('[{"a":1}]'))   // 5

互換性†

関連項目†


GETTYPEEX†

書式†

GETTYPEEX( var )

引数†

Parameter Description
var 型を調べる変数の名前(文字列として渡す)

戻り値†

解説†

指定した変数のデータ型を取得する。GETTYPE との主な違いは、引数に変数そのものではなく変数名を文字列として渡す点にある。

要素数1の汎用配列についても正確に型を返すため、GETTYPE では後方互換動作により正しく判定できないケースでこちらを使用する。

互換性†

関連項目†


TOINT†

書式†

TOINT( string )

引数†

Parameter Description
string 変換したい文字列または実数

戻り値†

解説†

文字列・実数を整数に変換する。小数点以下は単純に切り捨てられる。

Tc542-4以前のバージョンではFLOOR()相当の動作(バグ)があったが、Tc542-4以降では他言語と同様に小数点以下を単純に切り捨てる動作となった。

使用例†

_i = '100'       // 文字列を代入
_j = _i + 1
// "1001" (文字列の連結になってしまう)

_i = '100'
_j = TOINT( _i ) + 1
// 101 (整数に変換してから加算)

_i = 1.1
_j = TOINT( _i )
// 1

_i = -1.1
_j = TOINT( _i )
// -1 (Tc542-4以降の動作)

互換性†

関連項目†


TOREAL†

書式†

TOREAL( string )

引数†

Parameter Description
string 変換したい文字列または整数

戻り値†

解説†

文字列または整数を実数(浮動小数点数)に変換する。

使用例†

_s = '1.00005'
_d = TOREAL( _s )
_d // 1.000050 (実数)

_i = 1
_d = TOREAL( _i )
_d // 1.000000 (実数)

互換性†

関連項目†


TOSTR†

書式†

TOSTR( var )

引数†

Parameter Description
var 変換する整数、実数、または汎用配列

戻り値†

解説†

整数・実数・汎用配列を文字列に変換する。汎用配列を渡した場合は、要素をカンマで結合した文字列を返す。

使用例†

_i = 100
_result = TOSTR( _i )
// "100"

_array = ('さくら','ねここ','まゆら')
_result = TOSTR( _array )
// "さくら,ねここ,まゆら"

互換性†

関連項目†


TOAUTO†

書式†

TOAUTO( string )

引数†

Parameter Description
string 変換したい文字列

戻り値†

解説†

文字列に対して自動的な型変換を試みる関数。整数への変換を優先的に試み、失敗した場合に実数への変換を試みる。どちらの変換も成功しない場合は、元の文字列をそのまま返す。

汎用配列を引数として渡した場合の動作は未定義。

互換性†

関連項目†


TOAUTOEX†

書式†

TOAUTOEX( string )

引数†

Parameter Description
string 変換したい文字列

戻り値†

解説†

文字列に対して自動的な型変換を試みる関数。TOAUTOとの違いは、「さらに文字列変換した結果が元の文字列と一致する場合のみ」変換を行う点。

整数への変換を優先的に試み、失敗した場合に実数への変換を試みる。どちらの変換も成功しない場合は、元の文字列をそのまま返す。

汎用配列を引数として渡した場合の動作は未定義。

互換性†

関連項目†


ISFUNC†

書式†

ISFUNC( string )

引数†

Parameter Description
string 存在を確認する関数名(文字列)

戻り値†

解説†

指定した名前の関数がシステム内に存在するかどうかを確認する。ユーザー定義関数かシステム関数かも区別して返す。

使用例†

// "DebugMenu" 関数が存在する場合のみデバッグメニューを追加
if ( ISFUNC("DebugMenu") )
{
    AYATEMPLATE.MenuItem( "【デバッグメニュー】","DebugMenu")
}

デバッグ用のメニューなどを配布ファイルに含めたくない場合に有用。

On_enable_debug イベントと組み合わせて、開発用パレットの「SHIORIデバッグモード有効」時のみ項目を追加する場合は、次のようにする。

if ( ISFUNC("DebugMenu") && debug_mode )
{
    AYATEMPLATE.MenuItem( "【デバッグメニュー】","DebugMenu")
}

On_enable_debug
{
    debug_mode = reference[0]
}

互換性†

関連項目†


ISVAR†

書式†

ISVAR(string)

引数†

Parameter Description
string 存在を確認する変数名の文字列

戻り値†

解説†

指定した名前の変数が存在するかどうかを確認します。

互換性†

関連項目†


CVINT†

書式†

CVINT(var)

引数†

Parameter Description
var 整数型に変換する変数

戻り値†

戻り値なし(変数をその場で変換する)

整数形式の文字列を保持する変数を実際の整数型に変換する。小数部分は切り捨てられる。

使用例†

_val = '583'
CVINT(_val)
GETTYPE(_val) // 1 を返す(整数型)

_val = '583.12'
CVINT(_val)
GETTYPE(_val) // 1 を返す(整数型)
_val // 583 を返す(小数部分は除去される)

互換性†

関連項目†


CVSTR†

書式†

CVSTR(var)

引数†

Parameter Description
var 変換対象の変数。文字列型に変換して同じ変数に格納しなおす。

戻り値†

返り値はありません(VOID)。

解説†

引数に変数を指定すると、その値を文字列に変換して格納しなおす。

使用例†

_val = 3.1415  // 実数として格納
CVSTR(_val)
GETTYPE(_val)  // "3" を出力(文字列型になった)
_val           // "3.141500" を出力(文字列表現に変換された)

互換性†

関連項目†


CVREAL†

書式†

CVREAL(var)

引数†

Parameter Description
var 変換対象の変数。文字列型の実数形式を実数型に変換して格納しなおす。非数値文字列の場合は実数型に変換し "0.000000" を格納する。

戻り値†

返り値はありません(VOID)。

解説†

実数値の形式を持つ文字列が格納された変数を指定すると、実数に変換して格納しなおす。それ以外の文字列が格納された変数を指定したときは、変数の型を実数にしたうえで 0.000000 を格納する。

使用例†

_val = '3.1415' // 文字列として代入
CVREAL(_val)
GETTYPE(_val) // "2" を出力(実数型になった)
_val          // "3.141500" を出力(実数型になった)

互換性†

関連項目†


CVAUTO†

書式†

CVAUTO(var [, strict_convert])

引数†

Parameter Description
var 変換対象の変数
strict_convert (省略可、デフォルト: 0)0以外を渡すと、変換結果をさらに文字列変換した結果が、元の文字列と一致する場合のみ変換する(CVAUTOEX と同じ動作。Tc571-2以降)

戻り値†

戻り値なし(変数をその場で変換する)

引数に文字列の形式を持つ文字列が格納された変数を指定すると、整数として解釈できるなら整数に、実数として解釈できるなら実数に変換して格納しなおす。どちらにも解釈できない場合は、文字列のまま変換しない。汎用配列変数を渡した場合の動作は未定義。

使用例†

_val = '3.14159'
CVAUTO(_val)
GETTYPE(_val) // 2 を返す(実数型であることを示す)

互換性†

関連項目†


CVAUTOEX†

書式†

CVAUTOEX(var)

引数†

Parameter Description
var 変換対象の変数

戻り値†

戻り値なし(変数をその場で変換する)

文字列形式のテキストを、整数または実数として解釈できる場合に変換し、それ以外は文字列のまま残す。CVAUTOとの違いは、「文字列に変換した結果が元の文字列と一致する場合のみ変換する」点。整数変換を先に試み、次に実数変換を試みる。汎用配列変数を渡した場合の動作は未定義。

使用例†

// 文字列のまま残る例
_val = '3.14'
CVAUTOEX(_val)
GETTYPE(_val)  // "3" を出力(文字列型)

// 実数に変換される例
_val = '3.140000'
CVAUTOEX(_val)
GETTYPE(_val)  // "2" を出力(実数型)

互換性†

関連項目†


PARSEJSON†

書式†

PARSEJSON( str )

引数†

Parameter Description
str JSON の文字列

戻り値†

解説†

JSON の文字列を解析し、ハッシュ・配列などの値にして返す。値の対応やコメントの扱いは FREADJSON と同じ。

SAORI や外部から受け取った JSON の文字列を扱うときに使う。ファイルから読むときは FREADJSON を使う。

エラー†
状況 警告 GETLASTERROR
引数がない W0008 8
str が文字列でない W0009 9
JSON として解析できない W0026 26

使用例†

_j = PARSEJSON('{"result": [{"id": 1, "text": "こんにちは"}]}')
_j["result"][0]["text"]     // こんにちは
_j["result"][0]["id"]       // 1

PARSEJSON('[1, 2.5, "a"]')  // 整数 1、実数 2.5、文字列 a の汎用配列
PARSEJSON('{')              // 空(警告 W0026)

互換性†

関連項目†


PARSEXML†

書式†

PARSEXML( str )

引数†

Parameter Description
str XML の文字列

戻り値†

解説†

XML の文字列を解析し、ルート要素をハッシュにして返す。要素の形は FREADXML と同じ。

文字列はすでに YAYA の文字列になっているので、XML 宣言の encoding は無視する。ファイルから読むときは FREADXML を使う。

エラー†
状況 警告 GETLASTERROR
引数がない W0008 8
str が文字列でない W0009 9
XML として解析できない W0026(エラーの内容と行番号も出力する) 26

使用例†

_x = PARSEXML('<res code="0"><msg>OK</msg></res>')
_x["attr"]["code"]              // 0(文字列)
_x["children"][0]["text"]       // OK

PARSEXML('<a><b></a>')          // 空(警告 W0026)

互換性†

関連項目†


PARSEHTML†

書式†

PARSEHTML( str )

引数†

Parameter Description
str HTML の文字列

戻り値†

解説†

HTML の文字列を解析し、<html> 要素をハッシュにして返す。要素の形と解析の規則は FREADHTML と同じ。

文字列はすでに YAYA の文字列になっているので、<meta charset> は無視する。ファイルから読むときは FREADHTML を使う。

HTML 全体ではなく一部分(<p>a</p> など)を渡しても、<html> <head> <body> が補われた木になる。部分は <body> の children から取り出す。

エラー†
状況 警告 GETLASTERROR
引数がない W0008 8
str が文字列でない W0009 9
入れ子が深すぎる(128段を超える) W0026(原因も出力する) 26

使用例†

_h = PARSEHTML('<p class=a>x<b>y</b>z<br><img src="a.png" alt="&amp;"></p>')
_h["name"]                                   // html
_body = _h["children"][1]
_p = _body["children"][0]
_p["attr"]["class"]                          // a
_p["text"]                                   // xz
_p["children"][0]["text"]                    // y
_p["children"][2]["attr"]["alt"]             // &

互換性†

関連項目†


PARSEHEADER†

書式†

PARSEHEADER( str [, conv ] )

引数†

Parameter Description
str HTTP や SHIORI のようなヘッダ形式の文字列
conv 省略可。0 以外なら値を TOAUTOEX と同じ規則で整数・実数に変換する。省略時は 0(変換しない)

戻り値†

キー 内容
start 開始行(GET SHIORI/3.0 や HTTP/1.1 200 OK など)。開始行がなければ空文字列
header ヘッダのキー→値のハッシュ。同じキーが複数あるときは後に出たものが残る
key ヘッダのキーの配列(出現順、重複も含む)
value ヘッダの値の配列(出現順)。conv が 0 以外なら変換後の値
rawvalue 変換前の値(文字列)の配列(出現順)
body 空行より後ろの文字列。空行がなければ空文字列

解説†

HTTP や SHIORI・SAORI・SSTP のリクエスト/レスポンスのような「開始行 + キー: 値 の行 + 空行 + 本文」の形の文字列を解析し、ハッシュと配列にまとめて返す。1 行ずつ STRSTR や SUBSTR で切り出すよりも速い。

header のハッシュはキー順に並ぶので、出現順が必要なときは key / value / rawvalue を使う。

エラー†
状況 警告 GETLASTERROR
引数がない W0008 8
str が文字列でない W0009 9

使用例†

request
{
    _r = PARSEHEADER(_argv[0], 1)
    // _argv[0] が
    //   GET SHIORI/3.0
    //   Charset: UTF-8
    //   ID: OnBoot
    //   Reference0: 12
    //   Reference1: 007
    // のとき

    _r["start"]                 // GET SHIORI/3.0
    _r["header"]["ID"]          // OnBoot
    _r["header"]["Reference0"]  // 12(整数)
    _r["header"]["Reference1"]  // 007(文字列)
    _r["key"]                   // Charset,ID,Reference0,Reference1
    _r["rawvalue"][2]           // 12(文字列)
}
_nl = CHR(13) + CHR(10)
_r = PARSEHEADER('HTTP/1.1 200 OK' + _nl + 'Content-Type: text/plain' + _nl + _nl + 'hello')
_r["start"]                     // HTTP/1.1 200 OK
_r["header"]["Content-Type"]    // text/plain
_r["body"]                      // hello

500 系と共用する辞書では、#ifdef __AYA_SYSTEM_SYSFUNC_PARSEHEADER__ で使えるかどうかを判定して書き分けられる(プリプロセス)。

互換性†

関連項目†


DUMPJSON†

書式†

DUMPJSON( value [, pretty] )

引数†

Parameter Description
value JSON にする値。ハッシュや配列(入れ子を含む)も1つの引数として渡せる
pretty 1 なら改行とインデントを入れて整形する。省略時は 0(1行にする)

戻り値†

解説†

値を JSON の文字列にして返す。PARSEJSON の逆の変換になる。

値の対応†
YAYA JSON
ハッシュ オブジェクト。キーは文字列にする(1 は "1")。並びはハッシュのキーの順
汎用配列 配列
整数 数値。64bit の整数も誤差なく書く
実数 数値。小数点か指数を必ず付ける(1.0、0.1、1e+300)
文字列 文字列
空(VOID) null

整形するときは、4つの空白でインデントし、改行は LF にする。空の配列・ハッシュは [] / {} と1つにまとめる。

PARSEJSON で読み戻すと元の値に戻る。ただし、値が整数の実数(1.0)は整数になる。

エラー†
状況 警告 GETLASTERROR
引数がない W0008 8

使用例†

_h = IHASH()
_h["name"] = "さくら"
_h["tags"] = ("ghost", "shell")
_h["height"] = 158.5

DUMPJSON(_h)
// {"height":158.5,"name":"さくら","tags":["ghost","shell"]}

DUMPJSON(_h, 1)
// {
//     "height": 158.5,
//     "name": "さくら",
//     "tags": [
//         "ghost",
//         "shell"
//     ]
// }

DUMPJSON(("a", 1))          // ["a",1]
DUMPJSON(未定義の変数)       // null

互換性†

関連項目†


DUMPXML†

書式†

DUMPXML( element [, pretty] )

引数†

Parameter Description
element ルート要素を表すハッシュ(FREADXML が返すのと同じ形)
pretty 1 なら改行とインデントを入れて整形する。省略時は 0(1行にする)

戻り値†

解説†

要素のハッシュを XML の文字列にして返す。PARSEXML の逆の変換になる。

要素のハッシュのキーは次のとおり。name 以外は無くてもよい(空でもよい)。

キー 値
name タグ名(必須)。文字列
attr 属性名 → 属性値 のハッシュ。値は整数・実数・文字列(文字列にして書く)
children 子要素のハッシュの汎用配列
text 要素のテキスト。整数・実数・文字列

整形するときは、4つの空白でインデントし、改行は LF にする。テキストを持つ要素の中でも、2つ目以降の子要素の前には改行とインデントが入る。FREADXML / PARSEXML は要素の間の空白だけのテキストを無視するので、読み戻したときの text には影響しない。

エラー†
状況 警告 GETLASTERROR
引数がない W0008 8
要素がハッシュでない、name が無い・不正、attr がハッシュでない、属性名が不正、属性値や text が配列・ハッシュ、children が配列でない、子要素がハッシュでない W0027(どこが不正かも出力する) 27

使用例†

_item = IHASH("name", "item", "text", "りんご")
_item["attr"] = IHASH("id", 1)
_shop = IHASH("name", "shop")
_shop["children"] = IARRAY()
_shop["children"] ,= _item

DUMPXML(_shop)
// <?xml version="1.0" encoding="UTF-8"?><shop><item id="1">りんご</item></shop>

DUMPXML(_shop, 1)
// <?xml version="1.0" encoding="UTF-8"?>
// <shop>
//     <item id="1">りんご</item>
// </shop>

DUMPXML(PARSEXML('<a x="1"><b/></a>'))
// <?xml version="1.0" encoding="UTF-8"?><a x="1"><b/></a>

互換性†

関連項目†


PARSEYAML†

書式†

PARSEYAML( str )

引数†

Parameter Description
str YAML の文字列

戻り値†

解説†

YAML の文字列を解析し、ハッシュ・配列などの値にして返す。対応している書き方と値の対応は FREADYAML と同じ。

ファイルから読むときは FREADYAML を使う。

エラー†
状況 警告 GETLASTERROR
引数がない W0008 8
str が文字列でない W0009 9
YAML として解析できない、対応していない書き方 W0026(行番号と原因も出力する) 26

使用例†

_y = PARSEYAML("{name: さくら, tags: [ghost, shell]}")
_y["name"]                  // さくら
_y["tags"][1]               // shell

PARSEYAML("- 1" + CHR(10) + "- 0x10" + CHR(10) + "- yes" + CHR(10) + "- '007'")
// 整数 1、整数 16、文字列 yes、文字列 007 の汎用配列

PARSEYAML("a: [1")          // 空(警告 W0026)

互換性†

関連項目†


PARSETOML†

書式†

PARSETOML( str )

引数†

Parameter Description
str TOML の文字列

戻り値†

解説†

TOML の文字列を解析し、ハッシュにして返す。値の対応は FREADTOML と同じ。

ファイルから読むときは FREADTOML を使う。

エラー†
状況 警告 GETLASTERROR
引数がない W0008 8
str が文字列でない W0009 9
TOML として解析できない W0026(行番号と原因も出力する) 26

使用例†

_t = PARSETOML("a = 1" + CHR(10) + "b.c = 'x'")
_t["a"]                     // 1
_t["b"]["c"]                // x

PARSETOML("a = 1" + CHR(10) + "a = 2")
// 空(警告 W0026 : line 2 : duplicate key : a)

互換性†

関連項目†


DUMPYAML†

書式†

DUMPYAML( value [, pretty] )

引数†

Parameter Description
value YAML にする値。ハッシュや配列(入れ子を含む)も1つの引数として渡せる
pretty 1 ならブロック形式(字下げで構造を表す、人が読み書きしやすい形)、0 ならフロー形式の1行にする。省略時は 1

戻り値†

解説†

値を YAML の文字列にして返す。PARSEYAML の逆の変換になる。

DUMPJSON / DUMPXML と違い、pretty の省略時は整形する(1)。

値の対応†
YAYA YAML
ハッシュ マッピング。キーは文字列にする(1 は "1")。並びはハッシュのキーの順
汎用配列 シーケンス
整数 整数。64bit の整数も誤差なく書く
実数 実数。小数点を必ず付ける(1.0、0.1、1.0e+300)。NaN は .nan、無限大は .inf / -.inf
文字列 文字列(下記)
空(VOID) null

文字列は、そのまま書いても読み戻したときに同じ文字列になるものはクォートせずに書き、そうでないものは "..." で囲む。次のようなものは "..." になる。

"..." の中では " \ と制御文字だけをエスケープする(改行は \n)。日本語などの非 ASCII の文字はそのまま書く。

整形の形(pretty が 1)†

pretty が 0 のときはフロー形式の1行({a: 1, b: [x, y]})にし、最後に改行を付けない。

PARSEYAML で読み戻すと元の値に戻る(どちらの形でも)。

エラー†
状況 警告 GETLASTERROR
引数がない W0008 8

使用例†

_h = IHASH()
_h["name"] = "さくら"
_h["tags"] = ("ghost", "shell")
_h["height"] = 158.5

DUMPYAML(_h)
// height: 158.5
// name: さくら
// tags:
//   - ghost
//   - shell

DUMPYAML(_h, 0)
// {height: 158.5, name: さくら, tags: [ghost, shell]}

DUMPYAML(("a", 1))          // "- a" + 改行 + "- 1" + 改行
DUMPYAML("123", 0)          // "123"(数値と区別するためクォートされる)
DUMPYAML(未定義の変数, 0)    // null

互換性†

関連項目†


DUMPTOML†

書式†

DUMPTOML( value [, pretty] )

引数†

Parameter Description
value TOML にするハッシュ(入れ子を含む)。TOML の最上位は表なので、ハッシュ以外は渡せない
pretty 1 なら [表] の見出しを使って整形する、0 なら最上位のキー1つにつき1行にする。省略時は 1

戻り値†

解説†

ハッシュを TOML の文字列にして返す。PARSETOML の逆の変換になる。

DUMPJSON / DUMPXML と違い、pretty の省略時は整形する(1)。

値の対応†
YAYA TOML
ハッシュ 表。キーは英数字・_・- だけならそのまま、それ以外は "..." で書く。並びはハッシュのキーの順
ハッシュだけの汎用配列 表の配列(pretty が 1 のとき [[名前]])
汎用配列 配列
整数 整数。64bit の整数も誤差なく書く
実数 実数。小数点か指数を必ず付ける(1.0、0.1、1e+300)。NaN は nan、無限大は inf / -inf
文字列 文字列(下記)
空(VOID) 書かない(TOML には null が無いため、そのキーごと省く)

文字列は、ふつうは "..." で書き、" \ と制御文字をエスケープする。\ を含み ' と改行を含まないもの(Windows のパスなど)は、読みやすいようエスケープなしの '...' で書く。

整形の形(pretty が 1)†

pretty が 0 のときは、最上位のキー1つにつき1行とし、下の階層のハッシュはインライン表({ k = v })、表の配列はインライン表の配列にする。

PARSETOML で読み戻すと元の値に戻る(空の値を省いた分を除く)。

エラー†
状況 警告 GETLASTERROR
引数がない W0008 8
value がハッシュでない、配列の要素に空(VOID)がある W0027(原因も出力する) 27

使用例†

_n = IHASH()
_n["title"] = "設定"
_n["ghost"] = IHASH("name", "さくら", "age", 17)
_n["ghost"]["shell"] = IHASH("name", "master")

DUMPTOML(_n)
// title = "設定"
//
// [ghost]
// age = 17
// name = "さくら"
//
// [ghost.shell]
// name = "master"

DUMPTOML(_n, 0)
// ghost = { age = 17, name = "さくら", shell = { name = "master" } }
// title = "設定"

DUMPTOML(("a", 1))          // 空文字列(警告 W0027)

互換性†

関連項目†