アプリ版:「スタンプのみでお礼する」機能のリリースについて

お世話になります。
teratermマクロのstrcompareの使い方についての質問です。

Inputboxで入力した文字から一部の文字列をstrcopyで抜き出し、その抜き出した文字列に応じて処理を実行させたいのですが、
特定の文字以外の文字列を入力してしまった際の処理をどのように書けばいいのかが分かりません。

以下、現在作成中のコードです。
(NAMEは抜き出した文字列です)

strcompare NAME 'aaa'
if result=0 go to aaa
strcompare NAME ' bbb'
if result=0 go to bbb

:aaa
messagebox 'aaa' 'name'
end
:bbb
messagebox 'bbb' 'name'
end

この場合例えば'xyz'という文字列を抜き取ってしまったときの制御が行えません。
if then elseで作り込めますでしょうか?

よろしくお願いいたします。

A 回答 (1件)

strcompare NAME 'aaa'


if result=0 go to aaa
strcompare NAME ' bbb'
if result=0 go to bbb

; この位置にくるのは、ここまでにif result=0 go to ~でジャンプしなかった時だけ
; つまり、(C言語の)swithのdefault:節に相当する
messagebox '非該当' 'name'
end

:aaa
(以下略)


他には、処理内容によりますが、以下のようなやりかたをすれば、ラベルは不要になります

; 該当する処理があったかどうか
valid_name=0
strcompare NAME 'aaa'
if result=0 then
; aaa に対する処理
valid_name=1
endif
strcompare NAME 'bbb'
if result=0 then
; bbb に対する処理
valid_name=1
endif
(略)
; 該当するものがなかった
if valid_name=0 then
; その他の場合の処理
endif

「処理してマクロ終了」なら、valid_name変数を使用することなくendで終了する、という方法もあります。

他にもいろんな方法が考えられます。
    • good
    • 3
この回答へのお礼

早速のご回答ありがとうございました。
どうやら難しく考えすぎていたみたいです(笑)

また機会がありましたらよろしくお願い致します。

お礼日時:2013/05/01 11:54

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています