;
;	HSP help manager用 HELPソースファイル
;	(先頭が「;」の行はコメントとして処理されます)
;

%type
拡張命令
%ver
3.7
%note
hspda.asをインクルードすること。
%date
2022/06/01
%author
onitama
%dll
hspda
%url
https://hsp.tv/
%port
Win



%index
csvstr
CSVの１行を配列に変換
%group
拡張入出力制御命令
%prm
p1,p2
p1 : 結果が代入される文字列型の配列変数名
p2 : CSVの１行を取り出した文字列
%inst
CSV形式のデータから取り出した１行だけのデータを、 文字列型の配列変数に展開します。
 CSV形式は、「,」で区切られたテキストのデータです。
たとえば、「a,b,c,d」 のような 「,」 で区切られた4つの文字列があったとすると、csvstr命令を使うことで 「a.0="a"」 「a.1="b"」「a.2="c"」「a.3="d"」のように配列変数にそれぞれの要素を分けて代入することができます。
p1で指定される配列変数は、必ず文字列型の配列変数である必要があります。
^
配列変数に確保されている文字数や配列の限界を越えた部分は無視されます。(エラーになったり、データが破壊されることはありません)
^
命令の実行中にエラーが起こった場合にはシステム変数 statが1になります。
正常に変換された場合は、システム変数 statは、0になります。



%index
csvnote
CSVの１行をメモリノート変換
%group
拡張入出力制御命令
%prm
p1,p2
p1 : 結果が代入される文字列型の変数名
p2 : CSVの１行を取り出した文字列
%inst
CSV形式のデータから取り出した１行だけのデータを メモリノートパッド形式の文字列型の変数に展開します。
CSV形式は、「,」で区切られたテキストのデータです。
たとえば、 「a,b,c,d」のような「,」で区切られた4つの文字列があったとするとcsvstr命令を使うことで「"a\nb\nc\nd\n"」のようにメモリノートパッド命令で扱うデータ("\n"で区切られたデータ)として代入することができます。
^
命令の実行中にエラーが起こった場合にはシステム変数 statが1になります。
正常に変換された場合は、システム変数 statは、0になります。


%index
xnotesel
排他メモリノート初期化
%group
拡張入出力制御命令
%prm
p1,p2
p1 : 対象となる文字列型の変数名
p2 : 項目の最大数(省略時は256)
%inst
排他メモリノートの初期化を行ないます。
対象となる変数と、参照カウントのリセットが行なわれます。
^
排他メモリノートは、メモリノートパッド命令で使用するものと同じく、１行に1つの項目を持つ長い文字列型のデータです。
ただし、排他メモリノートは異なる項目(行)しか追加することができません。
すでに持っている項目を追加しようとすると、参照カウントだけが更新され、実際には追加されません。これにより、同じ文字列を重複しないで格納することや、重複の統計、文字列サーチなどに応用することができます。
^
排他メモリノートは、xnoteselで対象となる変数を指定して、必要な場合は、最大項目数も設定します。
以降は、 xnoteadd命令 を実行するごとに、排他メモリノートの変数に項目が追加されていきます。
%href
xnoteadd


%index
xnoteadd
排他メモリノート項目追加
%group
拡張入出力制御命令
%prm
p1
p1 : 排他メモリノートに追加される文字列
%inst
排他メモリノートに項目を追加します。
項目は、改行を含まない文字列でなければいけません。
実行すると、項目が追加されたインデックスが、システム変数statに代入されます。
^
すでに排他メモリノートに含まれる項目は、追加されません。
その場合は、システム変数statにすでに含まれる項目のインデックスが代入され、項目の参照カウントが1つ増やされます。
項目の参照カウントは、sortget命令で取得することが可能です。
%href
xnotesel



%index
csvsel
CSV検索の対象バッファを選択
%group
拡張入出力制御命令
%prm
val,mode
val  : CSV検索の対象となる文字列を格納した変数名
mode : 区切りキャラクタコード
%inst
CSV検索の対象となるバッファを選択します。
CSV形式 またはノートパッド形式の文字列が格納されている変数を指定することができます。

