From ab5399d3b53120941367d24b695bd98447ac3f0f Mon Sep 17 00:00:00 2001 From: dos-reis Date: Wed, 14 Nov 2007 01:53:42 +0000 Subject: remove more pamphlets --- src/interp/setvars.boot | 1585 +++++++++++++++++++++++++++++++++ src/interp/setvars.boot.pamphlet | 1827 -------------------------------------- 2 files changed, 1585 insertions(+), 1827 deletions(-) create mode 100644 src/interp/setvars.boot delete mode 100644 src/interp/setvars.boot.pamphlet 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 +-- 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 ",'%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 +-- 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 ",'%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 +-- 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 ",'%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 +-- 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 ",'%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 +-- 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 ",'%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]) + diff --git a/src/interp/setvars.boot.pamphlet b/src/interp/setvars.boot.pamphlet deleted file mode 100644 index 4c6a4261..00000000 --- a/src/interp/setvars.boot.pamphlet +++ /dev/null @@ -1,1827 +0,0 @@ -\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. -<>= -<> -<> -<> -<> -<> -<> -<> -<> -@ -\section{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 () == - -- 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) - -@ -\subsection{translateYesNo2TrueFalse} -<>= -translateYesNo2TrueFalse x == - x in '(yes on) => true - x in '(no off) => false - x - -@ -\subsection{translateTrueFalse2YesNo} -<>= -translateTrueFalse2YesNo x == - x = true => 'on - x = false => 'off - x - -@ -\subsection{set} -<>= -set l == set1(l, $setOptions) - -@ -\subsection{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(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(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} -<>= -<> -<> -<> -<> -<> -<> -@ -\subsection{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() == - 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 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 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() == - 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() == - 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} -<>= -<> -<> -<> -<> -<> -<> -<> -@ -\subsection{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 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 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 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 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 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 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} -<>= -<> -<> -<> -<> -<> -<> -<> -@ -\subsection{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 x == - AND(PATHNAME_-DIRECTORY(PROBE_-FILE(CAR(x))), NOT PATHNAME_-NAME (PROBE_-FILE(CAR(x)))) => - CAR(x) - NIL - -@ -\subsection{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 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() == - 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 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() == - 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} -<>= -<> -<> -<> -<> -<> -@ -\subsection{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 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() == - 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 () == - sayCacheCount(nil,$cacheCount) - $cacheAlist => - TERPRI() --- SAY '" However," - for [x,:n] in $cacheAlist | n ^= $cacheCount repeat sayCacheCount(x,n) - -@ -\subsection{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} -<>= -<> -@ -\subsection{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} -<>= -<> -<> -<> -<> -@ -\subsection{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 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() == - 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 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} -<>= -<> -<> -<> -<> -@ -\subsection{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() == - 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 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() == - 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 - 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} -<>= -<> -<> -@ -\subsection{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() == - 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 ",'%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} -<>= -<> -@ -\subsection{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 - 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} -<>= -<> -<> -<> -@ -\subsection{makeStream} -<>= -makeStream(append,filename,i,j) == - append => MAKE_-APPENDSTREAM(filename,i,j) - MAKE_-OUTSTREAM(filename,i,j) - -@ -\subsection{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() == - 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 ",'%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 - 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 -<>= -<> -<> -@ -\subsection{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() == - 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 ",'%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 - 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} -<>= -<> -<> -@ -\subsection{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() == - 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 ",'%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 - 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} -<>= -<> -<> -@ -\subsection{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() == - 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 ",'%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} -<>= -<> -<> -@ -\subsection{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() == sayKeyedMsg("S2IV0001",[$streamCount]) - -@ -\section{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. - -@ -<<*>>= -<> - -)package "BOOT" - -<> -<> -<> -<> -<> -<> -<> -<> -<> -<> -<> -<> -<> -<> -<> -@ - -\eject -\begin{thebibliography}{99} -\bibitem{1} setvart.boot.pamphlet -\end{thebibliography} -\end{document} -- cgit v1.2.3