過去の桐井戸端BBS (桐ver.8)
22953 複数ないし単数ある元号を含むデータを一回の項目置換ですべてを西暦に変換したい のぶっち 2003/10/24-23:22
あるレコードの項目内容が

平成14年1月(予定)
昭和51年10月1日/昭和51年11月1日
昭和51年10月1日から昭和51年11月1日
昭和51年10月1日〜昭和51年11月1日
昭和51年10月24日(予定)
平成10年10月24日

という6つのレコードを、一回の項目置換ですべてを
西暦に置換したいのですができるでしょうか?

OSはMeで桐V8sp7です。


22954 まさか、こんなことではないですよね? 初心 2003/10/25-00:58
記事番号22953へのコメント
のぶっちさん こんにちは
6レコードしかないのでしょうか?
6レコードしかないとは思えないのですが?
念のため

#s(#s(#s([あ],"昭和51","1976"),"平成14","2002"),"平成10","1998")
項目置換をするときはバックアップをとっておいてからしましょう。

22955 Re:まさか、こんなことではないですよね? のぶっち 2003/10/25-02:44
記事番号22954へのコメント
すいません。
質問の仕方が悪くて6レコードではなく、複数レコードありで、年号も昭和34年から平成15年まであります。

これでも、一回でシンプルな置換はできるでしょうか?
22956 Re:まさか、こんなことではないですよね? 宮城 2003/10/25-09:44
記事番号22955へのコメント
のぶっちさん、こんにちは。

「(予定)」「/」とか入ったり、1件とは限らなかったり。
文字列ということですよね。ならば「無理」です。

項目としては文字列でかまいませんが、年月日1件だけの項目に展開することから始めてください。
ワープロじゃなくて DBですから。(^_^;;

さもなくば、初心さんの文字置換関数を延々と記述するしかないでしょうね。
10件ずつ記述してもMax.5回ですみますね。

22957 Re:まさか、こんなことではないですよね? のぶっち 2003/10/25-10:24
記事番号22956へのコメント
宮城さん

>「(予定)」「/」とか入ったり、1件とは限らなかったり。文字列
>ということですよね。ならば「無理」です。


はい、その通りです。
やっぱり無理ですか・・・

どうもありがとうございます。
地道な方法で、作業を行います。
22959 Re:複数ないし単数ある元号を西暦に変換する方法 アックン 2003/10/25-12:20
記事番号22953へのコメント
のぶっちさん、こんにちは。
1回だけで置換するとなると、けっこう複雑な式になるものの、可能ではあります。
(おそらく誰か書くと思います。(^^;)
ただし、例示された6例だけにしか対応できないため、もし他のケースが存在したり、
文字列の一部に入力ミスがあったままだったりすると、思うように置換しません。それが恐い。
で、初心さんが書かれたように、#文字置換を入れ子(ネスト)で使う方法が、
最善の結果を得られると思います。
ただ、式にはカッコの入れ子(ネスト)が30重までという制限があるため、
昭和34年から平成15年までだと、1個の式におさまりません。2回置換することになりますから、作業項目が必要です。
そういう条件でもよければ、下記の式を試してください。

項目[A]:例示の6例他、変換したい文字列

項目[B]:置換式
#s(#s(#s(#s(#s(#s(#s(#s(#s(#s(#s(#s(#s(#s(#s( [A]
,"平成1年","1988年"),"平成2年","1989年"),"平成3年","1990年")
,"平成4年","1991年"),"平成5年","1992年"),"平成6年","1993年")
,"平成7年","1995年"),"平成8年","1996年"),"平成9年","1997年")
,"平成10年","1998年"),"平成11年","1999年"),"平成12年","2000年")
,"平成13年","2001年"),"平成14年","2002年"),"平成15年","2003年")

