diff options
Diffstat (limited to 'src/interp/setvars.boot')
-rw-r--r-- | src/interp/setvars.boot | 1585 |
1 files changed, 1585 insertions, 0 deletions
diff --git a/src/interp/setvars.boot b/src/interp/setvars.boot new file mode 100644 index 00000000..b40f4c65 --- /dev/null +++ b/src/interp/setvars.boot @@ -0,0 +1,1585 @@ +-- Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd. +-- All rights reserved. +-- Copyright (C) 2007, Gabriel Dos Reis. +-- 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. + + + +-- Conventions: + +-- * when called with argument "%initialize", a function will set the +-- appropriate variables to their default states. + +-- * when called with argument "%display%", a function will return a +-- current state information suitable for sayBrightly + +-- * when called with argument "%describe%", a function will print a +-- description of itself and any conditions it imposes. + +-- * otherwise, a function may interpret its arguments as it sees appropriate. + +-- Also by convention each top level function named in the FUNCTION +-- slot (see the data structure in setvart.boot) has an +-- associated describe function. Thus, for example, +-- setOutputFortran is accompanied by function to describe +-- its arguments, such as describeSetOutputFortran. + + +)package "BOOT" + +-- The `set' function in this file handles the top level `)set' +-- command line functions. + + +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) + +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($echoLineStack , 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) + + +translateYesNo2TrueFalse x == + x in '(yes on) => true + x in '(no off) => false + x + + +translateTrueFalse2YesNo x == + x = true => 'on + x = false => 'off + x + + +set l == set1(l, $setOptions) + + +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 + + +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."] + + +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",'"."] + + +-- See the section compiler in setvart.boot. +-- +-- 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 + + + +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) + + +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) + + +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 + + +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) + + +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." + ) + + +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." + ) + + +-- See the section expose in setvart.boot +-- ---------------------- 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. + + +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 + + +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 + + +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() + + +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]) + + +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 + + +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]) + + +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]) + +-- See the section calling in servart.boot + +-- 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 + + +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 + + +validateOutputDirectory x == + AND(PATHNAME_-DIRECTORY(PROBE_-FILE(CAR(x))), NOT PATHNAME_-NAME (PROBE_-FILE(CAR(x)))) => + CAR(x) + NIL + + +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) + + +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 + + +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) + + +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() + + +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) + +-- See the section functions in setvart.boot +-- +-- 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 + + +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 + + +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) + + +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") + + +sayAllCacheCounts () == + sayCacheCount(nil,$cacheCount) + $cacheAlist => + TERPRI() +-- SAY '" However," + for [x,:n] in $cacheAlist | n ^= $cacheCount repeat sayCacheCount(x,n) + + +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] + +-- See the section history in setvart.boot +-- --------------------- 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. + + +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 + +-- +-- See the section kernel in setvart.boot +-- \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 + +-- + + +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") + + +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 + + +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") + + +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 + +-- +-- See the section naglink in setvart.boot +-- \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 + +-- + + +setNagHost arg == + arg = "%initialize%" => + $nagHost := '"localhost" + arg = "%display%" => + object2String $nagHost + (null arg) or (arg = "%describe%") or (first arg = '_?) => + describeSetNagHost() + $nagHost := object2String arg + + +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) + + +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) + + +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) + +-- See the subsection output algebra in setvart.boot +-- +-- --------------------- 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 +-- + + +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() + + +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) + + +-- See the subsection output characters in setvart.boot +-- +-- -------------------- 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 \ +-- + + +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 + +-- See the subsection output fortran in setvart.boot +-- +-- --------------------- 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 +-- + + +makeStream(append,filename,i,j) == + append => MAKE_-APPENDSTREAM(filename,i,j) + MAKE_-OUTSTREAM(filename,i,j) + + +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() + + +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) + + +-- See the subsection output openmath in setvart.boot +-- +-- ------------------ 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 + + +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() + + +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) + +-- See the subsection output script in setvart.boot +-- +-- ---------------------- 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 +-- + + +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() + + +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) + + +-- See the section tex in setvart.boot +-- +-- ----------------------- 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 +-- + + +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() + + +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) + +-- See the section streams in setvart.boot +-- Current Values of streams Variables + +-- Variable Description Current Value +-- ----------------------------------------------------------------- +-- calculate specify number of elements to calculate 10 +-- showall display all stream elements computed off + + + +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 + +describeSetStreamsCalculate() == sayKeyedMsg("S2IV0001",[$streamCount]) + |