Metropoli BBS
VIEWER: charcode.c MODE: TEXT (ASCII)
/* Copyright (C) 1993 by Thomas Glen Smith.  All Rights Reserved. */
/* charcode APL2 V1.0.0 ************************************************
* Called by aplscan.                                                   *
* Call charcode with a string representing an APL character, such as   *
* would be returned by codechar(), and it will return the integer code *
* for that character.  See also function codechar().                   *
***********************************************************************/
#define INCLUDES STRING
#include "includes.h"
int charcode(kp)
char *kp;
{
     extern char *aplchar[]; /* APL character set */
     extern int aplchax[]; /* Collated indexes to APL character set */
     extern int aplchno; /* number of elements in aplchar */
     int i,j,k,m,n;

     i = 0;
     j = aplchno-1;
     while (i <= j) {
          m = (i + j) / 2; /* index to middle element in aplchar */
          n = aplchax[m]; /* actual index */
          switch (isign(strcmp(kp,aplchar[n]))) {
               case -1: /* *kp < *(aplchar[n]) */
                    j = m - 1; /* look in lower half */
                    break;
               case  0: /* *kp == *(aplchar[n]) */
                    return(n); /* return proper code */
                    break;
               case +1: /* *kp > *(aplchar[n]) */
                    i = m + 1; /* look in upper half */
                    break;
          }
     }
     return(-1); /* not found */
}
[ RETURN TO DIRECTORY ]