項目[C]:置換式
#s(#s(#s(#s(#s(#s(#s(#s(#s(#s(#s(#s(#s(#s(#s(#s(#s(#s(#s(#s(#s(
#s(#s(#s(#s(#s(#s(#s(#s(#s(#s( [B]
,"昭和34年","1959年"),"昭和35年","1960年"),"昭和36年","1961年")
,"昭和37年","1962年"),"昭和38年","1963年"),"昭和39年","1964年")
,"昭和40年","1965年"),"昭和41年","1966年"),"昭和42年","1967年")
,"昭和43年","1968年"),"昭和44年","1969年"),"昭和45年","1970年")
,"昭和46年","1971年"),"昭和47年","1972年"),"昭和48年","1973年")
,"昭和49年","1974年"),"昭和50年","1975年"),"昭和51年","1976年")
,"昭和52年","1977年"),"昭和53年","1978年"),"昭和54年","1979年")
,"昭和55年","1980年"),"昭和56年","1981年"),"昭和57年","1982年")
,"昭和58年","1983年"),"昭和59年","1984年"),"昭和60年","1985年")
,"昭和61年","1986年"),"昭和62年","1987年"),"昭和63年","1988年")
,"昭和64年","1989年")


22960 Re:複数ないし単数ある元号を西暦に変換する方法 うにん 2003/10/25-13:00
記事番号22959へのコメント

>#s(#s(#s(#s(#s(#s(#s(#s(#s(#s(#s(#s(#s(#s(#s( [A]
>,"平成1年","1988年"),"平成2年","1989年"),"平成3年","1990年")

