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

  1. /*    */
  2. #include <stdio.h>
  3. #define pr(x) fprintf(fp,x)
  4. typedef struct bb{
  5.          char MEAN[21],DB[9],KEY[4][11],COFLAG,COPATH[11];
  6.          int no;
  7.          struct bb *next;
  8.         }BASE;
  9. typedef struct cc {
  10.          char field[128][11],ftype[128];
  11.          int len1[128];
  12.                  int NN;
  13.          int no;
  14.          struct cc *next;
  15.            }CONTENT;
  16. typedef struct ll {
  17.             int  MAR[6][128];
  18.             int  no;
  19.             struct ll *next;
  20.             }LINK;
  21. extern LINK *flink;
  22. extern BASE *fbase;
  23. extern CONTENT *fcon;
  24. extern char *explain;
  25. extern int NB,I;
  26. get_fc(int *s)
  27. {  int i,n=0;
  28.    int c,cc;
  29.    int row,col,cl,m,con=1,j,k;
  30.    FILE *fp;
  31.    BASE *mybase;
  32.    CONTENT *mycon;
  33.  
  34.    clear_win(0,0,24,79,0x70)    ;
  35.    I=0;
  36.    fp=fopen("creat\\meno1.txt","w");
  37.    i=0;
  38.    judge(0,s[i]);
  39.    n=in_c(s,&i);
  40.    cursor(14,0);
  41.    for (m=1;m<80;m++) putchar('-');
  42.    clear_win(15,0,23,79,43);
  43.    color_puts("╫Θ║╧╠⌡╝■╚τ╧┬ ",11,15,10);
  44.    color_puts(" ",10,15,10);
  45.    row=16;
  46.    col=2;
  47.    m=1;
  48.    cursor(row,col);
  49.    mybase=fbase;
  50.    mycon=fcon;
  51.    while (mybase->no!=(s[i]-1)) mybase=mybase->next;
  52.    while (mycon->no!=s[i]-1) mycon=mycon->next;
  53. /*   while(mybase->no!=(s[i]-1))
  54.     {
  55.      mybase=mybase->next;
  56.      mycon=mycon->next;
  57.     }                  */
  58.    printf("%d. %s ",m,mycon->field[n-1]);
  59.    fprintf(fp,"#%s#%s#%c#%d",mycon->field[n-1],mybase->DB,mycon->ftype[n-1],mycon->len1[n-1]);
  60.    while (con!=0)
  61.      {
  62.      color_puts("╠⌡╝■╣╪╧╡░ⁿ└¿: 1_.AND. 2_.OR. 3_.NOT. 4_.AND..NOT. 5_.OR..NOT.  ╟δ╤í╘±(0╜ß╩°):",11,22,0);
  63.      con=get((long)0,(long)5,22,77);
  64.      while (con<0 || con>5) con=get((long)0,(long)5,22,77);
  65.      color_puts(" ",10,22,10);
  66.      col+=12;
  67.      cursor(row,col);
  68.      switch (con)
  69.        {   case 1 : printf(".AND.");
  70.             col+=5;
  71.             fprintf(fp,"#.AND.");
  72.             break;
  73.            case 2 : printf(".OR.");
  74.             col+=4;
  75.             fprintf(fp,"#.OR.");
  76.             break;
  77.            case 3 : printf(".NOT.");
  78.             col+=5;
  79.             fprintf(fp,"#.NOT.");
  80.             break;
  81.            case 4 : printf(".AND..NOT.");
  82.             col+=10;
  83.             fprintf(fp,"#.AND..NOT.");
  84.             break;
  85.            case 5 : printf(".OR..NOT.");
  86.             col+=9;
  87.             fprintf(fp,"#.OR..NOT.");
  88.             break;
  89.            case 0 : row++;
  90.             col=2;
  91.             cursor(22,0);
  92.             printf("                                                                               ");
  93.             fprintf(fp,"#\n#####\n");  continue;
  94.             break;
  95.        }
  96.    if (con!=0)   n=in_c(s,&i);
  97.    mybase=fbase;
  98.    mycon=fcon;
  99.    while (mybase->no!=(s[i]-1)) mybase=mybase->next;
  100.    while (mycon->no!=s[i]-1) mycon=mycon->next;
  101. /*   while(mybase->no!=(s[i]-1))
  102.       {
  103.       mybase=mybase->next;
  104.       mycon=mycon->next;
  105.       }*/
  106.    if (col<10) cursor(row,col+2);
  107.    else cursor(row,col);
  108.    printf(" %s ",mycon->field[n-1]);
  109.    fprintf(fp,"#%s#%s#%c#%d",mycon->field[n-1],mybase->DB,mycon->ftype[n-1],mycon->len1[n-1]);
  110.    }
  111.    fclose(fp);
  112. }
  113.  
  114.  
  115.  
  116.  
  117.  
  118.  
  119.  
  120. /* ╩Σ╚δ╠⌡╝■*/
  121. getcondition(ii)
  122. int *ii;
  123. {int cc;
  124.  char dd;
  125.  
  126.  clear_win(0,0,24,79,0x70)    ;
  127.    for(;;)
  128.      {
  129.  
  130.       clear_win(0,0,24,80,0x70)    ;
  131.       color_puts(explain,90,2,3);
  132.       clear_win(10,17,19,52,0)    ;
  133.       clear_win(9,15,18,50,0x10)    ;
  134.       color_puts("=====╟δ╠⌡╝■╩Σ╚δ╖╜╩╜  [   ] =======",30,10,16);
  135.       color_puts("1.  ╣╠ ╢¿ ╠⌡ ╝■",30,12,23)    ;
  136.       color_puts("2.  ╫Θ ║╧ ╠⌡ ╝■",30,13,23)    ;
  137.       color_puts("3.  ╚╬ ╥Γ ╠⌡ ╝■",30,14,23)    ;
  138.       color_puts("0.  ═╦ │÷ ",30,15,23)    ;
  139.       color_puts("==================================",30,17,16);
  140.       cc=get((long)0,(long)3,10,38);
  141.       color_puts("─π─▄╚╖╚╧┬≡? (Y/N) [ ]",30,21,20);
  142.       cursor(21,39);
  143.       fflush(stdin)    ;
  144.       scanf("%c",&dd);
  145.       if(dd=='y'||dd=='Y')
  146.       break;
  147.     }
  148.     *ii=cc;
  149. }
  150. /*╣╠╢¿╠⌡╝■*/
  151.  
  152. get_dc(s)
  153. int *s;
  154. {  int i,n=0,N=0,mark;
  155.    int c;
  156.    char ss[256]="#",dd[120]="#",tt[10],str1[11],str2[9],sh[10];
  157.    int row,col,cl,m1,m2,con=1,j,k,k1,k2,kk;
  158.    FILE *fp;
  159.    BASE *mybase;
  160.    CONTENT *mycon;
  161.    i=0;
  162.    I=0;
  163.    clear_win(0,0,24,79,0x70)    ;
  164.    fp=fopen("creat\\meno2.txt","w");
  165.    judge(0,s[i]);
  166.    n=in_c(s,&i);
  167.    col=1;
  168.    cursor(19,col);
  169.    mybase=fbase;
  170.    mycon=fcon;
  171.    while (mybase->no!=(s[i]-1)) mybase=mybase->next;
  172.    while (mycon->no!=s[i]-1) mycon=mycon->next;
  173. /*   while(mybase->no!=(s[i]-1))
  174.       {
  175.         mybase=mybase->next;
  176.         mycon=mycon->next;
  177.       }*/
  178.    printf("%s",mycon->field[n-1]);
  179.    strcat(ss,mycon->field[n-1]);
  180.    strcat(dd,mybase->DB);
  181.    strcat(dd,"#");
  182.    tt[N++]=mycon->ftype[n-1];
  183.    while (con!=0)
  184.      {
  185.     color_puts("╠⌡╝■╣╪╧╡░ⁿ└¿: 1_.AND. 2_.OR. 3_.NOT. 4_.AND..NOT. 5_.OR..NOT.  ╟δ╤í╘±(0╜ß╩°):",11,22,0);
  186.     con=get((long)0,(long)5,22,77);
  187.     while (con<0 || con>5) con=get((long)0,(long)5,22,77);
  188.     color_puts(" ",10,22,0);
  189.     col+=12;
  190.     cursor(19,col);
  191.     switch (con)
  192.       {   case 1 : printf(".AND.");
  193.                col+=5;
  194.                strcat(ss,"#.AND.#");
  195.                break;
  196.           case 2 : printf(".OR.");
  197.                col+=4;
  198.                strcat(ss,"#.OR.#");
  199.                break;
  200.           case 3 : printf(".NOT.");
  201.                col+=5;
  202.                strcat(ss,"#.NOT.#");
  203.                break;
  204.           case 4 : printf(".AND..NOT.");
  205.                col+=10;
  206.                strcat(ss,"#.AND..NOT.#");
  207.                break;
  208.           case 5 : printf(".OR..NOT.");
  209.                col+=9;
  210.                strcat(ss,"#.OR..NOT.#");
  211.                break;
  212.           case 0 : strcat(ss,"#");
  213.                tt[N]='\0';
  214.                clear_win(0,0,24,79,0x70)    ;
  215.                color_puts(explain,14,0,1);
  216.                clear_win(8,4,20,68,0)    ;
  217.                clear_win(7,2,19,66,0x10)    ;
  218.                color_puts("─·╢¿╥σ╡─╠⌡╝■╬¬:",11,5,5);
  219.                color_puts(ss,10,5,20,3);
  220.                color_puts("╠⌡╝■╡─╛▀╠σ╓╡",11,5,45);
  221.                row=9;
  222.                m1=1;
  223.                m2=1;
  224.                j=0;
  225.                while (ss[m1]!='\0')
  226.              {
  227.                  k1=0;
  228.                  k2=0;
  229.                  while (ss[m1]!='#') str1[k1++]=ss[m1++];
  230.                  str1[k1]='\0';
  231.                  while (dd[m2]!='#') str2[k2++]=dd[m2++];
  232.                  str2[k2]='\0';
  233.                  color_puts(str1,10,row,3);
  234.                  fprintf(fp,"%s->%s",str2,str1);
  235.                  cursor(row,13);
  236.                  mark=0;
  237.                  k=0;
  238.                  switch (tt[j++])
  239.                    {   case 'C' :
  240.                    case 'L' : printf(" = ");
  241.                           pr("='");
  242.                           scanf("%s",sh)    ;
  243.                           fprintf(fp,"%s'",sh);
  244.                           break;
  245.                    case 'N' : color_puts(" >           =           <           ",10|64,row,13);
  246.                           cursor(row,15);
  247.                           while ((c=getchar())!='\n')
  248.                         {  if (k==0) pr(">");
  249.                            k=1;
  250.                            mark=1;
  251.                            fprintf(fp,"%c",c);
  252.                         }
  253.                           k=0;
  254.                           cursor(row,27);
  255.                           while ((c=getchar())!='\n')
  256.                         {  if (mark&&k==0) fprintf(fp,".AND.%s->%s=",str2,str1);
  257.                            else if (k==0) pr("=");
  258.                            fprintf(fp,"%c",c);
  259.                            k=1;
  260.                            mark=1;
  261.                         }
  262.                           k=0;
  263.                           cursor(row,39);
  264.                           while ((c=getchar())!='\n')
  265.                         {  if (mark&&k==0) fprintf(fp,".AND.%s->%s<",str2,str1);
  266.                            else if (k==0) pr("<");
  267.                            fprintf(fp,"%c",c);
  268.                            k=1;
  269.                         }
  270.                           break;
  271.                    case 'D' :
  272.                           k=0;mark=0;kk=0;
  273.                           printf(" >  /  /  ");
  274.                           c=get1(1,12,row,15);
  275.                           if(c!=0)
  276.                           { fprintf(fp,">ctod('%d",c);
  277.                         k=1;}
  278.                           if(k==1)
  279.                           {
  280.                           c=get1(1,31,row,18);
  281.                           fprintf(fp,"/%d",c);
  282.                           c=get1(0,99,row,21);
  283.                           fprintf(fp,"/%d')",c);
  284.                            }
  285.                           cursor(row,25);
  286.                           printf(" =  /  /  ");
  287.                           c=get1(1,12,row,27);
  288.                                               if(c!=0)
  289.                           {
  290.                            if(k==1)
  291.                         {
  292.                          pr(".AND.");
  293.                          k=0;
  294.                         }
  295.                         fprintf(fp,">ctod('%d",c);
  296.                         mark=1;
  297.                            }
  298.                           if(mark==1)
  299.                           {
  300.                           c=get1(1,31,row,30);
  301.                          fprintf(fp,"/%d",c);
  302.                           c=get1(0,99,row,33);
  303.                          fprintf(fp,"/%d')",c);
  304.                            }
  305.                           cursor(row,37);
  306.                           printf(" <  /  /  ");
  307.                           c=get1(1,12,row,39);
  308.                           if(c!=0)
  309.                         {
  310.                          kk=1;
  311.                          if(k==1||mark==1)
  312.                             pr(".AND.");
  313.                          fprintf(fp,"<ctod('%d",c);
  314.                          }
  315.                           if(kk==1)
  316.                           {
  317.                           c=get1(1,31,row,42);
  318.                          fprintf(fp,"/%d",c);
  319.                           c=get1(0,99,row,45);
  320.                          fprintf(fp,"/%d')",c);
  321.                            }
  322.                           break;
  323.                    }
  324.                  row++;
  325.                  m1++;
  326.                  while (ss[m1]!='#'&&ss[m1]!='\0') fprintf(fp,"%c",ss[m1++]);
  327.                  m1++;
  328.                  m2++;
  329.              }
  330.                pr("\n");
  331.                fprintf(fp,"#####\n");
  332.                fclose(fp);continue;
  333.                break;
  334.       }
  335.     if (con!=0) n=in_c(s,&i);
  336.     cursor(19,col);
  337.     mybase=fbase;
  338.     mycon=fcon;
  339.     while (mybase->no!=(s[i]-1)) mybase=mybase->next;
  340.     while (mycon->no!=s[i]-1) mycon=mycon->next;
  341. /*    while(mybase->no!=(s[i]-1))
  342.       {
  343.         mybase=mybase->next;
  344.         mycon=mycon->next;
  345.       }*/
  346.     printf("%s",mycon->field[n-1]);
  347.     strcat(ss,mycon->field[n-1]);
  348.     strcat(dd,mybase->DB);
  349.     strcat(dd,"#");
  350.     tt[N++]=mycon->ftype[n-1];
  351.      }
  352.      fclose(fp);
  353. }
  354.  
  355.  
  356.  
  357.  
  358. mcon(fp,buff)
  359. char buff[];
  360. FILE *fp;
  361. {  char fd[120][10],db[14][20],ft[14],cc[14][10];
  362.    int ii,ll,jj,kk,row,col,m,n,fl[14];
  363.           for(ii=0;ii<14;ii++)
  364.           fl[ii]=0;
  365.            ii=0;jj=1;kk=0;
  366.            for(;;)
  367.         { while(buff[jj]!='#') fd[ii][kk++]=buff[jj++];
  368.            fd[ii][kk]='\0';
  369.            kk=0;jj++;
  370.            while(buff[jj]!='#') db[ii][kk++]=buff[jj++];
  371.            db[ii][kk]='\0'; kk=0;jj++;
  372.            ft[ii]=buff[jj++];
  373.            jj++;
  374.            while(buff[jj]!='#') fl[ii]=fl[ii]*10+(buff[jj++]-'0');
  375.            jj++;
  376.            if(buff[jj]=='\n')
  377.              break;
  378.            while(buff[jj]!='#') cc[ii][kk++]=buff[jj++];
  379.            cc[ii++][kk]='\0'; kk=0; jj++;
  380.           }
  381.         pr("set confirm off\nset color to w+/B\n");
  382.         pr("@2,2 say '╫Θ║╧╠⌡╝■╚τ╧┬:");
  383.         for(ll=0;ll<ii;ll++)
  384.           fprintf(fp,"%s%s",fd[ll],cc[ll]);
  385.         fprintf(fp,"%s'\n",fd[ll]);
  386.          pr("condition=''\n");
  387.              row=5;col=5;
  388.          for(ll=0;ll<=ii;ll++)
  389.            { fprintf(fp,"value=space(%d)\n",fl[ll]);
  390.          switch(ft[ll])
  391.           { case 'C':
  392.             case 'L':
  393.               if(row>18)
  394.               pr("@5,0 clear to 21,79\n");
  395.               fprintf(fp,"@%d,%d say '%s='get value\n",row,col,fd[ll]);
  396.               pr("read\n");
  397.               pr("if len(trim(value))<>0\n");
  398.               if(ll!=0)
  399.               fprintf(fp,"condition=condition+'%s'\n",cc[ll-1]);
  400.               fprintf(fp,"condition=condition+'%s->%s'+'='+\"'\"+value+\"'\"\n",db[ll],fd[ll]);    pr("endif\n");
  401.               row+=2;
  402.               break;
  403.             case 'N':
  404.                       if(row>18)
  405.               pr("@5,0 clear to 24,79\n");
  406.               pr("r=.f.\nrr=.f.\n");
  407.                       fprintf(fp,"@%d,%d say '%s>' get value\n",row,col,fd[ll]);
  408.               pr("read\nif len(trim(value))<>0\n");
  409.               if(ll!=0)
  410.               fprintf(fp,"condition=condition+'%s'\n",cc[ll-1]);
  411.               pr("condition=condition+'('\n");
  412.               fprintf(fp,"condition=condition+'%s->%s>'+value\nr=.t.\nendif\n",db[ll],fd[ll]);
  413.                       fprintf(fp,"value=space(%d)\n",fl[ll]);
  414.               fprintf(fp,"@%d,%d say '%s=' get value\n",row+1,col,fd[ll]);
  415.               pr("read\nif len(trim(value))<>0\n");
  416.               pr("if r\ncondition=condition+'.OR.'\n");
  417.               if(ll!=0)
  418.               fprintf(fp,"else\ncondition=condition+'%s'\n",cc[ll-1]);
  419.               fprintf(fp,"endif\ncondition=condition+'('\n");
  420.               fprintf(fp,"condition=condition+'%s->%s='+value\nendif\n",db[ll],fd[ll]);
  421.                       fprintf(fp,"value=space(%d)\n",fl[ll]);
  422.               fprintf(fp,"@%d,%d say '%s<' get value\n",row+2,col,fd[ll]);
  423.               pr("read\nif len(trim(value))<>0\n");
  424.               pr("if r\ncondition= condition+'.AND.'\n");
  425.               pr("else\nif rr\ncondition=condition+'.OR.'\n");
  426.                       if(ll!=0)
  427.               fprintf(fp,"else\ncondition=condition+'%s'\n",cc[ll-1]);
  428.               fprintf(fp,"endif\nendif\ncondition=condition+'('\n");
  429.               fprintf(fp,"condition=condition+'%s->%s<'+value\nendif\n",db[ll],fd[ll]);
  430.               row=row+4;
  431.               pr("condition=condition+')'\n");
  432.               break;
  433.            case 'D':
  434.               if(row>18)
  435.               pr("set color to W+/b\nclear\nset color to W+/B\n");
  436.               col=col+5;
  437.               fprintf(fp,"@%d,%d say '%s'\n",row,col,fd[ll]);
  438.               row++;
  439.               pr("r=.f.\n");
  440.               pr("value='  '\n");
  441.               fprintf(fp,"@%d,%d say '>  /  /' \n",row,col);
  442.               fprintf(fp,"@%d,%d get value\n",row,col+1);
  443.               pr("read\n");
  444.               pr("if len(trim(value))<>0\n");
  445.               pr("date=trim(value)\n");
  446.               pr("value='  '\n");
  447.               fprintf(fp,"@%d,%d get value\n",row,col+4);
  448.               pr("read\n");
  449.               pr("date=date+'/'+trim(value)\n");
  450.               pr("value='  '\n");
  451.               fprintf(fp,"@%d,%d get value\n",row,col+7);
  452.               pr("read\n");
  453.               pr("date=date+'/'+trim(value)\n");
  454.               pr("value='ctod('+'\"'+date+'\"'+')'\n");
  455.               if(ll!=0)
  456.               fprintf(fp,"condition=condition+'%s'\n",cc[ll-1]);
  457.               fprintf(fp,"condition=condition+'%s->%s>'+value\nr=.t.\nendif\n",db[ll],fd[ll]);
  458.                       pr("value='  '\n");
  459.               fprintf(fp,"@%d,%d say '=  /  /' \n",row+1,col);
  460.               fprintf(fp,"@%d,%d get value\n",row+1,col+1);
  461.               pr("read\n");
  462.               pr("if len(trim(value))<>0\n");
  463.               pr("date=trim(value)\n");
  464.               pr("value='  '\n");
  465.               fprintf(fp,"@%d,%d get value\n",row+1,col+4);
  466.               pr("read\n");
  467.               pr("date=date+'/'+trim(value)\n");
  468.               pr("value='  '\n");
  469.               fprintf(fp,"@%d,%d get value\n",row+1,col+7);
  470.               pr("read\n");
  471.               pr("date=date+'/'+trim(value)\n");
  472.               pr("value='ctod('+'\"'+date+'\"'+')'\n");
  473.               pr("if r\ncondition=condition+'.AND.'\n");
  474.               if(ll!=0)
  475.               fprintf(fp,"else\ncondition=condition+'%s'\nr=.t.\n",cc[ll-1]);
  476.               fprintf(fp,"endif\ncondition=condition+'%s->%s='+value\nendif\n",db[ll],fd[ll]);
  477.                       pr("value='  '\n");
  478.               fprintf(fp,"@%d,%d say '<  /  /' \n",row+2,col);
  479.               fprintf(fp,"@%d,%d get value\n",row+2,col+1);
  480.               pr("read\n");
  481.               pr("if len(trim(value))<>0\n");
  482.               pr("date=trim(value)\n");
  483.               pr("value='  '\n");
  484.               fprintf(fp,"@%d,%d get value\n",row+2,col+4);
  485.               pr("read\n");
  486.               pr("date=date+'/'+trim(value)\n");
  487.               pr("value='  '\n");
  488.               fprintf(fp,"@%d,%d get value\n",row+2,col+7);
  489.               pr("read\n");
  490.               pr("date=date+'/'+value\n");
  491.               pr("value='ctod('+'\"'+date+'\"'+')'\n");
  492.               pr("if r\ncondition= condition+'.AND.'\n");
  493.                       if(ll!=0)
  494.               fprintf(fp,"endif\ncondition=condition+'('\n");
  495.               fprintf(fp,"condition=condition+'%s->%s<'+value\nendif\n",db[ll],fd[ll]);
  496.               row=row+4;
  497.               break;
  498.           }
  499.         }
  500. }
  501.  
  502.  
  503.  
  504.  
  505. rcon(int k,int j,int *s,FILE *fp)
  506. { int row,col,l,ll;
  507.   CONTENT *mycon;
  508.   BASE *mybase;
  509.     pr("ccs=.t.\n");
  510.     pr("cb=1\n");
  511.     pr("do while ccs\n");
  512.     pr("do case\n");
  513.     for(l=1;l<=j;l++)
  514.       { fprintf(fp,"case cb=%d\n",l);
  515.     pr("select 10\n");
  516.     pr("name='s'\n");
  517.     mybase=fbase;
  518.     mycon=fcon;
  519.     while (mybase->no!=(s[l-1]-1)) mybase=mybase->next;
  520.     while (mycon->no!=s[l-1]-1) mycon=mycon->next;
  521. /*    while(mybase->no!=(s[l-1]-1))
  522.       {
  523.         mybase=mybase->next;
  524.         mycon=mycon->next;
  525.       }*/
  526.     fprintf(fp,"name=name+'%s'\n",mybase->DB);
  527.     pr("use &name\n");
  528.     if(mycon->NN>68)
  529.       { pr("set color to W+/b\nclear\nset color to W+/B\n");
  530.         pr("cf=1\n");
  531.         pr("cc=.t.\n");
  532.         pr("do while cc\n");
  533.         pr("renu=0\n");
  534.         pr("do case\n");
  535.         pr("case cf=1\n");
  536.         row=5; col=5;
  537.         for(ll=0;ll<68;ll++)
  538.           {
  539.         fprintf(fp,"@%d,%d say '%2d.%s'\n",row,col,ll+1,mycon->field[ll]);
  540.         if(col==65) { row++;col=5;}
  541.         else col+=20;
  542.           }
  543.         pr("skeyboar='  '\nset color to w+/b\n");
  544.         pr("@22,0 say '╩╣╙├ PgUp,PgDn ╤í╘±▓┘╫≈┐Γ,íⁿ/í² ╤í╘±▒╛┐Γ╞Σ╙α╫╓╢╬'\n");
  545.         pr("@23,0 say '╗≥╤í╘±╫╓╢╬(1--68)╫≈╬¬╠⌡╝■╫╓╢╬'\n");
  546.         pr("read\nset color to W+/b\n");
  547.         pr("i=readkey()\n");
  548.         pr("do case\n");
  549.         pr("case i=6 .or. i=7\n");
  550.         pr("ccs=.f.\n");
  551.         pr("cc=.f.\n");
  552.         pr("if i=7\n");
  553.         pr("cb=cb+1\n");
  554.         fprintf(fp,"if cb>%d\n",j);
  555.         pr("cb=1\n");
  556.         pr("endif\n");
  557.         pr("else\n");
  558.         pr("cb=cb-1\n");
  559.         pr("if cb=0\n");
  560.         pr("cb=1\n");
  561.         pr("endif\n");
  562.         pr("endif\n");
  563.         pr("case i=5 .or. i=4\n");
  564.         pr("cf=2\n");
  565.         pr("case skeyboar>'0' .or. skeyboar<'69'\n");
  566.         pr("renu=val(skeyboar)\n");
  567.         pr("cc=.f.\n");
  568.         pr("endcase\n");
  569.         pr("case cf=2\n");
  570.         pr("set color to W+/b\nclear\nset color to W+/B\n");
  571.         row=5;col=5;
  572.         for(ll=68;ll<mycon->NN;ll++)
  573.           { fprintf(fp,"@%d,%d say '%3d.%s'\n",row,col,ll+1,mycon->field[ll]);
  574.         if(col==65) { row++;col=5;}
  575.         else col+=20;
  576.           }
  577.         pr("skeyboar='  '\nset color to w+/b\n");
  578.         pr("@22,0 say '╩╣╙├ PgUp,PgDn ╤í╘±▓┘╫≈┐Γ'\n");
  579.         fprintf(fp,"@23,0 say '╗≥╤í╘±╫╓╢╬ (68--%d) ╫≈╬¬╠⌡╝■╫╓╢╬ ' get skeyboar\n",mycon->NN);
  580.         pr("read\nset color to W+/b\n");
  581.         pr("i=readkey\n");
  582.         pr("do case\n");
  583.         pr("case i=6 .or. i=7\n");
  584.         pr("cc=.f\n");
  585.         pr("if i=7\n");
  586.         pr("cb=cb+1\n");
  587.         fprintf(fp,"if cb>%d\n",j);
  588.         pr("cb=1\n");
  589.         pr("else\n");
  590.         pr("cb=cb-1\n");
  591.         pr("if cb=0\n");
  592.         pr("cb=1\n");
  593.         pr("endif\n");
  594.         pr("endif\n");
  595.         pr("case i=5 .or. i=4\n");
  596.         pr("cf=1\n");
  597.         fprintf(fp,"case skeyboar>'68' .or. skeyboar<'%d'\n",mycon->NN);
  598.         pr("renu=val(skeyboar)\n");
  599.         pr("ccs=.f.\n");
  600.         pr("cc=.f\n");
  601.         pr("endcase\n");
  602.         pr("endcase\n");
  603.         pr("enddo\n");
  604.       }
  605.       else
  606.      {  pr("set color to W+/b\nclear\nset color to W+/B\n");
  607.         row=5;col=5;
  608.         for(ll=0;ll<mycon->NN;ll++)
  609.           { fprintf(fp,"@%d,%d say '%2d.%s'\n",row,col,ll+1,mycon->field[ll]);
  610.         if(col==65) { row++;col=5;}
  611.         else col+=20;
  612.           }
  613.         pr("skeyboar='  '\nset color to w+/b\n");
  614.             pr("@22,0 say '╩╣╙├ PgUp,PgDn ╤í╘±▓┘╫≈┐Γ'\n");
  615.         fprintf(fp,"@23,0 say '╗≥╤í╘±╫╓╢╬ (1--%d) ╫≈╬¬╠⌡╝■╫╓╢╬ ' get skeyboar\n",mycon->NN);
  616.         pr("read\nset color to W+/b\n");
  617.         pr("i=readkey()\n");
  618.         pr("do case\n");
  619.         pr("case i=6 .or. i=7\n");
  620.         pr("if i=7\n");
  621.         pr("cb=cb+1\n");
  622.         fprintf(fp,"if cb>%d\n",j);
  623.         pr("cb=1\n");
  624.         pr("endif\n");
  625.         pr("else\n");
  626.         pr("cb=cb-1\n");
  627.         pr("if cb=0\n");
  628.         pr("cb=1\n");
  629.         pr("endif\n");
  630.         pr("endif\n");
  631.         fprintf(fp,"case skeyboar>'1' .or. skeyboar<'%d'\n",mycon->NN);
  632.         pr("ccs=.f.\n");
  633.         pr("renu=val(skeyboar)\n");
  634.         pr("endcase\n");
  635.      }
  636.     }
  637.     pr("endcase\n");
  638.     pr("enddo\n");
  639. }
  640.  
  641.  
  642.  
  643. get1(i,j,row,col)
  644. int i,j,row,col;
  645. {  int key,c,n=0;
  646.    cursor(row,col);
  647.    while ((key=getcc())!=0x0D)
  648.      {  putchar(key);
  649.         n=10*n+key%256-'0';
  650.      }
  651.    if ((n>j||n<i)&&n!=0) {  error();
  652.                  get((long)i,(long)j,row,col);
  653.               }
  654.    else return(n);
  655.    }
  656.