QI_SOUNDEX 1-SEP-1993 10:03:42 VAX C V3.2-044 Page 1 V1.0 22-AUG-1993 19:44:22 X$SRC:[CSO]QI_SOUNDEX.C;1 (1) 1 /* module to generate soundex encoding; used by build and qi_query */ 2 /* Bruce Tanner - Cerritos College */ 3 4 /* return a character encoding in */ 5 /* must be + 1 characters long */ 6 7 8 static char *vowels = "aeiouywh"; 9 static char *values = "b1f1p1v1c2g2j2k2q2s2x2z2d3t3l4m5n5r6"; 10 11 char *soundex(char *dest, char *src, int size) 12 { 13 1 char *cp, *dp; 14 1 15 1 dp = dest; /* point to dest */ 16 1 *dp++ = *src; /* the first letter is always retained */ 17 1 size--; /* count characters moved */ 18 1 while (*++src && size) { 19 2 if (*src == *(src - 1)) 20 2 continue; /* skip adjacent letters */ 21 2 if (strchr(vowels, *src)) 22 2 continue; /* drop vowels */ 23 2 cp = strchr(values, *src); /* find letter */ 24 2 if (cp && size && (*(dp - 1) != *(cp + 1))) { /* don't dup value */ 25 3 *dp++ = *(cp + 1); /* get value */ 26 3 size--; 27 3 } 28 2 } 29 1 while (size--) 30 1 *dp++ = '0'; /* pad dest with 0 */ 31 1 *dp = '\0'; 32 1 33 1 return dest; /* return pointer to dest */ 34 1 } Command Line ------------ CC/DEBUG/NOOP/LIST QI_SOUNDEX .