# frameオブジェクトの配列idとして$_CURを指定すると、カレント座標軸
# の配列idが自動的に代入されます。配列id=0を持つデータオブジェクトの
# 数値データ数を求め、変数$lengthに代入します。
$length = $graph->frame[$_CUR]->data[0]->datalength();
# $length < 1の場合(データが無い場合)スクリプトを終了します。
if ($length < 1)
{
exit(1);
}
# 変数$maxvalの初期値として、数値データの0番目を代入します。
$maxval = $graph->frame[$_CUR]->data[0]->y[0];
# 変数$iを0から$lengthまでスキャンすることにより、yデータの値を
# 変数$valに格納します。$valが$maxvalよりも大きければ、$maxval
# の値を$valで置き換えます。
for ($i = 0; $i < $length; $i++)
{
$val = $graph->frame[$_CUR]->data[0]->y[$i];
if ($val > $maxval)
{
$maxval = $val;
}
}
# メッセージエリアに最大値を表示します。
print "$maxval\n";
以上のスクリプトは以下のように変形し、より一般化することも可能です。
$length = $graph->frame[$_CUR]->data[0]->datalength();
if ($length < 1)
{
print 'No data found. aborted.';
exit(1);
}
################## この部分が変更点です ###############
# CUI関数"edittext"を用いて、メニュー画面上から、最大値を求める
# データオブジェクトの番号を、ユーザが選択できるよう一般化されて
# います。 ユーザが選択した番号は、特殊変数$_RETに返されます。
# この値を$indexに保管します。
if (!edittext(0, 'input data object index'))
{
print "canceled\n";
exit(1);
}
$index = $_RET;
# ユーザが入力した番号をチェックし、不正なデータオブジェクト番号
# の場合スクリプトを停止するためのエラールーチンです。
if ($index < 0 || $index >= $graph->frame[$_CUR]->length('data'))
{
print 'invalid data index. aborted.';
exit(1);
}
######################## ここまで #######################
$maxval = $graph->frame[$_CUR]->data[$index]->y[0];
for ($i = 0; $i < $length; $i++)
{
$val = $graph->frame[$_CUR]->data[$index]->y[$i];
if ($val > $maxval)
{
$maxval = $val;
}
}
print "maxdata of data[$index] = $maxval\n";