home *** CD-ROM | disk | FTP | other *** search
- /**************************************************/
- /* */
- /* ╚╬ ╥Γ ╠⌡ ╝■ ▓Θ ╤» */
- /* */
- /* ╘┤ │╠ ╨≥ ╟σ ╡Ñ */
- /* */
- /* ╔Φ ╝╞ ╚╦: ┴° ┴╒ */
- /* */
- /* 1990─Ω6╘┬ */
- /* */
- /**************************************************/
-
- #include <stdio.h>
- #include <string.h>
- #include <dos.h>
- #define COUNT 40
- struct DBF { struct DB { char field[11];
- char type;
- int len;
- int dec;
- } db[COUNT];
- struct DBF *last;
- struct DBF *next;
- int ctc;
- } *wd,*rd,*newd;
- struct BASE { struct BS { char mean[31];
- char name[9];
- char coflag,copath[20];
- /* char key[11];*/
- struct DBF *dbs;
- } base[10];
- struct BASE *last;
- struct BASE *next;
- int ctc;
- } *wb,*rb,*newb;
- int repeat,MAR[6][128];
- struct BS ldb[6];
- int linkflag,ss0[10];
- char PATH[30],link[5][31];
- main(argc,argv)
- int argc;
- char *argv[];
- { int i,j,k,c,rep=1,id,ic,sn,cn,dn,tn;
- char name[31];
- FILE *fp,*dp;
- strcpy(PATH,argv[1]);
- getbase(argv[1]);
- cls(0,0,24,79,48|33);
- color_puts(" ",0|63);
- while (rep)
- { repeat=1;
- c=getroad();
- if (repeat==0) continue;
- if (c!=0)
- { if (c>1) deflink(link);
- fp=fopen("lr.prg","w");
- fprintf(fp,"LINK=''\n");
- get_fc(fp);
- sele_disp();
- cre("lr.txt");
- cre1(fp);
- fprintf(fp,"name='lr'\ndo cre_df with name\n*do ag\n");
- if (ldb[0].coflag=='Y'||ldb[0].coflag=='y')
- fprintf(fp,"path='%s'\n",ldb[0].copath);
- fprintf(fp,"sele 1\nuse &path\\%s\n",ldb[0].name);
- for (i=1;ldb[i].dbs!=NULL;i++)
- {
- if (ldb[i].coflag=='Y'||ldb[i].coflag=='y')
- fprintf(fp,"path='%s'\n",ldb[i].copath);
- else fprintf(fp,"path='%s'\n",PATH);
- fprintf(fp,"sele 10\nuse &path\\NDX\nloca for TRIM(╦≈╥²╫╓╢╬)='%s'.AND.TRIM(┐Γ├√)='%s'\n",link[i-1],ldb[i].name);
- fprintf(fp,"blin2='%s'\ncty='C'\n",link[i-1]);
- fprintf(fp,"if .not.eof()\nfname=TRIM(╦≈╥²╬─╝■)\nsele %d\nuse &path\\%s index &PATH\\&fname\n",i+1,ldb[i].name);
- fprintf(fp,"else\n");
- fprintf(fp,"sele %d\nuse &path\\%s\nindex on %s to linkwind\nuse &path\\%s inde linkwind\nendif\n",i+1,ldb[i].name,link[i-1],ldb[i].name);
- if (linkflag==0)
- fprintf(fp,"sele A\nset rela to %s into %c addi\n",link[i-1],'A'+i);
- else
- fprintf(fp,"sele %c\nset rela to %s into %c \n",'A'+i-1,link[i-1],'A'+i);
- }
- fprintf(fp,"path='%s'\n",PATH);
- /* j='B';
- while ((i--)>1)
- fprintf(fp,"sele %c\nset rela to %s into %c\n",j-2,link,j++);*/
- }
- rep=0;
- }
- fprintf(fp,"sele 1\nftprg=fmtprg\nduo=\"0\"\ndo lcr with duo\nreturn\n");
- fprintf(fp,"************************************\n");
- fclose(fp);
- }
- /*----------------------------------*/
- /* ╤╙ │┘ ╫╙ │╠ ╨≥ */
- /*----------------------------------*/
- dela()
- { int i,j;
- for (i=0;i<10;i++)
- for (j=-30000;j<30000;j++) ;
- }
- /*-------------------------------------------------*/
- /* ╜╙ ╩╒ ╝ⁿ ┼╠ ╩Σ ╚δ ╥╗ ╕÷ ╫╓ ╖√ */
- /*-------------------------------------------------*/
- 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);
- }
- /*-------------------------------------*/
- /* ╢┴ ╚í ╥╗ ╕÷ ╩² ╫╓ */
- /*-------------------------------------*/
- getn(i,j,row,col)
- int i,j,row,col;
- { int key,n=0;
- cursor(row,col);
- while ((key=getcc())!=0x0D)
- { putchar(key);
- switch (key)
- { case 18688 : return('U');
- case 20736 : return('D');
- case 15104 : return('H');
- case 8 : if (n!=0) n=n/10;
- else { error(); cursor(row,col); }
- break;
- default : n=10*n+key%256-'0';
- break;
- }
- }
- if ((n>=i&&n<=j)||n==0) return(n);
- else { error();
- getn(i,j,row,col);
- }
- }
- /*-------------------------------------*/
- /* ╢┴ ╚í ╥╗ ╕÷ ╫╓ ╖√ */
- /*-------------------------------------*/
- get(row,col)
- int row,col;
- { int key,c=0,n=0;
- struct DBF *p;
- /* cursor(row,col);
- printf(" ");*/
- cursor(row,col);
- while ((key=getcc())!=0x0D)
- { putchar(key);
- switch (key)
- { case 18432 : return('u');
- case 18688 : return('U');
- case 20480 : return('d');
- case 20736 : return('D');
- case 8 : if (n!=0) n=n/10;
- else { error(); cursor(row,col); }
- break;
- default : n=10*n+key%256-'0';
- break;
- }
- }
- p=rd;
- while (p!=wd) { c+=p->ctc; p=p->next; }
- if ((n>=c+1&&n<=c+wd->ctc)||n==0) return(n);
- else{ error();
- get(row,col);
- }
- }
- /*-------------------------------*/
- /* ╣Γ ▒Ω ╢¿ ╬╗ */
- /*-------------------------------*/
- cursor(x,y)
- int x,y;
- { union REGS inregs;
- union REGS outregs;
- inregs.h.ah=2;
- inregs.h.bh=0;
- inregs.h.dh=x;
- inregs.h.dl=y;
- int86(0x10,&inregs,&outregs);
- }
-
- /*----------------------------------------------*/
- /* ░┤ ╤╒ ╔½ ╩Σ │÷ ╥╗ ╫╓ ╖√ ┤« */
- /*----------------------------------------------*/
-
- color_puts(s,color)
- char *s;
- int color;
- { union REGS r;
- int x,y,z;
- now_cursor(&x,&z);
- y=z;
- while (*s)
- { if (*s=='\n')
- { s++;
- x++;
- y=z;
- continue;
- }
- cursor(x,y);
- r.h.ah=9;
- r.h.al=*s++;
- r.h.bl=color;
- r.h.bh=0;
- r.x.cx=1;
- int86(0x10,&r,&r);
- y++;
- cursor(x,y);
- }
- return;
- }
- /*----------------------------------------*/
- /* ╚í ╣Γ ▒Ω ╡▒ ╟░ ╬╗ ╓├ */
- /*----------------------------------------*/
- now_cursor(x,y)
- int *x,*y;
- { union REGS r;
- r.h.ah=3;
- r.h.bh=0;
- int86(0x10,&r,&r);
- *x = r.h.dh;
- *y = r.h.dl;
- return;
- }
- /*-------------------------------------------------------------------*/
- /* ╚╖ ╢¿ ╡▒ ╟░ ╣ñ ╫≈ ╓╕ ╒δ ▓ó ╧╘ ╩╛ ┐Γ ╜ß ╣╣ ▓╦ ╡Ñ */
- /*-------------------------------------------------------------------*/
- judge(c)
- int c;
- { int n=0;
- /* while (wb->base[n].dbs!=rd&&n<10) { n++;
- if (n%10==0&&n!=0&&wb->next!=NULL) {
- wb=wb->next; n=0; } }*/
- while (ldb[n].dbs!=rd) n++;
- if (c=='U'&&wd->last!=NULL) {wd=wd->last;}
- if (c=='D'&&wd->next!=NULL) {wd=wd->next;}
- disp_base(n);
- cursor(3,10);
- return(n);
- }
- /*-------------------------------------*/
- /* ╩Σ │÷ ╠ß ╩╛ ▒Ω ╓╛ */
- /*-------------------------------------*/
- mark(n,c)
- int n;
- char *c;
- { int x,y;
- x=(n%COUNT-1)/4+5;/*3;*/
- if (n%COUNT==0) x=((n-1)%COUNT-1)/4+5;
- y=(n-1)%4*16+6;
- cursor(x,y);
- prt(x,y,0|30,"%s",c);
- /* putchar(c);*/
- }
-
- /*-------------------------------------------------*/
- /* ╡╚ ┤² ╝ⁿ ╚δ ╥╗ ╫╓ ╖√ ║≤ ╝╠ ╨° */
- /*-------------------------------------------------*/
- go_on()
- { cursor(23,5);
- color_puts("░┤╚╬╥Γ╝ⁿ╝╠╨°íºíºíº",15);
- bioskey(0);
- cursor(23,5);
- color_puts(" ",10);
- }
- /*-------------------------------------*/
- /* ╟σ │² ▓┐ ╖╓ ╞┴ ─╗ */
- /*-------------------------------------*/
- clear(d,line,lx,ly,rx,ry)
- int d,line,lx,ly,rx,ry;
- { union REGS inregs,outregs;
- inregs.h.ah=d;
- inregs.h.al=line;
- inregs.h.ch=lx;
- inregs.h.cl=ly;
- inregs.h.dh=rx;
- inregs.h.dl=ry;
- inregs.h.bh=0;
- int86(0x10,&inregs,&outregs);
- }
- /*----------------------------------------*/
- /* ╔Ω ╟δ ╥╗ ┐Γ ╨┼ ╧ó ┐Θ */
- /*----------------------------------------*/
- getmemb()
- { int i,n;
- newb=(struct BASE *)malloc(sizeof(struct BASE));
- newb->ctc=0;
- newb->last=newb->next=NULL;
- for (i=0;i<10;i++)
- { strcpy(newb->base[i].mean,"\0");
- strcpy(newb->base[i].name,"\0");
- /* for (n=0;n<4;n++)
- strcpy(newb->base[i].key[n],"\0");*/
- newb->base[i].dbs=NULL;
- }
- }
- /*----------------------------------------------*/
- /* ╔Ω ╟δ ╥╗ ┐Γ ╜ß ╣╣ ╨┼ ╧ó ┐Θ */
- /*----------------------------------------------*/
- getmemd()
- { int i;
- newd=(struct DBF *)malloc(sizeof(struct DBF));
- newd->ctc=0;
- newd->last=newd->next=NULL;
- for (i=0;i<COUNT;i++)
- { strcpy(newd->db[i].field,"\0");
- newd->db[i].type=' ';
- newd->db[i].len=0;
- newd->db[i].dec=0;
- }
- }
-
- /*-------------------------------------*/
- /* ╢┴ ┐Γ ╙╨ ╣╪ ╨┼ ╧ó */
- /*-------------------------------------*/
- getbase(path)
- char *path;
- { FILE *fp;
- char c[2],key[4][11],c1[2],pathbak[30],buff[80];
- int i=0;
- fp=fopen("db.txt","r");
- getmemb();
- rb=newb;
- wb=newb;
- while (fgets(buff,80,fp)!=NULL)
- { if (i%10==0&&i!=0)
- { getmemb();
- i=0;
- wb->next=newb;
- newb->last=wb;
- wb=newb;
- }
- sscanf(buff,"#%[^#]#,#%[^#]#,#%[^#]#,#%[^#]#,#%[^#]#,#%[^#]#,#%[^#]#,#%[^#]#,#%[^#]#\n",\
- wb->base[i].mean,key[0],key[1],key[2],key[3],wb->base[i].name,c,c1,wb->base[i].copath);
- wb->base[i].coflag=c1[0];
- /* getmemd();
- wd=newd;
- wb->base[i].dbs=newd;
- getcontent(path,wb->base[i].name);*/
- i++;
- wb->ctc++;
- }
- fclose(fp);
- rd=rb->base[0].dbs;
- wb=rb;
- wd=rd;
- }
- /*----------------------------------------*/
- /* ╢┴ ╚δ ┐Γ ╜ß ╣╣ ╨┼ ╧ó */
- /*----------------------------------------*/
- getcontent(path,dbf)
- char *path,*dbf;
- { FILE *fp;
- char *s,buff[80];
- int i=0;
- s=(char *)malloc(30*sizeof(char));
- strcpy(s,path);
- strcat(s,dbf);
- strcat(s,".txt");
- i=0;
- fp=fopen(s,"r");
- while (fgets(buff,80,fp)!=NULL)
- { if (wd->ctc%COUNT==0&&wd->ctc!=0)
- { i=0;
- getmemd();
- wd->next=newd;
- newd->last=wd;
- wd=newd;
- }
- sscanf(buff,"#%[^#]#,#%c#,%d,%d\n",wd->db[i].field,&wd->db[i].type,&wd->db[i].len,&wd->db[i].dec);
- i++;
- wd->ctc++;
- }
- fclose(fp);
- }
-
- /*----------------------------------------------*/
- /* ╧╘ ╩╛ ╧╡ ═│ ╩² ╛▌ ┐Γ ▓╦ ╡Ñ */
- /*----------------------------------------------*/
- disp()
- { int i,x,y,n=0;
- struct BASE *p;
- p=rb;
- while (p!=wb) { n+=p->ctc; p=p->next; }
- cls(0,0,24,79,48|33);
- /* prt(0,1,0|30,"%s",explain);*/
- prt(0,44,48|33,"F1-Help Esc-Exit ╗╪│╡: ═╦│÷▒╛─ú┐Θ");
- prt(2,18,48|33,"▒╛╧╡═│╓╨╡─╚½▓┐╩²╛▌┐Γ╚τ╧┬");
- /* cls(7,4,12,79,0|1);*/
- cls(5,3,11,78,0|1);
- frame(5,2,11,76,0|30);
- x=5;
- y=4;
- for (i=0;i<wb->ctc;i++)
- { cursor(x,y);
- prt(x,y,0|30,"%2d - %-30s",n+i+1,wb->base[i].mean);
- y+=36;
- /** y+=26;**/
- if (y+10>80)
- { x++;
- /** y=1;**/
- y=4;
- }
- }
- }
- /*----------------------------------------*/
- /* ╧╘ ╩╛ ┐Γ ╜ß ╣╣ ▓╦ ╡Ñ */
- /*----------------------------------------*/
- disp_base(m)
- int m;
- { int row,col,i,n=0;
- struct DBF *p;
- /* p=wb->base[m].dbs;*/
- p=ldb[m].dbs;
- while (p!=wd) { n+=p->ctc; p=p->next; }
- cls(1,1,15,78,48|33);
- /* cls(6,6,15,73,0|1);*/
- cls(4,5,14,72,0|1);
- frame(4,4,14,70,0|30);
- /* prt(0,1,0|30,"%s",explain);*/
- prt(1,10,48|33,"┐Γ # %s # ╓╨║¼╙╨╥╘╧┬╫╓╢╬",ldb[m].mean);
- row=5;
- col=7;
- for (i=0;i<wd->ctc;i++)
- { prt(row,col,0|30,"%2d. %-s",n+i+1,wd->db[i].field);
- col+=16;
- if (col>70)
- { row++;
- col=7;
- }
- }
- }
- /*-------------------------------*/
- /* ┤░ ┐┌ ╠ß ╩╛ */
- /*-------------------------------*/
- helplo()
- { char c;
- cursor(11,5);
- color_puts("⌐│⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐╖\
- \n⌐º ─·┐╔╤í╘±╔╧╩÷┐Γ, ╜°╨╨╡Ñ┐Γ╗≥╢α┐Γ▓┘╫≈. ╚⌠╥¬╔·│╔╢╘╢α┐Γ▓Θ╤», ╘≥╕≈┐Γ╝Σ⌐º\
- \n⌐º▒╪╨δ╙╨╧α═¼╫╓╢╬, ╟╥╧α═¼╫╓╢╬╘┌▒╗┴¼╜╙┐Γ╓╨╙ª╩╟╣╪╝ⁿ╫╓. ⌐º\
- \n⌐º ╘┌╤í┐Γ╩▒, ╚τ╣√─·╓╗╤í╘±┴╦╥╗╕÷┐Γ, ╘≥▒φ╩╛╢╘╡Ñ┐Γ▓┘╫≈; ╚τ╣√─·╤í╘±┴╦┴╜⌐º\
- \n⌐º╕÷╥╘╔╧╡─┐Γ, ╘≥▒φ╩╛╢╘╢α┐Γ▓┘╫≈, ╧╡═│╜½╫╘╢»╕∙╛▌─·╤í╘±╡─╦│╨≥░╤╕≈┐Γ┴¼╜╙╞≡⌐º\
- \n⌐º└┤. ⌐º\
- \n⌐º ╫ó╥Γ : ┐╔┴¼╜╙╡─┐Γ╫ε╢α─▄╙╨6╕÷ ⌐º\
- \n⌐╗⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐┐",15);
- color_puts(" ",10);
- go_on();
- clear(6,0,11,0,18,79);
- cursor(20,50);
- }
- /*-------------------------------------*/
- /* ┤φ ╬≤ ╨┼ ╧ó ╠ß ╩╛ */
- /*-------------------------------------*/
- error()
- { cursor(23,15);
- prt(23,15,48|33,"###### ╩Σ╚δ┤φ╬≤! ╟δ╓╪╨┬╘┘╩Σ ######");
- dela();
- cursor(23,15);
- prt(23,15,48|33," ");
- }
- /*----------------------------------------*/
- /* ╢¿ ╥σ ▓Θ ╤» ▓┘ ╫≈ ┐Γ */
- /*----------------------------------------*/
- getroad()
- { int i,n,x,y,col,j,cir,min=1,max,m,dbctc;
- cls(0,0,24,79,48|33);
- wb=rb;
- disp();
- /* prt(19,20,48|33,"╟δ╢¿╥σ╡┌ %d ╕÷▓Θ╤»▓┘╫≈┐Γ",l+1);*/
- prt(20,5,48|33,"╩Σ╚δ┐Γ╡─┤·║┼(PgUp/PgDn: ╖¡╞┴, 0: ╜ß╩°) -- A: B: C: D: E: F: ");
- for (i=0;i<6;i++) {ldb[i].dbs=NULL; strcpy(ldb[i].name,"");}
- max=wb->ctc;
- i=0;
- while ((n=getn(min,max,20,49))!=0)
- {
- /**/ ss0[i]=n;
- if (n=='H')
- { helplo();
- while ((n=getn(min,max,20,49))=='H') helplo();
- if (n==0) return(0);
- }
- if (n=='U') { if (wb->last!=NULL) { max-=wb->ctc; wb=wb->last; min-=10; disp(); } continue; }
- if (n=='D') { if (wb->next!=NULL) { min+=10; wb=wb->next; max+=wb->ctc; disp(); } continue; }
- y=((n-1)%2)*36+3;
- x=(n%10-1)/2+5;
- if (n%10==0) x=((n-1)%10-1)/2+5;
- prt(x,y,0|30,"*");
- if (n%10==0) m=9;
- else m=n%10-1;
- ldb[i]=wb->base[m];
- rd=ldb[i].dbs;
- wd=rd;
- i++;
- col=54;
- while ((n=getn(min,max,20,col))!=0)
- { ss0[i]=n;
- if (n=='H') { helplo(); continue; }
- if (n=='U') { if (wb->last!=NULL) { max-=wb->ctc; wb=wb->last; min-=10; disp(); } continue; }
- if (n=='D') { if (wb->next!=NULL) { min+=10; wb=wb->next; max+=wb->ctc; disp(); } continue; }
- if (n%10==0) m=9;
- else m=n%10-1;
- for (j=0;j<i;j++)
- if (strcmp(ldb[j].mean,wb->base[m].mean)==0) { cir=1; break; }
- else cir=0;
- if (cir) { error();
- continue;
- }
- if (n!=0)
- {
-
-
- y=((n-1)%2)*36+3;
- x=(n%10-1)/2+5;
- if (n%10==0) x=((n-1)%10-1)/2+5;
- prt(x,y,0|30,"*");
- col+=5;
- ldb[i]=wb->base[m];
- i++;
- if (i==6) break;
- }
- }
- /* check();*/
- for (dbctc=0;strcmp(ldb[dbctc].name,"")!=0;dbctc++)
- {
- getmemd();
- wd=newd;
- ldb[dbctc].dbs=newd;
- getcontent(PATH,ldb[dbctc].name);
- }
- wb=rb;
-
- if (i==1) return(i);
- cursor(22,15);
- prt(22,15,48|33,"╟δ╤í╘±╢α┐Γ┴¬╜╙╖╜╩╜(╨╟╨═B/┤«╨═C)");
- bcstart:n=getcc();
- if (n!='B'&&n!='b'&&n!='C'&&n!='c') goto bcstart;
- else linkflag=(n=='b'||n=='B')?0:1;
- return(i);
- }
- wb=rb;
- return(0);
- }
- /*-------------------------------------------------------*/
- /* ▒╚ ╜╧ ┐Γ ╓« ╝Σ ╩╟ ╖± ╙╨ ╧α ═¼ ╫╓ ╢╬ */
- /*-------------------------------------------------------*/
- check()
- { int i,j,k,n;
- struct DBF *p;
- char b[128][11];
- p=ldb[0].dbs;
- i=0;
- j=0;
- while (i<p->ctc)
- { strcpy(b[j++],p->db[i].field);
- i++;
- if (i==p->ctc&&p->next!=NULL) { p=p->next; i=0; }
- }
- k=1;
- while (ldb[k].dbs!=NULL)
- { n=0;
- for (i=0;i<j;i++)
- if (cmp(b[i],ldb[k].dbs)>=0) { strcpy(b[n],b[i]); n++; }
- if (n==0)
- { cursor(23,5);
- color_puts(ldb[0].mean,14|16);
- color_puts(" ║═ ",12);
- color_puts(ldb[k].mean,14|16);
- color_puts(" ╬▐╧α═¼╫╓╢╬, ▓╗─▄╜°╨╨┴¼╜╙, ╟δ╓╪╨┬╢¿╥σ┴¼╜╙┐Γ",12);
- dela();
- color_puts(" ",10);
- repeat=0;
- break;
- }
- if (n<j) j=n;
- k++;
- }
- }
- /*-------------------------------------------------------*/
- /* ▒╚ ╜╧ ╥╗ ╫╓ ╢╬ ╩╟ ╖± ╘┌ ─│ ╥╗ ┐Γ ╓╨ */
- /*-------------------------------------------------------*/
- cmp(str,p)
- char *str;
- struct DBF *p;
- { int i=0,j=0;
- while (i<p->ctc)
- { if (strcmp(str,p->db[i].field)==0) return(j);
- i++;
- j++;
- if (i==p->ctc&&p->next!=NULL) { p=p->next; i=0; }
- }
- return(-1);
- }
- /*-------------------------------------*/
- /* ╢¿ ╥σ ┴¼ ╜╙ ╫╓ ╢╬ */
- /*-------------------------------------*/
- deflink(dname)
- char *dname;
- { int i,c,n,flag,ctcn;
- FILE *fp;
- char ph[30],middst[31];
- strcpy(ph,PATH);
- for (i=0;i<5;i++) strcpy(link[i],"");
- /* strcat(ph,"NDX.TXT");
- fp=fopen(ph,"a");
- prt(22,15,48|33,"╟δ╢¿╥σ┴¼╜╙┐Γ╡─╩╢▒≡├√(╫ε╢α30╕÷╫╓╖√): ");
- scanf("%30s",dname);*/
- cls(0,0,24,79,48|33);
- i=0; ctcn=1;
- while (repeat)
- {
- wd=ldb[i].dbs; rd=ldb[i].dbs; flag=1;
- while (flag) {
- prt(16,10,48|33,"╟δ╚╖╢¿╦∙╢¿╥σ╡─┴¼╜╙┐Γ╡─┴¼╜╙╫╓╢╬(PgUp/PgDn: ╖¡╞┴):");
- prt(19,13,48|33,"╫ó╥Γ: ┴¼╜╙╫╓╢╬▒╪╨δ─▄╬¿╥╗╡╪╩╢▒≡╥╗╕÷╝╟┬╝!");
- judge(0);
- c=get(16,60);
- /*i=1;*/
- if (c=='U'||c=='D')
- { judge(c);
- continue;
- }
- /*flag=1;*/
- if (c%COUNT==0) c=COUNT-1;
- else c=c%COUNT-1;
- if (c==39)
- {
- if (strcmp(link[i],"")==0) continue;
- else {flag=0; continue;}
- }
- if (ldb[i].dbs->db[c].type!='C'&&ldb[i].dbs->db[c].type!='D'&&ldb[i].dbs->db[c].type!='N')
- { prt(21,10,48|33,"╟δ╤í╘±╫╓╖√╨═, ╩²╫╓╨═, ╚╒╞┌╨═╡─╫╓╢╬╫≈╬¬┴¼╜╙╫╓╢╬!");
- go_on();
- prt(21,10,48|33," ");
- continue;
- }
- if (ldb[ctcn].dbs!=NULL)
- { if (cmp(ldb[i].dbs->db[c].field,ldb[ctcn].dbs)<0)
- { prt(21,10,48|33,"%s",ldb[ctcn].mean);
- print1(48|33," ▓╗┤µ╘┌ ");
- print1(48|33,"%s",ldb[i].dbs->db[c].field);
- print1(48|33," ╫╓╢╬, ╬▐╖¿┴¼╜╙. ╟δ╓╪╨┬╤í╘±┴¼╜╙╫╓╢╬");
- go_on();
- prt(21,10,48|33," ");
- }
- else {if (strcmp(link[ctcn-1],"")!=0) strcat(link[ctcn-1],"+");
- if (ldb[i].dbs->db[c].type=='D')
- {
- strcpy(middst,NULL); strcat(middst,"DTOC(");
- strcat(middst,ldb[i].dbs->db[c].field); strcat(middst,")");
- }
- if (ldb[i].dbs->db[c].type=='N')
- {
- strcpy(middst,NULL); strcat(middst,"STR(");
- strcat(middst,ldb[i].dbs->db[c].field); strcat(middst,",");
- strcat(middst,"19");strcat(middst,")");
- }
- if (ldb[i].dbs->db[c].type=='C')
- strcpy(middst,ldb[i].dbs->db[c].field);
- strcat(link[ctcn-1],middst);
- }
- }
- }
- if (linkflag==1) {i=ctcn; ctcn++;}
- else {i=0; ctcn++;}
- if (ldb[ctcn].dbs==NULL) break;
- /* if (flag) { strcpy(link,ldb[0].dbs->db[c].field);
- break;
- }*/
- }
- /* for (i=1;ldb[i].dbs!=NULL;i++) fprintf(fp,"#%s#,#%s#,##,0,0\n",ldb[i].name,link[i-1]);
- fclose(fp);*/
- wd=rd=ldb[0].dbs;
- }
- /*----------------------------------*/
- /* ╤í ╧╘ ╩╛ ╫╓ ╢╬ */
- /*----------------------------------*/
- sele_disp()
- { int r,i,j,n,c,t,k=0,bb=1;/*ldb[bb]*/
- char sele[15];
- cls(0,0,24,79,48|33);
- cursor(0,1);
- /* color_puts(explain,14|16);*/
- cursor(8,10);
- color_puts(" *** ╧┬├µ╟δ╢¿╥σ▓Θ╤»╜ß╣√╧╘╩╛╧ε ***\n\n─·╓╗╨Φ┤╙▒╗┴¼╜╙╡─╕≈╕÷┐Γ╓╨╖╓▒≡╤í╘±╚⌠╕╔╫╓╢╬╝┤┐╔.",11);
- i=0;
- color_puts(" ",10);
- cursor(12,10);
- if (ldb[1].dbs!=NULL)
- { printf("─·╢¿╥σ╡─┴¼╜╙┐Γ╬¬ :"); cursor(14,15); }
- else
- printf("─·╓╗╤í╘±┴╦╡Ñ╕÷┐Γ : ");
- while (ldb[i+1].dbs!=NULL) printf("┐Γ # %s # --> ",ldb[i++].mean);
- printf("┐Γ # %s #",ldb[i].mean);
- go_on();
-
- ll: i=0;
- cls(0,0,24,79,48|33);
- while (ldb[i].dbs!=NULL)
- { wd=ldb[i].dbs;
- rd=ldb[i].dbs;
- for (k=0;k<128;k++) MAR[i][k]=0;
- judge(0);
- n=0;
- t=0;
- prt(16,10,48|33,"1--╚½▓┐╧╘╩╛ 2--▓┐╖╓╧╘╩╛");
- prt(18,15,48|33," ");
- prt(18,20,48|33,"╟δ╤í╘±:");
- if ((c=getn(1,2,18,28))==1)
- while (t<wd->ctc)
- { MAR[i][n++]=1;
- t++;
- if (t==wd->ctc&&wd->next!=NULL) { t=0; wd=wd->next; }
- }
- else
- { cls(17,1,19,80,48|33);
- prt(18,15,48|33,"╨Φ╥¬╧╘╩╛╡─╫╓╢╬╙╨(PgUp/PgDn: ╖¡╞┴): "); while ((c=get(18,50))!=0)
- { if (c=='U'||c=='D')
- { judge(c);
- continue;
- }
- if (MAR[i][c-1]!=1) { mark(c,"*"); MAR[i][c-1]=1;}
- else { mark(c," "); MAR[i][c-1]=0; }
- }
- }
- cls(17,1,19,80,48|33);
- i++;
- }
- strcpy(sele,"rfy");
- savedef_xits(sele);
- i=0;
- while (ldb[i].dbs!=NULL)
- { wd=ldb[i].dbs;
- t=i+1;
- while (ldb[t].dbs!=NULL)
- { k=0;
- j=0;
- while (k<wd->ctc&&j<128)
- { if ((c=cmp(wd->db[k].field,ldb[t].dbs))>=0)
- if (MAR[i][j]==1) MAR[t][c]=0;
- j++; k++;
- if (k==wd->ctc&&wd->next!=NULL) { k=0; wd=wd->next; }
- }
- t++;
- }
- i++;
- }
- return(r);
- }
-
-
- in_c(i)
- int *i;
- { int n=0;
- clear(6,0,22,0,23,79);
- if (ldb[1].dbs!=NULL)
- { cursor(22,10);
- printf("╟δ╤í╘±╠⌡╝■╫╓╢╬ (╝ⁿ╚δíⁿ/í²╤í╘±▓┘╫≈┐Γ) :");
- }
- else
- { cursor(22,20);
- printf("╟δ╤í╘±╠⌡╝■╫╓╢╬ :");
- }
- while (n==0)
- { if (ldb[1].dbs!=NULL)
- { while ((n=get(22,50))!=0)
- { if (n=='u'||n=='d')
- { if (n=='u'&&*i>0) { (*i)--; rd=ldb[*i].dbs; wd=ldb[*i].dbs; }
- else if (*i<5&&ldb[*i+1].dbs!=NULL) { (*i)++; rd=ldb[*i].dbs; wd=ldb[*i].dbs; }
- judge(0);
- }
- else if (n=='U'||n=='D')
- { judge(n);
- continue;
- }
- else break;
- }
- }
- else
- { n=get(22,38);
- if (n=='U'||n=='D')
- { judge(n);
- n=0;
- continue;
- }
- if (n=='u'||n=='d') { n=0; continue; }
- }
- if (n==0) error();
- }
- if (n%COUNT==0) return(COUNT);
- else return(n%COUNT);
- }
-
- cre(str)
- char *str;
- { FILE *sp;
- int n,i,m;
- struct DBF *p;
- sp=fopen(str,"w");
- for (i=0;ldb[i].dbs!=NULL;i++)
- { p=ldb[i].dbs;
- m=0;
- n=0;
- while (n<p->ctc)
- { if (MAR[i][m++]==1) fprintf(sp,"#%s#,#%c#,%d,%d\n",p->db[n].field,p->db[n].type,p->db[n].len,p->db[n].dec);
- n++;
- if (n==p->ctc&&p->next!=NULL) { n=0; p=p->next; }
- }
- }
- fclose(sp);
- return(1);
- }
-
- cre1(sp)
- FILE *sp;
- { int i,j,n,k;
- struct DBF *p;
- fprintf(sp,"df='");
- n='A';
- for (i=0;ldb[i].dbs!=NULL;i++)
- { p=ldb[i].dbs;
- j=0;
- k=0;
- while (k<p->ctc)
- { if (MAR[i][j++]) fprintf(sp,"%c",n);
- k++;
- if (k==p->ctc&&p->next!=NULL) { k=0; p=p->next; }
- }
- n++;
- }
- fprintf(sp,"'\n");
- return(1);
- }
-
- get_fc(cp)
- FILE *cp;
- { int i,n=0,N=0,mark;
- int c,nf,nd,nt,nm,flag;
- char ss[256]="#",dd[120]="#",tt[10],*str,*ms;
- char DD[8],FF[11];
- int row,col,m,con=1,j,k;
- i=0;
- cls(0,0,24,79,48|33);
- rd=ldb[0].dbs;
- wd=ldb[0].dbs;
- judge(0);
- n=in_c(&i);
- col=1;
- cursor(16,col);
- printf("%s",wd->db[n-1].field);
- strcat(ss,wd->db[n-1].field);
- strcat(dd,ldb[i].name);
- strcat(dd,"#");
- tt[N++]=wd->db[n-1].type;
- while (con!=0)
- { cursor(22,0);
- printf("╠⌡╝■╣╪╧╡░ⁿ└¿: 1_.AND. 2_.OR. 3_.NOT. 4_.AND..NOT. 5_.OR..NOT. ╟δ╤í╘±(0╜ß╩°):");
- while ((con=getn(0,5,22,77))=='u'||con=='U'||con=='d'||con=='D') ;
- col+=10;
- cursor(16,col);
- switch (con)
- { case 1 : printf(".AND.");
- col+=5;
- strcat(ss,"#.AND.#");
- break;
- case 2 : printf(".OR.");
- col+=4;
- strcat(ss,"#.OR.#");
- break;
- case 3 : printf(".NOT.");
- col+=5;
- strcat(ss,"#.NOT.#");
- break;
- case 4 : printf(".AND..NOT.");
- col+=10;
- strcat(ss,"#.AND..NOT.#");
- break;
- case 5 : printf(".OR..NOT.");
- col+=9;
- strcat(ss,"#.OR..NOT.#");
- break;
- case 0 : strcat(ss,"#");
- tt[N]='\0';
- fprintf(cp,"con=\"");
- ms=(char *)malloc(300*sizeof(char));
- for (nm=0;nm<300;nm++) ms[nm]='\0';
- str=(char *)malloc(33*sizeof(char));
- cls(0,0,24,79,48|33);
- cursor(4,5);
- printf("─·╢¿╥σ╡─▓Θ╤»╠⌡╝■╬¬:");
- cursor(5,1);
- printf("------------------------------------------------------------------------------");
- cursor(6,3);
- printf(ss,10);
- cursor(8,5);
- printf("▓Θ╤»╠⌡╝■╡─╛▀╠σ╓╡");
- row=9;
- nf=1;
- nd=1;
- nt=0;
- nm=0;
- while (ss[nf]!='\0')
- { cursor(row,3);
- j=0;
- while (ss[nf]!='#') { printf("%c",ss[nf]); FF[j++]=ss[nf++]; }
- FF[j]='\0';
- j=0;
- while (dd[nd]!='#') DD[j++]=dd[nd++];
- DD[j]='\0';
- cursor(row,13);
- mark=0;
- k=0;
- flag=0;
- if (tt[nt]=='C') { strcat(ms,"AT("); nm+=3; }
- else { strcat(ms,DD); strcat(ms,"->"); strcat(ms,FF);
- nm+=strlen(DD)+strlen(FF)+2;
- }
- switch (tt[nt])
- { case 'C' :
- case 'L' : printf(" = ");
- if (tt[nt]=='L') ms[nm++]='=';
- ms[nm++]='"';
- fprintf(cp,"%s->%s='",DD,FF);
- while ((c=getchar())!='\n')
- { fprintf(cp,"%c",c); ms[nm++]=c; }
- fprintf(cp,"'");
- ms[nm++]='"';
- break;
- case 'N' : printf(" > = < ");
- cursor(row,15);
- while ((c=getchar())!='\n')
- { if (k==0) { fprintf(cp,"%s->%s>",DD,FF); ms[nm++]='>'; }
- k=1;
- mark=1;
- fprintf(cp,"%c",c);
- ms[nm++]=c;
- }
- k=0;
- cursor(row,27);
- while ((c=getchar())!='\n')
- { if (mark&&k==0)
- { fprintf(cp,".OR.%s->%s=",DD,FF);
- strcat(ms,".OR."); strcat(ms,DD);
- strcat(ms,"->"); strcat(ms,FF);
- nm+=strlen(DD)+strlen(FF)+6; ms[nm++]='=';
- }
- else if (k==0) { fprintf(cp,"%s->%s=",DD,FF); ms[nm++]='='; }
- fprintf(cp,"%c",c);
- ms[nm++]=c;
- k=1;
- mark=1;
- flag=1;
- }
- k=0;
- cursor(row,39);
- while ((c=getchar())!='\n')
- { if (mark&&k==0) { if (flag)
- { fprintf(cp,".OR."); strcat(ms,".OR."); nm+=4; }
- else
- { fprintf(cp,".AND."); strcat(ms,".AND."); nm+=5; }
- fprintf(cp,"%s->%s<",DD,FF);
- strcat(ms,DD); strcat(ms,"->"); strcat(ms,FF);
- nm+=strlen(DD)+strlen(FF)+2; ms[nm++]='<';
- }
- else if (k==0) { fprintf(cp,"%s->%s<",DD,FF); ms[nm++]='<'; }
- fprintf(cp,"%c",c);
- ms[nm++]=c;
- k=1;
- }
- break;
- case 'D' : printf(" ╘τ╙┌ / / ╡╚╙┌ / / ═φ╙┌ / / ");
- if ((c=getn(0,12,row,19))!=0)
- { fprintf(cp,"%s->%s<CTOD('",DD,FF);
- mark=1;
- strcat(ms,"<CTOD(");
- nm+=6; ms[nm++]='"';
- fprintf(cp,"%d/",c);
- itoa(c,str,10); strcat(ms,str); nm+=strlen(str); ms[nm++]='/';
- while ((c=getn(1,31,row,23))==0) error();
- fprintf(cp,"%d/",c);
- itoa(c,str,10); strcat(ms,str); nm+=strlen(str); ms[nm++]='/';
- while ((c=getn(1,99,row,27))==0) error();
- fprintf(cp,"%d')",c);
- itoa(c,str,10); strcat(ms,str); nm+=strlen(str);
- ms[nm++]='"'; ms[nm++]=')';
- }
- if ((c=getn(0,12,row,37))!=0)
- { if (mark)
- { fprintf(cp,".OR.%s->%s=CTOD('",DD,FF);
- strcat(ms,".OR."); strcat(ms,DD); strcat(ms,"->");
- strcat(ms,FF); strcat(ms,"=CTOD(");
- nm+=strlen(DD)+strlen(FF)+8; ms[nm++]='"';
- }
- else { fprintf(cp,"%s->%s=CTOD('",DD,FF);
- strcat(ms,"=CTOD("); nm+=6; ms[nm++]='"';
- }
- mark=1;
- fprintf(cp,"%d/",c);
- itoa(c,str,10); strcat(ms,str); nm+=strlen(str); ms[nm++]='/';
- while ((c=getn(1,31,row,41))==0) error();
- fprintf(cp,"%d/",c);
- itoa(c,str,10); strcat(ms,str); nm+=strlen(str); ms[nm++]='/';
- while ((c=getn(1,99,row,45))==0) error();
- fprintf(cp,"%d')",c);
- itoa(c,str,10); strcat(ms,str); nm+=strlen(str);
- ms[nm++]='"'; ms[nm++]=')';
- flag=1;
- }
- if ((c=getn(0,12,row,55))!=0)
- { if (mark) { if (flag) { fprintf(cp,".OR.");
- strcat(ms,".OR."); nm+=4;
- }
- else { fprintf(cp,".AND."); strcat(ms,".AND."); nm+=5; }
- fprintf(cp,"%s->%s>CTOD('",DD,FF);
- strcat(ms,DD); strcat(ms,"->"); strcat(ms,FF);
- strcat(ms,">CTOD("); nm+=strlen(DD)+strlen(FF)+8; ms[nm++]='"';
- }
- else { fprintf(cp,"%s->%s>CTOD('",DD,FF);
- strcat(ms,">CTOD("); nm+=6; ms[nm++]='"';
- }
- fprintf(cp,"%d/",c);
- itoa(c,str,10); strcat(ms,str); nm+=strlen(str); ms[nm++]='/';
- while ((c=getn(1,31,row,59))==0) error();
- fprintf(cp,"%d/",c);
- itoa(c,str,10); strcat(ms,str); nm+=strlen(str); ms[nm++]='/';
- while ((c=getn(1,99,row,63))==0) error();
- fprintf(cp,"%d')",c);
- itoa(c,str,10); strcat(ms,str); nm+=strlen(str);
- ms[nm++]='"'; ms[nm++]=')';
- }
- break;
- }
- if (tt[nt++]=='C')
- { ms[nm++]=','; strcat(ms,DD); strcat(ms,"->");
- strcat(ms,FF); strcat(ms,")>0"); nm+=strlen(DD)+strlen(FF)+5;
- }
- row++;
- nf++;
- while (ss[nf]!='#'&&ss[nf]!='\0') { fprintf(cp,"%c",ss[nf]); ms[nm++]=ss[nf++]; }
- if (ss[nf]!='\0') nf++;
- nd++;
- }
- fprintf(cp,"\"\n");
- if (strchr(tt,'C')!=NULL) fprintf(cp,"mcon='%s'\ncty='C'\n",ms);
- free(ms);
- continue;
- }
- n=in_c(&i);
- if (col>68) { col=1; cursor(17,col); }
- else cursor(16,col);
- printf("%s",wd->db[n-1].field);
- strcat(ss,wd->db[n-1].field);
- strcat(dd,ldb[i].name);
- strcat(dd,"#");
- tt[N++]=wd->db[n-1].type;
- }
- }
- savedef_xits(sele)
- char *sele;/*5.15*/
- {
-
- char um[3];
- FILE *fp,*dp;
- int i,j,k,l,m,n,no,p,row,col,code;
- struct BASE *midbase;
- char *buff,db[10],fd[10],ty;
- um[2]='\0';
- if ((fp=fopen("code.dbf","r"))!=NULL) code=1;
- else code=0;
- fclose(fp);
- strcat(sele,"scr");
- /* itoa(n1,um,10);
- strcat(sele,um);*/
- strcat(sele,".prg");
- fp=fopen(sele,"w");
- fprintf(fp,"set color to w+/b\nclea\n");
- row = 3; col = 12;
- i=0;
- while (ldb[i].dbs!=NULL)
- { wd=ldb[i].dbs;
- k=0;
- j=0;
- while (k<wd->ctc&&j<128)
- { if (MAR[i][j]==1)
- {
- m=11+wd->db[k].len;
- if (col + m >70) {col=12; row=row+2;}
- if (row > 21)
- {
- fprintf(fp,"@24,0 clea\nwait\nclea\n");
- row=3; col=12;
- }
- if (col + m <=70)
- {
- fprintf(fp,"@%d,%d say '%-10s:'\n@%d,%d say %c->%s\n",row,col,wd->db[k].field,row,col+11,i+65,wd->db[k].field);
- if (code && wd->db[k].type=='C') fprintf(fp,"do codep with %d,%d,'%s',%c->%-s,'%c'\n",row,col+11,wd->db[k].field,i+65,wd->db[k].field,i+65);
- col=col+m+2;
- }
- else
- {
- fprintf(fp,"@%d,%d say '%-10s:'\n",row,col,wd->db[k].field);
- n=1;
- while ((n-1)*47 < m-11)
- {
- fprintf(fp,"@%d,%d say substr(%c->%s,%d,47)\n",row,col+11,i+65,wd->db[k].field,(n-1)*47+1);
- row++; n++;
- }
- row++;
- }
- }
- j++; k++;
- if (k==wd->ctc&&wd->next!=NULL) { k=0; wd=wd->next; }
- }
- i++;
- }
- /* if(i!=cc)
- {
- pr("cp=' '\n");
- pr("@24,0 say '░┤ ╚╬ ╥Γ ╝ⁿ ┐┤ ╧┬ ╥│ ' get cp\n");
- pr("read\n");
-
- }*/
- fprintf(fp,"set color to w+/b\n@24,0 clear\nset color to w+/b\nch=' '\n");
- fprintf(fp,"do while ch<>'Y'.and.ch<>'y' .and. ch<>'N'.and.ch<>'n'\n@24,5 say '╩╟╖±╝╠╨°▓Θ╤» ?' get ch\n");
- fprintf(fp,"read\nenddo\nif ch='Y'.or.ch='y'\nw=.t.\nww=.t.\nelse\n");
- fprintf(fp,"w=.f.\nww=.f.\nendif\n");
- fprintf(fp,"sele 1\nreturn\n"); fclose(fp);
- }
- prt(int row,int col,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)row;
- _DL =(unsigned char)col;
- _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);
- }
- }
- /*------------------------------------------------------------------------*/
- print1(int attr,char *format,...)
- {
- va_list arg;
- int row,col;
- char print_str[254],*string;
- va_start(arg,format);
- vsprintf(print_str,format,arg);
- string=print_str;
- _AH =(unsigned char)3;
- _BH =(unsigned char)0;
- geninterrupt(0x10);
- _DL++;
- _SI =(unsigned int) string;
- _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);
- }
- }
- frame(s_r,s_c,e_r,e_c,attr)
- int s_r,s_c,e_r,e_c,attr;
- {
- int i,j;
- char line[80];
- union REGS r;
- r.h.ah=6;
- r.h.al=0;
- r.h.bh=attr;
- r.h.ch=s_r-1;
- r.h.cl=s_c-1;
- r.h.dh=e_r-1;
- r.h.dl=e_c-1;
- int86(0x10,&r,&r);
- strcpy(line,"⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐Ñ⌐Ñ");
- prt(s_r-1,s_c-1,attr,"⌐│");
- prt(s_r-1,s_c+1,attr,"%-.*s",e_c-s_c-2,line);
- prt(s_r-1,e_c-1,attr,"⌐╖");
- for(i=s_r+1;i<e_r;i++)
- {
- prt(i-1,s_c-1,attr,"⌐º");
- prt(i-1,e_c-1,attr,"⌐º");
- }
- prt(e_r-1,s_c-1,attr,"⌐╗");
- prt(e_r-1,s_c+1,attr,"%-.*s",e_c-s_c-2,line);
- prt(e_r-1,e_c-1,attr,"⌐┐");
- }
- cls(S_X,S_Y,E_X,E_Y,attr)
- int S_X,S_Y,E_X,E_Y,attr;
- {
- _AH=(unsigned char)6;
- _AL=(unsigned char)0;
- _BH=(unsigned char)attr;
- _CH=(unsigned char)S_X;
- _CL=(unsigned char)S_Y;
- _DH=(unsigned char)E_X;
- _DL=(unsigned char)E_Y;
- geninterrupt(0x10);
- }