[ 新規に投稿する ]

ラベルについてNo.09771
たけとり さん 18/09/13 23:09 [ コメントを投稿する ]
   お世話になります。

 標記についてですが、マクロヘルプの「goto文とラベル」項目では、 
> ラベルは、適当な英数字が指定できます。
と記載がありますが、「call _LABEL」のように、アンダースコアが含まれていても、特にエラーが起きないようです。
 これは、そのうち元に戻されますでしょうか。
 できましたら、このまま(ラベル名にアンダースコアも使えるよう)にしていただけたら、ありがたいです。


 また、ラベル名を間違えてcall/goto分を呼び出したときに、以下のようなエラーダイアログが表示されます。
---------------------------
エラー
---------------------------
goto/callで飛び先が見つかりません。飛び先: IFA
---------------------------
OK   
---------------------------

 しかし、以下のようにエラー表示を消す処理を入れても、当該ダイアログのタイトルが「エラー」であるにもかかわらず、当該ダイアログが表示されてしまいます。
 できましたら、ラベル名間違いの時も、seterrormodeかdisableerrormsgで、このダイアログを表示しないでもらう
(そして、できましたら、resultがfalseになってもらう)
ようにしていただけたら、と思います。

 よろしくお願いします。

call IF;
message str(result);
seterrormode 4, 0;
disableerrormsg;
call IFA;
message str(result);
endmacro;

IF:
return;
[ ]
RE:09771 ラベルについてNo.09773
秀丸担当 さん 18/09/14 09:22 [ コメントを投稿する ]
 
ラベル名は、アンダーバーも書いていいことになっていました。
この仕様が無くなるということは無いです。
ヘルプのほうを修正させていただきます。

ラベル名の間違いによるエラーは、マクロの書き方が間違っているというような文法エラーに近いエラーで、disableerrormsgをしても出なくなるということは無いです。
ヘルプには「エラー」というタイトルのメッセージボックス全てと書いてありますが、必ずしもそういうわけではないので、ヘルプのほうを修正させていただきます。
[ ]
RE:09773 ラベルについてNo.09774
たけとり さん 18/09/14 20:40 [ コメントを投稿する ]
 
>ラベル名の間違いによるエラーは、マクロの書き方が間違っているというような文法エラーに近いエラーで、disableerrormsgをしても出なくなるということは無いです。

 実は、以下のように、switch〜case代わりに使おうとしているところがありまして、ラベル名を文字列変数で呼び出す「call $x」みたいな使い方だと、必ずしも書き方の間違いではないのかな、と思いまして投稿させていただきました。

〜〜〜
$func = input("何か入力してください。");
call $func;
if(!result) message "正しい値を入力ください。"
endmacro;

call A:
return $varA;

call B:
return $varB;
〜〜〜


 いずれにしましても、ラベル名にアンダースコアを含めることが可能という件と含めまして、了解です。

[ ]
RE:09774 ラベルについてNo.09776
秀丸担当 さん 18/09/18 08:27 [ コメントを投稿する ]
 
確かにcall $x;のように変数名で呼ぶ場合は、エラーを表示させないようにできたら、意味はあると思います。
以前は変数名で呼ぶ方法は無くて、後から追加されたため、もともとの動作に合わせてそうなっていました。
disableerrormsgだと互換性上問題になるかもしれないので、seterrormodeで抑制する方法を検討したいと思います。
[ ]
RE:09776 ラベルについてNo.09783
たけとり さん 18/09/22 14:05 [ コメントを投稿する ]
  β5で以下のようなマクロで、所望の動作をすることを確認しました。
また、ヘルプの追記も併せて、ありがとうございました。

$a = "b";
seterrormode 5, 0;
call $a;
if(getresultex(17)) message "サブルーチンがありません。";
endmacro;

a:
return;


 ところで、単なる興味本位の質問で恐縮ですが…。
 マクロヘルプの「変数の使い方」項目には
>変数名には30文字程度までの適当な英数字
と記載がありますが、ラベル名についてはこの辺の記載がないようです。
 手元で試したところ、ラベル名長が40文字以上だとgetresultex(17)がtrueを返しました。
 ラベル名は40文字ぐらいまで…という理解でいいでしょうか?
(なお、39文字でも十分長いと思っています。)


 さらに今気づいたのですが、変数名もアンダーバーが使えます…よね?

 よろしくお願いします。
[ ]

[ 新規に投稿する ]