home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DOS/V Power Report 1997 December
/
VPR9712A.ISO
/
OLS
/
DOS
/
jeddoc
/
jeddoc.LZH
/
KEISEN.MCR
< prev
next >
Wrap
Text File
|
1996-11-01
|
6KB
|
259 lines
;***************************************************************
; JED マクロサンプル
; 'KEISEN.MCR'
; [簡易罫線マクロ]
; Ver 0.10 1994 7 初版
; 0.20 1994 7/18 改定版
; 0.30 1994 7/20 上書きモード、線種追加
; 0.41 1994 7/25 単独罫線対応、メニュー表示方式他変更
; 0.50 1996 10/13 DOS/V用データ追加
;
; Copyright (C) H.Orikawa 1994-1996
;
; 注1) タブを含む行および、折り返しのある行では正しく罫線が
; ひけない.
; 2) DOS/V機で使用する場合は 98用の記述部分を削除し、DOS/V
; 用記述部分のコメントをはずす.
; (罫線コード定義部と罫線コードチェックサブルーチン)
;***************************************************************
;98用罫線コード
; 0 1 2 3 4 5 6 7 8 9 10
ii = "ョイカコ「、セニホヨ゙",
jj = "アオケス」・ナヘユン",
kk = " ソヌメレ",
ll = " ツハムル",
;DOS/V用罫線コード
; ii = "┌┐└┘─│├┤┬┴┼",
; jj = "┏┓┗┛━┃┣┫┳┻╋",
; kk = " ┝┥┰┸┿",
; ll = " ┠┨┯┷╂",
;次の2行はデフォルト値
(mi) ? #v ;挿入モード
fa-, ;線幅フラグ(0:細線、1:太線)
oo = 8, ;破線タイプ(実線コードからのオフセット)
tt = 0, ;線種フラグ(0:実線、oo:破線)
&99
;------------------------------------------------
; メインループ
;------------------------------------------------
:A
(fa) ? { k = jj, } ? { k = ii, }
p..23 = k..0,
a = ((k..4)!!) + tt, p..32 = a!!,
a = ((k..5)!!) + tt, p..41 = a!!,
(mi) ? { a = '上', b = '書', } ? { a = '挿', b = '入', }
p..68 = a!!, p..69 = b!!,
fx-,
&m(" ")
!01
(r--) >? {
{ m = "外枠", &10 }
{ m = "横線", &20 }
{ m = "縦線", &30 }
(fa = fa!)
(tt = oo - tt)
#v
>Z
}
>A
;------------------------------------------------
; 終了処理
;------------------------------------------------
:Z
(mi) ? #v ;上書きモード
/
;------------------------------------------------
; 外枠描画
;------------------------------------------------
10:
&90 (fx) ? .
&s
w = ((xx - x) / 2) - 1 + ((xx - x) % 2),
xx = x + (w + 1) * 2, ;再設定
(ct == 1) ? { :F #s (cd == ' ') ? { #g >F } }
#<
:E (ln > y) ? { #e >E }
(mi) ?? #n
(x != 0) ? { (x) {' '} }
&o((k..0)!!) (w) { &o(((k..4)!!) + tt) } &o((k..1)!!)
#< #x
(mi) ?? yy++,
:A (ln < yy) ? {
(x != 0) ? { :B (lx < x) ? { (ct == 1) ? ' ' ? #d >B } }
&o(((k..5)!!) + tt)
:C (lx < xx) ? { (ct == 1) ? ' ' ? #d >C }
(lx > xx) ? { #s :D (lx < xx) ? { ' ', >D } }
&o(((k..5)!!) + tt)
#< #x
>A
}
(mi) ?? #n
(x != 0) ? { (x) {' '} }
&o((k..2)!!) (w) { &o(((k..4)!!) + tt) } &o((k..3)!!)
&d
.
;------------------------------------------------
; 横線描画
;------------------------------------------------
20:
&90 (fx) ? .
&s
(mi) ? #< ? #n
:A (lx < x) ? { ' ', >A }
(fc) ? { t = 6, u = 0, } ? { t = 4, u = tt, } &21
:B (lx < xx) ? {
#e
(cd != ((ii..5)!!) && cd != ((jj..5)!!) &&
cd != (((ii..5)!!) + oo) && cd != (((jj..5)!!) + oo)) ? {
#x
(mi) ? { (ct != 1 && ck == 0) ? #g }
&o(((k..4)!!) + tt)
>B
}
#x
t = 10, u = 0, &21
>B
}
(fd) ? { t = 7, u = 0, } ? { t = 4, u = tt, } &21
#s
&d
.
;------------------------------------------------
21:
k[,
#e
(fa) ? {
(cd == ((ii..0)!!) || cd == ((ii..1)!!) ||
cd == ((ii..5)!!) || cd == (((ii..5)!!) + oo)) ? {
k = kk,
}
} ? {
(cd == ((jj..0)!!) || cd == ((jj..1)!!) ||
cd == ((jj..5)!!) || cd == (((jj..5)!!) + oo)) ? {
k = ll,
}
}
#x
&o(((k..t)!!) + u)
k],
.
;------------------------------------------------
; 縦線描画
;------------------------------------------------
30:
&90 (fx) ? .
&s
:A (ln > y) ? { #e >A }
(fc) ? { t = 8, u = 0, } ? { t = 5, u = tt, } &31
:B (ln < yy) ? {
(lx < x) ? {
(mi) ? { #v :C (lx < x) ? { ' ', >C } #v } ;上書き→挿入モード
? { :D (lx < x) ? { ' ', >D } }
}
(cd != ((ii..4)!!) && cd != ((jj..4)!!) &&
cd != (((ii..4)!!) + oo) && cd != (((jj..4)!!) + oo)) ? {
(mi) ? { (ct != 1 && ck == 0) ? #g }
&o(((k..5)!!) + tt)
} ? {
t = 10, &32
}
#s #x >B
}
(fd) ? { t = 9, u = 0, } ? { t = 5, u = tt, } &31
#e
&d
.
;------------------------------------------------
31:
k[,
(fa) ? {
(cd == ((ii..4)!!) || cd == (((ii..4)!!) + oo)) ? { k = kk, }
} ? {
(cd == ((jj..4)!!) || cd == (((jj..4)!!) + oo)) ? { k = ll, }
}
(mi) ? { (ct != 1 && ck == 0) ? #g }
&o(((k..t)!!) + u)
#s #x
k],
.
;------------------------------------------------
32:
k[,
(fa) ? {
(cd == ((ii..4)!!) || cd == (((ii..4)!!) + oo)) ? { k = ll, }
} ? {
(cd == ((jj..4)!!) || cd == (((jj..4)!!) + oo)) ? { k = kk, }
}
&o((k..t)!!)
k],
.
;------------------------------------------------
; 罫線コードチェック
;------------------------------------------------
80:
;98用判定ルーチン
fb = (cd >= $86A2 && cd <= $86ED),
;DOS/V用判定ルーチン
; fb = (cd >= $849F && cd <= $84BE),
.
;------------------------------------------------
; 描画ポイント入力
;------------------------------------------------
90:
&m("[%s]☆始点で[RET]", m)
&95 (fx) ? .
x = lx, y = ln,
&80 fc = fb,
&m("[%s]★終点で[RET]", m)
&95 (fx) ? .
xx = lx, yy = ln,
&80 fd = fb,
(x == xx && y == yy) ? { &b(1) >^ }
(xx < x) ? { t = x, x = xx, xx = t, t = fc, fc = fd, fd = t, }
(yy < y) ? { t = y, y = yy, yy = t, t = fc, fc = fd, fd = t, }
.
;------------------------------------------------
; キー入力
;------------------------------------------------
95:
&p
c = r,
(c == #03) ? { fx+, . } ;[ESC]で処理中断
(c == #d) ? { (ct == 1) ? { ' ', >^ } }
(c == #m) ? .
&o(c)
>^
.
;------------------------------------------------
; ポップアップメニュー
;------------------------------------------------
99:
p = " ", ;Dummy string
.
01: "【簡易罫線マクロ】", 20, 7
"O | 外 枠 [ ]"
"H | 横 線 [ ]"
"V | 縦 線 [ ]"
"W | 線幅変更 "
"T | 線種変更 "
"I | 描画モード[ ]"
"X | 終 了"
.