modeで区切りキャラクターを指定することができます。
modeを省略または0にした場合は「,」が使用されます。
9を指定することでタブ区切りのcsvファイルに対応することができます。
%href
csvres
csvflag
csvopt
csvfind


%index
csvres
CSV検索の結果出力バッファを指定
%group
拡張入出力制御命令
%prm
val
val : CSV検索結果を出力する変数名
%inst
CSV検索の結果出力バッファを指定します。
必ずある程度のサイズを確保した文字列型の変数にする必要があります。
想定される出力結果に応じて sdim命令 などでサイズをあらかじめ確保しておいてください。 通常は 32000バイト程度あれば十分です。
出力結果のサイズがバッファを溢れてしまうような場合は、指定したバッファのサイズに収まる範囲で検索を中断しますので、バッファオーバーフローは起こりません。
%href
csvsel
csvflag
csvopt
csvfind


%index
csvflag
CSV検索の項目フラグを設定
%group
拡張入出力制御命令
%prm
id,val
id  : 項目ID
val : 設定値(0〜255)
%inst
CSV検索の対象となる項目単位でのフラグ設定を行ないます。
設定値が0の場合は、CSV検索は行なわれません。
0以外の場合は、CSV検索の対象項目となります。
デフォルトでは、すべての項目が検索対象となっています。
項目idは、最も左にある項目を0として以降区切り記号ごとに右に1づつ増加していきます。
%href
csvsel
csvres
csvopt
csvfind


%index
csvopt
CSV検索のオプションを設定
%group
拡張入出力制御命令
%prm
p1
p1 : オプション値
%inst
CSV検索のオプション設定を行ないます。
以下の値を指定することができます。複数指定する場合は、「+」か「|」の演算子でつなげることができます。
^p
 CCSV_OPT_ANDMATCH      ;AND検索
 CCSV_OPT_NOCASE        ;半角大文字小文字を同一視
 CCSV_OPT_ZENKAKU       ;全角半角を同一視
 CCSV_OPT_ADDLINE       ;行番号を先頭に付加
 CCSV_OPT_EXPRESSION    ;正規表現を指定(未実装)
^p
%href
csvsel
csvres
csvflag
csvfind


%index
csvfind
CSV検索を実行
%group
拡張入出力制御命令
%prm
"string",p1,p2
"string" : 検索キーワード
p1       : 結果出力の最大数(0=無制限)
p2       : 結果出力の開始インデックス(0=先頭)
%inst
CSV検索を行ないます。
必ず検索対象のバッファ(csvsel)と出力先(csvres)を指定しておく必要があります。
 "string"で指定されたキーワードを含むCSV行を結果バッファに抽出していきます。
 キーワードは、複数行に渡って(メモリノートパッド形式)指定することができます。
csvopt命令で AND検索のオプションを入れた場合は、複数キーワードすべてに一致する行だけを取り出します。
そうでない場合は、複数キーワードのいずれかに一致する行を取り出すOR検索となります。
%href
csvsel
csvres
csvflag
csvopt


%index
rndf_ini
実数乱数の初期化
%group
拡張入出力制御命令
%prm
p1
p1(-1) : 初期化のシード値
%inst
実数乱数の初期化を行ないます。
p1で初期化に使用される種(シード値)を指定することができます。
p1を省略するか、-1を指定するとクロックから得られたランダムなシード値が設定されます。
プラグインの初期化時に実数乱数の初期化は行なわれるため、必ずしも rndf_ini命令 を入れておく必要はありません。
%href
rndf_get
rndf_geti


%index
rndf_get
実数乱数を取得
%group
拡張入出力制御命令
%prm
p1
p1 : 実数乱数を代入する変数名
%inst
実数乱数を取得してp1で指定した変数に代入します。
実数乱数は、 0以上で 1未満の実数となるもので、 Mersenne Twister アルゴリズムにより生成されます。
%href
rndf_ini
rndf_geti


%index
rndf_geti
乱数を取得
%group
拡張入出力制御命令
%prm
p1,p2
p1      : 実数乱数を代入する変数名
p2(100) : 生成する乱数の範囲値
%inst
整数乱数を取得してp1で指定した変数に代入します。
乱数は、 0以上でp2で指定した数値未満の整数となります。
ここで取得される乱数は、 rndf_get で取得される実数乱数と同様のアルゴリズム (Mersenne Twister) により生成されます。
%href
rndf_ini
rndf_get


