aboutsummaryrefslogtreecommitdiff
path: root/src/interp/setvars.boot.pamphlet
diff options
context:
space:
mode:
authordos-reis <gdr@axiomatics.org>2007-08-14 05:14:52 +0000
committerdos-reis <gdr@axiomatics.org>2007-08-14 05:14:52 +0000
commitab8cc85adde879fb963c94d15675783f2cf4b183 (patch)
treec202482327f474583b750b2c45dedfc4e4312b1d /src/interp/setvars.boot.pamphlet
downloadopen-axiom-ab8cc85adde879fb963c94d15675783f2cf4b183.tar.gz
Initial population.
Diffstat (limited to 'src/interp/setvars.boot.pamphlet')
-rw-r--r--src/interp/setvars.boot.pamphlet1829
1 files changed, 1829 insertions, 0 deletions
diff --git a/src/interp/setvars.boot.pamphlet b/src/interp/setvars.boot.pamphlet
new file mode 100644
index 00000000..2f89c6d5
--- /dev/null
+++ b/src/interp/setvars.boot.pamphlet
@@ -0,0 +1,1829 @@
+\documentclass{article}
+\usepackage{axiom}
+
+\title{\$SPAD/src/interp setvars.boot}
+\author{The Axiom Team}
+
+\begin{document}
+
+\maketitle
+\begin{abstract}
+\end{abstract}
+\eject
+\tableofcontents
+\eject
+
+\section{Top level function calling conventions}
+Conventions:
+\begin{list}{}
+\item when called with argument "\%initialize", a function will
+set the appropriate variables to their default states.
+\item when called with argument "\%display\%", a function will return a
+current state information suitable for sayBrightly
+\item when called with argument "\%describe\%", a function will print
+a description of itself and any conditions it imposes.
+\item otherwise, a function may interpret its arguments as it sees
+appropriate.
+\end{list}
+Also by convention each top level function named in the FUNCTION
+slot (see the data structure in setvart.boot.pamphlet\cite{1}) has an
+associated describe function. Thus, for example,
+setOutputFortran is accompanied by function to describe
+its arguments, such as describeSetOutputFortran.
+\section{Top level set functions}
+The {\bf set} function in this file handles the top level {\bf )set}
+command line functions.
+<<toplevelsetfunctions>>=
+<<initializeSetVariables>>
+<<resetWorkspaceVariables>>
+<<translateYesNo2TrueFalse>>
+<<translateTrueFalse2YesNo>>
+<<set>>
+<<set1>>
+<<displaySetOptionInformation>>
+<<displaySetVariableSettings>>
+@
+\section{initializeSetVariables}
+<<initializeSetVariables>>=
+initializeSetVariables (setTree) ==
+ -- this function passes through the table of set variable information
+ -- and initializes the variables to their default definitions.
+ for setData in setTree repeat
+ st := setData.setType
+ st = 'FUNCTION =>
+ -- here setVar is really the name of a function to call
+ if functionp(setData.setVar)
+ then FUNCALL( setData.setVar,"%initialize%")
+ else sayMSG '" Function not implemented."
+ st = 'INTEGER =>
+ SET(setData.setVar, setData.setDef)
+ st = 'STRING =>
+ SET(setData.setVar, setData.setDef)
+ st = 'LITERALS =>
+ SET(setData.setVar, translateYesNo2TrueFalse setData.setDef)
+ st = 'TREE =>
+ initializeSetVariables(setData.setLeaf)
+
+@
+\subsection{resetWorkspaceVariables}
+<<resetWorkspaceVariables>>=
+resetWorkspaceVariables () ==
+ -- this replaces def in DEBUG LISP
+ -- this function resets many workspace variables to their default
+ -- values. Some things are reset by start and not reset by restart.
+ SETQ(_/COUNTLIST , NIL)
+ SETQ(_/EDITFILE , NIL)
+ SETQ(_/SOURCEFILES , NIL)
+ SETQ($sourceFiles , NIL)
+ SETQ(_/PRETTY , NIL)
+ SETQ(_/SPACELIST , NIL)
+ SETQ(_/TIMERLIST , NIL)
+ SETQ($existingFiles , MAKE_-HASHTABLE 'UEQUAL)
+ SETQ($functionTable , NIL)
+ SETQ($BOOT , NIL)
+ SETQ($compileMapFlag , NIL)
+ SETQ($echoLineStack , NIL)
+ SETQ($operationNameList , NIL)
+ SETQ($slamFlag , NIL)
+ SETQ($CommandSynonymAlist , COPY($InitialCommandSynonymAlist))
+ SETQ($UserAbbreviationsAlist , NIL)
+ SETQ($msgAlist , NIL)
+ SETQ($msgDatabase , NIL)
+ SETQ($msgDatabaseName , NIL)
+ SETQ($dependeeClosureAlist , NIL)
+ SETQ($IOindex , 1 )
+ SETQ($coerceIntByMapCounter , 0 )
+ SETQ($e , [[NIL]])
+ SETQ($env , [[NIL]])
+
+ -- many variables set by the following
+
+ initializeSetVariables($setOptions)
+
+@
+\subsection{translateYesNo2TrueFalse}
+<<translateYesNo2TrueFalse>>=
+translateYesNo2TrueFalse x ==
+ x in '(yes on) => true
+ x in '(no off) => false
+ x
+
+@
+\subsection{translateTrueFalse2YesNo}
+<<translateTrueFalse2YesNo>>=
+translateTrueFalse2YesNo x ==
+ x = true => 'on
+ x = false => 'off
+ x
+
+@
+\subsection{set}
+<<set>>=
+set l == set1(l, $setOptions)
+
+@
+\subsection{set1}
+<<set1>>=
+set1(l,setTree) ==
+ null l => displaySetVariableSettings(setTree,"")
+ $setOptionNames : local := [x.0 for x in setTree]
+ arg := selectOption(DOWNCASE CAR l,$setOptionNames,'optionError)
+ setData := [arg,:LASSOC(arg,setTree)]
+
+ -- check is the user is authorized for the set variable
+ null satisfiesUserLevel setData.setLevel =>
+ sayKeyedMsg("S2IZ0007",[$UserLevel,'"set option"])
+
+ 1 = #l => displaySetOptionInformation(arg,setData)
+ st := setData.setType
+
+ st = 'FUNCTION =>
+ -- allow the user to set the default
+ setfunarg :=
+ l.1 = 'DEFAULT => "%initialize%"
+-- (arg2 := selectOption(l.1,['default],nil)) => "%initialize%"
+ KDR l
+ if functionp(setData.setVar)
+ then FUNCALL( setData.setVar,setfunarg)
+ else sayMSG '" Function not implemented."
+ -- if so set, then show option information
+ if $displaySetValue then displaySetOptionInformation(arg,setData)
+ NIL
+
+ st = 'STRING =>
+ arg2 := l.1
+ if arg2 = 'DEFAULT
+ then SET(setData.setVar, setData.setDef)
+ else if arg2 then SET(setData.setVar, arg2)
+ -- if so set or not a valid choice, then show option information
+ if $displaySetValue or (null arg2) then
+ displaySetOptionInformation(arg,setData)
+ NIL
+
+ st = 'INTEGER =>
+ -- validate the option, allowing the user to set the default
+ arg2 :=
+ num := l.1
+ (FIXP num) and (num >= (setData.setLeaf).0) and
+ (null (upperlimit := setData.setLeaf.1) or num <= upperlimit) => num
+ selectOption(l.1,['default,:setData.setLeaf],nil)
+ if arg2 = 'DEFAULT
+ then SET(setData.setVar, setData.setDef)
+ else if arg2 then SET(setData.setVar, arg2)
+ -- if so set or not a valid choice, then show option information
+ if $displaySetValue or (null arg2) then
+ displaySetOptionInformation(arg,setData)
+ null arg2 => sayMessage ['" Your value",:bright object2String l.1,
+ '"is not among the valid choices."]
+ NIL
+
+ st = 'LITERALS =>
+ -- validate the option, allowing the user to set the default
+ if (arg2 := selectOption(l.1,['default,:setData.setLeaf],nil)) then
+ if arg2 = 'DEFAULT
+ then SET(setData.setVar, translateYesNo2TrueFalse setData.setDef)
+ else
+ if arg2 = 'nobreak then
+ USE_-FAST_-LINKS 'T
+ if arg2 = 'fastlinks then
+ USE_-FAST_-LINKS 'NIL
+ arg2 := 'break
+ SET(setData.setVar, translateYesNo2TrueFalse arg2)
+ -- if so set or not a valid choice, then show option information
+ if $displaySetValue or (null arg2) then
+ displaySetOptionInformation(arg,setData)
+ null arg2 => sayMessage ['" Your value",:bright object2String l.1,
+ '"is not among the valid choices."]
+ NIL
+
+ -- for a sub-tree, we must recurse
+ st = 'TREE =>
+ set1(KDR l,setData.setLeaf)
+ NIL
+ sayMessage ['"Cannot handle set tree node type",:bright st,"yet"]
+ NIL
+
+@
+\subsection{displaySetOptionInformation}
+<<displaySetOptionInformation>>=
+displaySetOptionInformation(arg,setData) ==
+ st := setData.setType
+ -- if the option is a sub-tree, show the full menu
+ st = 'TREE =>
+ displaySetVariableSettings(setData.setLeaf,setData.setName)
+
+ -- otherwise we want to show the current setting
+ centerAndHighlight (STRCONC('"The ",object2String arg,'" Option"),
+ $LINELENGTH,specialChar 'hbar)
+ sayBrightly ['%l,:bright '"Description:",setData.setLabel]
+
+ st = 'FUNCTION =>
+ TERPRI()
+ if functionp(setData.setVar)
+ then FUNCALL(setData.setVar,"%describe%")
+ else sayMSG '" Function not implemented."
+
+ st = 'INTEGER =>
+ sayMessage ['" The",:bright arg,'"option",
+ '" may be followed by an integer in the range",
+ :bright (setData.setLeaf).0,'"to",'%l,
+ :bright (setData.setLeaf).1,'"inclusive.",
+ '" The current setting is",:bright eval setData.setVar]
+
+ st = 'STRING =>
+ sayMessage ['" The",:bright arg,'"option",
+ '" is followed by a string enclosed in double quote marks.", '%l,
+ '" The current setting is",:bright ["_"",eval setData.setVar, "_""]]
+
+ st = 'LITERALS =>
+ sayMessage ['" The",:bright arg,'"option",
+ '" may be followed by any one of the following:"]
+ current := translateTrueFalse2YesNo eval setData.setVar
+ for name in setData.setLeaf repeat
+ if name = current
+ then sayBrightly ['" ->",:bright object2String name]
+ else sayBrightly ['" ",object2String name]
+ sayMessage '" The current setting is indicated within the list."
+ if (setData.setLeaf = '(yes no on off)) or
+ (setData.setLeaf = '(yes no on off long)) then
+ sayMessage [:bright '"yes",'"and",:bright '"no",
+ '"have the same effect as",:bright '"on",'"and",:bright '"off",
+ '"respectively."]
+
+@
+\subsection{displaySetVariableSettings}
+<<displaySetVariableSettings>>=
+displaySetVariableSettings(setTree,label) ==
+ if label = "" then label := '")set"
+ else label := STRCONC('" ",object2String label,'" ")
+ centerAndHighlight(STRCONC('"Current Values of ",label,
+ '" Variables"),$LINELENGTH," ")
+ TERPRI()
+ sayBrightly ["Variable ",
+ "Description ",
+ "Current Value"]
+ SAY fillerSpaces($LINELENGTH,specialChar 'hbar)
+ subtree := nil
+ for setData in setTree repeat
+ null satisfiesUserLevel setData.setLevel => nil
+ setOption := object2String setData.setName
+ setOption := STRCONC(setOption,fillerSpaces(13-#setOption,'" "),
+ setData.setLabel)
+ setOption := STRCONC(setOption,fillerSpaces(55-#setOption,'" "))
+ st := setData.setType
+ st = 'FUNCTION =>
+ opt :=
+ functionp(setData.setVar) => FUNCALL( setData.setVar,"%display%")
+ '"unimplemented"
+ if PAIRP opt then opt := [:[o,'" "] for o in opt]
+ sayBrightly concat(setOption,'%b,opt,'%d)
+ st = 'STRING =>
+ opt := object2String eval setData.setVar
+ sayBrightly [setOption,:bright opt]
+ st = 'INTEGER =>
+ opt := object2String eval setData.setVar
+ sayBrightly [setOption,:bright opt]
+ st = 'LITERALS =>
+ opt := object2String translateTrueFalse2YesNo eval setData.setVar
+ sayBrightly [setOption,:bright opt]
+ st = 'TREE =>
+ sayBrightly [setOption,:bright '"..."]
+ subtree := true
+ subname := object2String setData.setName
+ TERPRI()
+ subtree =>
+ sayBrightly ['"Variables with current values of",:bright '"...",
+ '"have further sub-options. For example,"]
+ sayBrightly ['"issue",:bright '")set ",subname,
+ '" to see what the options are for",:bright subname,'".",'%l,
+ '"For more information, issue",:bright '")help set",'"."]
+
+@
+\section{compiler}
+See the section compiler in setvart.boot.pamphlet\cite{1}.
+\begin{verbatim}
+ Current Values of compiler Variables
+
+Variable Description Current Value
+-----------------------------------------------------------------
+output library in which to place compiled code
+input controls libraries from which to load compiled code
+args arguments for compiling AXIOM code
+ -O -Fasy -Fao -Flsp -laxiom -Mno-AXL_W_WillObsolete
+ -DAxiom -Y $AXIOM/algebra
+
+\end{verbatim}
+<<compilerCode>>=
+<<setAsharpArgs>>
+<<describeAsharpArgs>>
+<<setInputLibrary>>
+<<setOutputLibrary>>
+<<describeOutputLibraryArgs>>
+<<describeInputLibraryArgs>>
+@
+\subsection{setAsharpArgs}
+<<setAsharpArgs>>=
+setAsharpArgs arg ==
+ arg = "%initialize%" =>
+ $asharpCmdlineFlags := '"-O -Fasy -Fao -Flsp -laxiom -Mno-AXL__W__WillObsolete -DAxiom -Y $AXIOM/algebra"
+ arg = "%display%" =>
+ $asharpCmdlineFlags
+ (null arg) or (arg = "%describe%") or (first arg = '_?) =>
+ describeAsharpArgs()
+ $asharpCmdlineFlags := first(arg)
+
+@
+\subsection{describeAsharpArgs}
+<<describeAsharpArgs>>=
+describeAsharpArgs() ==
+ sayBrightly LIST (
+ '%b,'")set compiler args ",'%d,_
+ '"is used to tell AXIOM how to invoke the library compiler ",'%l,_
+ '" when compiling code for AXIOM.",'%l,_
+ '" The args option is followed by a string enclosed in double quotes.",'%l,'%l,_
+ '" The current setting is",'%l,'%b,'"_"",$asharpCmdlineFlags,'"_"",'%d)
+
+@
+\subsection{setInputLibrary}
+<<setInputLibrary>>=
+setInputLibrary arg ==
+ arg = "%initialize%" =>
+ true
+ arg = "%display%" =>
+ [LIBRARY_-NAME(u) for u in INPUT_-LIBRARIES]
+ (null arg) or (arg = "%describe%") or (first arg = '_?) =>
+ describeInputLibraryArgs()
+ arg is [act, filename] and (act := selectOptionLC(act,'(add drop),nil)) =>
+ act = 'add => addInputLibrary TRUENAME STRINGIMAGE filename
+ act = 'drop => dropInputLibrary TRUENAME STRINGIMAGE filename
+ setInputLibrary NIL
+
+@
+\subsection{setOutputLibrary}
+<<setOutputLibrary>>=
+setOutputLibrary arg ==
+ -- Hack to avoid initialising libraries in KCL:
+ not $cclSystem => false
+ arg = "%initialize%" =>
+ $outputLibraryName := nil
+ arg = "%display%" =>
+ $outputLibraryName or '"user.lib"
+ (null arg) or (arg = "%describe%") or (first arg = '_?) =>
+ describeOutputLibraryArgs()
+ not ONEP(#arg) => setOutputLibrary nil
+ -- If the file already exists then use the complete pathname to help
+ -- keep track of it in the case the user issues )cd commands.
+ if FILEP (fn := STRINGIMAGE first arg) then fn := TRUENAME fn
+ openOutputLibrary($outputLibraryName := fn)
+
+@
+\subsection{describeOutputLibraryArgs}
+<<describeOutputLibraryArgs>>=
+describeOutputLibraryArgs() ==
+ sayBrightly LIST (
+ '%b,'")set compiler output library",'%d,_
+ '"is used to tell the compiler where to place", '%l,_
+ '"compiled code generated by the library compiler. By default it goes",'%l,_
+ '"in a file called",'%b, '"user.lib", '%d, '"in the current directory."
+ )
+
+@
+\subsection{describeInputLibraryArgs}
+<<describeInputLibraryArgs>>=
+describeInputLibraryArgs() ==
+ sayBrightly LIST (
+ '%b,'")set compiler input add library",'%d,_
+ '"is used to tell AXIOM to add", '%b, '"library", '%d, '"to",'%l,
+ '"the front of the path which determines where compiled code is loaded from.",_
+ '%l, '%b,'")set compiler input drop library",'%d,_
+ '"is used to tell AXIOM to remove", '%b, '"library", '%d, '%l,_
+ '"from this path."
+ )
+
+@
+\section{expose}
+See the section expose in setvart.boot.pamphlet\cite{1}
+\begin{verbatim}
+---------------------- The expose Option ----------------------
+
+ Description: control interpreter constructor exposure
+
+ The following groups are explicitly exposed in the current
+ frame (called initial ):
+ basic
+ categories
+ naglink
+ anna
+
+ The following constructors are explicitly exposed in the
+ current frame:
+ there are no explicitly exposed constructors
+
+ The following constructors are explicitly hidden in the
+ current frame:
+ there are no explicitly hidden constructors
+
+ When )set expose is followed by no arguments, the information
+ you now see is displayed. When followed by the initialize
+ argument, the exposure group data in the file INTERP.EXPOSED
+ is read and is then available. The arguments add and drop are
+ used to add or drop exposure groups or explicit constructors
+ from the local frame exposure data. Issue
+ )set expose add or )set expose drop
+ for more information.
+\end{verbatim}
+<<exposeCode>>=
+<<setExpose>>
+<<setExposeAdd>>
+<<setExposeAddGroup>>
+<<setExposeAddConstr>>
+<<setExposeDrop>>
+<<setExposeDropGroup>>
+<<setExposeDropConstr>>
+@
+\subsection{setExpose}
+<<setExpose>>=
+setExpose arg ==
+ arg = "%initialize%" => loadExposureGroupData()
+ arg = "%display%" => '"..."
+
+ (null arg) or (arg = "%describe%") or (first arg = '_?) =>
+ -- give msg about exposure groups
+ displayExposedGroups()
+ -- give msg about explicitly exposed constructors
+ sayMSG '" "
+ displayExposedConstructors()
+ -- give msg about explicitly hidden constructors
+ sayMSG '" "
+ displayHiddenConstructors()
+ -- give some more details
+ sayMSG '" "
+ sayKeyedMsg("S2IZ0049D",[namestring pathname ["INTERP","EXPOSED"]])
+
+ arg is [fn,:fnargs] and (fn := selectOptionLC(fn,
+ '(add drop initialize),NIL)) =>
+ fn = 'add => setExposeAdd fnargs
+ fn = 'drop => setExposeDrop fnargs
+ fn = 'initialize => setExpose "%initialize%"
+ NIL
+ setExpose NIL
+
+@
+\subsection{setExposeAdd}
+<<setExposeAdd>>=
+setExposeAdd arg ==
+ (null arg) =>
+ centerAndHighlight ("The add Option",$LINELENGTH,specialChar 'hbar)
+ -- give msg about exposure groups
+ displayExposedGroups()
+ -- give msg about explicitly exposed constructors
+ sayMSG '" "
+ displayExposedConstructors()
+ sayMSG '" "
+ sayKeyedMsg("S2IZ0049E",NIL)
+ arg is [fn,:fnargs] and (fn := selectOptionLC(fn,
+ '(group constructor),NIL)) =>
+ fn = 'group => setExposeAddGroup fnargs
+ fn = 'constructor => setExposeAddConstr fnargs
+ NIL
+ setExposeAdd NIL
+
+@
+\subsection{setExposeAddGroup}
+<<setExposeAddGroup>>=
+setExposeAddGroup arg ==
+ (null arg) =>
+ centerAndHighlight("The group Option",$LINELENGTH,specialChar 'hbar)
+ -- give msg about exposure groups
+ displayExposedGroups()
+ sayMSG '" "
+ sayKeyedMsg("S2IZ0049G",[namestring pathname ["INTERP","EXPOSED"]])
+ sayMSG '" "
+ sayAsManyPerLineAsPossible [object2String first x for x in
+ $globalExposureGroupAlist]
+ for x in arg repeat
+ if PAIRP x then x := QCAR x
+ x = 'all =>
+ $localExposureData.0 :=[first x for x in $globalExposureGroupAlist]
+ $localExposureData.1 :=NIL
+ $localExposureData.2 :=NIL
+ displayExposedGroups()
+ sayMSG '" "
+ displayExposedConstructors()
+ sayMSG '" "
+ displayHiddenConstructors()
+ clearClams()
+ null GETALIST($globalExposureGroupAlist,x) =>
+ sayKeyedMsg("S2IZ0049H",[x])
+ member(x,$localExposureData.0) =>
+ sayKeyedMsg("S2IZ0049I",[x,$interpreterFrameName])
+ $localExposureData.0 := MSORT cons(x,$localExposureData.0)
+ sayKeyedMsg("S2IZ0049R",[x,$interpreterFrameName])
+ clearClams()
+
+@
+\subsection{setExposeAddConstr}
+<<setExposeAddConstr>>=
+setExposeAddConstr arg ==
+ (null arg) =>
+ centerAndHighlight ("The constructor Option",$LINELENGTH,
+ specialChar 'hbar)
+ -- give msg about explicitly exposed constructors
+ displayExposedConstructors()
+ for x in arg repeat
+ x := unabbrev x
+ if PAIRP x then x := QCAR x
+ -- if the constructor is known, we know what type it is
+ null GETDATABASE(x,'CONSTRUCTORKIND) =>
+ sayKeyedMsg("S2IZ0049J",[x])
+ member(x,$localExposureData.1) =>
+ sayKeyedMsg("S2IZ0049K",[x,$interpreterFrameName])
+ -- if the constructor is explicitly hidden, then remove that
+ if member(x,$localExposureData.2) then
+ $localExposureData.2 := delete(x,$localExposureData.2)
+ $localExposureData.1 := MSORT cons(x,$localExposureData.1)
+ clearClams()
+ sayKeyedMsg("S2IZ0049P",[x,$interpreterFrameName])
+
+@
+\subsection{setExposeDrop}
+<<setExposeDrop>>=
+setExposeDrop arg ==
+ (null arg) =>
+ centerAndHighlight ("The drop Option",$LINELENGTH,specialChar 'hbar)
+ -- give msg about explicitly hidden constructors
+ displayHiddenConstructors()
+ sayMSG '" "
+ sayKeyedMsg("S2IZ0049F",NIL)
+ arg is [fn,:fnargs] and (fn := selectOptionLC(fn,
+ '(group constructor),NIL)) =>
+ fn = 'group => setExposeDropGroup fnargs
+ fn = 'constructor => setExposeDropConstr fnargs
+ NIL
+ setExposeDrop NIL
+
+@
+\subsection{setExposeDropGroup}
+<<setExposeDropGroup>>=
+setExposeDropGroup arg ==
+ (null arg) =>
+ centerAndHighlight ("The group Option",$LINELENGTH,specialChar 'hbar)
+ sayKeyedMsg("S2IZ0049L",NIL)
+ sayMSG '" "
+ displayExposedGroups()
+ for x in arg repeat
+ if PAIRP x then x := QCAR x
+ x = 'all =>
+ $localExposureData.0 := NIL
+ $localExposureData.1 := NIL
+ $localExposureData.2 := NIL
+ displayExposedGroups()
+ sayMSG '" "
+ displayExposedConstructors()
+ sayMSG '" "
+ displayHiddenConstructors()
+ clearClams()
+ member(x,$localExposureData.0) =>
+ $localExposureData.0 := delete(x,$localExposureData.0)
+ clearClams()
+ sayKeyedMsg("S2IZ0049S",[x,$interpreterFrameName])
+ GETALIST($globalExposureGroupAlist,x) =>
+ sayKeyedMsg("S2IZ0049I",[x,$interpreterFrameName])
+ sayKeyedMsg("S2IZ0049H",[x])
+
+@
+\subsection{setExposeDropConstr}
+<<setExposeDropConstr>>=
+setExposeDropConstr arg ==
+ (null arg) =>
+ centerAndHighlight ("The constructor Option",$LINELENGTH,
+ specialChar 'hbar)
+ sayKeyedMsg("S2IZ0049N",NIL)
+ sayMSG '" "
+ displayExposedConstructors()
+ sayMSG '" "
+ displayHiddenConstructors()
+ for x in arg repeat
+ x := unabbrev x
+ if PAIRP x then x := QCAR x
+ -- if the constructor is known, we know what type it is
+ null GETDATABASE(x,'CONSTRUCTORKIND) =>
+ sayKeyedMsg("S2IZ0049J",[x])
+ member(x,$localExposureData.2) =>
+ sayKeyedMsg("S2IZ0049O",[x,$interpreterFrameName])
+ if member(x,$localExposureData.1) then
+ $localExposureData.1 := delete(x,$localExposureData.1)
+ $localExposureData.2 := MSORT cons(x,$localExposureData.2)
+ clearClams()
+ sayKeyedMsg("S2IZ0049Q",[x,$interpreterFrameName])
+
+@
+\section{fortran calling}
+See the section calling in servart.boot.pamphlet.
+\begin{verbatim}
+ Current Values of calling Variables
+
+Variable Description Current Value
+-----------------------------------------------------------------
+tempfile set location of temporary data files /tmp/
+directory set location of generated FORTRAN files ./
+linker linker arguments (e.g. libraries to search) -lxlf
+
+\end{verbatim}
+<<fortrancallingCode>>=
+<<setFortTmpDir>>
+<<validateOutputDirectory>>
+<<describeSetFortTmpDir>>
+<<setFortDir>>
+<<describeSetFortDir>>
+<<setLinkerArgs>>
+<<describeSetLinkerArgs>>
+@
+\subsection{setFortTmpDir}
+<<setFortTmpDir>>=
+setFortTmpDir arg ==
+
+ arg = "%initialize%" =>
+ $fortranTmpDir := '"/tmp/"
+
+ arg = "%display%" =>
+ STRINGP $fortranTmpDir => $fortranTmpDir
+ PNAME $fortranTmpDir
+
+ (null arg) or (arg = "%describe%") or (first arg = '_?) =>
+ describeSetFortTmpDir()
+
+ -- try to figure out what the argument is
+
+ -- VM code - must be an accessed disk mode [mode]
+ not (mode := validateOutputDirectory arg) =>
+ sayBrightly ['" Sorry, but your argument(s)",:bright arg,
+ '"is(are) not valid.",'%l]
+ describeSetFortTmpDir()
+ $fortranTmpDir := mode
+
+@
+\subsection{validateOutputDirectory}
+<<validateOutputDirectory>>=
+validateOutputDirectory x ==
+ AND(PATHNAME_-DIRECTORY(PROBE_-FILE(CAR(x))), NOT PATHNAME_-NAME (PROBE_-FILE(CAR(x)))) =>
+ CAR(x)
+ NIL
+
+@
+\subsection{describeSetFortTmpDir}
+<<describeSetFortTmpDir>>=
+describeSetFortTmpDir() ==
+ sayBrightly LIST (
+ '%b,'")set fortran calling tempfile",'%d,_
+ '" is used to tell AXIOM where",'%l,_
+ '" to place intermediate FORTRAN data files . This must be the ",'%l,_
+ '" name of a valid existing directory to which you have permission ",'%l,_
+ '" to write (including the final slash).",'%l,'%l,_
+ '" Syntax:",'%l,_
+ '" )set fortran calling tempfile DIRECTORYNAME",'%l,'%l,_
+ '" The current setting is",'%b,$fortranTmpDir,'%d)
+
+@
+\subsection{setFortDir}
+<<setFortDir>>=
+setFortDir arg ==
+ arg = "%initialize%" =>
+ $fortranDirectory := '"./"
+
+ arg = "%display%" =>
+ STRINGP $fortranDirectory => $fortranDirectory
+ PNAME $fortranDirectory
+
+ (null arg) or (arg = "%describe%") or (first arg = '_?) =>
+ describeSetFortDir()
+
+ -- try to figure out what the argument is
+
+ -- VM code - must be an accessed disk mode [mode]
+ not (mode := validateOutputDirectory arg) =>
+ sayBrightly ['" Sorry, but your argument(s)",:bright arg,
+ '"is(are) not valid.",'%l]
+ describeSetFortDir()
+ $fortranDirectory := mode
+
+@
+\subsection{describeSetFortDir}
+<<describeSetFortDir>>=
+describeSetFortDir() ==
+ sayBrightly LIST (
+ '%b,'")set fortran calling directory",'%d,_
+ '" is used to tell AXIOM where",'%l,_
+ '" to place generated FORTRAN files. This must be the name ",'%l,_
+ '" of a valid existing directory to which you have permission ",'%l,_
+ '" to write (including the final slash).",'%l,'%l,_
+ '" Syntax:",'%l,_
+ '" )set fortran calling directory DIRECTORYNAME",'%l,'%l,_
+ '" The current setting is",'%b,$fortranDirectory,'%d)
+
+@
+\subsection{setLinkerArgs}
+<<setLinkerArgs>>=
+setLinkerArgs arg ==
+
+ arg = "%initialize%" =>
+ $fortranLibraries := '"-lxlf"
+ arg = "%display%" => object2String $fortranLibraries
+ (null arg) or (arg = "%describe%") or (first arg = '_?) =>
+ describeSetLinkerArgs()
+ LISTP(arg) and STRINGP(first arg) =>
+ $fortranLibraries := first(arg)
+ describeSetLinkerArgs()
+
+@
+\subsection{describeSetLinkerArgs}
+<<describeSetLinkerArgs>>=
+describeSetLinkerArgs() ==
+ sayBrightly LIST (
+ '%b,'")set fortran calling linkerargs",'%d,_
+ '" is used to pass arguments to the linker",'%l,_
+ '" when using ",'%b,'"mkFort",'%d,_
+ '" to create functions which call Fortran code.",'%l,_
+ '" For example, it might give a list of libraries to be searched,",'%l,_
+ '" and their locations.",'%l,_
+ '" The string is passed verbatim, so must be the correct syntax for",'%l,_
+ '" the particular linker being used.",'%l,'%l,_
+ '" Example: )set fortran calling linker _"-lxlf_"",'%l,'%l,_
+ '" The current setting is",'%b,$fortranLibraries,'%d)
+
+@
+\section{functions}
+See the section functions in setvart.boot.pamphlet\cite{1}
+\begin{verbatim}
+ Current Values of functions Variables
+
+Variable Description Current Value
+-----------------------------------------------------------------
+cache number of function results to cache 0
+compile compile, don't just define function bodies off
+recurrence specially compile recurrence relations on
+
+\end{verbatim}
+<<functionsCode>>=
+<<setFunctionsCache>>
+<<countCache>>
+<<describeSetFunctionsCache>>
+<<sayAllCacheCounts>>
+<<sayCacheCount>>
+@
+\subsection{setFunctionsCache}
+<<setFunctionsCache>>=
+setFunctionsCache arg ==
+ $options : local := NIL
+ arg = "%initialize%" =>
+ $cacheCount := 0
+ $cacheAlist := NIL
+ arg = "%display%" =>
+ null $cacheAlist => object2String $cacheCount
+ '"..."
+ (null arg) or (arg = "%describe%") or (first arg = '_?) =>
+ describeSetFunctionsCache()
+ TERPRI()
+ sayAllCacheCounts()
+ n := first arg
+ (n ^= 'all) and ((not FIXP n) or (n < 0)) =>
+ sayMessage ['"Your value of",:bright n,'"is invalid because ..."]
+ describeSetFunctionsCache()
+ terminateSystemCommand()
+ if (rest arg) then $options := [['vars,:rest arg]]
+ countCache n
+
+@
+\subsection{countCache}
+<<countCache>>=
+countCache n ==
+ $options =>
+ $options is [["vars",:l]] =>
+ for x in l repeat
+ NULL IDENTP x => sayKeyedMsg("S2IF0007",[x])
+ $cacheAlist:= insertAlist(x,n,$cacheAlist)
+ cacheCountName:= INTERNL(x,'";COUNT")
+ SET(cacheCountName,n)
+ sayCacheCount(x,n)
+ optionError(CAAR $options,nil)
+ sayCacheCount(nil,$cacheCount:= n)
+
+@
+\subsection{describeSetFunctionsCache}
+<<describeSetFunctionsCache>>=
+describeSetFunctionsCache() ==
+ sayBrightly LIST(
+ '%b,'")set functions cache",'%d,'"is used to tell AXIOM how many",'%l,_
+ '" values computed by interpreter functions should be saved. This can save ",'%l, _
+ '" quite a bit of time in recursive functions, though one must consider that",'%l,_
+ '" the cached values will take up (perhaps valuable) room in the workspace.",'%l,'%l,_
+ '" The value given after",'%b,'"cache",'%d,'"must either be the",_
+ '" word",'%b,'"all",'%d,'"or a positive",'%l,_
+ '" integer. This may be followed by any number of function names whose cache",'%l,_
+ '" sizes you wish to so set. If no functions are given, the default cache",'%l,_
+ '" size is set.",'%l,'" Examples:",_
+ '" )set fun cache all )set fun cache 10 f g Legendre")
+
+@
+\subsection{sayAllCacheCounts}
+<<sayAllCacheCounts>>=
+sayAllCacheCounts () ==
+ sayCacheCount(nil,$cacheCount)
+ $cacheAlist =>
+ TERPRI()
+-- SAY '" However,"
+ for [x,:n] in $cacheAlist | n ^= $cacheCount repeat sayCacheCount(x,n)
+
+@
+\subsection{sayCacheCount}
+<<sayCacheCount>>=
+sayCacheCount(fn,n) ==
+ prefix:=
+ fn => ["function",:bright linearFormatName fn]
+ n = 0 => ["interpreter functions "]
+ ["In general, interpreter functions "]
+ n = 0 =>
+ fn =>
+ sayBrightly ['" Caching for ",:prefix,
+ '"is turned off"]
+ sayBrightly '" In general, functions will cache no returned values."
+ phrase:=
+ n="all" => [:bright "all","values."]
+ n=1 => [" only the last value."]
+ [" the last",:bright n,"values."]
+ sayBrightly ['" ",:prefix,'"will cache",:phrase]
+
+@
+\section{history}
+See the section history in setvart.boot.pamphlet\cite{1}
+\begin{verbatim}
+--------------------- The history Option ----------------------
+
+ Description: save workspace values in a history file
+
+ The history option may be followed by any one of the
+ following:
+
+ -> on
+ off
+
+ The current setting is indicated within the list.
+
+\end{verbatim}
+<<historyCode>>=
+<<setHistory>>
+@
+\subsection{setHistory}
+<<setHistory>>=
+setHistory arg ==
+ -- this is just a front end for the history functions
+ arg = "%initialize%" => nil
+
+ current := object2String translateTrueFalse2YesNo $HiFiAccess
+ arg = "%display%" => current
+
+ (null arg) or (arg = "%describe%") or (first arg = '_?) =>
+ sayMessage ['" The",:bright '"history",'"option",
+ '" may be followed by any one of the following:"]
+ for name in '("on" "off" "yes" "no") repeat
+ if name = current
+ then sayBrightly ['" ->",:bright name]
+ else sayBrightly ['" ",name]
+ TERPRI()
+ sayBrightly '" The current setting is indicated within the list."
+ sayBrightly [:bright '"yes",'"and",:bright '"no",
+ '"have the same effect as",:bright '"on",'"and",:bright '"off",
+ '"respectively."]
+ if $useInternalHistoryTable
+ then wh := '"memory"
+ else wh := '"a file"
+ sayBrightly ['%l,'" When the history facility is active, the data",
+ '" is kept in ",wh,'"."]
+ sayMessage ['" Issue",:bright '")help history",
+ '"for more information."]
+
+ arg is [fn] and
+ (fn := DOWNCASE(fn)) in '(y n ye yes no on of off) =>
+ $options := [[fn]]
+ historySpad2Cmd()
+ setHistory NIL
+
+@
+\section{kernel}
+See the section kernel in setvart.boot.pamphlet\cite{1}
+\begin{verbatim}
+ Current Values of kernel Variables
+
+Variable Description Current Value
+-----------------------------------------------------------------
+warn warn when re-definition is attempted off
+protect prevent re-definition of kernel functions off
+
+\end{verbatim}
+<<kernelCode>>=
+<<describeProtectedSymbolsWarning>>
+<<protectedSymbolsWarning>>
+<<describeProtectSymbols>>
+<<protectSymbols>>
+@
+\subsection{describeProtectedSymbolsWarning}
+<<describeProtectedSymbolsWarning>>=
+describeProtectedSymbolsWarning() ==
+ sayBrightly LIST(
+ '"Some AXIOM library functions are compiled into the kernel for efficiency",_
+ '%l,'"reasons. To prevent them being re-defined when loaded from a library",_
+ '%l,'"they are specially protected. If a user wishes to know when an attempt",_
+ '%l,'"is made to re-define such a function, he or she should issue the command:",_
+ '%l,'" )set kernel warn on",_
+ '%l,'"To restore the default behaviour, he or she should issue the command:",_
+ '%l,'" )set kernel warn off")
+
+@
+\subsection{protectedSymbolsWarning}
+<<protectedSymbolsWarning>>=
+protectedSymbolsWarning arg ==
+ arg = "%initialize%" => PROTECTED_-SYMBOL_-WARN(false)
+ arg = "%display%" =>
+ v := PROTECTED_-SYMBOL_-WARN(true)
+ PROTECTED_-SYMBOL_-WARN(v)
+ v => '"on"
+ '"off"
+ (null arg) or (arg = "%describe%") or (first arg = '_?) =>
+ describeProtectedSymbolsWarning()
+ PROTECTED_-SYMBOL_-WARN translateYesNo2TrueFalse first arg
+
+@
+\subsection{describeProtectSymbols}
+<<describeProtectSymbols>>=
+describeProtectSymbols() ==
+ sayBrightly LIST(
+ '"Some AXIOM library functions are compiled into the kernel for efficiency",_
+ '%l,'"reasons. To prevent them being re-defined when loaded from a library",_
+ '%l,'"they are specially protected. If a user wishes to re-define these",_
+ '%l,'"functions, he or she should issue the command:",_
+ '%l,'" )set kernel protect off",_
+ '%l,'"To restore the default behaviour, he or she should issue the command:",_
+ '%l,'" )set kernel protect on")
+
+@
+\subsection{protectSymbols}
+<<protectSymbols>>=
+protectSymbols arg ==
+ arg = "%initialize%" => PROTECT_-SYMBOLS(true)
+ arg = "%display%" =>
+ v := PROTECT_-SYMBOLS(true)
+ PROTECT_-SYMBOLS(v)
+ v => '"on"
+ '"off"
+ (null arg) or (arg = "%describe%") or (first arg = '_?) =>
+ describeProtectSymbols()
+ PROTECT_-SYMBOLS translateYesNo2TrueFalse first arg
+
+@
+\section{naglink}
+See the section naglink in setvart.boot.pamphlet\cite{1}
+\begin{verbatim}
+ Current Values of naglink Variables
+
+Variable Description Current Value
+-----------------------------------------------------------------
+host internet address of host for NAGLink localhost
+persistence number of (fortran) functions to remember 1
+messages show NAGLink messages on
+double enforce DOUBLE PRECISION ASPs on
+
+\end{verbatim}
+<<naglinkCode>>=
+<<setNagHost>>
+<<describeSetNagHost>>
+<<setFortPers>>
+<<describeFortPersistence>>
+@
+\subsection{setNagHost}
+<<setNagHost>>=
+setNagHost arg ==
+ arg = "%initialize%" =>
+ $nagHost := '"localhost"
+ arg = "%display%" =>
+ object2String $nagHost
+ (null arg) or (arg = "%describe%") or (first arg = '_?) =>
+ describeSetNagHost()
+ $nagHost := object2String arg
+
+@
+\subsection{describeSetNagHost}
+<<describeSetNagHost>>=
+describeSetNagHost() ==
+ sayBrightly LIST (
+ '%b,'")set naglink host",'%d,_
+ '"is used to tell AXIOM which host to contact for",'%l,_
+ '" a NAGLink request. An Internet address should be supplied. The host",'%l,_
+ '" specified must be running the NAGLink daemon.",'%l,'%l,_
+ '" The current setting is",'%b,$nagHost,'%d)
+
+@
+\subsection{setFortPers}
+<<setFortPers>>=
+setFortPers arg ==
+ arg = "%initialize%" =>
+ $fortPersistence := 1
+ arg = "%display%" =>
+ $fortPersistence
+ (null arg) or (arg = "%describe%") or (first arg = '_?) =>
+ describeFortPersistence()
+ n := first arg
+ ((not FIXP n) or (n < 0)) =>
+ sayMessage ['"Your value of",:bright n,'"is invalid because ..."]
+ describeFortPersistence()
+ terminateSystemCommand()
+ $fortPersistence := first(arg)
+
+@
+\subsection{describeFortPersistence}
+<<describeFortPersistence>>=
+describeFortPersistence() ==
+ sayBrightly LIST (
+ '%b,'")set naglink persistence",'%d,_
+ '"is used to tell the ",'%b,"nagd",'%d," daemon how many ASP",'%l,_
+ '" source and object files to keep around in case you reuse them. This helps",'%l,_
+ '" to avoid needless recompilations. The number specified should be a ",'%l,_
+ '" non-negative integer.", '%l,'%l,_
+ '" The current setting is",'%b,$fortPersistence,'%d)
+
+@
+\section{output algebra}
+See the subsection output algebra in setvart.boot.pamphlet\cite{1}
+\begin{verbatim}
+--------------------- The algebra Option ----------------------
+
+ Description: display output in algebraic form
+
+ )set output algebra is used to tell AXIOM to turn algebra-style
+ output printing on and off, and where to place the output. By
+ default, the destination for the output is the screen but
+ printing is turned off.
+
+Syntax: )set output algebra <arg>
+ where arg can be one of
+ on turn algebra printing on (default state)
+ off turn algebra printing off
+ console send algebra output to screen (default state)
+ fp<.fe> send algebra output to file with file prefix fp
+ and file extension .fe. If not given,
+ .fe defaults to .spout.
+
+If you wish to send the output to a file, you may need to issue
+this command twice: once with on and once with the file name.
+For example, to send algebra output to the file polymer.spout,
+issue the two commands
+
+ )set output algebra on
+ )set output algebra polymer
+
+The output is placed in the directory from which you invoked
+AXIOM or the one you set with the )cd system command.
+The current setting is: On:CONSOLE
+\end{verbatim}
+<<outputalgebraCode>>=
+<<setOutputAlgebra>>
+<<describeSetOutputAlgebra>>
+@
+\subsection{setOutputAlgebra}
+<<setOutputAlgebra>>=
+setOutputAlgebra arg ==
+ arg = "%initialize%" =>
+ $algebraOutputStream :=
+ DEFIOSTREAM('((MODE . OUTPUT) (DEVICE . CONSOLE)),255,0)
+ $algebraOutputFile := '"CONSOLE"
+ $algebraFormat := true
+
+ arg = "%display%" =>
+ if $algebraFormat then label := '"On:" else label := '"Off:"
+ STRCONC(label,$algebraOutputFile)
+
+ (null arg) or (arg = "%describe%") or (first arg = '_?) =>
+ describeSetOutputAlgebra()
+
+ -- try to figure out what the argument is
+
+ if arg is [fn] and
+ fn in '(Y N YE YES NO O ON OF OFF CONSOLE y n ye yes no o on of off console)
+ then 'ok
+ else arg := [fn,'spout]
+
+ arg is [fn] =>
+ UPCASE(fn) in '(Y N YE O OF) =>
+ sayKeyedMsg("S2IV0002",'(algebra algebra))
+ UPCASE(fn) in '(NO OFF) => $algebraFormat := NIL
+ UPCASE(fn) in '(YES ON) => $algebraFormat := true
+ UPCASE(fn) = 'CONSOLE =>
+ SHUT $algebraOutputStream
+ $algebraOutputStream :=
+ DEFIOSTREAM('((MODE . OUTPUT) (DEVICE . CONSOLE)),255,0)
+ $algebraOutputFile := '"CONSOLE"
+
+ (arg is [fn,ft]) or (arg is [fn,ft,fm]) => -- aha, a file
+ if (ptype := pathnameType fn) then
+ fn := STRCONC(pathnameDirectory fn,pathnameName fn)
+ ft := ptype
+ if null fm then fm := 'A
+ filename := $FILEP(fn,ft,fm)
+ null filename =>
+ sayKeyedMsg("S2IV0003",[fn,ft,fm])
+ (testStream := MAKE_-OUTSTREAM(filename,255,0)) =>
+ SHUT $algebraOutputStream
+ $algebraOutputStream := testStream
+ $algebraOutputFile := object2String filename
+ sayKeyedMsg("S2IV0004",['"Algebra",$algebraOutputFile])
+ sayKeyedMsg("S2IV0003",[fn,ft,fm])
+
+ sayKeyedMsg("S2IV0005",NIL)
+ describeSetOutputAlgebra()
+
+@
+\subsection{describeSetOutputAlgebra}
+<<describeSetOutputAlgebra>>=
+describeSetOutputAlgebra() ==
+ sayBrightly LIST ('%b,'")set output algebra",'%d,_
+ '"is used to tell AXIOM to turn algebra-style output",'%l,_
+ '"printing on and off, and where to place the output. By default, the",'%l,_
+ '"destination for the output is the screen but printing is turned off.",'%l,_
+ '%l,_
+ '"Syntax: )set output algebra <arg>",'%l,_
+ '" where arg can be one of",'%l,_
+ '" on turn algebra printing on (default state)",'%l,_
+ '" off turn algebra printing off",'%l,_
+ '" console send algebra output to screen (default state)",'%l,_
+ '" fp<.fe> send algebra output to file with file prefix fp",'%l,_
+ '" and file extension .fe. If not given, .fe defaults to .spout.",'%l,
+ '%l,_
+ '"If you wish to send the output to a file, you may need to issue this command",'%l,_
+ '"twice: once with",'%b,'"on",'%d,'"and once with the file name. For example, to send",'%l,_
+ '"algebra output to the file",'%b,'"polymer.spout,",'%d,'"issue the two commands",'%l,_
+ '%l,_
+ '" )set output algebra on",'%l,_
+ '" )set output algebra polymer",'%l,_
+ '%l,_
+ '"The output is placed in the directory from which you invoked AXIOM or",'%l,_
+ '"the one you set with the )cd system command.",'%l,_
+ '"The current setting is: ",'%b,setOutputAlgebra "%display%",'%d)
+
+
+@
+\section{output characters}
+See the subsection output characters in setvart.boot.pamphlet\cite{1}
+\begin{verbatim}
+-------------------- The characters Option --------------------
+
+ Description: choose special output character set
+
+
+ The characters option may be followed by any one of the
+ following:
+
+ default
+ -> plain
+
+ The current setting is indicated within the list. This
+ option determines the special characters used for algebraic
+ output. This is what the current choice of special characters
+ looks like:
+ ulc is shown as + urc is shown as +
+ llc is shown as + lrc is shown as +
+ vbar is shown as | hbar is shown as -
+ quad is shown as ? lbrk is shown as [
+ rbrk is shown as ] lbrc is shown as {
+ rbrc is shown as } ttee is shown as +
+ btee is shown as + rtee is shown as +
+ ltee is shown as + ctee is shown as +
+ bslash is shown as \
+\end{verbatim}
+<<outputcharactersCode>>=
+<<setOutputCharacters>>
+@
+\subsection{setOutputCharacters}
+<<setOutputCharacters>>=
+setOutputCharacters arg ==
+ -- this sets the special character set
+ arg = "%initialize%" =>
+ $specialCharacters := $plainRTspecialCharacters
+
+ current :=
+ $specialCharacters = $RTspecialCharacters => '"default"
+ $specialCharacters = $plainRTspecialCharacters => '"plain"
+ '"unknown"
+ arg = "%display%" => current
+
+ (null arg) or (arg = "%describe%") or (first arg = '_?) =>
+ sayMessage ['" The",:bright '"characters",'"option",
+ '" may be followed by any one of the following:"]
+ for name in '("default" "plain") repeat
+ if name = current
+ then sayBrightly ['" ->",:bright name]
+ else sayBrightly ['" ",name]
+ TERPRI()
+ sayBrightly '" The current setting is indicated within the list. This option determines "
+ sayBrightly '" the special characters used for algebraic output. This is what the"
+ sayBrightly '" current choice of special characters looks like:"
+ l := NIL
+ for [char,:.] in $specialCharacterAlist repeat
+ s := STRCONC('" ",PNAME char,'" is shown as ",
+ PNAME specialChar(char))
+ l := cons(s,l)
+ sayAsManyPerLineAsPossible reverse l
+
+ arg is [fn] and (fn := DOWNCASE(fn)) =>
+ fn = 'default => $specialCharacters := $RTspecialCharacters
+ fn = 'plain => $specialCharacters := $plainRTspecialCharacters
+ setOutputCharacters NIL
+ setOutputCharacters NIL
+
+@
+\section{output fortran}
+See the subsection output fortran in setvart.boot.pamphlet\cite{1}
+\begin{verbatim}
+--------------------- The fortran Option ----------------------
+
+ Description: create output in FORTRAN format
+
+ )set output fortran is used to tell AXIOM to turn FORTRAN-style
+ output printing on and off, and where to place the output. By
+ default, the destination for the output is the screen but
+ printing is turned off.
+
+Also See: )set fortran
+
+Syntax: )set output fortran <arg>
+ where arg can be one of
+ on turn FORTRAN printing on
+ off turn FORTRAN printing off (default state)
+ console send FORTRAN output to screen (default state)
+ fp<.fe> send FORTRAN output to file with file prefix
+ fp and file extension .fe. If not given,
+ .fe defaults to .sfort.
+
+If you wish to send the output to a file, you must issue
+this command twice: once with on and once with the file name.
+For example, to send FORTRAN output to the file polymer.sfort,
+ issue the two commands
+
+ )set output fortran on
+ )set output fortran polymer
+
+The output is placed in the directory from which you invoked
+AXIOM or the one you set with the )cd system command.
+The current setting is: Off:CONSOLE
+\end{verbatim}
+<<outputfortranCode>>=
+<<makeStream>>
+<<setOutputFortran>>
+<<describeSetOutputFortran>>
+@
+\subsection{makeStream}
+<<makeStream>>=
+makeStream(append,filename,i,j) ==
+ append => MAKE_-APPENDSTREAM(filename,i,j)
+ MAKE_-OUTSTREAM(filename,i,j)
+
+@
+\subsection{setOutputFortran}
+<<setOutputFortran>>=
+setOutputFortran arg ==
+ arg = "%initialize%" =>
+ $fortranOutputStream :=
+ DEFIOSTREAM('((MODE . OUTPUT) (DEVICE . CONSOLE)),255,0)
+ $fortranOutputFile := '"CONSOLE"
+ $fortranFormat := NIL
+
+ arg = "%display%" =>
+ if $fortranFormat then label := '"On:" else label := '"Off:"
+ STRCONC(label,$fortranOutputFile)
+
+ (null arg) or (arg = "%describe%") or (first arg = '_?) =>
+ describeSetOutputFortran()
+
+ -- try to figure out what the argument is
+
+ append := NIL
+ quiet := NIL
+ while LISTP arg and UPCASE(first arg) in '(APPEND QUIET) repeat
+ if UPCASE first(arg) = 'APPEND then append := true
+ else if UPCASE first(arg) = 'QUIET then quiet := true
+ arg := rest(arg)
+
+ if arg is [fn] and
+ fn in '(Y N YE YES NO O ON OF OFF CONSOLE y n ye yes no o on of off console)
+ then 'ok
+ else arg := [fn,'sfort]
+
+ arg is [fn] =>
+ UPCASE(fn) in '(Y N YE O OF) =>
+ sayKeyedMsg("S2IV0002",'(FORTRAN fortran))
+ UPCASE(fn) in '(NO OFF) => $fortranFormat := NIL
+ UPCASE(fn) in '(YES ON) => $fortranFormat := true
+ UPCASE(fn) = 'CONSOLE =>
+ SHUT $fortranOutputStream
+ $fortranOutputStream :=
+ DEFIOSTREAM('((MODE . OUTPUT) (DEVICE . CONSOLE)),255,0)
+ $fortranOutputFile := '"CONSOLE"
+
+ (arg is [fn,ft]) or (arg is [fn,ft,fm]) => -- aha, a file
+ if (ptype := pathnameType fn) then
+ fn := STRCONC(pathnameDirectory fn,pathnameName fn)
+ ft := ptype
+ if null fm then fm := 'A
+ filename := $FILEP(fn,ft,fm)
+ null filename => sayKeyedMsg("S2IV0003",[fn,ft,fm])
+ (testStream := makeStream(append,filename,255,0)) =>
+ SHUT $fortranOutputStream
+ $fortranOutputStream := testStream
+ $fortranOutputFile := object2String filename
+ if null quiet then sayKeyedMsg("S2IV0004",['FORTRAN,$fortranOutputFile])
+ if null quiet then sayKeyedMsg("S2IV0003",[fn,ft,fm])
+ if null quiet then sayKeyedMsg("S2IV0005",NIL)
+ describeSetOutputFortran()
+
+@
+\subsection{describeSetOutputFortran}
+<<describeSetOutputFortran>>=
+describeSetOutputFortran() ==
+ sayBrightly LIST ('%b,'")set output fortran",'%d,_
+ '"is used to tell AXIOM to turn FORTRAN-style output",'%l,_
+ '"printing on and off, and where to place the output. By default, the",'%l,_
+ '"destination for the output is the screen but printing is turned off.",'%l,_
+ '%l,_
+ '"Also See: )set fortran",'%l,
+ '%l,_
+ '"Syntax: )set output fortran <arg>",'%l,_
+ '" where arg can be one of",'%l,_
+ '" on turn FORTRAN printing on",'%l,_
+ '" off turn FORTRAN printing off (default state)",'%l,_
+ '" console send FORTRAN output to screen (default state)",'%l,_
+ '" fp<.fe> send FORTRAN output to file with file prefix fp and file",'%l,_
+ '" extension .fe. If not given, .fe defaults to .sfort.",'%l,
+ '%l,_
+ '"If you wish to send the output to a file, you must issue this command",'%l,_
+ '"twice: once with",'%b,'"on",'%d,'"and once with the file name. For example, to send",'%l,_
+ '"FORTRAN output to the file",'%b,'"polymer.sfort,",'%d,'"issue the two commands",'%l,_
+ '%l,_
+ '" )set output fortran on",'%l,_
+ '" )set output fortran polymer",'%l,_
+ '%l,_
+ '"The output is placed in the directory from which you invoked AXIOM or",'%l,_
+ '"the one you set with the )cd system command.",'%l,_
+ '"The current setting is: ",'%b,setOutputFortran "%display%",'%d)
+
+@
+\section{output openmath}
+See the subsection output openmath in setvart.boot.pamphlet\cite{1}
+\begin{verbatim}
+------------------ The openmath Option ------------------------
+
+ Description: create output in OpenMath style
+
+ )set output tex is used to tell AXIOM to turn TeX-style output
+printing on and off, and where to place the output. By default,
+the destination for the output is the screen but printing is
+turned off.
+
+Syntax: )set output tex <arg>
+ where arg can be one of
+ on turn TeX printing on
+ off turn TeX printing off (default state)
+ console send TeX output to screen (default state)
+ fp<.fe> send TeX output to file with file prefix fp
+ and file extension .fe. If not given,
+ .fe defaults to .som.
+
+If you wish to send the output to a file, you must issue
+this command twice: once with on and once with the file name.
+For example, to send TeX output to the file polymer.som,
+issue the two commands
+
+ )set output tex on
+ )set output tex polymer
+
+The output is placed in the directory from which you invoked
+AXIOM or the one you set with the )cd system command.
+The current setting is: Off:CONSOLE
+<<outputopenmathCode>>=
+<<setOutputOpenMath>>
+<<describeSetOutputOpenMath>>
+@
+\subsection{setOutputOpenMath}
+<<setOutputOpenMath>>=
+setOutputOpenMath arg ==
+ arg = "%initialize%" =>
+ $openMathOutputStream :=
+ DEFIOSTREAM('((MODE . OUTPUT) (DEVICE . CONSOLE)),255,0)
+ $openMathOutputFile := '"CONSOLE"
+ $openMathFormat := NIL
+
+ arg = "%display%" =>
+ if $openMathFormat then label := '"On:" else label := '"Off:"
+ STRCONC(label,$openMathOutputFile)
+
+ (null arg) or (arg = "%describe%") or (first arg = '_?) =>
+ describeSetOutputOpenMath()
+
+ -- try to figure out what the argument is
+
+ if arg is [fn] and
+ fn in '(Y N YE YES NO O ON OF OFF CONSOLE y n ye yes no o on of off console)
+ then 'ok
+ else arg := [fn,'som]
+
+ arg is [fn] =>
+ UPCASE(fn) in '(Y N YE O OF) =>
+ sayKeyedMsg("S2IV0002",'(OpenMath openmath))
+ UPCASE(fn) in '(NO OFF) => $openMathFormat := NIL
+ UPCASE(fn) in '(YES ON) => $openMathFormat := true
+ UPCASE(fn) = 'CONSOLE =>
+ SHUT $openMathOutputStream
+ $openMathOutputStream :=
+ DEFIOSTREAM('((MODE . OUTPUT) (DEVICE . CONSOLE)),255,0)
+ $openMathOutputFile := '"CONSOLE"
+
+ (arg is [fn,ft]) or (arg is [fn,ft,fm]) => -- aha, a file
+ if (ptype := pathnameType fn) then
+ fn := STRCONC(pathnameDirectory fn,pathnameName fn)
+ ft := ptype
+ if null fm then fm := 'A
+ filename := $FILEP(fn,ft,fm)
+ null filename =>
+ sayKeyedMsg("S2IV0003",[fn,ft,fm])
+ (testStream := MAKE_-OUTSTREAM(filename,255,0)) =>
+ SHUT $openMathOutputStream
+ $openMathOutputStream := testStream
+ $openMathOutputFile := object2String filename
+ sayKeyedMsg("S2IV0004",['"OpenMath",$openMathOutputFile])
+ sayKeyedMsg("S2IV0003",[fn,ft,fm])
+
+ sayKeyedMsg("S2IV0005",NIL)
+ describeSetOutputOpenMath()
+
+@
+\subsection{describeSetOutputOpenMath}
+<<describeSetOutputOpenMath>>=
+describeSetOutputOpenMath() ==
+ sayBrightly LIST ('%b,'")set output openmath",'%d,_
+ '"is used to tell AXIOM to turn OpenMath output",'%l,_
+ '"printing on and off, and where to place the output. By default, the",'%l,_
+ '"destination for the output is the screen but printing is turned off.",'%l,_
+ '%l,_
+ '"Syntax: )set output openmath <arg>",'%l,_
+ '" where arg can be one of",'%l,_
+ '" on turn OpenMath printing on",'%l,_
+ '" off turn OpenMath printing off (default state)",'%l,_
+ '" console send OpenMath output to screen (default state)",'%l,_
+ '" fp<.fe> send OpenMath output to file with file prefix fp and file",'%l,_
+ '" extension .fe. If not given, .fe defaults to .som.",'%l,
+ '%l,_
+ '"If you wish to send the output to a file, you must issue this command",'%l,_
+ '"twice: once with",'%b,'"on",'%d,'"and once with the file name. For example, to send",'%l,_
+ '"OpenMath output to the file",'%b,'"polymer.som,",'%d,'"issue the two commands",'%l,_
+ '%l,_
+ '" )set output openmath on",'%l,_
+ '" )set output openmath polymer",'%l,_
+ '%l,_
+ '"The output is placed in the directory from which you invoked AXIOM or",'%l,_
+ '"the one you set with the )cd system command.",'%l,_
+ '"The current setting is: ",'%b,setOutputOpenMath "%display%",'%d)
+
+@
+\section{output script}
+See the subsection output script in setvart.boot.pamphlet\cite{1}
+\begin{verbatim}
+---------------------- The script Option ----------------------
+
+ Description: display output in SCRIPT formula format
+
+ )set output script is used to tell AXIOM to turn IBM Script
+ formula-style output printing on and off, and where to place
+ the output. By default, the destination for the output is the
+ screen but printing is turned off.
+
+Syntax: )set output script <arg>
+ where arg can be one of
+ on turn IBM Script formula printing on
+ off turn IBM Script formula printing off
+ (default state)
+ console send IBM Script formula output to screen
+ (default state)
+ fp<.fe> send IBM Script formula output to file with file
+ prefix fp and file extension .fe. If not given,
+ .fe defaults to .sform.
+
+If you wish to send the output to a file, you must issue
+this command twice: once with on and once with the file
+name. For example, to send IBM Script formula output to
+the file polymer.sform, issue the two commands
+
+ )set output script on
+ )set output script polymer
+
+The output is placed in the directory from which you
+invoked AXIOM or the one you set with the )cd system command.
+The current setting is: Off:CONSOLE
+\end{verbatim}
+<<outputscriptCode>>=
+<<setOutputFormula>>
+<<describeSetOutputFormula>>
+@
+\subsection{setOutputFormula}
+<<setOutputFormula>>=
+setOutputFormula arg ==
+ arg = "%initialize%" =>
+ $formulaOutputStream :=
+ DEFIOSTREAM('((MODE . OUTPUT) (DEVICE . CONSOLE)),255,0)
+ $formulaOutputFile := '"CONSOLE"
+ $formulaFormat := NIL
+
+ arg = "%display%" =>
+ if $formulaFormat then label := '"On:" else label := '"Off:"
+ STRCONC(label,$formulaOutputFile)
+
+ (null arg) or (arg = "%describe%") or (first arg = '_?) =>
+ describeSetOutputFormula()
+
+ -- try to figure out what the argument is
+
+ if arg is [fn] and
+ fn in '(Y N YE YES NO O ON OF OFF CONSOLE y n ye yes no o on of off console)
+ then 'ok
+ else arg := [fn,'sform]
+
+ arg is [fn] =>
+ UPCASE(fn) in '(Y N YE O OF) =>
+ sayKeyedMsg("S2IV0002",'(script script))
+ UPCASE(fn) in '(NO OFF) => $formulaFormat := NIL
+ UPCASE(fn) in '(YES ON) => $formulaFormat := true
+ UPCASE(fn) = 'CONSOLE =>
+ SHUT $formulaOutputStream
+ $formulaOutputStream :=
+ DEFIOSTREAM('((MODE . OUTPUT) (DEVICE . CONSOLE)),255,0)
+ $formulaOutputFile := '"CONSOLE"
+
+ (arg is [fn,ft]) or (arg is [fn,ft,fm]) => -- aha, a file
+ if (ptype := pathnameType fn) then
+ fn := STRCONC(pathnameDirectory fn,pathnameName fn)
+ ft := ptype
+ if null fm then fm := 'A
+ filename := $FILEP(fn,ft,fm)
+ null filename =>
+ sayKeyedMsg("S2IV0003",[fn,ft,fm])
+ (testStream := MAKE_-OUTSTREAM(filename,255,0)) =>
+ SHUT $formulaOutputStream
+ $formulaOutputStream := testStream
+ $formulaOutputFile := object2String filename
+ sayKeyedMsg("S2IV0004",['"IBM Script formula",$formulaOutputFile])
+ sayKeyedMsg("S2IV0003",[fn,ft,fm])
+
+ sayKeyedMsg("S2IV0005",NIL)
+ describeSetOutputFormula()
+
+@
+\subsection{describeSetOutputFormula}
+<<describeSetOutputFormula>>=
+describeSetOutputFormula() ==
+ sayBrightly LIST ('%b,'")set output script",'%d,_
+ '"is used to tell AXIOM to turn IBM Script formula-style",'%l,_
+ '"output printing on and off, and where to place the output. By default, the",'%l,_
+ '"destination for the output is the screen but printing is turned off.",'%l,_
+ '%l,_
+ '"Syntax: )set output script <arg>",'%l,_
+ '" where arg can be one of",'%l,_
+ '" on turn IBM Script formula printing on",'%l,_
+ '" off turn IBM Script formula printing off (default state)",'%l,_
+ '" console send IBM Script formula output to screen (default state)",'%l,_
+ '" fp<.fe> send IBM Script formula output to file with file prefix fp",'%l,_
+ '" and file extension .fe. If not given, .fe defaults to .sform.",'%l,
+ '%l,_
+ '"If you wish to send the output to a file, you must issue this command",'%l,_
+ '"twice: once with",'%b,'"on",'%d,'"and once with the file name. For example, to send",'%l,_
+ '"IBM Script formula output to the file",'%b,'"polymer.sform,",'%d,'"issue the two commands",'%l,_
+ '%l,_
+ '" )set output script on",'%l,_
+ '" )set output script polymer",'%l,_
+ '%l,_
+ '"The output is placed in the directory from which you invoked AXIOM or",'%l,_
+ '"the one you set with the )cd system command.",'%l,_
+ '"The current setting is: ",'%b,setOutputFormula "%display%",'%d)
+
+@
+\section{output tex}
+See the section tex in setvart.boot.pamphlet\cite{1}
+\begin{verbatim}
+----------------------- The tex Option ------------------------
+
+ Description: create output in TeX style
+
+ )set output tex is used to tell AXIOM to turn TeX-style output
+printing on and off, and where to place the output. By default,
+the destination for the output is the screen but printing is
+turned off.
+
+Syntax: )set output tex <arg>
+ where arg can be one of
+ on turn TeX printing on
+ off turn TeX printing off (default state)
+ console send TeX output to screen (default state)
+ fp<.fe> send TeX output to file with file prefix fp
+ and file extension .fe. If not given,
+ .fe defaults to .stex.
+
+If you wish to send the output to a file, you must issue
+this command twice: once with on and once with the file name.
+For example, to send TeX output to the file polymer.stex,
+issue the two commands
+
+ )set output tex on
+ )set output tex polymer
+
+The output is placed in the directory from which you invoked
+AXIOM or the one you set with the )cd system command.
+The current setting is: Off:CONSOLE
+\end{verbatim}
+<<outputtexCode>>=
+<<setOutputTex>>
+<<describeSetOutputTex>>
+@
+\subsection{setOutputTex}
+<<setOutputTex>>=
+setOutputTex arg ==
+ arg = "%initialize%" =>
+ $texOutputStream :=
+ DEFIOSTREAM('((MODE . OUTPUT) (DEVICE . CONSOLE)),255,0)
+ $texOutputFile := '"CONSOLE"
+ $texFormat := NIL
+
+ arg = "%display%" =>
+ if $texFormat then label := '"On:" else label := '"Off:"
+ STRCONC(label,$texOutputFile)
+
+ (null arg) or (arg = "%describe%") or (first arg = '_?) =>
+ describeSetOutputTex()
+
+ -- try to figure out what the argument is
+
+ if arg is [fn] and
+ fn in '(Y N YE YES NO O ON OF OFF CONSOLE y n ye yes no o on of off console)
+ then 'ok
+ else arg := [fn,'stex]
+
+ arg is [fn] =>
+ UPCASE(fn) in '(Y N YE O OF) =>
+ sayKeyedMsg("S2IV0002",'(TeX tex))
+ UPCASE(fn) in '(NO OFF) => $texFormat := NIL
+ UPCASE(fn) in '(YES ON) => $texFormat := true
+ UPCASE(fn) = 'CONSOLE =>
+ SHUT $texOutputStream
+ $texOutputStream :=
+ DEFIOSTREAM('((MODE . OUTPUT) (DEVICE . CONSOLE)),255,0)
+ $texOutputFile := '"CONSOLE"
+
+ (arg is [fn,ft]) or (arg is [fn,ft,fm]) => -- aha, a file
+ if (ptype := pathnameType fn) then
+ fn := STRCONC(pathnameDirectory fn,pathnameName fn)
+ ft := ptype
+ if null fm then fm := 'A
+ filename := $FILEP(fn,ft,fm)
+ null filename =>
+ sayKeyedMsg("S2IV0003",[fn,ft,fm])
+ (testStream := MAKE_-OUTSTREAM(filename,255,0)) =>
+ SHUT $texOutputStream
+ $texOutputStream := testStream
+ $texOutputFile := object2String filename
+ sayKeyedMsg("S2IV0004",['"TeX",$texOutputFile])
+ sayKeyedMsg("S2IV0003",[fn,ft,fm])
+
+ sayKeyedMsg("S2IV0005",NIL)
+ describeSetOutputTex()
+
+@
+\subsection{describeSetOutputTex}
+<<describeSetOutputTex>>=
+describeSetOutputTex() ==
+ sayBrightly LIST ('%b,'")set output tex",'%d,_
+ '"is used to tell AXIOM to turn TeX-style output",'%l,_
+ '"printing on and off, and where to place the output. By default, the",'%l,_
+ '"destination for the output is the screen but printing is turned off.",'%l,_
+ '%l,_
+ '"Syntax: )set output tex <arg>",'%l,_
+ '" where arg can be one of",'%l,_
+ '" on turn TeX printing on",'%l,_
+ '" off turn TeX printing off (default state)",'%l,_
+ '" console send TeX output to screen (default state)",'%l,_
+ '" fp<.fe> send TeX output to file with file prefix fp and file",'%l,_
+ '" extension .fe. If not given, .fe defaults to .stex.",'%l,
+ '%l,_
+ '"If you wish to send the output to a file, you must issue this command",'%l,_
+ '"twice: once with",'%b,'"on",'%d,'"and once with the file name. For example, to send",'%l,_
+ '"TeX output to the file",'%b,'"polymer.stex,",'%d,'"issue the two commands",'%l,_
+ '%l,_
+ '" )set output tex on",'%l,_
+ '" )set output tex polymer",'%l,_
+ '%l,_
+ '"The output is placed in the directory from which you invoked AXIOM or",'%l,_
+ '"the one you set with the )cd system command.",'%l,_
+ '"The current setting is: ",'%b,setOutputTex "%display%",'%d)
+
+@
+\section{streams calculate}
+See the section streams in setvart.boot.pamphlet\cite{1}
+\begin{verbatim}
+ Current Values of streams Variables
+
+Variable Description Current Value
+-----------------------------------------------------------------
+calculate specify number of elements to calculate 10
+showall display all stream elements computed off
+
+\end{verbatim}
+<<streamscalculateCode>>=
+<<setStreamsCalculate>>
+<<describeSetStreamsCalculate>>
+@
+\subsection{setStreamsCalculate}
+<<setStreamsCalculate>>=
+setStreamsCalculate arg ==
+ arg = "%initialize%" =>
+ $streamCount := 10
+ arg = "%display%" =>
+ object2String $streamCount
+ (null arg) or (arg = "%describe%") or (first arg = '_?) =>
+ describeSetStreamsCalculate()
+ n := first arg
+ (n ^= 'all) and ((not FIXP n) or (n < 0)) =>
+ sayMessage ['"Your value of",:bright n,'"is invalid because ..."]
+ describeSetStreamsCalculate()
+ terminateSystemCommand()
+ $streamCount := n
+
+@
+\subsection{describeSetStreamsCalculate}
+<<describeSetStreamsCalculate>>=
+describeSetStreamsCalculate() == sayKeyedMsg("S2IV0001",[$streamCount])
+
+@
+\section{License}
+<<license>>=
+-- Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd.
+-- All rights reserved.
+--
+-- Redistribution and use in source and binary forms, with or without
+-- modification, are permitted provided that the following conditions are
+-- met:
+--
+-- - Redistributions of source code must retain the above copyright
+-- notice, this list of conditions and the following disclaimer.
+--
+-- - Redistributions in binary form must reproduce the above copyright
+-- notice, this list of conditions and the following disclaimer in
+-- the documentation and/or other materials provided with the
+-- distribution.
+--
+-- - Neither the name of The Numerical ALgorithms Group Ltd. nor the
+-- names of its contributors may be used to endorse or promote products
+-- derived from this software without specific prior written permission.
+--
+-- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+-- IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+-- TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+-- PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
+-- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+-- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+-- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+-- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+-- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+-- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+-- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+@
+<<*>>=
+<<license>>
+
+)package "BOOT"
+
+<<toplevelsetfunctions>>
+<<compilerCode>>
+<<exposeCode>>
+<<fortrancallingCode>>
+<<functionsCode>>
+<<historyCode>>
+<<kernelCode>>
+<<naglinkCode>>
+<<outputalgebraCode>>
+<<outputcharactersCode>>
+<<outputfortranCode>>
+<<outputopenmathCode>>
+<<outputscriptCode>>
+<<outputtexCode>>
+<<streamscalculateCode>>
+@
+
+\eject
+\begin{thebibliography}{99}
+\bibitem{1} setvart.boot.pamphlet
+\end{thebibliography}
+\end{document}