**CIGAL Reference Manual, Chapter 3 (Functions): accept** ===== Accept -- Get data from keyboard, cursor, screen, or current input ===== **usage: variable = accept(prompt_string,default_value,data_type,word_size)**\\ **or: variable = accept(prompt_string,default_value,2)**\\ **or: variable = {**\\ ** ...**\\ ** }**\\ There are two forms of this command. The explicit "Accept" command: variable = accept( ... ) (usually used in macro programs or menus to prompt for user input) and the implicit command: variable = { ... } (to get data from the current input source). Both versions serve the same purpose: to load data into a data variable. The explicit ACCEPT command will usually display a prompt and then accept user input. The display and input can either occur within the Command window, in command line mode, or they can appear in a new dialog window created just for that purpose. To get the dialog window, specify 2 as the 3rd function argument (data_type). The ACCEPT command reads the input data into a temporary variable, which can then be assigned to another variable, or used as an argument to another CIGAL command. For example: a1 = accept("enter array values: ") or: read accept("enter filename: ",,STRING) NOTE: At present ACCEPT may not be used as an argument to another function command (i.e., a command that returns a value-- see HELP FUNCTIONS if you are not sure which are the function commands). The arguments to the ACCEPT command are described below. The second (implicit) form of the command, using the syntax: Variable = { ... } or, Variable = { ... } is used to load multi-valued variables (i.e., arrays, matrices, string lists, solids) with input read from the current input source. The keyboard or a macro file is the current input can be either. For NUMBERs (and STRINGs when WORD_SIZE is 1 -- see Note 2 below) only a single word of input is read. For other data types, input is read from the terminal until you enter a blank line (i.e. 2 in a row) or a line beginning with a "}". The size of the temporary variable created by either form of ACCEPT is automatically determined by the number of values entered. If this temporary variable is assigned to another variable of fixed-dimensions, the number of values should match (extra values are ignored, while missing values are undefined.) If the receiving variable does not have memory permanently assigned (see [[jvs:cigal:manual:chapter2:declare|DECLARE]]) that variable will be resized to match the input data. When reading data into a 2-dimensional variable (i.e., MATRIX or IMAGE) in which dimensions have not been explicitly defined previously, the horizontal dimension will be set to the number of values entered on the first line of data. ACCEPT Command Arguments: ACCEPT arguments are position dependent and are: PROMPT_STRING: The first argument is an optional character string to be printed as a prompt before ACCEPT waits for input. DEFAULT_VALUE: This value will be used as the result if the user does not enter data. It should be of the same type as the target variable. DATA_TYPE: 2 - Prompt for input using a Dialog box WORD_SIZE: If you directly assign a data variable do not specify these arguments. The type and size of the target data variable will be used as the input type. For example: declare array xarray xarray = accept("Enter X values: ") However, if the ACCEPTed data are not directly assigned to a variable, then DATA_TYPE should be explicitly declared to be one of the following: NUMBER MATRIX VECTOR STRING IMAGE 1 (see Note 1) ARRAY SOLID WORD_SIZE can be specified as one of: BYTE INTEGER LONG REAL BIT CRUMB NIBBLE If not specified, WORD_SIZE defaults to BYTE for STRING, IMAGE, or SOLID data, and to REAL for NUMBER, ARRAY, or MATRIX input. (See [VARIABLES][1] for more on data types and word sizes.) For example: read accept("Enter filename: ",,string) will prompt for a character string and then pass this as the first argument to the READ command. Note 1: DATA_TYPE specified as 1 is a special case. Telling ACCEPT that you are entering a flag variable in response to a yes or no question, the value will be either 0 or 1. In this special case, ACCEPT returns a 1 if the first character you enter is a 1, 'y', or 'Y'; it returns 0 if you enter 0, 'n', or 'N'. If you simply type , ACCEPT will return the default value (0/1) if specified, otherwise it assumes "no" and returns a value of 0. Example: flg = accept("Do you want to continue? ",0,1) Note 2: Entering STRING data and WORD_SIZE specified as 1 or 2 makes the command behave somewhat differently than usual. A WORD_SIZE of 1 means accept only a single word as opposed to a whole line of text. This is most useful when entering data by pointing the cursor at text on the screen, which allows you to enter values with a single key click, rather than highlighting a whole block of text. A WORD_SIZE of 2 means accept many lines of text, until you enter a blank line (i.e., 2 in a row). You can enter a blank line as part of the text as a line containing only the \ character. Enter text with the cursor as normal when WORD_SIZE is 2. EXAMPLES: declare number x declare integer matrix kernal1 kernal2 x = accept('next value:',-1) kernal1 = { 1 -1 -1 1 1 -1 1 1 -1 } kernal2 = accept('enter kernal:') (This example configures KERNAL1 as a 3x3 matrix; the dimensions of KERNAL2 depend on the number of values entered when executing the command.) NOTE: Illegal values (e.g. a non-numerical value or blank where a number is expected) are stored as "missing values" (-0) for variables of type INTEGER, LONG, or REAL (they are stored as 0 for BYTE data, which is unsigned). Missing values (-0) are omitted from computations, and appear as '%%**%%' when the variable is listed. **See Also:**\\ [[jvs:cigal:manual:chapter1:variables|VARIABLES(1)]] [[jvs:cigal|CIGAL Home]], [[jvs:cigal:manual|CIGAL Manual]], [[jvs:cigal:manual:chapter3|Functions List]], [[jvs:cigal:manual:help|Manual Help]]