ì©lµ{¦¡
W_OBJ.H
ì©lÀɡа_©l /*---------( W_OBJ.H )--------------*/ #include "alloc.h" #include "stdio.h" #include "stdlib.h" #include "mem.h" #include "string.h" #include "math.h" #include "io.h" extern int _Cdecl _argc; extern char **_Cdecl _argv; typedef unsigned char unchar; typedef unsigned short unshort; typedef unsigned int unint; /*---------------------------------------------------------------------------*/ typedef struct { int X1,Y1,X2,Y2,TitleX; /*TitleX¦bM.EXE·|¥Î¨ì*/ char *pBuff; /*µe±Àx¦s°Ï«ü¼Ð*/ } WINDOW ; WINDOW *Uwo_Open(int X1, int Y1, int X2, int Y2); void Uwo_Save(WINDOW *Wo); void Uwo_Restore(WINDOW *Wo); void Uwo_Close(WINDOW *Wo); void Uwo_DrawBar(WINDOW *Wo,int attr,int clear,int shadow,int type); /*µe¤@¯x§Î¨Ã±N¯x§Î¤º²M¬°ªÅ¥Õ*/ #define WDO(fn) {WINDOW *w;w=Uwo_Open(1,1,80,25);fn();Uwo_Close(w);} /*---------------------------------------------------------------------------*/ typedef struct { WINDOW *wo; /* window ¤@«ß¥Ñ²Ä¤@¦æ¶}°_ */ int x1,x2; /* x1¬°¥ª®Ø,x2¬°¥k®Ø */ char **ptr1; /* ¦s©ñ©Ò¦³Insªº¦r¦ê,search®É¤@«ß¦b¦¹°}¦C */ char **ptr2; /* ¦s©ñ²Å¦X±ø¥ó¦r¦ê©ÎMtPickªº«ü¼Ð */ unchar sel[31]; /* ¿ï¾Ü±ø¥óªº¦r¦ê */ int sel_sw; /* ¬O§_n¿ï¾Ü±ø¥ó */ int FIND; /* InsPtr§ä¨ì®É¬°ON,§_«h¬°OFF, ì ins */ int max_row; /* openn¨D³Ì¤j¥i°t¸m¦r¦êªº¼Æ¶q */ int mem_row; /* ¤wadd,ins ¨ìptr1ªº¦r¦ê¼Æ¶q */ int kcl; /* KEY ªºªø«×(¤£§tNULL) */ int match_num; /* ²Å¦XPick±ø¥óªº¼Æ¶q,,ì no */ int pno; /* MtPick¿ï¨ìªº¼Æ¶q */ int top; /* Åã¥Ü®Éªº³»ºÝ */ int bar; /* ±N¥Ø«eªº¤Ï¥Õ´Î¦s°_¨Ó¨Ñ¤U¦¸¶i¤J¨Ï¥Î */ int lock; /* lock head number ¼Æ */ unchar *pfmt; /* «ü¦V¥¿½TªºUSprint()¦r¦ê®æ¦¡ */ unchar *gfmt; /* «ü¦Vì©l¦r¦ê */ int handle; /* Àˬd¬O§_¥i¥H¨Ï¥Î§_ */ } TEXT; TEXT *Utx_Open(int X1,int Y1,int X2,int Y2,int max_row,int kcl,int sel_sw); void Utx_Del(TEXT *tx,char *s); int Utx_Ins(TEXT *tx,char *fmt,...); /*¥¢±Ñ¶Ç¦^OFF,¦¨¥\¶Ç¦^ON*/ int Utx_Add(TEXT *tx,char *fmt,...); /*¥¢±Ñ¶Ç¦^OFF,¦¨¥\¶Ç¦^²Ä´Xµ§*/ int Utx_AddHead(TEXT *tx,char *fmt,...); /*«öENTER:RetKey=ENTER,Modify=ON,¶Ç¦^ON. «öESC:RetKey=NULL,¶Ç¦^OFF */ char *Utx_Pick(TEXT *tx,char *buf,int x,int y,int len,char *title,int attr); char **Utx_MtPick(TEXT *tx,int no,char *title); /*¶Ç¦^«ü¼Ð°}¦C,·í°}¦C«ü¼Ð¬°NULLªí¥Üµ²§ô,Ãþ¦ü¦r¦ê*/ int Utx_Chain(TEXT *tx,char *key,int x,int y,int len,int attr); int Utx_GetS(TEXT *tx,char *buf,char *key,int offset); /*keyªºªø«×»PUtx_Openªºkeyªø«×n¤@¼Ë*/ void Utx_View(TEXT *tx,char *title); void Utx_Close(TEXT *tx); void Utx_Sort(TEXT *Tx,char *fmt,int sw); /*sw=ON¥Ñ¤p¨ì¤j,OFF¥Ñ¤j¨ì¤p*/ TEXT *Utx_SetMemo(int X1,int Y1,int X2,int Y2,int kln,char *fn); /*¥þ³¡n¶Ç¤J¦ì§}(&),fmtùØÀ³«ü©úint(I),long(L),float(F),double(D)... µ¥*/ int Utx_GetFmt(TEXT *tx,unchar *str,unchar *fmt,...); /*¤é´Á,¼ÆÈ¥Î&*/ int Utx_Strstr(TEXT *tx,char *buf,char *key,int offset); /*±qÀY¨ì§À·j´M¦³§tkeyªº¦r¦ê,keyªø«×¤£¨î*/ /*---------------------------------------------------------------------------*/ typedef struct { int ffd; /* Viewªºfile handle */ int col; /* ¨C¦C³Ì¤j¦æ¼Æ */ int lcol; /* ¥ªÃä lock colom byte¼Æ */ int ncol; /* ¥Ø«eªºoffsetÈ */ int scol; /* display ¥X¨Óªºbyte¼Æ(lcol+mcol+spc) */ int mcol; /* ³]©w«á¥b³¡move byte¼Æ */ long row; /* ³Ì¤j¦C¼Æ(§t¥xÀY) */ int lrow; /* ¥¤ôlock¦C¼Æ */ int srow; /* ¿Ã¥Ø³Ì¤j¦C¼Æ(¤£§t¥xÀY) */ long nrow; /* ¥Ø«eªºrow¦b²Ä´X¦C(§t¥xÀY) */ int lhed; /* ¬O§_Âê¼ÐÀY */ int itm; /*0¥Î¥H§PÂ_¬O§_¤wSetRptItem(¦bUPrint()¤¤) ¬G0¤£¥Î,¥Ñ1ºâ°_,¾î¦V³Ì¦h¥i¦³40²Õitem */ int litm; /* lock item ¶µ¼Æ,¥Ñ1ºâ°_ */ int sitm; /* ¥Ø«e«á¥b³¡°_©litem¶µ,¥Ñ0ºâ°_ */ int eitm; /* ¥Ø«e«á¥b³¡µ²§ôitem¶µ,¥Ñ0ºâ°_ */ int x[41],n[41]; /* 0¤£¥Î,¥Ñ1ºâ°_,¦@¦³40²Õ */ char *pHead; char *pVirt; } VIEW ; /* ±M¨Ñreport¥Î */ void LockItemHead(int litm,char *s1,char *n,char *s2); void LineReturn(int nextpage); /*---------------------------------------------------------------------------*/ typedef struct { char *ffn; /* ¥DÀÉÀɦW */ int ffd; /* ¥DÀɪºfile handle */ int frl; /* ¥DÀɪº°O¿ýªø«× */ char *kfn; /* ¯Á¤ÞÀɦW */ int kfd; /* ¯Á¤ÞÀɪºfile handle */ int krl; /* ¯Á¤ÞÀɪº¸ê®Æªø«× */ int kcl; /* ¯Á¤ÞÀɪº¤ñ¸ûªø«×(§tNULL) */ int desh; /* desh ¦³´XBYTE */ int kmk; /* kcl-desh-1(main key ªø) */ int kpl; /* ¯Á¤ÞÀɪº«ü¼Ðªø«×(2,3) */ char *krb; /* ¯Á¤ÞÀɪºKEY½w½Ä°Ï */ long kip; /* ¯Á¤ÞÀɤ¤«ü¦V¥DÀɪº²Äkip µ§ */ long ksr; /* ¦Û¯Á¤ÞÀɤ¤§ä¨ìªº²Ä ksr µ§ */ int wrk; /* ¬O§_¬° work file ¼È®ÉÀÉ */ int handle; /* Àˬd¬O§_¤w¸g¥i¥H¨Ï¥Î¤F(7632) */ char hasbuf; /* 0µLBuffer,1:¦³¥Bflushn¼g¤J,2:¦³¦ýflush¤£¼g¤J */ void **ptr; /* ¦³¥ÎBuffer®ÉªºRecord«ü¼Ð */ int max_row; /* ¦³¥ÎBuffer®É³Ì¦h¥i°t¸m¼Æ¥Ø */ int mem_row; /* ¦³¥ÎBuffer®Émemùز{¦³¼Æ¥Ø */ int net_sw; /* ºô¸ôÀÉ®×±±¨î§_ */ int net_fd; /* ºô¸ô¤½¥ÎÀÉ®× */ char net_fn[24]; /* ºô¸ôLOGÀɦW */ unchar net_lk[16]; /* read®É³Ì«áµn¿ý */ } FKIP; #define FKMAXBUF 16384 /* FKIP Ins & Del ®É¨C¦¸·h°ÊªºBuffer*/ #define NETBUF 256 void Ufk_NetOnlyRW(FKIP *Fk,int sw);/*±MÄݦs¨úÀÉ,¼È®É¦û¾Ú¸ÓÀÉ,¥H¶i¦æUpdate,°Ñ¦ÒFSOCP011.c¡]¢°¡^*/ void Ufk_NetLogKey(FKIP *Fk,unchar *key);/*¤£³z¹LUfk_Readª½±µºM¾P¨Ãµn¿ý·sKEY,°Ñ¦ÒFSBMP041.c¡]¢±¡^*/ void Ufk_ViewNetLog(FKIP *Fk); /*¬d¬Ýºô¸ôªºLOGÀÉ*/ void Ufk_Close(FKIP *Fk); long Ufk_Del(FKIP *Fk,void *Buf); /*¶Ç¦^del²Ä´Xµ§*/ void Ufk_Flush(FKIP *Fk); void Ufk_NotFlush(FKIP *Fk); /*1:nflush,2:¤£flush,¥»¨ç¦¡³]©w¤£flush*/ void Ufk_InsKey(FKIP *Fk,void *Buf); void Ufk_LockFile(FKIP *fk,char *doc); /*±NÀɮץѦ@¥ÎÂର±M¥Î*/ FKIP *Ufk_Open(char *ffn,int frl,int kcl,int desh,int kpl); int Ufk_PgUD(FKIP *Fk,char *bufS); /*YPGDN¶W¹LÀɧÀ«h*bufS==NULL*/ int Condition(); void Ufk_Pack(FKIP *Fk,void *Buf,int (*Condition)()); int Ufk_Read(FKIP *Fk,void *Buf,char *Key); /*¥¢±Ñ¶Ç¦^OFF,¥¿½T¶Ç¦^ON*/ #define Ufk_Chain(b,s) if(Ufk_Read(b##K,&b,s)==0) memset(&b,NULL,sizeof(b)) int Ufk_Search(FKIP *Fk,char *Str); int Ufk_SeqRead(FKIP *Fk,void *Buf,char *k1,char *k2); /*EOF:ÀÉ®×µ²§ô,ON:Ū¤J¦¨¥\,OFF:¤£¦bk1,k2½d³ò¤§¤º*/ int Ufk_SetBuf(FKIP *Fk); /*¶Ç¦^°t¸mªº¼Æ¶q,¨Ï¥Î«án©I¥sUfk_Flush()¤~¥¿½T*/ long Ufk_Write(FKIP *Fk,void *Buf); /*¶Ç¦^write²Ä´Xµ§*/ int Ufk_ReadLast(FKIP *Fk,char *Key); /*±N¤W¦¸ªºKEYȦÛLAST_IPÀÉŪ¤J¨ìKey*/ void Ufk_WriteLast(FKIP *Fk); /*±N³Ì«á¼g¤JªºKEYȦs¤JLAST_IPÀɸÌ*/ #define Ufk_RecNo(f) (filelength(f->kfd)/f->krl) /*¶Ç¦^¥Ø«e¸ê®Æµ§¼Æ*/ #define READ2 }}free(pp);} #define WRITE1 }lseek(fd,frl*ll,SEEK_SET);write(fd,pp,frl*rr);}free(pp);} #define READ1(f) READ1_T(f##K,FS##f##_T) #define READ1_T(fk,type) {long tt,nn,rr,jj,ll;int fd=fk->ffd,frl=fk->frl;type *p,*pp;tt=filelength(fd)/frl;nn=65520U/frl;\ if((pp=malloc(nn*frl))==NULL){nn=32;if((pp=malloc(nn*frl))==NULL) UFatal("READ1 mem");}lseek(fd,0L,SEEK_SET);\ for(ll=L=0;tt>0;tt-=rr,ll+=rr){if(tt>=nn) rr=nn;else rr=tt;read(fd,pp,frl*rr);for(p=pp,jj=0;jj<rr;jj++,p++,L++){if(p->KEY[0]<=SPACE) continue; /*---------------------------------------------------------------------------*/ typedef struct { char **key; /* ¦s ¤J ªº ¦r ¦ê */ long *ip; /* ¦s ¤J ªº «ü ¼Ð */ int fd1; /* open tmp file for file split buffer */ FILE *fp1; int fd2; /* open tmp file for file split buffer */ FILE *fp2; int kcl; /* ´¡¤Jkeyªºªø(§tNULL) */ int mem_row; /* ±Æ §Ç «á ªº ip & ¦r¦ê«ü¼Ð¼Æ */ long all_row; /* Á`¦@±Æ¦Cªºµ§¼Æ */ long now; /* ªìȬ°0L,¥H«á¨C¦¸Usp_GetIp()«h¥[1 */ int free_key; /* Y ¦³ Usp_GetIp «h ON */ int dec_sw; /* ¨Ì»¼´î±Æ§Ç */ int disk; /* YµLSORT¨ìDISK«hOFF,¦bGetIp,Close®É¦³¥Î¨ì */ int handle; /* ÀË ¬d ¬O §_ ¤w ¸g ¥i ¥H ¨Ï ¥Î ¤F(7632) */ } SORTIP; SORTIP *Usp_Open(); void Usp_Dec(SORTIP *Sp); /*¤º©wȬ°»¼¼W,¥»¨ç¼Æ³]©w¬°»¼´î*/ int Usp_InsIp(SORTIP *Sp,char *key,long ip);/*¶Ç¤JKey(»Ý©T©wªø«×),¤ÎipÈ*/ int Usp_GetIp(SORTIP *Sp,long *ip); /*¨ÌKey¦¸§Ç¨ú¥X¨äipÈ,¥¢±Ñ®É¶Ç¦^OFF*/ /*¨Ã±N¤U¤@µ§ªºKEYȹw¥ý¦s¤JNkey©Ò«ü*/ /*---------------------------------------------------------------------------*/ typedef struct { unint Y:7 ; /* 82.08.31 = FC52 = 11111 1000 1010010, RAM¦s®É,¥i¯à²Ä1byte=0*/ unint M:4 ; /* 82.09.02 = 14D2 = 00010 1001 1010010, (·í¦~=0,¤ë>1)*/ unint D:5 ; /* M©ÎD¬°0ªí¥Ü¿ù»~*/ } DATE; DATE UAsc2Date(char *pStr); /*±NYY.MM.DD®æ¦¡ªº¤é´ÁÂରDATE«¬ºA*/ long UDiffDate(DATE Start, DATE End);/*pºâStart¨ìEnd¬Û®t´X¤Ñ */ DATE UGetM(void); /*¨ú±o¹q¸£¥Ø«e¤é´Á */ DATE UGetLastM(void); /*¨ú±o¹q¸£¤WӤ몺¤é´Á */ long UHowDate(DATE day); /*¶Ç¦^¦Û¦è¤¸0¦~¨ìdayªº¤Ñ¼Æ */ void UShowM(int X,int Y,int len,DATE Date,int attr); int UReadM(int X,int Y,int len,DATE *day,int locate,int attr_off,int attr); /* len : 5 ¦A¥ÑChrist§PÂ_¬°"¦~.¤ë",¤é«h¬°1, ©Î"¤ë/¤é",¦~«h¬°127 flag: 0-7 ªí¥ÜnÀˬd¤é´Á¬O§_¥¿½T,¥B¦b UReadM()¦Û°ÊŪ¨ú¨t²Î¤é´Á,¥B©w´å¼Ð flag: 8 ªí¥ÜnÀˬd¤é´Á¬O§_¥¿½T,¥B¦b UReadM()¦Û°ÊŪ¨ú¤W¦¸¿é¤J¤§Â¤é´Á, flag: 9 ªí¥Ü¦b UReadM() ®É¤£¦Û°ÊÅã¥Ü¨t²Î¤é´Á,¥i¤£¿é¤J,Y¤é´Á¿ù»~«h¤£Åã¥Ü¤é´Á flag: 10 ªí¥Ü¦bnÀˬd¤é´Á¬O§_¥¿½T,¥B¦b UReadM() ®É¦Û°ÊŪ¨ú(¦è¤¸)¨t²Î¤é´Á flag: < 0 ªí¥ÜnÀˬd¤é´Á,¤@©wn¿é¤J,¦ý¦b UReadM() ®É¤£¦Û°ÊÅã¥Ü¨t²Î¤é´Á */ int UMidDate(DATE S,DATE M,DATE E); /*M¤¶©óS,E¤§¶¡,¥¢±Ñ¶Ç¦^OFF */ DATE UAddDate(DATE Date, long n, int today); /*¥[¤J¤Ñ¼Æ*/ /*today=0·í¤Ñ¤£ºâ 10¤ë5¤é + 1¤Ñ = 10¤ë6¤é */ /*today=1·í¤Ñºâ 10¤ë5¤é + 1¤Ñ = 10¤ë5¤é */ DATE USubDate(DATE Date, long n, int today); /*´î±¼¤Ñ¼Æ*/ /*TODAY=0·í¤Ñ¤£ºâ 10¤ë5¤é - 1¤Ñ = 10¤ë4¤é */ /*TODAY=1·í¤Ñºâ 10¤ë5¤é - 1¤Ñ = 10¤ë5¤é */ /*---------------------------------------------------------------------------*/ typedef struct { unint H:5 ; unint M:6 ; unint F:1 ; /* ON¬°¥¿½T,OFF¬°¿ù»~*/ } TIME; int UReadT(int X,int Y,int len,TIME *t,int flag,int attr_off,int attr); void UShowT(int X,int Y,int len,TIME Time,int attr); /* modify 93/04/17 */ TIME UDiffTim2(TIME Start, TIME End); /*pºâStart¨ìEnd¬Û®t´X®É,´X¤À*/ TIME UDiffTim3(TIME Start, TIME End, TIME Rest); /*pºâStart¨ìEnd,¦AÕç¥ð®§,¬Û®t´X®É,´X¤À*/ TIME UAddTime(TIME t1,TIME t2); /*®É¶¡¬Û¥[*/ TIME USubTime(TIME t1,TIME t2); /*®É¶¡¬Û´î*/ /*-----------------------------------------------------------------*/ #define OFF 0 /* set cursor disappear */ #define BIG -1 /* set cursor style big, insert mode */ #define SMALL 1 /* set cursor style small, replace mode*/ void USetCursor(int Status); /*³]©w´å¼Ð¥¿±`,©ñ¤j,®ø¥¢*/ /*---------------------------------------------------------------------------*/ void Ugr_Open(char typ,int x,int up,double base); void Ugr_Qty(char *s,double *f); void Ugr_Head(char *s); void Ugr_MtHead(char *s,...); void Ugr_View(int sw); /*¬O§_³]¥§¡½u*/ /*---------------------------------------------------------------------------*/ void UFatal(char *fmt,...); /*Åã¥Ü¿ù»~°T®§¨Ãµ²§ôµ{¦¡ */ void Ugd_Open(char *fmt,...); /*¥H°ïÅ|¤è¦¡¦b²Ä25¦CÅã¥Ü°T®§ */ unchar UGetC(int X,int Y); FILE *USetTmpFp(char *mode,char *fn); /*¶Ç¦^Àɮתº«ü¼Ð,¤Î¨äÀɦW*/ unshort UGetKb(void); char *UGetName(char *a); void UGetS(int X,int Y,int len,char *p); void UPrint(char *fmt,...); /*¨ÌPsfÅܼƱN¦r¦ê¿é¥X¨ì¬Û¹ï¸ê®Æ¬y¥h*/ void USprint(char *buf,char *fmt,...); void UWait(int bell,char *fmt,...); /*Åã¥Ü°T®§,¨Ã¦ÛÁä½L¨ú±o¤@¦r¦s¤JRetKey*/ /*---------------------------------------------------------------------------*/ #define DEC 7 #define COMA 8 /* for long int has Comma */ #define ZERO 16 /* if number is 0 then show 0 */ #define MONEY 32 /* if has MONEY flag show '$' */ #define OFF 0 #define ON 1 #define SPACE 32 #define F3 0x3D00 #define F4 0x3E00 #define F5 0x3F00 #define F6 0x4000 #define F7 0x4100 #define F8 0x4200 #define F9 0x4300 #define F10 0x4400 #define HOME 0x4700 #define END 0x4F00 #define INS 0x5200 #define DEL 0x5300 #define PGUP 0x4900 #define PGDN 0x5100 #define UP 0x4800 #define DOWN 0x5000 #define LEFT 0x4B00 #define RIGHT 0x4D00 #define ENTER 0x1C0D #define BACK 0x0E08 #define ESC 0x011B #define TAB 0x0F09 #define C_F1 0x5E00 #define C_F2 0x5F00 #define C_F3 0x6000 #define C_F4 0x6100 #define C_F5 0x6200 #define C_F6 0x6300 #define C_F8 0x6500 #define C_F9 0x6600 #define C_F10 0x6700 #define C_LEFT 0x7300 #define C_RIGHT 0x7400 #define C_PGUP 0x7200 /* 쬰 0x8400 */ #define C_PGDN 0x7600 #define C_HOME 0x7700 #define C_END 0x7500 #define C_ENTER 0x1C0A #define C_BACK 0x0E7F #define S_TAB 0x0F00 #define A_A 0x1E00 #define A_B 0x3000 #define A_C 0x2E00 #define A_D 0x2000 #define A_E 0x1200 #define A_F 0x2100 #define A_G 0x2200 #define A_H 0x2300 #define A_I 0x1700 #define A_J 0x2400 #define A_K 0x2500 #define A_L 0x2600 #define A_M 0x3200 #define A_N 0x3100 #define A_O 0x1800 #define A_P 0x1900 #define A_Q 0x1000 #define A_R 0x1300 #define A_S 0x1F00 #define A_T 0x1400 #define A_U 0x1600 #define A_V 0x2F00 #define A_W 0x1100 #define A_X 0x2D00 #define A_Y 0x1500 #define A_Z 0x2C00 #define A_F1 0x6800 #define A_F2 0x6900 #define A_F3 0x6A00 #define A_F4 0x6B00 #define A_F5 0x6C00 #define A_F6 0x6D00 #define A_F7 0x6E00 #define A_F8 0x6F00 #define A_F9 0x7000 #define A_F10 0x7100 #define beep() putch(7) #define XN(r) X[r],y,N[r] #define XY(r) X[r],y #define XL(s,e) X[s],y,X[e]+N[e]-X[s] #define BXN(r) BX[r],BY[r],BN[r] /* for USetBXYN() */ #define MAX_FIELD 100 /* for BX[],BY[],BN[] */ #define UClsTable(x1,y1,x2,y2,attr) UScroll(0,x1,y1,x2,y2,attr) #define UClsField(x,y,len,attr) UScroll(0,x,y,x+len-1,y,attr) #define UCls() UScroll(0,1,3,80,24,V_SHOW) #define s_open(fn) sopen(fn,4|0x0100|0x8000,0x0040,0x0100|0x0080); /*¥ÎfopenªÌ,ºô¸ôª©§¡¥H¦¹¨ú¥N¡]¢²¡^*/ #define ShowNullLine(y) UShowSL(3,y,76,&Table[(SNO-4)*76],V_SHOW) /*²M¤@¦C*/ /*---------------------------------------------------------------------------*/ #ifdef MAIN unshort RetKey; int Modify; /*Ū¥X¸ê®Æ®Én³]¬°OFF,¸ê®ÆY¦³³Q§ó°Ê«h¬°ON.»Ý¼g¤J*/ int Field=1,OffSet=0,Cter,I; int X[20],N[20]; /*¥HSetXN()¨ç¼Æ³]©w¿é¤JÄæ¦ìªºX.len,¨Ã±`»PXN()¥¨¶°¨Ö¥Î*/ int NetWare,NetWritAble; /*¬O§_ºô¸ôª©,¬O§_¦³Åv¼g¤J¸ê®Æ*/ int P0,P1,K0,K1; /*¦C¦L³øªí±±¨îÅܼÆ,P0¶¼Æ,P1°¸¼Æ¸õ¶,K0¦C¼Æ,K1³Ì¤j¦C¼Æ*/ int DiskRec,Update=OFF; /*¨ÑWrite1Page¨Ï¥Î */ long L; /*±`¥Îªºªø¾ã¼ÆÅÜ¼Æ */ unchar BufS[320],TmpS[320],TmpFn[32]; /*±`¥Îªº¦r¦êÅÜ¼Æ */ unchar *Str,*Lkey,*Nkey,*RptHd,*NamS; /*¨Ï¥Î¨t²Îªº¤½¥q¦WºÙ*/ unchar Psf2,Psf; /*UPrint¨ÌPsfÅܼƱN¦r¦ê¿é¥X¨ì S¿Ã¹õ,P¦Lªí¾÷,f.VÀÉ®×*/ unchar LastKey[32],SelKey[32],Skey[24],Ekey[24]; /*³øªí±`¥Îªº¦r¦êÅܼÆ*/ DATE Sday,Eday,Day; /*±`¥Îªº¤é´ÁÅÜ¼Æ */ VIEW Vw; SORTIP *Sp; TEXT *Tx; FILE *Stream; WINDOW *Wo; FKIP *WORKK; #define OPEN_WORK WORKK=Ufk_Open("WORKFILE",sizeof(WORK),sizeof(WORK.KEY),0,2);Ufk_SetBuf(WORKK) int HasRead=OFF; int BX[MAX_FIELD],BY[MAX_FIELD],BN[MAX_FIELD]; /* 0¤£¥Î,¥Ñ1ºâ°_,¦@¦³MAX_FIELD-1²Õ,°t¦XBXN(r)¨Ï¥Î */ int SR; /* ¦Û°Êpºâ */ int Christ=OFF; /*ON=¦è¤¸,OFF=¥Á°ê*/ int CURSOR=SMALL; /* set cursor style small, replace mode*/ unint KbMode; /*Áä½Lì©lÈ*/ int OldSec; /*CLOCK(),°O¿ý¬í¥Î*/ unint Click; /*CLOCK(),°O¿ý¶i¤J¦¸¼Æ¥Î*/ unchar Pe2=OFF; /*«öAlt-P,«h¥Ñ PE2 ¦L¥X*/ #endif /*===========================================================================*/ /*===========================================================================*/ /*===========================================================================*/ /*---------( W_PROTO.UTL )--------------*/ /* "쫬«Å§i" ¤Î ¨ä¥i¯à¨Ï¥Î¤§ "¤½¥ÎÅܼÆÈ" ¤Î "#define" È /*-----------------------------------------------------------------*/ #define COMPANY_ROW 1 #define TITLE_ROW 2 /* screen from 1 .. 25 row */ #define ITEM_ROW 3 #define STATUS_ROW 25 /* screen from 1 .. 25 row */ /*---------*/ #define NO 0 #define YES 1 /*-----------------------------------------------------------------*/ #define ET_CURSOR_TRAN 'T' /* cousor move transparant, Chiness skip 2 byte */ #define ET_CHINESS 'C' /* force use previous Chiness input method */ #define ET_ENGLISH 'N' /* force use English input method */ #define ET_CHANGJEI '1' /* use Changjei method input Chiness */ #define ET_SAMPLY '2' /* use samply method input Chiness */ #define ET_PHONETIC '3' /* use samply method input Chiness */ void UETKbSet(char set_key); /*-----------------------------------------------------------------*/ #define KB_GET 1 /*°O¿ýì©lÈ*/ #define KB_SET 2 /*Num Lock=ON,Caps Lock=¤j¼g*/ #define KB_RET 3 /*¦^´_ì©lÈ*/ void USetKbFlag(int sw); /*-----------------------------------------------------------------*/ #define MONO_MODE 0 /*if is MONO display */ #define VGA_MODE 1 /*if is VGA display */ typedef char far *V_PTR; #ifdef MAIN int VIDEO = VGA_MODE; V_PTR video_base = (V_PTR) 0xb8000000; /* ¤º©w VGA displey */ int RIBBON = ON; /*Clock()¥Î,ON=¶]¦â,OFF=¤£¶]*/ char ET_PICK[4]="CL0"; /*¤¤¤å="CL0",^¤å="NL0",±±¨î¿é¤Jªk*/ #else extern int VIDEO; extern V_PTR video_base; #endif void ChkVideo(); /*´ú¦¡³æ¦â©Î±m¦â¿Ã¹õ */ /*-----------------------------------------------------------------*/ #define B_W 7 #define HB_W 15 /*High light*/ #define XB_W 120 /*Invert*/ #define FB_W 240 /*Flash*/ #define V_BLUE (VIDEO) ? 11 : B_W /* UDrawBox() frame color */ #define V_BOARD (VIDEO) ? 46 : B_W /* 19 */ #define V_CALC_BOX (VIDEO) ? 91 : XB_W /* for calcurate */ #define V_CALC_IN (VIDEO) ? 63 : XB_W /* for calcurate */ #define V_CALC (VIDEO) ? 79 : B_W /* for calcurate */ #define V_COMPANY (VIDEO) ? 46 : HB_W /* company title line */ #define V_COPY (VIDEO) ? 206: FB_W /* for A_C copy string */ #define V_CREATE (VIDEO) ? 63 : HB_W /* the reacord is new */ #define V_DATE (VIDEO) ? 43 : HB_W /* title line date */ #define V_DOS (VIDEO) ? B_W: B_W /* return DOS */ #define V_EDIT (VIDEO) ? 78 : XB_W /* the record is old */ #define V_EXE_ITEM (VIDEO) ? 94 : XB_W /* execute ITEM string */ #define V_EXPRESS (VIDEO) ? 91 : XB_W /* for Express */ #define V_GREEN (VIDEO) ? 10 : HB_W /* for Express */ #define V_ITEM_ON (VIDEO) ? 110: XB_W /* item name active */ #define V_ITEM_OFF (VIDEO) ? 63 : B_W /* item name inactive */ #define V_IDX_IN (VIDEO) ? 30 : B_W /* index pick_box inside */ #define V_MENU (VIDEO) ? 94 : B_W /* window frame */ #define V_MONTH (VIDEO) ? 62 : XB_W /* for calandar */ #define V_MODIFY (VIDEO) ? 206: FB_W /* for calandar */ #define V_READ (VIDEO) ? 30 : XB_W /* 46 for READ function */ #define V_READ_F (VIDEO) ? 174: 240 /* for READ function */ #define V_RED_F (VIDEO) ? 207: 240 /* for < 0 flash color */ #define V_SHOW (VIDEO) ? 15 : B_W /* for SHOW function */ #define V_STATUS (VIDEO) ? 107: XB_W /* bottom status line */ #define V_SYMBLE (VIDEO) ? 238: 240 /* for Symble */ #define V_TABLE (VIDEO) ? 11 : B_W /* table */ #define V_TIME (VIDEO) ? 47 : HB_W /* title line time */ #define V_TITLE_ON (VIDEO) ? 94 : B_W /* title name active */ #define V_TITLE_OFF (VIDEO) ? 127: XB_W /* title name inactive */ #define V_TOG (VIDEO) ? 78 : XB_W /* UReadTog() */ #define V_TX_READ (VIDEO) ? 78 : XB_W /* active bar */ #define V_TX_SHOW (VIDEO) ? 95 : B_W /* inactive bar */ #define V_TX_SEL (VIDEO) ? 94 : HB_W /* inactive bar */ #define V_TX_VIEW (VIDEO) ? 30 : XB_W /* inactive bar */ #define V_W_IN (VIDEO) ? 91 : B_W /* window in_side attr */ #define V_WARNING (VIDEO) ? 203: 240 /* warning message */ #define V_WBOX (VIDEO) ? 123: XB_W /* frame color */ #define V_WUSR (VIDEO) ? 95 : HB_W /* window in_side string attr */ #define V_YELLOW (VIDEO) ? 14 : B_W /* UDrawBox() frame color */ void UScroll(int sw,int x1,int y1,int x2,int y2,char attr); /* sw=UP,DOWN or 0(cls screen) */ void USetColor(int X, int Y, int len, int color); /*§ïÅÜÃC¦âÄÝ©Ê*/ void UShowSL(int X,int Y,int len,char *s,int attr); void UShowFD(int X,int Y,int len,double DoubleNum,char *FlagS,int attr); void UShowS(int X,int Y,char *s,int attr); void UShowC(int X,int Y,int len,char c,int attr); void UShowI(int X,int Y,int len,int IntNum, char *FlagS,int attr); void UShowD(int X,int Y,int len,double D , char *flag ,int attr); void UShowF(int X,int Y,int len,float F,char *flag,int attr); void UShowL(int X,int Y,int len,long L,char *flag,int attr); double UReadFD(int X, int Y, int len,char *FlagS,int attr_off, int attr); int UReadS(int X,int Y,int len,char *Pstr,char *flagS,int attr_off,int attr); int UReadD(int X,int Y,int len,double *pD,char *flagS,int attr_off,int attr); int UReadF(int X,int Y,int len,float *pF ,char *flagS,int attr_off,int attr); int UReadI(int X,int Y,int len,int *pI ,char *flagS,int attr_off,int attr); int UReadL(int X,int Y,int len,long *pL ,char *flagS,int attr_off,int attr); int UReadV(int X,int Y,int len,unchar *s,int truelen,char *flagS,int attr_off,int attr); int UReadC(int X,int Y,int len,char *c, char *flagS,int attr_off,int attr); #define UShowV(x,y,l,s,a,b) UShowSL(x,y,l,s,V_SHOW) void UShowTable(int X1,int Y1,int X2,int Y2,char *s,int attr); /*================================================================*/ void UClKbBuf(); /*²M°£Áä½L½w½Ä°Ï¸Ìªº¸ê®Æ*/ int UClock(); /*¶Ç¦^ÈYES=¦P¬í,NO=¤£¦P¬í*/ void UInitSys(); /* Initial system,(ChkVideo,SetKb,...) */ void UVsprint(char *buf,char *fmt,va_list ap); void UShiftString(unchar str[],int len,char *flagS); void SetRptItem(char *p); void UExtract(char bufS[]); /* ¥h±¼«D¼Æ¦r¦r¤¸ */ void Read1Page(); void Write1Page(); void Show1Page(); void ShowHead(); int UReadTog(int X, int Y,int leng,char *Pc, int attr, char *flags, ...); void UTime(int i,int sw); /*(0,OFF)=¶}©l,(1,ON)=µ²§ô¹Í*/ void UF1Help(char *FileName); int USetBXYN(char *Table, int SX, int SY, int SC); void USetMtXN(int lock,int lino,char *fmt,int sno,int cno); /*(nÂê´XÄæ,Fmt¦@¦³´X¦C,Fmt«ü¼Ð(n¿é¤J'---',¤£¿é¤J'==='),SNO,CNO)*/ int IndexHelp(int fd,int DispLeng,int GetLeng,char *mode,char *buf,char *wbuf,char *title); double Out4In5(double f,int p); /*p=precision,ºë½T«×,0=¥þ¾ã¼Æ,1=¤p¼Æ1¦ì*/ void UPrnCtrl(char *s,...); /*°e¥X±±¨î½X,¨Ãºâ¥XL¦C¶Z,¤Î¦r°ª,¦bNextPage()¤¤*/ void NextPage(void); /*·sª©,¤£¥Î¤Þ¼Æ,95/1/25*/ void NextLabel(int tot); /*¼ÐÅÒ¥Î,tot=¼ÐÅÒ°ª«×,96/6/26*/ ì©lÀɡе²§ô
Byron Wey¡@¡@Oct.21.1998