* AYA/YAYA 系統函式參照表 [#pd09b0c5]

根據字母順序一一進行解說。~
感覺應該要找時間重新寫一遍,但覺得這樣也不錯而保持原樣也是有可能的。~

|[v4]|與 version 4 同名函式完全相同機能。|
|[v4:...]|在 version 4 與之相同或類似機能的函式。|
|(沒有註明)|在 version 5 新追加的函式。|
|Tc-XXX|在 YAYA Tc-XXX 新追加的函式。|

|TcXXX-XXX|在 YAYA TcXXX-XXX 新追加的函式。|


#contents

** ACOS [#ACOS]
返回反餘弦值。參數的單位為radian。~

** ANY [#ANY]
參數為字串的時候,會視為簡易陣列,隨機選取其中一個字串。參數為變數的時候,會考慮其分隔符號。~
若為泛用陣列時,會隨機選取其中一個元素。~
整數或實數時會原值返回。沒有參數時則傳回空字串。~
可導入複數個參數,會隨機返回其中一個參數的值。~

    DinnerTalk
    {
    	unknownfood = ("蕎麥麵不加蕎麥","牛肉麵不加牛肉","黑暗鍋")
    	_i = "\0今天想吃" + ANY(unknownfood) + "。\1" + EVAL("unknownfood[LSO]") + "?"

    	_i
    }


選擇的序數可以從變數LSO取得。~
當ANY的選擇為2時,結果為

    S:「今天想吃黑暗鍋。」 K:「黑暗鍋?」

** ARRAYSIZE  [v4:具備簡易陣列的互換性、2參數的方式已廢止] [#ARRAYSIZE]
參數指定為簡易陣列及泛用陣列,傳回此陣列的元素總數量。~

** ASEARCH [#ASEARCH]
檢索泛用陣列中的值。第一參數是檢索的關鍵字、第二參數之後是指定要檢索的泛用陣列(不能是簡易陣列)。~
會返回第一個找到的元素的序數。沒找到的話傳回 -1 。~

    _tea = ("鐵觀音", "烏龍", "やぶきた", "茉莉花")
    ipod = ASEARCH("烏龍", _tea)

ipod等於1。~

    nyaoh = ASEARCH("猫", "麒麟", "猿", "象", "貓", "兔")

nyaoh等於3。~

由於搜尋時採用比較單純的線性檢索,所以搜尋花費的時間會隨著陣列的長度而改變。~

** ASEARCHEX [#ASEARCHEX]
檢索泛用陣列中的值。第一參數是檢索的關鍵字、第二參數之後是指定要檢索的泛用陣列(不能是簡易陣列)。~
會將搜尋到的元素序數以陣列方式傳回。沒有搜尋到時則為空陣列(IARRAY)。~

    _tea = ("鐵観音", "烏龍", "やぶきた", "烏龍", "茉莉花")
    ipod = ASEARCHEX("烏龍", _tea)

ipod等於泛用陣列 (1,3) 。~

** ASIN [#ASIN]
返回反正弦值。參數的單位為radian。~

** ATAN [#ATAN]
返回反正切值。參數的單位為radian。 

----

** BINSTRTOI  [v4:BINSTRTONUM改名] [#BINSTRTOI]
將2進位數值字串轉換成整數。參數異常時傳回0。 

** BITWISE_AND  [Tc513-901] [#BITWISE_AND]
位元操作 AND 運算子(32位元)。異常時不回傳。~
~
例:
 _val1 = 30 // 2進數為11110
 _val2 = 13 // 2進數為01101
 BITWISE_AND( _val1, _val2 ) // 輸出整數12(01100)

** BITWISE_NOT  [Tc513-901] [#BITWISE_NOT]
位元操作 NOT 運算子(32位元)。異常時不回傳。~
~
例:
 _val = 28 // 2進數為00011100
 BITWISE_NOT( _val ) // 輸出整數-29(11100011)

** BITWISE_OR  [Tc513-901] [#BITWISE_OR]
位元操作 OR 運算子(32位元)。異常時不回傳。~
~
例:
 _val1 = 28 // 2進數為11100
 _val2 = 9  // 2進數為01001
 BITWISE_OR( _val1, _val2 ) // 輸出整數29(11101)

** BITWISE_SHIFT  [Tc513-901] [#BITWISE_SHIFT]
位元操作位移運算子(32位元)。異常時不回傳。~
第二參數為正數時左移,負數時右移。~
~
例:
 _var=0x7fffffff
 _result=BITWISE_SHIFT(_var,-2);
_result為0x1fffffff。

** BITWISE_XOR  [Tc513-901] [#BITWISE_XOR]
位元操作 XOR 運算子(32位元)。異常時不回傳。~
~
例:
 _val1 = 28 // 2進數為11100
 _val2 = 9  // 2進數為01001
 BITWISE_XOR( _val1, _val2 ) // 輸出整數21(10101)

----

** CEIL  [v4] [#CEIL]
實數的小數點無條件進位。~

** CHARSETIDTOTEXT  [Tc513-901] [#CHARSETIDTOTEXT]
 CHARSETIDTOTEXT(code)

轉換文字編碼為文字編碼名稱。失敗時回傳"default"。~
文字編碼清單見[[附錄>./#Appendix-Charset]]。

** CHARSETLIB [#CHARSETLIB]
 CHARSETLIB(code)
 CHARSETLIB()

指定外部程式庫通信所使用的文字編碼。~
文字編碼清單見[[附錄>./#Appendix-Charset]]。~
~
請在LOADLIB之前進行指定。~
可以對LOADLIB設定不同單位的文字編碼。~

預設文字編碼在基礎設定檔案的charset.extension項目(省略時為charset項目)所設定的值。~
沒指定文字編碼時返回現時文字編碼的值,否則無返值。~
Tc531-1起可省略文字編碼指定。

** CHARSETLIBEX  [Tc513-901] [#CHARSETLIBEX]
 CHARSETLIBEX(path,code)
 CHARSETLIBEX(path)

指定特定外部程式庫通信所使用的文字編碼。~
文字編碼清單見[[附錄>./#Appendix-Charset]]。~
~
預設文字編碼在基礎設定檔案的charset.extension項目(省略時為charset項目)所設定的值。~
沒指定文字編碼時返回現時文字編碼的值,否則無返值。~
Tc530-2起可在LOADLIB前設定。~
Tc531-1起可省略文字編碼指定。~

** CHARSETTEXTTOID  [Tc513-901] [#CHARSETTEXTTOID]
 CHARSETTEXTTOID(string)
轉換文字編碼名稱為文字編碼編號。失敗時回傳0。~
文字編碼清單見[[附錄>./#Appendix-Charset]]。

** CHR  [v4:ASC的擴張。與ASCII範圍有互換性] [#CHR]
根據UCS-2代碼返回1文字。~

    Test
    {
    	_a = "ABC"
    	_b = "%(CHR(65))%(CHR(66))%(CHR(67))"
    	
    	_c = "現在時間是%(hour)時%(minute)分%(second)秒。"
    	_d = EVAL("%(CHR(34))現在時間是%(hour)時%(minute)分%(second)秒%。(CHR(34))")
    }

_a與_b相等,_c與_d相等。CHR(34)等同於雙括號( " )。~

** CHRCODE  [v4:IASC的擴張。與ASCII範圍有互換性] [#CHRCODE]
將指定字串開頭的1文字轉換為UCS-2文字代碼並傳回。~

** COS  [v4] [#COS]
返回餘弦值。參數的單位為radian。~

** COSH  [Tc522-1] [#COSH]
返回雙曲餘弦值。參數的單位為radian。~

** CUTSPACE  [v4] [#CUTSPACE]
字串左右端有空白文字或標記文字的時候,予以去除。~

** CVAUTO [#CVAUTO]
根據參數指定的變數的內容自動轉換形態,將字串轉為整數或實數。~
參數為泛用陣列時其動作尚未定義。~
無返值。~

** CVINT  [v4:TONUMBER改名] [#CVINT]
參數指定的變數為存有整數值形式的字串時,將字串轉為整數。~
無返值。~

** CVREAL [#CVREAL]
參數指定的變數為存有實數值形式的字串時,將字串轉為實數。~
無返值。~

** CVSTR  [v4:TOSTRING改名] [#CVSTR]
參數為變數時,將變數的內容轉換為字串。~
無返值。~

----

** DUMPVAR  [Tc529-2] [#DUMPVAR]
 DUMPVAR()
將所有變數往紀念檔輸出。~
無返值。~

----

** ERASE  [v4:單位由byte單位變更為文字單位] [#ERASE]
削除字串的指定部分。第一參數為對象字串、第二參數為開始削除的文字位置、第三參數為要削除掉的文字數。~

    Test
    {
    	_i = "ABCDEFGHIJ"
    	_i = ERASE(_i, 3, 4)
    	
    	_i
    }

結果為"ABCHIJ"。~

** ERASEVAR  [v4:ERASEVARIABLE改名] [#ERASEVAR]
將指定的變數削除掉。參數請輸入寫有變數名稱的字串。~
無返值。~

** EVAL [#EVAL]
將輸入的字串作為 單一的文指令碼去實行。~
請注意所謂「單一的」的意思,代表著無法執行複數的陳述式。因此,EVAL只會作算式程度的展開,無法執行包含if、for之類制御構造的指令碼,或是定義新的函式。~

例如以下的程式碼為把1代入變數 i 中。~

    EVAL("i=1")

文並不存在逸出序列(escape sequence),字串內要包含雙括號的話請使用CHR(34)。例如將"test"代入變數 i 的寫法如下。~

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

想在執行的時候進行%的展開時,也請將%寫作CHR(37)。~
以下的例子為執行"%(foo)"時的寫法。~

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

轉換字串的 TOSTR(EVAL("formula")) 和埋入字串展開的 "%(formula)" 兩種寫法,其結果與EVAL的結果相同。 

** EXECUTE  [Tc513-901] [#EXECUTE]
 EXECUTE( path [ , option ] )
執行外部程式。~
成功時返回0或以上的數值(OS依存),失敗時返回-1。

** EXECUTE_WAIT  [Tc532-1] [#EXECUTE_WAIT]
 EXECUTE_WAIT( path [ , option ] )
執行外部程式並等待其結束。~
成功時返回0或以上的數值(OS依存),失敗時返回-1。

----

** FATTRIB [#FATTRIB]
取得檔案的屬性。~
第一參數指定為檔案或資料夾名稱,全路徑指定可能。相對路徑的場合下以 DLL load 取得的路徑為基準。~
結果返回以下的泛用陣列。分別取得0或1的值。1的時候,表示那個屬性是有效的。然而,如果指定的檔案不存在、處理失敗的時候,返回的值不會是泛用陣列,而是單一的整數 -1 。~

    ARCHIV,COMPRESSED,DIRECTORY,HIDDEN,NORMAL,OFFLINE,READONLY,SYSTEM,TEMP

    * [0] ARCHIV
      保存文件,或是保存資料夾。~
    * [1] COMPRESSED
      壓縮文件,或是壓縮資料夾。~
    * [2] DIRECTORY
      資料夾/目錄。確認此值的話,即可分辨對象是普通的文件還是資料夾。~
    * [3] HIDDEN
      隱藏文件,或是隱藏資料夾。~
    * [4] NORMAL
      無屬性。~
    * [5] OFFLINE
      這個檔案現在無法使用。~
    * [6] READONLY
      唯讀檔。~
    * [7] SYSTEM
      Windows用檔案。~
    * [8] TEMP
      暫存檔。~

** FCHARSET [#FCHARSET]
指定檔案寫入/讀取時使用的文字編碼。~
文字編碼清單見[[附錄>./#Appendix-Charset]]。~
~
請在FOPEN之前進行指定。~
可以對檔案設定不同單位的文字編碼。~

預設的文字編碼為基礎設定檔案中charset項目的設定值。~
無返值。~

** FCLOSE  [v4] [#FCLOSE]
關閉用FOPEN打開的檔案。~
參數同樣是FOPEN指定的檔案名稱。~
無返值。~

** FCOPY  [v4] [#FCOPY]
複製檔案。~
第一參數為要拷貝的原檔名、第二參數為原檔所在的資料夾名稱。全路徑指定可能。相對路徑的場合下以 DLL load 取得的路徑為基準。~
返值 0 / 1 = 失敗 / 成功。~

** FDEL  [v4] [#FDEL]
刪除檔案。~
全路徑指定可能。相對路徑的場合下以 aya5.dll load 取得的路徑為基準。~
返值 0 / 1 = 失敗 / 成功。~

** FDIGEST  [Tc527-1, Tc530-1追加CRC32] [#FDIGEST]
 FDIGEST( path , type )
對指定的檔案產生雜湊值。~
雜湊值種類如下:
:CRC32|32bit CRC值
:MD5|MD5值
:SHA-1 或 SHA1|SHA-1值

成功時返回雜湊值的16進數,失敗時返回-1。

** FENUM  [v4] [#FENUM]
列舉指定位置存在的檔案名/資料夾名,以逗號區隔並傳回。全路徑指定可能。相對路徑的場合下以 DLL load 取得的路徑為基準。~

資料夾的名稱會在前頭附加 " \ " 。~
第二參數可指定分隔符號。~

** FLOOR  [v4] [#FLOOR]
實數的小數點無條件捨去。~

** FMOVE  [v4] [#FMOVE]
移動檔案。~
第一參數為移動對象的檔名、第二參數為移動對象的資料夾名。全路徑指定可能。相對路徑的場合下以 DLL load 取得的路徑為基準。~
返值 0 / 1 = 失敗 / 成功。~

** FOPEN  [v4] [#FOPEN]
開啟檔案。~
第一參數為檔案名稱。全路徑指定可能。相對路徑的場合下以 DLL load 取得的路徑為基準。~
第二參數中對讀取 / 寫入的指定,如下列所示。~

    * "w" 或是"write"
      開啟寫入模式。~
    * "r" 或是"read"
      開啟讀取模式。~
    * "a" 或是"append"
      開啟追加模式。 

返值 0 / 1 / 2 = 失敗 / 成功 / 已經開啟過了。~

** FREAD  [v4] [#FREAD]
對已開啟讀取模式的檔案進行一行的讀取。~
參數同樣是FOPEN指定的檔案名稱。~

會自動去掉改行文字。~
到達檔案終端時會傳回 -1 。~

** FREADBIN  [Tc516-901] [#FREADBIN]
 FREADBIN( path , size [ , char ] )
不轉換文字編碼而讀取檔案。~
使用FREADBIN前需要先用FOPEN開啟。~

引數:
:path|FOPEN所指定的檔名
:size|讀取長度(位元組數) 0指定時為全部
:char|遇到位元組值 0x00 時所轉換成的文字(可省略:省略時為半角空白)

** FREADENCODE  [Tc535-1] [#FREADENCODE]
 FREADENCODE( path , size [ , type ] )
讀取被URL編碼或Base64編碼的檔案。~
使用FREADBIN前需要先用FOPEN開啟。~
如沒有以二進檔模式開啟的話改行字元會被轉換。~

引數:
:path|FOPEN所指定的檔名
:size|讀取長度(位元組數) 0指定時為全部
:type|base64 或 url   省略時base64

** FRENAME  [v4] [#FRENAME]
變更檔案名稱。~
第一參數為對象檔名、第二參數為新的檔名。全路徑指定可能。相對路徑的場合下以 DLL load 取得的路徑為基準。~
返值 0 / 1 = 失敗 / 成功。~

** FSEEK  [Tc516-901] [#FSEEK]
 FSEEK( path , offset , origin )
改變檔案存取位置(檔案指針)。

引數:
:path|FOPEN所指定的檔名
:offset|移動的位元組數
:origin|移動的原點的字串 (SEEK_CUR 或 current:現在的位置/SEEK_END 或 end:檔案的結尾/SEEK_SET 或 start:檔案的開端)

返值 0 / 1 = 失敗 / 成功

** FSIZE  [v4] [#FSIZE]
取得指定檔案的大小(bytes數)。~
全路徑指定可能。相對路徑的場合下以 DLL load 取得的路徑為基準。~

失敗的情況下則回傳-1的值。~

** FTELL  [Tc516-901] [#FTELL]
 FTELL( path )
獲得檔案存取位置(檔案指針)。

引數:
:path|FOPEN所指定的檔名

成功時返回從檔案開端數起的位元組數,失敗時返回-1。

** FWRITE  [v4] [#FWRITE]
對已開啟讀取模式的檔案進行寫入字串的動作。~
參數同樣是FOPEN指定的檔案名稱。~
無返值。~

** FWRITE2  [v4] [#FWRITE2]
對已開啟讀取模式的檔案進行寫入字串的動作。~
參數同樣是FOPEN指定的檔案名稱。。~
無返值。~

FWRITE會自動輸入改行符號。FWRITE2不會。~

** FWRITEBIN  [Tc516-901] [#FWRITEBIN]
 FWRITEBIN( path , string [ , char ] )
不轉換文字編碼就寫入至檔案。~
使用FREADBIN前需要先用FOPEN開啟。~
如沒有以二進檔模式開啟的話改行字元會被轉換。~

引數:
:path|FOPEN所指定的檔名
:size|讀取長度(位元組數) 0指定時為全部
:char|遇到這文字時就轉換為位元組值 0x00 (可省略:省略時為半角空白)

無返值。~
----

** GETCALLSTACK  [Tc513-901] [#GETCALLSTACK]
 GETCALLSTACK()
以泛用陣列回傳使用者函數的呼叫堆疊。

** GETDELIM [#GETDELIM]
傳回指定變數所設定的分隔符號(簡易陣列中用來分隔元素的文字)。預設分隔符號為半形逗號。~
請在第一參數上指定對象變數。~

** GETFUNCLIST  [Tc513-901] [#GETFUNCLIST]
 GETFUNCLIST( [ prefix ] )
取得函數清單。

引數:
:prefix|有任何字串指定時,回傳以該字串開始的函數名(省略可能)。省略時為全部函數。

成功時返回函數清單的泛用陣列,失敗時返回IARRAY。

** GETLASTERROR  [v4:返值的體系變更] [#GETLASTERROR]
傳回發生的系統函式錯誤類型的代碼。代碼如下列所示。~

|代碼|意義|
|8|參數不足。|
|9|參數的值有誤。|
|10|無法處理空字串。|
|11|沒有存放結果的變數。|
|12|範圍外或是無效的值。|
|13|處理失敗。|
|14|無法讀取指定的外部程式庫。|
|15|指定的檔案沒有被打開。|
|16|正則表達式的語法有誤或是太複雜了。|
|17|正則表達式的處理中產生了未定義的錯誤。|
|18|應該傳遞變數的參數並非是一種變數型態。|


這個函式的返值也可以用SETLASTERROR函式來進行設定。~
使用GETLASTERROR時,如果要確實的確認錯誤發生的地方的話可以使用下列的方式。~

    SETLASTERROR(0)
    (使用系統函式做某些處理)
    if !GETLASTERROR {
        "錯誤發生。"
    }

** GETMEMINFO  [v4:類似於memory系系統變數] [#GETMEMINFO]
取得動作環境的記憶體情報。結果會傳回下列的泛用陣列。~

    物理記憶體的使用率,物理記憶體量,剩餘物理記憶體量,虛擬 + 物理記憶體量,虛擬 + 物理剩餘記憶體量

** GETSECCOUNT  [Tc513-901] [#GETSECCOUNT]
 GETSECCOUNT( [ yyyy [ , mm [ , dd [ , wd [ , HH [ , MM [ , SS ] ] ] ] ] ] ] )
從1970/1/1 00:00:00 UTC起,到參數所指定的時間所經過的秒數。

引數:
全部省略時為現在時間。
部份省略時省略的會以現在的值補上。
:yyyy|西歷年
:mm|月
:dd|日
:wd|曜日。請指定0。
:HH|時
:MM|分
:SS|秒

返值:秒數。

** GETSETTING [#GETSETTING]
 GETSETTING( string )
傳回作動中的AYA的相關設定情報。~
第一參數指定你所想要取得的情報字串或代號。~

|字串|代號(過去互換)|情報|例|
|coreinfo.version|0|YAYA版本編號|"Tc522-1"|
|charset|1|現在的文字編碼ID|0|
|coreinfo.path|2|AYA現在所處的絕對路徑(load時向DLL傳入的路徑)|"c:\hogehoge\"|
|coreinfo.name|3|現在使用中的DLL的名稱。|"YAYA"|
|coreinfo.author|4|現在使用中的DLL的作者名。|"umeici/The Maintenance Shop"|

** GETSTRBYTES [#GETSTRBYTES]
傳回儲存字串所必要的byte數。~
第一參數為對象字串、第二參數為解釋用的文字編碼。有以下幾種選擇。~
清單見[[附錄>./#Appendix-Charset]]。~

第二參數可省略,預設為0(Shift_JIS)。~

** GETTICKCOUNT  [v4:類似於系統變數systemuptickcount] [#GETTICKCOUNT]
傳回OS啟動至今的經過時間。單位ms。超過24日20小時的話值會回到0。~

** GETTIME  [v4:類似於時刻取得系系統變數] [#GETTIME]
現在的時間情報取得。返回結果即以下的泛用陣列。~

    西元,月,日,星期,時,分,秒

星期為0~6、0是星期日。~

** GETTYPE  [v4:類似於ISINTEGER、ISREAL] [#GETTYPE]
取得值的類型。~
0 / 1 / 2 / 3 / 4 = 内部錯誤 / 整數 / 實數 / 字串 / 泛用陣列

** GETTYPEEX  [Tc537-3] [#GETTYPEEX]
比GETTYPE更嚴謹的取得值的類型。
(使用方法請參照GETTYPE)

** GETVARLIST  [Tc513-901] [#GETVARLIST]
 GETVARLIST( [ prefix ] )
取得現存的變數清單。

引數:
:prefix|有任何字串指定時,回傳以該字串開始的變數名(省略可能)。省略時為全部變數。

成功時返回變數清單的泛用陣列,失敗時返回IARRAY。
----

** HAN2ZEN  [Tc513-901] [#HAN2ZEN]
 HAN2ZEN( src [ , type ] )
轉換字串中的全部半角英文字・數字・片假名為全角。

:src|要轉換的字串。
:type|以逗號分隔的要轉換文字種類(省略可能)。省略時為全部種類。
- number - 數値(0~9)
- alphabet - 字母
- symbol - 符號等
- kana - 片假名和句讀點

成功時回傳轉換後的字串,失敗時不回傳。

** HEXSTRTOI  [v4:HEXSTRTONUM改名] [#HEXSTRTOI]
將16進數值字串轉換成整數。參數異常時會傳回0。 

----

** IARRAY [#IARRAY]
傳回空的泛用陣列。~

** INSERT  [v4:byte單位換成文字單位] [#INSERT]
插入字串。第一參數為對象字串、第二參數為要插入的文字位置、第三參數為要插入的字串。~

    Test
    {
    	_i = "ABCHIJ"
    	_i = INSERT(_i, 3, "DEFG")
    	
    	_i
    }

結果為"ABCDEFGHIJ"。~

** ISFUNC  [v4:ISFUNCTION改名] [#ISFUNC]
傳回指定名稱的函式是否存在。~
0 / 1 / 2 = 不存在 / 函式 / 系統函式

** ISINTSTR [#ISINTSTR]
輸入的字串如果可以解釋為整數的話傳回 1 ,其餘為 0 。~

** ISREALSTR [#ISREALSTR]
輸入的字串如果可以解釋為實數的話傳回 1 ,其餘為 0 。~

** ISVAR [#ISVAR]
傳回指定名稱的變數是否存在。~
0 / 1 / 2 = 不存在 / 全域變數 / 區域變數 

----

** LETTONAME  [v4] [#LETTONAME]
第一參數所指定的字串會被轉換成變數,第二參數為代入的值。~
無返值。~

** LICENSE  [Tc530-1] [#LICENSE]
回傳 YAYA 的使用者條款。

** LOADLIB  [v4] [#LOADLIB]
讀取外部程式庫。做LoadLibrary,實行load。~
外部程式庫必須與介面用的文同樣具有公開的load/unload/request函式。~
返值 0 / 1 / 2 = 失敗 / 成功 / 已讀取。~

** LOG  [v4] [#LOG]
傳回自然對數。~

** LOG10  [v4] [#LOG10]
傳回常用對數。~

** LOGGING  [v4:指定字串的寫入方式變更] [#LOGGING]
把指定的值寫入LOG檔。不問值的型別。值為簡易陣列時會用逗號結合所有元素。~
無返值。~

** LSO [#LSO]
Last Selection Order. 最後進行的選擇的結果,傳回其位置的值。~

    request
    {
        _i = foo
        LSO
    }

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

_i是"sun"的時候,LSO即為2。~

總之,必須在選擇進行的同時一起執行。在字串選擇執行完畢後才取得的LSO值是沒有意義的。~

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

如果想得到ANY的選擇結果的話,這樣的寫法是錯誤的。這裡LSO所取得的值為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] [#MKDIR]
作成資料夾。全路徑指定可能。相對路徑的場合下以 DLL load 取得的路徑為基準。~
只能作成一階層。~
返值 0 / 1 = 失敗 / 成功。 

----

** POW  [v4] [#POW]
傳回第一參數的第二參數次方。 

----

** RAND  [v4] [#RAND]
亂數取得。第一參數為指定的亂數範圍。產生 0 ~ (第一參數 -1 ) 之間的值。~
沒有參數時會隨機產生 0 ~ 99 的值。~

** RE_GETLEN [#RE_GETLEN]
正則表達系函式的實行結果取得。~
返值為泛用陣列,陣列元素為 ( ) 中每個符合檢索條件的部份字串的長度。要素0為正則表達全部的符合字串的長度,要素i為第 i 項的 ( ) 符合檢索條件的部份字串的長度。~

** RE_GETPOS [#RE_GETPOS]
正則表達系函式的實行結果取得。~
返值為泛用陣列,陣列元素為 ( ) 中每個符合檢索條件的部份字串的位置。要素0為正則表達全部的符合字串的位置,要素i為第 i 項的 ( ) 符合檢索條件的部份字串的位置。~

** RE_GETSTR [#RE_GETSTR]
正則表達系函式的實行結果取得。~
返值為泛用陣列,陣列元素為 ( ) 中每個符合檢索條件的字串內容。要素0為正則表達全部的符合字串的內容,要素i為第 i 項的 ( ) 符合檢索條件的字串內容。~

** RE_GREP [#RE_GREP]
使用正則表達式(Regular Expression)對字串進行檢索,並列出結果。~
第一參數為處理對象字串,第二參數為正則表達式。~
返值為找到的數量。~

詳細的結果可從函式 RE_GETSTR、RE_GETPOS、RE_GETLEN 取得。~

使用可能的正則表達式語法可至以下網址參考。~
[[boost::Regex++ Regular expression syntax>http://boost.cppll.jp/HEAD/libs/regex/syntax.htm]](日本語)


中文的可上網搜尋"Regular Expression"即可找到相當多的教學文章。~

** RE_MATCH [#RE_MATCH]
處理對象字串全體與寫入的正則表達式完全吻合時返回 1 。其他情況則返回 0 。~
第一參數為處理對象字串、第二參數為正則表達式。~

詳細結果可從函式 RE_GETSTR、RE_GETPOS、RE_GETLEN 取得。~

** RE_OPTION  [Tc534-1] [#RE_OPTION]
 RE_OPTION( [ option ] )
設定Perl互換正則表達式選項。
-i:不區分大小文字
-m:多行匹配
-s:萬用匹配符會匹配改行
-x:無視正則表達式內的注釋(#)或空白

標準設定只有m。

引數:
:option|i/s/m/x的選項。如:"imx"

返值:選項,如:"imx"

** RE_REPLACE [#RE_REPLACE]
利用正則表達式對字串進行檢索,將找到的吻合部份全部取代成別的字串。~
第一參數為處理對象字串、第二參數為正則表達式、第三參數為置換後字串。~
詳細結果可從函式 RE_GETSTR、RE_GETPOS、RE_GETLEN 取得。~

在使用 RE_REPLACE 與 RE_SPLIT 時,RE_GETSTR、RE_GETPOS、RE_GETLEN 的意義與其他RE系函式有些不同。其中的差異在於一邊是「第 i 次吻合的 ( ) 的內容」,一邊是「在對象字串中表示正則表達全體所吻合的第 i 項的内容」。~

** RE_REPLACEEX  [Tc513-901] [#RE_REPLACEEX]
 RE_REPLACEEX ( string , regexp , replace_ex )
和RE_REPLACE一樣,但支援Perl式參照操作符($1、$2等)。~
(使用方法請參照RE_REPLACE)

** RE_SEARCH [#RE_SEARCH]
利用正則表達式對處理對象字串進行檢索,如果其中有與正則表達式吻合的地方則傳回 1 。沒有時則傳回 0 。~
第一參數為處理對象字串、第二參數為正則表達式。~

詳細結果可從函式 RE_GETSTR、RE_GETPOS、RE_GETLEN 取得。~

** RE_SPLIT [#RE_SPLIT]
利用正則表達式分割字串。分割後的結果傳回泛用陣列。~
詳細結果可從函式 RE_GETSTR、RE_GETPOS、RE_GETLEN 取得。~

** READFMO  [Tc524-1] [#READFMO]
 READFMO( [ name ] )
&color(red){Windows專用。};~
將FMO(File Mapping Object)的內容變成字串回傳。~
FMO的頭4位元組為FMO的大小,取出時會去除這4位元組。~
如果FMO中有位元組值0的話其動作將不可預知。

引數:
:name|FMO名稱(省略可)。省略時為 "Sakura" 。

** RESTOREVAR  [Tc513-901] [#RESTOREVAR]
 RESTOREVAR( [ path ] )
從存檔中復原變數。

引數:
:path|存檔檔名。省略時為主檔名(DLL名)加上"_variable.cfg",如"yaya_variable.cfg"

不返值。

** REPLACE  [v4:Byte單位轉換成文字單位] [#REPLACE]
取代字串。~
第一參數為對象字串、第二參數為變換前字串、第三參數為變換後字串。符合部份會全部被取代。~

** REQUESTLIB  [v4:返值追加] [#REQUESTLIB]
將 Load 完畢的外部程式庫根據 request 送出字串,取得結果。~
第一參數為 Load 時指定的程式庫檔名、第二參數為送出的 request 字串。~
返值為結果字串。~

** RMDIR  [v4] [#RMDIR]
刪除資料夾。全路徑指定可能。相對路徑的場合下以 DLL load 取得的路徑為基準。無法刪除空的資料夾。~
返值 0 / 1 = 失敗 / 成功。~

** ROUND  [v4] [#ROUND]
四捨五入實數的小數點部份。 

----

** SAVEVAR [#SAVEVAR]
變數保存。與unload時實行的處理是相同的。~

** SETDELIM  [v4:SETSEPARATOR改名] [#SETDELIM]
設定變數的標準分隔符號(簡易陣列中用來區別元素的分隔文字)。預設為半形逗號。~
第一參數為對象變數、第二參數為指定作為分隔符號的文字或字串。~
無返值。~

這個函式有以下的限制存在。請注意一下。~
兩個參數必須直接寫入。~

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

上述例子是打算將變數var的分隔符號變更為 " / " ,但是事實上這個程式碼無法正常運作。~
請像下面一樣,將第一參數的對象變數、第二參數的分隔符號直接指定給函式。~

    SETDELIM(var, "/")

** SETLASTERROR [#SETLASTERROR]
用整數設定GETLASTERROR函式返回的值。~

** SETSETTING  [Tc513-901] [#SETSETTING]
 SETSETTING( name , string )
改變動作中的YAYA設定情報。
有些項目設定後沒改變。 &color(red){(要調查)};

引數:
:name|項目名稱
:string|值

返值 0 / 1 = 失敗 / 成功

** SIN  [v4] [#SIN]
返回正弦值。參數的單位為radian。~

** SINH  [Tc522-1] [#SINH]
返回雙曲正弦值。參數的單位為radian。~

** SPLIT [#SPLIT]
將分割的文字串以泛用陣列傳回。可以用RE_SPLIT代替,不過不使用正則表達式時比較快。~
第一參數為對象字串、第二參數為分割字串。~
第三參數可以指定最大的分割數。~

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

_array 即 ("A", "B", "C//D//E") 。~
分割數為 0 時全部分割(省略時也一樣)。分割數為 1 時不會進行分割。~

** SPLITPATH [#SPLITPATH]
分解輸入的路徑字串,放入泛用陣列並傳回。~
陣列的元素為「磁碟名」「路徑」「主檔名」「副檔名」共4個。~

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

_i 的4個元素分別為 "C:","\umeici\sample\","readme",".txt" 。~

** SQRT  [v4] [#SQRT]
傳回值的平方根。~

** STRDECODE  [Tc532-1, Tc521-1至Tc532-1叫GETSTRURLDECODE] [#STRDECODE]
 STRDECODE( string [ , code ] [ , type ] )
字串解碼。

引數:
:string|要轉換的字串。
:code|文字編碼ID(省略可能)。省略時為0。
:type|解碼形式(省略可能)。url為URL編碼、base64為Base64編碼。省略時為url。

成功時回傳轉換後的字串,失敗時回傳0。

** STRENCODE  [Tc532-1, Tc521-1至Tc532-1叫GETSTRURLENCODE] [#STRENCODE]
字串編碼。

引數:
:string|要轉換的字串。
:code|文字編碼ID(省略可能)。省略時為0。
:type|編碼形式(省略可能)。url為URL編碼、base64為Base64編碼。省略時為url。

成功時回傳轉換後的字串,失敗時回傳0。

** STRFORM [#STRFORM]
傳回格式化的字串。與C言語的 sprintf 機能類似。~

以下為 STRFORM 與 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:byte單位轉換成文字單位、2參數的方式已廢止] [#STRLEN]
傳回字串的文字數。~

** STRSTR  [v4:byte單位轉換成文字單位。2參數的方式已廢止] [#STRSTR]
對字串内的部分字串進行檢索,傳回找到的文字位置。~
第一參數為對象字串、第二參數為檢索用的關鍵字、第三參數為檢索開始時的文字位置。~

** SUBSTR  [v4:byte單位轉換成文字單位] [#SUBSTR]
取出字串中的部分字串。~
第一參數為對象字串、第二參數為開始取得時的文字位置、第三參數為取得的文字數。 

----

** TAN  [v4] [#TAN]
返回正切值。參數的單位是radian。~

** TANH  [Tc522-1] [#TANH]
返回雙曲正切值。參數的單位是radian。~

** TOAUTO  [Tc516-901] [#TOAUTO]
 TOAUTO(string)
將字串轉換成整數或實數。參數異常時傳回原字串。~
傳入的字串為泛用陣列時的動作尚未定義。

** TOBINSTR  [v4] [#TOBINSTR]
將整數轉換成2進位數值字串。參數異常時傳回空字串。~

** TOHEXSTR  [v4] [#TOHEXSTR]
將整數轉換成16進位數值字串。參數異常時傳回空字串。~

** TOINT  [v4:TONUMBER2改名] [#TOINT]
將字串轉換成整數。參數異常時傳回空字串。~

** TOLOWER  [v4] [#TOLOWER]
將字串中含有的大寫英文字母轉換成小寫英文字母。~

** TOREAL [#TOREAL]
將字串轉換成實數。參數異常時傳回0.0。~

** TOSTR  [v4:TOSTRING2改名] [#TOSTR]
將整數、實數、泛用陣列轉換成字串。~

輸入泛用陣列時,會傳回以逗號結合的字串。也就是說,泛用陣列會轉換成簡易陣列。~

** TOUPPER  [v4] [#TOUPPER]
將字串中含有的小寫英文字母轉換成大寫英文字母。 

----

** UNLOADLIB  [v4] [#UNLOADLIB]
將LOADLIB所讀取的外部程式庫進行 unload 之後,執行FreeLibrary。參數為讀取時所指定的程式庫檔名。~
無返值。

----

** ZEN2HAN  [Tc513-901] [#ZEN2HAN]
 ZEN2HAN( src [ , type ] )
轉換字串中的全部全角英文字・數字・片假名為半角。

:src|要轉換的字串。
:type|以逗號分隔的要轉換文字種類(省略可能)。省略時為全部種類。
- number - 數値(0~9)
- alphabet - 字母
- symbol - 符號等
- kana - 片假名和句讀點

成功時回傳轉換後的字串,失敗時不回傳。

----

** 附錄:文字編碼 [#Appendix-Charset]
*** YAYA內部文字編碼 [#Appendix-Charset_Internal]

- YAYA的內部文字編碼為UCS-2。
- 讀寫辭書或外部檔案、存取外部程式庫並取得回傳字串時,原則上會全部從UCS-2轉換成所需的編碼。

*** 文字編碼和YAYA內的文字編碼ID [#Appendix-Charset_CharsetID]

- 一部分函數中,需要指定文字編碼要以文字編碼ID(整數)指定。

|文字編碼|字串表現|文字編碼ID|版本|h
|Shift JIS|Shift_JIS|0||
|UTF-8|UTF-8|1||
|EUC-JP|EUC_JP|2|Tc531-1|
|BIG-5|BIG-5|3|Tc531-1|
|GB-2312|GB-2312|4|Tc531-1|
|EUC_KR|EUC_KR|5|Tc531-1|
|ISO-2022-JP (JIS)|ISO-2022-JP|6|Tc531-1|
|二進碼|binary|126|Tc531-1|
|OS預設|OSNative|127||

*** 有關文字編碼「二進碼」 [#Appendix-Charset_Binary]

文字編碼「二進碼」是特殊的文字編碼,是直接使用UCS-2字串的下位位元組的編碼。

預定是主要與 FWRITEBIN, FREADBIN 等組合使用,把「二進碼」狀態的字串直接存取外部的用法。

但是要注意字串中的0x00無法存取是由於YAYA本身的限制所限。

還有,FUNCTIONEX等既存的系統辭書中並不會想到字串會是二進碼的。

首頁   編輯 差異 備份 上傳檔案 複製 變更名稱 重新載入   新建條目 一覽 搜索 最近的變更   幫助   最近更新的RSS