平成元年は1989年ですが(^^;

それと、確か1月6日(7日?)までは昭和64年ですよね

日付関数を使ってやってみようとしましたが、月までしかないデータがあるのですっきりとはできそうにありません。
正規表現関数があればね〜。

22962 Re:複数ないし単数ある元号を西暦に変換する方法 アックン 2003/10/25-14:30
記事番号22960へのコメント
>平成元年は1989年ですが(^^;
あ、そうでした。

無理矢理1個の式にしてみました。(^^;

#progn( #set(STR , #cond( #文字位置([A],"/"),#日時文字列(#日時値([A]),1,1,3)+"/"+#日時文字列(#日時値(#sstr([A],#文字位置
([A],"/")+1)),1,1,3) , #文字位置([A],"ら"),#日時文字列(#日時値([A]),1,1,3)+"から"+#日時文字列(#日時値(#sstr([A],#文字位置
([A],"ら")+1)),1,1,3) , #文字位置([A],"〜"),#日時文字列(#日時値([A]),1,1,3)+"〜"+#日時文字列(#日時値(#sstr([A],#文字位置([A],
"〜")+1)),1,1,3) , .not#文字位置([A],"日"), #sstr(#日時文字列(#日時値([A]),1,1,3),1,#文字位置(#日時文字列(#日時値([A]),1,1,3),
"月")) , 1,#日時文字列(#日時値([A]),1,1,3) ) ) , #cond( #文字位置([A],"予定"),#set(STR,&STR+"(予定)")) , &STR )
22965 Re:複数ないし単数ある元号を西暦に変換する方法 のぶっち 2003/10/25-18:19
記事番号22962へのコメント
>
>無理矢理1個の式にしてみました。(^^;
>

ざっと見ただけなので、例以外にもあるかもしれません

あと、1桁の場合は全角にしなければならないので、
#日時文字列は使えません。

この制限をつけてもできるでしょうか?
22966 Re:複数ないし単数ある元号を西暦に変換する方法 アックン 2003/10/25-19:29
記事番号22965へのコメント
のぶっちさん>時間がないので簡単に書きます。

>ざっと見ただけなので、例以外にもあるかもしれません
そうでしょうね。一度、他の作業項目に置換しておいてから、それを元の項目と比較して、
変換されてないものを拾っていけばいいでしょうね。

>あと、1桁の場合は全角にしなければならないので、
>#日時文字列は使えません。
月または日が1桁のときは数字を全角にするということですね。
それでしたら、先ほどの式の尻尾の方で、さらに文字列を加工すればいいです。
&STR の "1日"を"1日"〜"9日"なら"9日"という風に、#文字置換(#s)をネストにして。

>この制限をつけてもできるでしょうか?
すみません。今から家に帰るので、他の方にお願いします。>ALL
誰か続けて書いてもらえますか?

つい先ほど、桐V9がよく落ちるし、表示もおかしいので、再インストール・・・・誤って桐V8を削除してしまった。
  とほほ...のアックン(=^・^=)

22969 Re:複数ないし単数ある元号を西暦に変換する方法 今村 誠 2003/10/26-09:37
記事番号22966へのコメント
アックンさんのすばらしい計算式の後で気が引けますが
一応動作すると思います。
年と月と日の間に全角スペースがあったり複数のスペースがあると
うまくいきません。(注意※※数字を半角に変更します。)
記事が長くて1回の投稿ではアップできないので2つに分けてアップしていますが一つの計算式なので式をくっつけてください。

#計算(#代入(&STR,([元項目]))
,#代入(&STR,#S(#S(#S(#S(#S(#S(#S(#S(#S(#S(
#S(#S(#S(#S(#S(#S(#S(#S(#S(#S(#S(#S(#S(#S(#S(#S(#S(#S(&STR
,"1","1"),"2","2"),"3","3"),"4","4"),"5","5")
,"6","6"),"7","7"),"8","8"),"9","9"),"0","0")
," 1","1")," 2","2")," 3","3")," 4","4")," 5","5")
," 6","")," 7","7")," 8","8")," 9","9"),"01","1")
,"02","2"),"03","3"),"04","4"),"05","5"),"06","6")
,"07","7"),"08","8"),"09","9"))
,#代入(&STR,#S(#S(#S(#S(#S(#S(#S(#S(#S(#S(
#S(#S(#S(#S(#S(#S(#S(#S(#S(#S(#S(#S(#S(#S(#S(#S(#S(#S(&STR
,"平成15年","2003年"),"平成14年","2002年"),"平成13年","2001年")
,"平成12年","2000年"),"平成11年","1999年"),"平成10年","1998年")
,"平成9年","1997年"),"平成8年","1996年"),"平成7年","1995年")
,"平成6年","1994年"),"平成5年","1993年"),"平成4年","1992年")
,"平成3年","1991年"),"平成2年","1990年"),"平成1年","1989年")
22970 Re:複数ないし単数ある元号を西暦に変換する方法 今村 誠 2003/10/26-09:38
記事番号22969へのコメント
,"昭和64年","1989年"),"昭和63年","1988年"),"昭和62年","1987年")
,"昭和61年","1986年"),"昭和60年","1985年"),"昭和59年","1984年")
,"昭和58年","1983年"),"昭和57年","1982年"),"昭和56年","1981年")
,"昭和55年","1980年"),"昭和54年","1979年"),"昭和53年","1978年")
,"昭和52年","1977年"))
,#代入(&STR,#S(#S(#S(#S(#S(#S(#S(#S(#S(#S(
#S(#S(#S(#S(#S(#S(#S(#S(#S(#S(#S(#S(#S(#S(#S(#S(#S(#S(&STR
,"昭和51年","1976年"),"昭和50年","1975年"),"昭和49年","1974年")
,"昭和48年","1973年"),"昭和47年","1972年"),"昭和46年","1971年")
,"昭和45年","1970年"),"昭和44年","1969年"),"昭和43年","1968年")
,"昭和42年","1967年"),"昭和41年","1966年"),"昭和40年","1965年")
,"昭和39年","1964年"),"昭和38年","1963年"),"昭和37年","1962年")
,"昭和36年","1961年"),"昭和35年","1960年"),"昭和34年","1959年")
,"昭和33年","1958年"),"昭和32年","1957年"),"昭和31年","1956年")
,"昭和30年","1955年"),"昭和29年","1954年"),"昭和28年","1953年")
,"昭和27年","1952年"),"昭和26年","1951年"),"昭和25年","1950年")
,"昭和24年","1949年"))
,#代入(&STR,#S(#S(#S(#S(#S(#S(#S(#S(#S(#S(
#S(#S(#S(#S(#S(#S(#S(#S(&STR
,"年1月","年1月"),"年2月","年2月"),"年3月","年3月")
,"年4月","年4月"),"年5月","年5月"),"年6月","年6月")
,"年7月","年7月"),"年8月","年8月"),"年9月","年9月")
,"月1日","月1日"),"月2日","月2日"),"月3日","月3日")
,"月4日","月4日"),"月5日","月5日"),"月6日","月6日")
,"月7日","月7日"),"月8日","月8日"),"月9日","月9日")))