%index
getvarid
変数IDを取得
%group
拡張入出力制御命令
%prm
p1,"name"
p1 : 結果が代入される変数名
"name" : 変数名
%inst
変数名から、変数IDに変換を行ないます。
変数IDは、HSPシステム内部で管理されている番号で、0から始まる値が割り当てられています。
結果は、p1で指定された変数に代入されます。
該当する変数名が存在しなかった場合には、-1が代入されます。

%href
getvarname
getmaxvar



%index
getvarname
変数名を取得
%group
拡張入出力制御命令
%prm
p1,p2
p1 : 結果が代入される変数名
p2 : 変数ID
%inst
変数IDから変数名を取得します。
変数IDは、HSPシステム内部で管理されている番号で、0から始まる値が割り当てられています。
結果は、p1で指定された変数に代入されます。
該当する変数IDが存在しなかった場合には、空の文字列("")が代入されます。

%href
getvarid
getmaxvar



%index
getmaxvar
変数IDの最大数を取得
%group
拡張入出力制御命令
%prm
p1
p1 : 結果が代入される変数名
%inst
現在利用可能な変数IDの最大数を取得します。
結果は、p1で指定された変数に代入されます。
変数IDは、HSPシステム内部で管理されている番号で、0から始まる値が割り当てられています。
最大数が10の場合、利用可能な変数IDは、0から9となります。

%href
getvarname
getvarid



%index
vsave
すべての変数を保存
%group
拡張入出力制御命令
%prm
"filename"
"filename" : ファイル名
%inst
定義されているすべての変数データをファイルに保存します。
"filename"で指定されたファイルが作成されます。
保存されたファイルは、vload命令またはvload_start命令による変数データ読み込みに使用することができます。
vsave命令は、すべての変数の内容を配列やモジュール変数も含めて保存しますが、クローンされた変数、comobj型、variant型の変数は対象となりません。
また、label型の変数の保存が可能ですが、読み込み時に正常なラベル情報にならない可能性があるので注意してください。
正常に終了した場合は、システム変数statに0が代入されます。
正しく処理が完了していない場合、システム変数statは0以外の値になります。

%href
vload
vsave_start



%index
vload
すべての変数を読み込み
%group
拡張入出力制御命令
%prm
"filename"
"filename" : ファイル名
%inst
定義されているすべての変数をファイルから読み込みます。
"filename"で指定されるファイルは、vsave命令またはvsave_start命令により変数データ保存されている必要があります。
vload命令は、現在定義されているすべての変数名をファイルに保存されているデータから検索して、名前が一致したものを読み込みます。
ファイルに保存されていない変数は、そのままの内容を保持します。
また、モジュール型の変数は、保存した時点とモジュール名、モジュール変数定義数が同じでなければ読み込まれません。
正常に終了した場合は、システム変数statに0が代入されます。
正しく処理が完了していない場合、システム変数statは0以外の値になります。

%href
vsave
vload_start



%index
vsave_start
変数保存の開始
%group
拡張入出力制御命令
%prm
%inst
個別指定による変数保存を開始します。
必ず、vsave_start命令により開始した後、vsave_put命令によって必要な変数を指定した後、最後にvsave_end命令を実行する必要があります。
個別指定による変数保存は、任意の変数データをファイルに保存することができる以外は、vsave命令と同様です。
正常に終了した場合は、システム変数statに0が代入されます。
正しく処理が完了していない場合、システム変数statは0以外の値になります。

%href
vsave_put
vsave_end



%index
vsave_put
保存する変数の指定
%group
拡張入出力制御命令
%prm
p1
p1 : 保存する変数
%inst
個別指定による保存される変数を指定します。
必ず、vsave_start命令を先に実行しておく必要があります。
個別指定による変数保存は、任意の変数データをファイルに保存することができる以外は、vsave命令と同様です。
すべての変数の内容を配列やモジュール変数も含めて保存しますが、クローンされた変数、comobj型、variant型の変数は対象となりません。
また、label型の変数の保存が可能ですが、読み込み時に正常なラベル情報にならない可能性があるので注意してください。
正常に終了した場合は、システム変数statに0が代入されます。
正しく処理が完了していない場合、システム変数statは0以外の値になります。

