home *** CD-ROM | disk | FTP | other *** search
- /* (C) Copyright 1984,85,86,87 Walter L. Peacock All Rights Reserved */
- /****************************************************************************
- *
- * calltype.c -- get CBTREE call type
- *
- */
-
- #include "cbtree.h"
-
- #if AmigaDOS & LC
- #define printf iprintf
- #endif
-
- #define TYPE_Y 7 /* cursor coordinates for prompt */
- #define TYPE_X 0
-
- calltype()
- {
- extern long atol();
- #if CI
- #else
- extern int atoi();
- #endif
- extern int strcmp();
- extern int strlen();
- int calltype;
- char callchar[8];
- char *cp;
- static struct
- {
- char *op_name;
- int op_value;
- }
- optypes[] =
- {
- { "DELETE" , DELETE }, /* SORTED Alpa order */
- { "DELTKY" , DELTKY },
- { "GETALL" , GETALL },
- { "GETFRST" , GETFRST },
- { "GETGE" , GETGE },
- { "GETGT" , GETGT },
- { "GETKEYS" , GETKEYS },
- { "GETLAST" , GETLAST },
- { "GETLE" , GETLE },
- { "GETLT" , GETLT },
- { "GETNXT" , GETNXT },
- { "GETPAR" , GETPAR },
- { "GETPRV" , GETPRV },
- { "GETREC" , GETREC },
- { "GETSEQ" , GETSEQ },
- { "INSERT" , INSERT },
- { "ISRTKY" , ISRTKY },
- { "NEWLOC" , NEWLOC },
- { "NEWIDX" , 0 }
- };
- int numtypes = sizeof(optypes)/sizeof(*optypes); /* # optypes in array */
- int i;
-
- /* scr_clr(); clear screen */
-
- scr_curs(3, 0);
- printf(" GETFRST GETLAST GETPRV GETNXT GETSEQ GETREC\n");
- printf(" GETPAR GETALL GETKEYS GETLT GETLE GETGT \n");
- printf(" GETGE INSERT ISRTKY DELETE DELTKY NEWLOC NEWIDX\n");
-
- scr_curs(7, 0);
- printf("Enter CBTREE Call Type: NEWIDX_ ");
-
- /*** always get an optype ***/
-
- repeat
- {
- scr_curs(7, 24);
- printf("NEWIDX_\b\b\b\b\b\b\b");
- gets(callchar);
- scr_curs(7, 24 + strlen(callchar));
-
- /* force to upper for match */
- cp = callchar;
- while ((*cp = toupper(*cp)) != NUL)
- ++cp;
-
- /* cleanup the residue on entry line */
- if (*callchar != NUL) /* if something was entered */
- {
- printf(" \r"); /* left overs */
- if (*callchar == 'X')
- {
- calltype = 99;
- break;
- }
- }
- else
- {
- printf("NEWIDX \r"); /* refresh */
- calltype = 0; /* default to GETNXT */
- break;
- }
-
- for (i = 0; i < numtypes; ++i)
- {
- if (strcmp(callchar, optypes[i].op_name) == 0)
- break;
- }
-
- if (i < numtypes)
- calltype = optypes[i].op_value;
- else
- {
- calltype = 0;
- continue; /* error try again */
- }
-
- if (calltype == 99) /* exit */
- break;
- }
- until( calltype >= 1 && calltype <= GETLE );
-
- return(calltype);
- }
-
-