■書式
ケース開始
ケース (〈条件式1〉) → 〈条件式1〉が真ならば〈コマンド群1〉を実行する。
〈コマンド群1〉
・
・
・
ケース (〈条件式2〉) → 〈条件式2〉が真ならば〈コマンド群2〉を実行する。
〈コマンド群2〉
・
・
・
ケース (〈条件式n〉) → 〈条件式n〉が真ならば〈コマンド群n〉を実行する。
〈コマンド群n〉
・
・
・
ケース (〈条件式m〉) → 〈条件式1〉から〈条件式n〉のいずれの条件も満たしていない
〈コマンド群m〉 ときは〈コマンド群m〉を実行する。
・
・
・
ケース終了
■関連コマンド
ケース中止 → ケースを強制的に終了するときにケース範囲内で指定する。普通条件コマンドと共に使用する。
■機能
複数の条件に応じて処理を分岐させるときには、ケース開始コマンドとケース終了コマンドではさみ、その中に条件と一括処理コマンドを記述する。分岐する条件は、ケースコマンドを使って必要な数だけ指定する。尚、該当する条件を複数指定しても、一番最初に表われた条件のみを実行する。ケース終了後はケース終了コマンドの次のコマンドの制御に移行する。
■引数
〈条件式〉;実行するための条件を、関数や変数、論理演算子(.not .and .or)などを使った計算式で指定する。
〈コマンド群〉;対応する条件を満たしたときに実行する一括処理コマンドを記手続きコマンドなどを使って
ケース範囲の中に入ると、実行結果が不定になるので行わないこと。述する。
【注意】分岐コマンドや繰り返し中止コマンドは繰り返し範囲内で指定する。また、このコマンド単独で使用することはなく、
条件コマンドなどと一緒に使用する。
さて、入力コマンドと分岐コマンドについてのところで解説しましたテクニック1【機能キー入力コマンドでの分岐の使用例】で、行き詰まるところが出てきます。まず、機能キーを多数設定した場合、分岐がやたらと多くなり、次にどの処理へと移行しているのかわかり辛くなること。また、分岐コマンドの性格上、分岐が終了した後の次の行の処理へと移行してしまうことです。
ここで活躍するのがケースコマンドです。また、キー入力コマンドの代わりにメニューコマンドを併用して使えば、一括処理は非常にわかり易いものになります。この処理系はよく使いますので、数学の公式を覚える感覚でマスターしてしまいましょう!!
(注;サンプルプログラムのなかで、一連の処理手順にあまり関係のないものは省いています。)
【リスト1】
1行目 | メニュー &年1,初期項目=2,文字選択=する¥
,{0,5,19," 定期テスト 偏差値レーダー印刷 システム a",黄}¥ ,{0,7,20,"◇◇◇ 学年を選択して下さい。 ◇◇◇",水}¥ ,{1, 9,31,"1:高校1年生",白}¥ ,{2,11,31,"2:高校2年生",白}¥ ,{3,13,31,"3:高校3年生",白}¥ ,{4,15,31,"4:終了 ",白}¥ ,{0,17,15,"矢印キーまたは番号を選んでRETキーを押して下さい。”,緑,点滅} |
2行目 | ケース開始 |
3行目 | ケース(&年1=1)
代入 &学年1=”1” 代入 &学年2=”\H1-” |
4行目 | ケース(&年1=2)
代入 &学年1=”2” 代入 &学年2=”\H2-” |
5行目 | ケース(&年1=3)
代入 &学年1=”3” 代入 &学年2=”\H3-” |
6行目 | ケース その他
分岐 処理終了1 |
7行目 | ケース終了 |
【解説】
1行目;メニューコマンドによって、画面には
定期テスト 偏差値レーダー印刷 システム
◇◇◇ 学年を選択して下さい。 ◇◇◇
1:高校1年生
2:高校2年生
3:高校3年生
4:終了
矢印キーまたは番号を選んでRETキーを押して下さい。 と表示されています。
2行目;ケースコマンドと7行目のケース終了コマンドで囲まれた範囲内で、変数&年1に代入された数に応じて
以下で説明する処理を行います。
3行目;変数&年1に”1”が代入されているときに変数&学年1に”1”、&学年2に”\H1-”という文字列が代入されます。
4行目;変数&年1に”2”が代入されているときに変数&学年1に”2”、&学年2に”\H2-”という文字列が代入されます。
5行目;変数&年1に”3”が代入されているときに変数&学年1に”3”、&学年2に”\H3-”という文字列が代入されます。
6行目;変数&年1に”1〜3以外”の数字が代入されているときに名札 処理終了1に分岐します。
6行目 | ケース その他
分岐 処理終了1 |
6行目は、(あまりしませんが...)論理演算子を使って次のようにもできます。
6行目 | ケース (&年1<>(1 .or 2 .or 3))(→これも入れ子処理の一例です。)
分岐 処理終了1 |
7行目;ケース範囲を終了し、次の行の制御へと移行します。
【補足】
【ケースコマンドと分岐、条件コマンド】
【リスト1】の分岐コマンドをケースコマンドを使って【リスト2】のように書き換えてみましょう。
【リスト1】
1行目 | 画面表示 (10,14),"年度の年間行事予定表を作成します。(ENT:作成する ESC:しない)",白 |
2行目 | 名札 ミス1 |
3行目 | 機能キー入力 (9,10),カーソル=オフ,&確認 |
4行目 | 条件 (&確認=13) 分岐 処理1 |
5行目 | 条件 (&確認<>27 .AND &確認<>13) 分岐 ミス1 |
6行目 | 条件 (&確認=27) 分岐 処理5 |
7行目 | 名札 処理1 |
【リスト2】
1行目 | 画面表示 (10,14),"年度の年間行事予定表を作成します。(ENT:作成する ESC:しない)",白 |
2行目 | 名札 ミス1 |
3行目 | 機能キー入力 (9,10),カーソル=オフ,&確認 |
4行目 | ケース開始 |
5行目 | ケース (&確認=13) |
6行目 | 分岐 処理1 |
7行目 | ケース (&確認=27) |
8行目 | 分岐 処理5 |
9行目 | ケース その他 |
10行目 | 分岐 ミス1 |
11行目 | ケース終了 |
12行目 | 名札 処理1 |
いかがでしょうか?行は増えてしまいましたが、処理系がわかり易くなったと思われませんか?また、ケースコマンドではそれぞれのケース処理における分岐コマンドの処理ばかりか複数のコマンドの追加・実行ができます。これは分岐コマンドや条件コマンドと一番違うところです。
以上のことから、分岐、条件、ケースコマンドについての違いは、
★分岐コマンドはある条件のときに、ある処理を迂回したいときに使用する。
★条件コマンドはある条件のときに、ある処理を1つ行いたいときに使用する。
★ケースコマンドはある条件のときに、ある処理を2つ以上行いたいときに使用する。
と考えればよいでしょう。このことをポイントに分岐コマンドと条件コマンド、ケースコマンドを使い分けて下さい。
【応用】
ケースコマンドも繰り返しコマンドの入れ子処理と同様に、ケース範囲内に、更にケース範囲(ケースの入れ子)や繰り返し範囲などを指定することができます。この処理系を使えば、アイデア次第で非常に簡単で処理能力のある一括処理プログラムをつくることができます。どこかで挑戦してみてくださいね!!
年度更新や会社のシステムの変更などで一括処理を書き換えたいということがよく起ります。このときのために、一括処理プログラムはできるだけわかり易く、すぐに変更できるものでありたいですね。