#include "utility.h" int gdouble(prompt,null_ok,range_check,minimum,maximum,number) /*============================================================================*/ /* PURPOSE: GET A DOUBLE SUBJECT TO RANGE CONSTRAINTS FROM THE USER. /* INPUTS: /* PROMPT PROMPT STRING TO BE DISPLAYED FOR USER. /* NULL_OK TRUE/FALSE IF NULL ENTRY IS VALID. /* RANGE_CHECK TRUE/FALSE IF RANGE CHECKING IS DESIRED. /* MINIMUM MINIMUM ALLOWED INPUT IF RANGE_CHECK IS TRUE. /* MAXIMUM MAXIMUM ALLOWED INPUT IF RANGE_CHECK IS TRUE. /* OUTPUTS: /* NUMBER VALID DOUBLE BETWEEN MINIMUM AND MAXIMUM IF /* RANGE_CHECK IS TRUE. /* FUNCTION VALUE STATUS OF USER RESPONSE (AS IN UTILITY.H). /* WRITTEN: M.V.GRIESHABER /* LAST MODIFICATION: 11 JUNE 1991 MVG */ char prompt[]; int null_ok; int range_check; double minimum; double maximum; double *number; { char response[100]; /* USER INPUT. */ double candidate; /* POSSIBLY VALID DOUBLE TO BE CHECKED. */ int status; /* USER INPUT STATUS. */ while(TRUE) { status=gstring(prompt,null_ok,response); if (status==ABORT_ENTRY || status==NULL_ENTRY) return(status); if (! valchars(response,"-0123456789.eE")) fprintf(stderr,"Error: Invalid response.\n\n"); else { candidate=atof(response); if (range_check && (candidatemaximum)) fprintf(stderr,"Error: Response out of range.\n\n"); else { *number=candidate; return(VALID_ENTRY); } } } }