home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 5 / 05.iso / a / a014 / 1.ddi / CDBINC.EXE / TJ_F.C < prev    next >
Encoding:
C/C++ Source or Header  |  1991-11-12  |  24.4 KB  |  772 lines

  1. #include <stdio.h>
  2. #include <dos.h>
  3. #include <string.h>
  4. #include <ctype.h>
  5. #include <sys\stat.h>
  6.  
  7. #define black  0x0
  8. #define blue   0x10
  9. #define green  0x20
  10. #define cyan   0x30
  11. #define red    0x40
  12. #define white  0x70
  13.  
  14. #define PgUp 18688
  15. #define PgDn 20736
  16. #define UP   18432
  17. #define DOWN 20480
  18. #define LEFT 19200
  19. #define RIGHT 19712
  20. #define Enter 13
  21. #define Home  18176
  22. #define End   20224
  23. #define ESC   27
  24. #define Del 21248
  25. #define Ins 20992
  26.  
  27. #define  F1    15104
  28. #define  F2    15360
  29. #define  F3    15616
  30. #define  F4    15872
  31. #define  F5    16128
  32. #define  F6    16384
  33. #define  F7    16640
  34. #define  F8    16896
  35. #define  F9    17152
  36. #define  F10   17408
  37.  
  38. typedef struct PPP {              /* this is a database's structure */
  39.     char field[11];
  40.     char type;
  41.     int  length;
  42.     int  dec;
  43.        struct PPP *last;          /* poniter of the last block   */
  44.        struct PPP *next;          /* pointer of the next block   */
  45.     char sele;
  46.     char obj;
  47.     int cla;
  48.      }FIELD;
  49. extern FIELD *p,*p5;
  50.  
  51. typedef struct MM {            /*store base name*/
  52.     char mean[30];
  53.     char dbname[11];     /* the name of the database */
  54.     char mainkey[4][11];      /* mainkey of the database  */
  55.     struct PPP  *sstr;   /* point to the database's structure */
  56.     struct PPP  *estr;/* pointer for end of block of base*/
  57.     char flag;           /*if finish base 0--not finish 1--finish*/
  58.     char serve;
  59.     char path[30];
  60.     char sele;
  61.     int sort;
  62.     char join;
  63.     struct MM *last;
  64.     struct MM *next;
  65.       }BASE ;
  66. extern  BASE  *root,*root3,*root5,*root9;/* end*/
  67. extern int basecount,selecount,fselecount,linknum,link[5];
  68. extern char linkfield[5][4][11],workname[30],linktype,lan,insert;
  69. extern BASE *root2,*root1,*root4;
  70. extern FIELD *p1,*p2,*p4,*p3;
  71. extern int num[6],use,sub1,sub2;
  72. extern char *title3[];
  73. extern FIELD *NEXT(),*LAST();
  74. extern FIELD *disp_f();
  75. extern int ob,sub2;
  76. extern char file[13],PATH[30];
  77. extern char condition[200],*con[6];
  78.  
  79.  
  80. tj_f()  {
  81.       FILE *fp;
  82.       char tail[4], name[13], *tjtype[]={"╟≤╝╟┬╝╕÷╩²","╟≤╫ε╨í╓╡","╟≤╫ε┤≤╓╡","╟≤╞╜╛∙╓╡","╟≤╫▄║═"};
  83.       int tj, key,i,j,k,ll;
  84.       int loc[6];
  85.       char gsxih[50];
  86. /*-----------------------------make start-------------------------*/
  87.    if(num[0]==0)
  88.     make_file(0);
  89.     if((insert!='y')&&(insert!='Y'))
  90.     r_mean();
  91.     strcpy(file,"tj_f");
  92.     itoa(num[0],tail,10);
  93.     strcat(file,tail);
  94.     if((insert=='N')||(insert=='n'))
  95.       w_menuf();
  96. r1:   ob=0;
  97.     root2=root;
  98.     while(root2!=NULL) {
  99.     if(root2->sele=='Y') {
  100.         p2=root2->sstr;
  101.         while(p2!=NULL) {
  102.          p2->cla=0;
  103.          p2->obj='N';
  104.          p2=p2->next; } }
  105.      root2=root2->next;  }
  106. /*--------------------------select statitical type------------------------*/
  107.     make_t();
  108.    print(4,5,6|1,"╟δ╤í═│╝╞└α╨═");
  109.    for(i=0;i<5;i++)
  110.        print(7,i*12+5,0|15,"%s",tjtype[i]);
  111.    i=0;tj=-1;
  112.    print(7,5,0|75,"%s",tjtype[0]);
  113.    make_help(10);
  114.    while(tj==-1) {
  115.        key=getcc();
  116.        print(7,i*12+5,0|15,tjtype[i]);
  117.        switch(key) {
  118.        case LEFT:
  119.            if(i==0) printf("\007");
  120.            else i--;
  121.         break;
  122.        case RIGHT:
  123.         if(i==4) printf("\007");
  124.         else i++;
  125.         break;
  126.        case Enter:
  127.         tj=i;
  128.         break;
  129.        deflaut : printf("\007"); }
  130.        print(7,i*12+5,0|75,tjtype[i]);
  131.       }
  132. /*------------------------------tj_field-----------------------------*/
  133.     if(tj!=0) {
  134.     make_t();
  135.     root2=root;
  136.     while(root2!=NULL)
  137.         if((root2->sele=='Y')&&(root2->sort==1)) break;
  138.         else root2=root2->next;
  139.     if(root2->sele=='Y') {
  140.          p=root2->sstr;
  141.          p4=p2=p;    }
  142.      /* 0-all1--n*/
  143.     p1=disp_f(p2,1);
  144.     sele_f(p2,p1,p4,1,0,1); } /*endif*//*1--tj_f*/
  145. /*----------------------------statis condition---------------------------*/
  146.        for(;;) {
  147.      make_t();
  148.      print(4,5,6|1,"╟δ╩Σ╚δ╠⌡╝■▒φ┤∩╩╜");
  149.      root2=root;
  150.      while(root2!=NULL) if(root2->sele=='Y') break; else root2=root2->next;
  151.      if(root2->sele=='Y') {
  152.         p=root2->sstr;
  153.         p4=p2=p;     }
  154.      clear_win(5,4,9,76,6,0,black);
  155.      p1=disp_f(p2,0);
  156.      if((sele_f(p2,p1,p4,2,0,0))==1) break; } /*2--condition*/
  157. /*---------------------gene prg--------------------------------*/
  158.      strcpy(name,file);
  159.      strcat(name,".prg");
  160.      if(use==0) {
  161.      if((fp=fopen(name,"w"))==NULL) {
  162.      error("don't open file!");
  163.      exit(0); }
  164.      fprintf(fp,"set echo off\nset talk off\nset safe off\n");
  165.      if((lan=='Y')||(lan=='y'))
  166.     fprintf(fp,"set excl off\n");
  167.      else
  168.     fprintf(fp, "set excl on\n");
  169.      fprintf(fp,"close all\n");
  170. /*----------------------------selcetion & index-------------------------*/
  171.      root2=root;
  172.      for(j=0;j<selecount;j++) {
  173.         while(root2!=NULL)
  174.            if(root2->sele=='Y') break;
  175.            else root2=root2->next;
  176.         if(root2->join=='Y')
  177.            fprintf(fp,"if .not.file('%s\\%s.dbf')\nclear\n@12,10 say \"╬─╝■╗╣▓╗┤µ╘┌,─·╙ª╧╚╘╦╨╨▒≡╡─│╠╨≥,▓·╔·┤╦┐Γúí\" \nreturn\nendif\n",root2->path,root2->dbname);
  178.         fprintf(fp,"sele %c\nuse %s\\%s ",j+65,root2->path,root2->dbname);
  179.         if(root2->serve!='Y')
  180.            { fprintf(fp," excl \n");
  181.          loc[j]=100;
  182.         }
  183.         else
  184.            { fprintf(fp," \n");
  185.          loc[j]=0;
  186.            }
  187.        if(j!=0)
  188.           { if(((lan=='Y')||(lan=='y'))&&(root2->serve=='Y'))
  189.             { fprintf(fp,"do while .T.\ntime=0\ndo while .not.flock().and.time<250\n");
  190.               fprintf(fp,"time=time+1\nenddo\nif time<250\n");
  191.             }
  192.          fprintf(fp,"index on");
  193.          for(i=0;i<link[j-1];i++)
  194.              if(i==0)
  195.                fprintf(fp, " %s",linkfield[j-1][i]);
  196.              else
  197.                fprintf(fp,"+%s",linkfield[j-1][i]);
  198.         fprintf(fp," to ndx%-d\n",j-1);/*j-1*/
  199.         if(((lan=='Y')||(lan=='y'))&&(root2->serve=='Y'))
  200.               { fprintf(fp,"unlock\nexit\nelse\nyes=' '\nclear\n@12,10 say \"╬─╝■╥╤▒╗╞Σ╦√╙├╗º,╝╠╨°╝╙╦°┬≡ú┐(Y/N)\" get  yes\n");
  201.             fprintf(fp,"read\nclear\nif yes='N'.or.yes='n'\n@15,10 say \"╟δ╣²╥╗╗ß╢∙╘┘╙├\" \nwait\n");
  202.             fprintf(fp,"return\nendif\nendif\nenddo\n");
  203.               }
  204.           }
  205.               root2=root2->next;
  206.        }
  207.  
  208. /*-------------------------set realtion----------------------------*/
  209.      if((linktype=='C')||(linktype=='c')) {
  210.      for(j=0;j<selecount-1;j++)
  211.          { fprintf(fp,"sele %c\nset relation to ",j+65);
  212.         for(i=0;i<link[j];i++)
  213.              if(i==0)
  214.              fprintf(fp," %s",linkfield[j][i]);
  215.              else
  216.              fprintf(fp,"+%s",linkfield[j][i]);
  217.         fprintf(fp," into %c\n",j+66);
  218.            }
  219.        }
  220.      else
  221.        for(j=0;j<selecount-1;j++)
  222.         {  fprintf(fp,"sele A\nset relation to ");
  223.            for(i=0;i<link[j];i++)
  224.                if(i==0)
  225.                  fprintf(fp, "%s",linkfield[j][i]);
  226.                else
  227.                 fprintf(fp, "+%s",linkfield[j][i]);
  228.            fprintf(fp," into %c\n",j+66);
  229.          }
  230. /*----------------------------end relation-----------------------------*/
  231.      strcpy(name,file);
  232.      strcat(name,"j.dbf");
  233.       fprintf(fp,"sele 9\nuse jg excl\nzap\nuse\nrun copy c:jg.dbf c:%s > zl\n",name); }/*enduse*/
  234.     else {
  235.      if((fp=fopen(name,"a"))==NULL)
  236.         exit(0); }
  237.     strcpy(name,file);
  238.     strcat(name,"j.dbf");
  239.     i=0;
  240.     root2=root;
  241.     while(root2!=NULL)
  242.        if((root2->sele=='Y')&&(root2->sort==1)) break;
  243.        else
  244.           {  if(root2->sele=='Y')
  245.              i++;
  246.           root2=root2->next;
  247.            }
  248. /*----------------------------gene all type field statis---------------------------*/
  249.       switch(tj) {
  250.     case 0:
  251.       /**count*/
  252.         fprintf(fp,"sele %c \n",i+65);
  253.         if(((lan=='y')||(lan=='Y'))&&(loc[i]==0))
  254.          { fprintf(fp,"do while .T.\ntime=0\ndo while .not.flock().and.time<250\n");
  255.            fprintf(fp,"time=time+1\nenddo\nif time<250\n");
  256.          }
  257.         fprintf(fp,"count all for %s to mmm1\n",condition);
  258.         if(((lan=='Y')||(lan=='y'))&&(loc[i]==0))
  259.          {  fprintf(fp,"unlock\nexit\nelse\nyes=' '\nclear\n@12,10 say \"╬─╝■╥╤▒╗╞Σ╦√╙├╗º,╝╠╨°╝╙╦°┬≡ú┐(Y/N)\" get  yes\n");
  260.             fprintf(fp,"read\nclear\nif yes='N'.or.yes='n'\n@15,10 say \"╟δ╣²╥╗╗ß╢∙╘┘╙├\" \nwait\n");
  261.             fprintf(fp,"return\nendif\nendif\nenddo\n");
  262.          }
  263.         fprintf(fp,"\nsele 9\nuse  %s excl\nappen blan\nrepl ═│╝╞╢╘╧≤ with '╝╟┬╝',═│╝╞╠⌡╝■ with \"%s\",═│╝╞─┌╚▌ with '%s',═│╝╞╜ß╣√ with mmm1\n",name,condition,tjtype[0]);
  264.         break;
  265.     case 1:
  266.          j=0;
  267.          root2=root;
  268.          while(root2!=NULL) {
  269.          if(root2->sele=='Y') {
  270.             p2=p=root2->sstr;
  271.             while(p2!=NULL) {
  272.                if(p2->obj=='Y') {
  273.                fprintf(fp,"sele %c\n",i+65);
  274. /*----------------------------------------lock---------------------------*/
  275.                if(((lan=='Y')||(lan=='y'))&&(loc[i]==0))
  276.                 { fprintf(fp,"do while .T.\ntime=0\ndo while .not.flock().and.time<250\n");
  277.                   fprintf(fp,"time=time+1\nenddo\nif time<250\n");
  278.                 }
  279. /*----------------------------------------lockend-----------------------*/
  280.                fprintf(fp,"index on %s to mndx\n",p2->field);
  281. /*-------------------------------unlock or relock------------------------*/
  282.               if(((lan=='y')||(lan=='Y'))&&(loc[i]==0))
  283.                  { fprintf(fp,"unlock\nexit\nelse\nyes=' '\nclear\n@12,10 say \"╬─╝■╥╤▒╗╞Σ╦√╙├╗º,╝╠╨°╝╙╦°┬≡ú┐(Y/N)\" get  yes\n");
  284.                    fprintf(fp,"read\nclear\nif yes='N'.or.yes='n'\n@15,10 say \"╟δ╣²╥╗╗ß╢∙╘┘╙├\"\nwait\n");
  285.                    fprintf(fp,"return\nendif\nendif\nenddo\n");
  286.                  }
  287. /*----------------------------------end unlock or return--------------------*/
  288.                fprintf(fp,"go top\n\store %s to min%-d\n",p2->field,j);
  289.                fprintf(fp,"sele 9\nuse  %s excl\nappen blan\nrepl ═│╝╞╢╘╧≤ with '%s',═│╝╞─┌╚▌ with '%s',═│╝╞╜ß╣√ with min%d,═│╝╞╠⌡╝■ with \"%s\"\nsele 10\n",name,p2->field,tjtype[1],j++,condition);
  290.             /*   fprintf(fp,"run del c:mndx.?dx\n");*/ }
  291.             p2=p2->next;  }  }
  292.            root2=root2->next;    }
  293.           break;
  294.       case 2:
  295.      /*max*/
  296.            j=0;
  297.            root2=root;
  298.            while(root2!=NULL) {
  299.             if(root2->sele=='Y') {
  300.             p2=p=root2->sstr;
  301.                 while(p2!=NULL) {
  302.                if(p2->obj=='Y') {
  303.                    fprintf(fp,"sele %c\n",i+65);
  304. /*-----------------------------------lock---------------------------------*/
  305.                 if(((lan=='y')||(lan=='Y'))&&(loc[i]==0))
  306.                       { fprintf(fp,"do while .T.\ntime=0\ndo while .not.flock().and.time<250\n");
  307.                     fprintf(fp,"time=time+1\nenddo\nif time<250\n");
  308.                       }
  309. /*-----------------------------endlock------------------------------------*/
  310.                    fprintf(fp,"index on %s to mndx\n",p2->field);
  311. /*-------------------------unlock----------------------------------------*/
  312.                    if(((lan=='Y')||(lan=='y'))&&(loc[i]==0))
  313.                      {  fprintf(fp,"unlock\nexit\nelse\nyes=' '\nclear\n@12,10 say \"╬─╝■╥╤▒╗╞Σ╦√╙├╗º,╝╠╨°╝╙╦°┬≡ú┐(Y/N)\" get  yes\n");
  314.                     fprintf(fp,"read\nclear\nif yes='N'.or.yes='n'\n@15,10 say \"╟δ╣²╥╗╗ß╢∙╘┘╙├ \"\nwait\n");
  315.                     fprintf(fp,"return\nendif\nendif\nenddo\n");
  316.                      }
  317. /*----------------------------end unlock returne---------------------------*/
  318.                    fprintf(fp,"go bott\n\store %s to max%-d\n",p2->field,j);
  319.                    fprintf(fp,"sele 9\nuse  %s excl\nappen blan\nrepl ═│╝╞╢╘╧≤ with '%s',═│╝╞─┌╚▌ with '%s',═│╝╞╜ß╣√ with max%d,═│╝╞╠⌡╝■ with \"%s\"\nsele 10\n",name,p2->field,tjtype[2],j++,condition);
  320.         /*           fprintf(fp,"run del c:mndx.?dx\n");*/ }
  321.                 p2=p2->next;  }  }
  322.             root2=root2->next;    }
  323.         break;
  324.       case 3:
  325.        /*aver*/
  326.         j=0;
  327.         root2=root;
  328.         fprintf(fp,"sele %c\n",i+65);
  329. /*-----------------------------------lock---------------------------------*/
  330.         if(((lan=='Y')||(lan=='y'))&&(loc[i]==0))
  331.               { fprintf(fp,"do while .T.\ntime=0\ndo while .not.flock().and.time<250\n");
  332.             fprintf(fp,"time=time+1\nenddo\nif time<250\n");
  333.               }
  334. /*-----------------------------endlock------------------------------------*/
  335.         fprintf(fp,"average ");
  336.         while(root2!=NULL) {
  337.             if(root2->sele=='Y') {
  338.              p2=p=root2->sstr;
  339.              while(p2!=NULL)  {
  340.                   if(p2->obj=='Y') {
  341.                   if(j==0) fprintf(fp," %s",p2->field);
  342.                   else  fprintf(fp,",%s",p2->field);
  343.                   j++; }
  344.                    p2=p2->next;  }  }
  345.               root2=root2->next;    }
  346.          fprintf(fp," for %s to",condition);
  347.          for(j=0;j<ob;j++)
  348.              if(j==0)
  349.              fprintf(fp," aver%-d",j);
  350.              else
  351.              fprintf(fp," ,aver%-d",j);
  352. /*-------------------------unlock----------------------------------------*/
  353.            if(((lan=='Y')||(lan=='y'))&&(loc[i]==0))
  354.                {  fprintf(fp,"\nunlock\nexit\nelse\nyes=' '\nclear\n@12,10 say \"╬─╝■╥╤▒╗╞Σ╦√╙├╗º,╝╠╨°╝╙╦°┬≡ú┐(Y/N)\" get  yes\n");
  355.               fprintf(fp,"read\nclear\nif yes='N'.or.yes='n'\n@15,10 say \"╟δ╣²╥╗╗ß╢∙╘┘╙├\"\nwait\n");
  356.               fprintf(fp,"return\nendif\nendif\nenddo\n");
  357.                }
  358. /*----------------------------end unlock returne---------------------------*/
  359.          fprintf(fp,"\nsele 9\nuse %s excl\n",name);
  360.          root2=root;
  361.          j=0;
  362.          while(root2!=NULL) {
  363.              if(root2->sele=='Y') {
  364.               p2=root2->sstr;
  365.               while(p2!=NULL) {
  366.                   if(p2->obj=='Y')
  367.                  fprintf(fp,"appen blan\nrepl ═│╝╞╢╘╧≤ with '%s',═│╝╞─┌╚▌ with '╟≤╞╜╛∙╓╡',═│╝╞╜ß╣√ with aver%-d,═│╝╞╠⌡╝■ with \"%s\"\n",p2->field,j++,condition);
  368.                    p2=p2->next; }  }
  369.               root2=root2->next; }
  370.          break;
  371.         case 4:
  372.           /***sum*/
  373.          j=0;
  374.          root2=root;
  375.          fprintf(fp,"sele %c\n",i+65);
  376. /*-----------------------------------lock---------------------------------*/
  377.          if(((lan=='y')||(lan=='Y'))&&(loc[i]==0))
  378.              { fprintf(fp,"do while .T.\ntime=0\ndo while .not.flock().and.time<250\n");
  379.                fprintf(fp,"time=time+1\nenddo\nif time<250\n");
  380.              }
  381. /*-----------------------------endlock------------------------------------*/
  382.          fprintf(fp,"sum ");
  383.          while(root2!=NULL) {
  384.               if(root2->sele=='Y') {
  385.                 p2=p=root2->sstr;
  386.                 while(p2!=NULL) {
  387.                  if(p2->obj=='Y') {
  388.                        if(j==0) fprintf(fp," %s",p2->field);
  389.                     else fprintf(fp,",%s",p2->field);
  390.                     j++; }
  391.                   p2=p2->next; }   }
  392.                root2=root2->next;    }
  393.            fprintf(fp," for %s to",condition);
  394.            for(j=0;j<ob;j++)
  395.                if(j==0)
  396.                 fprintf(fp," sum%-d",j);
  397.                else
  398.                 fprintf(fp," ,sum%-d",j);
  399. /*-------------------------unlock----------------------------------------*/
  400.             if(((lan=='y')||(lan=='Y'))&&(loc[i]==0))
  401.                { fprintf(fp,"\nunlock\nexit\nelse\nyes=' '\nclear\n@12,10 say \"╬─╝■╥╤▒╗╞Σ╦√╙├╗º,╝╠╨°╝╙╦°┬≡ú┐(Y/N)\" get  yes\n");
  402.                  fprintf(fp,"read\nclear\nif yes='N'.or.yes='n'\n@15,10 say \"╟δ╣²╥╗╗ß╢∙╘┘╙├\"\nwait\n");
  403.                  fprintf(fp,"return\nendif\nendif\nenddo\n");
  404.                }
  405. /*----------------------------end unlock return---------------------------*/
  406.             fprintf(fp,"\nsele 9\nuse %s excl\n",name);
  407.             root2=root;
  408.            j=0;
  409.            while(root2!=NULL) {
  410.                if(root2->sele=='Y') {
  411.                 p2=root2->sstr;
  412.                 while(p2!=NULL) {
  413.                  if(p2->obj=='Y')
  414.                     fprintf(fp,"appen blan\nrepl ═│╝╞╢╘╧≤ with '%s',═│╝╞─┌╚▌ with '╟≤╫▄║═',═│╝╞╜ß╣√ with sum%-d,═│╝╞╠⌡╝■ with \"%s\"\nsele 9\n",p2->field,j++,condition);
  415.                  p2=p2->next; }  }
  416.             root2=root2->next; }
  417.             break;
  418.           default:break;
  419.       }
  420. /*-----------------------------------make tail ------------------------------------*/
  421.     fclose(fp);
  422.     use=1;
  423.     clear_win(5,4,9,76,6,0,black);
  424.     make_help(0);
  425.     clear_win(13,4,20,75,6,0,black);
  426.     printf("\033[17;20H╝╠╨°╠⌡╝■╫╓╢╬═│╝╞┬≡ú┐(Y/N) ");
  427.     k=getcc();
  428.     if((k=='Y')||(k=='y')) goto r1;
  429.     strcpy(name,file);
  430.     strcat(name,".prg");
  431.     if((fp=fopen(name,"a"))==NULL)
  432.        exit(0);
  433.     else {
  434.                strcpy(name,file);
  435.         strcat(name,"j.dbf");
  436.          fprintf(fp,"close all\nrun c:brow c:%s\n",name);
  437.          fprintf(fp,"clear\n");
  438.          fprintf(fp,"ser=' '\n@ 10,10 say \"┤╦═│╝╞╜ß╣√╥¬▒╕╖▌┬≡ú┐(Y/N)\"  get ser\nread\n");
  439.          fprintf(fp,"if ser='Y'.or.ser='y'\n ser=space(30)\n@12,10 say \"╟δ╩Σ╚δ─┐┬╝╝░╬─╝■├√│╞:\"  get ser\nread\n");
  440.          fprintf(fp,"!copy c:%s &ser > zl\nendif\n",name);
  441.              clear_win(5,4,9,76,6,0,black);
  442.              printf("\033[7;15H╚⌠─·╝ⁿ╚δ'Y',╘≥╧╡═│╜½╠ß╩╛─·╩Σ╚δ╣▓╧φ┬╖╛╢╝░╣▓╧φ├√.");
  443.              clear_win(13,4,20,75,6,0,black);
  444.          printf("\033[17;20H┤╦═│╝╞╜ß╣√╥¬╣▓╧φ┬≡ú┐(Y/N)");
  445.          k=getcc();
  446.          if((k=='Y')||(k=='y'))
  447.             { print(19,10,6|1,"╩Σ╚δ╣▓╧φ─┐┬╝╝░╬─╝■├√:  ");
  448.                       scanf("%s",gsxih);
  449.               fprintf(fp,"!copy c:%s %s >zl",name,gsxih);
  450.                     }
  451.          fclose(fp); }
  452.     num[0]++;
  453.        }/*end*/
  454.  
  455. /*----------------------------help---------------------------------*/
  456.       make_help(f)
  457.       int f; {
  458.       if(f==10) {
  459.       print(f+5,30,6|1,"<╣ª─▄╦╡├≈>");
  460.       print(f+6,15,6|1,"╒Γ╨⌐╣ª─▄╩╟╙├╗º╘┌╜°╨╨╫╓╢╬═│╝╞╩▒,╧╡═│╦∙╠ß╣⌐╡─");
  461.       print(f+8,15,6|1,"╕≈╓╓═│╝╞╣ª─▄,╞Σ╓╨╟≤╝╟┬╝╕÷╩²--┐╔╤í╚╬╥Γ└α╨═╫╓╢╬;");
  462.       print(f+10,15,6|1,"╢°╞Σ╦ⁿ╡─╘≥▒╪╨δ╤í╩²╫╓╨═╫╓╢╬.╫╓╢╬╕÷╩²▓╗╧▐."); }
  463.       else {
  464.       print(f+6,30,6|1,"<╣ª─▄╦╡├≈>");
  465.       print(f+7,15,6|1,"╘┌┤╦┤ª╝ⁿ╚δN╗≥n╩▒,╙├╗º┐╔╘┌╘¡╙╨╡─▓┘╫≈┐Γ╡─╗∙┤í╔╧");
  466.       print(f+8,15,6|1,"╝╠╨°╔·│╔╠⌡╝■╫╓╢╬═│╝╞,╞Σ╠⌡╝■╝░═│╝╞╫╓╢╬┐╔╓╪╨┬╤í╘±╥▓");
  467.       print(f+9,15,6|1,"┐╔▓╗╨▐╕─╙├╥╘╟░╡─╤í╘±."); }
  468.      }
  469.  
  470. /*-----------------------------make titile ------------------------------*/
  471.   make_t() {
  472.        clear_win(0,0,24,79,6,0,black);
  473.        print(1,5,0|30,"**%s**",title3[sub2]);
  474.        print(1,50,0|30,"**ESC->═╦│÷**");
  475.        gframe(5,2,11,78,0,0|30);
  476.        print(4,5,6|1,"╣▓╤í");
  477.        print(4,13,6|1,"╫╓╢╬");
  478.        print(11,8,0|30,"Home/End");
  479.        print(11,60,0|30,"PgUp/PgDn");
  480.        gframe(13,2,23,78,0,0|30);
  481.        print(13,8,0|30,"╨┼╧ó┤░┐┌");
  482.        }
  483. /*------------------------write statis.txt for mean name--------------------------*/
  484.   w_menuf() {
  485.        FILE *fp;
  486.     if((fp=fopen("statis0.txt","a"))==NULL) {
  487.          error("don't open file statis.txt");
  488.          exit(1); }
  489.    fprintf(fp,"#%s#,#%s#\n",workname,file);
  490.    fclose(fp);
  491.    }
  492. /*---------------------------------------make new or old------------------*/
  493.     make_file(nu)
  494.        int nu;
  495.        { char tt;
  496.      char tai[4];
  497.      char ss2[14],ss1[14];
  498.      int i,inu;
  499.      FILE *fg;
  500.       switch(nu)
  501.         { case 0:
  502.         strcpy(ss2,"tj_f");
  503.         break;
  504.           case 1:
  505.          strcpy(ss2,"tj_h");
  506.          break;
  507.           case 2:
  508.          strcpy(ss2,"tj_z");
  509.          break;
  510.           case 3:
  511.          strcpy(ss2,"tj_t");
  512.          break;
  513.           case 4:
  514.          strcpy(ss2,"tj_q");
  515.          break;
  516.               case 5:
  517.                  strcpy(ss2,"tj_s");
  518.                  break;
  519.         }
  520.      strcpy(ss1,ss2);
  521.      strcat(ss2,"0.prg");
  522.      if((fg=fopen(ss2,"r"))==NULL)
  523.         num[nu]=0;
  524.      else
  525.           {  fclose(fg);
  526.          clear_win(0,0,24,79,6,0,black);
  527.          gframe(5,2,11,76,0,0|30);
  528.          print(7,20,6|1,"─·╘°╛¡╔·│╔╣²┤╦─ú┐Θ╡─╬─╝■╕▓╕╟┬≡ú┐(Y/N) ");
  529.          tt=getcc();
  530.          if((tt=='Y')||(tt=='y'))
  531.              {  num[nu]=0;
  532.                         switch(nu)
  533.                { case 0:
  534.                  system("del tj_f?.prg >zl");
  535.                  unlink("statis0.txt");
  536.                  break;
  537.                   case 1:
  538.                   system("del tj_h?.prg >zl");
  539.                   unlink("statis1.txt");
  540.                   break;
  541.                    case 2:
  542.                    system("del tj_z?.prg >zl");
  543.                    unlink("statis2.txt");
  544.                    break;
  545.                 case 3:
  546.                    system("del tj_t?.prg >zl");
  547.                    unlink("statis3.txt");
  548.                    break;
  549.                  case 4:
  550.                      system("del tj_q?.prg >zl");
  551.                      unlink("statis4.txt");
  552.                     break;
  553.                  case 5:
  554.                     system("del tj_s?.prg >zl");
  555.                     unlink("statis5.txt");
  556.                     break;
  557.                }
  558.              }
  559.          else
  560.              {
  561.                print(7,20,6|1,"─·╥¬╓╪╨┬╔·│╔╥╤╔·│╔╣²╡──│╘┤│╠╨≥┬≡ú┐(Y/N): ");
  562.                insert=getcc();
  563.            br: if((insert=='y')||(insert=='Y'))
  564.                { print(7,20,6|1,"╟δ╩Σ╚δ╥¬╓╪╨┬╔·│╔╡─╘┤│╠╨≥╨≥║┼(┤╙0┐¬╩╝╝╞╩²): ");
  565.                  scanf("%d",&inu);
  566.                 }
  567.             i=1;
  568.                        for(;;)
  569.               {  itoa(i,tai,10);
  570.                  strcpy(ss2,ss1);
  571.                  strcat(ss2,tai);
  572.                  strcat(ss2,".prg");
  573.                  num[nu]=i;
  574.                  if((fg=fopen(ss2,"r"))==NULL)
  575.                    break;
  576.                  else
  577.                  fclose(fg);
  578.                  i++;
  579.                 }
  580.                if((insert=='Y')||(insert=='y'))
  581.                   if(inu<num[nu])
  582.                     num[nu]=inu;
  583.                    else
  584.                       if(inu==num[nu])
  585.                         insert='N';
  586.                       else
  587.                       { error("╨≥║┼╠½┤≤úí");
  588.                         printf("\007");
  589.                         getcc();
  590.                         bottom();
  591.                         goto  br;
  592.                        }
  593.  
  594.                }
  595.  
  596.           }
  597.        }
  598.  
  599.  
  600. /*----------------------------------ADD FIELD-------------------------------------*/
  601.      add_field(f1)
  602.              int f1;
  603.           { int ten;
  604.             if(f1!=1)
  605.              { clear_win(0,0,24,79,6,0,black);
  606.                gframe(5,2,11,78,0,0|30);
  607.                print(7,18,6|1,"─·╥¬╘÷╝╙╨┬╡─╫╓╢╬ú┐(Y/N):");
  608.                    printf("\033[7;43H\033[0;37;40m");
  609.                gframe(14,2,22,78,1,0|30);
  610.                if((sub1==1)&&(sub2==1)){
  611.                   print(17,8,6|1,"╩╣╙├╦╡├≈:");
  612.                   print(19,10, 6|1,"─·┐╔╥╘╝╙╚δ╥╗╕÷╩²╫╓╨═╫╓╢╬╙├└┤┤µ╖┼║ß╧≥═│╝╞╜ß╣√");
  613.                   print(20,10,6|1,"╥▓┐╔╥╘▓╗╘÷╝╙╫╓╢╬,░╤║ß╧≥═│╝╞╜ß╣√╖┼╚δ╥╗╕÷╥╤┤µ╘┌╡─╩²╫╓╨═╫╓╢╬╓╨");
  614.                   }
  615.                    ten=getcc();
  616.                           }
  617.                       else
  618.              { ten='Y';
  619.                clear_win(5,0,24,79,6,0,black);
  620.                gframe(5,2,11,78,0,0|30);
  621.                gframe(14,2,22,78,1,0|30);
  622.              }
  623.               if((ten=='Y')||(ten=='y')) {
  624.               if(f1==0)
  625.               { get_root();
  626.                root9=root1;
  627.               }
  628.               if(f1==3)
  629.               root1=root9;
  630.             root5=root1;
  631.             root1->sele='Y';
  632.               clear_win(5,4,9,76,6,0,black);
  633.               clear_win(16,4,20,76,6,0,black);
  634.               print(17,10,6|1,"─·╦∙╝╙╡─╫╓╢╬╡─╫ε┤≤│ñ╢╚╬¬ 19╬╗,╨í╩²╬╗╩²╫ε┤≤╬¬ 6╬╗");
  635.               print(18,10,6|1,"─·╝╙╡─╫╓╢╬╙ª╩╟║╧╖¿╡─,╖±╘≥╧╡═│╜½▓╗╜╙╩▄");
  636.          /*     disp_bmess(root1);*/
  637.               getmem();
  638.     l2:          print(7,20,6|1,"╫╓╢╬├√:");
  639.               printf("\033[7;31H\033[0;37;40m");
  640.               p1->sele='Y';
  641.               fflush(stdin);
  642.               scanf("%10s",p1->field);
  643.               if((p1->field[0]>='0')&&(p1->field[0]<='9'))
  644.                { printf("\007");
  645.                   goto l2;
  646.                }
  647.               if((check(root1,p1,1))==-1)
  648.                { printf("\007");
  649.                   goto l2;/*need---*check****/
  650.                 }
  651.               if((check(root,p1,1))==-1)
  652.               { printf("\007");
  653.                 goto l2;
  654.               }
  655.              p1->type='N';
  656.     l3:         print(8,10,6|1,"╫╓╢╬│ñ╢╚:");
  657.              printf("\033[8;21H\033[0;37;40m");
  658.              fflush(stdin);
  659.              scanf("%d",&ten);
  660.              if((ten>0)&&(ten<=19))
  661.                  p1->length=ten;
  662.              else { printf("\007"); goto l3;}
  663.     l4:             print(8,40,6|1,"╫╓╢╬╨í╩²╬╗╩²:");
  664.                  printf("\033[8;55H\033[0;37;40m");
  665.                  fflush(stdin);
  666.                  scanf("%d",&ten);
  667.                  if((ten>=0)&&(ten<p1->length-2)&&(ten<12))
  668.                 p1->dec=ten;
  669.                  else {printf("\007"); goto l4; }
  670.              print(9,10,6|1,"─·╚╖╨┼┬≡ú┐(Y/N):");
  671.              printf("\033[9;28H\033[0;37;40m");
  672.              if(((ten=getcc())=='N')||(ten=='n'))
  673.                 goto l2;
  674.              else
  675.                 if(root1->sstr!=NULL) {
  676.                 root1->estr->next=p1;
  677.                 p1->last=root1->estr;
  678.                 root1->estr=p1; }
  679.                   else {
  680.                    root1->sstr=p1;
  681.                    root1->estr=p1;
  682.             /*       p1->last=root1->sstr;*/ }
  683.                clear_win(5,4,9,76,6,0,black);
  684.                }/*endif*/
  685.          }
  686.  
  687.  
  688. /*------read_mean_mainkey4-----------make_link_table-----------------*/
  689.        read_key()
  690.       { int i,k;
  691.            if(root5==NULL)
  692.            { get_root();
  693.              root5=root1;
  694.             }
  695.            clear_win(1,1,24,79,6,0,black);
  696.            gframe(5,10,11,68,0,0|30);
  697.     h1:    print(7,20,6|1,"╟δ╩Σ╚δ▒╛▓┘╫≈┐Γ╡─▓╦╡Ñ╠ß╩╛├√: ");
  698.         scanf("%s",root5->mean);
  699.         root2=root;
  700.            while(root2!=NULL) {
  701.            if((strcmp(root5->mean,root2->mean))==0) {
  702.               error("╦∙╝╙▓╦╡Ñ╠ß╩╛├√▓╗─▄╙δ╥╤╙╨╡─╓╪╕┤úí");
  703.               getcc();
  704.               bottom();
  705.              goto   h1; }
  706.          root2=root2->next; }
  707.            clear_win(1,1,24,79,6,0,black);
  708.            gframe(5,10,11,68,0,0|30);
  709.     h10:    print(7,20,6|1,"╟δ╩Σ╚δ▒╛▓┘╫≈┐Γ╡─│╠╨≥├√: ");
  710.         scanf("%s",root5->dbname);
  711.         root2=root;
  712.            while(root2!=NULL) {
  713.            if((strcmp(root5->dbname,root2->dbname))==0) {
  714.               error("╦∙╝╙│╠╨≥├√▓╗─▄╙δ╥╤╙╨╡─╓╪╕┤úí");
  715.               getcc();
  716.               bottom();
  717.              goto   h10; }
  718.          root2=root2->next; }
  719.          root2=root;
  720.         p3=root5->estr;
  721.         while(root2!=NULL) {
  722.             if(root2->sele=='Y') {
  723.             p2=root2->sstr;
  724.              while(p2!=NULL) {
  725.                 if(p2->sele=='Y') {
  726.                  getmem();
  727.                  if(p3==NULL) {
  728.                      p=root5->sstr=p3=p1;
  729.                      p3->last=NULL; }
  730.                   else {
  731.                       p1->last=p3;
  732.                       p3->next=p1;
  733.                        p3=p1;}
  734.                  strcpy(p1->field,p2->field);
  735.                  p1->type=p2->type;
  736.                  p1->length=p2->length;
  737.                  p1->dec=p2->dec; }
  738.                  p2=p2->next;  } }
  739.             root2=root2->next;   }
  740.           root5->estr=p3;
  741.           root3->next=root5;
  742.           root5->last=root3;
  743.           root3=root5;
  744.           root3->sele='Y';
  745.           p2=root3->sstr;
  746. /*-------------read mainkey---------------------*/
  747.          clear_win(1,1,24,79,6,0,black);
  748.           gframe(5,2,11,78,0,0|30);
  749.           gframe(13,2,22,78,1,0|30);
  750.           for( i=0;i<4;i++) {
  751.             clear_win(7,6,8,74,6,0,black);
  752.              if(i!=0) {
  753.                 print(7,23,6|1,"╝╠╨°╩Σ╚δ╣╪╝ⁿ╫╓┬≡(Y/N)ú┐ ");
  754.             clear_win(7,6,8,74,6,0,black);
  755.                 k=getcc();
  756.                 if((k=='N')||(k=='n')) break; }
  757.             print(8,20,6|1,"╟δ╩Σ╚δ╣╪╝ⁿ╫╓%-d: ",i);
  758.     add2:          scanf("%s",root3->mainkey[i]);
  759.              while(p2!=NULL)
  760.                 if((strcmp(p2->field,root3->mainkey[i]))==0) break;
  761.                 else p2=p2->next;
  762.                if(p2==NULL) { error("╣╪╝ⁿ╫╓╙╨╬≤!");getcc(); bottom();printf("\033[8;34H");
  763.               p2=root3->sstr; goto add2;} }
  764.     }
  765.  
  766.  
  767.  
  768. /*-----------------------------ALL END -----------------------------------*/
  769.  
  770.  
  771.  
  772.