diff options
author | Joe Hunkeler <jhunkeler@gmail.com> | 2015-08-11 16:51:37 -0400 |
---|---|---|
committer | Joe Hunkeler <jhunkeler@gmail.com> | 2015-08-11 16:51:37 -0400 |
commit | 40e5a5811c6ffce9b0974e93cdd927cbcf60c157 (patch) | |
tree | 4464880c571602d54f6ae114729bf62a89518057 /pkg/language/doc/params.hlp | |
download | iraf-osx-40e5a5811c6ffce9b0974e93cdd927cbcf60c157.tar.gz |
Repatch (from linux) of OSX IRAF
Diffstat (limited to 'pkg/language/doc/params.hlp')
-rw-r--r-- | pkg/language/doc/params.hlp | 288 |
1 files changed, 288 insertions, 0 deletions
diff --git a/pkg/language/doc/params.hlp b/pkg/language/doc/params.hlp new file mode 100644 index 00000000..d0ebed8d --- /dev/null +++ b/pkg/language/doc/params.hlp @@ -0,0 +1,288 @@ +.help parameters Feb86 language +.ih +NAME +parameters -- IRAF parameters and their usage +.ih +DISCUSSION + +1. \fIIntroduction\fR + + Parameters are the primary means of communicating information between +the user and IRAF tasks, and between separate IRAF tasks. Each user +effectively has their own copy of the parameters for the tasks they run, +and by tailoring these as they wish, they may customize the IRAF environment. +Here we describe characteristics of IRAF parameters. +The syntax of parameter declarations is described elsewhere. + + +2. \fIParameter Types\fR + + The CL supports a variety of parameter datatypes, from the conventional +string, integer, and floating point types, to the exotic struct and cursor +types. There is no complex type in the CL. + +.ls char +Character parameters are used to store strings of ASCII characters. +By default character parameters have a maximum length of 64 characters, +but this may be extended using the \fIlength\fR option when the parameter +is declared. A character parameter consisting of a single character can +usually be treated as an integer, with a value equal to the ASCII value +of the character. +.le +.ls int +Integer parameters are used to store integer information. Integer parameters +are stored internally as a long integer, permitting at least 32 bits of +precision. +.le +.ls real +Real parameters are stored internally as double's. +In general they may be entered with or without a decimal point, +and with or without an exponent. Note that the exponent should be +entered using an E not a D. +.le +.ls bool +Boolean parameters may only have the values \fIyes\fR or \fIno\fR. +.le +.ls file +File parameters are basically character parameters which are required +to be valid file names. All operations legal on characters are legal +on file parameters. Various checks on the accessibility or existence +of a file may be automatically performed when a \fIfile\fR type parameter +is used at runtime. +.le +.ls struct +Struct parameters are characters strings which are treated specially by +the scan and fscan functions. Scan and fscan set structs to the +remainder of the line being scanned without further parsing. +.le +.ls gcur, imcur +The cursor parameters have a character string value with a predefined cursor +value format. When a cursor type parameter is read in "query" mode, the +hardware cursor on the graphics terminal or image display is physically read. +If the cursor parameter is list-structured, cursor input may also be taken +from a list (text file). For a more detailed discussion of cursor control +in the CL, type \fIhelp cursors\fR. +.le + + +3. \fIList-Directed Parameters\fR + + Frequently one may have a list of values, e.g. numbers or file names, +which one wishes to analyze in turn. To do this one may use a list-directed +parameter. The parameter is defined with its value field set +to the name of a file containing the list. The next time it is referenced +its value will not be the string containing the file name, but rather +the first value in the list. Subsequent calls will return later +values in the list until an end-of-file is reached, at which point +the parameter will appear to be undefined. The file may be +rewound using the p_filename attribute of the parameter. Assigning the +null string to a list parameter closes the associated list file. + +.nf + int *list = "listfile.lis" + int cur_val + + for (i=1; i < nlist; i+=1) { + cur_val = list + analyze (cur_val) + } + +.fi + +A common usage of struct list-directed parameters is to read files in +conjunction with the \fIfscan\fR function. The following example prints +out a file. + +.nf + struct *slist = "filer.lis" + struct line + + while (fscan (slist, line) != EOF) + print (line) +.fi + + +4. \fIModes\fR + + The mode of a parameter determines two qualities: whether the parameter +is prompted for when it is accessed, and whether the parameter is "learned", +i.e. whether its value is saved between invocations of a task. + +A hidden parameter is never prompted for unless it is undefined +or has an illegal value. A query parameter is prompted for every time +it is referenced, except that a query parameter which is set on a +command line is not queried for when it is accessed within that task. + +These are the two basic modes, but a parameter may also be defined +to be automatic. This means that the parameter will use the mode +not of the task, but of the package the task is part of, or by the CL. +When an automatic parameter is referenced the CL searches +up this hierarchy to find a mode which is not automatic and uses +this for the mode. If the mode switch at all levels is automatic +then the mode is set to hidden. The mode switch at the task, package +and CL levels is determined by the VALUE, not the mode, of the +parameter with the name "mode" associated with the task, package or CL. + +Query and automatic parameters are learned by default, while hidden parameters +are not. + + +5. \fIRanges\fR + + The CL supports ranges for integer and real variables, and enumeration +lists for character strings. A user may specify either or both of a minimum +and maximum for numbers, and the CL will reject +any values which fall out of this range. Range checking is only +performed during querying, or inside \fIeparam\fR, not when a value +is assigned directly. For an enumerated string the input string +is matched against any of the enumerated possibilities +using a minimum-matching technique. A value with no match is rejected. + + +6. \fIParameter Attributes\fR + + The user may access the different elements of a parameter using +the parameter attributes. For some parameters certain of the +attributes will be meaningless or undefined. + +.ls p_name +The name of the parameter. +.le +.ls p_type +A string indicating the basic type of the parameter: + +.nf + b -- boolean + i -- int + r -- real + s -- string/char + f -- file + struct -- struct + gcur -- graphics cursor + imcur -- image cursor= +.fi +.le +.ls p_xtype +This is the same as p_type except that the string is prefixed by "*" +if the parameter is list directed. +.le +.ls p_mode +A string indicating the mode of the parameter composed of the characters: + +.nf + q -- query + a -- automatic + h -- hidden + l -- learned +.fi +.le +.ls p_value +The value of the parameter. For a list-directed parameter this is a +element in the file, not the file name. Generally this is what is accessed +when the parameter attribute is not specified. +.le +.ls p_length +For string type parameters (i.e. char, struct, file, gcur, imcur), +the maximum length of the string. +.le +.ls p_mimimum +The minimum value for a parameter. Also for enumerated strings +the enumeration list. +.le +.ls p_maximum +The maximum value for a parameter. +.le +.ls p_filename +For list-directed parameters the file name associated with the parameter. +.le + + +Attributes may appear on either side of an equals sign, e.g. + +.nf + list.p_filename = "test.fil" + = str.p_length + range = integ.p_maximum - integ.p_minimum + list.p_xtype = + = system.page.first_page.p_minimum # Fully qualified. +.fi + +It is illegal to assign to the p_name, p_type and p_xtype fields. +Most of the direct use of the parameter attributes is expected to be +in systems level programming. + + +7. \fIArrays\fR + + The user may define arrays of arbitrary dimensionality within the CL. +The arrays are referenced in the conventional fashion with +the index list enclosed in square brackets, and the individual +elements separated by commas. In their internal representation, +arrays are similar to those in Fortran, with the first element +changing fastest as one traverses memory. The limits of +each index may be specified. + +In general the CL can only access one element of the array at a time +but there is an automatic looping feature which permits the +appearance of array arithmetic. Any executable statement +in which an array is referenced but in which the exact element of the array +is not defined (an "open" array reference) +will cause the CL to implicitly execute that +statement within a loop over all the elements of the array. More +than one "open" array may appear in the expression but they +agree on the limits of the loop. For example, + +.nf + real x[20,20], y[20], z[10,20], t[20] + + y = x[1,*] + t = log(y) + z = x[1:10,*] +.fi + + +8. \fIScope\fR + + A parameter is known via an implicit reference if the task in which +it is defined is active. In an implicit reference the parameter +name only, without a task or package qualifier, is given. The CL +is always active, so that its parameters are always known. In a +script, the script itself is active, so its parameters may be used +implicitly. If the script calls another task, that sub-task may +reference the invoking tasks parameters implicitly. + +For an explicit reference, i.e. with task and package qualifiers, +the parameter is known if the package in which the task is defined +is active. For example, when starting the CL, the "lists" package +is not active, thus the parameters of the "sort" task may not +be referenced even in the form "lists.sort.param". However since +the system package is activated during login to the CL, the parameters +of "page" may be referenced by "page.param". In general a package +qualifier is used only to remove ambiguity between tasks with the +same name in two different packages. + + +9. \fIStorage\fR + + There are several places in which parameters are stored. +On disk the CL searches +for the parameters for a task in three locations. For a procedure +script, the default parameters are found in the script file itself, while +other scripts and executables have a parameter file with defaults in +the same directory as the script or executable. These default values +are used the first time a task is run, or whenever the default values +have been updated more recently than the user's copy of the parameters. +The user's copy is created when a task terminates, and retains any +"learned" changes to the parameters. It is created in a directory +pointed to by the IRAF logical "uparm" which is usually a sub-directory +of the default IRAF directory for the user. + +The user may also use in-core storage for the parameters using +the cache command. This keeps parameters for frequently used tasks +available without requiring disk access. Cached parameters +are copied to disk when the CL exits, or when the update command +is used. +.ih +SEE ALSO +lparam, eparam, cache, unlearn, update, cursor +.endhelp |