dcでマクロを使う

ドラマ『就活家族 ~きっと、うまくいく~』(2017)
見ているのがつらいドラマ。感情移入しすぎてストレスが溜まってしまう。それだけ見せてるってことなんですね。ドラマ内の家族全員がだめだめで、ぬかり多すぎです。ぱぱさんは人に厳しいし、息子と娘は自分に甘すぎ、ままさんの生徒への態度も上から目線。ぱぱさんが役員だから安心なんて甘っちょろいこと考えてます。これがドラマ後半でどう変わっていくか楽しみです。このドラマの前半の家族のようにならないよう(ドラマがハッピーエンドだとは限りませんが)に、仕事は誠実にこなさなければ。

ではdcコマンド続きです。

マクロ定義の前に文字列から。文字列は[]でかっこってスタックに積むことができます。

takk@deb8:~$ dc
[HELLO]
                        |       |
                        |       |
                        |       |
                        |       |
                        |[HELLO]|
                        +-------+
                          stack

改行で区切っても、文字列なのでスタックの積み上げとはなりません。
一つのスタック内で改行文字が入っているだけです。

takk@deb8:~$ dc
[
H
E
L
L
O
]
                        |       |
                        |       |
                        |       |
                        |       |
                        +-------+
                        |  [H   | <=ここから
                        |   E   |
                        |   L   |
                        |   L   |
                        |   O]  | <=ここまでは、同じスタック
                        +-------+
                          stack

文字列を入れるつもりで[]を付け忘れると、コマンドと解釈されますので、このようにエラーとなります。(Hはコマンドとしてないため)

HELLO
dc: 'H' (0110) unimplemented
dc: stack register 'L' (0114) is empty

文字列の使い方がわかったので、マクロを作ります。マクロは文字列として作成します。
つまり[]で囲みます。

[[HELLO]p]
                        |          |
                        |          |
                        |          |
                        |          |
                        |[[HELLO]p]|
                        +----------+
                           stack

文字列HELLOを表示するだけのマクロです。
実行するにはxコマンドを使います。

x
HELLO
                        |          |
                        |          |
                        |          |
                        |          |
                        | [HELLO]  |
                        +----------+
                           stack

実行するとスタックにはHELLOという文字列だけが残ります。

xはスタックの一番上を取り出して、マクロと解釈して実行するので、マクロ自体はスタックに残りません。

One response to “dcでマクロを使う

  1. This is the awesome wonderful search engine in the world

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA