y1.c

来自「在以前公司DOS环境下」· C语言 代码 · 共 2,109 行 · 第 1/4 页

C
2,109
字号

   return 1;
}

void dispalldata(void)
{int ihh,imm,iss;

 if(itotaltm!=ototaltm)
  {ototaltm=itotaltm;
   ihh=(int)(itotaltm/3600L);
   imm=(int)((itotaltm%3600L)/60L);
   iss=(int)(itotaltm%60L);
   sprintf(buff,"%02d:%02d:%02d",ihh,imm,iss);
   drwfillbox(SET,CYAN,89,516,170,536);
   drwstr(buff,98,518,1,1,lPINK,SET);
  }

 if(istoptm!=ostoptm)
  {ostoptm=istoptm;
   ihh=(int)(istoptm/3600L);
   imm=(int)((istoptm%3600L)/60L);
   iss=(int)(istoptm%60L);
   sprintf(buff,"%02d:%02d:%02d",ihh,imm,iss);
   drwfillbox(SET,CYAN,500,516,580,536);
   drwstr(buff,509,518,1,1,lPINK,SET);
  }

 if(istopct!=ostopct)
  {ostopct=istopct;
   sprintf(buff,"%4d",istopct);
   drwfillbox(SET,CYAN,376,516,418,536);
   drwstr(buff,385,518,1,1,lPINK,SET);
  }
 
 if(itotallen!=ototallen)
  {ototallen=itotallen;
   sprintf(buff,"%6d",itotallen);
   drwfillbox(SET,CYAN,662,516,792,536);
   drwstr(buff,671,518,1,1,lPINK,SET);
  }
  
  if(itotaltm!=istoptm)
   iavgsp=(int)((double)itotallen/(double)(itotaltm-istoptm)*60.0);
   if(iavgsp<0) iavgsp=0;
   if(oavgsp!=iavgsp)
    {oavgsp=iavgsp;
     sprintf(buff,"%4d",iavgsp);
     drwfillbox(SET,CYAN,252,516,293,536);
     drwstr(buff,253,518,1,1,lPINK,SET);
    }

}

void scanmem(void)
{unsigned char far *p,*p1;
 int i,j; 
 
 p=(unsigned char far *)0xD0000000;
 if(iADD==1) p=(unsigned char far *)0xE0000000;

 p1=p;

 p1++;
 *p1=(unsigned char)iSEL;
if(iSEL==2)
 { strcpy(buf2,"下");
  dispstore(buf2);
 }
else if(iSEL==1)
 {
  strcpy(buf3,"上");
  dispstore(buf3);
 }

 
 p1++;
 for(i=0;i<70;i++)
  {*p1=oldorder[i];
   p1++;
  }

 for(i=0;i<70;i++)
  {*p1=currentorder[i];
   p1++;
  }

 for(i=0;i<7;i++)
  for(j=0;j<70;j++)
   {*p1=order[irec+i][j];
    if ((irec+i)>maxrec-1)
       *p1=' ';
    p1++;
   }
 sprintf(buf3,"%4d%10ld%10ld",cutlength,prdnumber,leftnumber*cutlength/1000L);    
     for(i=0;i<24;i++)
      {
       *p1=buf3[i];
       p1++;
       }
 *p1=13;
 *p=1;
}                 

int maxprdrec(void)
{FILE *fp;
 long i;
 
 i=0L;
 if((fp=fopen("prddata.txt","r")) != NULL)
  {i=filelength(fileno(fp));
   fclose(fp);
  }

 return (int)(i/112L);
}


void scandata(int istart,int iend)
{FILE *fp;
 int i,j,k,m;
 long ii,jj;

 i=0;
 j=0;
 k=2;
 if((fp=fopen("prddata.txt","r")) != NULL)
  {ii=filelength(fileno(fp));
   jj=0L;
   
   while(!feof(fp))
    {fgets(ibuf1,130,fp);
     m=strlen(ibuf1);
     jj=jj+m;
     if (jj>ii) break;

     if(i>=istart)
      {k=i-istart+2;
       if((k>=2) && (k<9))
         {strncpy(ibuf2,ibuf1,70);
          ibuf2[70]='\0';
          disporder(k,ibuf2,GREEN,RED);
         }
       j++;
      }
     if(j>iend) break;
     i++;
    }
   if(k<9)
    {strncpy(ibuf2,ibuf1,70);
    ibuf2[70]='\0';
    disporder(k,ibuf2,GREEN,RED);
    }

   memset(ibuf2,' ',70);
   ibuf2[70]='\0';
   for(i=k+1;i<9;i++)
    disporder(i,ibuf2,GREEN,RED);

   fclose(fp);
  }
}