%href
vsave_start
vsave_end



%index
vsave_end
変数保存の終了
%group
拡張入出力制御命令
%prm
"filename"
"filename" : ファイル名
%inst
個別指定による変数保存を終了します。
必ず、vsave_start命令を先に実行しておく必要があります。
実行されると、"filename"で指定されたファイルが作成されます。
正常に終了した場合は、システム変数statに0が代入されます。
正しく処理が完了していない場合、システム変数statは0以外の値になります。

%href
vsave_put
vsave_start



%index
vload_start
変数読み込みの開始
%group
拡張入出力制御命令
%prm
"filename"
"filename" : ファイル名
%inst
個別指定による変数読み込みを開始します。
必ず、vload_start命令により開始した後、vload_get命令によって必要な変数を指定した後、最後にvload_end命令を実行する必要があります。
個別指定による変数読み込みは、任意の変数データをファイルから読み込むことができる以外は、vload命令と同様です。
正常に終了した場合は、システム変数statに0が代入されます。
正しく処理が完了していない場合、システム変数statは0以外の値になります。

%href
vload_get
vload_end



%index
vload_get
読み込む変数の指定
%group
拡張入出力制御命令
%prm
p1
p1 : 読み込みを行なう変数
%inst
個別指定によりファイルから読み込まれる変数を指定します。
必ず、vload_start命令を先に実行しておく必要があります。
個別指定による変数読み込みは、任意の変数データをファイルから読み込むことができる以外は、vload命令と同様です。
vload_get命令は、指定された変数名をファイルに保存されているデータから検索して、名前が一致するデータがあった場合に読み込みます。
ファイルに保存されていない場合は、変数の内容は保持されます。
また、モジュール型の変数は、保存した時点とモジュール名、モジュール変数定義数が同じでなければ読み込まれません。
正常に終了した場合は、システム変数statに0が代入されます。
正しく処理が完了していない場合、システム変数statは0以外の値になります。

%href
vload_start
vload_end



%index
vload_end
変数読み込みの終了
%group
拡張入出力制御命令
%prm
%inst
個別指定による変数読み込みを終了します。
必ず、vload_start命令を先に実行しておく必要があります。
正常に終了した場合は、システム変数statに0が代入されます。
正しく処理が完了していない場合、システム変数statは0以外の値になります。

%href
vload_start
vload_get



%index
binmatch
バイナリデータの検索
%group
拡張入出力制御命令
%prm
var1,var2,size1,size2,offset,option
var1   : 検索対象となるバッファを持つ変数名
var2   : 検索データを持つ変数名
size1  : 検索対象バッファのサイズ(byte数)
size2  : 検索データのサイズ(byte数)
offset(0) : 検索対象バッファのオフセット
option(0) : 検索オプション
%inst
var1で指定した文字列型変数のバッファをバイナリデータと見なし、データの検索を行います。
検索するデータは、var2で指定した文字列型変数のバッファが参照されます。
size1でvar1のバッファサイズを指定します。値を省略した場合は、確保されているバッファサイズが使用されます。
size2でvar2のバッファサイズを指定します。値を省略した場合は、確保されているバッファサイズが使用されます。
命令が実行されると、1byte単位のバイナリデータが一致するデータの位置を検索します。
実行後に、システム変数statに一致したデータがあったかどうかを返します。一致するデータがなかった場合は、0が返されます。それ以外の値だった場合は、システム変数strsizeに一致したインデックス値が代入されます。
offsetパラメーターにより、検索を開始するオフセット位置を指定することができます。
また、option値により検索の方法を以下の中から指定できます。
^p
	option値   内容
	----------------------------------------------
       0       最初に一致したデータ位置を返す
       1       最後に一致したデータ位置を返す
^p
option値に1を指定した場合は、命令実行後のシステム変数statには、一致したデータがあった数を返します。

%href
instr