元項目のところを適当に変えてください
22971 Re:複数ないし単数ある元号を西暦に変換する方法 悲しげ 2003/10/26-11:06
記事番号22970へのコメント
どもっ、今村さん、ちょっと補足です。

1)
全角半角の判断については、例えば
  #計算(#代入(&STR,#半角([元項目])),・・・・
とすれば文字置換の要素を少し短くできそう。

2)
「平成0m年」の扱いについても同様に考えると
  #計算(#代入(&STR,#s(#半角([元項目]),"成0","成")),・・・・
にできそう。

3)
「平成1年」なる云い方はマイナーだと思いますので、「平成元年」を
追加する必要はあるでしょうね。

4)
月日については「01月02日」なんてのは流石に無いですよね。(^^;)

22973 Re:複数ないし単数ある元号を西暦に変換する方法 今村 誠 2003/10/26-12:43
記事番号22971へのコメント
悲しげさんこんにちは
>1)
>全角半角の判断については、例えば
>  #計算(#代入(&STR,#半角([元項目])),・・・・
>とすれば文字置換の要素を少し短くできそう。

カタカナや英字も半角になるのであえてしていません。

>2)
>「平成0m年」の扱いについても同様に考えると
>  #計算(#代入(&STR,#s(#半角([元項目]),"成0","成")),・・・・
>にできそう。
>4)
>月日については「01月02日」なんてのは流石に無いですよね。(^^;)

これはありがちではないでしょうか、"01","1"),"02","2")や
" 1","1")," 2","2")はそこを訂正しています。

>3)
>「平成1年」なる云い方はマイナーだと思いますので、「平成元年」を
>追加する必要はあるでしょうね。

どちらが書いてあるかわからないのでその方がいいですね。

メモの中に日付以外の数字があると置換してしまうので、使用文字数が少ないなら、
部分列関数を使い、作業項目を作成して年号から月或いは
日までの文字を抜き出して一つずつ処理した方が確実にできると思います。
22975 会話処理で確認しながら変換した方が良いでしょう 佐田 守弘 2003/10/26-15:25
記事番号22953へのコメント
のぶっちさん
皆様から多数の意見が出されておりますが、形式が不定型のため、
1つの計算式で一度に変換するのは、面倒ですし、間違いも起きるかと思います。
(もちろんその様な確実な計算式を作れれるならそれでも構わないのですが。)

この様なケースでは一度に変換するのではなくて、
会話処理を使って確認しながら逐次変換して行くのが宜しいかと思います。
手順は以下の通りです。

1)作業用の項目を追加する
以下の項目を追加して下さい。いずれも計算項目です。
 [pos]  :#文字位置([期間],"〜")
 [開始日] :部分列([期間],1,[pos]-1)
 [終了日] :部分列([期間],[pos]+1)
なお書かれている「昭和51年10月1日/昭和51年11月1日」の項目を[期間]と
仮定しました。

2)区切り文字を統一する
日付期間の区切り文字に「/」、「から」「〜」などが使われている様です。
まずこれを統一します。[期間]を以下の式で置換して下さい。
 #文字置換([期間],"から","〜")
この置換で、「から」が「〜」に変わります。
同様に「/」なども「〜」に統一して下さい。

(予定)についてはこの前に区切りが入っていない様なので以下の式で同じ区切り文字を入れます。
 #文字置換([期間],"(予定)","〜(予定)")

3)データの確認
この段階で、追加した[pos]などの項目に値が入っているか確認して下さい。
未定義の項目を選び出して、別の区切り文字が使われていたら、
上記の方法で区切り文字の統一を行って下さい。
ここまでが区切り文字の統一による開始日と終了日の分割作業です。

