なでしこを使って,日本語でバッチを書こう!

第3回 なでしこでバッチ「条件分岐編」

この記事を読むのに必要な時間:およそ 2 分

基本その2:違えば,もし~ならば(ELSEIF)

ELSEIFの基本構文は以下の通りです。

基本例文

製品とは文字列
値段とは整数
オフでエクセル起動
「{デスクトップ}book1.xls」をエクセル開く
「A2」のエクセルセル取得
製品はそれ。
もし製品がパンならば
 値段は「B2」のエクセルセル取得
 もし値段が110未満ならば
  値段を言う
 違えば
  「高い」と言う
違えば,もし製品が肉ならば
 「高カロリー」と言う。
違えば
 「低カロリー」と言う。
エクセル終了
終わる

このコードの実行結果は,以下のようになります。

図4

図4

上記の場合,変数「製品」の内容が「パン」の時にはエクセルのセル(B2)の値を取得して,パンの値段で更に分岐処理を実行してます。110円未満なら単に表示させて,110円以上だと「高い」と表示させてます。

不等号などの取り扱いが他の言語から移行される方には,わかりづらい場合があるので書き方を変えた例文を載せておきます。

応用例文

製品とは文字列
値段とは整数
オフでエクセル起動
「{デスクトップ}book1.xls」をエクセル開く
「A2」のエクセルセル取得
製品=それ。
もし(製品=パン)ならば
 値段は「B2」のエクセルセル取得
 もし(値段<110)ならば
  値段を言う
 違えば
  「高い」と言う
違えば,もし(製品=肉)ならば
 「高カロリー」と言う
違えば
 「低カロリー」と言う
エクセル終了
終わる

上記の場合,未満を「>」に,等号を「=」に置き換えてみました。あとわかりやすいように,()を使っています。他の言語をやった事がある人ならば,この方が書きやすいと思います。ただし,なでしこの場合の「=」ですが代入(=)と言う意味合いと,比較(==)の意味合いと言う二つの側面がありますので注意してください。どちらの意味合いを持つかは,構文によって自動判定となります。

基本その3:条件分岐(CASE,SWITCH)

CASE,SWITCHの基本構文は以下の通りです。

基本例文

製品とは文字列
オフでエクセル起動
「{デスクトップ}book1.xls」をエクセル開く
「A2」のエクセルセル取得
製品はそれ。
製品で条件分岐
 パンならば,「主食」と言う
 肉ならば,「高カロリー」と言う
 野菜ならば,「低カロリー」と言う
 魚ならば,「DHA」と言う
エクセル終了
終わる

上記の場合,動作結果としては「違えば,もし~ならば」と変わりはありませんが,分岐処理の条件が多い場合は「条件分岐」を利用した方が見やすく,メンテナンスが楽になります。

OpenOffice.orgについて

今回はEXCELを例にしましたが,オープンソースのOpenOffice.orgにも対応してますので,同様の処理は可能です。一番最初の簡単分岐処理だけ,CALC対応に書き直してみますので参考にして下さい。

CALCによる例文

製品とは文字列
オフでCALC起動
「{デスクトップ}book1.ods」をCALC開く
「A2」のCALCセル取得
製品はそれ。
CALC終了。
もし製品がパンならば
 「主食」と言う
違えば
 「副食」と言う
終わる

上記の場合,一目でわかると思いますが,EXCEL関連の命令が全てCALCに置き換わっています。

今回はEXCELを使って,⁠条件分岐処理」について説明しましたが,いかがでしたでしょうか? 他の言語で記述した場合,このような短い行数になりませんが「なでしこ」は専用命令が非常に充実しているので,このように見やすく,わかりやすいプログラムソースとなります。いかがですか,日本語バッチ?

著者プロフィール

choco

東京情報システム株式会社 システム営業部IxDグループに所属。社内ではプロジェクトマネージャーとして日々奔走中。

4年ほど前に「なでしこ」に出会い,その魅力に取り付かれて外販用資産管理ソフトを「なでしこ」で作成。現在は,なでしこ友の会でDB接続に関するプログラムをブログで紹介中。

URLhttp://www.choco.org.uk/chocodb/

コメント

コメントの記入