int scanbuf(int istart,char *istr)
{FILE *fp;
 int i,j,k,m;
 long ii,jj;

 i=0;
 j=0;
 k=0;
 if((fp=fopen("prddata.txt","r")) != NULL)
  {ii=filelength(fileno(fp));
   jj=0L;
   while(!feof(fp))
    {fgets(ibuf1,120,fp);
     m=strlen(ibuf1);
     jj=jj+m;
     if(jj>=ii) break;

     if(i==istart)
      {strncpy(istr,ibuf1,70);
       istr[70]='\0';
       fclose(fp);
       return TRUE;
      }
     i++;
    }
   fclose(fp);
   return FALSE;
  }
}


void initdata(void)
{ FILE *fpin,*fpout;
  long idate,jdate;
  int iyear,imonth,iday,m;
  int jyear,jmonth,jday;
  long ii,jj;

  _strdate(buffer);
  imonth=atoi(buffer);
  iday=atoi(buffer+3);
  iyear=atoi(buffer+6);
  idate=iyear*365+imonth*30+iday;

  if((fpout=fopen("olddata.txt","w")) != NULL)
    if((fpin=fopen("prddata.txt","rb"))!=NULL)
     {ii=filelength(fileno(fpin));
      jj=0L;
      while(!feof(fpin))
      {fgets(ibuf1,120,fpin);
       m=strlen(ibuf1);
       jj=jj+m;
       if(jj>ii) break;
         
       ibuf1[110]='\n';
       ibuf1[111]='\0';
           
       strncpy(ibuf2,ibuf1+70,8);
       ibuf2[8]='\0';

       jmonth=atoi(ibuf2);
       jday=atoi(ibuf2+3);
       jyear=atoi(ibuf2+6);
       jdate=jyear*365+jmonth*30+jday;

       if(labs(jdate-idate)<=dDAT)
         fputs(ibuf1,fpout);
      }
     }

  fclose(fpin);
  fclose(fpout);
  remove("prddata.txt");
  rename("olddata.txt","prddata.txt");
}


int bcccheck(char *str)
{int i,j,bcc;

 i=strlen(str);
 bcc=str[0];
 for(j=1;j<i-1;j++)
   bcc=bcc ^ str[j];
 if(bcc<' ') bcc=bcc+' ';
 if(bcc==str[i-1])
   return TRUE;
 else
   return FALSE;
}

int bccstr(char *str)
{int i,j,bcc;

 i=strlen(str);
 bcc=str[0];
 for(j=1;j<i;j++)
   bcc=bcc ^ str[j];
 if(bcc<' ') bcc=bcc+' ';

 return bcc;
}


int ErrorCheck(int Code)
{/* trap PCL error codes */
 if(Code<0)
     {printf("ERROR %d:",Code);
      SioError(Code);
      SioDone(Port);
      exit(1);
     }
 return(0);
} /* end ErrorCheck */


void dispspeed(void)
{if(oldspeed!=ispeed)
  {sprintf(buf3,"%3d",ispeed);
   drwfillbox(SET,BLUE,11,154,114,213);
   drwstr(buf3,13,156,4,4,WHITE,SET);
   oldspeed=ispeed;
  }
}

void dispprdnumber(void)
{  
if(oldprdnumber!=prdnumber)
  {
   sprintf(buf3,"%8ld",prdnumber);
   drwfillbox(SET,BLUE,121,154,387,213);
   drwstr(buf3,123,156,4,4,WHITE,SET);
   oldprdnumber=prdnumber;
   displeftnumber();
  }
}

void displeftnumber(void)
{leftnumber=setnumber-prdnumber+badnumber;
 sprintf(buf3,"%8ld",leftnumber);
 drwfillbox(SET,BLUE,394,154,648,213);
 drwstr(buf3,396,156,4,4,WHITE,SET);
}


void dispbadnumber(void)
{ sprintf(buf3,"%4d",badnumber%10000);
  drwfillbox(SET,RED,655,154,791,213);
  drwstr(buf3,657,156,4,4,WHITE,SET);
  displeftnumber();
}

