J゚ 00.08.14- [TSH] タイトル検索・全文検索] 00.08.28 混 L=11521 C=0074 * TSH 2000.07.15 v1.01 ドライブ情報がない時は stop にした * 2000.07.16 v1.02 一覧取得後、それを表示するようにした * 2000.07.19 v1.03 インデックス指定されてる時の不具合修正 * ヒットが1ファイルのみの時の不具合修正 * 2000.08.11 v1.04 1列目セルを R:クリックで読めるようにした * S頁数を越える時の制限を加えた * 2000.08.12 v1.05 結果が出ないバグの修正m(__;m * 2000.08.21 v2.00 全文検索、文字の同一視を追加 * メディア変更毎に一覧作成を選択しなくても * 良いように、自動作成するようにした。 * 従って、検索不要ファイルチェックは除外 * 但し、全文検索はマイツ―ルが修正されるまで * 隠し扱い(日付が全部更新される) * 2000.08.22 v2.01 全文検索時、SHU N でエスケ―プした時、 * 残りペ―ジに空白が有る時のバグ修正。 * 2000.08.25 v2.02 メッセ―ジを[記入]から[使い]に変更。 * 2000.08.29 v2.03 エラ―メッセ―ジ他、ちょっと変更。  *ファイル名 TSH.MYX *仕事 ファイル間タイトル検索 &(全文検索) *生成ファイル TMP(V型) ALL_FILE.MYX PATH.MYX DATA.DAT *使用ファイル TMP(V型) Sペ―ジ *設定変更 WSIZE *登録方法 WFL で書いて FILEX プログラム登録  *動作確認 マイツ―ル for Windows 1.16 on Windows98 * マイツ―ル V2 for Windows 2.03 on Windows98 * 東芝 SS3380( Pentium2/400MHz 128MB メモリ ) * 自作 飛流II ( Celeron300A/300MHz 256MB メモリ )  *使用変数 V39,V40,V41,V42,V38,V43,V44,V45,V46,V47,V48,V49 * Z90,Z91,Z82,Z83,Z84,Z95,Z96,Z97,Z98,Z99 * V36,V37  *<使用方法>  *初回 * WFL:TSH.MYX::FILEX:E:TSH.MYX:ESC:  *初回 と FILE命令でドライブを作成、変更した後、 * [TSH] 検索…1/ 一覧作成…2 で2を指定して下さい。 * エスケ―プで中止します。  *その他 ファイル間から検索したい時 * [TSH] 検索…1/ 一覧作成…2 で、1を押すか、実行キ―。 * エスケ―プで中止します。  *メニュ―に表示しませんが、3を選ぶと全文検索になります。 *但し、SHU N は、検索ヒットした後 S を選んでも実行キ―を押しても、 *ヒットしたペ―ジ以降の日付を「全て」変えてしまいます。(全バ―ジョン) *それさえ見つければ後はエスケ―プする、ならOKのようです。  *この為に、ヒット後、残りの頁も検索出来るようにはしました。 *が、F型のみで、V型では同ファイルの残りの検索は出来ませんでした。 *他のファイルは、「続行」を選べば続けて検索出来ます。) *V型ファイルでは、日付が変わるをやむなしとして、実行を押して下さい。 *現在ファイルが何か、は裏画面のファイル一覧をご参照下さい。 *一番最後に「o」が付いてるのが、現在ファイルです。  *これらの理由で、現在隠しコマンド扱いにしています。 *リコ―さんが直して下さったら、正規メニュ―に入れます。(報告済み)  * [TSH] タイトル検索…1/実行 全文検索…2 1か2を選んで下さい * エスケ―プで中止します。  *タイトルから文字列を検索したい時 *[TSH] 検索したいタイトルは(*指定可) *「=」不要。SHと同じです。タイトルが判っていればタイトル。 *エスケ―プで中止します。 *「MUG」を含むタイトルなら「*MUG*」(「MUG」は別の文字です。) *[TSH] 大文字・小文字の同一視 Y/N 実行…N *で実行が押されたら、WinMT と WINMT 等、大文字小文字は同一視します。 *(全角・半角は同一視しません。 これに対応すると処理に時間掛かりそう) *N が押されたら、入力通りの文字を探します。  *検索の結果ヒットすれば、ファイル名とペ―ジ番号を一覧にします。 *ので、仕事は=R[ENTER] または Rボタンをクリック *何ペ―ジを読み出しますか: その頁が書かれたセルをクリックして下さい。 *その頁では無い場合、RV[ENTER] で一覧に戻せます。 *または、Xしてから画面分割すれば、次々と読み出せます。 *R: もついでに入れようと思いましたが、マウス標準モ―ドで換えって不便 *なので止めました。 必要ならご自分で組み込んで下さい。  *ペ―ジの全文から、文字列を検索したい時 *要するにSHUのN指定ですから、直接、その文字列に飛びます。 *一覧にはしません。 *従って、SHU での置き換え(修正)が可能です。  *「書き換えの種類は」と聞いてきた時 *SHU で止まったデ―タが探してる物では無い場合、[ENTER] で次を探します。  *デ―タが見つかった場合、そのペ―ジで止めたければ SHU でエスケ―プ。 *TSH が続行するかどうか聞きますので、先は要らなければ、もう一度 *エスケ―プして下さい。列番号行を右ドラッグすればファイル一覧が見えます。 *エスケ―プ後 「先は要らなければ」の先の意味 *F型の時、同ファイルの残った頁も検索します。 *V型は、頁指定出来ませんので、同ファイルの残りは飛ばされます。 *飛ばしたら困る場合は、「書き換えの種類は」でSキ―か実行キ―を押す *しか有りません。(この場合、日付は変わります。V2.00 )  *ヒットしたペ―ジの他も文字列の変更や、ペ―ジのクリア等、SHU 以外の *機能を使って操作した後も TSH を続けたければ、(またイチからが嫌なら) *SHU が「書き換えの種類は」と聞いてきてる時、 *CTRL と PAUSE を同時に押してから、エスケ―プキ―を押します。 *そして「手入力」を選んで、手入力して下さい。 *オ―トに戻るには、CONT[ENTER] の後、「再開」を選択します。 *ただ、ここで変数の内容を変える事はなさらないで下さい。 *どういう動作をするか判りません。  *<対応可能範囲>  *対応ファイル数は、TF:SV:RV で出る範囲。(200?) * TF:SV:RV: で出ないファイルは無視します。 *1ファイルの対応タイトル数は、RC 出来る範囲。 * SET:0 の時 9120頁(76タイトル行×120頁) *ネットワ―クを含むドライブ登録対応。 * 不要な場合は、182行目の CONTINUE の左の * を消して下さい。 *S、SYS、TMP、FDドライブは、対象外。 *ファイル構成が変わる度に一覧作成は面倒なので、自動的にTFを実行する *ようにしました。毎度チェックも面倒だし、それ程時間も掛からないし、 *という事で、ここは不要の指定は出来なくなりました。 *代わりに、キ―ワ―ドが掛かってるファイルを検索除外とします。  *<前提条件・注意事項>  *初回とファイル変更後には、必ず「一覧作成」を指定して下さい。 *Sペ―ジを使います。ので、Sに重要なデ―タを置かないで下さい。 *基本的に、S頁が満杯になるほど、ザ―――っと出る事は考えていません。 *SHの結果、S頁が満杯になる場合は、エラ―終了させます。  *作業ファイルに可変長TMPを使います。 *無ければ、一覧作成時に自動作成します。 *固定長のTMPが有る場合、オ―トを変更して下さい。 *ALL_FILE.MYX を自動作成します。 *1台のマシンに複数の同じ名前のマイツ―ルが入ってる時は、エラ―が出て *巧く動作しない時が有ります。  *全文検索時、1ペ―ジも触られていないファイルが有った場合、エラ―終了 *します。これを避けるにはタイトルファイルを SGET しないといけないし、 *空っぽのファイルが有るかな?と思いますので、速度を優先します。 *もし有れば、F::ESC: で作った[※]タイトルで良いですから書いて下さい。 *でないと、そのファイル以降を検索出来ません。  *TF、FILE命令について *何かの時。。。マシンパワ―の割にファイルやドライブ登録が多いとか、 *ネットワ―ク、その他、登録ドライブが正常に接続されてない時とか、 *(LANカ―ドが挿さっていて、相手が起動・接続してない時等を含む。) *Excel が起動中とかの時、等、だったか。。。やたら TF に時間の掛かる *事が 486 マシンの頃、有りました。(SS3380 以降、私は未経験。) *一見ハング状態に見えますが、しつこく待てば戻るのでしょう。  *LANについて *マイツ―ル for Windows は、マシン名登録でないと駄目かも知れません。 *マイツ―ルビュ―アとV2は、ドライブ割り当て登録でもOKのようです。 *Windows2000 では、ドライブ割り当て登録でないと駄目かも知れません。 *つまり、マイツ―ル for Windows と Windows2000 の時、このオ―トは *LANで繋がったマシンのファイルを探せないかも知れません。  *マシン名登録とは、\\HIRYU\C\WINMT\MYFILE のように指定する方法です。 *ドライブ割り当て登録とは、Windows でドライブ割り当てをしてから、 *FILE 命令でドライブ登録する方法です。 *ただドライブ割り当てですと、ノ―トPCには不便な場合が多く。。。。  *当方、今、LAN関係動作確認不能な状況です。 *どなたか、ご報告下さると有り難いです。  *----------------------------------------------------------------------* *ユ―ザ―カスタマイズ部分(全画面表示なら、「*」を交換して下さい。)  WSIZE:2:::::Z90=Z40: *部分表示用 * WSIZE:1:::::Z90=Z40: *全画面表示用 *----------------------------------------------------------------------*   CHKFILE:M: *HDD確認  STRCPY:ABCDEFGHIJKLMNOPQRSTUVWXYZ::Z37:1:1:"V39": *V39 MT のドライブ  LASTP:S:Z91=Z0: *Z91 Sの最終頁  *開始  Z0=1000:  ACCPNUM:[TSH] 検索…1/ 一覧作成…2 :1:3:1:?:  IF Z0=1000 THEN:STOP:ENDIF:   IF Z0=2 THEN:  GOSUB *一覧作成:  ENDIF:   * SHU N ヒットしたペ―ジ以降、全てのペ―ジの日付が更新されるバグ * の為、マイツ―ル修正までコメントアウト  * Z0=1000: * ACCPNUM:[TSH] タイトル検索…1/実行 全文検索…2 :1:2:1:?: * IF Z0=1000 THEN:STOP:ENDIF:   IF Z0=3 THEN:GOTO *全文検索:ENDIF:   V0="ESC":  ACCP:[TSH] 検索したいタイトルは(*指定可) :?:  IF V0="ESC" THEN:STOP:ENDIF:  V40=V0: *V40 検索対象   TOUPPER:V40:"V42": *V42 大文字変換 ASDF  TOLOWER:V40:"V38": *V38 小文字変換 asdf  V41="":  IF V40<>V42 OR V40<>V38 THEN: *V38 大文字英字入力用  V0="ESC": *デ―タは大文字変換  ACCPSTR:[TSH] 大文字・小文字の同一視 Y/N 実行…Y :Y,N:Y:?:  IF V0="ESC" THEN:STOP:ENDIF:  IF V0="Y" THEN:V41="同一視":ENDIF:  ENDIF:   DPOFF:  TF:ESC: SV: RVON: RV: RVOFF:  CFA:4:2:21:8:3:5:6:1:8:21:11:  DIA: SETX:1:2:2:3:3:Z37:ESC:  BC:2: *現在ファイルフラグクリア  CT:ALL_FILE.MYX] MTファイル一覧:  WFL:all_file.myx::  Z95=T1:   SV:  Z92=1: *Z92 S頁書込先初期値  DR:0:1:   FOR Z93=4 TO Z95: *Z93 ファイル登録の数  RVON:RV:SV:RVOFF:  V43=[Z93,3]: *V43 ファイル名  IF V43<>"M" AND MZ93,1<15 THEN: *FDD,S,SYS スキップ  CONTINUE:  ENDIF:  IF V43="TMP" THEN:CONTINUE:ENDIF:  IF [Z93,9]<>"" THEN:CONTINUE:ENDIF: *キ―ワ―ド除外  IF MZ93,6=0 THEN:CONTINUE:ENDIF: *ペ―ジ数0  IF V43="M" THEN:  V44=V39+":TTLF":  ELSE:  V45=[Z93,7]: *V45 登録ドライブ名  Z94=[Z93,11]: V46=Z94: *Z94 V46 ファイルNo.  IF V45=V39 THEN: *MT インスト-ル ドライブ  V47=V39+":MYFILE": *V47 PATH  ELSE: *別ドライブ/別マシン  RFL:PATH.MYX:  SH::C1=V45::: *PATH の取得  IF CNT[L]=0 THEN: *ドライブ情報異常?  X:DPON:  COLOR:7:1:2:  LOC:Z90-5:6:PRINT: :  LOC:Z90-4:6:PRINT: :  LOC:Z90-4:6:PRINT: V43 ファイル:  LOC:Z90-3:6:PRINT: への、パス情報が見つかりません。 :  LOC:Z90-2:6:PRINT: 「一覧作成」で情報更新して下さい。 :  LOC:Z90-1:6:PRINT: :  GOTO *開始:  ENDIF:   V47=[H,3]: *V47 PATH  V0=V39+":\\*":  MATCH:V47:V0: *WINMT C:\\ 対策  IF Z0=1 THEN: *ネットワ―ク用 * CONTINUE: *ネットワ―ク検索不要時、[*]を外す  V0=V47+":":  V47=V47-V0:  ENDIF:  ENDIF:   IF Z94<100 THEN:V49="\MT00": *ファイル登録  ELSE:IF Z94<1000 THEN:V49="\MT0":  ELSE:V49="\MT":  ENDIF:  ENDIF:  V44=V47+V49+V46+".TIT": *V44 ファイル名  ENDIF:   COLOR:7:1:2:  LOC:Z90-3:6:PRINT: :  LOC:Z90-2:6:PRINT: :  LOC:Z90-2:6:PRINT: 検索対象 V43:  LOC:Z90-1:6:PRINT: :  SGET:V44:3:F=2,30,8,4,4,4,4,8,3,3,4,20:96:0:TMP:  IF Z0>120 THEN:  DPON:  COLOR:0:6:2:  LOC:Z90-5:6:PRINT: :  LOC:Z90-4:6:PRINT: :  LOC:Z90-4:6:PRINT: 「V43」:  LOC:Z90-3:6:PRINT: :  LOC:Z90-2:6:PRINT: 頁数が多過ぎるので中止します。 :  LOC:Z90-1:6:PRINT: :  STOP:  ENDIF:   RC:TMP:1: DL:H: V43=CT: *H行 バイナリデ―タ削除  CF:1:4:SEQ[1,1]=C1:  IF V41="同一視" THEN:  CTP:1:2:2:3: *大文字に  SH::C2=V40!C2=V42::S/Z92: *1ファイル1ペ―ジ  ELSE:  SH::C2=V40::S/Z92: *1ファイル1ペ―ジ  ENDIF:   IF CNT[L]=0 THEN:Z92=Z92-1:ENDIF:  IF Z91=0 AND Z92<121 THEN: *RC の範囲  RC:S/1-Z92:1:  ENDIF:   DC:4-8: *キ―ワ―ド列削除  DC:6: *頁行数列削除  ICS:2:1:: *ペ―ジ数を見易く  ER:4:H-T:  頁No::タイトル :更新日 :行:桁:ファイル名:  CT:V40:   IF CNT[L]=0 THEN:  DPON:  COLOR:0:6:2:  LOC:2:8:PRINT: :  LOC:3:8:PRINT: :  LOC:3:8:PRINT: 「V40」:  LOC:4:8:PRINT: 該当タイトルは見つかりませんでした。 :  LOC:5:8:PRINT: :  STOP:   ELSE:  *R:クリックですぐ読めるように。  MC:7:1:  CF:2:+1:  "/"+C2=C2:  SL:2:  CFP:2:1-2:  SR:1:  DPON:  COLOR:7:1:2:  LOC:2:8:PRINT: :  LOC:3:8:PRINT: :  LOC:3:8:PRINT: 「V40」:  LOC:4:8:PRINT: :  LOC:4:8:PRINT: S/1〜Z92 を使いました。:  LOC:5:8:PRINT: :  ENDIF:   STOP:  *全文検索   V0="ESC":  ACCP:[全文検索] 検索したい文字列は(*指定可) :?:  IF V0="ESC" THEN:STOP:ENDIF:  V40=V0: *検索対象   DPOFF:  TF:ESC: SV: RVON: RV: RVOFF:  CFA:4:2:21:8:3:5:6:1:8:21:11:  DIA: SETX:1:2:2:3:3:Z37:ESC:  BC:2: *現在ファイルフラグクリア  CT:ALL_FILE.MYX] MTファイル一覧:  WFL:all_file.myx::  Z95=T1:  Z92=1: *S頁書込先初期値  DR:0:1:  DPON:   FOR Z93=4 TO Z95: *ファイル登録の数  RFL:ALL_FILE.MYX: *手操作が入るとRV危険故  V43=[Z93,3]: *V43 ファイル名  IF V43="TMP" THEN:CONTINUE:ENDIF:  IF [Z93,9]<>"" THEN:CONTINUE:ENDIF: *キ―ワ―ドは除外  IF MZ93,6=0 THEN:CONTINUE:ENDIF: *ペ―ジ数0のファイル  IF MZ93,1<15 AND [Z93,3]<>"M" THEN: *FDD SYS S は除外  CONTINUE:  ENDIF:   [Z93,8]="o":  WFL:ALL_FILE.MYX:: *検索マ―ク  CPS:: *裏画面 参考用一覧更新  CHKFILE:V43: Z96=Z36: *Z96 ファイル最終頁番号   IF [Z93,5]="F" THEN:  V37="F":  SHU:V43/=*?:S=V40::N:?:ESC:  Z97=Z40: *Z97 抜き出した最終頁  Z98=Z36: *Z98 デ―タ出力件数  ELSE:V37="V":  SHU:V43:S=V40::N:?:ESC:  Z97=Z40: Z98=Z36: *一応。でもV型は?  ENDIF:   *エスケ―プ後処理  IF Z98>0 THEN: *ヒットしたら  IF Z96=Z97 THEN:  COLOR:7:1:2:  LOC:Z90-4:6:PRINT: :  LOC:Z90-3:6:PRINT: :  LOC:Z90-3:6:PRINT: V43 (V37):  LOC:Z90-2:6:PRINT: 参考用ファイル一覧 裏画面。 :  LOC:Z90-1:6:PRINT: :  V0="ESC":  ACCPSTR:他のファイルも検索しますか? Y/N Y…続行 :Y,N:Y:?:  IF V0="N" OR V0="ESC" THEN:STOP:ENDIF:  ELSE:  COLOR:7:1:2:  LOC:Z90-4:6:PRINT: :  LOC:Z90-3:6:PRINT: :  LOC:Z90-3:6:PRINT: V43 (V37):  LOC:Z90-2:6:PRINT: 参考用ファイル一覧 裏画面。 :  LOC:Z90-1:6:PRINT: :  V0="ESC":  ACCPSTR:残りのペ―ジも検索しますか? Y/N Y…続行 :Y,N:Y:?:  IF V0="N" OR V0="ESC" THEN:STOP:ENDIF:   Z14=Z97+1: *SHU N エスケ―プフォロ―  FOR Z99=Z14 TO Z96: *SHU 先頭空白頁エラ―対策  R:V43/Z99:CT::  IF V0<>"" THEN:BREAK:ENDIF:  NEXT:  IF Z99=>Z96 THEN:BREAK:ENDIF:  SHU:V43/Z99-Z96:S=V40::N:?:ESC:  Z97=Z40:Z98=Z36:  GOTO *エスケ―プ後処理:  ENDIF:  ENDIF:   NEXT:   STOP: *----------------------------- サブル―チン -------------------------- *一覧作成  *ドライブ一覧作成  DOS:"DIR *.CTL > DATA.DAT":  V0=V39+":DATA.DAT":  SGET:V0:7:100:::  SH::S=MT_PATH *:::  IF CNT[L]>0 THEN: *V1  V0=V39+":MT_PATH.CTL":  SGET:V0:3:F=6,4,72::::  ELSE:  V0=V39+":95_PATH.CTL": *V2  SGET:V0:3:F=6,4,290,12::::  ENDIF:  DC:1:  CTP:1:2:1:3: *ドライブ名を大文字にする  ICS:2:1::  CT:PATH.MYX] ドライブ一覧:  WFL:PATH.MYX::  *ファイル一覧作成  TF:ESC: SV: RVON: RV: RVOFF:  CFA:4:2:21:8:3:5:6:1:8:21:11:  DIA: SETX:1:2:2:3:3:Z37:ESC:  BC:2: *現在ファイルフラグクリア  CT:ALL_FILE.MYX] MTファイル一覧:  WFL:all_file.myx::   SH::C3=TMP:::  IF CNT[L]=0 THEN: *TMPが無い  FILE:1:TMP:V39:V:作業ファイル:ESC:  ELSE: *TMPが有る  IF [H,5]="F" THEN: *固定長TMP  DPON:  COLOR:7:1:2:  LOC:Z90-4:6:PRINT: :  LOC:Z90-3:6:PRINT: 固定長のTMPが有ります。 :  LOC:Z90-2:6:PRINT: オ―トのTMP TMP 部分を変更して下さい。 :  LOC:Z90-1:6:PRINT: :  STOP:  ENDIF:  ENDIF:  X:   RETURN:  *---------------------------------------------------------------------