9.31.半角から全角へ変換する |
会社で、人事マスターの住所を、別のファイルに変換することになりました。ところがよく調べてみると、人事マスターの住所のフィールドはオープンフィールドで、転送先の住所のフィールドは、漢字専用でした。問題は、「1-27-19」とか、「ライオンズマンション」などが半角で、人事マスターに入っていることです。これを、すべて、全角にしなくてはなりません。 以前、ML400で、16進数を最初につけるだけでいいような、話しが出ていました。そこで、思い切って、変換サブルーチンを作りました。以下は、そのときの手順です。 まず、0から255までの、半角の文字を一覧にだして、その値にX'41'とX'42'とX'43'とX'44'と合成でして、出来た文字に、0e,0fをつけて、表を作成してみました。この結果は、付録(注:重いです)に載せました。この表の中で、セルの色が赤色のものは、似ている文字や、注意したい文字です。この表を見て、サブルーチン#SRSBDBを作りました。 42英数、43カタカナ、44ひらがな と、覚えておきましょう。 問題は、「ガ」が「カ」+濁点となってしまうことでした。でも、濁点や半濁音は、全部で26個(「ヴ」を忘れずに)なので、配列で解決しました。 表を参照して、「ここからここの場合は、X'42'をつけて、ここからこの場合は、X'43'をつけて」、と元となる半角のデータから、つける16進数を42か43かの切り分けました。 半角から、全角なので、英語、数字、記号、とカタカナのみのサポートです。中には、小さなワやカやケがあり、これは、半角にはありません。でも、半角から全角なので、問題無いでしょう。また、半角には、ひらがなが有りませんので、全角のひらがなには、変換していません。 空白をつぶすと、複数の英単語「GREEN GARDEN」が、くっついて、「GREENGARDEN」となってしまいます。仕方ないので、空白をつぶすか否かを、パラメータで、渡すことにしました。0e0fはつぶしています。空白を生かすと、変換結果が長くなるので注意です。 このサブルーチンをダウンロードに公開する事にしました。 よかったら、使ってみてください。 追記以下の要領で、ヘキサ42とヘキサ43を分けました。このほかに、ガギグゲゴザジズゼゾダヂヅデドバビブベボパピプペポヴが有ります。
1998/9/11 |
You are at K's tips-n-kicks of AS/400
|
SEO | [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送 | ||