〜 ナンバー 〜
指定範囲に値を丸めるlimit命令

HSP3から、値が指定範囲外の場合に、範囲内の極値に丸めるlimit関数、limitf関数が追加されました。
使い方は、丸めたい対象の値と、最小値、最大値を指定します。
もし、対象値が最小値以上、最大値以下の大きさならばその値を返し、
最小値よりも小さいならば最小値を、最大値よりも大きいならば最大値を返すというものです。
下記サンプルモジュールも同様に対象値と最小・最大値をそれぞれ指定し、statに結果を返します。
	

limit 対象値, 最小値, 最大値
対象値指定範囲に丸めたい数値、または数値型変数を指定する。
最小値下限値を指定する。対象値がこの値よりも小さい場合は、最小値が得られる。
最大値上限値を指定する。対象値がこの値よりも大きい場合は、最大値が得られる。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
#module
#deffunc limit int, int, int
	mref value, 0 : mref valmin, 1 : mref valmax, 2
	mref stt, 64
	if value < valmin : stt = valmin : else : if value > valmax : stt = valmax : else : stt = value
	return
#global

	data = 1, 22, 333, 4444, 55555, 666666, 7777777, 88888888, 999999999
	pos 10, 10 : mes "[ 1000 < data < 1000000 ] にする"
	repeat 9
		limit data.cnt, 1000, 1000000
		pos  10, cnt * 20 + 30 : mes data.cnt
		pos 100, cnt * 20 + 30 : mes "→"
		pos 130, cnt * 20 + 30 : mes stat
	loop
	stop