home *** CD-ROM | disk | FTP | other *** search
/ DOS/V Power Report 1997 December / VPR9712A.ISO / OLS / DOS / jeddoc / jeddoc.LZH / KEISEN.MCR < prev    next >
Text File  |  1996-11-01  |  6KB  |  259 lines

  1. ;***************************************************************
  2. ;    JED マクロサンプル
  3. ;    'KEISEN.MCR'
  4. ;    [簡易罫線マクロ]
  5. ;    Ver 0.10    1994 7 初版
  6. ;        0.20    1994 7/18 改定版
  7. ;        0.30    1994 7/20 上書きモード、線種追加
  8. ;        0.41    1994 7/25 単独罫線対応、メニュー表示方式他変更
  9. ;        0.50    1996 10/13 DOS/V用データ追加
  10. ;
  11. ;    Copyright (C) H.Orikawa 1994-1996
  12. ;
  13. ; 注1) タブを含む行および、折り返しのある行では正しく罫線が
  14. ;    ひけない.
  15. ;  2) DOS/V機で使用する場合は 98用の記述部分を削除し、DOS/V
  16. ;    用記述部分のコメントをはずす.
  17. ;    (罫線コード定義部と罫線コードチェックサブルーチン)
  18. ;***************************************************************
  19. ;98用罫線コード
  20.     ;     0 1 2 3 4 5 6 7 8 9 10
  21.     ii = "ョイカコ「、セニホヨ゙",
  22.     jj = "アオケス」・ナヘユン",
  23.     kk = "      ソヌメレ",
  24.     ll = "      ツハムル",
  25. ;DOS/V用罫線コード
  26. ;    ii = "┌┐└┘─│├┤┬┴┼",
  27. ;    jj = "┏┓┗┛━┃┣┫┳┻╋",
  28. ;    kk = "      ┝┥┰┸┿",
  29. ;    ll = "      ┠┨┯┷╂",
  30.  
  31.  
  32.     ;次の2行はデフォルト値
  33.     (mi) ? #v        ;挿入モード
  34.     fa-,            ;線幅フラグ(0:細線、1:太線)
  35.     oo = 8,            ;破線タイプ(実線コードからのオフセット)
  36.     tt = 0,            ;線種フラグ(0:実線、oo:破線)
  37.  
  38.     &99
  39.  
  40. ;------------------------------------------------
  41. ;    メインループ
  42. ;------------------------------------------------
  43. :A
  44.     (fa) ? { k = jj, } ? { k = ii, }
  45.     p..23 = k..0,
  46.     a = ((k..4)!!) + tt, p..32 = a!!,
  47.     a = ((k..5)!!) + tt, p..41 = a!!,
  48.     (mi) ? { a = '上', b = '書', } ? { a = '挿', b = '入', }
  49.     p..68 = a!!, p..69 = b!!,
  50.     fx-,
  51.     &m("                     ")
  52.     !01
  53.     (r--) >? {
  54.         { m = "外枠", &10 }
  55.         { m = "横線", &20 }
  56.         { m = "縦線", &30 }
  57.         (fa = fa!)
  58.         (tt = oo - tt)
  59.         #v
  60.         >Z
  61.     }
  62.     >A
  63.  
  64. ;------------------------------------------------
  65. ;    終了処理
  66. ;------------------------------------------------
  67. :Z
  68.     (mi) ? #v        ;上書きモード
  69.     /
  70.  
  71. ;------------------------------------------------
  72. ;    外枠描画
  73. ;------------------------------------------------
  74. 10:
  75.     &90 (fx) ? .
  76.     &s
  77.     w = ((xx - x) / 2) - 1 + ((xx - x) % 2),
  78.     xx = x + (w + 1) * 2,        ;再設定
  79.     (ct == 1) ? { :F #s (cd == ' ') ? { #g >F } }
  80.     #<
  81. :E    (ln > y) ? { #e >E }
  82.     (mi) ?? #n
  83.     (x != 0) ? { (x) {' '} }
  84.     &o((k..0)!!) (w) { &o(((k..4)!!) + tt) } &o((k..1)!!)
  85.     #< #x
  86.     (mi) ?? yy++,
  87. :A    (ln < yy) ? {
  88.         (x != 0) ? { :B (lx < x) ? { (ct == 1) ? ' ' ? #d >B } }
  89.         &o(((k..5)!!) + tt)
  90.         :C (lx < xx) ? { (ct == 1) ? ' ' ? #d >C }
  91.         (lx > xx) ? { #s :D (lx < xx) ? { ' ', >D } }
  92.         &o(((k..5)!!) + tt)
  93.         #< #x
  94.         >A
  95.     }
  96.     (mi) ?? #n
  97.     (x != 0) ? { (x) {' '} }
  98.     &o((k..2)!!) (w) { &o(((k..4)!!) + tt) } &o((k..3)!!)
  99.     &d
  100.     .
  101.  
  102. ;------------------------------------------------
  103. ;    横線描画
  104. ;------------------------------------------------
  105. 20:
  106.     &90 (fx) ? .
  107.     &s
  108.     (mi) ? #< ? #n
  109. :A    (lx < x) ? { ' ', >A }
  110.     (fc) ? { t = 6, u = 0, } ? { t = 4, u = tt, } &21
  111. :B    (lx < xx) ? {
  112.         #e
  113.         (cd != ((ii..5)!!) && cd != ((jj..5)!!) && 
  114.         cd != (((ii..5)!!) + oo) && cd != (((jj..5)!!) + oo)) ? {
  115.             #x
  116.             (mi) ? { (ct != 1 && ck == 0) ? #g }
  117.             &o(((k..4)!!) + tt)
  118.             >B
  119.         }
  120.         #x
  121.         t = 10, u = 0, &21
  122.         >B
  123.     }
  124.     (fd) ? { t = 7, u = 0, } ? { t = 4, u = tt, } &21
  125.     #s
  126.     &d
  127.     .
  128.  
  129. ;------------------------------------------------
  130. 21:
  131.     k[,
  132.     #e
  133.     (fa) ? {
  134.         (cd == ((ii..0)!!) || cd == ((ii..1)!!) || 
  135.          cd == ((ii..5)!!) || cd == (((ii..5)!!) + oo)) ? {
  136.             k = kk,
  137.         }
  138.     } ? {
  139.         (cd == ((jj..0)!!) || cd == ((jj..1)!!) || 
  140.          cd == ((jj..5)!!) || cd == (((jj..5)!!) + oo)) ? {
  141.             k = ll,
  142.         }
  143.     }
  144.     #x
  145.     &o(((k..t)!!) + u)
  146.     k],
  147.     .
  148.  
  149. ;------------------------------------------------
  150. ;    縦線描画
  151. ;------------------------------------------------
  152. 30:
  153.     &90 (fx) ? .
  154.     &s
  155. :A    (ln > y) ? { #e >A }
  156.     (fc) ? { t = 8, u = 0, } ? { t = 5, u = tt, } &31
  157. :B    (ln < yy) ? {
  158.         (lx < x) ? {
  159.             (mi) ? { #v :C (lx < x) ? { ' ', >C } #v }    ;上書き→挿入モード
  160.                  ? { :D (lx < x) ? { ' ', >D } }
  161.         }
  162.         (cd != ((ii..4)!!) && cd != ((jj..4)!!) && 
  163.         cd != (((ii..4)!!) + oo) && cd != (((jj..4)!!) + oo)) ? {
  164.             (mi) ? { (ct != 1 && ck == 0) ? #g }
  165.             &o(((k..5)!!) + tt)
  166.         } ? {
  167.             t = 10, &32
  168.             }
  169.         #s #x >B
  170.     }
  171.     (fd) ? { t = 9, u = 0, } ? { t = 5, u = tt, } &31
  172.     #e
  173.     &d
  174.     .
  175.  
  176. ;------------------------------------------------
  177. 31:
  178.     k[,
  179.     (fa) ? {
  180.         (cd == ((ii..4)!!) || cd == (((ii..4)!!) + oo)) ? { k = kk, }
  181.     } ? {
  182.         (cd == ((jj..4)!!) || cd == (((jj..4)!!) + oo)) ? { k = ll, }
  183.     }
  184.     (mi) ? { (ct != 1 && ck == 0) ? #g }
  185.     &o(((k..t)!!) + u)
  186.     #s #x
  187.     k],
  188.     .
  189.  
  190. ;------------------------------------------------
  191. 32:
  192.     k[,
  193.     (fa) ? {
  194.         (cd == ((ii..4)!!) || cd == (((ii..4)!!) + oo)) ? { k = ll, }
  195.     } ? {
  196.         (cd == ((jj..4)!!) || cd == (((jj..4)!!) + oo)) ? { k = kk, }
  197.     }
  198.     &o((k..t)!!)
  199.     k],
  200.     .
  201.  
  202. ;------------------------------------------------
  203. ;    罫線コードチェック
  204. ;------------------------------------------------
  205. 80:
  206. ;98用判定ルーチン
  207.     fb = (cd >= $86A2 && cd <= $86ED),
  208. ;DOS/V用判定ルーチン
  209. ;    fb = (cd >= $849F && cd <= $84BE),
  210.     .
  211.  
  212. ;------------------------------------------------
  213. ;    描画ポイント入力
  214. ;------------------------------------------------
  215. 90:
  216.     &m("[%s]☆始点で[RET]", m)
  217.     &95 (fx) ? .
  218.     x = lx, y = ln,
  219.     &80 fc = fb,
  220.     &m("[%s]★終点で[RET]", m)
  221.     &95 (fx) ? .
  222.     xx = lx, yy = ln,
  223.     &80 fd = fb,
  224.     (x == xx && y == yy) ? { &b(1) >^ }
  225.     (xx < x) ? { t = x, x = xx, xx = t, t = fc, fc = fd, fd = t, }
  226.     (yy < y) ? { t = y, y = yy, yy = t, t = fc, fc = fd, fd = t, }
  227.     .
  228.  
  229. ;------------------------------------------------
  230. ;    キー入力
  231. ;------------------------------------------------
  232. 95:
  233.     &p
  234.     c = r,
  235.     (c == #03) ? { fx+, . }            ;[ESC]で処理中断
  236.     (c == #d) ? { (ct == 1) ? { ' ', >^ } }
  237.     (c == #m) ? .
  238.     &o(c)
  239.     >^
  240.     .
  241.  
  242. ;------------------------------------------------
  243. ;    ポップアップメニュー
  244. ;------------------------------------------------
  245. 99:
  246.     p = " ",        ;Dummy string
  247.     .
  248.  
  249. 01:    "【簡易罫線マクロ】", 20, 7
  250.     "O | 外 枠  [  ]"
  251.     "H | 横 線  [  ]"
  252.     "V | 縦 線  [  ]"
  253.     "W | 線幅変更    "
  254.     "T | 線種変更    "
  255.     "I | 描画モード[    ]"
  256.     "X | 終 了"
  257.     .
  258.  
  259.