4)日付を西暦に変換
次に桐の環境設定で日付の書式が西暦年号型で、「yyyy年mm月dd日」型方に
設定してあることを確認した後、次の2項目を追加して下さい。
 [開始日2]:#日付([開始日],4)
 [終了日2]:#条件選択([開始日]="(予定)","(予定)"
            ,1,#日付([終了日],4))
これで上記の2項目に西暦日付が書き込まれるはずです。

5)開始日と終了日をつなぎ合わせる
後はこれをつなぎ合わせる事によって、目的の期間が得られるはずです。
 [期間]を、[開始日2]+"〜"[終了日2]
以上の作業が終ったら、ワーク用に作成したデータ項目を削除して構いません。

6)1桁の数字を全角に変換
版組みルールではこれが本当です。このために、印刷時にその様な変換を行って
印刷する事は考えられます。
しかし、データベースのデータとしてその様な書式でデータを持つ事は、
適切ではありません。

つまりデータとしては統一された日付書式で持っておき、印刷時に必要に応じて
計算式で置換した値を印刷するわけです。

この変換は、#文字置換([期間],"01","1")の計算式で行います。
01〜09までの9通りの置換ですから、入れ子形式で記述してもそれ程は
複雑にはならないでしょう。
なお、ここで気がつかれたと思いますが、日付の書式が「yyyy年mm月dd日」型になっている事がポイントです。
1桁の前の0を省略した書式では、この置換で破綻します。

佐田守弘(KS-00119)


22978 Re:一括処理で一気に変換した方が良いでしょう Ogo 2003/10/26-15:48
記事番号22975へのコメント
会話処理や「置換式1つで済ます」必然性が全く理解できません。

---- 年号を西暦に.CMD ----

* "§"はこの項目では絶対に使われることが無い任意の1文字に置き換え可能
分岐 すたーと

