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

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

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

前回は,なでしこを使った文字列の検索,置換を説明しました。今回は,複雑な条件を記述する事が出来る「条件分岐」について説明します。他の言語で言うと,IFやELSEIF,CASE等条件分岐の命令に当たります。なでしこは同等の命令を持っていますが,その記述の方法についてが中心となります。

動作モードの訂正について

なでしこには3つの動作モードがあるのは一回目に解説しましたが,今回のバッチ処理でcnakoモードは適切で無いと思い直しました。よって,一回目も含め全てのサンプルはdnakoモードで動作させてください。理由としては,cnakoモードはプログラム動作して表示後に待機します。しかし,バッチとして利用するには終了後にコマンド画面が待機しているのは都合が悪いと判断したからです。

変更は簡単で,以下の通りです。

図1 なでしこエディタ上での動作モード変更

図1 なでしこエディタ上での動作モード変更

上記のように[設定][なでしこ実行方式][簡易GUI-gnako.exe(U)]を選択してください。本当にこれだけです。

今回利用するデータ

今回はマイクロソフト社のEXCELを利用します。使うデータは以下の通りです。

図2 対象データ

図2 対象データ

基本その1:もし~ならば(IF)

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

正しい例

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

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

図3

図3

このコードは,エクセルを不可視の状態で起動してから,特定のセル(A2)に入っている値を取得して,変数「製品」に代入。もうエクセルというアプリケーションは不要なので「エクセル終了」命令を使って,EXCELを終了させてます。その後に,今回の主題である「条件分岐処理」を実施してます。気をつける点は,インデントだけです。条件式を記述した行と,その結果から処理を返す行はインデントが変わります。もしそれが同じカラム(列)から始まっていると,条件による分岐処理が全く行われなくなりますので注意してください(一応,以下にダメな例を載せておきます)⁠

インデントが無く,ダメな例

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

上記の場合はインデントが抜けているため,⁠条件分岐処理」の結果を全く考慮せずに「主食」が表示されてます。

著者プロフィール

choco

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

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

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

コメント

コメントの記入