diff doc/interpreter/var.txi @ 3294:bfe1573bd2ae

[project @ 1999-10-19 10:06:07 by jwe]
author jwe
date Tue, 19 Oct 1999 10:08:42 +0000
parents
children 4f40efa995c1
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/interpreter/var.txi	Tue Oct 19 10:08:42 1999 +0000
@@ -0,0 +1,624 @@
+@c Copyright (C) 1996, 1997 John W. Eaton
+@c This is part of the Octave manual.
+@c For copying conditions, see the file gpl.texi.
+
+@node Variables, Expressions, Data Structures, Top
+@chapter Variables
+@cindex variables, user-defined
+@cindex user-defined variables
+
+Variables let you give names to values and refer to them later.  You have
+already seen variables in many of the examples.  The name of a variable
+must be a sequence of letters, digits and underscores, but it may not begin
+with a digit.  Octave does not enforce a limit on the length of variable
+names, but it is seldom useful to have variables with names longer than
+about 30 characters.  The following are all valid variable names
+
+@cindex job hunting
+@cindex getting a good job
+@cindex flying high and fast
+@example
+@group
+x
+x15
+__foo_bar_baz__
+fucnrdthsucngtagdjb
+@end group
+@end example
+
+@noindent
+However, names like @code{__foo_bar_baz__} that begin and end with two
+underscores are understood to be reserved for internal use by Octave.
+You should not use them in code you write, except to access Octave's
+documented internal variables and built-in symbolic constants.
+
+Case is significant in variable names.  The symbols @code{a} and
+@code{A} are distinct variables.
+
+A variable name is a valid expression by itself.  It represents the
+variable's current value.  Variables are given new values with
+@dfn{assignment operators} and @dfn{increment operators}.
+@xref{Assignment Ops, ,Assignment Expressions}.
+
+A number of variables have special built-in meanings.  For example,
+@code{ans} holds the current working directory, and @code{pi} names the
+ratio of the circumference of a circle to its diameter. @xref{Summary of
+Built-in Variables}, for a list of all the predefined variables.  Some
+of these built-in symbols are constants and may not be changed.  Others
+can be used and assigned just like all other variables, but their values
+are also used or changed automatically by Octave.
+
+Variables in Octave do not have fixed types, so it is possible to first
+store a numeric value in a variable and then to later use the same name
+to hold a string value in the same program.  Variables may not be used
+before they have been given a value.  Doing so results in an error.
+
+@menu
+* Global Variables::            
+* Status of Variables::         
+* Summary of Built-in Variables::  
+* Defaults from the Environment::  
+@end menu
+
+@node Global Variables, Status of Variables, Variables, Variables
+@section Global Variables
+@cindex global variables
+@cindex @code{global} statement
+@cindex variables, global
+
+A variable that has been declared @dfn{global} may be accessed from
+within a function body without having to pass it as a formal parameter.
+
+A variable may be declared global using a @code{global} declaration
+statement.  The following statements are all global declarations.
+
+@example
+@group
+global a
+global b = 2
+global c = 3, d, e = 5
+@end group
+@end example
+
+It is necessary declare a variable as global within a function body in
+order to access it.  For example,
+
+@example
+@group
+global x
+function f ()
+  x = 1;
+endfunction
+f ()
+@end group
+@end example
+
+@noindent
+does @emph{not} set the value of the global variable @code{x} to 1.  In
+order to change the value of the global variable @code{x}, you must also
+declare it to be global within the function body, like this
+
+@example
+@group
+function f ()
+  global x;
+  x = 1;
+endfunction
+@end group
+@end example
+
+Passing a global variable in a function parameter list will
+make a local copy and not modify the global value.  For example, given
+the function
+
+@example
+@group
+function f (x)
+  x = 0
+endfunction
+@end group
+@end example
+
+@noindent
+and the definition of @code{x} as a global variable at the top level,
+
+@example
+global x = 13
+@end example
+
+@noindent
+the expression
+
+@example
+f (x)
+@end example
+
+@noindent
+will display the value of @code{x} from inside the function as 0,
+but the value of @code{x} at the top level remains unchanged, because
+the function works with a @emph{copy} of its argument.
+
+@defvr {Built-in Variable} warn_comma_in_global_decl
+If the value of @code{warn_comma_in_global_decl} is nonzero, a
+warning is issued for statements like
+
+@example
+global a = 1, b
+@end example
+
+@noindent
+which makes the variables @code{a} and @code{b} global and assigns the
+value 1 to the variable @code{a}, because in this context, the comma is
+not interpreted as a statement separator.
+
+The default value of @code{warn_comma_in_global_decl} is nonzero.
+@end defvr
+
+@defvr default_global_variable_value
+if @code{initialize_global_variables} is nonzero, the value of
+@code{default_glbaol_variable_value} is used as the initial value of
+global variables that are not explicitly initialized.  for example,
+
+@example
+@group
+initialize_global_variables = 1;
+default_global_variable_value = 13;
+global foo;
+foo
+     @result{} 13
+@end group
+@end example
+
+the variable @code{default_global_variable_value} is initially undefined.
+@end defvr
+
+@deftypefn {Built-in Function} {} is_global (@var{name})
+Return 1 if @var{name} is globally visible.  Otherwise, return 0.  For
+example,
+
+@example
+@group
+global x
+is_global ("x")
+     @result{} 1
+@end group
+@end example
+@end deftypefn
+
+@node Status of Variables, Summary of Built-in Variables, Global Variables, Variables
+@section Status of Variables
+
+@deffn {Command} clear options pattern @dots{}
+Delete the names matching the given patterns from the symbol table.  The
+pattern may contain the following special characters:
+@table @code
+@item ?
+Match any single character.
+
+@item *
+Match zero or more characters.
+
+@item [ @var{list} ]
+Match the list of characters specified by @var{list}.  If the first
+character is @code{!} or @code{^}, match all characters except those
+specified by @var{list}.  For example, the pattern @samp{[a-zA-Z]} will
+match all lower and upper case alphabetic characters. 
+@end table
+
+For example, the command
+
+@example
+clear foo b*r
+@end example
+
+@noindent
+clears the name @code{foo} and all names that begin with the letter
+@code{b} and end with the letter @code{r}.
+
+If @code{clear} is called without any arguments, all user-defined
+variables (local and global) are cleared from the symbol table.  If
+@code{clear} is called with at least one argument, only the visible
+names matching the arguments are cleared.  For example, suppose you have
+defined a function @code{foo}, and then hidden it by performing the
+assignment @code{foo = 2}.  Executing the command @kbd{clear foo} once
+will clear the variable definition and restore the definition of
+@code{foo} as a function.  Executing @kbd{clear foo} a second time will
+clear the function definition.
+
+This command may not be used within a function body.
+@end deffn
+
+@deffn {Command} who options pattern @dots{}
+@deffnx {Command} whos options pattern @dots{}
+List currently defined symbols matching the given patterns.  The
+following are valid options.  They may be shortened to one character but
+may not be combined.
+
+@table @code
+@item -all
+List all currently defined symbols.
+
+@item -builtins
+List built-in variables and functions.  This includes all currently
+compiled function files, but does not include all function files that
+are in the @code{LOADPATH}.
+
+@item -functions
+List user-defined functions.
+
+@item -long
+Print a long listing including the type and dimensions of any symbols.
+The symbols in the first column of output indicate whether it is
+possible to redefine the symbol, and whether it is possible for it to be
+cleared.
+
+@item -variables
+List user-defined variables.
+@end table
+
+Valid patterns are the same as described for the @code{clear} command
+above.  If no patterns are supplied, all symbols from the given category
+are listed.  By default, only user defined functions and variables
+visible in the local scope are displayed.
+
+The command @kbd{whos} is equivalent to @kbd{who -long}.
+@end deffn
+
+@deftypefn {Built-in Function} {} exist (@var{name})
+Return 1 if the name exists as a variable, 2 if the name (after
+appending @samp{.m}) is a function file in the path, 3 if the name is a
+@samp{.oct} file in the path, or 5 if the name is a built-in function.
+Otherwise, return 0.
+@end deftypefn
+
+@deftypefn {Built-in Function} {} document (@var{symbol}, @var{text})
+Set the documentation string for @var{symbol} to @var{text}.
+@end deftypefn
+
+@deffn {Command} type options name @dots{}
+Display the definition of each @var{name} that refers to a function.
+
+Normally also displays if each @var{name} is user-defined or builtin;
+the @code{-q} option suppresses this behaviour.
+
+Currently, Octave can only display functions that can be compiled
+cleanly, because it uses its internal representation of the function to
+recreate the program text.
+
+Comments are not displayed because Octave's parser currently discards
+them as it converts the text of a function file to its internal
+representation.  This problem may be fixed in a future release.
+@end deffn
+
+@deffn {Command} which name @dots{}
+Display the type of each @var{name}.  If @var{name} is defined from a
+function file, the full name of the file is also displayed.
+@end deffn
+
+@node Summary of Built-in Variables, Defaults from the Environment, Status of Variables, Variables
+@section Summary of Built-in Variables
+
+Here is a summary of all of Octave's built-in variables along with
+cross references to additional information and their default values.  In
+the following table @var{octave-home} stands for the root directory
+where all of Octave is installed (the default is @file{@value{OCTAVEHOME}},
+@var{version} stands for the Octave version number (for example,
+@value{VERSION}) and @var{arch} stands for the type of system for which
+Octave was compiled (for example, @code{@value{TARGETHOSTTYPE}}).
+
+@vtable @code
+@item DEFAULT_LOADPATH
+@xref{Function Files}.
+
+Default value: @code{".:@var{octave-home}/lib/@var{version}"}.
+
+@item EDITOR
+@xref{Commands For History}.
+
+Default value: @code{"emacs"}.
+
+@item EXEC_PATH
+@xref{Controlling Subprocesses}.
+
+Default value: @code{":$PATH"}.
+
+@item INFO_FILE
+@xref{Getting Help}.
+
+Default value: @code{"@var{octave-home}/info/octave.info"}.
+
+@item INFO_PROGRAM
+@xref{Getting Help}.
+
+Default value: @code{"@var{octave-home}/libexec/octave/@var{version}/exec/@var{arch}/info"}.
+
+@item LOADPATH
+@xref{Function Files}.
+
+Default value: @code{":"}, which tells Octave to use the directories
+specified by the built-in variable @code{DEFAULT_LOADPATH}.
+
+@item OCTAVE_HOME
+
+Default value: @code{"@value{OCTAVEHOME}"}.
+
+@item PAGER
+@xref{Input and Output}.
+
+Default value: @code{"less", or "more"}.
+
+@item PS1
+@xref{Customizing the Prompt}.
+
+Default value: @code{"\s:\#> "}.
+
+@item PS2
+@xref{Customizing the Prompt}.
+
+Default value: @code{"> "}.
+
+@item PS4
+@xref{Customizing the Prompt}.
+
+Default value: @code{"+ "}.
+
+@item auto_unload_dot_oct_files
+@xref{Dynamically Linked Functions}.
+
+Default value: 0.
+
+@item automatic_replot
+@xref{Two-Dimensional Plotting}.
+
+Default value: 0.
+
+@item beep_on_error
+@xref{Error Handling}.
+
+Default value: 0.
+
+@item completion_append_char
+@xref{Commands For Completion}.
+
+Default value: @code{" "}.
+
+@item default_eval_print_flag
+@xref{Evaluation}.
+
+Default value: 1.
+
+@item default_return_value
+@xref{Multiple Return Values}.
+
+Default value: @code{[]}.
+
+@item default_save_format
+@xref{Simple File I/O}.
+
+Default value: @code{"ascii"}.
+
+@item do_fortran_indexing
+@xref{Index Expressions}.
+
+Default value: 0.
+
+@item crash_dumps_octave_core
+@xref{Simple File I/O}.
+
+Default value: 1.
+
+@item define_all_return_values
+@xref{Multiple Return Values}.
+
+Default value: 0.
+
+@item empty_list_elements_ok
+@xref{Empty Matrices}.
+
+Default value: @code{"warn"}.
+
+@item fixed_point_format
+@xref{Matrices}.
+
+Default value: 0.
+
+@item gnuplot_binary
+@xref{Three-Dimensional Plotting}.
+
+Default value: @code{"gnuplot"}.
+
+@item history_file
+@xref{Commands For History}.
+
+Default value: @code{"~/.octave_hist"}.
+
+@item history_size
+@xref{Commands For History}.
+
+Default value: 1024.
+
+@item ignore_function_time_stamp
+@xref{Function Files}.
+
+Default value: @code{"system"}.
+
+@item implicit_num_to_str_ok
+@xref{String Conversions}.
+
+Default value: 0.
+
+@item implicit_str_to_num_ok
+@xref{String Conversions}.
+
+Default value: 0.
+
+@item max_recursion_depth
+@xref{Recursion}.
+
+Default value: 256.
+
+@item ok_to_lose_imaginary_part
+@xref{Special Utility Matrices}.
+
+Default value: @code{"warn"}.
+
+@item output_max_field_width
+@xref{Matrices}.
+
+Default value: 10.
+
+@item output_precision
+@xref{Matrices}.
+
+Default value: 5.
+
+@item page_screen_output
+@xref{Input and Output}.
+
+Default value: 1.
+
+@item prefer_column_vectors
+@xref{Index Expressions}.
+
+Default value: 1.
+
+@item print_answer_id_name
+@xref{Terminal Output}.
+
+Default value: 1.
+
+@item print_empty_dimensions
+@xref{Empty Matrices}.
+
+Default value: 1.
+
+@item resize_on_range_error
+@xref{Index Expressions}.
+
+Default value: 1.
+
+@item return_last_computed_value
+@xref{Returning From a Function}.
+
+Default value: 0.
+
+@item save_precision
+@xref{Simple File I/O}.
+
+Default value: 17.
+
+@item saving_history
+@xref{Commands For History}.
+
+Default value: 1.
+
+@item silent_functions
+@xref{Defining Functions}.
+
+Default value: 0.
+
+@item split_long_rows
+@xref{Matrices}.
+
+Default value: 1.
+
+@item struct_levels_to_print
+@xref{Data Structures}.
+
+Default value: 2.
+
+@item suppress_verbose_help_message
+@xref{Getting Help}.
+
+Default value: 1.
+
+@item treat_neg_dim_as_zero
+@xref{Special Utility Matrices}.
+
+Default value: 0.
+
+@item warn_assign_as_truth_value
+@xref{The if Statement}.
+
+Default value: 1.
+
+@item warn_comma_in_global_decl
+@xref{Global Variables}.
+
+Default value: 1.
+
+@item warn_divide_by_zero
+@xref{Arithmetic Ops}.
+
+Default value: 1.
+
+@item warn_function_name_clash
+@xref{Function Files}.
+
+Default value: 1.
+
+@item warn_reload_forces_clear
+@xref{Dynamically Linked Functions}.
+
+Default value: 1.
+
+@item warn_variable_switch_label
+@xref{The switch Statement}.
+
+Default value: 0.
+
+@item whitespace_in_literal_matrix
+@xref{Matrices}.
+
+Default value: @code{""}.
+@end vtable
+
+
+@node Defaults from the Environment,  , Summary of Built-in Variables, Variables
+@section Defaults from the Environment
+
+Octave uses the values of the following environment variables to set the
+default values for the corresponding built-in variables.  In addition,
+the values from the environment may be overridden by command-line
+arguments.  @xref{Command Line Options}.
+
+@vtable @code
+@item EDITOR
+@xref{Commands For History}.
+
+Built-in variable: @code{EDITOR}.
+
+@item OCTAVE_EXEC_PATH        
+@xref{Controlling Subprocesses}.
+
+Built-in variable: @code{EXEC_PATH}.
+Command-line argument: @code{--exec-path}.
+
+@item OCTAVE_PATH
+@xref{Function Files}.
+
+Built-in variable: @code{LOADPATH}.
+Command-line argument: @code{--path}.
+
+@item OCTAVE_INFO_FILE
+@xref{Getting Help}.
+
+Built-in variable: @code{INFO_FILE}.
+Command-line argument: @code{--info-file}.
+
+@item OCTAVE_INFO_PROGRAM
+@xref{Getting Help}.
+
+Built-in variable: @code{INFO_PROGRAM}.
+Command-line argument: @code{--info-program}.
+
+@item OCTAVE_HISTSIZE
+@xref{Commands For History}.
+
+Built-in variable: @code{history_size}.
+
+@item OCTAVE_HISTFILE
+@xref{Commands For History}.
+
+Built-in variable: @code{history_file}.
+@end vtable