home *** CD-ROM | disk | FTP | other *** search
/ High Voltage Shareware / high1.zip / high1 / DIR24 / LS341.ZIP / LSORT.H < prev    next >
C/C++ Source or Header  |  1991-12-28  |  6KB  |  241 lines

  1. #define C88 Y
  2. #ifdef MSC
  3. #define LINT_ARGS Y
  4. #define UNSIGNED unsigned
  5. #else
  6. #define UNSIGNED
  7. #endif
  8. #define BIGFILE 0xFFFFFFF
  9. #define MAXFI 16
  10. #define CPMEOF 26
  11. #define MAXSTR 1024
  12. #define MAXLRCL 4096
  13. #define NWAY 9
  14. #define MAXREC 16003
  15. #define SBUFLEN (64000l)
  16. #define MBUFLEN (SBUFLEN)
  17. /* Note MIN_SORTRECS * 4 must be big enough to hold 2*MAXLRCL + 4*MAXSTR */
  18. /*      MIN_SBUFLEN must be big enough to hold NWAY*MAXLRCL+10KB (32KB) */
  19. #define MIN_SORTRECS (MAXLRCL + MAXSTR)
  20. #define MIN_SBUFLEN (MAXLRCL*NWAY+10240)
  21. #define MAXFLDS 32
  22. #define NWAY2P1 (2*NWAY + 1)
  23. #define DBMAXFLD 32
  24. #define DB3MAXFLD 128
  25. #define DBFLDSI  16
  26. #define DB3FLDSI 32
  27. #define DBHEDLEN 521
  28. #define WRITEBIN 1
  29. #define READBIN (O_BINARY + O_RDONLY)
  30. #define strmvc strcpy
  31. #define submvc(to,from,len) _move(len,from,to)
  32. #define length strlen
  33. #define tget gets
  34. #define tput(s) bdosputs(s),bdosputs("\r\n")
  35. #define strclc strcmp
  36. #define subclc strncmp
  37. #define subcmp strncmp
  38. #define subcpy(to,from,len) _move(len,from,to)
  39. #define swrite(f,s) write(f,s,strlen(s)),write(f,"\r\n",2)
  40. #define bswrite(f,s) write(f,s,strlen(s)),write(f,"\r\n",2)
  41. #define sread bsread
  42. #define c80puts puts
  43. #ifdef MSC
  44. #define _move(count,source,dest) memcpy(dest,source,count)
  45. #define _setmem(dest,count,value) memset(dest,value,count)
  46. #endif
  47.  
  48. #ifndef _MAX_DIR
  49. #include <stdlib.h>
  50. #endif
  51.  
  52. #ifndef min
  53. #define min(a,b) (a<b ? a :b)
  54. #endif
  55.  
  56. struct dbfld
  57. {
  58.     UNSIGNED char dbfld_name[11],dbfld_type,dbfld_len,fill_0[2],dbfld_dec;
  59. };
  60. struct dbhed
  61. {
  62.     UNSIGNED char db_id; /*=0x02*/
  63.     int  db_nbr;
  64.     UNSIGNED char db_dte[3];
  65.     int  db_lrecl;
  66.     struct dbfld db_flds[DBMAXFLD]; /*field attributes*/
  67.     UNSIGNED char db_trail; /*should=0*/
  68. };
  69. struct db3fld {
  70.     UNSIGNED char db3fld_name[11];
  71.     UNSIGNED char db3fld_type;
  72.     long db3fld_addr;
  73.     UNSIGNED char db3fld_len;
  74.     UNSIGNED char db3fld_dec;
  75.     char db3fill[14];
  76. };
  77. struct db3hed {
  78.     UNSIGNED char db3_id; /*=0x03 or =x083 (if dbt file) */
  79.     UNSIGNED char db3_dte[3];
  80.     long int db3_nbr;
  81.     int  db3_headrln,db3_lrecl;
  82.     UNSIGNED char db3_headfill[20];
  83.     struct db3fld db3_flds[DB3MAXFLD]; /*field attributes*/
  84.     UNSIGNED char db3_trail; /*should=0d*/
  85.     UNSIGNED char db3_cpmeof; /* set to 26 if needed */
  86. };
  87. struct fieldinfo {
  88.     int (*lcmpsub) () ,fstart,fcond;
  89.     UNSIGNED char flen,ftype;
  90. };
  91. struct sortparm {
  92.     long int rcount[MAXSTR],filesize;
  93.     int lrecl,str_wri,maxlrecl,db3hdrln;
  94.     struct fieldinfo lsdata[MAXFLDS];
  95.     UNSIGNED char dbasebuf[DBHEDLEN],mfile[NWAY2P1][_MAX_DIR],infi[_MAX_DIR],otfi[_MAX_DIR];
  96.     UNSIGNED char ansbuf[128],merg_inn,merg_pass,merg_drive,smi,nflds,nway;
  97.     UNSIGNED char drive1,drive2,mount,phase,harddisk,cpmeof;
  98. ;
  99.  
  100. struct mergebuf {
  101.     char *mbuffer;
  102.     unsigned int mbegin,mend,msize,meof,mchann; 
  103. };
  104.  
  105. #ifdef LINT_ARGS
  106. char *parsepp(char **,char);
  107. int is_dbase3(unsigned);
  108. int cscan(char *,char);
  109. int slngcmp(long *,long *,int);
  110. int slogcmp(char *,char *,int);
  111. int shlfcmp(int *,int *,int);
  112. int sfltcmp(float *,float *,int);
  113. int sdblcmp(double *,double *,int);
  114. int sxcmp(char *,char *,int);
  115. int sycmp(char *,char *,int);
  116. int szcmp(char *,char *,int);
  117. int sintcmp(char [],char [],int);
  118. int zonecmp(char [],char [],int);
  119. void oterr(int otchan,char *msg);
  120. int copyfi(struct sortparm *);
  121. int lssort(struct sortparm *);
  122. void sortout(char *[],int,struct sortparm *,int,char *);
  123. int sortin(char *[],int *,char *[],long,int,int,int *,long *,struct sortparm *);
  124. void mergrbuf(int lrecl,struct mergebuf *mbf);
  125. char *mergread(struct mergebuf *,int,char);
  126. int mbfint(struct mergebuf *,int,int,int,
  127. char [NWAY2P1][_MAX_DIR],char *,char **,int,char);
  128. int sortread(int,int,char *);
  129. void mergwrite(int,char *,int,struct mergebuf *);
  130. void mergflush(int,struct mergebuf *);
  131. void mountout(char *drive,long size,char *outfile,char harddisk);
  132. void mwork(char *drvie,long size,char harddisk);
  133. int openfi(char *,int);
  134. int create(char *);
  135. int bsread(int,char *);
  136. void fixinfi(char *);
  137. void getsdat(struct sortparm *,struct db3hed *);
  138. void mhelp(char);
  139. void getfldf(struct sortparm *,struct db3hed *);
  140. int setcmd(struct sortparm *);
  141. int getstart(char *,struct db3hed *,int *,char *,int,int);
  142. int getlrecl();
  143. int gettype();
  144. int sortcmp(char *,char *,struct sortparm *);
  145. char *rtjust(char *,char *,char *,int *,int);
  146. char *dlmfld(char *,int,int *);
  147. int lsfloat(char *,int,char *);
  148. void sortmove(char *tostr,char *frstr,int lrecl);
  149. int userip(char *);
  150. void userop(char *,int);
  151. void lsmerge(struct sortparm *,struct db3hed *);
  152. int sort(char **,int,struct sortparm *);
  153. void qksort(int,int,char **,struct sortparm *);
  154. void hpsort(char **,int,struct sortparm *);
  155. void sift(int,int,struct sortparm *,char **);
  156. void chkdbase(UNSIGNED char *,UNSIGNED char *,struct db3hed *);
  157. int getdbase(struct dbhed *);
  158. int getdb3(struct db3hed *,int,int *);
  159. void setcmp(struct sortparm *);
  160. void srchdbh(struct dbhed *,char *,int *,int *,char *);
  161. void srchdb3(struct db3hed *,char *,int *,int *,char *);
  162. int suprcmp(char *,char *,int);
  163. char *pr(char *);
  164. int prmpt(char *,char *);
  165. #else
  166. char *parsepp();
  167. int prmpt();
  168. int cscan();
  169. char *pr();
  170. int _os();
  171. void oterr();
  172. int copyfi();
  173. int lssort();
  174. void sortout();
  175. int sortin();
  176. int sortip();
  177. int sortic();
  178. int sortia();
  179. void sortoa();
  180. int sortib();
  181. void sortoc();
  182. void sortob();
  183. void mergrbuf();
  184. char *mergread();
  185. int mbfint();
  186. int sortread();
  187. void mergwrite();
  188. void mergflush();
  189. void mountout();
  190. int mwork();
  191. int openfi();
  192. int create();
  193. int bsread();
  194. void fixinfi();
  195. void getsdat();
  196. void mhelp();
  197. void getfldf();
  198. int setcmd();
  199. int getstart();
  200. int getlrecl();
  201. int gettype();
  202. int sortcmp();
  203. char *rtjust();
  204. char *dlmfld();
  205. int lsfloat();
  206. void sortmove();
  207. int userip();
  208. int userop();
  209. void lsmerge();
  210. void merge();
  211. long merge1();
  212. void saveparm();
  213. int mrgorder();
  214. void prtstat();
  215. void setup();
  216. int last_pass();
  217. void merge0();
  218. int sort();
  219. void qksort();
  220. void hpsort();
  221. void sift();
  222. void chkdbase();
  223. int getdbase();
  224. int getdb3();
  225. void setcmp();
  226. void srchdbh();
  227. void srchdb3();
  228. #endif
  229.  
  230.  
  231. #ifdef MAIN
  232. char temp[15],*blankline;
  233. long int mtotbuflen;
  234. unsigned max_sortrecs, max_sbuflen;
  235. #else
  236. extern char temp[15],*blankline;
  237. extern long int mtotbuflen;
  238. extern unsigned max_sortrecs, max_sbuflen;
  239. #endif
  240.