デバッグ†

16 個の関数。

LOGGING†

書式†

LOGGING(var)

引数†

Parameter Description
var ログに書き込む値。任意の型を指定可能

戻り値†

VOID(戻り値なし)

解説†

指定した値をログファイルに書き込み、同時にデバッグツール「玉」にも表示します。任意のデータ型を受け付けます。

簡易配列は各値をカンマで結合した形式で出力されます。

出力形式†

引数が複数あるときや配列を渡したときは、各値をカンマで区切って1行に書き出します。文字列は " で囲みます。

LOGGING('a', 1, 2.5)   // "a",1,2.500000

値が配列やハッシュを含むとき(Tc602-8以降)は、配列を ( )、ハッシュを { } で囲み、ハッシュの要素は キー=値 の形で書き出します。入れ子の内側も同じ規則で書き出すので、どこまでが内側なのかがわかります。

_h = PARSEJSON('{"l":[1,2],"m":{"x":"a"}}')
LOGGING(_h)                           // {"l"=(1,2),"m"={"x"="a"}}
LOGGING(PARSEJSON('[[1,[2,"s"]],3]'))  // (1,(2,"s")),3

いちばん外側の配列は引数として展開されるので、括弧で囲まれません。

互換性†

関連項目†


GETLASTERROR†

書式†

GETLASTERROR
GETLASTERROR()

引数†

なし

戻り値†

直近のシステム関数呼び出しのエラーコード(整数)。エラーがない場合は0。

解説†

直近に実行したシステム関数呼び出しのエラーコードを返す関数。

この関数が返す値は SETLASTERROR で設定することもできる。エラーが起きそうな場所を確実にチェックするには、先に SETLASTERROR(0) で値を 0 に戻してから、システム関数を使い、その後で GETLASTERROR を調べる。

エラーコード†

コード 意味
0 エラーなし
8 引数が不足している
9 引数の値が不正
10 空文字列は処理できない
11 結果を格納できる変数がない
12 範囲外または不正な値
13 処理が失敗した
14 外部ライブラリが読み込まれていない
15 ファイルが開かれていない
16 正規表現の構文エラーまたは複雑すぎる
17 正規表現処理中の未定義エラー
18 変数が期待される箇所に非変数の引数が渡された

使用例†

SETLASTERROR(0)
// システム関数を呼び出す
if !GETLASTERROR {
    "エラーが発生しました。"
}

互換性†

関連項目†


SETLASTERROR†

書式†

SETLASTERROR( code )

引数†

Parameter Description
code 設定するエラーコード(整数値)

戻り値†

なし

解説†

システム関数のエラーコードを設定します。YAYA スクリプト実行中にエラー状態を手動で設定することができます。

GETLASTERROR と組み合わせてシステムレベルのエラー状態を管理します。

互換性†

関連項目†


GETERRORLOG†

書式†

GETERRORLOG()

引数†

なし

戻り値†

エラーログの文字列配列(最大20件、新しいものから順)

解説†

YAYA 内部で起きたエラー・警告のログの配列を取得する。

使用例†

エラーログを、ファイル名・行番号・種別・コード・メッセージに分解する例。

ErrorList.SPLIT{
    _L=SPLIT(RE_REPLACEEX(_argv[0],'\((\d+|-)\) : ',',$1,'),',',3)
    //("E:\ssp\ghost\Taromati2\ghost\master\dic\system\ERRORLOG.dic","17","error E0041 : 'for'のループ式が異常です.")
    _L[2]=SPLIT(RE_REPLACEEX(_L[2],' *([WEN])(\d+|-)( *: |:)',',$1,$2,'),',',4)
    //("E:\ssp\ghost\Taromati2\ghost\master\dic\system\ERRORLOG.dic","17","error","E","0041","'for'のループ式が異常です.")
    _L
}
ErrorList.Gene{
    ErrorList.filename=IARRAY
    ErrorList.linenum=IARRAY
    ErrorList.type=IARRAY
    ErrorList.typecode=IARRAY
    ErrorList.code=IARRAY
    ErrorList.Info=IARRAY
    _l=GETERRORLOG
    foreach _l;_i{
        _t=ErrorList.SPLIT(_i)
        ErrorList.filename,=_t[0]
        ErrorList.linenum,=TOINT(_t[1])
        ErrorList.type,=_t[2]
        ErrorList.typecode,=_t[3]
        ErrorList.code,=TOINT(_t[4])
        ErrorList.Info,=_t[5]
    }
}
ClearErrorListVar{
    ERASEALLVARBEGINAS('ErrorList.')
}

互換性†

関連項目†


GETCALLSTACK†

書式†

GETCALLSTACK
GETCALLSTACK()

引数†

なし

戻り値†

コールスタックの汎用配列。各要素はユーザー定義関数の関数名(文字列)。

解説†