void broworder(void)
{int ok;
 int i,j,k;

 strcpy(buf2,"tt.pcx");
 pcxmake(260,101,536,266,buf2);
 strcpy(buf2,"menu.pcx");
 pcxput(SET,260,101,buf2);
  
 i=irec;
 ok=TRUE;
 while(ok)
  {if(kbhit())
    {j=getkey();
     switch(j)
      {case ESC:
        ok=FALSE;
        break;
       case kbUp:
        if(i>irec) i--;
        dispallorder(i,maxrec-1);
        break;
       case kbDn:
        if(i<(maxrec-1)) i++;
        dispallorder(i,maxrec-1);
        break;
       case kbHOME:
        i=irec;
        dispallorder(i,maxrec-1);
        break;
       case kbEND:
        i=maxrec-1;
       dispallorder(i,maxrec-1);
        break;
       case kbPgUp:
        if((i-7)>=irec) i=i-7;
       dispallorder(i,maxrec-1);
        break;
       case kbPgDn:
        if((i+7)<=(maxrec-1)) i=i+7;
        dispallorder(i,maxrec-1);
        break;
       case kbF1:
  /*      strcpy(buf2,"tt.pcx");
        pcxmake(260,201,536,366,buf2);
        strcpy(buf3,"menu.pcx");
        pcxput(SET,260,201,buf3);
              
        getch();
        pcxput(SET,260,201,buf2);*/
        break;
       case kbINS:
        if(inputorder(buf3)!=9)
          {strupr(buf3);
           appendorder(buf3);
           
           for(k=maxrec-1;k>i;k--)
             exchangeorder(k,k-1);
          dispallorder(i,maxrec-1);
          }
        break;
       case kbDEL:
        strcpy(buf2,"请确认删除此定单?");
        k=msgbox(buf2,1,1);
        if((k=='Y') || (k=='y') || (k==ENTER))
         {for(k=i;k<maxrec-1;k++)
            exchangeorder(k,k+1);
          if(maxrec>0) maxrec--;
         dispallorder(i,maxrec-1);
         }
        break;
       case kbF8:
        strcpy(buf2,"请确认重输此定单?");
        k=msgbox(buf2,1,1);
        if((k=='Y') || (k=='y') || (k==ENTER))
         {inputorder(buf2);
          strupr(buf2);
          for(k=0;k<70;k++)
            order[i][k]=buf2[k];
         dispallorder(i,maxrec-1);
         }

        break;
      }
     }
   }

 strcpy(buf2,"tt.pcx");
/* drwstr(buf2,8,400,1,1,RED,XOR);*/
 pcxput(SET,260,101,buf2);
}

void historybrow(void)
{int ok;
 int i,j,k;

 strcpy(buf2,"tt.pcx");
 pcxmake(260,101,536,266,buf2);
 strcpy(buf2,"menu.pcx");
 pcxput(SET,260,101,buf2);

 i=0; 
 ok=TRUE;
 scandata(i,8);
 while(ok)
  {if(kbhit())
    {j=getkey();
     switch(j)
      {case ESC:
        ok=FALSE;
        break;
       case kbUp:
        if(i>0) i--;
        scandata(i,7);
        break;
       case kbDn:
        if(i<maxprdrec()) i++;
        scandata(i,7);
        break;
       case kbHOME:
        i=0;
        scandata(i,7);
        break;
       case kbEND:
        i=maxprdrec();
        scandata(i,7);
        break;
       
       case kbPgUp:
        if((i-7)>=0) i=i-7;
        scandata(i,7);
        break;
       case kbPgDn:
        if(i+7<maxprdrec()) i=i+7; 
        scandata(i,7);
        break;

       case kbINS:
        strcpy(buf2,"请确认还原此定单?");
        k=msgbox(buf2,1,1);
        if((k=='Y') || (k=='y') || (k==ENTER))
          {if(scanbuf(i,buf3))
             appendorder(buf3);
          } 
        break;

      }
     }
   }

 strcpy(buf2,"tt.pcx");
 pcxput(SET,260,101,buf2);
}

void exchangeorder(int i,int j)
{int k;

 if((i>=irec) && (i<maxrec))
    if((j>=irec) && (j<maxrec))
      for(k=0;k<70;k++)
       { buf2[k]=order[i][k];
         order[i][k]=order[j][k];
         order[j][k]=buf2[k];
       }
}

void uploadorder(void)
{FILE *fp;
 int i,k;

 strcpy(buf2,"请确认上载定单?");
 i=msgbox(buf2,1,1);
 if((i=='Y') || (i=='y') || (i==ENTER))
   {strcpy(buf2,"Upload");
    drwstr(buf2,8,400,1,1,RED,XOR);

    strcpy(buf2,"sorder.txt");
    if((fp=fopen(buf2,"rb")) != NULL)
     while(!feof(fp))
      {k=fread(buf2,sizeof(char),70,fp);
       if(k==70)
         appendorder(buf2);
      }

    fclose(fp);

    strcpy(buf2,"Upload");
    drwstr(buf2,8,400,1,1,RED,XOR);
   }
}

void saveorder(void)
{int fp;
 int i,j,k;

 strcpy(buf2,"Saving");
 drwstr(buf2,8,400,1,1,RED,XOR);

 strcpy(buf2,"sorder.txt");
 if(_dos_creat(buf2,_A_NORMAL,&fp) ==0)
   {for(i=irec;i<maxrec;i++)
     {for(j=0;j<70;j++)
       buf2[j]=order[i][j];

      buf2[70]='\0';
      _dos_write(fp,buf2,70,&k);
     }
    _dos_close(fp);
   }

 strcpy(buf2,"Saving");
 drwstr(buf2,8,400,1,1,RED,XOR);

}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?