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;
- struct MM *last;
- struct MM *next;
- }BASE ;
- BASE *root,*root1,*root2,*root4,*root3;/* end*/
-
- FILE *fp1,*fp2;
- BASE *disp_opbase();
- FIELD *disp_field(),*NEXT(),*LAST(),*disp_f(),*disp_ch();
- char workname[30],condition[200];
- char *con[]={".and.",".or.",".not.",".and.not.",".or.not.","╜ß╩°"};
- int num,linknum,fselecount=0,selecount=0,basecount=0,ob,f;
- char linkfield[4][11],PATH[30];
- char file[13],lan;
-
-
- main(argc,argv)
- int argc;
- char *argv[];
- {
- int ten,i,k,reuse,j;
- char tail[4],name[13],gsxih[30];
- 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]);
- }
- reuse=0;
- clear_win(0,0,24,79,6,0,cyan);
- clear_win(6,18,19,70,6,0,black);
- gframe(6,12,19,68,0,0|30);
- clear_win(6,13,17,66,6,0,blue);
- print(6,32,0|30,"╠¿╒╩─ú┐Θ╠ß╩╛▓╦╡Ñ");
- print(8,25,0|30,"╬ó╗·╣▄└φ╚φ╝■╫╘╢»╔·│╔╞≈╓«╠¿╒╩╫¬╗╗─ú┐Θ");
- print(9,32,0|30,"⌐ñ⌐ñú├ú─ú┬ú┴ú╟ú┤ú«ú░░µ");
- print(11,25,0|30,"╠¿╒╩▓┘╫≈┐Γ í· ╠¿╒╩╜ß╣√┐Γ");
- print(13,22,0|30,"╣ª─▄╦╡├≈ú║");
- print(14,20,0|30,"░┤╠¿╒╩▓┘╫≈┐Γ╡──│╕÷╫╓╖√╨═╫╓╢╬╡─╓╡ú¼░╤─│╕÷╩²╫╓╨═");
- print(15,20,0|30,"╫╓╢╬╡─╓╡╫¬╗╗╬¬╧α╙ª╡─╠¿╒╩╜ß╣√┐Γ╓╨╡─╩²╛▌íú");
- print(17,40,0|30,"▒▒╛⌐║╜┐╒║╜╠∞┤≤╤º╝╞╦π╗·╧╡");
- print(24,1,2|73,"%*s",80," ");
- print(24,3,2|73,"░┤╚╬╥╗╝ⁿ╝╠╨°ú«ú«ú«");
- getcc();
- read_base();
- root->last=NULL;
- if((fp1=fopen("tetris.txt","w"))==NULL)
- exit(0);
- else
- fclose(fp1);
- /* read_stru();*/
-
- condition[0]='\0';
- /* checkey();*/
- ss:make_start();
- fselecount=selecount=f=ob=linknum=0;
- select_datbase(2); selecount=0;
- root2=root;
- while(root2!=NULL)
- { root2->sele='N';
- root2=root2->next;
- }
- select_datbase(1);
- read_stru();
- define_link();
- root2=root;
- while(root2!=NULL)
- { if(root2->sele=='Y')
- { p2=root2->sstr;
- while(p2!=NULL)
- { p2->sele='Y';
- p2=p2->next;
- }
- }
- root2=root2->next;
- }
- r_mean();
- clear_obj(0);
- strcpy(file,"tt");
- if(reuse==0)
- {
- i=0;
- strcpy(name,file);
- tail[0]=tail[1]=tail[2]=tail[3]='\0';
- itoa(i,tail,10);
- strcat(name,tail);
-
- strcat(name,".prg");
- if((fp1=fopen(name,"r"))==NULL)
- { fclose(fp1);
- num=0;
- }
- else
- { clear_win(0,0,24,79,6,0,black);
- gframe(5,2,11,76,0,0|30);
- print(7,20,6|1,"─·╘°╛¡╔·│╔╥╗╨⌐┤╦─ú┐Θ╡─╬─╝■╕▓╕╟┬≡ú┐(Y/N) ");
- ten=getcc();
- if((ten=='Y')||(ten=='y'))
- { num=0;
- system("del tt?.prg >zl");
- }
- else
- { i=1;
- for(;;)
- { itoa(i,tail,10);
- strcpy(name,file);
- itoa(i,tail,10);
- strcat(name,tail);
- strcat(name,".prg");
- num=i;
- if((fp1=fopen(name,"r"))==NULL)
- { fclose(fp1); break;
- }
- i++;
- }
- }
-
- }
- }
- /*----------------------------------yv field---------------------------*/
- make_t();
- root2=root;
- while(root2!=NULL)
- if(root2->sele=='Y') break;
- else root2=root2->next;
- if(root2->sele=='Y') {
- p=root2->sstr;
- p4=p2=p; }
- p1=disp_ch(p2);
- print(4,30,6|1,"╟δ╤í╘±╙≥╫¬╗╗╫╓╢╬");
- sele_ch(p2,p1,p4);
- /*------------------------------ttt_obfiled------------------------------*/
- make_t();
- root2=root;
- while(root2!=NULL)
- if(root2->sele=='Y') break;
- else root2=root2->next;
- if(root2->sele=='Y') {
- p=root2->sstr;
- p4=p2=p; }
- /* 0-all1--n*/
- p1=disp_f(p2,1);
- print(4,30,6|1,"╟δ╤í╘±╫¬╗╗╫╓╢╬");
- sele_f(p2,p1,p4,1,0,1);
- /*----------------------------statis condition---------------------------*/
- for(;;) {
- make_t();
- print(4,5,6|1,"╟δ╩Σ╚δ╠⌡╝■▒φ┤∩╩╜");
- root2=root;
- while(root2!=NULL)
- if(root2->sele=='Y')
- break;
- else
- root2=root2->next;
- if(root2->sele=='Y') {
- p=root2->sstr;
- p4=p2=p; }
- clear_win(5,4,9,76,6,0,black);
- p1=disp_f(p2,0);
- if((sele_f(p2,p1,p4,2,0,0))==1)
- break; }
- /*----------------------------------------------------------------------*/
- strcpy(name,file);
- itoa(num,tail,10);
- strcat(name,tail);
- w_menu(name);
- strcat(name,".prg"); if((fp1=fopen(name,"w"))==NULL)
- exit(0);
- /*-----gene----*/
- root2=root;
- while(root2!=NULL)
- if(root2->sele=='Y') break;
- else root2=root2->next; /*op*/
- root4=root;
- while(root4!=NULL)
- if(root4->sort==1) break;
- else root4=root4->next;
- clear_win(5,8,9,70,6,0,black);
- fprintf(fp1,"set talk off\nset echo off\n set safe off\nclose all\n");
- print(7,20,6|1,"─·╥¬╔·│╔═°┬τ╢α╙├╗º│╠╨≥┬≡ú┐(Y/N): ");
- lan=getcc();
- if((lan=='Y')||(lan=='y'))
- fprintf(fp1,"set excl off\n");
- else
- fprintf(fp1,"set excl on\n");
- fprintf(fp1,"sele 2\nuse %s\\%s\n",root4->path,root4->dbname);
- if(((lan=='Y')||(lan=='y'))&&(root4->serve=='Y'))
- {
- fprintf(fp1,"do while .T.\ntime=0\ndo while .not.flock().and.time<250\n");
- fprintf(fp1,"time=time+1\nenddo\nif time<250\n");
- }
- fprintf(fp1,"copy to tetr.dbf\n");
- if(((lan=='y')||(lan=='Y'))&&(root4->serve=='Y'))
- { fprintf(fp1,"unlock\nexit\nelse\nyes=' '\nclear\n@12,10 say \"╬─╝■╥╤▒╗╞Σ╦√╙├╗º,╝╠╨°╝╙╦°┬≡ú┐(Y/N)\" get yes\n");
- fprintf(fp1,"read\nclear\nif yes='N'.or.yes='n'\n@15,10 say \"╟δ╣²╥╗╗ß╢∙╘┘╙├\" \nwait\n");
- fprintf(fp1,"canc\nendif\nendif\nenddo\n");
- }
- fprintf(fp1,"sele 2\n use tetr excl\n");
- fprintf(fp1,"sele 1\nuse %s\\%s\n",root2->path,root2->dbname);
- fprintf(fp1,"sele 2\n");
- /* if(((lanP=='Y')||(lan=='y'))
- {
- fprintf(fp1,"do while .T.\ntime=0\ndo while .not.flock().and.time<250\n");
- fprintf(fp1,"time=time+1\nenddo\nif time<250\n");
- }*/
- fprintf(fp1,"index on ");
- for(i=0;i<linknum;i++)
- if (i==0)
- fprintf(fp1," %s",linkfield[i]);
- else
- fprintf(fp1,"+%s",linkfield[i]);
- fprintf(fp1," to tt\n");
- /* if((lan=='y')||(lan=='Y'))
- {
- fprintf(fp1,"unlock\nexit\nelse\nyes=' '\nclear\n@12,10 say \"╬─╝■╥╤▒╗╞Σ╦√╙├╗º,╝╠╨°╝╙╦°┬≡ú┐(Y/N)\" get yes\n");
- fprintf(fp1,"read\nclear\nif yes='N'.or.yes='n'\n@15,10 say \"╟δ╣²╥╗╗ß╢∙╘┘╙├\" \nwait\n");
- fprintf(fp1,"canc\nendif\nendif\nenddo\n");
- }*/
- fprintf(fp1,"sele 1 \nset relation to ");
- for(i=0;i<linknum;i++)
- if (i==0)
- fprintf(fp1," %s",linkfield[i]);
- else
- fprintf(fp1,"+%s",linkfield[i]);
- fprintf(fp1," into B\n");
- fprintf(fp1,"go top\ndo while .not.eof()\nsele 2\nif eof()\nappe blan \n");
- for(i=0;i<linknum;i++)
- fprintf(fp1,"repl %s with a->%s\n",linkfield[i],linkfield[i]);
- fprintf(fp1,"endif\nsele 1\nskip\nenddo\nsele 2\n");
- fprintf(fp1,"index on ");
- for(i=0;i<linknum;i++)
- if (i==0)
- fprintf(fp1," %s",linkfield[i]);
- else
- fprintf(fp1,"+%s",linkfield[i]);
- fprintf(fp1," to tt1\nsele 1\n");
- fprintf(fp1,"set relation to ");
- for(i=0;i<linknum;i++)
- if (i==0)
- fprintf(fp1," %s",linkfield[i]);
- else
- fprintf(fp1,"+%s",linkfield[i]);
- fprintf(fp1," into B\n");
- fprintf(fp1,"go top\ndo while .not.eof()\nif ");
- p4=root2->sstr;
- while(p4!=NULL)
- if(p4->obj=='Y') break;
- else p4=p4->next;
- p2=root2->sstr;
- while(p2!=NULL)
- if(p2->cla!=0) break;
- else p2=p2->next;
- fprintf(fp1,"%s \nzl=%s\nzl1=%s\n ",condition,p2->field,p4->field);
- fprintf(fp1,"sele 2\nrepl &zl with &zl+zl1\nendif\nsele 1\nskip\nenddo\nclose all\n");
- fprintf(fp1," !c:brow c:tetr.dbf\n!del c:tt.?dx\n");
- fprintf(fp1,"yes='Y'\nclear\n@10,20 say \"─·╥¬▒ú┴⌠┤╦┤╬╫¬╗╗┬≡ú┐(Y/N): \" get yes\nread\n" );
- fprintf(fp1,"if yes='Y'.or.yes='y'\n");
- fprintf(fp1,"!copy c:tetr.dbf %s\\%s.dbf >zl\nendif\n",root4->path,root4->dbname);
- clear_win(5,8,9,70,6,0,black);
- clear_win(13,4,20,75,6,0,black);
- printf("\033[17;20H┤╦═│╝╞╜ß╣√╥¬╣▓╧φ┬≡ú┐(Y/N)");
- k=getcc();
- if((k=='Y')||(k=='y'))
- { print(19,10,6|1,"╩Σ╚δ╣▓╧φ─┐┬╝╝░╬─╝■├√: ");
- scanf("%s",gsxih);
- fprintf(fp1,"!copy c:tetr.dbf %s >zl",gsxih);
- }
- print(7,20,6|1,"╒²╘┌╔·│╔,╟δ╔╘║≤...");
- reuse=1;
- num++;
- fprintf(fp1,"clear\n");
- fprintf(fp1,"ser=' '\n@ 10,10 say \"┤╦╫¬╗╗╜ß╣√╥¬▒╕╖▌┬≡ú┐(Y/N)\" get ser\nread\n");
- fprintf(fp1,"if ser='Y'.or.ser='y'\n ser=space(30)\n@12,10 say \"╟δ╩Σ╚δ─┐┬╝╝░╬─╝■├√│╞:\" get ser\nread\n");
- fprintf(fp1,"!copy c:tetr.dbf &ser > zl\nendif\n");
- strcat(file,tail);
- fprintf(fp1,"!copy c:tetr.dbf c:%sj.dbf >zl",file);
- fclose(fp1);
- clear_win(5,8,9,70,6,0,black);
- clear_win(13,4,20,75,6,0,black);
- print(7,20,6|1,"╝╠╨°╔·│╔┬≡ú┐(Y/N): ");
- ten=getcc();
- if((ten=='Y')||(ten=='y'))
- goto ss;
- else
- { fp2=fopen("tcolor.txt","w");
- fprintf(fp2,"#gr+#,#B#,#doub#\n");
- fclose(fp2);
- }
- /*-----finish----*/
- system("copy c:\\cdbag4\\tetris.prg *.* >zl");
- system("copy c:\\cdbag4\\tetris.dbf *.* >zl");
- system("copy c:\\cdbag4\\tpage.prg *.* >zl"); system("copy c:\\cdbag4\\tinput.prg *.* >zl");
- system("copy c:\\cdbag4\\tcursor.prg *.* >zl");
- system("copy c:\\cdbag4\\toldcur.prg *.* >zl");
- system("copy c:\\cdbag4\\tstart.prg *.* >zl");
- system("copy c:\\cdbag4\\tcolor.dbf *.* >zl");
- system("copy c:\\cdbag4\\dbstr.dbf *.* >zl");
-
- }
-
- select_datbase(maxc)
- int maxc;
- { clear_win(0,0,24,79,6,0,black);
- print(1,5,0|30,"**%s**","╔·│╔╠¿╒╩╫¬╗╗│╠╨≥");
- print(1,55,0|30,"**ESC->╓╨╢╧═╦│÷**");
- bottom();
- print(4,5,6|1,"╣▓╙╨<%d",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
- 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;
- }
-
- error(er)
- char er[30];
- {
- int i,j;
- i=strlen(er);
- j=(80-i)/2;
- printf("\007");
- 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() {
- int i;
- root2=root;
- while(root2!=NULL) {
- root2->sele='N';
- root2->sort=0;
- /* free(root2->sstr);*/
- root2->sstr=NULL;
- /* p2=root2->sstr;
- while(p2!=NULL) {
- p2->sele='N';
- p2->cla=0;
- p2->obj='N'; p2=p2->next; }*/
- root2=root2->next; }
- } /*end fountion*/
-
-
- /*------------------------------SELECT DATABASE-----------------------------*/
-
- sele_opbase(ptr,ptr1,ptr2,maxcount)
- struct MM *ptr,*ptr1,*ptr2;
- int maxcount;
- {
- int i,j,k,key2;
- struct MM *tem;
- BASE *rr;
- ptr2=NULL;
- 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==1)
- { if(ptr->sort==1)
- { error("╠¿╒╩▓┘╫≈┐Γ║═╜ß╣√┐Γ▓╗─▄╧α═¼úí");
- getcc();
- bottom();
- break;
- }
- if(ptr->sele=='Y')
- { ptr->sele='N';
- selecount=0;
- }
- else
- if(selecount==1)
- {error("╓╗─▄╤í╥╗╕÷┐Γ");
- getcc();
- bottom();
- }
- else
- { selecount=1;
- ptr->sele='Y';
- }
- }
- else
- {
- if(ptr->sele=='Y')
- { ptr->sele='N';
- ptr->sort=0;
- selecount=0;
- }
- else
- if(selecount==1)
- { error("╓╗─▄╤í╥╗╕÷┐Γ");
- getcc();
- bottom();
- }
- else { selecount=1;
- ptr->sele='Y';
- ptr->sort=1;
- }
- }
- break;
- case F6:
- ptr=root;
- selecount=0;
- while(ptr!=NULL)
- {
- ptr->sele='N';
- ptr=ptr->next;
- }
- return(-1);
- case F4:
- if(selecount==1)
- return(1);
- else
- {error("─·▒╪╨δ╤í┐Γúí");
- printf("\007");
- getcc();
- bottom();
- continue;
- }
- 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,"%01d",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," í·í√íⁿí²╥╞╢»╣Γ▒Ω F4:╠ß╜╗ F5:(Enter)╤í╓╨/▓╗╤í PgUp/PgDn╟░║≤╖¡╥│ ");
- }
-
- read_base()
- {
- char *s,buff[80];
- 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(fgets(buff,80,fp1)!=NULL) {
- 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;
- sscanf(buff,"#%[^#]#,#%[^#]#,#%[^#]#,#%[^#]#,#%[^#]#,#%[^#]#,#%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[31],buff[60];
- root2=root;
- for(i=0;i<11;i++)
- temp[i]='\0';
- while(root2!=NULL)
- {
- if (root2->sele!='Y' && root2->sort!=1) {root2=root2->next; continue;}
- 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(fgets(buff,60,fp2)!=NULL)
- {
- 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;
- sscanf(buff,"#%[^#]#,#%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->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]);
- }
-
- /*---------------------------------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()
- {
- clear_win(1,0,24,79,6,0,black);
- gframe(5,10,11,68,0,0|30);
- print(7,20,6|1,"╟δ╩Σ╚δ▒╛┤╬▓┘╫≈╡─▓╦╡Ñ╠ß╩╛├√: ");
- scanf("%s",workname);
- }
-
- /*-------------------------------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); }
-
-
- /*-----------------------------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;
- FIELD *tem,*tem1;
- ptr2=NULL;
- fen=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((f==1)&&(ob==1)&&(ptr->obj=='N'))
- { error("╓╗─▄╤í╥╗╕÷╫╓╢╬╫≈╬¬╫¬╗╗╫╓╢╬úí");
- getcc();
- bottom();
- break;
- }
- 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 { 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;
- 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') {
- 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!='C')&&(ptr->type!='c')&&(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!='C')&&(ptr->type!='c')&&(ptr!=NULL))
- ptr=ptr->next;}
- return(ptr);
- }
-
- /*-------------------------select linkfield-----------------------*/
- sele_link(ptr,ptr1,ptr2)
- struct PPP *ptr,*ptr1,*ptr2;
- {
- int i,j,k,key2,f;
- struct PPP *tem;
- ptr2=NULL;
- f=0;
- root2=root4=root;
- while((root2->sele!='Y')&&(root2!=NULL))
- root2=root2->next; while((root4->sort!=1)&&(root4!=NULL))
- root4=root4->next;
- print(4,5,6|1,"╟δ╢¿╥σ░╤ %s(┐Γ├√:%s.dbf) ╫¬╗╗╡╜ %s(┐Γ├√:%s.dbf)╡─▒ú┴⌠╫╓╢╬",root2->mean,root2->dbname,root4->mean,root4->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)
- { ptr->obj='L';
- f++;
- }
- else break;
- else
- { ptr->obj='N';
- f--;
- }
- break;
- case F4:
- root2=root;
- while(root2!=NULL)
- { if(root2->sele=='Y')
- break;
- else
- root2=root2->next;
- }
- if(root2!=NULL)
- { p2=root2->sstr;
- while(p2!=NULL)
- { if(p2->obj=='L')
- strcpy(linkfield[linknum++],p2->field);
- p2=p2->next;
- }
- }
- return(1);
- case F6:
- linknum=0;
- 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*/
- }
-
-
- /*---------------------------------define linkfield--------------------------*/
- define_link()
- {
- int i;
- defin: 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);
- if((sele_link(p2,p1,p4))==-1) goto defin;
- }/*endif*/
- }
- /*------------------------------end define linkfield-------------------------------*/
- /*------------------sele_char type field--------------------------------*/
- sele_ch(ptr,ptr1,ptr2)
- FIELD *ptr,*ptr1,*ptr2;
- {
- int i,j,k,key2,var;
- FIELD *tem,*tem1,*tem2;
- char ch[4];
- ptr2=NULL;
- begin:
- while((ptr->type!='C')&&(ptr->type!='c')&&(ptr!=NULL))
- ptr=ptr->next;
- print(6,10,0|75,"%s",ptr->field);
- disp_fmess(ptr);
- i=6;j=10;
- for(;;) {
- key2=getcc();
- mv: print(i,j,(ptr->cla!=0 ? 0|113:6|1),"%s",ptr->field);
- switch(key2) {
- case LEFT:
- if(j==10) printf("\007");
- else {
- j=10;
- ptr=ptr->last;
- while((ptr->type!='C')&&(ptr->type!='c')&&(ptr!=NULL))
- ptr=ptr->last;
- }
- break;
- case RIGHT:
- tem1=ptr->next;
- while((tem1->type!='C')&&(tem1->type!='c')&&(tem1!=NULL))
- tem1=tem1->next;
- if((j==40)||(tem1==NULL)) printf("\007");
- else { j=40;
- ptr=ptr->next;
- while((ptr->type!='C')&&(ptr->type!='c')&&(ptr!=NULL))
- ptr=ptr->next; }
- break;
- case UP:
- if(i==6) printf("\007");
- else {
- i--;
- ptr=ptr->last;
- while((ptr->type!='C')&&(ptr->type!='c')&&(ptr!=NULL)) ptr=ptr->last;
- ptr=ptr->last;
- while((ptr->type!='C')&&(ptr->type!='c')&&(ptr!=NULL))
- ptr=ptr->last;
- }
- break;
- case DOWN:
- tem1=ptr->next;
- while((tem1->type!='C')&&(tem1->type!='c')&&(tem1!=NULL))
- tem1=tem1->next;
- tem2=tem1->next;
- while((tem2->type!='C')&&(tem2->type!='c')&&(tem2!=NULL))
- tem2=tem2->next;
- if((i==10)||((tem2==NULL)||(tem1==NULL))) printf("\007");
- else {
- i++;
- ptr=ptr->next;
- while((ptr->type!='C')&&(ptr->type!='c')&&(ptr!=NULL))
- ptr=ptr->next;
- ptr=ptr->next;
- while((ptr->type!='C')&&(ptr->type!='c')&&(ptr!=NULL))
- ptr=ptr->next;}
- break;
- case PgUp:
- k=0;
- tem=ptr;
- ptr=ptr2;
- while(k<10) {
- ptr=ptr->last;
- while((ptr->type!='C')&&(ptr->type!='c')&&(ptr!=NULL))
- ptr=ptr->last;
- if(ptr==NULL) break;
- k++; }
- if(ptr!=NULL) {
- clear_win(5,3,9,76,6,0,black);
- ptr1=disp_ch(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_ch(ptr);
- i=6;j=10;
- ptr2=ptr; }
- break;
- case Enter:
- case F5:
- for(var=0;var<linknum;var++)
- if((strcmp(ptr->field,linkfield[var]))==0) { error("▒ú┴⌠╫╓╢╬▓╗─▄╙δ╙≥╫¬╗╗╫╓╢╬╧α═¼úí");
- getcc();
- bottom();
- goto zl;
- }
- ptr->cla!=0 ? f--:f++;
- if(ptr->cla==0)
- ptr->cla=f;
- else
- ptr->cla=0;
- if(f>1)
- { ptr->cla=0;
- f--;
- error("╓╗─▄╤í╥╗╕÷╫╓╢╬!");
- getcc();
- bottom();
- }
- zl: break;
- case F6:
- ptr=p;
- f=0;
- while(ptr!=NULL)
- {
- ptr->cla=0;
- ptr=ptr->next;
- }
- return(-1);
- case F4:
- if (f==1)
- return(1);
- else
- { error("─·▒╪╨δ╤í╘±");
- getcc();
- bottom();
- break;
- }
- default: printf("\007");break;
- } /*endswitch*/
- print(i,j,(ptr->cla!=0 ? 0|113:0|75),"%s",ptr->field);
- print(4,10,6|1,"%d",f);
- disp_fpart(ptr);
- }/*end for*/
- }
-
-
- /*-----------------------------make titile ------------------------------*/
- make_t() {
- clear_win(0,0,24,79,6,0,black);
- print(1,5,0|30,"**%s**","╔·│╔╠¿╒╩╫¬╗╗│╠╨≥");
- print(1,50,0|30,"**ESC->═╦│÷**");
- gframe(5,2,11,78,0,0|30);
- print(4,5,6|1,"╣▓╤í");
- print(4,13,6|1,"╫╓╢╬");
- print(11,60,0|30,"PgUp/PgDn");
- gframe(13,2,23,78,0,0|30); print(13,8,0|30,"╨┼╧ó┤░┐┌");
- }
- /*------------------------write statis.txt for mean name--------------------------*/
- w_menu(r)
- char *r;{
- FILE *fp;
- if((fp=fopen("tetris.txt","a"))==NULL) {
- error("don't open file tetris.txt");
- exit(1); }
- fprintf(fp,"#%s#,#%s#\n",workname,r);
- fclose(fp); }
- /*----------------------------checklink---------------------------------*/
- checklink(ptr)
- FIELD *ptr;
- { FIELD *ptr1;
- root2=root;
- while(root2!=NULL)
- if(root2->sort==1)
- break;
- else
- root2=root2->next;
- if(root2!=NULL)
- { ptr1=root2->sstr;
- while(ptr1!=NULL)
- { if(strcmp(ptr->field,ptr1->field)==0)
- return(1);
- else ptr1=ptr1->next;
- }
- }
- else
- { error("┴¼╜╙╫╓╢╬╙╨╬≤!");
- exit(0);
- }
- error("┴¼╜╙╫╓╢╬╙╨╬≤!");
- getcc();
- bottom();
- return(-1);
- }
-
-
- /*----------------------------CLEAR OBJ--------------------------------*/
- clear_obj(flag)
- int flag;
- {int i;
- root2=root;
- while(root2!=NULL) {
- if(root2->sele=='Y') {
- p2=root2->sstr;
- while(p2!=NULL) {
- p2->obj='N';
- p2=p2->next ;} }
- root2=root2->next; }
- if(flag==1)
- linknum=0;
- }
- /*------------------------------ALL END ------------------------------*/
-
-
-