Contents
- 構文
- UString = COPY( 文字列, 開始位置, [コピー文字数] )
- 引数
- 文字列
- コピー元の文字列
- 開始位置
- コピーすべき文字列の開始位置(1から)
- コピー文字数
- コピーすべき文字数(省略時は最後の文字まで)
- 戻り値
結果の文字列
ANSI(バイト)処理の場合はCOPYB
文字列を左・右から取り出す
文字列を左からn文字取り出す。
PRINT COPY(str, 1, n)
文字列を右から文字取り出す。
PRINT COPY(str, LENGTH(str) – n + 1)
プログラム実行例
カラーコードから抵抗値を計算
HASHTBL color
color["黒"] = 0; color["茶"] = 1; color["赤"] = 2
color["橙"] = 3; color["黄"] = 4; color["緑"] = 5
color["青"] = 6; color["紫"] = 7; color["灰"] = 8
color["白"] = 9; color["金"] = ""; color["銀"] = ""
HASHTBL tolerance
tolerance["黒"] = ""; tolerance["茶"] = 1; tolerance["赤"] = 2
tolerance["橙"] = 0.05; tolerance["黄"] = ""; tolerance["緑"] = 0.5
tolerance["青"] = 0.25; tolerance["紫"] = 0.1; tolerance["灰"] = ""
tolerance["白"] = ""; tolerance["金"] = 5; tolerance["銀"] = 10
DIM str = INPUT("カラーコードを入力してください。")
DIM num = LENGTH(str)
FOR i = 1 TO num - 2
DIM res = res * 10 + color[COPY(str, i, 1)]
NEXT
res = res * POWER(10, color[COPY(str, num - 1, 1)])
PRINT res + "Ω±" + tolerance[COPY(str, num, 1)] + "%以内"
- 結果
INPUT:15 > 黄紫橙金 47000Ω±5%以内
ポップアップメニューで選択した項目を出力(サブメニューあり)
DIM menu[] = "項目1", "項目2", "{項目2-1", "項目2-2}", "項目3", "{項目3-1", "項目3-2", "項目3-3}", "項目4", "項目5"
DIM res = POPUPMENU(menu)
// サブメニューとして指定する際に必要な「{ }」を削除
IF COPY(menu[res], 1, 1) = "{" THEN menu[res] = COPY(menu[res], 2)
IF COPY(menu[res], LENGTH(menu[res], 1)) = "}" THEN menu[res] = COPY(menu[res], 1, LENGTH(menu[res] - 1))
PRINT menu[res]
ハイアンドロー
DIM cards[-1]
DIM mark[3] = "♠", "♥", "♣", "♦"
FOR item IN mark
FOR n = 1 TO 13
arrayPush(cards, item + n)
NEXT
NEXT
FisherYates(cards)
FOR n = 0 TO UBound(cards) - 1
DIM res = SLCTBOX(SLCT_BTN OR SLCT_NUM, 0, "次のカードは「 " + cards[n] + " 」よりHIGH、LOW?", "HIGH", "LOW")
PRINT cards[n] + "<#TAB>" + COPY(cards[n], 2)
PRINT cards[n+1] + "<#TAB>" + COPY(cards[n+1], 2)
DIM before = VAL(COPY(cards[n], 2))
DIM after = VAL(COPY(cards[n+1], 2))
IF res = 0 THEN operator = "<"
IF res = 1 THEN operator = ">"
res = IIF(before + operator + "=" + after, "正解", "不正解")
PRINT res
IF res = "不正解" THEN EXIT
PRINT "----------"
NEXT
MSGBOX("全問正解!!!")
//////////////////////////////////////////////////
// 【引数】
// array : 要素を追加する配列(参照引数)
// str : 追加する要素
// 【戻値】
// 処理後の配列の中の要素の数
//////////////////////////////////////////////////
FUNCTION arrayPush(var arr[], str)
DIM res = RESIZE(arr, UBound(arr) + 1)
arr[res] = str
RESULT = res + 1
FEND
//////////////////////////////////////////////////
// 【引数】
// var arr[] : シャッフルする配列(参照引数)
// 【戻値】
//
//////////////////////////////////////////////////
PROCEDURE FisherYates(var arr[])
FOR n = UBound(arr) TO 0 STEP -1
DIM num = RANDOM(n+1)
DIM tmp = arr[n]
arr[n] = arr[num]
arr[num] = tmp
NEXT
FEND
//////////////////////////////////////////////////
// 【引数】
// expr : 評価する式
// truepart : 評価した式がTrueのときに返す値
// falsepart : 評価した式がFalseのときに返す値
// 【戻値】
// truepart : 評価した式がTrueのとき、falsepart : 評価した式がFalseのとき
//////////////////////////////////////////////////
FUNCTION IIF(expr, truepart, falsepart)
IFB EVAL(expr) THEN
RESULT = truepart
ELSE
RESULT = falsepart
ENDIF
FEND
//////////////////////////////////////////////////
// 【引数】
// 配列 : 上限値を求める配列
// 【戻値】
// 配列の上限値
//////////////////////////////////////////////////
FUNCTION UBound(array[])
RESULT = RESIZE(array)
FEND
- 結果
♦12 12 ♠1 1 正解 ---------- ♠1 1 ♥7 7 正解 ---------- ♥7 7 ♥13 13 正解 ---------- ♥13 13 ♦9 9 正解 ---------- ♦9 9 ♥1 1 正解 ---------- ♥1 1 ♥5 5 正解 ---------- ♥5 5 ♥10 10 正解 ---------- ♥10 10 ♣4 4 正解 ---------- ♣4 4 ♠10 10 正解 ---------- ♠10 10 ♥6 6 不正解
今年の恵方を求める
DIM year = getYear(today())
// 西暦の下1桁
DIM y = COPY(year, LENGTH(year), 1)
SELECT y
CASE 0; PRINT "西南西微西"
CASE 1; PRINT "南南東微南"
CASE 2; PRINT "北北西微北"
CASE 3; PRINT "南南東微南"
CASE 4; PRINT "東北東微東"
CASE 5; PRINT "西南西微西"
CASE 6; PRINT "南南東微南"
CASE 7; PRINT "北北西微北"
CASE 8; PRINT "南南東微南"
CASE 9; PRINT "東北東微東"
SELEND
//////////////////////////////////////////////////
// 【引数】
// date : 日付(”YYYYMMDD” or “YYYY/MM/DD” or “YYYY-MM-DD” or “YYYYMMDDHHNNSS” or “YYYY/MM/DD HH:NN:SS”)
// 【戻値】
// 指定した日付の「年」
//////////////////////////////////////////////////
FUNCTION getYear(date)
GETTIME(0, date)
RESULT = G_TIME_YY4
FEND
//////////////////////////////////////////////////
// 【引数】
//
// 【戻値】
// 今日の日付
//////////////////////////////////////////////////
FUNCTION today()
GETTIME()
RESULT = G_TIME_YY4 + "/" + G_TIME_MM2 + "/" + G_TIME_DD2
FEND
- 結果
西南西微西