文字の挿入について教えて下さいNo.04166
さん 04/03/05 12:35
 
最大で538文字(半角英数のみ)の可変長の行を編集したと思い、マクロを作り始め
たのですが、最初からつまづいてしまいました。
編集前のレイアウトは、28文字,10文字,以下15文字と5文字のテーブルで、最大25回
繰り返します。
テーブルには、片方に文字が入っている時と両方入っている時があります。
それから、27文字と28文字には、繰り返しの数が記録されていますが"00"の時だけは、
データ無しとして、29文字目に改行が入っています。
編集したい内容は以下の2点です。
1.27文字と28文字の繰り返しの数が"00"の時は、29文字目から"NO DATA"
と挿入。
2.それ以外の時は、Excelに取り込めるように項目の最後にカンマを挿入。

上の条件で、マクロを作り始めたのですが、1の条件がうまくいきません。
(初心者なので条件1でつまづいた為、条件2はなにも書いてません)

以下のマクロを書いたのですが、"NO DATA"と挿入されません。

disabledraw;
gofileend;
#endline = lineno - 1;
gofiletop;
#line = lineno -1;
while( #line == #endline ) {
       $colum = gettext(26,#line,27,#line);
       if ($colum == "00") {
           moveto 28,#line;
           insert ",NO DATA";
       }
       #line = #line + 1;
}
endmacro;

長くなり申し訳ありませんが、宜しく御願いいたします。

[ ]
RE:04166 文字の挿入について教えて下さいNo.04167
Mattz さん 04/03/05 13:02
 
Mattzです。
とりあえず、おかしな点2箇所。

---8<---
>while( #line == #endline ) {
              ~~
              != では?
>       $colum = gettext(26,#line,27,#line);
                                  ~~
                                  28 では?
---8<---

うまく分岐しないときは、条件となっている変数を
message文で表示させるとかして確認するといいと思いますよ。
if ($colum == "00")
の前に「message( $colum );」 と入れてみるとか。

[ ]
RE:04167 文字の挿入について教えて下さいNo.04169
さん 04/03/05 19:25
 
Mattzさん、ありがとうございました。
教えていただいたように修正したら、挿入できました。

それで、新たに質問なのですが、
$colum = gettext(26,#line,28,#line);
                          ~~
27文字目と28文字目の取り込みが、gettext(26,#line,28,#line); に何故なるのでし
ょうか。
又、条件2の改行判定を行う為、27文字目と28文字目が00で29文字目に改行の行を作
り、
$colum = gettext(28,#line,30,#line);
if($colum == "0x0D" )
   message "29文字目は改行です";
else
   message "29文字目は改行ではありません $colum = " + $colum;

と指定しましたが、何も表示されず改行が判断できません。
"0x0D"を"\n"に変えても同様です。
改行の文字コードを知っていたら、教えて下さい。
度々、申し訳ありませんが宜しく御願いいたします。

[ ]
RE:04169 文字の挿入について教えて下さいNo.04170
Mattz さん 04/03/05 20:58
 
Mattzです。

>27文字目と28文字目の取り込みが、gettext(26,#line,28,#line);
>に何故なるのでしょうか。

たとえば
gettext(26,#line,26,#line)
とやると、始点と終点がまったく同じなので、何の文字もget出来ない
というのはわかりますか?そこまでわかれば
gettext(26,#line,27,#line) // ← 1文字gettext
gettext(26,#line,28,#line) // ← 2文字gettext
なのは自明です。

>と指定しましたが、何も表示されず改行が判断できません。

どうしても「19桁目が改行か?」で判定しなければならないのですか?
if( linelen == 28 )
でも同じ判定は出来ますよ。

[ ]
RE:04170 文字の挿入について教えて下さいNo.04172
さん 04/03/05 21:41
 
Mattzさん。何度もすみませんでした。
linelenコマンドを知らなかったので可変域になった場合に、改行の判定が必要かと
思っていました。
最初に考えていたものより、かなり簡単に出来そうな感じです。
ありがとうございました。

[ ]