Top > 88VAユーザーズクラブ > Q&A集 > 86
#0086/9999 Q&A集
★タイトル (88VAUSER)  95/11/01  00:00  ( 65)
9.11   MS−DOSとPCEのコマンドラインの格納方法の違い
★内容


VAでの、コマンドライン格納方式と、MSDOSのコマンドライン格納方式では、 相
異があります。例えば、

     $ foo Sailor Moon

と打ち込んだ場合の違いを格納領域レベルで観ると下記のようになります。

     PC-Engine:
         0bh,'Sailor Moon',0dh
          |         |       |
          |         |       +------ 終端マーカ(俗に言う`CR')
          |         +-------------- 実際の文字列
          +------------------------ 終端マーカを含めない文字数

     MSDOS:
         0ch,' Sailor Moon',0dh
          |          |       |
          |          |       +------ 終端マーカ(俗に言う`CR')
          |          +-------------- 実際の文字列
          +------------------------- 終端マーカを含めない文字数

さらに VA のコマンドラインが妖しいのは、内蔵デバッガに掛けた時の格納アク
ションとコマンドラインから掛けた格納アクションが違ってしまいます。

デバッガ:

$ mon arg.com         12345
NEC PC-Engine monitor v1.0
Copyright(C) 1987  NEC Corporation
>d0080
454F:0080  0E 20 20 20 20 20 20 20-20 20 31 32 33 34 35 0D             12345
                                .
                                .
                                .
>g
         12345
^^^^^^^^^^^^^^ <- スペースが全て格納されている。
Process terminated


コマンドライン

$ arg         12345
12345
^^^^^ <- 先頭スペースが省略されている。

また、コマンドラインで次の様に打つと更に妖しい動作をします。


$ arg.com 12345
.com 12345
^^^^^^^^^^ <- .com も 引数としてみなされる。


このように、VA の 引数格納の方法は、なにがなんだか良く判らない手法を採ってい
ます。(一番下記は、なんとなく判るような気もしますが。) MSDOSの方に良く観られ
る、 先頭スペース分を最初からあるようなものと処理すると、 痛い目に逢いますの
で、先頭スペース、タブなどをスキップするような素直な組み方をしましょう。そう
すれば、VA でも MSDOS でも 問題なく使える引数取得ルーチンになります。

                         <<< end of article >>>


Top > 88VAユーザーズクラブ > Q&A集 > 86