@node MCONVERT
@section MCONVERT
+@vindex MCONVERT
@display
MCONVERT
The @cmd{MCONVERT} command requires its input to be a matrix file.
Use @cmd{MATRIX DATA} to convert text input into matrix file format.
@xref{MATRIX DATA}, for details.
+
+@node MATRIX
+@section MATRIX
+@vindex MATRIX
+@vindex END MATRIX
+
+@subsection Overview
+
+@display
+@t{MATRIX.}
+@dots{}@i{matrix commands}@dots{}
+@t{END MATRIX.}
+@end display
+
+@noindent
+The following basic matrix commands are supported:
+
+@display
+@t{COMPUTE} @i{variable}[(@i{index}[,@i{index}])]=@i{expression}.
+@t{CALL} @i{procedure}(@i{argument}, @dots{}).
+@t{PRINT} [@i{expression}]
+ [/@t{FORMAT}=@i{format}]
+ [/@t{TITLE}=@i{title}]
+ [/@t{SPACE}=@{@t{NEWPAGE} @math{|} @i{n}@}]
+ [@{/@t{RLABELS}=@i{string}@dots{} @math{|} /@t{RNAMES}=@i{expression}@}]
+ [@{/@t{CLABELS}=@i{string}@dots{} @math{|} /@t{CNAMES}=@i{expression}@}].
+@end display
+
+@noindent
+The following matrix commands offer support for flow control:
+
+@display
+@t{DO IF} @i{expression}.
+ @dots{}@i{matrix commands}@dots{}
+[@t{ELSE IF} @i{expression}.
+ @dots{}@i{matrix commands}@dots{}]@dots{}
+[@t{ELSE}
+ @dots{}@i{matrix commands}@dots{}]
+@t{END IF}.
+
+@t{LOOP} [@i{var}=@i{first} @t{TO} @i{last} [@t{BY} @i{step}]] [@t{IF} @i{expression}].
+ @dots{}@i{matrix commands}@dots{}
+@t{END LOOP} [@t{IF} @i{expression}].
+
+@t{BREAK}.
+@end display
+
+@noindent
+The following matrix commands support matrix input and output:
+
+@display
+@t{READ} @i{variable}[(@i{index}[,@i{index}])]
+ [/@t{FILE}=@i{file}]
+ /@t{FIELD}=@i{first} @t{TO} @i{last} [@t{BY} @i{width}]
+ [/@t{SIZE}=@i{expression}]
+ [/@t{MODE}=@{@t{RECTANGULAR} @math{|} @t{SYMMETRIC}@}]
+ [/@t{REREAD}]
+ [/@t{FORMAT}=@i{format}].
+@t{WRITE} @i{expression}
+ [/@t{OUTFILE}=@i{file}]
+ /@t{FIELD}=@i{first} @t{TO} @i{last} [@t{BY} @i{width}]
+ [/@t{MODE}=@{@t{RECTANGULAR} @math{|} @t{TRIANGULAR}@}]
+ [/@t{HOLD}]
+ [/@t{FORMAT}=@i{format}].
+@t{GET} @i{variable}[(@i{index}[,@i{index}])]
+ [/@t{FILE}=@{@i{file} @math{|} @t{*}@}]
+ [/@t{VARIABLES}=@i{variable}@dots{}]
+ [/@t{NAMES}=@i{expression}]
+ [/@t{MISSING}=@{@t{ACCEPT} @math{|} @t{OMIT} @math{|} @i{number}@}]
+ [/@t{SYSMIS}=@{@t{OMIT} @math{|} @i{number}@}].
+@t{SAVE} @i{expression}
+ [/@t{OUTFILE}=@{@i{file} @math{|} @t{*}@}]
+ [/@t{VARIABLES}=@i{variable}@dots{}]
+ [/@t{NAMES}=@i{expression}]
+ [/@t{STRINGS}=@i{variable}@dots{}].
+@t{MGET} [/@t{FILE}=@i{file}]
+ [/@t{TYPE}=@{@t{COV} @math{|} @t{CORR} @math{|} @t{MEAN} @math{|} @t{STDDEV} @math{|} @t{N} @math{|} @t{COUNT}@}].
+@t{MSAVE} @i{expression}
+ /@t{TYPE}=@{@t{COV} @math{|} @t{CORR} @math{|} @t{MEAN} @math{|} @t{STDDEV} @math{|} @t{N} @math{|} @t{COUNT}@}
+ [/@t{OUTFILE}=@i{file}]
+ [/@t{VARIABLES}=@i{variable}@dots{}]
+ [/@t{SNAMES}=@i{variable}@dots{}]
+ [/@t{SPLIT}=@i{expression}]
+ [/@t{FNAMES}=@i{variable}@dots{}]
+ [/@t{FACTOR}=@i{expression}].
+@end display
+
+@noindent
+The following matrix commands provide additional support:
+
+@display
+@t{DISPLAY} [@{@t{DICTIONARY} @math{|} @t{STATUS}@}].
+@t{RELEASE} @i{variable}@dots{}.
+@end display
+
+@subsection Introduction
+
+@code{MATRIX} and @code{END MATRIX} enclose a special @pspp{}
+sub-language, called the matrix language. With few exceptions, matrix
+language commands are independent of those in the enclosing @pspp{}
+program. In addition, each @code{MATRIX@dots{}END MATRIX} is an
+independent program in the matrix language
+
+The matrix language works with matrices, where a @dfn{matrix} is a
+rectangular array of real numbers. An @math{@var{n}@times{}@var{m}}
+matrix has @var{n} rows and @var{m} columns. Some special cases are
+important: a @math{@var{n}@times{}1} matrix is a @dfn{column vector},
+a @math{1@times{}@var{n}} is a @dfn{row vector}, and a
+@math{1@times{}1} matrix is a @dfn{scalar}.
+
+The matrix language has limited support for matrices that contain
+short strings instead of numbers. Each entry in a string matrix is 8
+bytes in size, with longer strings truncated and shorter strings
+padded with spaces. String matrices are mainly useful for labeling
+rows and columns when printing numerical matrices with the
+@code{MATRIX PRINT} command. Arithmetic operations on string matrices
+will not produce useful results. The user should not mix strings and
+numbers within a matrix.
+
+The matrix language does not work with cases. A variable in the
+matrix language represents a single matrix.
+
+The matrix language does not support missing values.
+