一括表示

− 野ざらし言 −

[4007] マクロの終了

としき 2011/10/19(Wed) 21:10
http://www1.hinocatv.ne.jp/toshiki/
半角スラッシュ「/」はマクロの終了とのことですが、これを使っているマクロはあまり見たことがありません。自分でも使ったことはありません。
これを使うべきときはどんなときなんでしょうか。
また、これを使っている有名なマクロとしてはどんなものがありますか。

なんかどうでもいい様な事ですが、なんとなく気になりました。
お分かりであればお教えください。

[4008] Re: マクロの終了

めざら 2011/10/21(Fri) 00:13
[4007]へのコメント http://homepage3.nifty.com/mezala/
 '/'はマクロの強制中断命令なのですが,では'.'と何が違うかというと,
・マクロのネストなどは無視して完全にマクロを停止する
・キー監視型マクロもろとも停止する(これは危険)
…という感じです。とにかく実行中のマクロを全部停止。

 一方,'.'はどういう停止かというと,
・現在実行中のマクロを中断(して呼び出し元に戻る)
 (コールされているマクロで実行されると中断して呼び出し元に戻る)

 '/'が実際に使われている例はほとんどなく,ライブラリ公開マクロではBISHOPくらいでしょうか。初期には結構使われていたと思われます。

 一番有名なのは,製品版サンプルVZ.DEFのイベントマクロ !Abort。
 次に有名なのは,game.def。

 いずれも他のマクロに影響しない単純な文の中で使われているだけです。マクロのネストをすっとばして完全停止という機能が真に生かされている使い方を見たことはありません。

[4010] Re^2: マクロの終了

としき 2011/10/22(Sat) 11:21
[4008]へのコメント http://www1.hinocatv.ne.jp/toshiki/
なかなか、半角スラッシュ1文字なんて、検索してもわからないものですから質問させていただきました。そうですか、やっぱり使用頻度は低いのですね。
私は、キー監視型マクロはほとんど使っていないので、これについてはあまり問題は生じないのですが、だからといって、今後、自分のマクロで'/'を使うかというとそんなことはなさそうです。

>  一番有名なのは,製品版サンプルVZ.DEFのイベントマクロ !Abort。
>  次に有名なのは,game.def。

確認しました。なるほど、こういうところで使っているのですね。

>  マクロのネストをすっとばして完全停止という機能が真に生かされている使い方を見たことはありません。

RETではなくHALTのようですからね。
必要な状況は限られるでしょう。
そういう状況が必要になるくらいお行儀の悪いマクロというのは見てみたいものです。

[4011] Re^3: 終了ではないピリオド?

としき 2011/10/22(Sat) 14:21
[4010]へのコメント http://www1.hinocatv.ne.jp/toshiki/
ニフティの過去ログを見ていて、私には理解できない記述を見かけました。
おそらく、ポインタ演算子としてのピリオドだとは思うのですが。
例えば

(f.)?{

とか

?. r$92+wf, (wf*r.)??.

とか。
でも、めざら資源の「VZトークン関連覚書」をみても、ポインタ演算子の書式は「a.0」みたいな形になっていて、後ろ側のオフセットというのかな、そちらが省略できるようには見えないし。

ということで、これは一体何なんでしょうか。

[4012] Re^4: 終了ではないピリオド?

めざら 2011/10/22(Sat) 15:29
[4011]へのコメント http://homepage3.nifty.com/mezala/
 これはバイトポインタ演算子です。
 演算子の右辺の値がゼロの場合は省略できるという「裏技」記法です。

 これは,内部的にこう解釈されるということをご存知の人,あるいは発見した人が好んで使いますね。高橋さんとか。

 あくまでも裏技なので,覚書には敢えて書いてはいません。

 …と言いながら,開きカッコがなくても有るものとして解釈されるとか,書いちゃってますね。相変わらずいい加減な…

[4013] Re^5: 終了ではないピリオド?

としき 2011/10/23(Sun) 15:11
[4012]へのコメント http://www1.hinocatv.ne.jp/toshiki/
やっぱりポインタ演算子でしたか。
ワードポインタ演算子の場合は省略はできないんですか?

[4014] Re^6: 終了ではないピリオド?

めざら 2011/10/23(Sun) 21:35
[4013]へのコメント http://homepage3.nifty.com/mezala/
> ワードポインタ演算子の場合は省略はできないんですか?

 もちろん省略できます。ベタな実験でも確認できますね。

↑ このページの先頭