分岐
VB6.0では、If・・・End IfおよびSelect Case・・・End Selectで分岐を表現します。Curlにも、それぞれに対応する{if・・・}と{switch・・・}があります。それぞれのサンプルプログラムをお見せしましょう。
リスト4は、{if・・・}を使ったサンプルプログラムです。変数aの値に応じて、処理を3つに分岐しています。aが0より大きい場合は「正の数です!」、0より小さい場合は「負の数です!」、それ以外の場合は「0です!」と表示します。aの値は123なので、このプロジェクトを実行すると「正の数です!」と表示されます。
{let a:int = 123} {let s:String} {if a > 0 then {set s = "正の値です!"} elseif a < 0 then {set s = "負の値です!"} else {set s = "ゼロです!"} } {value s}
実は、リスト4を実行するとエラーになります。Webブラウザに表示されるエラーメッセージの内容は「's'は、nullの既定値の使用を許可されていません。初期値を入力するか、あるいはタイプの前に#を入力して、nullが使用可能になるようにします。」です。つまり{let s:String}という初期値を指定していない宣言がエラーなのです。エラーメッセージを読めば、対処方法はおわかりでしょう。Stringの前に#を付けて、{let s:#String}とすればよいのです。プログラムを修正してから実行してください。
既に何らかのプログラミング言語を使いこなせる人なら経験済みのことだと思いますが、プログラミング言語は解説書を読むだけで習得できるものではありません。実際にサンプルプログラムを打ち込み、間違いに対して表示されるエラーメッセージと格闘しながら体得するものです。これはCurlでも同じです。難しく考えずに、とにかくサンプルプログラムを作ってみることをお勧めします。
次に、VB6.0のSelect Case・・・End Selectに相当する{switch・・・}の構文を紹介しましょう。リスト5は、変数monthの値に応じて季節の名前を表示するサンプルプログラムです。VB6.0によく似ているので、詳しく説明しなくても内容を理解できるでしょう。
{let year:int = 11} {let s:#String} {switch year case 3, 4, 5 do {set s = "春です!"} case 6, 7, 8 do {set s = "夏です!"} case 9, 10, 11 do {set s = "秋です!"} case 12, 1, 2 do {set s = "冬です!"} else {set s = "月の値が不正です!"} } {value s}
これまで見てきたサンプルプログラムからお気づきのことと思いますが、Curlは { と } で囲んでプログラムのブロック(まとまり)を示します。{キーワード・・・}という構文です。これは、VB6.0の「キーワード・・・Endキーワード」に相当します。例えば、Curlの{if ・・・}は、VB6.0のIf・・・End Ifに相当します。Curlの{switch ・・・}は、VB6.0のSelect Case・・・End Selectに相当します。
繰り返し
今度は、繰り返しの構文を紹介しましょう。VB6.0のFor・・・NextおよびWhile・・・Wendによる繰り返しは、Curlでは{for・・・}および{while・・・}で表されます。同じ言葉なので、わかりやすいでしょう。
リスト6は、{for・・・}を使って1~10の数値を表示するサンプルプログラムです。{set s = s & i & ", "}の部分で使われている&は、文字列を連結する演算子です。文字列と整数(ここでは変数i)を連結すると、整数が文字列に変換されます。プログラムを実行すると「1, 2, 3, 4, 5, 6, 7, 8, 9, 10,」と表示されます。
{let i:int} {let s:String = ""} {for i = 1 to 10 step 1 do {set s = s & i & ", "} } {value s}
ループカウンタを使って繰り返す場合は{for・・・}を使い、継続条件のみを指定して繰り返す場合は{while・・・}を使うべきですが、あえてwhileを使って同じプログラムを記述するとリスト7のようになります。
{let i:int = 1} {let s:String = ""} {while i <= 10 do {set s = s & i & ", "} {set i = i + 1} } {value s}
今回は、Curl言語の基本的な構文を紹介しました。はじめてCurlのソースコードを見たときと比べて、現在はどのような感覚になっていますか。「ノリがつかめれば難しくない」と感じていただけたはずです。次回は、Curl言語の構文の続きとして、プロシージャおよびクラスを記述する方法を紹介します。