home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DOS/V Power Report 2001 June
/
VPR0106A.BIN
/
OLS
/
JED194V
/
JEDDOC.LZH
/
TEXTFORM.MCR
< prev
next >
Wrap
Text File
|
1993-10-09
|
4KB
|
193 lines
;**********************************************************
; JED マクロサンプル
; 'TEXTFORM.MCR'
; [文書整形支援マクロ]
; Ver 0.10 1992 初版
; 0.90 Oct.1993
;
; Written by H.Orikawa 1992-1993
;
; 注) 1.折り返しのある行に対しては正常に動作しない。
; (インデントを付加した後で折り返しが発生しても不可)
; 2.インデントは指定桁数の範囲内で可能な限りタブを挿入し、
; 残りをスペースで埋める
; 3.タブを含む行の場合、正常に動作しないことがある。
; 4.改行だけの行(空行)に対しては何もしない。
;**********************************************************
; &t ;Debug用トレースモード
!01
(r--) >? {
&10 ;インデント
&20 ;左揃え
&30 ;右揃え
&40 ;センタリング
}
>Z
;----------------------------------------------------------
; インデント
;----------------------------------------------------------
10:
&g("インデント桁数") ;
(r == -1) ? . ;[ESC]でキャンセル
(r == -2) ? { ;[CR]のみの時は
xx = ht, ;現在のタブ設定値を採用
} ? {
xx = r,
}
&50 ;範囲設定サブルーチンコール
:I
(ln != ee) ? {
#< ;行頭へ
(ct == 1) ? { ;改行だけの行の時
>J
}
(xx / ht) { ;タブ挿入数
#21 ;タブコード挿入
}
(xx % ht) { ;スペース挿入数
' ' ;半角スペース挿入
; ' ' ;全角スペース挿入
}
:J
#> ;行末へ(EOF検出を確実にするため)
(ct) ?? . ;ファイルの終わり(EOF)なら戻る
#x ;次の行へ
>I
}
;----------------------------------------------------------
; 左揃え
;----------------------------------------------------------
20:
&50 ;範囲設定サブルーチンコール
s = 0,
&60 ;共通サブルーチンコール
;----------------------------------------------------------
; 右揃え
;----------------------------------------------------------
30:
&50 ;範囲設定サブルーチンコール
s = 1,
d = 1,
&60 ;共通サブルーチンコール
;----------------------------------------------------------
; センタリング
;----------------------------------------------------------
40:
&50 ;範囲設定サブルーチンコール
s = 1,
d = 2,
&60 ;共通サブルーチンコール
;----------------------------------------------------------
; 範囲設定サブルーチン
;----------------------------------------------------------
50:
(mi) ? #v ;挿入モード
&m("開始行で[RET]キーを押して下さい")
:R
&p ;キー入力待ち
(r != #m) ? { ;改行キーが押されるまで
&o(r) ;そのまま出力
>R
}
#< ;行頭へ
bb = ln, ;最初の行を記憶
#b ;範囲設定用にブロック範囲設定コマンドを代用する
&m("範囲を指定し[RET]キーを押して下さい")
:K
&p ;キーボードより1文字入力待ち
(r == #m) ? { ;改行キーが押されたら
#03 ;[ESC]を出力しブロックモードから抜ける
ee = ln, ;最後の行を記憶
(bb >= ee) ? >Z ;文頭方向への範囲指定はとりあえず無視
&s ;画面表示抑制(サイレントモード)
&v(0) ;カーソル表示オフ
(ln - bb) { ;最初の行まで戻る
#e
}
. ;呼び出し元へ戻る
}
(r == #03) ? { ;[ESC]で強制終了
#03 ;[ESC]を出力しブロックモードから抜ける
/
}
(r == #e) ? #e
(r == #x) ? #x
(r == #r) ? #r
(r == #c) ? #c
(r == #w) ? #w
(r == #z) ? #z
(r == #37) ? #37
(r == #38) ? #38
(r == #^) ? #^
(r == #_) ? #_
>K
;----------------------------------------------------------
; センタリング/左揃え/右揃え共通サブルーチン
; s d
; 0 - 左揃え
; 1 1 右揃え
; 1 2 センタリング
;----------------------------------------------------------
60:
:L
(ln != ee) ? {
#< ;行頭へ
(ct == 1) ? { ;改行だけの行の時
>N
}
(ct == 2) ? { ;半角空白/制御コード/全角空白なら
#t ;行頭から削除
}
(s) ?? >N ;左揃え(s==0)ならスキップ
#> ;行末へ
n = (we - lx - 1) / d, ;挿入する空白数計算
(n <= 0) ? >N ;空白を挿入できない
#< ;行頭へ
(n) {
' ' ;空白をn個出力
}
:N
#> ;行末へ(EOF検出を確実にするため)
(ct) ?? . ;ファイルの終わり(EOF)なら戻る
#x ;1行下へ
>L
}
;----------------------------------------------------------
; 終了処理
;----------------------------------------------------------
:Z
&m(" ")
&d ;画面再表示
&v(1) ;カーソル表示オン
/
;ポップアップメニュー
01: "文書整形支援マクロ", 20, 4
"I:インデント"
"L:左揃え"
"R:右揃え"
"C:センタリング"
.