ユーザー定義関数の呼び出し履歴(コールスタック)を取得する関数。各要素が関数名を表す汎用配列として返される。

互換性†


CLEARERRORLOG†

書式†

CLEARERRORLOG()

引数†

なし

戻り値†

空の配列

YAYAの内部処理で蓄積されたエラーおよび警告ログを消去する。実行後、GETERRORLOGが返すエラー配列は空になる。

解説†

YAYA 内部で起きたエラー・警告のログを消去する。実行すると、GETERRORLOG で得られるエラー配列が空になる。

互換性†

関連項目†


DUMPVAR†

書式†

DUMPVAR()

引数†

None

戻り値†

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

解説†

変数のダンプをログ出力します。実行するとその時点の全変数の状態をデフォルトのログファイル(通常 ayame.log)に書き出します。スクリプト実行中の特定時点での変数状態を確認するためのデバッグユーティリティです。

出力形式†

1行に1変数を、[番号] 変数名 = 値 の形で書き出します。値には型が付きます。

型 書式
整数・実数・文字列 (int)5、(double)2.500000、(string)abc
VOID (nop/void)
汎用配列 (array) : に続けて要素を空白で区切る
ハッシュ(Tc600-4以降) (hash) : に続けて キー=値 を空白で区切る
入れ子の要素(Tc600-4以降) 配列は (array)[ ... ]、ハッシュは (hash){ ... } で囲む
[0] count = (int)3
[1] list = (array) : (int)1 (string)p
[2] h = (hash) : (string)a=(int)1 (string)l=(array)[ (int)1 (int)2 ] (string)n=(hash){ (string)x=(double)2.500000 }

互換性†


SLEEP†

書式†

SLEEP(millisecond)

引数†

Parameter Description
millisecond 待機時間(ミリ秒単位)

戻り値†

解説†

指定したミリ秒数だけ処理を一時停止します。

長時間の待機を指定するとアプリケーション全体がフリーズするため、短い時間やデバッグ用途に限定して使用することを推奨します。

THREADSTART で起動したスレッドから呼んだときは、待っている間ほかのスレッド(SSP からの request を含む)が動けます。THREADSTOP や unload で中断を求められると、待ちの途中で戻ります。

互換性†

関連項目†


SETTAMAHWND†

書式†

SETTAMAHWND( hwnd )

引数†

Parameter Description
hwnd デバッグツール「玉」のウィンドウハンドル(数値型)

戻り値†

なし(VOID)

解説†

デバッグツール「玉」のウィンドウハンドルを設定します。設定後はデバッグメッセージがそのウィンドウに出力されます。

互換性†


LINT.GetFuncUsedBy†

書式†

LINT.GetFuncUsedBy(function_name)

引数†

Parameter Description
function_name 解析対象の関数名

戻り値†

解説†

指定した関数内で使用しているすべての関数名(ユーザー定義関数・システム関数を含む)を列挙し、汎用配列で返します。コードの依存関係解析や開発時の検査に使用するLint系ユーティリティ関数です。

関数名は重複を除去し、名前順に並べて返されます。埋め込み式 %(式) を含む文字列があると、展開に内部的に使われる TOSTR も含まれます。制約の詳細は LINT系関数の仕様と制約 を参照してください。

互換性†

関連項目†


LINT.GetGlobalVarLetted†

書式†

LINT.GetGlobalVarLetted(function_name)

引数†

Parameter Description
function_name 解析対象の関数名

戻り値†

解説†

指定した関数内でグローバル変数への代入(let)が行われている箇所を列挙し、汎用配列で返します。読み取りのみの箇所は列挙されません。読み取りも含めて列挙する場合は LINT.GetGlobalVarUsedBy を使用してください。

変数名は重複を除去し、名前順に並べて返されます。

以下も代入として列挙されます。

制約の詳細は LINT系関数の仕様と制約 を参照してください。

互換性†

関連項目†


LINT.GetGlobalVarUsedBy†

書式†

LINT.GetGlobalVarUsedBy(function_name)

引数†

Parameter Description
function_name 解析対象の関数名

戻り値†

解説†

指定した関数内で使用しているグローバル変数名を列挙し、汎用配列で返します。代入・読み取り両方の使用箇所が対象となります。

変数名は重複を除去し、名前順に並べて返されます。そのため LINT.GetGlobalVarLetted と組み合わせても「代入されているが読まれていない変数」は判別できません。制約の詳細は LINT系関数の仕様と制約 を参照してください。

互換性†

関連項目†


LINT.GetLocalVarLetted†

書式†

LINT.GetLocalVarLetted(function_name)

引数†

Parameter Description
function_name 解析対象の関数名

戻り値†

解説†

指定した関数内でローカル変数への代入(let)が行われている箇所を列挙し、汎用配列で返します。読み取りのみの箇所は列挙されません。代入と読み取りの両方を列挙するには LINT.GetLocalVarUsedBy を使用してください。

