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

  1. #include <stdio.h>
  2. #include <dos.h>
  3. #include <string.h>
  4. #include <ctype.h>
  5.  
  6. #define black  0x0
  7. #define blue   0x10
  8. #define green  0x20
  9. #define cyan   0x30
  10. #define red    0x40
  11. #define white  0x70
  12.  
  13. #define PgUp 18688
  14. #define PgDn 20736
  15. #define UP   18432
  16. #define DOWN 20480
  17. #define LEFT 19200
  18. #define RIGHT 19712
  19. #define Enter 13
  20. #define Home  18176
  21. #define End   20224
  22. #define ESC   27
  23. #define Del 21248
  24. #define Ins 20992
  25.  
  26. #define  F1    15104
  27. #define  F2    15360
  28. #define  F3    15616
  29. #define  F4    15872
  30. #define  F5    16128
  31. #define  F6    16384
  32. #define  F7    16640
  33. #define  F8    16896
  34. #define  F9    17152
  35. #define  F10   17408
  36.  
  37. typedef struct PPP {              /* this is a database's structure */
  38.     char field[11];
  39.     char type;
  40.     int  length;
  41.     int  dec;
  42.        struct PPP *last;          /* poniter of the last block   */
  43.        struct PPP *next;          /* pointer of the next block   */
  44.     char sele;
  45.     char obj;
  46.     int cla;
  47.      }FIELD;
  48. extern FIELD *p,*p5;
  49.  
  50. typedef struct MM {            /*store base name*/
  51.     char mean[30];
  52.     char dbname[11];     /* the name of the database */
  53.     char mainkey[4][11];      /* mainkey of the database  */
  54.     struct PPP  *sstr;   /* point to the database's structure */
  55.     struct PPP  *estr;/* pointer for end of block of base*/
  56.     char flag;           /*if finish base 0--not finish 1--finish*/
  57.     char serve;
  58.     char path[30];
  59.     char sele;
  60.     int sort;
  61.     char join;
  62.     struct MM *last;
  63.     struct MM *next;
  64.       }BASE ;
  65. extern  BASE  *root,*root3;/* end*/
  66. extern int basecount,selecount,fselecount,linknum,link[5];
  67. extern char linkfield[5][4][11],workname[30],linktype,lan,insert;
  68. extern BASE *root2,*root1,*root4;
  69. extern FIELD *p1,*p2,*p4;
  70. extern int num[6],use;
  71. extern char *title3[];
  72. extern FIELD *NEXT(),*LAST(),*disp_field();
  73. extern FIELD *disp_f();
  74. extern int ob,sub2;
  75. extern char file[13],PATH[30];
  76. extern char condition[200],*con[6];
  77.  
  78.  tj_s()
  79.    {  FILE *fp;
  80.       char tail[4], name[13];
  81.       char gsxih[50];
  82.       int i,j,k,ll;
  83. /*-----------------------------make start-------------------------*/
  84.   if(num[5]==0)
  85.     make_file(5);
  86.  if((insert!='Y')&&(insert!='y'))
  87.       r_mean();
  88.     strcpy(file,"tj_s");
  89.     itoa(num[5],tail,10);
  90.     strcat(file,tail);
  91.     if((insert=='n')||(insert=='N'))
  92.        w_menus();
  93.     clear_win(2,3,24,76,6,0,black);
  94.     gframe(5,2,11,78,0,0|30);
  95.     print(7,5,6|1,"╢╘╫╓╖√╨═íó╚╒╞┌╨═íó┬▀╝¡╨═╫╓╢╬╙├└█╝╞▓┘╫≈┐Γ╓╨╡─╠µ╗╗┬≡ú┐(Y/N) ");
  96.     k=getcc();
  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. /*---------------------------------make_base dui--------------------------*/
  107.      clear_win(2,3,24,76,6,0,black);
  108.      gframe(5,2,11,78,0,0|30);
  109.      gframe(14,2,22,78,1,0|30);
  110.      print(4,32,6|1,"╟δ╤í╢╘╙ª└█╝╞╫╓╢╬");
  111.          print(4,5,6|1,"╣▓╙╨<%02d",0);
  112.      print(4,12,6|1,">╕÷╫╓╢╬▒╗╤í");
  113.      print(14,8,0|30,"╨┼╧ó┤░┐┌");
  114.      for(;;)
  115.          {  fselecount++;
  116.         root2=root;
  117. /*        print(1,5,0|30, "**╤í╜ß╣√┐Γ╫╓╢╬fsdfsf**");*/
  118.         while(root2!=NULL)
  119.             if(root2->sele=='Y')
  120.              break;
  121.             else
  122.             root2=root2->next;
  123.         if(root2->sele=='Y')
  124.             { p=root2->sstr;
  125.               p2=p;
  126.               p4=p2;
  127.               p1=disp_field(p2,1);
  128.               if((ll=sele_field(p2,p1,p4,1))==-1)
  129.              {fselecount--;
  130.                continue;
  131.              }
  132.               else
  133.               if(ll==2)
  134.                    break;
  135.             }
  136.          root2=root2->next;
  137.          while(root2!=NULL)
  138.              if(root2->sele=='Y')
  139.               break;
  140.              else
  141.               root2=root2->next;
  142.         if(root2->sele=='Y')
  143.               { p=root2->sstr;
  144.             p2=p;
  145.             p4=p2;
  146. start2:             p1=disp_field(p2,1);
  147.             if((sele_field(p2,p1,p4,1))==-1)
  148.                    goto start2;
  149.                }
  150.          }
  151. /*-------------------------------gene promgram---------------------------*/
  152.      strcpy(name,file);
  153.      strcat(name,".prg");
  154.      if((fp=fopen(name,"w"))==NULL)
  155.      { error("don't open file!");
  156.        exit(0);
  157.      }
  158.      fprintf(fp,"set echo off\nset talk off\nset safe off\n");
  159.     if((lan=='Y')||(lan=='y'))
  160.     fprintf(fp,"set excl off\n");
  161.      else
  162.     fprintf(fp, "set excl on\n");
  163.      fprintf(fp,"close all\nsele a\n");
  164.      root2=root;
  165.      while(root2!=NULL)
  166.       if(root2->sort==10)
  167.         break;
  168.       else
  169.            root2=root2->next;
  170.       root4=root2;
  171.      if(root2->join=='Y')
  172.            fprintf(fp,"if .not.file('%s\\%s.dbf')\nclear\n@12,10 say \"╬─╝■╗╣▓╗┤µ╘┌,─·╙ª╧╚╘╦╨╨▒≡╡─│╠╨≥,▓·╔·┤╦┐Γúí\" \nreturn\nendif\n",root2->path,root2->dbname);
  173.      fprintf(fp,"use %s\\%s ",root2->path,root2->dbname);
  174.     if(root2->serve!='Y')
  175.         fprintf(fp," excl \n");
  176.       else
  177.            fprintf(fp," \n");
  178.  
  179. /*-----------------------------------lock---------------------------------*/
  180.       if(((lan=='y')||(lan=='Y'))&&(root2->serve=='Y'))
  181.      {  fprintf(fp,"do while .T.\ntime=0\ndo while .not.flock().and.time<250\n");
  182.         fprintf(fp,"time=time+1\nenddo\nif time<250\n");
  183.     }
  184. /*-----------------------------endlock------------------------------------*/
  185.       fprintf(fp,"copy to tj_sult.dbf\n");
  186. /*-------------------------unlock----------------------------------------*/
  187.       if(((lan=='y')||(lan=='Y'))&&(root2->serve=='Y'))
  188.       {   fprintf(fp,"unlock\nexit\nelse\nyes=' '\nclear\n@12,10 say \"╬─╝■╥╤▒╗╞Σ╦√╙├╗º,╝╠╨°╝╙╦°┬≡ú┐(Y/N)\" get  yes\n");
  189.           fprintf(fp,"read\nclear\nif yes='N'.or.yes='n'\n@15,10 say \"╟δ╣²╥╗╗ß╢∙╘┘╙├\" \nwait\n");
  190.           fprintf(fp,"return\nendif\nendif\nenddo\n");
  191.       }
  192. /*----------------------------end unlock cance---------------------------*/
  193.       fprintf(fp,"use tj_sult excl\n");
  194.       fprintf(fp,"newn=0\ngo bott\noldn=recno()\nset uniq on \n");
  195.       fprintf(fp," index on ");
  196.       for(i=0;i<link[0];i++)
  197.      if(i==0)
  198.          fprintf(fp,"%s",linkfield[0][i]);
  199.      else
  200.          fprintf(fp,"+%s",linkfield[0][i]);
  201.       fprintf(fp," to ll \n");
  202.       fprintf(fp,"dele all\nset uniq off\n set index to \n go top\ndo while .not.eof()\n");
  203.       fprintf(fp,"if delete()\n newn=newn+1\nendif\nskip\nenddo\nif newn<oldn\n clear\nyes='Y'\nset color to gr+/r\n");
  204.       fprintf(fp,"@ 12,10 say \"└█╝╞╜ß╣√┐Γ╡─╣╪╝ⁿ▒φ┤∩╩╜▓╗╬¿╥╗,╔╛│²╢α╙α╡─╝╟┬╝┬≡ú┐(Y/N) \" get yes\nread\nset color to w/ \n");
  205.       fprintf(fp,"if yes='y'.or.yes='Y'\ngo top\ndo while .not.eof()\nif.not.delete()\ndele\n");
  206.       fprintf(fp,"else\n recall\nendif\nskip\n enddo\npack\n*else\n*recall all\n*close all\n");
  207.       fprintf(fp,"*! c:brow c:tj_sult.dbf \n*return\n");
  208.       fprintf(fp,"endif\n endif\n recall\nindex on ");
  209.       for(i=0;i<link[0];i++)
  210.       if(i==0)
  211.         fprintf(fp,"%s",linkfield[0][i]);
  212.       else
  213.            fprintf(fp,"+%s",linkfield[0][i]);
  214.       fprintf(fp," to ll\n");
  215.       root2=root;
  216.       while(root2!=NULL)
  217.       if(root2->sort==1)
  218.         break;
  219.       else
  220.            root2=root2->next;
  221.     root1=root2;
  222.     if(root1->join=='Y')
  223.            fprintf(fp,"if .not.file(%s\\%s.dbf)\nclear\n@12,10 say \"╬─╝■╗╣▓╗┤µ╘┌,─·╙ª╧╚╘╦╨╨▒≡╡─│╠╨≥,▓·╔·┤╦┐Γúí\" \nreturn\nendfi\n",root1->path,root1->dbname);
  224.        fprintf(fp,"sele 2\nuse %s\\%s\nset relation to  ",root1->path,root1->dbname);
  225.        for(i=0;i<link[0];i++)
  226.       if(i==0)
  227.         fprintf(fp,"%s",linkfield[0][i]);
  228.       else
  229.            fprintf(fp,"+%s",linkfield[0][i]);
  230.        fprintf(fp," into A\ngo top\ndo while .not.eof()\nsele 1\nif .not.eof()\n");
  231.        p1=root1->sstr;
  232.        p4=root4->sstr;
  233.        p2=p1;
  234.        j=0;
  235.        while(p2!=NULL)
  236.        { if(p2->cla>0)
  237.         j++;
  238.           p2=p2->next;
  239.        }
  240.  
  241.        for(i=1;i<=j;i++)
  242.        {  p1=root1->sstr;
  243.           p4=root4->sstr;
  244.           while(p4!=NULL)
  245.           if(p4->cla==i)
  246.             { if(p4->type=='N')
  247.                   fprintf(fp,"repl %s with %s+",p4->field,p4->field);
  248.               else
  249.                    fprintf(fp,"repl %s with ",p4->field);
  250.               break;
  251.             }
  252.           else
  253.              p4=p4->next;
  254.           while(p1!=NULL)
  255.           if(p1->cla==i)
  256.              { if(p1->type=='N')
  257.                   fprintf(fp,"b->%s\n",p1->field);
  258.                 else
  259.                 if((k=='Y')||(k=='y'))
  260.                     fprintf(fp,"b->%s\n",p1->field);
  261.                 else
  262.                        fprintf(fp," %s\n",p1->field);
  263.                break;
  264.              }
  265.           else
  266.                p1=p1->next;
  267.        }
  268.  
  269.        fprintf(fp,"else\nappen blank\n");
  270.        for(i=1;i<=j;i++)
  271.        {  p1=root1->sstr;
  272.           p4=root4->sstr;
  273.           while(p4!=NULL)
  274.           if(p4->cla==i)
  275.             { if(p4->type=='N')
  276.                   fprintf(fp,"repl %s with %s+",p4->field,p4->field);
  277.               else
  278.                   fprintf(fp,"repl %s with ",p4->field);
  279.               break;
  280.             }
  281.           else
  282.              p4=p4->next;
  283.           while(p1!=NULL)
  284.           if(p1->cla==i)
  285.              { if(p1->type=='N')
  286.                   fprintf(fp,"b->%s\n",p1->field);
  287.                 else
  288.                   if((k=='Y')||(k=='y'))
  289.                        fprintf(fp," b->%s\n",p1->field);
  290.                   else
  291.                       fprintf(fp," %s\n",p1->field);
  292.                break;
  293.              }
  294.           else
  295.                p1=p1->next;
  296.        }
  297.     fprintf(fp,"endif\nsele 2\nskip\nenddo\nsele 1\nrecall all\nclose all\n! c:brow c:tj_sult.dbf\n");
  298. /*------------------------------end of gene body-------------------------*/
  299.          fprintf(fp,"\nclear\n");
  300.          fprintf(fp,"ser='Y'\n @10,10 say \"┤╦┤╬└█╝╞╙╨╨º┬≡ú┐(Y/N) \" get ser\n read\n");
  301.          fprintf(fp,"if ser='Y'.or.ser='y' \n");
  302.         if(((lan=='Y')||(lan=='y'))&&(root4->serve=='Y'))
  303.          {
  304.           fprintf(fp,"do while .T.\ntime=0\ndo while .not.flock().and.time<250\n");
  305.           fprintf(fp,"time=time+1\nenddo\nif time<250\n");
  306.           }
  307.          fprintf(fp,"!copy c:tj_sult.dbf %s\\%s.dbf >zl\n",root4->path,root4->dbname);
  308.          if(((lan=='y')||(lan=='Y'))&&(root4->serve=='Y'))
  309.           {         fprintf(fp,"unlock\nexit\nelse\nyes=' '\nclear\n@12,10 say \"╬─╝■╥╤▒╗╞Σ╦√╙├╗º,╝╠╨°╝╙╦°┬≡ú┐(Y/N)\" get  yes\n");
  310.          fprintf(fp,"read\nclear\nif yes='N'.or.yes='n'\n@15,10 say \"╟δ╣²╥╗╗ß╢∙╘┘╙├\" \nwait\n");
  311.          fprintf(fp,"return\nendif\nendif\nenddo\n");
  312.           }
  313.          fprintf(fp,"clear\nendif\n");
  314.          fprintf(fp,"!copy c:tj_sult.dbf c:%sj.dbf >zl\n",file);
  315.          fprintf(fp,"ser='N'\nclear\n@ 12,10 say \"─·╥¬▒╕╖▌└█╝╞╜ß╣√┐Γ┬≡ú┐(Y/N) \" get ser\nread\n");
  316.          fprintf(fp,"if ser='Y'.or.ser='y'\nser=space(30)\n@12,10 say \"╟δ╩Σ╚δ─┐┬╝╝░╬─╝■├√:\"  get ser\nread\n");
  317.          fprintf(fp,"!copy c:tj_sult.dbf &ser >zl\n");
  318.          clear_win(14,4,20,75,6,0,black);
  319.          printf("\033[17;20H┤╦═│╝╞╜ß╣√╥¬╣▓╧φ┬≡ú┐(Y/N)");
  320.          k=getcc();
  321.          if((k=='Y')||(k=='y'))
  322.             { print(19,10,6|1,"╩Σ╚δ╣▓╧φ─┐┬╝╝░╬─╝■├√:  ");
  323.                       scanf("%s",gsxih);
  324.               fprintf(fp,"!copy c:tj_sult.dbf %s >zl\n",gsxih);
  325.             }
  326.          fprintf(fp,"!del c:tj_sult.dbf\n");
  327.          fclose(fp);
  328.         num[5]++;
  329.  
  330.       }
  331.  
  332. /*-------------------------WRITE STATIS.TXT -------------------------*/
  333.   w_menus() {
  334.   FILE *fp;
  335.      if((fp=fopen("statis5.txt","a"))==NULL) {
  336.      error("don't open file statis.txt");
  337.       exit(1); }
  338.    fprintf(fp,"#%s#,#%s#\n",workname,file);
  339.     fclose(fp);  }
  340.  
  341. /*----------------------------END ALL------------------------------------*/