home *** CD-ROM | disk | FTP | other *** search
-
- #include <stdio.h>
- #include <dos.h>
- #include <string.h>
- #include <ctype.h>
- #include <sys\stat.h>
- #include <fcntl.h>
-
- #define black 0x0
- #define blue 0x10
- #define green 0x20
- #define cyan 0x30
- #define red 0x40
- #define white 0x70
-
- #define PgUp 18688
- #define PgDn 20736
- #define UP 18432
- #define DOWN 20480
- #define LEFT 19200
- #define RIGHT 19712
- #define Enter 13
- #define Home 18176
- #define End 20224
- #define ESC 27
- #define Ins 20992
- #define Del 21248
-
- #define F1 15104
- #define F2 15360
- #define F3 15616
- #define F4 15872
- #define F5 16128
- #define F6 16384
- #define F7 16640
- #define F8 16896
- #define F9 17152
- #define F10 17408
-
- typedef struct PPP { /* this is a database's structure */
- char field[11];
- char type;
- int length;
- int dec;
- struct PPP *last; /* poniter of the last block */
- struct PPP *next; /* pointer of the next block */
- char sele;
- char obj; /*object flag*/
- int cla;
- }FIELD;
- FIELD *p,*p1,*p2,*p3,*p4;
-
- typedef struct MM { /*store base name*/
- char mean[30];
- char dbname[11]; /* the name of the database */
- char mainkey[4][11]; /* mainkey of the database */
- struct PPP *sstr; /* point to the database's structure */
- struct PPP *estr;/* pointer for end of block of base*/
- char flag; /*if finish base 0--not finish 1--finish*/
- char serve;
- char path[30];
- char sele;
- int sort;
- char join;
- struct MM *last;
- struct MM *next;
- }BASE ;
- BASE *root,*root1,*root2,*root4,*root3,*root5,*root6,*root9;/* end*/
- BASE *opbase[6],*roothead,*conv;
- FILE *fp1,*fp2;
- BASE *disp_opbase();
- FIELD *disp_field(),*NEXT(),*LAST(),*disp_f(),*disp_ch();
- int sub1,sub2;
- int froecolor=7,backcolor=1,frame=1,basecount=0,selecount=0,fselecount=0,ob=0,f=0;
- char workname[30],condition[200];
- char *con[]={".and.",".or.",".not.",".and.not.",".or.not.","╜ß╩°"};
- int number=0,add_funtion;
- int num[6],use=0,linknum,link[5];
- char linkfield[5][4][11],linktype,PATH[30],lan,insert='N';
- char class[3][100],classbak[3][11];
- char file[13];
- char *title2[]={
- "╕─▒Σ╡─╟░╛░╔½",
- "╕─▒Σ╡─▒│╛░╔½",
- "╕─▒Σ▒▀┐≥╨╬╫┤",
- "▒ú┤µ╦∙╤í┼Σ╓├",
- "╖┼╞·╦∙╤í┼Σ╓├",
- };
-
- char *title3[]={
- "╔·│╔╠⌡╝■╫╓╢╬═│╝╞─ú┐Θ",
- "╔·│╔║ß╧≥═│╝╞╙δ╝╞╦π ",
- "╔·│╔╫▌╧≥═│╝╞╙δ╝╞╦π ",
- "╔·│╔╖╓└α╠⌡╝■═│╝╞─ú┐Θ",
- "╔·│╔┐∞╦┘╠⌡╝■╗π╫▄═│╝╞",
- "╔·│╔└█╝╞═│╝╞╙δ╝╞╦π ",
- "╔·│╔╙├╗º└⌐│Σ─ú┐Θ╜╙┐┌",
- "▒ú┤µ╔·│╔╡─╘┤│╠╨≥═╦│÷",
- "╖┼╞·╔·│╔╡─╘┤│╠╨≥═╦│÷",
- };
-
- char *color[8]={"0--║┌╔½","1--└╝╔½","2--┬╠╔½","3--╔ε└╝","4--║∞╔½","5--╞╖║∞","6--░╫╔½","7--╗╞╔½"};
- char *shift[8]={"N","B","G","BG","R","RB","W","GR+"};
- char filename[30];
-
- main(argc,argv)
- int argc;
- char *argv[];
- {
- int ten,k;
- /*--------------------------------MAKE START & READ DATA BASE STRUCTURE-----------------------------------*/
- k=strlen(argv[1]);
- if (strcmp(argv[2],"wy")!=0) return(0);
- if((argc!=3)||(argv[1][k-1]!='\\'))
- exit(0);
- else
- { argv[1][k-1]='\0';
- strcpy(PATH,argv[1]);
- }
- read_base();
- roothead=root;
- if((fp1=fopen("statis.txt","w"))==NULL) exit(0);
- else fclose(fp1);
- /*read_stru();*/
- root->last=NULL;
- condition[0]='\0';
- /*checkey();*/
- ten=0;
- sub1=-1;
- sub2=-1;
-
- /*-----------------------------------MAIN MENU---------------------------------------*/
- for(;;) {
- ll: if((ten=main_menu(sub1))==-1) continue;
- else sub1=ten;
- for(;;){
- switch(sub1)
- {
- case 0:
- if((ten=menu1(sub2))==-1)
- { sub1=0;
- goto ll;
- }
- else sub2=ten;
- break;
- case 1:
- if((ten=menu2(sub2))==-1)
- { sub1=1;
- goto ll;
- }
- else sub2=ten;
- break;
- case 2:
- w_color();
- exit(0);
- }/*endswitch*/
- if(work(sub1,sub2)==1)
- break;
- }
- }/*end for*/
- }/*end main*/
- /*---------------------------color menu-------------------------------*/
- menu1(sub)
- int sub;
- { int i,row,key2;
- if(sub==-1)
- sub=0;
- clear_win(0,0,24,79,6,0,cyan);
- clear_win(5,8,18,71,6,0,black);
- clear_win(4,6,17,69,6,0,blue);
- mgframe(6,9,18,67,0,0|30);
- /* clear_win(18,6,19,13,6,0,cyan);
- clear_win(6,13,16,67,6,0,blue);*/
- print(6,28,0|30,"╕─▒Σ╙ª╙├╧╡═│┼Σ╓├▓╦╡Ñ");
- for(i=0;i<5;i++)
- print(8+i*2,30,0|30,"%s",title2[i]);
- row=sub*2+8;
- print(8+sub*2,30,0|113,"%s",title2[sub]);
- for(;;)
- { key2=getcc();
- print(row,30,0|30,"%s",title2[sub]);
- switch(key2)
- { case UP:
- if(row>8)
- { row -=2;
- sub--;
- }
- else
- {
- row=16;
- sub=4;
- }
- break;
- case DOWN:
- if(row<16)
- { row +=2;
- sub++;
- }
- else
- {
- row=8;
- sub=0;
- }
- break;
- case F6: /*EXIT(1)*/
- clear_win(0,0,24,79,6,0,cyan);
- return(-1);
- case Enter:
- clear_win(0,0,24,79,6,0,cyan);
- return(sub);
- default: printf("\007"); break;
- } /*end switch*/
- print(row,30,0|113,"%s",title2[sub]);
- } /*end for*/
- } /*end sun_menu*/
-
- /*------------------------------MAIN MENU------------------------------*/
- main_menu(sub)
- int sub;
- {
- char *line[]={"1_╕─▒Σ╙ª╙├╧╡═│▓╦╡Ñ┼Σ╓├",
- "2_═│╝╞╙δ╝╞╦π╣ª─▄╡─╔·│╔",
- "3_═╦│÷═│╝╞╙δ╝╞╦π─ú┐Θ " };
-
- int key1,i,mrow;
- clear_win(0,0,24,79,6,0,cyan);
- clear_win(6,13,17,71,6,0,black);
- clear_win(5,11,16,69,6,0,blue);
- mgframe(7,14,17,67,0,0|30);
- /* print(18,14,0|30,"%*s",53," ");
- clear_win(7,17,15,63,6,0,blue);*/
- print(7,30,0|30,"═│╝╞╙δ╝╞╦π─ú┐Θ╓≈▓╦╡Ñ");
- for(i=0;i<3;i++)
- print(9+i*3,30,0|30,"%s",line[i]);
- if(sub==-1)
- { sub=0;
- mrow=9;
- }
- else
- mrow=9+sub*3;
- print(mrow,30,0|113,"%s",line[sub]);
- for(;;)
- { key1=getcc();
- print(mrow,30,0|30,"%s",line[sub]);
- switch(key1)
- { case DOWN:
- if(mrow>=13)
- { mrow=9;
- sub=0;
- }
- else
- {
- mrow +=3;
- sub++;
- }
- break;
- case UP:
- if(mrow<=9)
- { mrow=15;
- sub=2;
- }
- else
- {
- mrow -=3;
- sub--;
- }
- break;
- case Enter:
- return(sub);
- case F6: return(-1);/*fail*/
- default: printf("\007"); break;
- } /*end switch*/
- print(mrow,30,0|113,"%s",line[sub]);
- }/*endfor*/
- } /*end founction*/
-
- /*----------------------------------MAIN CONTROL---------------------------*/
- work(s1,s2)
- int s1,s2;
- {
- int ten;
- FILE *ff;
- int i,j,k,selectc;
- char st[11],ta[3];
- ob=0;
- ta[0]=ta[1]=ta[2]='\0';
- make_start(0);
- switch(s1)
- { case 0:
- switch(s2) {
- case 0:
- froecolor=make_color();
- break;
- case 1:
- backcolor=make_color();
- break;
- case 2:
- clear_win(0,0,24,79,6,0,black);
- print(1,5,0|30,"**%s**",title2[s2]);
- print(1,55,0|30,"**ESC->╓╨╢╧═╦│÷**");
- print(4,20,6|1,"╙ª╙├╧╡═│╡─▒▀┐≥╨╬╩╜");
- gframe(5,10,11,60,0,0|30);
- print(6,20,6|1,"0--╡Ñ╧▀▒▀┐≥(╚τ:⌐ñ⌐ñ⌐ñ⌐ñ)");
- print(8,20,6|1,"1--┤╓╧▀▒▀┐≥(╚τ:⌐Ñ⌐Ñ⌐Ñ⌐Ñ)");
- print(10,20,6|1,"╟δ╤í╘±─·╡─╙ª╙├╧╡═│▒▀┐≥╨╬╩╜:");
- for(;;) {
- fflush(stdin);
- printf("\033[10;47H");
- scanf("%01d",&ten);
- if((ten<0)||(ten>1))
- { printf("\007");
- clear_win(9,15,9,58,6,0,black);
- print(10,25,6|1,"╖┼╞·╤í╘±┬≡ú┐(Y/N): ");
- ten=getcc();
- if((ten=='Y')||(ten=='y'))
- { ten=0;
- break;
- }
- else
- { clear_win(9,15,9,58,6,0,black);
- print(10,20,6|1,"╟δ╤í╘±─·╡─╙ª╙├╧╡═│▒▀┐≥╨╬╩╜:");
- }
- }/*endif*/
- else break; }
- frame=ten;
- break;
- case 3: /*w_color();*/ return(1);
- case 4: froecolor=7;backcolor=0;frame=0;return(-1);
- } /*endswitch*/
- break;
- case 1:/*fountion*/
- for (selectc=0;selectc<6;selectc++)
- {
- opbase[selectc]->sele='N';
- opbase[selectc]->sort=0;
- opbase[selectc]->join='N' ;
- opbase[selectc]=NULL;
- }
- fselecount=selecount=0;
- root=roothead;
- switch(s2) {
- case 0:
- clear_win(0,0,24,79,6,0,black);
- make_start(1);
- gframe(3,4,14,70,0,0|30);
- print(7,20,6|1,"─·╥¬╔·│╔═°┬τ╢α╙├╗º│╠╨≥┬≡ú┐(Y/N): ");
- lan=getcc();
- select_datbase(6);
- convert();
- define_link(0);
- root2=root;
- while(root2!=NULL)
- { if(root2->sele=='Y')
- { p2=root2->sstr;
- while(p2!=NULL)
- { p2->sele='Y';
- p2=p2->next;
- }
- }
- root2=root2->next;
- }
-
- clear_obj(0);
- tj_f();
- free(root);
- break;
- case 1:
- clear_win(0,0,24,79,6,0,black);
- make_start(1);
- gframe(3,4,14,70,0,0|30);
- print(7,20,6|1,"─·╥¬╔·│╔═°┬τ╢α╙├╗º│╠╨≥┬≡ú┐(Y/N): ");
- lan=getcc();
- select_datbase(6);
- convert();
- define_link(0);
- clear_win(5,4,9,76,6,0,black);
- make_data();
- /* r_mean();*/
- clear_obj(0);
- tj_h();
- free(root);
- break;
- case 2:
- clear_win(0,0,24,79,6,0,black);
- gframe(3,4,14,70,0,0|30);
- print(7,20,6|1,"─·╥¬╔·│╔═°┬τ╢α╙├╗º│╠╨≥┬≡ú┐(Y/N): ");
- make_start(1);
- lan=getcc();
- select_datbase(6);
- convert();
- define_link(0);
- clear_win(5,4,9,76,6,0,black);
- make_data();
- /* r_mean();*/
- clear_obj(0);
- tj_z();
- free(root);
- break;
- case 3:
- clear_win(0,0,24,79,6,0,black);
- gframe(3,4,14,70,0,0|30);
- print(7,20,6|1,"─·╥¬╔·│╔═°┬τ╢α╙├╗º│╠╨≥┬≡ú┐(Y/N): ");
- lan=getcc();
- make_start(1);
- select_datbase(6);
- convert();
- define_link(0);
- root2=root;
- p3=NULL;
- while(root2!=NULL)
- { if(root2->sele=='Y')
- { p2=root2->sstr;
- while(p2!=NULL)
- { root4=root;
- while(root4!=root2)
- { if(root4->sele=='Y')
- { p3=root4->sstr;
- while(p3!=NULL)
- { if(p3->sele=='Y')
- if(strcmp(p2->field,p3->field)!=0)
- p3=p3->next;
- else break;
- else
- p3=p3->next;
- }
- }
- if(p3==NULL)
- root4=root4->next;
- else
- break;
- }
- if(p3==NULL)
- p2->sele='Y';
- p2=p2->next;
- p3=NULL;
- }
- }
- root2=root2->next;
- p3=NULL;
- }
- /* r_mean();*/
- clear_obj(0);
- tj_t();
- free(root);
- break;
- case 4:
- make_start(1);
- clear_win(0,0,24,79,6,0,black);
- gframe(3,4,14,70,0,0|30);
- print(7,20,6|1,"─·╥¬╔·│╔═°┬τ╢α╙├╗º│╠╨≥┬≡ú┐(Y/N): ");
- lan=getcc();
- select_datbase(6);
- convert();
-
- define_link(0);
- clear_win(5,4,9,76,6,0,black);
- make_data();
- /* r_mean();*/
- clear_obj(0);
- tj_q();
- free(root);
- break;
- case 5:
- make_start(1);
- clear_win(0,0,24,79,6,0,black);
- gframe(3,4,14,70,0,0|30);
- print(7,20,6|1,"─·╥¬╔·│╔═°┬τ╢α╙├╗º│╠╨≥┬≡ú┐(Y/N): ");
- lan=getcc();
- select_datbase(1);
- select_datbase(10);
- convert();
- root2=root;
- while(root2!=NULL)
- if(root2->sort==1)
- { root2->sele='Y';
- break;
- }
- else
- root2=root2->next;
- selecount=2;
- linktype='A';
- define_link(1);
- /* r_mean();*/
- clear_obj(0);
- tj_s();
- free(root);
- break;
- case 6:
- system("c:\\cdbag4\\tsjif 2 wy");
- /* clear_win(0,0,24,79,6,0,black);
- if(add_funtion==0)
- {
- gframe(5,10,13,68,0,0|30);
- printf("\033[8;17H\033[0;37;40m╟δ╩Σ╚δ┬╖╛╢╝░╬─╝■├√:");
- printf("\033[8;38H");
- scanf("%s",filename);
- add_funtion=1;
- }
- system(filename);*/
- break;
- case 7:
- for(i=0;i<7;i++) {
- strcpy(file,"statis");
- itoa(i,ta,10);
- strcat(file,ta);
- strcat(file,".txt");
- if((ff=fopen(file,"r"))==NULL)
- continue;
- else
- if((fp1=fopen("statis.txt","a"))==NULL)
- exit(1);
- else
- { while(1)
- { fscanf(ff,"#%[^#]#,#%[^#]#\n",workname,st);
- fprintf(fp1,"#%s#,#%s#\n",workname,st);
- if(feof(ff)) break;
- }
- fclose(ff);
- /* unlink(file);*/
- fclose(fp1);
- }
- }
- /*-----------------------------make statis.txt----------------------*/
- printf("\033[12;22H\033[0;0;7m╒²╘┌╔·│╔ú¼╟δ╔╘║≥ú«ú«ú« \n");
- system("copy c:\\cdbag4\\statis.prg *.* >zl");
- system("copy c:\\cdbag4\\statis.dbf *.* >zl");
- system("copy c:\\cdbag4\\page.prg *.* >zl");
- system("copy c:\\cdbag4\\input.prg *.* >zl");
- system("copy c:\\cdbag4\\cursor.prg *.* >zl");
- system("copy c:\\cdbag4\\oldcur.prg *.* >zl");
- system("copy c:\\cdbag4\\color.dbf *.* >zl");
- system("copy c:\\cdbag4\\jg.dbf *.* >zl");
- system("copy c:\\cdbag4\\dbstr.dbf *.* >zl");
- system("copy c:\\cdbag4\\start.prg *.* >zl");
- system("copy c:\\cdbag4\\brow.exe *.* >zl");
-
- return(1);
- case 8:
- unlink("statis.txt");
- return(-1);
- }
- break;
- case 2:
- /* w_color();*/
- return(1);
- }/*endswitch*/
- }
-
- /*------------------------------DISP ERROR ----------------------------*/
- error(er)
- char er[80];
- {
- int i,j;
- printf("\007");
- i=strlen(er);
- j=(79-i)/2;
- printf("\033[24;1H\033[1;36;41m%-*s%-*s%-*s",j," ",i,er,j," ");
- printf("\033[0;37;40m");
- }
- /*-----------------------------MAKE START OF DATABASE-----------------------*/
-
- make_start(f)
- int f;
- {
- int i;
- root2=root;
- while(root2!=NULL) {
- root2->sele='N';
- if(f==1)
- root2->sort=0;
- p2=root2->sstr;
- while(p2!=NULL) {
- p2->sele='N';
- p2->cla=0;
- p2->obj='N';
- p2=p2->next; }
- root2=root2->next; }
- /* fselecount=selecount=0;*/
- for(i=0;i<5;i++)
- link[i]=0;
-
- ob=0;
- f=0;
- } /*end fountion*/
-
- /*------------------------------SELECT FIELD--------------------------------*/
-
- sele_field(ptr,ptr1,ptr2,flag)
- struct PPP *ptr,*ptr1,*ptr2;
- int flag;
- {
- int i,j,k,key2,f,fin;
- struct PPP *tem;
- ptr2=NULL;
- f=0;
- begin: print(6,10,0|75,"%s",ptr->field);
- disp_fmess(ptr);
- i=6;j=10;
- for(;;) {
- key2=getcc();
- mv: if(flag==1)
- print(i,j,(ptr->cla>0? 0|113:6|1),"%s",ptr->field);
- else
- print(i,j,(ptr->sele=='Y'? 0|113:6|1),"%s",ptr->field);
- switch(key2) {
- case LEFT:
- if(j==10) printf("\007");
- else {
- j=10;
- ptr=ptr->last; }
- break;
- case RIGHT:
- if((j==40)||(ptr->next==NULL)) printf("\007");
- else { j=40;
- ptr=ptr->next; }
- break;
- case UP:
- if(i==6) printf("\007");
- else {
- i--;
- ptr=ptr->last->last; }
- break;
- case DOWN:
- if((i==10)||((ptr->next)->next==NULL)||(ptr->next==NULL)) printf("\007");
- else {
- i++;
- ptr=ptr->next->next; }
- break;
- case PgUp:
- k=0;
- tem=ptr;
- ptr=ptr2;
- while(k<10) {
- ptr=ptr->last;
- if(ptr==NULL) break;
- k++; }
- if(ptr!=NULL) {
- clear_win(5,3,9,76,6,0,black);
- ptr1=disp_field(ptr,flag);
- i=6;j=10;
- ptr2=ptr; }
- else {
- ptr=tem;
- printf("\007"); }
- break;
- case PgDn:
- if(ptr1==NULL) printf("\007");
- else {
- clear_win(5,3,9,76,6,0,black);
- ptr=ptr1;
- ptr1=disp_field(ptr,flag);
- i=6;j=10;
- ptr2=ptr; }
- break;
- case Enter:
- case F5:
- if(flag==0){
- ptr->sele=(ptr->sele=='N'? 'Y':'N');
- ptr->sele=='Y'? fselecount++:fselecount--;
- if(ptr->sele=='Y')
- check(root,ptr,0);
- if(j==10) key2=RIGHT;
- else
- if((ptr->next!=NULL)&&(i!=10)) {
- print(i,j,(ptr->sele=='Y'? 0|113:0|75),"%s",ptr->field);
- print(i,j,(ptr->sele=='Y'? 0|113:6|1),"%s",ptr->field);
- disp_fpart(ptr);
- print(4,10,6|1,"%02d",fselecount);
- j=10;
- ptr=ptr->last;
- key2=DOWN; }
- else key2=RIGHT;
- print(i,j,(ptr->sele=='Y'? 0|113:0|75),"%s",ptr->field);
- disp_fpart(ptr);
- print(4,10,6|1,"%02d",fselecount);
- goto mv; }
- if(flag==1)
- { ptr->cla=fselecount;
- return(1);
- }
- break;
- /* case F1:*/
- case F2: /*allselect*/
- /* if(flag==1) break;*/
- ptr1=ptr;
- ptr=ptr2;
- k=0;
- while((ptr!=NULL)&&(k<10)) {
- ptr->sele=='Y'? fselecount--:delay(0);
- ptr->sele='Y';
- fselecount++;
- ptr=ptr->next;
- k++; }
- ptr1=disp_field(ptr,0);
- ptr=ptr1;
- break;
- case F3: /*all not select*/
- /* if(flag==1) break;*/
- ptr1=ptr;
- ptr=ptr2;
- k=0;
- while((ptr!=NULL)&&(k<10))
- {
- ptr->sele=='N'? fselecount++:delay(0);
- ptr->sele='N';
- fselecount--;
- ptr=ptr->next;
- k++;
- }
- ptr1=disp_field(ptr,0);
- ptr=ptr1;
- break;
- case F6:
- ptr=p;
- fselecount=0;
- while(ptr!=NULL)
- {
- ptr->sele='N';
- ptr=ptr->next;
- }
- return(-1);
- case F4:
- p2=NULL;
- if((sub1==1)&&(sub2==5))
- goto jj;
- root2=root;
- while((root2=root2->next)!=NULL)
- if(root2->sele=='Y')
- { p2=root2->sstr;
- while(p2->sele!='Y')
- { p2=p2->next;
- if(p2==NULL) break;
- }
- if(p2==NULL)
- { clear_win(5,4,9,76,6,0,black);
- clear_win(14,4,20,76,6,0,black);
- print(7,12,6|1,"╗╣╙╨┐╔╤í┐Γ├╗▒╗╩╣╙├,╝╠╨°╢¿╥σ┬≡ú┐(Y/N): ");
- fin=getcc();
- if((fin=='Y')||(fin=='y'))
- { ptr=root2->sstr;
- ptr2=ptr;
- clear_win(5,4,9,76,6,0,black);
- ptr1=disp_field(ptr,f);
- i=0;j=10;
- goto begin;
- }
- else break;
- }
- }
- jj: if(flag==1)
- return(2);
- else
- return(1);
- case End: /* next select's base*/
- if(flag!=0) break;
- root1=root2;
- while((root2=root2->next)!=NULL) {
- if(root2->sele=='Y') {
- ptr=root2->sstr;
- ptr2=ptr;
- clear_win(5,4,9,76,6,0,black);
- ptr1=disp_field(ptr,f);
- i=0;j=10;
- goto begin; } /*endif*/
- }/*endwhile*/
- if(root2==NULL) {
- printf("\007");
- root2=root1; }
- break;
- case Home:/*last select's base*/
- if(flag!=0) break;
- root1=root2;
- while((root2=root2->last)!=NULL) {
- if(root2->sele=='Y') {
- ptr=root2->sstr;
- ptr2=ptr;
- clear_win(5,4,9,76,6,0,black);
- ptr1=disp_field(ptr,f);
- i=0;j=10;
- goto begin;}/*endif*/
- } /*endwhile*/
- if(root2==NULL) {
- printf("\007");
- root2=root1; }
- break;
- default:
- printf("\007");
- break;
- }
- print(i,j,(ptr->sele=='Y'? 0|113:0|75),"%s",ptr->field);
- print(4,10,6|1,"%02d",fselecount);
- disp_fpart(ptr);
- }
- }
- /*------------------------------SELECT DATABASE-----------------------------*/
- sele_opbase(ptr,ptr1,ptr2,maxcount)
- struct MM *ptr,*ptr1,*ptr2;
- int maxcount;
- {
- int i,j,k,key2,fin,selectc;
- struct MM *tem;
- BASE *rr;
- ptr2=NULL;
- fin=0;
- print(6,10,0|75,"%s",ptr->mean);
- disp_bmess(ptr);
- i=6;j=10;
- for(;;) {
- key2=getcc();
- mv1: print(i,j,(ptr->sele=='Y'? 0|113:6|1),"%s",ptr->mean);
- switch(key2)
- { case LEFT:
- if(j==10) printf("\007");
- else {
- j=10;
- ptr=ptr->last; }
- break;
- case RIGHT:
- if((j==40)||(ptr->next==NULL)) printf("\007");
- else { j=40;
- ptr=ptr->next; }
- break;
- case UP:
- if(i==6) printf("\007");
- else {
- i--;
- ptr=ptr->last->last; }
- break;
- case DOWN:
- if((i==10)||((ptr->next)->next==NULL)||(ptr->next==NULL)) printf("\007");
- else {
- i++;
- ptr=ptr->next->next; }
- break;
- case PgUp:
- k=0;
- tem=ptr;
- ptr=ptr2;
- while(k<10) {
- ptr=ptr->last;
- if(ptr==NULL) break;
- k++; }
- if(ptr!=NULL) {
- clear_win(5,3,9,76,6,0,black);
- ptr1=disp_opbase(ptr);
- i=6;j=10;
- ptr2=ptr; }
- else {
- ptr=tem;
- printf("\007"); }
- break;
- case PgDn:
- if(ptr1==NULL) printf("\007");
- else {
- clear_win(5,3,9,76,6,0,black);
- ptr=ptr1;
- ptr1=disp_opbase(ptr);
- i=6;j=10;
- ptr2=ptr; }
- break;
- case Enter:
- case F5:
- if((maxcount==10)&&(ptr->sort==0))
- { rr=root;
- while(rr!=NULL)
- { if(rr->sort!=0)
- { rr->sele='Y';
- break;
- }
- else rr=rr->next;
- }
- if(checkbase(ptr)==1)
- { rr=root;
- while(rr!=NULL)
- { rr->sele='N';
- rr=rr->next;
- }
- ptr->sele='Y';
- ptr->sort=10;
- opbase[selecount++]=ptr;
- fin=1;
- return(1);
- }
- else
- { rr=root;
- while(rr!=NULL)
- { rr->sele='N';
- rr=rr->next;
- }
- error("▓╗─▄╘┌▓╗═¼╡─╣ñ╫≈╟°═¼╩▒┤≥┐¬═¼╥╗╕÷╬─╝■");
- getcc();
- bottom();
- continue;
-
- }
- }
- if((ptr->sort!=0)&&(maxcount==10))
- { error("▓╗─▄╤í╙δ└█╝╞▓┘╫≈┐Γ╧α═¼╡─╬─╝■╫≈╬¬└█╝╞╜ß╣√┐Γ");
- getcc();
- bottom();
- continue;
- }
- if(ptr->sele=='N')
- { if(checkbase(ptr)==1)
- { if(selecount<maxcount)
- { ptr->sele=(ptr->sele=='N'? 'Y':'N');
- if (ptr->sele=='Y') opbase[selecount]=ptr;
- else
- {
- for (selectc=0;selectc<selecount && opbase[selectc]!=ptr;selectc++);
- for (;selectc<selecount-1;selectc++) opbase[selectc]=opbase[selectc+1];
- opbase[selectc]=NULL;
- }
- ptr->sele=='Y'? selecount++:selecount--;
- if(ptr->sele=='Y')
- ptr->sort=selecount;
- else
- ptr->sort=0;
- if(j==10)
- key2=RIGHT;
- else
- if((ptr->next!=NULL)&&(i!=10))
- { print(i,j,(ptr->sele=='Y'? 0|113:0|75),"%s",ptr->mean);
- print(i,j,(ptr->sele=='Y'? 0|113:6|1),"%s",ptr->mean);
- disp_bpart(ptr);
- print(4,10,6|1,"%02d",selecount);
- j=10;
- ptr=ptr->last;
- key2=DOWN;
- }
- else
- key2=RIGHT;
- print(i,j,(ptr->sele=='Y'? 0|113:0|75),"%s",ptr->mean);
- disp_bpart(ptr);
- print(4,10,6|1,"%02d",selecount);
- goto mv1;
- }
- else
- { if(maxcount==6)
- error("╦∙╤í╡─┴¼╜╙▓┘╫≈┐Γ▓╗─▄│¼╣²┴∙╕÷");
- else
- error("┤╦─ú┐Θ╓╗╓º│╓╡Ñ┐Γ▓┘╫≈");
- getcc();
- bottom();
- if(j==10)
- key2=RIGHT;
- else
- if((ptr->next!=NULL)&&(i!=10))
- { print(i,j,(ptr->sele=='Y'? 0|113:0|75),"%s",ptr->mean);
- print(i,j,(ptr->sele=='Y'? 0|113:6|1),"%s",ptr->mean);
- disp_bpart(ptr);
- print(4,10,6|1,"%02d",selecount);
- j=10;
- ptr=ptr->last;
- key2=DOWN;
- }
- else key2=RIGHT;
- print(i,j,(ptr->sele=='Y'? 0|113:0|75),"%s",ptr->mean);
- disp_bpart(ptr);
- print(4,10,6|1,"%02d",selecount);
- goto mv1;
- }
- }
- else
- { error("don't use same file in many select!");
- getcc();
- bottom();
- }
- }
- else
- { ptr->sele=(ptr->sele=='N'? 'Y':'N');
-
- if (ptr->sele=='Y') opbase[selecount]=ptr;
- else
- {
- for (selectc=0;selectc<selecount && opbase[selectc]!=ptr;selectc++);
- for (;selectc<selecount-1;selectc++) opbase[selectc]=opbase[selectc+1];
- opbase[selectc]=NULL;
- }
- ptr->sele=='Y'? selecount++:selecount--;
- if(ptr->sele=='Y')
- ptr->sort=selecount;
- else
- ptr->sort=0;
- if(j==10)
- key2=RIGHT;
- else
- if((ptr->next!=NULL)&&(i!=10))
- { print(i,j,(ptr->sele=='Y'? 0|113:0|75),"%s",ptr->mean);
- print(i,j,(ptr->sele=='Y'? 0|113:6|1),"%s",ptr->mean);
- disp_bpart(ptr);
- print(4,10,6|1,"%02d",selecount);
- j=10;
- ptr=ptr->last;
- key2=DOWN;
- }
- else
- key2=RIGHT;
- print(i,j,(ptr->sele=='Y'? 0|113:0|75),"%s",ptr->mean);
- disp_bpart(ptr);
- print(4,10,6|1,"%02d",selecount);
- goto mv1;
- }
- break;
- /* case F1:*/
- case F2: /*allselect*/
- ptr1=ptr;
- ptr=ptr2;
- k=0;
- while((ptr!=NULL)&&(k<10)) {
- ptr->sele=='Y'? selecount--:delay(0);
- ptr->sele='Y';
- selecount++;
- ptr=ptr->next;
- k++; }
- ptr1=disp_opbase(ptr);
- ptr=ptr1;
- break;
- case F3: /*all not select*/
- ptr1=ptr;
- ptr=ptr2;
- k=0;
- while((ptr!=NULL)&&(k<10))
- {
- ptr->sele=='N'? selecount++:delay(0);
- ptr->sele='N';
- selecount--;
- ptr=ptr->next;
- k++;
- }
- ptr1=disp_opbase(ptr);
- ptr=ptr1;
- break;
- case F6:
- ptr=root;
- selecount=0;
- while(ptr!=NULL)
- {
- ptr->sele='N';
- ptr=ptr->next;
- }
- return(-1);
- case F4:
- if(maxcount==10)
- if(fin==1)
- return(1);
- else
- continue;
- else
- return(1);
- default:
- printf("\007");
- break;
- } /*endswitch*/
- print(i,j,(ptr->sele=='Y'? 0|113:0|75),"%s",ptr->mean);
- disp_bpart(ptr);
- print(4,10,6|1,"%02d",selecount);
- }/*end for*/
- }
-
-
- /*----------------------------DISP DATABASE OF A PAGE--------------------------*/
- struct MM *disp_opbase(ptr)
- struct MM *ptr;
- {
- register int i,j;
- i=0;j=10;
- clear_win(5,4,9,76,6,0,black);
- disp_bmess(ptr);
- while((ptr!=NULL)&&(i<5))
- {
- print(i+6,j,(ptr->sele=='N'? 6|1:0|113),"%s",ptr->mean);
- i=(j==10? i : i+1);
- j=(j==10? 40: 10);
- ptr=ptr->next;
- }
- return(ptr);
- }
-
- /*----------------------------DISP A PAGE FOR FIELD-----------------------*/
- struct PPP *disp_field(ptr,flag)
- struct PPP *ptr;
- int flag;
- { register int i,j;
- clear_win(5,4,9,76,6,0,black);
- i=0;j=10;
- disp_fmess(ptr);
- while((ptr!=NULL)&&(i<5)) {
- if(flag==0)
- print(i+6,j,(ptr->sele=='N'? 6|1:0|113),"%s",ptr->field);
- if(flag==1)
- print(i+6,j,(ptr->cla<=0? 6|1:0|113),"%s",ptr->field);
- i=(j==10? i: i+1);
- j=(j==10? 40:10);
- ptr=ptr->next; }
- return(ptr);
- }/*end fountion*/
- /*--------------------------DISP HEAD DATABASE MESSAGE----------------------*/
- disp_bmess(ptr)
- struct MM *ptr;
- {
- clear_win(15,4,20,76,6,0,black);
- print(16,10,6|1,"╕├▓┘╫≈╣▓╙╨:%-d ╕÷┐╔╤í┐Γ",basecount);
- print(16,40,6|1,"─·╥╤╤í╘±:%-d ╕÷┐Γ",selecount);
- print(18,10,6|1,"╡▒╟░┐Γ╡─╬─╝■├√(.dbf):%-*s",8,ptr->dbname);
- print(18,40,6|1,"╡▒╟░┐Γ╡─╓≈╣╪╝ⁿ╫╓╬¬:%-*s",11,ptr->mainkey[0]);
- print(20,10,6|1,"╡▒╟░┐Γ╩╟╖±╬¬╣▓╧φ┐Γ: %s",(ptr->serve=='Y' ? "╩╟":"╖±"));
- print(20,40,6|1,"╡▒╟░┐Γ╡─┬╖╛╢ %-*s",25,(ptr->serve=='Y' ? ptr->path:PATH));
- }
- /* --------------------------DISP PART DATABASE MESSAGE----------------------*/
- disp_bpart(ptr)
- BASE *ptr; {
- printf("\033[16;21H\033[0;37;40m%-d",basecount);
- printf("\033[16;49H%-d",selecount);
- printf("\033[18;24H(.dbf):%-*s",8,ptr->dbname);
- printf("\033[18;59H%-*s",11,ptr->mainkey[0]);
- printf("\033[20;30H%s",(ptr->serve=='Y' ? "╩╟":"╖±"));
- printf("\033[20;53H%-*s",25,(ptr->serve=='Y' ? ptr->path:PATH));
- }
- /*---------------------------DISP HEAD FIELD MESSAGE---------------------------*/
- disp_fmess(ptr)
- struct PPP *ptr;
- {
- clear_win(15,4,20,76,6,0,black);
- print(15,20,6|1,"┐╔╥╘┤╙╓╨╤í╚í╫╓╢╬╡─┐Γ╣▓╙╨:%-d╕÷",selecount);
- print(16,10,6|1,"╡▒╟░╫╓╢╬╡─└α╨═:%c",ptr->type);
- print(16,30,6|1,"╡▒╟░╫╓╢╬╡─╙≥┐φ:%2d",ptr->length);
- print(16,50,6|1,"╡▒╟░╫╓╢╬╡─╨í╩²╙≥┐φ:%2d", ptr->dec);
- print(18,10,6|1,"╡▒╟░┐Γ╡─╬─╝■├√(.dbf):%-*s",8,root2->dbname);
- print(18,40,6|1,"╡▒╟░┐Γ╡─▓╦╡Ñ├√:%-*s",11,root2->mean);
- print(20,10,6|1,"╡▒╟░┐Γ╩╟╖±╬¬╣▓╧φ┐Γ: %s",(root2->serve=='Y' ? "╩╟":"╖±"));
- print(20,40,6|1,"╡▒╟░┐Γ╡─┬╖╛╢ %-*s",25,(root2->serve=='Y' ? root2->path:PATH));
- }
- /*----------------------DISP FIELD CHANGE PART MESSAGE--------------------*/
- disp_fpart(ptr)
- FIELD *ptr; {
- printf("\033[15;45H\033[0;37;40m%-d",selecount);
- printf("\033[16;25H%c",ptr->type);
- printf("\033[16;45H%2d",ptr->length);
- printf("\033[16;69H%2d",ptr->dec);
- printf("\033[18;24H(.dbf):%-*s",8,root2->dbname);
- printf("\033[18;55H%-*s",11,root2->mean);
- printf("\033[20;30H%s",(root2->serve=='Y' ? "╩╟":"╖±"));
- printf("\033[20;53H%-*s",25,(root2->serve=='Y' ? root2->path:PATH));
- }
- /*----------------------------WRITE BOTTOM-------------------------------*/
- bottom()
- {
- print(24,1,6|1," í·í√íⁿí²:╥╞╢»╣Γ▒Ω F5╗≥╗╪│╡:╤í╓╨/▓╗╤í F4:╠ß╜╗ PgUp/PgDn╖¡╥│ Home/End╤í┐Γ ");
- }
-
- /*--------------------------DISP NEXT MENU----------------------------------*/
- menu2(sub)
- int sub;
- { int i,key2;
- int row;
- if (sub==-1) sub=0;
- clear_win(0,0,24,79,6,0,cyan);
- /* clear_win(6,15,18,67,6,0,black);*/
- clear_win(5,10,18,73,6,0,black);
- clear_win(4,7,17,71,6,0,blue);
- mgframe(6,10,18,69,0,0|30);
- /* print(19,11,0|30,"%*s",59," ");
- clear_win(6,15,16,63,6,0,blue);*/
- print(6,30,0|30,"═│╝╞╙δ╝╞╦π─ú┐Θ╣ª─▄▓╦╡Ñ");
- for(i=0;i<9;i++)
- print(8+i,30,0|30,"%s",title3[i]);
- row=sub+8;
- print(8+sub,30,0|113,"%s",title3[sub]);
- for(;;)
- { key2=getcc();
- print(row,30,0|30,"%s",title3[sub]);
- switch(key2)
- { case UP:
- if(row>8)
- { row--;
- sub--;
- }
- else
- {
- row=16;
- sub=8;
- }
- break;
- case DOWN:
- if(row<16)
- { row++;
- sub++;
- }
- else
- {
- row=8;
- sub=0;
- }
- break;
- case F6: /*EXIT(1)*/
- clear_win(0,0,24,79,6,0,cyan);
- return(-1);
- case Enter:
- clear_win(0,0,24,79,6,0,cyan);
- return(sub);
- default: printf("\007"); break;
- } /*end switch*/
- print(row,30,0|113,"%s",title3[sub]);
- } /*end for*/
- } /*end sun_menu*/
-
- /*-----------------READ DATABASE MEAN NAME MAINKEY ect-------------------------*/
-
- read_base()
- {
- char *s;
- if((fp1=fopen("db.txt","r"))==NULL) {
- printf("\033[23;5H\033[1;31;40m don't open db.txt");
- exit(0); }
- else {
- root=NULL;
- while(!feof(fp1)) {
- get_root();
- if(root==NULL) {
- root=root1;
- root3=root1; }
- else {
- root1->last=root2;
- root1->next=root2->next;
- if(root2->next!=NULL)
- (root2->next)->last=root1;
- root2->next=root1; }
- root2=root1;
- root3=root1;
- fscanf(fp1,"#%[^#]#,#%[^#]#,#%[^#]#,#%[^#]#,#%[^#]#,#%[^#]#,#%c#,#%c#,#%[^#]#\n",\
- root2->mean,root2->mainkey[0],root2->mainkey[1],root2->mainkey[2],root2->mainkey[3],\
- root2->dbname,&root2->flag,&root2->serve,root2->path);
- if(root2->serve=='N')
- strcpy(root2->path,PATH);
- basecount++; } /* get a dbname */
- fclose(fp1);
- } /*elseend*/
- }/*end read_base*/
-
- /*-------------------------READ A DATABASE OF STRUTURE---------------------------*/
- read_stru()
- {
- int i;
- char temp[30];
- root2=root;
- for(i=0;i<11;i++)
- temp[i]='\0';
- while(root2!=NULL)
- {
- strcpy(temp,PATH);
- strcat(temp,"\\");
- strcat(temp,root2->dbname);
- strcat(temp,".txt");
- if((fp2=fopen(temp,"r"))==NULL)
- {
- printf("\033[23;5H\033[1;31;40mdon't found file");
- exit(1);
- }
- else
- while(!feof(fp2))
- {
- getmem();
- if(root2->sstr==NULL)
- root2->sstr=p1;
- else
- {
- p1->last=p2;
- p1->next=p2->next;
- if(p2->next!=NULL)
- (p2->next)->last=p1;
- p2->next=p1;
- }
- p2=p1;
- root2->estr=p1;
- fscanf(fp2,"#%[^#]#,#%c#,%d,%d\n",p2->field,&p2->type,&p2->length,&p2->dec);
- }
- fclose(fp2);
- root2=root2->next; /* get a base's structure */
- } /*else pointer*/
-
- } /*end read_stru*/
- /*-----------------------------GET MEMORY FOR FIELD--------------------------*/
- getmem()
- {
- int i;
- p1=(struct PPP *) malloc(sizeof(struct PPP));
-
- p1->next=NULL;
- p1->last=NULL;
- for(i=0; i<11; ++i)
- p1->field[i]='\0';
- p1->type=' ';
- p1->sele='N';
- p1->obj='N';
- p1->cla=0;
- p1->length=0;
- p1->dec=0;
- }
- /*------------------------GET MEMORY FOR DATABASE----------------------------*/
- get_root(){
- int i,j;
- root1=(struct MM *) malloc(sizeof(struct MM));
- root1->last=root1->next=NULL;
- for (i=0; i<30; ++i)
- root1->mean[i]='\0';
- for(i=0;i<11;i++)
- root1->dbname[i]='\0';
- for(i=0;i<30;i++)
- root1->path[i]='\0';
- for(i=0;i<4;i++ )
- for(j=0;j<11;j++)
- root1->mainkey[i][j]='\0';
- root1->sstr=NULL;
- root1->flag=0;
- root1->serve=0;
- root1->sele='N';
- root1->join='N';
- root1->sort=0;
- root1->sstr=NULL;
- root1->estr=NULL;
- }
-
- /*--------------------------CLEAR SCREEN------------------------------*/
- clear_win(startx,starty,endx,endy,action,line,attribe)
- int startx,starty;
- int endx,endy;
- int action,line,attribe;
- {
- union REGS r;
-
- r.h.ah=action;
- r.h.al=line;
- r.h.bh=attribe;
- r.h.ch=startx;
- r.h.cl=starty;
- r.h.dh=endx;
- r.h.dl=endy;
- int86(0x10,&r,&r);
- return;
-
- }
- /*-------------------------------READ A CHARACTOR---------------------------*/
-
- getcc(){
- union REGS r;
- r.h.ah=0;
- int86(0x16,&r,&r);
- if (r.h.al==27) exit(0);
- if (r.h.al) return(r.h.al);
- return(r.x.ax);
- }
-
- /*-------------------------OUTPUT-------------------------------------*/
-
- print(int prow,int pcol,int attr,char *format,...)
- {
- va_list arg;
- char print_str[254],*string;
- va_start(arg,format);
- vsprintf(print_str,format,arg);
- string=print_str;
- _SI =(unsigned int) string;
- _DH =(unsigned char)prow-1;
- _DL =(unsigned char)pcol-1;
- _CX=1;
- while(*((char *)_SI)){
- _AH=(unsigned char)2;
- _BH=(unsigned char)0;
- geninterrupt(0x10);
- ++_DL;
- _AH=(unsigned char)9;
- _AL=*((char *)_SI);
- _SI++;
- _BH=(unsigned char)0;
- _BL=(unsigned char)attr;
- geninterrupt(0x10);
- }
- }
-
- /*-----------------------------DRAW A FRAME-------------------------------*/
- gframe(startx,starty,endx,endy,i,color)
- int startx,starty;
- int endx,endy;
- int i;
- int color;
- {
- static char dd[3][6][3]={
- "⌐Ñ","⌐º","⌐│","⌐╖","⌐╗","⌐┐",
- "⌐ñ","⌐ª","⌐░","⌐┤","⌐╕","⌐╝" ,
- " "," "," "," "," "," "
- };
- int row,col;
- clear_win(startx,starty,endx,endy,6,0,black);
- print(startx,starty,color,"%s",dd[i][2]);
- for(col=starty+2; col<endy; col+=2)
- print(startx,col,color,"%s",dd[i][0]);
- print(startx,endy,color,"%s",dd[i][3]);
-
- for(row=startx+1; row<endx; ++row)
- { print(row,starty,color,"%s",dd[i][1]);
- print(row,endy,color,"%s",dd[i][1]);}
-
- print(endx,starty,color,"%s",dd[i][4]);
- for(col=starty+2; col<endy; ++col,++col)
- print(endx,col,color,"%s",dd[i][0]);
- print(endx,endy,color,"%s",dd[i][5]);
- }
-
-
-
- /*-----------------------------DRAW A menu FRAME-------------------------------*/
- mgframe(startx,starty,endx,endy,i,color)
- int startx,starty;
- int endx,endy;
- int i;
- int color;
- {
- static char dd[3][6][3]={
- "⌐Ñ","⌐º","⌐│","⌐╖","⌐╗","⌐┐",
- "⌐ñ","⌐ª","⌐░","⌐┤","⌐╕","⌐╝" ,
- " "," "," "," "," "," "
- };
- int row,col;
- print(startx,starty,color,"%s",dd[i][2]);
- for(col=starty+2; col<endy; col+=2)
- print(startx,col,color,"%s",dd[i][0]);
- print(startx,endy,color,"%s",dd[i][3]);
-
- for(row=startx+1; row<endx; ++row)
- { print(row,starty,color,"%s",dd[i][1]);
- print(row,endy,color,"%s",dd[i][1]);}
-
- print(endx,starty,color,"%s",dd[i][4]);
- for(col=starty+2; col<endy; ++col,++col)
- print(endx,col,color,"%s",dd[i][0]);
- print(endx,endy,color,"%s",dd[i][5]);
- }
-
- /*---------------------------SELECT COLOR-------------------------------*/
- make_color(){
- int i,j,k;
- int ten;
- clear_win(0,0,24,79,6,0,black);
- print(1,5,0|30,"**%s**",title2[sub2]);
- print(1,55,0|30,"**ESC->╓╨╢╧═╦│÷**");
- print(5,25,6|1,"╙ª╙├╧╡═│╡─╤╒╔½▒φ");
- gframe(6,10,11,60,0,0|30);
- i=7;j=20;k=0;
- while(i<11) {
- print(i,j,6|1,"%s",color[k++]);
- i=(j==40? i+1:i);
- j=(j==40? j=20:40); }
- print(13,18,6|1,"╟δ╤í╘±╤╒╔½╨≥║┼:");
- printf("\033[23;1H\033[0;0;7m%*s",79," ");
- if((sub1==0)&&(sub2==0))
- printf("\033[23;21H╧╡═│╚▒╩í╟░╛░╔½╬¬:\033[1;33;44m'╗╞╔½'(gr+)\033[0;0;7m");
- else
- printf("\033[23;21H╧╡═│╚▒╩í▒│╛░╔½╬¬:\033[1;33;44m'└╝╔½'( B )\033[0;0;7m");
- for(;;) {
- fflush(stdin);
- printf("\033[13;34H");
- scanf("%d",&ten);
- if((ten<0)||(ten>7)) {
- printf("\007");
- clear_win(12,0,12,78,6,0,black);
- print(13,18,6|1,"╖┼╞·╤í╘±┬≡ú┐: ");
- ten=getcc();
- if((ten=='Y')||(ten=='y')) {
- ten=(sub2==0? 7:0);
- break; }
- else { clear_win(12,0,12,70,6,0,black);
- print(13,18,6|1,"╟δ╤í╘±╤╒╔½╨≥║┼: ");} }/*endif*/
- else break; }
- return(ten);
- }
-
- /*------------------------------------CHECK ------------------*/
- check(r,ptr,ff)
- FIELD *ptr;
- BASE *r;
- int ff;
- { BASE *root6;
- FIELD *p5;
- root6=r;
- while(root6!=NULL) {
- if(root6->sele=='Y') {
- p5=root6->sstr;
- while(p5!=NULL) {
- if((p5->sele=='Y')&&(p5!=ptr))
- if((strcmp(p5->field,ptr->field))==0) {
- error("╦∙╤í╫╓╢╬▓╗─▄╓╪╕┤úí");
- getcc();
- print(24,1,6|1,"%-80s"," ");
- bottom();
- if(ff==1) return(-1);
- ptr->sele='N';
- fselecount--;
- return(-1); }
- p5=p5->next; } /*endwhile*/
- } /*endif*/
- root6=root6->next;} /*endwhile*/
- }/*end fountion*/
-
- /*---------------------------------CHECK --------------------------------------*/
- checkey() {
- int i;
- root2=root;
- i=0;
- while(root2!=NULL) {
- p2=root2->sstr;
- while(p2!=NULL)
- if((strcmp(root2->mainkey[0],p2->field))==0) {i=1;break;}
- else p2=p2->next;
- if(i==0) {print(23,10,6|1,"╙╨┤φ╡─┐Γ╬─╝■├√:%-s;╢╘╙ª╡─▓╦╡Ñ╠ß╩╛├√╬¬:%s",root2->dbname,root2->mean);
- error("╣╪╝ⁿ╫╓▓╗╞Ñ┼Σ,╟δ╝∞▓Θúí"); exit(1);}
- i=0;
- root2=root2->next; }
- }
-
- /*------------------------------READ A EMNUNAME-----------------------------*/
- r_mean()
- {
- if(selecount>=1)
- { clear_win(1,0,24,79,6,0,black);
- gframe(5,10,11,68,0,0|30);
- h: print(7,20,6|1,"╟δ╩Σ╚δ▒╛┤╬▓┘╫≈╡─▓╦╡Ñ╠ß╩╛├√: ");
- scanf("%s",workname);
- root2=root;
- while(root2!=NULL)
- { if((strcmp(workname,root2->mean))==0)
- { error("╦∙╝╙▓╦╡Ñ╠ß╩╛├√▓╗─▄╙δ╥╤╙╨╡─╓╪╕┤úí");
- bottom();
- goto h;
- }
- root2=root2->next;
- }
- }
- else
- /* if(selecount==1)
- { root2=root;
- while(root2!=NULL)
- if(root2->sele=='Y') break;
- else root2=root2->next;
- strcpy(workname,root2->mean);
- }
- else*/
- { error("╟δ╧╚╤í▓┘╫≈┐Γúí");
- workname[0]='\0';
- getcc();
- }
- }
-
-
- /*--------------------------CHECK LINKFIELD-------------------------------*/
- checklink(p)
- struct PPP *p;
- {
- struct MM *rr;
- struct PPP *pp;
- int su,count;
- if((linktype=='C')||(linktype=='c'))
- rr=root4;
- else
- rr=root2;
- pp=rr->sstr;
- while(pp!=NULL)
- if(strcmp(pp->field,p->field)==0) break;
- else pp=pp->next;
- if(pp==NULL)
- return(-1);
- else
- return(1);
- }
-
-
-
-
- /*-------------------------------SELE CONDITION-----------------------------------*/
- sele_con(ptr)
- FIELD *ptr; {
- int i,key;
- clear_win(14,4,21,76,6,0,black);
- get_con(ptr);
- for(i=0;i<6;i++)
- print(18,10*i+10,6|1,"%s",con[i]);
- print(18,10,0|75,"%s",con[0]);
- i=0;
- while(1) {
- key=getcc();
- print(18,i*10+10,6|1,con[i]);
- switch(key) {
- case LEFT:
- if(i==0) printf("\007");
- else i--;
- break;
- case RIGHT:
- if(i==5) printf("\007");
- else i++;
- break;
- case Enter:
- if(i!=5) {strcat(condition,con[i]); return(0);}
- else return(1);
- deflaut : printf("\007"); }
- print(18,i*10+10,0|75,con[i]);
- }
- }
-
- /*---------------------------------GET CONDITION--------------------------------*/
-
- get_con(ptr)
- FIELD *ptr;
- {
- int i,key;
- char *chr[]={" <"," ="," >","<=","<>",">="};
- char c[50];
- char log[3];
- int n;
- switch(ptr->type) {
- case 'N':
- case 'n':
- print(15,20,6|1,"╟δ╦∙╤í╫╓╢╬╡─╛▀╠σ╓╡");
- printf("\033[20;20H ╙├ 'í·' ║═ 'í√' ╤í╘╦╦π╖√; **Enter->╤í╓╨**");
- print(17,10,6|1,"%s ",ptr->field);
- printf("\033[17;%uH",strlen(ptr->field)+12);
- i=0;
- printf("%s",chr[i]);
- for(;;) {
- key=getcc();
- switch(key) {
- case RIGHT: if(i<5) i++;
- else printf("\007");
- break;
- case LEFT: if(i>0) i--;
- else printf("\007");
- break;
- case Enter: strcat(condition,chr[i]);
- goto kk;
- default: printf("\007"); break;
- }
- printf("\033[17;%uH",strlen(ptr->field)+12);
- printf("%s",chr[i]);
- }
-
- kk: printf("\033[17;%uH",strlen(ptr->field)+15);
- scanf("%d",&n);
- itoa(n,c,10);
- strcat(condition,c);
- break;
- case 'C':
- case 'c':
- print(17,10,6|1,"%s= ",ptr->field);
- scanf("%s",c);
- strcat(condition,"='");
- strcat(condition,c);
- strcat(condition,"'");
- break;
- case 'l':
- case 'L':
- print(17,10,6|1,"%s= ",ptr->field);
- clear_win(14,10,18,76,6,0,black);
- for(;;) {
- log[0]=getcc();
- if((log[0]!='T')&&(log[0]!='F')&&(log[0]!='f')&&(log[0]!='t')) printf("\007");
- else {strcat(condition,"=.");
- log[1]='\0';
- strcat(condition,log);
- strcat(condition,".");
- break;}
- }
- break;
- case 'D':
- case 'd':
- print(15,20,6|1,"╟δ╩Σ╚δ╚╒╞┌╨═╫╓╢╬╡─╓╡->╕±╩╜╚τ╧┬:mm/dd/yy");
- print(17,10,6|1,"%s ",ptr->field);
- printf("\033[17;%uH",strlen(ptr->field)+12);
- i=0;
- printf("%s",chr[i]);
- for(;;) {
- key=getcc();
- switch(key) {
- case RIGHT: if(i<6) i++;
- else printf("\007");
- break;
- case LEFT: if(i>0) i--;
- else printf("\007");
- break;
- case Enter: strcat(condition,chr[i]);
- goto k1;
- default: printf("\007"); break;
- }
- printf("\033[17;%uH",strlen(ptr->field)+12);
- printf("%s",chr[i]);
- }
-
- k1: printf("\033[17;%uH",strlen(ptr->field)+15);
- printf(" / / ");
- for(;;) {
- printf("\033[17;%uH",strlen(ptr->field)+15);
- scanf("%02d",&key);
- if((key>12)||(key<=0))printf("\007");
- else break; }
- itoa(key,c,10);
- strcat(condition,c);
- c[0]='/';
- c[1]='\0';
- strcat(condition,c);
- for(;;) {
- printf("\033[17;%uH",strlen(ptr->field)+18);
- scanf("%02d",&key);
- if((key>31)||(key<=0)) printf("\007");
- else break; }
- itoa(key,c,10);
- strcat(condition,c);
- c[0]='/';
- c[1]='\0';
- strcat(condition,c);
- for(;;) {
- printf("\033[17;%uH",strlen(ptr->field)+21);
- scanf("%02d",&key);
- if(key>0) break;
- else printf("\007"); }
- itoa(key,c,10);
- strcat(condition,c);
- default: printf("\007");break;
- }
- clear_win(14,8,21,76,6,0,black);
- }
-
- /*------------------------------WRITE COLOP.TXT-------------------------------*/
- w_color() {
- FILE *fq;
- if((fq=fopen("color.txt","w"))==NULL)
- {
- printf("don't open color.txt");
- printf("\007");
- exit(0); }
- else
- {
- fprintf(fq,"#%s#,#%s#,#%s#\n",shift[froecolor],shift[backcolor],frame==0? " ":"doub");
- fclose(fq); }
- }
-
-
- /*-----------------------------ONE LINE EDITOR---------------------------------*/
- oneline(pos,fixlen,dislen,fldin)
- int pos,fixlen,dislen;
- char *fldin;
- {
- int in,count=0,i,insert=0,sum;
- int row=10,col=10;
- char *str;
- char *tstr;
- char tem;
- tstr=(char *)malloc(sizeof(char)*(dislen+1));
- ncpy(tstr,fldin,0,dislen);
- printf("\033[%u;%uH%-.*s",17,pos,dislen,tstr);
- row=17;col=pos;
- for(;;){
- printf("\033[%u;%uH",row,col);
- in=getcc();
- switch(in){
- case RIGHT:
- if(fldin[col-pos+count]=='\0'){printf("\007");continue;}
- {
- if(col<(pos+dislen-1))
- {
- col++;
- continue;
- }
- else
- {
- count++;
- if(count<strlen(fldin))
- ncpy(tstr,fldin,count,dislen);
- else
- ncpy(tstr,fldin,count,strlen(fldin));
- }
- }
- printf("\033[%u;%uH%-.*s",17,pos,dislen,tstr);
- continue;
- case LEFT:
- if(col==pos && count==0){printf("\007");continue;}
- else
- {
- if(col>pos)
- {
- col--;
- continue;
- }
- else
- {
- count--;
- ncpy(tstr,fldin,count,dislen);
- }
- }
- printf("\033[%u;%uH%-.*s",17,pos,dislen,tstr);
- continue;
- case Del:
- for(i=0;fldin[i]!='\0';i++);sum=i;
- if(sum==0||fldin[col-(pos)+count]=='\0')
- {
- printf("\007");
- continue;
- }
- for(i=col-(pos)+count;i<sum;i++)
- fldin[i]=fldin[i+1];
- ncpy(tstr,fldin,count,dislen);
- printf("\033[%u;%uH%-.*s",17,pos,dislen,tstr);
- continue;
- case Ins:
- insert=(insert==0? 1:0);
- printf("\033[14;60H\033[0;37;40m%s",(insert==1? "▓σ╚δ":"╕▓╕╟"));
- continue;
-
- case Enter:
- return(1);
- default:
- print(14,15,6|1,"╟δ═Ω╔╞╘╦╦π▒φ┤∩╩╜");
- if((unsigned char)in==0)continue;
- for(i=0;fldin[i]!='\0'&&fldin[0]!='\0';i++);sum=i;
- if(sum>=fixlen)/* && strncmp(fldin," ",sum)==0)*/
- {
- printf("\033[24;1H\033[1;36;41mOut of Range\033[0;0;7m\007");
- continue;
- }
-
- if(insert==1)
- {
- for(i=sum;i>=col-pos+count;i--)
- fldin[i]=fldin[i-1];
- fldin[sum+1]='\0';
- fldin[i+1]=(char)in;
- ncpy(tstr,fldin,count,dislen);
- }
- else
- {
- fldin[col-pos+count]=(char)in;
- ncpy(tstr,fldin,count,dislen);
- fldin[sum+1]='\0';
- }
- if(col++==(pos+dislen))
- {
- col=pos+dislen;
- count++;
- if(count<strlen(fldin))
- ncpy(tstr,fldin,count,dislen);
- else
- ncpy(tstr,fldin,count,strlen(fldin));
- }
- printf("\033[%u;%uH%-.*s",17,pos,dislen,tstr);
- continue;
- }
- }
- }
-
- /*--------------------------------Ncopy------------------------*/
- ncpy(tstr,fldin,start,no)
- char *tstr;
- char *fldin;
- int start,no;
- {
- int i=0;
- if(start!=0)
- for(i=0;i<start;i++)fldin++;
- for(i=start;(i<start+no && (*fldin)!='\0');i++)
- *tstr++=*fldin++;
- *tstr='\0';
- }
-
-
- /*--------------------------------NEXT---------------------*/
- FIELD *NEXT(ptr,f)
- FIELD *ptr;
- int f;
- {
- FIELD *ptr1;
- ptr1=ptr;
- ptr1=ptr1->next;
- if(f==0) while((ptr1->sele!='Y')&&(ptr1!=NULL)) ptr1=ptr1->next;
- else while(((ptr1->sele!='Y')||(ptr1->type!='N'))&&(ptr1!=NULL))
- ptr1=ptr1->next;
- return(ptr1); }
- /*-------------------------------LAST---------------------------*/
- FIELD *LAST(ptr,f)
- FIELD *ptr;
- int f;
- {
- FIELD *ptr1;
- ptr1=ptr;
- ptr1=ptr1->last;
- if(f==0) while((ptr1->sele!='Y')&&(ptr1!=NULL)) ptr1=ptr1->last;
- else while(((ptr1->sele!='Y')||(ptr1->type!='N'))&&(ptr1!=NULL))
- ptr1=ptr1->last;
- return(ptr1); }
-
- /*-------------------------------sele_f--FUNTION USE------------------------------*/
- sele_f(ptr,ptr1,ptr2,f,f2,f1)
- FIELD *ptr,*ptr1,*ptr2;
- int f,f2,f1;
- {
- int i,j,k,key2,fen,select;
- FIELD *tem,*tem1;
- char tt[2];
- ptr2=NULL;
- tt[0]=tt[1]='\0';
- fen=select=0;
- condition[0]='\0';
- if(f==2){ f=0;fen=1;}
- begin:
- if(fen==1){
- if((ptr->sele!='Y')&&(ptr!=NULL))
- ptr=NEXT(ptr,f);}
- else
- if(((ptr->sele!='Y')||(ptr->type!='N'))&&(ptr!=NULL))
- ptr=NEXT(ptr,f);
- ptr2=ptr;
- if(fen==0)
- print(4,10,6|1,"%d",ob);
- print(6,10,0|75,"%s",ptr->field);
- disp_fmess(ptr);
- i=6;j=10;
- for(;;) {
- key2=getcc();
- mv2: if(fen==0)
- print(i,j,(ptr->obj=='Y'? 0|113:6|1),"%s",ptr->field);
- else
- print(i,j,6|1,"%s",ptr->field);
- switch(key2) {
- case LEFT:
- if(j==10) printf("\007");
- else {
- j=10;
- ptr=LAST(ptr,f); }
- break;
- case RIGHT:
- if((j==40)||((NEXT(ptr,f))==NULL)) printf("\007");
- else { j=40;
- ptr=NEXT(ptr,f); }
- break;
- case UP:
- if(i==6) printf("\007");
- else {
- i--;
- ptr=LAST(ptr,f);
- ptr=LAST(ptr,f); }
- break;
- case DOWN:
- tem1=NULL;
- if((i==10)||((tem1=NEXT(ptr,f))==NULL)||((NEXT(tem1,f))==NULL)) printf("\007");
- else {
- i++;
- ptr=NEXT(ptr,f);
- ptr=NEXT(ptr,f);}
- break;
- case PgUp:
- k=0;
- tem=ptr;
- ptr=ptr2;
- while(k<10) {
- ptr=LAST(ptr,f);
- if(ptr==NULL) break;
- k++; }
- if(ptr!=NULL) {
- clear_win(5,3,9,76,6,0,black);
- ptr1=disp_f(ptr,f);
- i=6;j=10;
- ptr2=ptr; }
- else {
- ptr=tem;
- printf("\007"); }
- break;
- case PgDn:
- if(ptr1==NULL) printf("\007");
- else {
- clear_win(5,3,9,76,6,0,black);
- ptr=ptr1;
- ptr1=disp_f(ptr,f);
- i=6;j=10;
- ptr2=ptr; }
- break;
- case Enter:
- case F5: if(f2==1) {p2=ptr; goto en;}
- if(fen==0) {
- ptr->obj=(ptr->obj=='Y'? 'N':'Y');
- ptr->obj=='Y'? ob++:ob--;
- if(j==10) key2=RIGHT;
- else
- if((NEXT(ptr,f)!=NULL)&&(i!=10)) {
- print(i,j,(ptr->obj=='Y'? 0|113:0|75),"%s",ptr->field);
- print(i,j,(ptr->obj=='Y'? 0|113:6|1),"%s",ptr->field);
- disp_fpart(ptr);
- print(4,10,6|1,"%d",ob);
- j=10;
- ptr=LAST(ptr,f);
- key2=DOWN; }
- else key2=RIGHT;
- print(i,j,(ptr->obj=='Y'? 0|113:0|75),"%s",ptr->field);
- disp_fpart(ptr);
- print(4,10,6|1,"%d",ob);
- goto mv2; }
- else { if((sub1==1)&&(sub2==0))
- { tt[0]=select+65;
- strcat(condition,tt);
- strcat(condition,"->");
- }
- strcat(condition,ptr->field);
- if((sele_con(ptr))==1) {
- clear_win(15,4,18,76,6,0,black);
- print(14,30,6|1,"**Enter->╜ß╩°**");
- oneline(5,199,70,condition);
- return(1); }
- else {disp_fmess(ptr);break;}
- }
- /* case F1:*/
- case F6:
- if(fen==0) {
- ptr=p;
- ob=0;
- while(ptr!=NULL)
- {
- ptr->obj='N';
- ptr=NEXT(ptr,f);
- } }
- else condition[0]='\0';
- return(-1);
- case F4: if((fen==1)&&(condition[0]=='\0'))
- strcpy(condition,".T.");
- en: return(1);
- case End: /* next select's base*/
- if(f1==0)
- {
- root1=root2;
- while((root2=root2->next)!=NULL) {
- if(root2->sele=='Y') {
- ptr=root2->sstr;
- select++;
- ptr2=ptr;
- clear_win(5,4,9,76,6,0,black);
- ptr1=disp_f(ptr,f);
- i=0;j=10;
- goto begin; } /*endif*/
- }/*endwhile*/
- if(root2==NULL) {
- printf("\007");
- root2=root1; }
- }
- break;
- case Home:/*last select's base*/
- if(f1==0) {
- root1=root2;
- while((root2=root2->last)!=NULL) {
- if(root2->sele=='Y') {
- select--;
- ptr=root2->sstr;
- ptr2=ptr;
- clear_win(5,4,9,76,6,0,black);
- ptr1=disp_f(ptr,f);
- i=0;j=10;
- goto begin;}/*endif*/
- } /*endwhile*/
- if(root2==NULL) {
- printf("\007");
- root2=root1; }
- }
- break;
- default: printf("\007");break;
- } /*endswitch*/
- if(fen==0) {
- print(i,j,(ptr->obj=='Y'? 0|113:0|75),"%s",ptr->field);
- print(4,10,6|1,"%d",ob);}
- else
- print(i,j,0|75,"%s",ptr->field);
- disp_fpart(ptr);
- }/*end for*/
-
- }
-
- /*-------------------------------disp_f()-----------------------------------*/
- FIELD *disp_f(ptr,f)
- FIELD *ptr;
- int f;
- { register int i,j;
- clear_win(5,4,9,76,6,0,black);
- i=0;j=10;
- if(f==1) {
- if(((ptr->sele!='Y')||(ptr->type!='N'))&&(ptr!=NULL)) ptr=NEXT(ptr,f);}
- else
- if((ptr->sele!='Y')&&(ptr!=NULL)) ptr=NEXT(ptr,f);
- while((ptr!=NULL)&&(i<5)) {
- if(f==0)
- print(i+6,j,6|1,"%s",ptr->field);
- else
- print(i+6,j,(ptr->obj=='Y'? 0|113:6|1),"%s",ptr->field);
- i=(j==10? i: i+1);
- j=(j==10? 40:10);
- ptr=NEXT(ptr,f);
- }
- return(ptr); }
- /*-----------------------------------disp_ch()-----------------------------------*/
- FIELD *disp_ch(ptr)
- FIELD *ptr;
- { register int i,j;
- clear_win(5,4,9,76,6,0,black);
- i=0;j=10;
- while(((ptr->type=='L')||(ptr->sele=='N')||(ptr->type=='l'))&&(ptr!=NULL))
- ptr=ptr->next;
- while((ptr!=NULL)&&(i<5)) {
- print(i+6,j,ptr->cla==0 ? 6|1:0|113,"%s",ptr->field);
- i=(j==10? i: i+1);
- j=(j==10? 40:10);
- ptr=ptr->next;
- while(((ptr->type=='L')||(ptr->sele=='N')||(ptr->type=='l'))&&(ptr!=NULL))
- ptr=ptr->next;}
- return(ptr);
- }/*end fountion*/
-
-
- /*-------------------------select linkfield-----------------------*/
- sele_link(ptr,ptr1,ptr2)
- struct PPP *ptr,*ptr1,*ptr2;
- {
- int i,j,k,key2,f;
- struct PPP *tem;
- kk: ptr2=NULL;
- f=0;
- if((linktype=='C')||(linktype=='c')) {
- root4=root2->next;
- while((root4->sele!='Y')&&(root2!=NULL))
- root4=root4->next;
- print(4,5,6|1,"╟δ╢¿╥σ %s(┐Γ├√:%s.dbf) --> %s(┐Γ├√:%s.dbf)╡─┴¼╜╙╫╓╢╬ ",root2->mean,root2->dbname,root4->mean,root4->dbname);
- }
- else {
- /* if(linknum==0)
- root2=root2->next;*/
- while((root2->sele!='Y')&&(root2!=NULL))
- root2=root2->next;
- if((linktype=='B')||(linktype=='b'))
- print(4,5,6|1,"╟δ╢¿╥σ %s(┐Γ├√:%s.dbf) --> %s(┐Γ├√:%s.dbf)╡─┴¼╜╙╫╓╢╬ ",root4->mean,root4->dbname,root2->mean,root2->dbname);
- else
- print(4,5,6|1,"╟δ╢¿╥σ %s(┐Γ├√:%s.dbf) --> %s(┐Γ├√:%s.dbf)╡─╣╪╝ⁿ╫╓▒φ┤∩╩╜",root2->mean,root2->dbname,root2->next->mean,root2->next->dbname);
- }
-
- begin: print(6,10,(ptr->obj=='L'? 0|113:0|75),"%s",ptr->field);
- disp_fmess(ptr);
- i=6;j=10;
- for(;;) {
- key2=getcc();
- mv: print(i,j,(ptr->obj=='L'? 0|113:6|1),"%s",ptr->field);
- switch(key2) {
- case LEFT:
- if(j==10) printf("\007");
- else {
- j=10;
- ptr=ptr->last; }
- break;
- case RIGHT:
- if((j==40)||(ptr->next==NULL)) printf("\007");
- else { j=40;
- ptr=ptr->next; }
- break;
- case UP:
- if(i==6) printf("\007");
- else {
- i--;
- ptr=ptr->last->last; }
- break;
- case DOWN:
- if((i==10)||((ptr->next)->next==NULL)||(ptr->next==NULL)) printf("\007");
- else {
- i++;
- ptr=ptr->next->next; }
- break;
- case PgUp:
- k=0;
- tem=ptr;
- ptr=ptr2;
- while(k<10) {
- ptr=ptr->last;
- if(ptr==NULL) break;
- k++; }
- if(ptr!=NULL) {
- clear_win(5,3,9,76,6,0,black);
- ptr1=disp_field(ptr,f);
- i=6;j=10;
- ptr2=ptr; }
- else {
- ptr=tem;
- printf("\007"); }
- break;
- case PgDn:
- if(ptr1==NULL) printf("\007");
- else {
- clear_win(5,3,9,76,6,0,black);
- ptr=ptr1;
- ptr1=disp_field(ptr,f);
- i=6;j=10;
- ptr2=ptr; }
- break;
- case Enter:
- case F5:
- if(ptr->obj!='L')
- { if(checklink(ptr)==-1)
- { printf("\007");
- error("┤φ╬≤╡─┴¼╜╙╫╓╢╬,╟δ╓╪╨┬╤í╘±!");
- getcc();
- bottom();
- }
- else
- { ptr->obj='L';
- strcpy(linkfield[linknum][link[linknum]++],ptr->field);
- if(link[linknum]>3)
- { linknum++;
- link[linknum]=0;
- root2=root2->next;
- return(1);
- }
- else break;
- }
- }
- else
- { link[linknum]--;
- ptr->obj='N';
- break;
- }
-
- break;
- case F4:
- if(link[0]>=1)
- { linknum++;
- link[linknum]=0;
- linknum=0;
- root2=root2->next;
- return(1);
- }
- else
- { printf("\007");
- error("─·╢¿╥σ┴╦╢α╕÷▓┘╫≈┐Γ,╥≥┤╦▒╪╨δ╢¿╥σ┴¼╜╙╫╓╢╬úí");
- getcc();
- bottom();
- root2=root;
- linknum=0;
- if((linktype=='C')||(linktype=='c'))
- { while(root2!=NULL)
- if(root2->sele=='Y')
- break;
- else
- root2=root2->next;
- if(root2->sele=='Y')
- { p=root2->sstr;
- p2=p;
- p4=p2;
- p1=disp_field(p2,0);
- }
- }
- else
- { while(root2!=NULL)
- if(root2->sele=='Y')
- break;
- else
- root2=root2->next;
- if(root2->sele=='Y')
- { p=root2->sstr;
- if(i==selecount-1)
- root4=root2;
- p2=p;
- p4=p2;
- p1=disp_field(p2,0);
- }
- }
- ptr=p2;
- ptr1=p1;
- ptr2=p4;
- goto kk;
- }
-
- case F6:
- linknum=0;
- link[linknum]=0;
- clear_obj(1);
- return(-1);
- default: printf("\007");break;
- } /*endswitch*/
- if(ptr->obj=='L')
- print(i,j,0|113,"%s",ptr->field);
- else
- print(i,j,0|75,"%s",ptr->field);
- disp_fpart(ptr);
- }/*endfor*/
- }
-
-
-
-
- /*----------------------------------SELECT DATBASE ------------------------------------------*/
- select_datbase(maxc)
- int maxc;
- { make_start(0);
- use=0;
- clear_win(0,0,24,79,6,0,black);
- print(1,5,0|30,"** %s **",title3[sub2]);
- print(1,55,0|30,"**ESC->╓╨╢╧═╦│÷**");
- bottom();
- print(4,5,6|1,"╣▓╙╨<%02d",0);
- print(4,12,6|1,">╕÷╩²╛▌┐Γ▒╗╤í");
- gframe(5,2,11,78,0,0|30);
- print(11,60,0|30,"PgUp/PgDn");
- gframe(14,2,22,78,1,0|30);
- if(maxc==1)
- print(4,30,6|1,"╤í└█╝╞▓┘╫≈┐Γ");
- else
- if(maxc==10)
- print(4,30,6|1,"╤í└█╝╞╜ß╣√┐Γ");
- else
- print(4,30,6|1,"╢¿╥σ═│╝╞▓┘╫≈┐Γ");
- print(14,8,6|1,"╨┼╧ó┤░┐┌");
- start: root2=root;
- root4=root2;
- root1=disp_opbase(root2);
- if((sele_opbase(root2,root1,root4,maxc))==-1) goto start;
- }
-
- /*---------------------------------define linkfield--------------------------*/
- define_link(f0)
- int f0;
- {
- int i;
- if(f0==0) {
- if(selecount>1) {
- clear_win(5,4,9,76,6,0,black);
- clear_win(15,4,20,76,6,0,black);
- print(6,15,6|1,"╟δ╧╚╢¿╥σ┴¼╜╙└α╨═");
- print(7,15,6|1,"C_┤«╨═┴¼╜╙(╙├╙┌DBASEPLUS╝░FOXBASEPLUS)");
- print(8,15,6|1,"B_╨╟╨═┴¼╜╙(╜÷╙├╙┌FOXBASEPLUS╓╨)");
- print(9,20,6|1,"╟δ╩Σ╚δ╤í╘±(C/B): ");
- printf("\033[9;38H");
- linktype=getcc();
- if ((linktype=='C')||(linktype=='c')) {
- defin: root2=root;
- linknum=0;
- for(i=selecount-1;i>0;i--) {
- clear_win(5,4,9,76,6,0,black);
- clear_win(15,4,20,76,6,0,black);
- while(root2!=NULL)
- if(root2->sele=='Y') break;
- else root2=root2->next;
- if(root2->sele=='Y') {
- p=root2->sstr;
- p2=p;
- p4=p2;
- p1=disp_field(p2,0);
- if((sele_link(p2,p1,p4))==-1) goto defin;
- }/*endif*/
- }/*endfor*/
- }/*endif*/
- else { /*B start b*/
- defin2: root2=root;
- linknum=0;
- for(i=selecount-1;i>0;i--) {
- clear_win(5,4,9,76,6,0,black);
- clear_win(15,4,20,76,6,0,black);
- /* print(8,15,6|1,"╟δ╖╓▒≡╩Σ╚δ╕≈┐Γ╡─┴¼╜╙╫╓╢╬!");
- getcc();*/
- while(root2!=NULL)
- if(root2->sele=='Y') break;
- else root2=root2->next;
- if(root2->sele=='Y') {
- p=root2->sstr;
- if(i==selecount-1) {root4=root2; root2=root2->next;}
- p2=p;
- p4=p2;
- p1=disp_field(p2,0);
- if((sele_link(p2,p1,p4))==-1) goto defin2; }/*endif*/
- }/*endfor*/
- }/*endelse*/
- }
- }
- else
- { clear_win(5,4,9,76,6,0,black);
- clear_win(15,4,20,76,6,0,black);
- root2=root;
- while(root2!=NULL)
- if(root2->sele=='Y') break;
- else root2=root2->next;
- if(root2->sele=='Y')
- { p=root2->sstr;
- p2=p;
- p4=p2;
- p1=disp_field(p2,0);
- sele_link(p2,p1,p4);
- }
- }
-
- }
- /*------------------------------end define linkfield-------------------------------*/
- make_data()
- {
- int ten;
- if(selecount>0) {
- clear_win(5,4,9,76,6,0,black);
- clear_win(14,4,20,76,6,0,black);
- clear_win(2,3,3,70,6,0,black);
- print(4,32,6|1,"╟δ╤í╜ß╣√┐Γ╫╓╢╬");
- start2: root2=root;
- /*print(1,5,0|30, "**╤í╜ß╣√┐Γ╫╓╢╬**");*/
- print(4,5,6|1,"╣▓╙╨<%02d",0);
- print(4,12,6|1,">╕÷╫╓╢╬▒╗╤í");
- print(11,10,0|30,"Home/End╤í╞Σ╦ⁿ┐Γ");
- while(root2!=NULL)
- if(root2->sele=='Y') break;
- else root2=root2->next;
- if(root2->sele=='Y') {
- p=root2->sstr;
- p2=p;
- p4=p2;
- p1=disp_field(p2,0);
- if((sele_field(p2,p1,p4,0))==-1) goto start2;
- }
- }/*endif*/
- }
- /*------------------------------------MAKE OPDATBASE ----------------------------*/
- /*-----------------------------check dbname---------------------------*/
- checkbase(r)
- BASE *r;
- { BASE *rr;
- if(r->sele=='N')
- { rr=root;
- while(rr!=NULL)
- if((strcmp(rr->dbname,r->dbname)==0)&&(rr->sele=='Y'))
- return(-1);
- else
- rr=rr->next;
- }
- return(1);
- }
-
-
- /*------------------------------------END ALL -----------------------------*/
- convert()
- {
- int selectc;
- get_root();
- roothead=NULL;
- for (selectc=0;selectc<selecount;selectc++)
- {
- get_root();
- if(roothead==NULL) {
- roothead=root1;
- root3=root1; }
- else {
- root1->last=root2;
- root1->next=root2->next;
- if(root2->next!=NULL)
- (root2->next)->last=root1;
- root2->next=root1; }
- root2=root1;
- root3=root1;
- strcpy(root2->mean,opbase[selectc]->mean);
- strcpy(root2->dbname,opbase[selectc]->dbname);
- root2->flag=opbase[selectc]->flag;
- root2->serve=opbase[selectc]->serve;
- root2->sele=opbase[selectc]->sele;
- strcpy(root2->path,opbase[selectc]->path);
- root2->join=opbase[selectc]->join;
- root2->sort=opbase[selectc]->sort;
- }
- conv=root;
- root=roothead;
- roothead=conv;
- read_stru();
- }
- /*convert()
- {
- int selectc;
-
- root2=root;
- for (selectc=0;selectc<selecount;selectc++)
- {
- if (opbase[selectc]->last==NULL) continue;
- opbase[selectc]->last->next=opbase[selectc]->next;
- opbase[selectc]->next->last=opbase[selectc]->last;
- opbase[selectc]->last=root2->last;
- opbase[selectc]->next=root2;
- root2->last=opbase[selectc];
- */