過去の桐井戸端BBS (桐ver.8) |
17508 | 特定の文字コードを含むデータをチェック(絞り込み)したい | まもる | 2002/10/10-17:49 |
初めて質問させて頂きます。使用しているのはver8SP6です。 桐で作成したデータの中で、特定の文字コードを持つ文字をチェックする方法を教えて頂きたいのです。 右クリックで文字コードを表示させる方法は知っておりますが、 取り扱うデータの文字数が膨大なため、検索処理をかけて、結果合致した文字コードの文字が 存在するデータ行のみ表示される・・・みたいなものが希望なのですが、どうしたらよいでしょうか? 具体的には 1)JIS 2121〜2840 2)JIS 3021〜4F53 3)JIS 5021〜7424 以外の文字コードの文字が存在するデータ行のみを表示させる、というものです。 説明が稚拙で恐縮ですが、よろしくお願い致します。 | |||
17516 | Re:特定の文字コードをチェックしたい | 佐田 守弘 | 2002/10/11-00:31 |
記事番号17508へのコメント まもるさん 1)検査する文字の一覧表を作る 対象となる文字の一覧表を作って下さい。これはそれ程難しくありません。 [連番][HEX][文字]の2項目を作り、 [連番]には、#直前値([],1) [HEX]には、#HEX([連番]) [文字]には、#JIS([連番]) を項目計算式で設定し、単に行追加をすれば、文字の一覧表ができます。 この中から対象外の文字範囲を削除してでき上がりです。 2)チェック用の項目を作る [選]の項目を追加して下さい。 3)一括 以下の様な一括を作ります。 (動作は未確認です。) =============================================== 表 "データ.tbl" 置換 [選]=0 表 "文字.tbl" 編集表 データ 繰り返し (.not #終端行) 編集表 文字 繰り返し (.not #終端行) 代入 &文字=[文字] 編集表 データ 条件 (#文字位置([検索項目]),&文字)>0) 行訂正 [選]=1 編集表 文字 繰り返し終了 編集表 データ 繰り返し終了 絞り込み [選]{=1} ================================================ 4)追加 文字表を作らずに、検査する文字コード範囲で繰り返しコマンドを使っても構いません。 その方が多少時間が速いかも知れませんが、一括は多少複雑になります。 いずれにしてもかなり時間を要する処理になると思います。 佐田守弘(KS-00119) | |||
17521 | Re:特定の文字コードをチェックしたい | まもる | 2002/10/11-08:53 |
記事番号17508へのコメント 佐田 守弘様、早々にご教授ありがとうございます。 今から着手してみます。 また分からないことが出てきたら、ぜひ教えて下さい。 ありがとうございます。 | |||
17524 | 佐田 守弘様へ | まもる | 2002/10/11-10:51 |
記事番号17508へのコメント お恥ずかしい話ですが、1)検査する文字の一覧表を作る、のところでつまずいてしまいました。 申し訳ございませんが、ご指導をお願い致します。 項目名 データ型 表示幅 被ふりがな項目名 項目計算式 連番 文字列 M3334 #直前値([],1) HEX 文字列 M3334 #HEX([連番]) 文字 文字列 M3334 #JIS([連番]) という表定義をして、閉じようとすると、 KD1620:式の結果が代入または変換できないデータ型です #HEX([連番]) というメッセージが出てしまうのです。 どうしたらよろしいでしょうか? お忙しいところ恐縮ですがなにとぞよろしくお願い致します。 | |||
17537 | Re:特定の文字コードをチェックしたい | natsu | 2002/10/12-00:16 |
記事番号17516へのコメント >文字表を作らずに、検査する文字コード範囲で繰り返しコマンドを.... すでに開いている表に[チェック]という項目を追加し、 条件に合致する文字があれば その項目に"表示"と入力する一括処理です 全行・全項目調べますが、該当の文字があった時点で次行にジャンプします 検査したい表の一覧が、テーブルになっていれば、 それらも繰り返し処理の追加で自動的に実行できるはずです *********************************** 項目属性変更 追加,{ "チェック",文字列 } ジャンプ 行番号=先頭 繰り返し (.not #終端行 ) 繰り返し &昭和年=1,#項目数-1 条件 ( [チェック]="表示" ) 繰り返し中止 ケース開始 ケース (#項目属性( &昭和年 , 2 )="文字列") &STR=#項目属性( &昭和年 , 0 ) 繰り返し &実行リターン=#JIS(&STR) ケース開始 ケース (&STR=#U) 繰り返し中止 ケース (&実行リターン<8481) * 評価したい文字コード(JISコードの十進数)の条件式です &STR=#U ケース (10304<&実行リターン .and &実行リターン <12321) &STR=#U ケース (20307<&実行リターン .and &実行リターン <20513) &STR=#U ケース (29732<&実行リターン) &STR=#U ケース その他 ケース終了 条件 ( &STR=#U ) 行訂正 [チェック]="表示" &STR=#SSTR(&STR,2) 条件 ( &STR=#U ) 繰り返し中止 繰り返し終了 ケース その他 ケース終了 繰り返し終了 ジャンプ 行番号=次行 繰り返し終了 *********************************** | |||
17539 | Re:特定の文字コードをチェックしたい | まもる | 2002/10/12-00:50 |
記事番号17537へのコメント natsu様、ご教授ありがとうございます。 会社が月曜日まで休みなので、火曜日に早速試してみます。 桐で作ったデータをテキストに落として、ある取引先に定期的に収めているのですが、 「文字化けするので対応して欲しい」と言われて、この掲示板におすがり致しました。 本当にありがとうございます。 不明な点が出たら、また質問させて下さい。よろしくお願いいたします。 | |||
17549 | データ型を確認して下さい | 佐田 守弘 | 2002/10/12-23:31 |
記事番号17524へのコメント まもるさん エラーになったのは、[連番]の項目を文字列型に設定しているためです。 ここには連番号の整数値を設定するので、長整数型に設定して下さい。 なお、前回の書き込みに一部訂正があります。 [連番](長整数型)に設定する項目計算式は、#直前値([],0)+1 でした。 佐田守弘(KS-00119) | |||
17594 | natsu様 | まもる | 2002/10/15-14:10 |
記事番号17539へのコメント natsu様 ご教授頂いたとおりに記述したうえ、実行したところ、問題なく動作したのですが・・・ 実はヒット数が予想以上に多かったため、さらにお願いしたいことがございます。 該当の文字だけ字の色を変える 該当の文字だけチェック欄に表示させる みたいな事は可能でしょうか? 厚かましいお願いですが、さらにご指導下さい。 | |||
17597 | 少々お待ち下さい | natsu | 2002/10/15-15:51 |
記事番号17594へのコメント 今回の一括処理は、ある行で項目値を順番に評価して 該当の文字が出てきたらチェックを入れるものです というわけで、行中に該当文字があればそこで その行の評価を中断して次の行へジャンプします それから、過去ログにもあったと思うのですが 桐では、ひとつの項目値の中で、特定の文字のフォントのみを 変更できなかったと思います というわけで、 それをやろうとおもったら、若干の一括の手直しと データを印字コマンドでHTML化して、該当文字にタグをつけ 色つきにするという事になります データの確認は、IE等のブラウザ上で行うかHTMLをエクセルあたりに 取り込む事になります(桐9ではどうなんでしょうか) 時間がとれれば、また書き込んでおきます それから・・・ 「様」が付くほどの者ではございませんのでよろしく | |||
17598 | 佐田様 | まもる | 2002/10/15-15:58 |
記事番号17549へのコメント ご指導頂いた内容にて、文字表は完成できました。ありがとうございます。 --------------------------------------------------------------- 表 "データ.tbl" 置換 [選]=0 表 "文字.tbl" 編集表 データ 繰り返し (.not #終端行) 編集表 文字 繰り返し (.not #終端行) 代入 &文字=[文字] 編集表 データ 条件 (#文字位置([検索項目]),&文字)>0) 行訂正 [選]=1 編集表 文字 繰り返し終了 編集表 データ 繰り返し終了 絞り込み [選]{=1} ---------------------------------------------------------------- という記述にて早速実行してみたのですが ---------------------------------------------------------------- 一括処理の実行中にエラーが発生しました KU1090:コマンドの形式に誤りがあります 詳細 >0) 行訂正 [選]=1 ファイル名 ***.cmd(←当方で作成したファイル名です) 行番号 10 ----------------------------------------------------------------- というメッセージが表示されてしまうのです。 データ.tblには 選 の項目はちゃんと追加しているのですが、どうしてなのでしょうか? 私の操作ミスか記述ミスによるものかと思うのですが、添削方々ご指導をお願い致します。 なにとぞよろしくお願い致します。 | |||
17608 | Re:少々お待ち下さい | natsu | 2002/10/15-18:18 |
記事番号17597へのコメント 表データを始めからHTML化できますが 一覧表印刷でHTML書き出しとすれば手間いらずです (よけいな時間はかかりますが) ただし、1行あたり4000文字の制限はあります 必要な項目のみ選択しましょう まず、一覧表印刷の設定を行っておきます(条件名を"HTML"としておきます) つづいて、該当文字を含む行は既に絞り込まれているとして 一覧表印刷→HTML化を行います 項目がひとつの表をあらかじめ用意し("_読込.tbl" [読込]:文字列型) その表に、HTML化した表をテキスト読み込みます その表を1行、1文字ずつ評価して行きます 最後に全レコードをテキスト書き出しして、拡張子をHTMに変更します ************************************* *既に表は開いており、該当文字を絞り込んでいる状態からスタートします *必ずしも表を絞り込んでおく必要はありませんが、スピードアップは可能です 一覧表印刷 条件名 = "HTML",HTMLファイル名 = "HTML.htm" 表 "_読込.tbl" 書き出し 枠組み,"読込.tbl" /* 行削除・圧縮より少しは速いかもしれませ ん */ 表 "読込.tbl" 読み込み テキスト,"HTML.htm",区切り = "♪" /*データに絶対存在しない 文字を区切りとします*/ ジャンプ 行番号=先頭 &比較式="<FONT COLOR=""red"">" /* 該当の文字を赤くするタグです */ &置換式="</FONT>" 繰り返し (.not #終端行) &昭和年=1 &選択ファイル名=#U &STR=[読込] 繰り返し &実行リターン=#JIS(#SSTR(&STR,&昭和年)) ケース開始 ケース (10304<&実行リターン .and &実行リターン <12321) &選択ファイル名=&選択ファイル名 + &比較式 + #JIS(&実行リターン) + &置換式 ケース (20307<&実行リターン .and &実行リターン <20513) &選択ファイル名=&選択ファイル名 + &比較式 + #JIS(&実行リターン) + &置換式 ケース (29732<&実行リターン) &選択ファイル名=&選択ファイル名 + &比較式 + #JIS(&実行リターン) + &置換式 ケース その他 &選択ファイル名=&選択ファイル名+#JIS(&実行リターン) ケース終了 &昭和年=&昭和年+1 条件 ( #SSTR(&STR,&昭和年)=#U ) 繰り返し中止 繰り返し終了 行訂正 [読込]=&選択ファイル名 ジャンプ 行番号=次行 繰り返し終了 書き出し テキスト,"check.htm" *同じフォルダに check.htm が作成されているはずです 確認して下さい |