うまく変換できるようになりました。No.03340
ノノムン さん 02/09/06 22:15
 
山紫水明さん ノノムンです。

ありがとうございます

うまく変換できるようになりました。

それと、次の二つは同じでしょうか?

replaceall "[  \t]$", "", regular;

replaceall "[  \t]+$", "", regular;

また

"0\\.000\\f[1-9]\\f[0-9]*", "\\1.\\2m", regular;

の意味を教えてください。

そして、それを調べるにはどれを見ればよいのでしょうか?

それではよろしくお願いいたします。

山紫水明 wrote:
>
>  ノノムンさん,こんばんは。
>
> 》"行頭空白削除",
> 》"行末空白削除",
> 》"空白行削除",
> 》は出来たのですが、書いていただいたのと少し内容が違いますが、
> 》その違いが判りません。
>
>  メニューの部分を除いて考えてみます。
>
> 》replaceall "^[  \t]", "", regular;
> 》gofiletop;  ← 不要
> 》replaceall "[  \t]$", "", regular;
> 》gofiletop;  ← 不要
> 》replaceall "^[\\n]", "", regular; ← []は不要
> 》gofileend;
> 》insert " ";
>
>  上に示したように2個の gofiletop は不要です。全置換はカーソルがどこにあ
> ってもかまいません。
>  []は2個以上の文字がある場合に使います。この場合は改行文字1字だけです
> ので不要です。
>  以上はあっても害にはなりませんが,余分だということです。
>
> 》0.000001 を 1u の例は 次の場合 0.00000123 を 1.23u
> 》にしなくてはなりません。
>
>  以下のようにしてみてください。
> //----------------------------------------------------------------
> replaceallfast "0\\.00000\\f[1-9]\\f[0-9]*", "\\1.\\2u", regular;
> replaceallfast ".u", "u";
> //----------------------------------------------------------------
>
> 》//----------------
> 》gofiletop;
> 》
> 》//この部分を「EOF」まで繰り返して
> 》//使いたいのですが、判りません。
> 》//{
> 》replacedown "0.000000000000","";
> 》golineend
> 》insert "p";
> 》replacedown "0.000000000","";
> 》golineend
> 》insert "n";
> 》replacedown "0.000000","";
> 》golineend
> 》insert "u";
> 》replacedown "0.000","";
> 》golineend
> 》insert "m";
> 》if( result == eof )
> 》//}
> 》
> 》
> 》//----------------
>
>   replacedown だけでは通常ファイル末尾までカーソルは行きません。
>  この方式でやるとすれば,次のようにする必要があります。
>
> //-----------------------------------------------------//
> gofiletop;
> while( 1 ) {
>     replacedown "0.000000000000", "";
>     if( result == 0 ) break;
>     golineend
>     insert "p";
> }
> gofiletop;
> while( 1 ) {
>     replacedown "0.000000000", "";
>     if( result == 0 ) break;
>     golineend
>     insert "n";
> }
> gofiletop;
> while( 1 ) {
>     replacedown "0.000000", "";
>     if( result == 0 ) break;
>     golineend
>     insert "u";
> }
> gofiletop;
> while( 1 ) {
>     replacedown "0.000", "";
>     if( result == 0 ) break;
>     golineend
>     insert "m";
> }
> endmacro;
> //-----------------------------------------------------//
>
>  ちなみにタグ付き置換を用いれば次のようにもできます。
>
> //-------------------------------------------------------------------//
> disabledraw;
> replaceallfast "0\\.000000000000\\f[1-9]\\f[0-9]*", "\\1.\\2p", regular;
> replaceallfast "0\\.000000000\\f[1-9]\\f[0-9]*", "\\1.\\2n", regular;
> replaceallfast "0\\.000000\\f[1-9]\\f[0-9]*", "\\1.\\2u", regular;
> replaceallfast "0\\.000\\f[1-9]\\f[0-9]*", "\\1.\\2m", regular;
> replaceallfast "\\.\\f[pnum]", "\\1", regular;
> endmacro;
> //-------------------------------------------------------------------//
>
> #目がちらついて 0 の数があやしいかも知れません。(^^;
>
>      では, (^^)/~
>                                         山紫水明

[ ]
RE:03340 うまく変換できるようになりましNo.03341
山紫水明 さん 02/09/07 10:27
 
 ノノムンさん,こんにちは。

