/*#TITLE# モデルタイトル検索 Vine6用マクロ */ /* KENSAKU6.MAC 2013.11.15 kita */ /* 2014.8.20 検索用Data Base File変更 */ /* kensaku_db_files kensaku_db_files2 より検索 */ /* 2015.2.20 検索した任意のMDL Fileを順次印刷できるように修正 */ clear(); path1 = "/home/acad/files/"; path2 = "/home/acad/files2/"; id=0; label0: echo "検索文字列1(3個以内)/終了/継続検索"; tmp = getany(1); if(vtype(tmp) == 11){ /* Space */ fp = fopen("/home/acad/kensaku_id","r"); str0 = fgets(20,fp); ss_id = sscan(str0,"%s %d %s %d");id = ss_id[1];nf = ss_id[3]; /*echo id; getany(1);*/ fclose(fp); fp = fopen("/home/acad/tmpeg","r"); } else if(vtype(tmp) == 5){ exit;} else if(vtype(tmp) == 4 || vtype(tmp) == 3){ /* 4:文字列型 3:数値型 */ cmd = "!rm /home/acad/tmp* &";[cmd] if(vtype(tmp) == 4){ str = tmp;} else if(vtype(tmp) == 3){ str = sprint("%12.0f",tmp); subs(str," "); /* スペースの削除 */ } echo "検索文字列2"; tmp= getany(1); if(vtype(tmp) == 4 || vtype(tmp) == 3){ if(vtype(tmp) == 4){ str = str + " " + tmp;} else if(vtype(tmp) == 3){ str1 = sprint(" %12.0f",tmp); subs(str1," "); /* スペースの削除 */ str = str + str1; } echo "検索文字列3"; tmp = getany(1); if(vtype(tmp) == 4 || vtype(tmp) == 3){ if(vtype(tmp) == 4){ str = str + " " + tmp;} else if(vtype(tmp) == 3){ str1 = sprint(" %12.0f",tmp); subs(str1," "); /* スペースの削除 */ str = str + str1; } } } subs(str,"?","."); /*echo str ; getany(1);*/ fp = fopen("/home/acad/tmpe","w"); fputs(str,fp); fclose(fp); cmd = "!/home/acad/bin/kensaku6mac &"; [cmd] /* kensaku6mac に処理を渡す /home/acad/tmpeg 作成*/ flg = 0; do{ if (fstat("/home/acad/tmpeg","exist")){ flg = 1; } }while(flg == 0); for(i=0;i<500000;i+=1){echo "検索中";} fp = fopen("/home/acad/tmpeg","r"); nf = 0; /* file行数 */ for(;;){ ss = fgets(250,fp); if(length(ss) == 1){ break;} /* File End */ nf+=1; } if(nf == 0){ echo "検索条件にマッチしたFileがありません(cr->再入力)"; getany(1); fclose(fp); goto label0; } fseek(fp,0,0); /* fileの先頭へ移動する */ } if(nf>16384){ echo "file数が16384を超えました。nf=16384にします";getany(1); nf = 16384; } /*echo nf;getany(1);*/ fn_ksk = array(nf+1); ttl_ksk = array(nf+1); /*echo (length(fn_ksk));getany(1);*/ for(i=0;i 16380){ echo "i=" i " str=" str " tmp=" (tmp[0]); getany(1); }*/ fn_ksk[i] = tmp[0]; ttl_ksk[i] = str; } fclose(fp); flg =0; label1: do{ if(id<0){id = nf-1;} else if(id>=nf){id = 0;} /* ful_fn = path2+(fn_ksk[id]);*/ ful_fn = fn_ksk[id]; echo (id+1) "/" nf ":" (ttl_ksk[id]); MODEL/DSP [ful_fn] key=getany(1); if(vtype(key) == 11){ id+=1;} /* Space key */ else if(vtype(key) == 7){ id-=1;} /* Back Space key */ else if(vtype(key) == 5){ flg=1;} /* Retern key */ }while(flg == 0); echo ful_fn "を読み込みます"; tmp = getany(1); echo "参照モード/通常読込/印刷&検索継続

"; yn = getany(1); type_yn = vtype(yn); if(type_yn == 5) { /* Entr key */ MODEL/READ [ful_fn] MSKONN } else if(type_yn == 11) { /* Space key */ MODEL/READ [ful_fn] } /* Space key */ else if(type_yn == 4 && yn == "P"){ /* 文字 P */ MODEL/READ [ful_fn] PLOT/ONN 1 "A4" flg = 0; goto label1; } /*cmd = "!rm /home/acad/tmp* &";[cmd]*/ ss_id = sprint("id= %d nf= %d",id,nf); fp = fopen("/home/acad/kensaku_id","w"); fputs(ss_id,fp); fclose(fp); exit;