変数名は代入が行われた順に返され、ネストしたスコープ(波括弧ブロック)への出入りは { および } で示されます。

以下も代入として列挙されます。

case 構文が内部で生成するローカル変数(_CaSe_ExPr_PrEfIx_ で始まる名前)は列挙されません(Tc574-1以降)。

制約の詳細は LINT系関数の仕様と制約 を参照してください。

互換性†

関連項目†


LINT.GetLocalVarUsedBy†

書式†

LINT.GetLocalVarUsedBy(function_name)

引数†

Parameter Description
function_name 解析対象の関数名

戻り値†

解説†

指定した関数内で使用しているローカル変数名を列挙し、汎用配列で返します。代入・読み取り両方の使用箇所が対象となります。

変数名は使用された順に返され、ネストしたスコープ(波括弧ブロック)への出入りは { および } で示されます。

Tc574-1以降では、同じステートメント内の代入先の変数(foreach のループ変数を含む)は、そのステートメントの最後に並びます。代入は右辺の評価後に行われるためです。

_z = _z + 1      // → _z(読み), _z(代入)
_a[0] = _b       // → _b, _a

case 構文が内部で生成するローカル変数(_CaSe_ExPr_PrEfIx_ で始まる名前)は列挙されません(Tc574-1以降)。

戻り値には読みと代入の区別がありません。制約の詳細は LINT系関数の仕様と制約 を参照してください。

互換性†

関連項目†


LINT.GetUserDefFuncUsedBy†

書式†

LINT.GetUserDefFuncUsedBy(function_name)

引数†

Parameter Description
function_name 解析対象の関数名

戻り値†

解説†

指定した関数内で使用しているユーザー定義関数名を列挙し、汎用配列で返します。システム関数は含まれません(システム関数も含めて列挙する場合は LINT.GetFuncUsedBy を使用してください)。

関数名は重複を除去し、名前順に並べて返されます。EVAL などで文字列から呼び出される関数は含まれません。制約の詳細は LINT系関数の仕様と制約 を参照してください。

互換性†

関連項目†


LINT.GetVarRefs†

書式†

LINT.GetVarRefs(function_name)

引数†

Parameter Description
function_name 解析対象の関数名

戻り値†

解説†

指定した関数内の変数・関数の出現と、ブロック(波括弧)の出入りを、出現ごとに1件ずつ列挙して汎用配列で返します。LINT.GetLocalVarUsedBy などと異なり、読み・書きの区別、行番号、ブロックの種類、出現した構文の種類が含まれます。

各要素はカンマ区切りなので、簡易配列としてそのまま項目を取り出せます。

_refs = LINT.GetVarRefs('OnTest')
foreach _refs ; _r {
    _kind = _r[0]
    _name = _r[2]
    _line = TOINT(_r[4])
}
項目†
番号 項目 値
0 kind var(変数) / func(関数) / {(ブロック開始) / }(ブロック終了)
1 category var のとき local / global、func のとき user / system、{ } のときブロックの種類
2 name 変数名・関数名({ } では空)
3 access var のとき r(読み) / w(代入) / rw(読み書き)、func のとき call({ } では空)
4 line 辞書ファイル中の行番号
5 depth ブロックの入れ子の深さ(関数本体が1)
6 context 出現したステートメントの種類({ } では空)
access†
値 対象
r 代入先以外のすべての出現
w = := の代入先、配列要素への = の代入先(_a[0] = 1 の _a)、foreach のループ変数(2変数の foreach では両方。Tc600-3以降)
rw += -= *= /= %= ,= とその := 形、++ -- の対象(配列要素への複合代入を含む)

代入は右辺の評価後に行われるため、同じステートメント内では代入先(w / rw)が最後に並びます。

_z = _z + 1
// var,local,_z,r,10,1,subst
// var,local,_z,w,10,1,subst
ブロックの種類({ } の category)†
値 対象
function 関数本体
if / elseif / else if 構文
while while 構文
for for 構文
foreach foreach 構文
switch switch 構文
case case 構文
when / others case 構文内の when / others
plain 上記以外(単独の { } や、switch の各ブロックなど)

} には、対応する { と同じ種類と深さが入ります。

context†
値 対象
output 出力する数式
subst 代入を含む数式
if / elseif / while / switch 各構文の条件式
for-init / for-cond / for-step for a ; b ; c の a / b / c
foreach / foreach-var foreach a ; b の a / b(foreach a ; k, v では k と v がどちらも foreach-var。Tc600-3以降)
case / when case の式 / when の条件
parallel / void / return 各構文の式

例えば if _c = 1 は、context が if で access が w の件として現れます。

列挙されないもの†

制約の詳細は LINT系関数の仕様と制約 を参照してください。

互換性†

関連項目†