// GetUKey.cmm Cmm source code, used with CEnvi from the command line or // from a batch file, to display a prompt and then set // the UKEY environment variable to the key character pressed. main(argc,argv) { if (argc < 2) { // no arguments were given, and so show how to use Instructions(); } else { // everything up to the last argument is the prompt for ( KeyArg = 1; KeyArg < (argc-1); KeyArg++ ) printf("%s ",argv[KeyArg]) KeyList = strupr(argv[KeyArg]) // flush keyboard while kbhit() getch(); // read until one of the keys from KeyList is pressed while ( 0==(key=toupper(getch())) || NULL == strchr(KeyList,key) ) printf("\a") // beep because an invalid key was pressed printf("%c\n",key) // save this key as short environment string UKEY (UKEY = "*")[0] = key } } Instructions() { printf("\a\n") printf("GetUKey.cmm - Display a prompt and get key from user input. The\n") printf(" environment variable UKEY will be set to the key selected\n") printf("\n") printf("USAGE: CEnvi GetUKey.cmm [Prompt] \n") printf("Where:\n") printf(" Prompt - Text to display before prompting for character\n") printf(" KeyList - A string with the characters that will be accepted\n") printf("\n") printf("Example: CEnvi GetUKey.cmm \"Copy File, Delete it, or Quit? (C/D/Q)\" CDQ\n") }