今日のテーマ   日々改造 (^_^;)         
[記事リスト(ツリー表示)]  [ 返信 ]   [新着記事] [最新50] [ワード検索] [過去ログ]

タイトル 十分割ジャンプの完成形のヒントは原点にあった
投稿日: 2020/11/08(日) 15:56
投稿者konno
 番 号 9906    9902 番 konno さんへのコメント    コメント数 1

十分割ジャンプは、DC15のH岡さんのマクロが元祖だと思います。
今回めざらさんのロング演算のマクロに触発されて、ファイルサイズで出来ないかと
原点に戻ってみました。
当時のH岡さんの書き込みを転載してしまいます。
無断転載ごめんなさい。m(__)m


> 17079/17080 xxxxxxxx  H岡             その3:ファイル十分割地点へジャンプ
> (15)   00/10/31 20:01

 皆さん、こんにちは。

 どんな大きなファイルでも、十分の一刻みで、正確に、ファイル内のお望み
の地点へ着地してくれます。

=== JUMP_10.def === m(_H_)m
* M
89^\"きっちり十分割ジャンプ:巨大ファイル対応版"
    ?.
    mx+, &g("Jump n/10") mx-, n=r, (n<0||n>10)?.;0≦n≦10
    &s #_ #> &Le(pr,wa+82) &Ia(pr,cp-2)         ;wa+82=head lptr
    &Im(pr,n) &Id(pr,10)                        ;ファイルサイズをn/10分割
    &Sp(pf,"%s ->%lx",wa+146,pr..0,pr..1)       ;pf=拡張タグ情報
    dn[-, #O #e #m dn], ky1,                    ;カーソル行=画面上端+1行
    &m("Jump to %d/10",n) &d #] &b(2)
*
======


今回の改造のきっかけは、#O でジャンプが、SHADOW.DEF で問題になったからですが
このファイルサイズを求める方式は &Tz に置き換えていて、今まで試していませんでした。
このルーチンはVZのバージョンに依存してないようです。

    &s #_ #> &Le(pr,wa+82) &Ia(pr,cp-2)         ;wa+82=head lptr

ファイルの末尾に飛んで、wa+82 + cp-2 でファイルサイズが得られるようです。

    &Im(pr,n) &Id(pr,10)                        ;ファイルサイズをn/10分割

DC15 17120より
>  wa+82 は、今読み込んでいる巨大ファイルがテキストバッファから溢れてし
>まった冒頭部分のサイズを示しています。ファイル末尾の cp-2 は、テキスト
> バッファに納まっているファイル部分のサイズを示しています。したがって、
> これら2つの数値の合計がファイルサイズになります。
> 
>                                                        H岡 m(_H_)m


ここで、ファイルサイズを1〜9倍してから1/10にしていますが

	&Id(pr,10) &Im(pr,n)

先に除算することで、&Id の限界をギリギリまで使えると考えました。
これで試したところではオリジナルVZで、3,276,798 までのロング除算が出来るようです。

xxxxxx.x09   3,276,798  のファイルで正常に計算できているように見える
XXXXXX.X08   3,276,800  のファイルで暴走

そこでH岡さんと、めざらさんと、DANNYさんのマクロを悪魔合体。(^^;
これで試すと、dx の値が $32 以上で暴走するようなので、このようにしました。

	&s #_ #> &Le(p,wa+82)			;wa+82 + cp-2 = ファイルサイズ
	&Ia(p,cp-2) ax=p..0,dx=p..1, &d		;ロング加算 wa+82=head lptr
	(dx>=$32)?{&m("3.2M サイズオーバーです").} ; 3,276,800以上はoVZ暴走

tVZ以前なら、3.2M以上で「3.2M サイズオーバーです」と表示して終了
暴走することはありません。(^_^)
行数方式だと約2Mまでしか使えないので、3.2Mまで使えるのはうれしいです。

tVZ以降なら暴走はしませんが、11M以上?のファイルでは挙動不審になるような?
そこで、tVZ以降は

	&Tz(wa) p..0=ax, p..1=dx,		;tVZファイルサイズ DANNY

このルーチンにしたら問題なく動作します。
これで現在考えられる範囲ではベストのジャンプマクロが完成しました。
マクロは別レスでアップします。


    - No.9906 一括表示へ   -   コメント元:9902 一括表示へ  -    [ 返信 ]    [引用無し] pre


- 関連一覧ツリー (先頭の番号をクリックするとツリー全体を一括表示します)
9864.十分割ジャンプマクロの更新 - konno 20/10/21-22:51
  ┣9870.Re: 十分割ジャンプマクロの更新 - としき 20/10/29-19:28
  ┣9873.Re^2: 十分割ジャンプマクロの更新 - めざら 20/11/01-18:53
  ┣9878.Re^3: 十分割ジャンプマクロの更新 - konno 20/11/03-01:42
  ┗9879.Re^4: 十分割ジャンプマクロの更新 - めざら 20/11/03-07:36
   ┗9886.Re^5: 十分割ジャンプマクロの更新 - konno 20/11/04-00:57
    ┗9895.Re^6: 十分割ジャンプマクロの更新 - めざら 20/11/06-22:26
     ┗9896.Re^7: 十分割ジャンプ、ロング計算マクロ - konno 20/11/07-00:46
      ┗9898.Re^8: 十分割ジャンプ、ロング計算マクロ - めざら 20/11/07-08:58
       ┣9902.Re^9: 十分割ジャンプ、ロング計算マクロ - konno 20/11/07-20:56
       ┗9906.十分割ジャンプの完成形のヒントは原点にあった - konno 20/11/08-15:56
        ┗9910.Re: 十分割ジャンプ、1/1000 にしてみたら - konno 20/11/09-20:15
  ┗9881.Re^3: 十分割ジャンプマクロの更新 - としき 20/11/03-13:21
   ┗9885.Re^4: 十分割ジャンプマクロの更新 - めざら 20/11/03-16:05
    ┗9890.Re^5: 十分割ジャンプマクロの更新 - としき 20/11/04-23:29
     ┗9892.Re^6: 十分割ジャンプマクロの更新 - めざら 20/11/06-07:06
      ┗9894.Re^7: 十分割ジャンプマクロの更新 - としき 20/11/06-19:44
       ┗9899.Re^8: 十分割ジャンプマクロの更新 - めざら 20/11/07-09:19
        ┣9901.Re^9: 十分割ジャンプマクロの更新 - としき 20/11/07-11:35
  ┗9876.Re^2: 十分割ジャンプマクロの更新 - konno 20/11/03-01:12
   ┗9882.Re^3: 十分割ジャンプマクロの更新 - としき 20/11/03-13:21
    ┗9891.Re^4: 十分割ジャンプマクロに適した式は? - konno 20/11/06-00:07
     ┗9893.Re^5: 十分割ジャンプマクロに適した式は? - としき 20/11/06-19:44
      ┗9897.Re^6: 十分割ジャンプマクロに適した式は? - konno 20/11/07-01:12
       ┗9900.Re^7: 十分割ジャンプマクロに適した式は? - としき 20/11/07-11:35
        ┗9903.Re^8: 十分割ジャンプマクロに適した式は? - としき 20/11/07-22:46
         ┣9904.Re^9: 十分割ジャンプマクロに適した式は? - konno 20/11/07-23:14
         ┗9908.Re^10: 十分割ジャンプマクロに適した式は? - としき 20/11/08-23:59
          ┗9909.Re^11: 十分割ジャンプマクロに適した式は? - konno 20/11/09-01:41
           ┗9921.Re^12: 十分割ジャンプマクロに適した式は? - としき 20/11/19-23:15
            ┗9923.Re^13: それぞれの事情 - konno 20/11/20-00:12
             ┗9925.Re^14: それぞれの事情 - としき 20/11/20-01:06
              ┗9926.Re^15: それぞれの事情 - konno 20/11/22-23:48
         ┗9905.Re^9: 十分割ジャンプマクロに適した式は? - めざら 20/11/07-23:40
  ┗9907.十分割ジャンプマクロ JUMP10.def Ver0.4 - konno 20/11/08-16:04
  ┗9911.十分割ジャンプ JUMP10.def Ver0.5 - konno 20/11/09-21:15

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)   [引用無し]
おなまえ 
Eメール 
タイトル 
メッセージ auto soft pre(図表、プログラム) ※折り返さずに改行を入れてね
 参照先 
 暗証キー (英数字で8文字以内)
 プレビュー          

- 以下のフォームから自分の投稿記事を修正・削除することができます -
   処理   記事No   暗証キー
    [ページトップへ] [管理用]