Written in Japanese(UTF-8)
2014.8.30
INASOFT


/トップ/いじくるつくーる/ダウンロード/WebHelp/ヘルプトップ/


R-Script プログラマーズガイド(6/7)



 ここには R-Scriptを使ってレジストリ編集ツールを作りはじめる際の手助けになる文章が書かれています。
 このコーナーのトップページはこちら。

※このページのサンプルプログラム中で、表示の都合上で1行に入りきらずに改行している場合がありますが、実際にスクリプトを作るときには改行を入れないようにして下さい。R-Scriptは、基本的に行を単位にして実行を行っています。




6. 分岐・繰り返し処理


 ふつう、スクリプトは上から下へ流れていきますが、スキップしたり、戻ったり、繰り返したりという処理が必要になることがあります。ここでは、それらについて扱っていきます。

6.1 IFによる分岐


 IF文にはいくつかの文法があります。
 くわしい文法については、文法のページを参照してもらうことにして、ここではよく使うもののみを取り上げます。

 レジストリ編集は、Windowsのバージョンによって場合分けをしなければならないことが多々ありますが、Windowsのバージョンや種類を示す変数がありますので、それらも同時の紹介していきます。

 Windowsのバージョンは、winverという変数に格納されています。

   winver = バージョンの整数部*100 + 小数部

 また、Windows NT系であれば、isNT という変数に1が格納されます。
 従って、
 となりますので、この情報を元に、OSの種類による場合分けができます。
 例えば、

// で始まる行はコメントで、インタプリタは無視します。

if ( winver == 400 && isNT == 1 ) {
 // Windows NT 4.0 だった場合
 :
}
else {
 // そうでなかった場合
 :
}

if ( winver == 410 && isNT == 0 ) {
 // Windows 98 だった場合
 :
}
else {
 // そうでなかった場合
 :
}


if ( winver >= 410 ) {
 // Windows 98 以上だった場合
 :
}
else {
 // そうでなかった場合
 :
}

if ( winver == 400 ) {
 // Windows 95/NT4 以上だった場合
 :
}
else if ( winver == 410 || winver == 490 ) {
 // Windows 98/Me だった場合
 :
}
else if ( winver == 500 ) {
 // Windows 2000 だった場合
 :
}
else if ( winver == 501 && isNT == 1 ) {
 // Windows XP だった場合
 :
}
else if ( winver >= 502 && isNT == 1 ) {
 // Windows Server 2003以上だった場合
 :
}

のようにできます。


6.2 GOTO命令によるジャンプ


 GOTO文を使うと、目的の行にジャンプできます。
 行き先は「ラベル」で指定します。
 「ラベル」は :(コロン)から始まる英字+英数字です。

例えば、
goto :label
 :
 :
 :

:label
 :
 :
 :

goto :label
という行にくると、
:label
という行にジャンプします。


6.3 WHILE命令による繰り返し


 WHILE命令を使うと、スクリプトないの任意の箇所を、条件を変えながら、繰り返して実行できます。
max = 10	// 10個の配列を準備する
array a[max]

i = 0		// カウンタの初期値は0
while( i < max ) {	// 10個の配列を走査する
	a[i] = i*5
	i++	// カウンタを1つ増やす
}

 ここで、i++ のようなインクリメントの文を忘れると、スクリプトは永久ループします。
 Ctrl+Alt+Delで強制終了させなければならないことになりますので、気を付けましょう。

 なお、WHILE の中で BREAK を使うと、繰り返しの外に出ることができます。
i = 0
while( i < 10000 ) {
	if ( 1 == question( "まだ続けますか?\n" + i, "質問" ) ) {
		i++
	}
	else {
		break
	}
}

 また、WHILE の中で CONITNUE を使うと、繰り返しの条件判定にジャンプします。

 IFWHILE はネスト(入れ子構造に)できます。
 ネストした WHILEBREAKCONTINUE をした場合、一番内側の WHILE に対する BREAKCONTINUEであると見なされます。一番内側以外の WHILE から BREAKCONTINUEしたい場合は、GOTO 命令を使って下さい。


 ※美しいプログラムを書くには、GOTO命令を極力使わないようにすることを心がけましょう。


 戻る 次へ

 目次
 R-Scriptについて
 プログラマーズガイドの目次


※このページは、ソフトウェアに付属のヘルプファイルをWeb用に再構築したものです。大部分に自動変換を施しているため、一部は正しく変換しきれずに表示の乱れている箇所があるかもしれませんが、ご容赦下さい。また、本ドキュメントはアーカイブドキュメントであり、内容は「いじくるつくーる」最終公開時点、あるいは、それより古い時点のものとなっております。一部、内容が古くなっている箇所があるかと思いますが、あらかじめご了承下さい。
※このページへは、自由にリンクしていただいてかまいません。

■このページに関するご意見をお待ちしております → フィードバックページ

/トップ/いじくるつくーる/ダウンロード/WebHelp/ヘルプトップ/