〜 テキスト 〜
3桁区切りのコンマ付加・除去

VisualBasicに、3桁区切りコンマを付加できる書式設定関数が存在します。
HSPでは、前ゼロの付加や基数プレフィックスの制御を行い書式を設定する関数があるものの、
3桁区切りコンマの付加を行うことは出来ません。
今回のように、用意されてないものを使いたい場合に簡単に実現できるなら、自分で作ってしまいましょう。
尚、コンマの除去は、単純にコンマがあれば取り除いていくだけのもので、桁位置の確認を行っていません。
コンマ付加した数値はrefstrに文字列として、除去した文字列はstatに数値として代入されます。
HSP3は関数ですので、上記のシステム変数または、そのまま別命令のパラメータとして利用してください。
	

addcomma 対象数値
対象数値コンマ付加をする数値、または数値型変数を指定する。

delcomma 対象文字列
対象文字列コンマ除去をする文字列、または文字列型変数を指定する。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#module
#deffunc addcomma int
	mref value, 0
	mref rstr, 65
	if value < 0 : i = value * -1 : else : i = value
	flg = value < 0 // マイナス時1、その他0
	rstr = ""
	repeat
		tmp = i \ 1000
		if cnt : s = "," + rstr : else : s = ""
		if i / 1000 {
			tmp = "000" + tmp
			strmid tmp, tmp, -1, 3
			rstr = tmp + s
			i = i / 1000
		} else {
			rstr = "" + tmp + s
			break
		}
	loop
	if flg : rstr = "-" + rstr // マイナスだったなら符号を付ける
	return

#deffunc delcomma str
	mref string, 32
	mref stt, 64
	stt = 0
	repeat
		instr chk, string, "," // コンマを検索し、あれば除去
		if chk = -1 : break
		strlen i, string
		strmid tmp, string, chk + 1, i - chk
		strmid string, string, , chk
		string += tmp
	loop
	stt = 0 + string
	return
#global

	data = 1, 22, 333, 4444, 55555, 666666, 7777777, 88888888, 999999999
	repeat 9
		addcomma data.cnt // 3桁区切りコンマをつける
		pos  10, cnt * 20 + 10 : mes data.cnt
		pos 120, cnt * 20 + 10 : mes "→"
		pos 170, cnt * 20 + 10 : mes refstr
		delcomma refstr // 3桁区切りコンマを外す
		pos 280, cnt * 20 + 10 : mes "→"
		pos 330, cnt * 20 + 10 : mes stat
	loop
	stop

結果 = addcomma(対象数値)
結果付加した文字列の受取先を指定する。
対象数値コンマ付加をする数値、または数値型変数を指定する。

結果 = delcomma(対象文字列)
結果除去した数値の受取先を指定する。
対象文字列コンマ除去をする文字列、または文字列型変数を指定する。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#module
#defcfunc addcomma int value, local i, local flg, local s, local rstr
	if value < 0 : i = value * -1 : else : i = value
	flg = value < 0 // マイナス時1、その他0
	repeat
		if cnt : s = "," + rstr : else : s = ""
		if i / 1000 {
			rstr = strf("%03d", i \ 1000) + s
			i /= 1000
		} else {
			rstr = str(i) + s
			break
		}
	loop
	if flg : rstr = "-" + rstr // マイナスだったなら符号を付ける
	return rstr

#defcfunc delcomma str string, local s
	s = string
	repeat
		chk = instr(s, , ",") // コンマを検索し、あれば除去
		if chk = -1 : break
		s = strmid(s, 0, chk) + strmid(s, chk + 1, strlen(s) - chk)
	loop
	return int(s)
#global

	data = 1, 22, 333, 4444, 55555, 666666, 7777777, 88888888, 999999999
	foreach data
		pos  10, cnt * 20 + 10 : mes data.cnt
		pos 120, cnt * 20 + 10 : mes "→"
		pos 170, cnt * 20 + 10 : mes addcomma(data.cnt) // 3桁区切りコンマをつける
		pos 280, cnt * 20 + 10 : mes "→"
		pos 330, cnt * 20 + 10 : mes delcomma(refstr) // 3桁区切りコンマを外す
	loop