記事閲覧

− 野ざらし言 −

4537 田野村氏のyear.def 新元号対応版

めざら 2019/04/12(Fri) 14:03 [4535]へのコメント
http://mezala.la.coocan.jp/
===== year.def 年表記変換 =====

; 年表記変換マクロ YEAR.DEF
; (VZ Editor version 1.5/1.6 共通)
; (C) T.Tanomura, 1992/9/15, 1994/3/5, 2019/4/12(新元号対応:mezala)

【機能】
 年表記を西暦から元号に変換したり、元号から西暦に変換したり、両様
の表記の併記に変換したりします。

【用法】
 年表記の上にカーソルを置いてマクロを起動します。1回目は、変換結
果の出力形式のメニューが出ますので、どれかを選択します。

 試しに、次の最初の年表記(「1888年」)の上にカーソルを置いてマク
ロを起動し、メニューの2番を選択してみてください。その後、マクロを
続けて4回起動してみてください。
  1868(明治元年)
    1912(大正元)年
    1926(昭和元)年
  1989(平成元)年
  明治27(1894)
【補足】
 処理できるのは、1868(明治元)年から2118(令和100)年までです。
 年数の記述は、半角数字「0」〜「9」の組合せか「元」(元年)で行い
ます。全角数字や漢数字で記述されたものは処理できません。
 「年」の文字はあってもなくてもかまいません。
 2回目以後の実行時に変換結果の出力形式を変更したいときは、[SHIFT]
キーを押した状態でマクロを実行してください。メニューが再び表示され
ます。(J-3100、IBM PC でお使いの場合は、マクロ中の「ks&1」という部
分を「ks&3」に書き換えてください。)
 1回目からメニューが出ないようにするには、マクロ中の「y="$(1)",」
という箇所を変更してください。n 番目の出力形式を基本とするには、括
弧内の数値を n+1 にします。例えば、3番目の出力形式にしたければ
「y="$(4)",」とします。このようにした場合も、[SHIFT]キーを押して実
行すればメニューを表示させることができます。
 「■」の付いた行を変更すれば、元年の出力形式と処理後のカーソル位
置についてカスタマイズすることができます。


* M

89 ^\ "年表記変換"
    ? . a[, b[, f[, g[, i[, m[, n[, x[, y[, kx[,
    a-,  ; ■ 元年の出力形式(「a-,」なら「平成元」、「a+,」なら「平成1」)
    b-,  ; ■ 処理後のカーソル移動(「b-,」なら下、「b+,」なら右)
    (cd=='年') ? #s
    x="0123456789元明治大正昭和平成令和",
    &f(cd,x) (r<0) ? >X
    y="$(1)", (y.0<2 || ks&1) ? { !01 (r<0) ? >Y y.0=r+2, } y=y.0-1,
    &s &>
    &f(cd,x) (f=10<r) ? { g=(r-11)/2+1, >A }
    &n ((n=r)<1868 || 2088<n) ? >X	; 西暦→元号
    (n<1912) ? { g=1, m=n-1867, >B }
    (n<1926) ? { g=2, m=n-1911, >B }
    (n<1989) ? { g=3, m=n-1925, >B }
    (n<2019) ? { g=4, m=n-1988, >B }
                 g=5, m=n-2018, >B
:A  &f(cd,x+11) (0<=r) ? { #d >A }	; 元号→西暦
    (cd=='元') ? m+, ? { &n ((m=r)<1) ? >X }
    (g==1 && m<46) ? { n=m+1867, >B }
    (g==2 && m<16) ? { n=m+1911, >B }
    (g==3 && m<65) ? { n=m+1925, >B }
    (g==4 && m<31) ? { n=m+1988, >B }
    (g==5 && m<101)? { n=m+2018, >B }
    >X
:B  &> i-,				; 変換結果を出力
:C  &f(cd,x) (0<=r) ? { #g i++, >C }
    #J (i) { #u } #[
    mi[, mi-,
    (y==1) ? { (f) ? &01 ? &02 }
    (y==2) ? { &01 '(' &02 ')' }
    (y==3) ? { &02 '(' &01 ')' }
    (y==4) ? &01
    (y==5) ? &02
    mi],
    (b) ? { r], (cd=='年') ? #d (0) } ? { &x(r]) #x } >Z
:X  &b(5)
:Y  &x(r])
:Z  y], x], n], m], i], g], f], b], a], &d .
0:  &f(cd,x) (0<=r) ? { #s (r) ? . >^ } #d .
1:  &?("%d",n) .
2:  (a || 1<m) ? r="%4s%d", ? r="%4s元", &?(r,x+8+g*4,m) .

* P

1 "【出力形式】",15,5
   "1 西暦<->元号"
   "2 1993(平成5)"
   "3 平成5(1993)"
   "4 1993"
   "5 平成5"

*

関連記事一覧ツリー (▼ を押すとツリー全体を一括表示します)

- 4534.マクロの修正お願いの件 - あかべこ(代理:めざら) 19/04/12-13:44

返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

おなまえ :
Eメール :
タイトル :
メッセージ: 通常モード(推奨)  整形モード(非推奨)  preモード(空白再現)
※ プログラムコード等を含まない場合は,できるだけ通常モードをご利用ください。

参照先 :
暗証キー: (英数字で8文字以内) プレビューなし


- 以下のフォームから自分の投稿記事を修正・削除することができます -

処理 記事No. 暗証キー