名札 るーちん
 絞り込み解除 *
 絞り込み [ある項目]{#文字位置([],&置換式)>0}
 繰り返し (#総件数>0)
  ジャンプ 行番号=先頭
  絞り込み 行数=1
  ウィンドウ更新 -1
  代入 &STR=#部分列([ある項目],1,#文字位置([ある項目],&置換式)-1)
  置換 [ある項目]=#部分列([ある項目],#文字数(&STR)+1)
  置換 [ある項目]=#文字置換([],#部分列([],1,#文字位置([],"年")),#文字列(#西暦年(#部分列([],1,#文字位置([],"年"))+"1月1日"))+"§")
  置換 [ある項目]=&STR+[]
  ウィンドウ更新 -1
  絞り込み解除 *
  絞り込み [ある項目]{#文字位置([],&置換式)>0}
 繰り返し終了
 絞り込み解除 *
手続き終了

名札 すたーと
 ウィンドウ位置 最大化,-1
 表 "目的の.TBL"
 ウィンドウ作成 表,ハンドル=&実行リターン
 ウィンドウ位置 最大化,&実行リターン
 置換 [ある項目]=#文字置換([],#部分列([],1,#文字位置([],"年")),#文字列(#西暦年(#部分列([],1,#文字位置([],"年"))+"1月1日"))+"§")
 ウィンドウ更新 -1
 代入 &置換式="昭和"
 手続き実行 るーちん
 代入 &置換式="平成"
 手続き実行 るーちん
 ウィンドウ更新 -1
 置換 [ある項目]=#文字置換([],"§","年")
 ウィンドウ更新 -1
 確認 "和暦を西暦に変更置換しました"
表形式編集


22979 Re:複数ないし単数ある元号を西暦に変換する方法 悲しげ 2003/10/26-16:45
記事番号22973へのコメント
どもっ、今村さん

#半角の件
>カタカナや英字も半角になるのであえてしていません。

あぅ、そうですね。当初の例示ではせいぜい「/」や「(」の類だったので、
無視していいかと思っていましたが、他にどのような字句があるかも不明ですからね。(^^;)

あと、「平成_2年」とかも想定外。(^^;)
変換前の#計算(#代入〜の時点で、#trimをうまく使えないでしょうかね?
あるいは 
  #s(…,"成0","成")
のノリで
  #s(…,"成_","成")
とか
  #s(…,"年0","年")
  #s(…,"月_","月")
とか。

ps.
でも私なら、必要に迫られたら、いっそのこと
 [始年][始月][始日][終年][終月][終始]
と云った複数項目に分解してしまいそう。(^^;)
もちろん「一回の置換」からすると論外でしょうけど。
「一回の置換」ってのは、どちらかと云うと、クイズ的なノリですね。
昔、某Nifty桐たんすで、「たんす職人向け」一発の置換式クイズがあったことをなつかしく思い出しつつ。

22985 Re:一括処理で一気に変換した方が良いでしょう 会話処理信者 2003/10/26-22:31
記事番号22978へのコメント
>会話処理や「置換式1つで済ます」必然性が全く理解できません。

さささ〜っと一括を書けるスキルを持っているなら、ここに書き込みはしないはず。

それに、毎回、このような処理を強いられるのであれば一括処理でもとは思いますが、
今あるデータの基礎加工のみが目的で、今回限りの処理であるなら、
会話処理でも置換式でもいいのでは?

一括処理を書いている時間があれば、会話処理で終わる?
必然性ではなく、実用性の問題?


22987 すばらしき一括処理 natsu 2003/10/26-23:17
記事番号22985へのコメント
>今回限りの処理であるなら、会話処理でも置換式でもいいのでは?

私も以前はそう思っていました
なんと桐の項目計算式式は便利なのであろう、それに比べてMS-Accessは・・・

しかし、項目計算式を多用した結果、後から見て自分は何をしたのか
理解するまでに時間のかかる計算式を書いていました
次に同じようなことをやろうと思っても、コメントも入っていない
式に悪戦苦闘し、括弧の誤りひとつ見つけるために何度も式を見直して
生産性はあまり向上しませんでした

会話処理では、件数も多くなれば時間もかかるし単純ミスもでるのは
当然のことです
私は、ミスの低減と自分自身の経験を有効利用するために、
項目計算式は意識的に使わないようにしました

桐に対する思いも、各人のスキルもそれぞれだと思いますが
一括処理は、基本的に会話処理の積み重ねであり、慣れてしまえば項目計算式と同じです
「一括」の「始めの一歩」を踏み出される方が、一人でも増えればいいなと思います


桐の井戸端BBSへの書き込みは、今回で本当に最後になると思います
さようなら
22988 Re:一括処理で一気に変換した方が良いでしょう うにん 2003/10/26-23:19
記事番号22985へのコメント

>>会話処理や「置換式1つで済ます」必然性が全く理解できません。

>一括処理を書いている時間があれば、会話処理で終わる?
>必然性ではなく、実用性の問題?

「置換式1つで済ます」てのは、悲しげさんのいってたように「クイズ」だと思います。
実用性でもなく趣味でしょう。

22990 natsuさんへ katsuyoshi 2003/10/27-00:18
記事番号22987へのコメント
natsuさんお久しぶりです。
以前牛乳配達表の作成でお世話になり大変ありがとうございました。
natsuさんのおかげで一括がほんのチョッピリ見えたようでした。
natsuさんへお礼を言いたくて過去の投稿にE−メール
アドレスがあるかと思い探しましたが見つかりませんでした。

>桐の井戸端BBSへの書き込みは、今回で本当に最後になると思います
>さようなら

なんか意味深のお言葉ですが寂しくなります。
natsuさんの一括処理大事にして行きます。
これで最後とは言わずまたお顔を見せてください。
本当にありがとうございました。

追伸
管理人の幅田さん
このツリーとは関係ないことを投稿してすみませんでした。
一言natsuさんにお礼を言いたくルール違反しました。
整理をされるときお手数でも削除して頂きますようお願いします。

22991 Re:複数ないし単数ある元号を西暦に変換する方法 アックン 2003/10/27-10:15
記事番号22979へのコメント
今村 誠さん、悲しげさん、フォローありがとうございます。
No.22959 と No.22962 の式のうち、前者を正確にしてくださったのですね。
1桁の数字(大文字)をいったん小文字にすると。
#prognで1式のカッコは30までという制限をクリアすると。
なるほど。勉強になりました。
ツリーがさらに枝分かれして、いろいろな手法が具体的に示されてますね。
ユーザがいろいろな方法を選択できる。いいことです。

>昔、某Nifty桐たんすで、「たんす職人向け」一発の置換式クイズがあった
>ことをなつかしく思い出しつつ。
 おいら、思い出せない...。(=^・^=;(過去ログとっくに削除)

22995 返答者へのお礼 のぶっち 2003/10/27-13:56
記事番号22953へのコメント
アックンさん、うにんさん、今村 誠さん、悲しげさん
佐田 守弘さん、Ogoさん、会話処理信者さん、natsuさん
katsuyoshiさん、初心さん、宮城さん

返答どうもありがとうございます。

まだまだ、使いこなせていない機能が
あったので、大変勉強になりました。


23011 正論は一括処理でしょうが、実際問題として 佐田 守弘 2003/10/27-23:18
記事番号22978へのコメント
Ogoさんお奨めの一括処理で書く方法が、元来は正論ではあろうと思います。
その点では私も異存はありません。

ただし現実問題として初めから目的通りに動作する一括処理を作る事が不可能なのではないかと思います。

その理由として、会話処理信者さんが書いている
>さささ〜っと一括を書けるスキルを持っているなら、ここに書き込みはしないはず。

もあるかとは思いますが、それ以上に、仮に一括処理を使いこなせる人であっても
この種の問題については、最初から完成した一括処理の作成は難しいと思います。

それは、日付期間の区切りが、本当に質問文書に書いてあるだけであるかどうかが分らないためです。
この種の問題を処理してみると、当初考えていなかった例外に出会う事が多いものです。
やってみたら、区切り文字に「−」「ー」「-」「(空白)」なども使われてた、などです。
そのために、会話処理で確認しながら一歩一歩処理する事をお奨めしました。

では私だったらどうするか。
時と場合によって会話処理で行う場合もあれば、一括処理で行う場合もあります。
ただし、上記の通り、一発で完成する一括処理は作れません。
特に、他人が作ったデータは、その様な例外に出会う事が多いものです。

実際には前回書いた内容の様な手順の一括処理を作り、1ステップずつ確認します。
その結果、「これもあったね。」「あれを忘れてたね。」と逐次考えていなかった
例外処理を付け加えて行く事になるのでしょうね。
あるいは会話処理で行うなら、履歴を取って、どの様な処理を行ったかを残します。
そして、データの処理が終わり、用済みになった時に一括処理が完成します。

ただし、「どういう手順で行ったのか」をドキュメントとして記録しておく、
という意味で、その一括処理を残しておく事には意味があると思います。

佐田守弘(KS-00119)
22983 簡単なのがよいでしょう natsu 2003/10/26-22:14
置換したいレコードがある表を「ある表.tbl」、
その項目を「ある項目」としましょう

さて[あ][い][う][え][お]という項目の「元号変換表.tbl」
という表を作ります(データ型は全て文字列としましょう)


「元号変換表.tbl」の作り方(「ある表.tbl」と同じフォルダに作成)
[あ]は、始めデータ型を整数にして、1958から2003までレコードを入力
入力が済んだら、データ型を文字列に変更
[い]=[あ]+".1.1"
[う]=#SSTR(#元号日付( [い], 1 ),1,2)
[え]=#STR(#元号年( [い] ))
[お]=[う]+[え]

平成**年のゼロ詰や全角・半角対応は[え]のところで細工して下さい
両方の表を閉じて、以下の一括処理を実行してみて下さい


変数宣言 固有,文字列{&西暦,&和暦}
表 "ある表"
表 "元号変換表"
ジャンプ 行番号=1
繰り返し 
&西暦=[あ]
&和暦=[お]

編集表 "ある表"
置換 [ある項目]=#文字置換([ある項目],&和暦,&西暦)

編集表 "元号変換表"
ジャンプ 行番号=次行
条件 (#終端行=1) 繰り返し中止
繰り返し終了

戻る