#author("2021-01-26T08:05:54+09:00","","")
[[MIFES/マクロ編/行頭の文字で判断する(if構文)]]

**マクロ編 #2 行頭の文字で判断する-if構文- [#sc6772db]

※マクロコマンド作成の手順を確認してから、このページをご覧ください。

人が無意識に行っている「判断」するという動作。
「if構文」は、この「判断」をコマンド自身にさせるためのものです。

ここではその例として、カーソル位置の行頭が●のときには●を削除して【】を挿入し、
それ以外の行はハードタブでインデントを挿入するコマンドを作成しましょう。
まずは基本処理部分
基本部分は「マクロ編 #1」同様、キーボードマクロに記録したのち、【マクロ言語に変換】し、
そこに1文字目が●かどうかを判断する「if構文」を挿入しましょう。

次の操作をキーボードマクロに記録しましょう。

1 行頭へ移動する
2 行頭の●を削除して、「【」を挿入する
3 行末へ移動する
4「】」を挿入する
5 1行下へ移動する
6 行頭へ移動する
7[Tab]キーでハードタブを挿入する

動作を確認したのち、新しいファイルに【マクロ】-【キーボードマクロ】-【マクロ言語に変換】機能でマクロソースを作成します。
ソースは次のようになります。

&ref(02_2.gif);

-execmd:
MIFESコマンドを実行する。
delchar:
カーソル位置から()内で指定した文字数分削除する。
-insstr:
カーソル位置に(”“)内の文字列を挿入する。
-move:
()内で移動の向き(上、下など)を指定する。"d"と指定すると、1行下に移動する。
マクロソース

* 判断する部分を追加 [#wd4890de]

行頭の1文字が●ならばマクロソース「A」の処理、それ以外なら「B」の処理を実行するように、「if構文」を挿入します。

「if構文」は「もし△△ならば○○を実行し、それ以外の場合は××を実行する」という処理を実現するものです。実際には、次のように記述します。

&color(red){if △△ ○○ else ×× endif};

途中に改行を入れたり、半角スペースを使って先頭位置を決まった文字数分下げたりすると、よりわかりやすくなります。
※タブで字下げをしてもかまいません。ただし、全角スペースで字下げするとコンパイル時にエラーになります。
今回の例題は△△部分が「先頭の文字が●ならば」になりますが、○○部分はマクロソース「A」の処理、××部分は「B」の処理なので、それ以外の部分は不要になります。
if構文を書き加え、不要な部分を削除すると、次のようになります。(赤下線が書き加えた部分です)

&ref(02_3.gif);

マクロソース判断のルールである△△部分には以下のとおり「カーソル位置の文字が●ならば」という意味の式を入力します。

&ref(02_5.gif);

@code :カーソル位置の文字を表します。

== :この記号の左右が同じかどうかを判定します。

'●' :文字としての●を表します。
関係演算子

今回のif構文では「等しい(同じ)」という意味の==を使いましたが、このほかにも左右の関係を調べる記号があります。覚えておくと便利な記号です。
※()内の数学記号と同じ意味です。
○○==□□ 	○○は□□と等しい(=) 	○○!=□□ 	○○は□□と同じではない(≠)
○○>=□□ 	○○は□□以上の値(≧) 	○○<=□□ 	○○は□□以下の値(≦)
○○>□□ 	○○は□□より大きい(>) 	○○<□□ 	○○は□□より小さい(<)


最後にコマンド名を「括弧とタブ」とし、コマンドのコメントを書き換えてソースは完成です。
コマンド名に拡張子「.MAC」をつけてソースをファイルに保存し、コンパイルをしてみましょう。コンパイル以降の手順は「マクロ編 #1 マクロに挑戦!」と同じです。参考にして完成させてください。

&ref(02_4.gif);

マクロソース(色替え表示)
マクロソースの拡張子とキーワードの色替え表示について

【キーワードの追加・変更】機能には、マクロ言語MIL/W用のキーワード定義がデフォルトで定義されており、「.MAC」という拡張子に適用されます。

今回の例のソースを拡張子「.MAC」で保存すると、図のように色分け表示されます。

次回は「繰り返し」処理を説明します。今回作ったコマンドをファイルの先頭から最後まで一気に実行するコマンドに改良しましょう。
//

トップ   差分 履歴 リロード   一覧 検索 最終更新   ヘルプ   最終更新のRSS