home *** CD-ROM | disk | FTP | other *** search
/ DOS/V Power Report 2001 December / VPR0112B.ISO / OLS / JED194V / JEDDOC.LZH / PAD.MCR < prev    next >
Text File  |  1995-01-02  |  6KB  |  280 lines

  1. ;   ************************************
  2. ;  *  AIR+CRAFT用PADファイル作成マクロ  *
  3. ;   ************************************
  4. ;
  5. ; PADファイルの書式などは、PAD.CFGで設定する。
  6. ;
  7. ;--------------------------------------------------------------------
  8. ;CFGファイル名。CFGファイルは、このマクロと同じパスに置くこと
  9.  
  10.     p = "PAD.CFG",
  11.  
  12. ;--------------------------------------------------------------------
  13.  
  14.  
  15. ;初期設定 挿入モードへ 画面表示抑制
  16.     ?.
  17.     &s
  18.     &#T(1) #^    ;強制的に第1画面に
  19.     (mi) ? #v    ;挿入モード
  20.  
  21. ;ログの種類の判定
  22.     t = "0123456789 ",
  23. ;    &d&t
  24. ;    z  0-旧式会議室 1-サイクリック会議室 2-mail 3-HP
  25.  
  26.     z = -1,
  27.     &#T(1) #^
  28. :X
  29.     #< l = ln,
  30.     (ct < 2) ? { >Z }
  31.     &f(cd,t) (r < 0) ? >Z        ;先頭が数字かスペースでなければ形式外
  32.     #d &f(cd,t) (r < 0) ? >Z    ;2文字目
  33.     #d &f(cd,t) (r < 0) ? >Z    ;3文字目
  34.     #d (cd ==  '/') ? {z = 0, >M}    ;4文字目 / 旧式会議室
  35.     (cd == ' ') ? {z = 2, #d#d >P}
  36.     (cd == '#') ? {z = 2,    >M}    ;スペースか# MAIL
  37.     #d#d
  38.     (cd == '/') ? {z = 1, >M}    ;6文字目 / サイクリック会議室
  39. :P
  40.     (cd == '[') ? z = 3,        ;          [ HP
  41. :Z
  42.     (z != -1) ? >M
  43.     #x #>
  44.     (ct && (l < 6)) ? { >X }    ;先頭行から6行の間を検索
  45.          ? {&d &b(1) &a("ログ形式が違います!! (hit any key)") #Q}
  46.                                 ;形式外ならば、強制終了
  47.  
  48. ;メニューの呼び出し PADの種類の決定
  49. :M
  50.     ll = l,
  51.     (z == 2) ? { pp = 2, >O }
  52.     &d
  53.     (z<3) ? {!01} ? {!02}
  54.     ((r == -1) || (r == 4))
  55.         ? { / }            ;マクロ終了
  56.         ? { (r == 5) ? { #Q }
  57.                      ? { pp = r--, &s } }
  58.             ;pp : PAD種別のフラッグ
  59.             ;   : RES:0 SAY:1 MAIL:2    - MES
  60.             ;    : HP1:0 HP2:2 MAIL:2    - HP
  61.  
  62. ;CFGファイルオープン
  63. :O
  64. ;    #O #03
  65.     #O 'L'            ;JED 仕様変更に伴い修正 '93 9/12 orik
  66.     &?(pi) #> #s
  67. :C
  68.     (cd != '\\') ? {#g #s >C}    ;パスの取り出し
  69.     #d &?(p) #m        ;CFGファイルをオープンする
  70.     #^ #m #m        ;検索を確実にするために、最初に空白行を付加する
  71.     w = wn,
  72.  
  73. ;フォーラム名 $F
  74.     &#T(3) #P #k #y        ;フォーラム名のファイルからフィル名を取り込
  75.     &#T(2) #_ #i #>        ;PADファイルの一番最後にコピー
  76.     aa = ln,    ;現在のカーソル行を記憶
  77. :A
  78.     (cd != '\\') ? {#s >A}    ;¥を見つけるまで左へカーソル移動
  79.     #g #18 #_                ;カーソル位置の¥を削除して行頭まで削除
  80.     ( z < 3) ? >H
  81.  
  82. ;HPの確認
  83.     ;&d&t
  84.     #e &#T(w) #^ #F "$HP" #m #03    ;ホームパ-ティー名の登録があるかどうか
  85.     &70                                ;検索結果確認ルーチン
  86.     (ff) ?? >H                        ;見つからなければ、スキップ
  87.     &#T(2) #k &#T(w) #^ #F #i #m #03        ;ホームパティー名の検索
  88.     &70    (ff) ?? {&#T(2) #_ >H}        ;無かった時は、スキップ
  89.     #f #b #> #52 &#T(2) #y #p #> #m    ;ホームパティー名で置き換え
  90.  
  91. ;MES $M
  92. :H
  93.     (z == 3) ? { "MES????MES" #m } ? {    ;HPでは、該当なし
  94.         l = 2,    c = 2,    n = 2,            ;l=行数 c=カラム n=文字数
  95.         &50 }
  96.  
  97. ;発言番号 $N
  98.     l = 1,    c = 1,                            ;切り出しログの先頭から・・・
  99.     (z) >?
  100.         {{ n = 3,} { n = 5,} { n = 2,} {n = 3,}}    ;抽出文字数の調整
  101.     &50
  102.  
  103. ;タイトル $T
  104.     l = 1, n = 99,                        ;n=99 その行の終わりまで
  105.     (z) >?
  106.         {{c = 39,} {c = 40,} {l = 2, c = 11} {c = 38}}
  107.     &50
  108.  
  109. ;ハンドル $H
  110.     l = 1, n = 16,
  111.     (z) >?
  112.         {{c = 21,} {c = 23,} {c = 5,} {"$I" #m >I}}
  113.                                         ;HPでは、とりあえずIDに変換
  114.     &50
  115.     #e #> #s                ;ハンドルの後ろから空白の削除
  116. :B
  117.     (ct == 2) ? {#g #s >B}
  118.     #_
  119.  
  120. ;ID $I
  121. :I
  122.     l = 1, n = 8,
  123.     (z) >?
  124.         {{c = 11,} {c = 13,} {c = 23,} {c = 24,}}
  125.     &50
  126.  
  127. ;書き込み日 $D
  128.     l = 2, c = 8, n = 8,
  129.     (z == 2) ? {l = 1, c = 33, n = 5,}
  130.     (z == 3) ? {l = 1, c = 7,}
  131.     &50
  132.  
  133. ;書き込み時刻 $J
  134.     l = 2, c = 17,  n = 5,
  135.     (z == 2) ? {l = 1, c = 39,}
  136.     (z == 3) ? {l = 1, c = 16,}
  137.     &50
  138.  
  139. ;最後の署名 $S
  140.     &#J(aa)                    ;フォーラム名取り込
  141.     #k &#T(w) #^            ;CFGファイルに
  142.     t = ln,
  143.     #F #i "$" #m #03        ;$フォーラム名を検索
  144.     &70
  145.     (ff) ? {#f #f >J}        ;見つかれば切り出し
  146.     #^ #F "$HANDLE" #m #03    ;登録が無ければ、$HANDLEから切り取る
  147.     &70
  148.     (ff) ? {#f #f}
  149.          ? {&#T(2) #_ #m >L}    ;$HANDLEの登録が無ければ、空欄とする
  150. :J
  151.     #b #> #52
  152.     &#T(2) #_ #p #> #m
  153.  
  154. ;PADデータの書き出し
  155. :L
  156.     &#T(w) #^                    ;切り取り範囲の記号の検索
  157.     (z < 3) ? {
  158.         (pp) >?
  159.         {{t = "$>R",} {t = "$>S",} {t = "$>M",}}
  160.             }
  161.             ? {
  162.         (pp) >?
  163.         {{t = "$>HP1",} { t = "$>HP2",} {t = "$>M"}}
  164.             }
  165.  
  166.     #F &?(t) #m #03
  167.     &70
  168.     (ff) ?? {ss = "/スケルトンデータが無い", &75}    ;スケルトンデータが無い
  169.  
  170.     #x #F "/POST" #m #03;/POSTの検索
  171.     &70 (ff) ?? {ss = "/POSTが見つからない", &75}    ;/POSTが無い
  172.  
  173.     #> #b #U #52 #C    'Y'        ;指定範囲をコピーして、CFGファイルをクローズ
  174.     &#T(2) #_
  175.     #p #_ #m
  176.  
  177.     &#J(aa)
  178.  
  179.     t = "$F", &60    ;フォーラムなどを置き換え
  180.     t = "$M", &60
  181.     t = "$N", &60
  182.     t = "$T", &60
  183.     t = "$H", &60
  184.     t = "$I", &60
  185.     t = "$D", &60
  186.     t = "$J", &60
  187.     t = "$S", &60
  188.  
  189.     &#J(aa)                    ;最初の行へ移動
  190.  
  191. ;指定カーソル位置への移動 $C
  192.     x = lx, y = ln,        ;最初の行の位置を記憶
  193.     #F "$C" #m #03        ;$Cを探す
  194.     ((x == lx) && (y == ln)) ? >Q    ;無かったら終了処理
  195.     #g#g                ;$Cの消去
  196.     x = lx, y = ln,        ;現在のカーソル位置
  197.     #U                    ;一旦戻して・・・・
  198.     &y(y - ln)            ;$Cを見つけた場所へ・・・
  199.     &x(x - lx)
  200.  
  201. :Q
  202.     &#T(1) #^            ;画面の組み合わせの調整
  203.     &#T(2)
  204.     &d
  205.     /
  206.                         ;オートセーブ
  207.     dd = 5,                ;カーソルが5行進毎にセーブ
  208. ;
  209.     l = ln,                ;現在の行を記憶
  210.     ll = l + dd,        ;次にセーブする行
  211. :T
  212.     &p                    ;入力結果はそのまま出力
  213.     (r == #e) ? {ll--,}
  214.     &o(r)
  215.     (ln > ll) ? {        ;セーブ予定行を超えたら・・
  216.         (mr) ? {#S ll=ln+dd,}    ;セーブして、行を記憶し直す
  217.         }
  218.     >T
  219.  
  220.     /
  221.  
  222.  
  223. 50:                             ;指定範囲切り出し
  224.                             ;l=行  c=カラム
  225.                             ;n<99 指定文字数
  226.                             ;n=99 行末まで
  227.     &#T(1) #^                ;ログファイルの指定位置へ
  228.     &y(l+ll-2) &x(c--)            ;指定位置へカーソル移動
  229.  
  230.     #b                        ;切り出し範囲の指定
  231.     (n == 99) ? { #> >S}        ;指定文字数だけ
  232.     e = ( c + n),
  233. :R
  234.     (lx < e) ? {#d >R}
  235. :S    #52 &#T(2) #p #> #m        ;PADファイルにコピー
  236.     .
  237.  
  238.  
  239. 60:                    ;カーソル行の文字列で、tで指定した文字列を置き換え
  240.  
  241.     #k #y #61 &?(t) #m
  242.     #i #m #03
  243.     &#J(aa) .
  244.  
  245.  
  246. 70:                    ;再検索及び検索結果の確認
  247.  
  248.     ff-,            ;検索フラッグの初期化
  249.     ((ln == 1) && (lx == 0)) ? .
  250.                     ;文頭にカーソルがあれば、見つからなかったとみなす
  251.     i = 0,            ;カウンター(10回までくり返し検索する)
  252. :K    (i > 10) ? .        ;10回再検索しても見つからなければ戻る
  253.     ((ln == 1) || (lx != 0)) ? {#57 #03 i++, >K}
  254.             ;カーソルが行頭にないとき、最初の行にある時 再検索する
  255.     ff+,
  256.     .
  257.  
  258. 75:
  259.     &#T(2) &#J(aa) #b #_ #54 &d &?(ss) #m /    ;エラー表示
  260.  
  261.  
  262.  
  263. ;ポップアップメニュー
  264. 01:"PAD種別の選択",22,5
  265. "R | RES"
  266. "S | SAY"
  267. "M | MAIL"
  268. "Q | マクロのみ終了"
  269. "Z | 強制終了"
  270. .
  271.  
  272. 02:"PAD種別の選択",32,5
  273. "R | HP type1 (RES)"
  274. "S | HP type2 (SAY)"
  275. "M | MAIL"
  276. "Q | マクロのみ終了"
  277. "Z | 強制終了"
  278. .
  279.  
  280.