》うまく変換できるようになりました。

》それと、次の二つは同じでしょうか?

》replaceall "[  \t]$", "", regular;

》replaceall "[  \t]+$", "", regular;

 行末に2つ以上のスペースをつけた文を作り,それぞれのマクロを別々に実行
してみてください。どうでしょう?

》"0\\.000\\f[1-9]\\f[0-9]*", "\\1.\\2m", regular;
》の意味を教えてください。
》そして、それを調べるにはどれを見ればよいのでしょうか?

 秀丸ヘルプで「タグ付き正規表現による置換」の項を見てください。キーワー
ドで探せるでしょう。
 『Q&A集』(http://homepage2.nifty.com/jr-kun/hidemaru_qa/index.html)
にはもっと丁寧な解説があります。

 #余計なことかもしれませんが,以下はある電子メール入門書の記載です。ご参
考までに。
 「返信メールを書くとき,メールソフトにはたいてい相手のメールを引用符号
付きで全文引用する機能が備わっています。これは,返信を書く際に,どの部分
に答えるかをはっきりさせる上で便利にするためです。引用は必要不可欠な部分
だけにして,残りは削除しましょう。
 相手の署名まで含めて全文をそっくりそのまま後ろにつけるのが返信メールの
書き方だと思っている人がいるようですが,大きな誤解です。これは相手のマシ
ンの容量に余計な負荷を与えるだけでなく,非常に失礼になることがあることを
心に留めておきましょう。受け取った人は,引用の後の方に本文があるかもしれ
ないと考え,自分の書いた文を最後まで眺めさせられることになります。また
メールを突き返されたと受け取る人もいます。」
 これはフォーラムでのコメントにも当てはまると思います。

     では, (^^)/~
                                        山紫水明

[ ]
RE:03341 うまく変換できるようになりましNo.03342
きいろいまふらあ さん 02/09/07 11:57
 
横からごめんください。

>》replaceall "[  \t]$", "", regular;

本題とは関係ないですけど、教科書的には

replaceall "[  \\t]$", "", regular;

とするのが「正しい」です。
文字列中の「\」はマクロの中では「\\」と表記します。
上のマクロは「\」一個でも(なぜか)期待通りに動作し(てしまい)ますが。
#だったら別にいーじゃん。:-p<いやいやそう言わずに。:-)

それと途中(3340番)でスレッドが切れてしまっているようです。
一つの話題は「コメントを投稿する」でつないでいきましょ。>ノノムンさん
「新規に発言する」だと、そこでスレッド(発言のつながり)が切れてしまって、
過去の発言が探しにくいので…。

ちょっと神経質モードでごめんなさい。お気を悪くなさいませんよう。

[ ]
RE:03342 うまく変換できるようになりましNo.03344
Arimac さん 02/09/07 15:24
 
>上のマクロは「\」一個でも(なぜか)期待通りに動作し(てしまい)ますが。

単にタブが文字としてそのまま渡るからですね(^^;

[ ]
RE:03342 うまく変換できるようになりましNo.03345
ノノムン さん 02/09/07 15:46
 
きいろいまふらあさん 初めまして ノノムンです。


> 横からごめんください。

どしどし ご指導ください。

> >》replaceall "[  \t]$", "", regular;
>
> 本題とは関係ないですけど、教科書的には
>
> replaceall "[  \\t]$", "", regular;
>
> とするのが「正しい」です。
> 文字列中の「\」はマクロの中では「\\」と表記します。
> 上のマクロは「\」一個でも(なぜか)期待通りに動作し(てしまい)ますが。

参考になりました。

> それと途中(3340番)でスレッドが切れてしまっているようです。
> 一つの話題は「コメントを投稿する」でつないでいきましょ。>ノノムンさん
> 「新規に発言する」だと、そこでスレッド(発言のつながり)が切れてしまって、
> 過去の発言が探しにくいので…。

すみません、メールで発信していますので、スレッドを切るつもりでなく
件名を内容に合わせて変えたら変わっちゃったようです。
以後気を付けます。

それではまた。

[ ]
RE:03341 うまく変換できるようになりましNo.03346
ノノムン さん 02/09/07 16:11
 
山紫水明さん こんにちは ノノムンです。

> 》それと、次の二つは同じでしょうか?
> 》
> 》replaceall "[  \t]$", "", regular;
> 》
> 》replaceall "[  \t]+$", "", regular;
>
>  行末に2つ以上のスペースをつけた文を作り,それぞれのマクロを別々に実行
> してみてください。どうでしょう?

"[  \\t]+$" は+が無いと1つしか消えませんでした。
"^[  \\t]+" は+が無くても同じでした。
>
> 》"0\\.000\\f[1-9]\\f[0-9]*", "\\1.\\2m", regular;
> 》の意味を教えてください。
> 》そして、それを調べるにはどれを見ればよいのでしょうか?

なぜか次の分が何度かは動いたのですが、動かなくなってしまいました。
デバッグする事は出来るのでしょうか?

マクロ
//-------------------------------------------------------------------//
disabledraw;
replaceall "0\\.000000000000\\f[1-9]\\f[0-9]*", "\\1.\\2p", regular;
replaceall "0\\.000000000\\f[1-9]\\f[0-9]*", "\\1.\\2n", regular;
replaceall "0\\.000000\\f[1-9]\\f[0-9]*", "\\1.\\2u", regular;
replaceall "0\\.000\\f[1-9]\\f[0-9]*", "\\1.\\2m", regular;
replaceall "\\.\\f[pnum]", "\\1", regular;
endmacro;
//-------------------------------------------------------------------//

対象文
c t t 0.000000000001234
c t t 0.000000002345
c t t 0.000003456
c t t 0.004567
c t t 5.678


>  秀丸ヘルプで「タグ付き正規表現による置換」の項を見てください。キーワー
> ドで探せるでしょう。
>  『Q&A集』(http://homepage2.nifty.com/jr-kun/hidemaru_qa/index.html)
> にはもっと丁寧な解説があります。

よく見てみます。

>  #余計なことかもしれませんが,以下はある電子メール入門書の記載です。ご参
> 考までに。

わかりました、心がけます。

対象の文章で途中の3カ所のspなどをtabに変えるのと
数を指数の変えるのをしていますがうまくゆきません。

それではまた。

[ ]
RE:03346 うまく変換できるようになりましNo.03347
山紫水明 さん 02/09/07 20:07
 
 ノノムンさん,こんばんは。

》"^[  \\t]+" は+が無くても同じでした。

 これはこういうものです。理屈は少しややこしいですが。

》なぜか次の分が何度かは動いたのですが、動かなくなってしまいました。
》デバッグする事は出来るのでしょうか?


》対象文
》c t t 0.000000000001234
》c t t 0.000000002345
》c t t 0.000003456
》c t t 0.004567
》c t t 5.678

 0 の数が違っていますので,置換対象にはなっていません。
 上記のデータはどのように変わればいいのでしょうか。

》対象の文章で途中の3カ所のspなどをtabに変えるのと
》数を指数の変えるのをしていますがうまくゆきません。

  replaceallfast " ", "\\t", regular;

でできませんか?

 数の指数を変えるというのは具体的にはどういうことでしょう。

#それにしてもなんのデータなんでしょうね。いや,単なる興味です。
 企業秘密?(^^;

     では, (^^)/~
                                        山紫水明

[ ]
RE:03342 うまく変換できるようになりましNo.03348
山紫水明 さん 02/09/07 20:22
 
 きいろいまふらあさん,Arimacさん,こんばんは。

 期せずして,お二人の重量級の方が,そろわれましたのでいい機会。
 いえ,もちろん体重のことではなく。(^^;
 日頃の疑問をこの際,おたずねします。

》文字列中の「\」はマクロの中では「\\」と表記します。

 そうですよね。

》>上のマクロは「\」一個でも(なぜか)期待通りに動作し(てしまい)ますが。
》単にタブが文字としてそのまま渡るからですね(^^;

 うーん,どう考えたらいいんでしょう。
 偶然ではなくて,ちゃんと理にかなっているということですか?
 正書法では「\\」となるけれども,「\」1個でも正規表現の違反ではない?
 それとも,将来の動作は保証できないから避けた方がいい?

     では, (^^)/~
                                        山紫水明

[ ]
RE:03347 うまく変換できるようになりましNo.03349
ノノムン さん 02/09/07 21:29
 
お返事ありがとうございます ノノムンです。

>  0 の数が違っていますので,置換対象にはなっていません。
>  上記のデータはどのように変わればいいのでしょうか。

趣味の世界ですので、秘密はありません。
これは、サーキットシミュレーター2000という回路シミュレーターで
真空管回路を、考えるのですが、その真空管モデルが、数、質とも、も一つで
他のシミュレーターからモデルを移植するのですが、スタイルや関数式を
書き換えたいのですが、量が多くてしかも
少し違うと、訳の分からないエラーになります。

文例は1モデル全部載せると、長くなるので、はしょってあります。

お手すきの時で結構ですので、よろしくご指導ください。

***************ソース**********************************
.SUBCKT SV811-3 A G K[開始 名称 端子名]
*[* コメント]
* Calculate contribution to cathode current[* コメント]
Bat at  0   V=0.636*ATAN(V(A,K)/30)[BV本文]
Bg  G  K I=(URAMP(V(G,K)+1)^1.5)*(2-V(at))*0.00003[BI本文]
Cgk GK  0.0000000000075[C本文]
Cga  A G 8.23E-6[C本文]
Rga  A G 2000[R本文]
.ENDS [終了]

***************完成型**********************************
*Vacuum Tube Triode (Audio freq.)[追加タイトル]
.SUBCKT XSV811-31 A G K[X 追加]
*
* Calculate contribution to cathode current
Batat0V=(0.636*ATAN(V(A,K)/30))[TAB TAB TAB 3個]
BgGKI=(URAMP(V(G,K)+1)^1.5)*(2-V(at))*30E-6[指数変換]
CgkGK7.5p[単位変換]
CgaAG8.23u[単位変換]
RgaAG2k[単位変換]
.ENDS XSV811-31[X名称追加]

*****************単位は3桁科学単位********************
数指数単位呼び方
0.0000000000011E-121pピコ
0.0000000011E-91nナノ
0.0000011E-61uマイクロ(μ)
0.0011E-31mミリ
1
10001E+31kキロ
10000001E+61Megメグ

0.00003 = 0.03m = 30u =1E-2*3E-3 = 3E-5 = 30E-6
*****************本文 区切り TAB*********************
組名称端子1端子2本文値、本文式中は単位を使わない[本文型式]
*******************************************************

[ ]
RE:03349 うまく変換できるようになりましNo.03350
ノノムン さん 02/09/07 21:35
 
ノノムンです

TAB を含んだ文章にしたらうまく TAB が出ませんでした。

なにかの記号で書けば良いでしょうか?
 
> Rga  A G 2000[R本文]
> .ENDS [終了]

> RgaAG2k[単位変換]
> .ENDS XSV811-31[X名称追加]
> *****************本文 区切り TAB*********************
> 組名称端子1端子2本文値、本文式中は単位を使わない[本文型式]

[ ]
RE:03350 うまく変換できるようになりましNo.03351
番頭++ さん 02/09/07 23:30
 
タブの処理、空白 (前後) の処理、数値表現の変換処理 ... とか、
何をしたいのか、どうしたいのか、やりたい処理をわけて、説明しないと、
話は、複雑になります。と、思いますが。

E 表記も、正規化 (normalize) するとか、しないとか。
「E 表記 浮動小数点 normalize」とかで、Yahoo とかで検索してみてください。

>> 少し高等なところで 0.000001 を 1 u, 0.000000000001 を1 p ...

単位による表記とか。

十円 ==> 0.10 百円
十銭 ==> 0.1 円
0.01 m ==> 1 cm

# マクロでは何でも出来るけど、仕様が、わからん ...

[ ]
RE:03349 うまく変換できるようになりましNo.03352
アルビレオ さん 02/09/08 00:56
 
アルビレオです。

番頭++さんも書いていますが、提示いただいたサンプルで不明な点として

・指数表現は正規化するのか?
 0.0001E-3 は 0.0001m か 0.1u か
・整数部、小数部の桁数は?
 0.01234 は 0.01234 のままか 123.4m か 1234000u か
 整数部の桁数の上限を決めるとかのルールが必要です。
・単位→単位の変換があるか?
 0.001m から 1u とか
・数字の後にすぐ改行が来ることがあるか?
・スペースは単純にタブに置き換えればいいのか?
・まさか指数+単位ってのはないですよね?

でもはっきりいって正規表現は文字数(桁数)を数えるようなことはかなり苦手として
います。
あらゆる場合に対応しようと思ったら浮動小数点数バージョンを使って、

1.数値(指数部、単位を含む)を検索
2.マクロ変数に実数として取り込む
3.log()などを使って桁数(整数部、小数部)、単位などを決定
4.指定したフォーマットで元の位置に出力

という手順を踏むのが簡単かつ確実かもしれません。

参考までに1.の部分を書くとすれば
「動作環境-ユーザーインターフェース-検索での表示」で「範囲選択」に設定した上
で(writeregnumでマクロから制御できると思う)

searchdown "[0-9]+(\\.[0-9]+)?[^EmunpkM]", regular;//単純小数表現(最後の1文
字余計)
searchdown "[0-9]+(\\.[0-9]+)?$", regular;//単純小数表現(直後に改行)
searchdown "[0-9]+(\\.[0-9]+)?E[-+][0-9]+", regular;//指数表現
searchdown "[0-9]+(\\.[0-9]+)?([munpk]|Meg)", regular;//単位表現

あとは文字列を取り込んでからちまちまと…
そこまでやる余裕と気力がありませんので、このへんで失礼します。

[ ]
RE:03351 うまく変換できるようになりましNo.03353
番頭++ さん 02/09/08 03:07
 
># マクロでは何でも出来るけど、仕様が、わからん ...

//*1    e1.mac - 2002/09 大雨の日 - K.N.

replaceall " 0\\.\\f[0-9]+\\f ", " @"+"0.\\1000@ ", regular;

replaceall " @0\\.00000\\f[1-9]\\f[0-9]*@", " @00\\1\\2 μ マイクロ", regula
r, ask;
replaceall " @0\\.0000\\f[1-9]\\f[0-9]*@", " @0\\1\\2 μ マイクロ", regular,
 ask;
replaceall " @0\\.000\\f[1-9]\\f[0-9]*@", " @\1\\2 μ マイクロ", regular, ask;

replaceall " @0\\.00\\f[1-9]\\f[0-9]*@", " @00\\1\\2 m ミリ", regular, ask;
replaceall " @0\\.0\\f[1-9]\\f[0-9]*@", " @0\\1\\2 m ミリ", regular, ask;
replaceall " @0\\.\\f[1-9]\\f[0-9]*@", " @\1\\2 m ミリ", regular, ask;

    replaceall " @00\\f[1-9]\\f[0-9]*@ ", " \\1.\\2", regular, ask;
    gofiletop;  //  なんでいるの、ヲィヲィ、バグ科よーーー
    replaceall " @0\\f[1-9][0-9]\\f[0-9]*@ ", " \\1.\\2", regular, ask;
    gofiletop;  //  ヲィヲィ、バグ科よーーー
    replaceall " @\\f[1-9][0-9][0-9]\\f[0-9]*@ ", " \\1.\\2", regular, ask;
    gofiletop;  //  ヲィヲィ、バグ科よーーー

replaceall "\\.?[0]*@ ", "@@ ", regular, ask;
replaceall "@@ ", " ", regular, ask;

gofiletop;
searchdown " @"+"0.";
if ( result ){
    message "ヲィヲィ、バグ科よ !!!";   endmacro;
}

//* replaceallfast ", ask", ""; gofiletop;

endmacro;   //  雨も上がったし、もう寝よう ...


 0.1234
 0.01234
 0.001234
 0.0001234
 0.00001234
 0.000001234
 0.0000001234

 0.123
 0.0123
 0.00123
 0.000123
 0.0000123
 0.00000123
 0.000000123

 0.12
 0.012
 0.0012
 0.00012
 0.000012
 0.0000012
 0.00000012

 0.1
 0.01
 0.001
 0.0001
 0.00001
 0.000001
 0.0000001

# Q: データの加工はすべて置換で行う事が可能である ???
# A: ホントかよーーー

[ ]
RE:03352 うまく変換できるようになりましNo.03355
encodingshiftjis さん 02/09/08 10:35
 
WSHの利用を試しましたが、WSHは細かい操作は難しかったです
結論は 1変数の 完全な scanf , sprintf  が必要です
秀丸マクロで自作する気分じゃなかったです。

途中までは

// 0907.mac  −−−−−−−−−−−−−−
$float="75000";
golineend; beginsel;
run "Cscript.exe //B C:\\WINDOWS\\デスクトップ\\Fscan.JS "+
     $float+" >CON";

// Fscan.JS  −−−−−−−−−−−−−−−
WScript.Stdout.WriteLine(WScript.Arguments(0)); // 起動引数
umObj = new Number(WScript.Arguments(0));
WScript.Stdout.WriteLine(umObj);
// 数値範囲を仕分けして、ギリシャ単位を付けるのは、できます
if(1000000>umObj & umObj>999)
WScript.Stdout.WriteLine((umObj/1000)+"k");
// 浮動小数表現を強制するには? WSH にはない
// sprintf はどこに
// 固定小数点の最大文字数制限がある
umObj = new Number("0.0000000000075");
WScript.Stdout.WriteLine(umObj);
umObj = new Number("8.23E-12");
WScript.Stdout.WriteLine(umObj);
umObj = new Number("8.23E-13");
WScript.Stdout.WriteLine(umObj);
umObj = new Number("8.23E-14");
WScript.Stdout.WriteLine(umObj);
umObj = new Number("8.23E-15");
WScript.Stdout.WriteLine(umObj);
umObj = new Number("8E-14");
WScript.Stdout.WriteLine(umObj);
umObj = new Number("2000");
WScript.Stdout.WriteLine(umObj);

[ ]
RE:03355 うまく変換できるようになりましNo.03356
ノノムン さん 02/09/08 13:08
 

番頭++さん,アルビレオさん,encodingshiftjisさん

おへんじありが当ございます ノノムンです。

数値表現には無指数数値表現と指数表現と単位表現があります。

=演算式中(BV,BI等の本文)は単位表現が使えず、
指数表現と無指数表現のみです。

固定値(C,R,L等の本文)の時は、
無指数表現と指数表現と単位表現が使えますが、
見やすくするため、無指数表現と単位表現を使います、

またよく使われる単位は Meg k m u n p ですが
C本文の単位ですが、m n は外国では使われますが
日本ではあまり使いません、私は使っていますし間違いではありません。

> ・指数表現は正規化するのか?
>  0.0001E-3 は 0.0001m か 0.1u か
> ・整数部、小数部の桁数は?
>  0.01234 は 0.01234 のままか 123.4m か 1234000u か

すべて正しいのですが人が見やすいように、
桁数が少なくなるように、0.1u、123.4mが良ようです。

>  整数部の桁数の上限を決めるとかのルールが必要です。
> ・単位→単位の変換があるか?
>  0.001m から 1u とか

変換があり 1uです。

> ・数字の後にすぐ改行が来ることがあるか?

Cgk GK  0.0000000000075 のあとのスペース、タブ、は無視して
改行を扱います。(スペースなどはあっても無くても良い)

> ・まさか指数+単位ってのはないですよね?

1E-6u は 1p を表しますので有るかもしれません、(作者によって)

> ・スペースは単純にタブに置き換えればいいのか?

注釈内は作者の意図があるので触らない方がいいと思います。
固定値、式中のスペースは触りません。
行頭、行末のスペースは不要で
セパレーターのスペース、全角スペース、タブの
連続した物は1個のタブにします。

演算式と固定値は普通4つのエレメントから成っており、
(4つ以外もあるかもしれないが今のところ、使っているのはこれです。)
そのセパレーターには、スペース、タブを使いますが、
スペースは文字数が多くなったり凸凹して見にくくなったりするので、
タブを使いたいのです。

シミュレーターの種類によってフォーマットが違うのですが、うちのは
基本的に次のようなかたちで記述します。
スペース、タブ、リターンのみの行は無視されますが、
見にくくなるので、最初と最後をのぞいて切り捨てます。

----------------------------
[*ディスクリプション、パッケージネーム、(端子配列)]1行目
*Vacuum Tube Tetrode (Audio freq.) pkg:VT-9 (6,7,3,2)

[.宣言、X名称、端子、端子、端子、端子]2行目
.SUBCKT X6BM8P A S G K
(端子の数によりSUB2、SUB3、SUB4、SUB5、SUB6等に内部で分類される)

[*コメント]途中幾つでもOK
* Calculate contribution to cathode current

[BV本文 =計算式]途中幾つでもOK、他にもいく種類かある
Bat     at      0       V=0.636*ATAN(Uramp(V(A,K)/15))

[BI本文 =計算式]途中幾つでもOK
Ba      A       K       I=3.45E-3*V(cc)

[C本文 固定値]途中幾つでもOK、他にもいく種類かある
Cg1     G       K       9.6p

[R本文 固定値]途中幾つでもOK
Rg1     G       K       2k

[.宣言終了 X名称]最後行
.ENDS X6BM8P
----------------------------

番頭++さん
># マクロでは何でも出来るけど、仕様が、わからん ..

以下の文見ても良くわからないので、マクロに組み込んで実行してみます。

encodingshiftjisさん
> WSHの利用を試しましたが、WSHは細かい操作は難しかったです
> 結論は 1変数の 完全な scanf , sprintf  が必要です
> 秀丸マクロで自作する気分じゃなかったです。

高度すぎて意味が分かりません、簡単な解説をお願いできませんでしょうか?
これはどうすれば実行できるのかも分かっていません。

ありがとうございました。
それではまた。

[ ]
RE:03356 うまく変換できるようになりましNo.03358
encodingshiftjis さん 02/09/08 22:54
 
>encodingshiftjisさん
>> WSHの利用を試しましたが、WSHは細かい操作は難しかったです
>> 結論は 1変数の 完全な scanf , sprintf  が必要です
>> 秀丸マクロで自作する気分じゃなかったです。
>
>高度すぎて意味が分かりません、簡単な解説をお願いできませんでしょうか?
>これはどうすれば実行できるのかも分かっていません。

文字列と内部データの書式付相互変換を扱う関数の名前です
Cのですが。

この際、WSH は捨てて、C# に移住します。
// 0908.mac  ------------------------------
$float="75000";
golineend; beginsel;
run "D:\\TEMP\\Fscan.exe  "+$float+" >CON";

// Fscan.CS
 using System;
 public class Form1 {    
 public static void Main(string[] conargs) {
Console.WriteLine(conargs[0]);
         double   DF=Double.Parse(conargs[0]);
Console.WriteLine(DF.ToString("E2"));
Console.WriteLine(DF.ToString("F15"));
Console.WriteLine(DF.ToString("G"));
 }
}
-----------------------------
指数形式と固定小数点形式は指定できますが
有効数字の桁数を判定して、最簡約な形式で吐き出すのは
書式指定文字列を可変にしないと実現できないようです。
ほとんど G 指定でマッチしそうですが。
------------------------------------
C# のコンパイルは 無料でできます。最小限のダウンロードでは
21MeBの.NETランタイムの中に csc.exe コンパイラが入っています。

[ ]
RE:03348 うまく変換できるようになりましNo.03359
Arimac さん 02/09/09 00:35
 
マクロの中で書いた文字列定数は正規表現かどうかに関わらず
一定の規則で変換されて秀丸エディタ内に格納されます。
「\\」の場合は「\」1つ。
「\t」の場合はタブを表す文字コード0x09。
その他色々。

JRE32に渡されるのは検索ダイアログ等で入力する正規表現と
同じ形式になります。

(JRE32の)正規表現ではタブは\tで指定する事になっていますが、
実際にはタブはそのまま文字コードで指定されていても動作して
しまいます。
これは検索ダイアログ等では直接、タブや改行などは入れられないので
\tや\nという指定の方がむしろ代替的方法として考案されている
と考えた方が良いでしょう。
従って本来のタブや改行がそのまま入力できれば、正規表現としては
単なる通常の文字の一種として扱われるだけなのです。

> 偶然ではなくて,ちゃんと理にかなっているということですか?
上記の通りです。

> 正書法では「\\」となるけれども,「\」1個でも正規表現の違反ではない?
「\\」と書くのはマクロの文字列定数の仕様からで正規表現だから
ではないです。
「\」1個で済むのは「\t」「\n」「\x文字コード」等のマクロの
文字列定数で使用できるエスケープシーケンスのみです。

> それとも,将来の動作は保証できないから避けた方がいい?
動作は将来も変わらないと思いますが、「\」1個で済む場合は限られて
いるので、「\\」とした方が間違いが少ないでしょう。

[ ]
RE:03359 うまく変換できるようになりましNo.03360
山紫水明 さん 02/09/09 19:58
 
 Arimacさん,こんばんは。

 懇切丁寧な説明で,疑問が解消しました。
 どうもありがとうございました。

》動作は将来も変わらないと思いますが、「\」1個で済む場合は限られて
》いるので、「\\」とした方が間違いが少ないでしょう。

「\」1個,書き惜しまないようにした方がいいようですね。

     では, (^^)/~
                                        山紫水明

[ ]