Nächste: , Vorige: , Nach oben: Eingabe und Ausgabe   [Inhalt][Index]

13.3 Funktionen und Variablen für die Eingabe und Ausgabe

Funktion: appendfile (filename)

Startet wie die Funktion writefile eine Aufzeichnung aller Ein- und Ausgaben der Konsole. Die Ein- und Ausgaben werden in die Datei filename geschrieben. Im Unterschied zu writefile werden die Daten immer an eine existierende Datei angehängt, wenn diese existiert. Existiert die Datei nicht, wird diese angelegt.

Die Funktion closefile beendet die Aufzeichnung.

Funktion: batch (filename)
Funktion: batch (filename, option)

Das Kommando batch(filename) liest Maxima-Ausdrücke aus der Datei filename ein, wertet diese aus und gibt die Ergebnisse auf der Konsole aus. batch sucht die Datei filename in den Verzeichnissen, die in der Liste file_search_maxima enthalten sind. Siehe auch die Funktion file_search.

batch(filename, demo) entspricht dem Kommando demo(filename). batch sucht für diesen Fall die Datei in der Liste der Verzeichnisse file_search_demo. Siehe auch die Funktion demo.

batch(filename, test) entspricht dem Kommando run_testsuite mit der Option display_all=true. Im Unterschied zur Funktion run_testsuite sucht die Funktion batch die Datei filename in den Verzeichnissen der Liste file_search_maxima und nicht in der Liste file_search_tests.

Die Maxima-Ausdrücke in der Datei werden wie auf der Konsole mit den Zeichen ; oder $ beendet. Die Systemvariable % und die Funktion %th beziehen sich auf vorhergehende Zeilen in der Datei. Die Datei kann :lisp-Unterbrechungskommandos enthalten. Leerzeichen, Tabulatoren, Zeilenschaltungen und Kommentare werden ignoriert. Eine geeignete Datei kann mit einem Texteditor oder der Funktion stringout erstellt werden.

Den Ein- und Ausgaben werden jeweils Ein- und Ausgabemarken zugewiesen. Tritt während der Auswertung eines Ausdrucks ein Fehler auf, wird das Einlesen der Datei abgebrochen. Werden Eingaben vom Nutzer benötigt, wie zum Beispiel bei Fragen der Funktionen asksign oder askinteger, dann wartet batch auf die Antworten, um dann die Verarbeitung der Datei fortzusetzen.

Die Verarbeitung von batch kann durch die Eingabe von control-C abgebrochen werden. Die weitere Reaktion auf einen Abbruch mit control-C hängt von der Lisp-Implementation ab.

batch wertet die Argumente aus. batch gibt den Namen der Datei filename als Zeichenkette zurück, wenn die Funktion ohne zweites Argument oder mit der Option demo aufgerufen wird. Wird die Funktion mit der Option test aufgerufen, ist die Rückgabe eine leere Liste [] oder eine Liste, die filename und die Nummern der fehlgeschlagenen Tests enthält.

Siehe auch die Funktionen load und batchload, um Dateien zu laden, sowie die Funktionen run_testsuite und demo.

Funktion: batchload (filename)

Liest Ausdrücke aus der Datei filename ein und wertet diese aus, ohne die eingelesenen und ausgewerteten Ausdrücke anzuzeigen und ohne Zuweisung von Eingabe- und Ausgabemarken. Die Ausgabe von Fehlermeldungen oder sonstigem Text, der von Funktionen ausgegeben wird, wird nicht unterdrückt.

Die Systemvariable % und die Funktion %th beziehen sich auf die letzte Eingabe auf der Konsole und nicht auf Zeilen oder Ergebnisse der Datei. Im Gegensatz zur Funktion batch darf eine Datei, die von batchload geladen wird, keine :lisp-Unterbrechungskommandos enthalten.

batchload gibt eine Zeichenkette mit dem Pfad der Datei filename zurück. Siehe auch die Funktionen batch und load, um Dateien zu laden.

Funktion: closefile ()

Beendet eine Aufzeichnung, die von den Funktionen writefile oder appendfile gestartet wurde, und schließt die Ausgabedatei.

Optionsvariable: file_output_append

Standardwert: false

Die Optionsvariable file_output_append kontrolliert, ob die Funktionen save, stringout oder with_stdout, die in eine Datei schreiben, diese löschen und neu anlegen oder die Daten anhängen. Wenn file_output_append den Wert true hat, werden die Daten an die existierende Datei angehängt. Ansonsten wird eine neue Datei erstellt.

Plot-Funktionen und der Übersetzer erstellen grundsätzlich neue Dateien und die Funktionen tex und appendfile hängen die Ausgabe immer an eine bestehende Datei an.

Funktion: filename_merge (path, filename)

Setzt einen Pfad aus path und filename zusammen. Endet path mit einer Zeichenkette der Form ###.something, wird diese Zeichenkette durch filename.something ersetzt. Ansonsten wird der Endbestandteil durch filename ersetzt.

Die Rückgabe ist ein Lisp-Dateiname.

Beispiele:

(%i1) filename_merge("user/", "myfile");
(%o1)                      user/myfile

(%i2) filename_merge("user/###.lisp", "myfile");
(%o2)                   user/myfile.lisp
Funktion: file_search (filename)
Funktion: file_search (filename, pathlist)

file_search sucht die Datei filename und gibt den Pfad als eine Zeichenkette zurück, wenn die Datei gefunden wurde. Ansonsten wird false zurückgegeben. file_search(filename) sucht in den Standardsuchverzeichnissen, die mit den Optionsvariablen file_search_maxima, file_search_lisp und file_search_demo spezifiziert werden.

file_search prüft zuerst, ob die Datei filename existiert. Dann prüft file_search, ob die Datei anhand von Mustern im Dateinamen gefunden werden kann. Siehe file_search_maxima für die Suche von Dateien.

Das Argument filename kann ein Name mit einer Pfadangabe oder allein der Dateiname sein. Sind in den Suchverzeichnissen Dateinamen mit Mustern enthalten, kann die Datei auch ohne Endung angegeben werden. Zum Beispiel finden die folgenden Kommandos dieselbe Datei, wenn /home/wfs/special/###.mac in der Liste file_search_maxima enthalten ist:

file_search ("/home/wfs/special/zeta.mac");
file_search ("zeta.mac");
file_search ("zeta");

file_search(filename, pathlist) sucht nur in den Verzeichnissen pathlist. Das Argument pathlist überschreibt die Standardsuchverzeichnisse. Auch ein einzelnes Verzeichnis muss als eine Liste übergeben werden.

Die Standardsuchverzeichnisse können modifiziert werden. Siehe dazu auch file_search_maxima.

file_search wird von der Funktion load mit den Verzeichnislisten file_search_maxima und file_search_lisp aufgerufen.

Optionsvariable: file_search_maxima
Optionsvariable: file_search_lisp
Optionsvariable: file_search_demo
Optionsvariable: file_search_usage
Optionsvariable: file_search_tests

Diese Optionsvariablen bezeichnen Listen mit Verzeichnissen, die von Funktionen wie load und demo durchsucht werden, um eine Datei zu finden. Die Standardwerte bezeichnen verschiedene Verzeichnisse der Maxima-Installation.

Diese Variablen können modifiziert werden, indem die Standardwerte ersetzt oder weitere Verzeichnisse angehängt werden. Zum Beispiel wird im Folgenden der Standardwert der Optionsvariablen file_search_maxima ersetzt:

file_search_maxima: ["/usr/local/foo/###.mac",
    "/usr/local/bar/###.mac"]$

In diesem Beispiel werden zwei weitere Verzeichnisse zu der Optionsvariablen file_search_maxima hinzugefügt:

file_search_maxima: append (file_search_maxima,
    ["/usr/local/foo/###.mac", "/usr/local/bar/###.mac"])$

Soll eine erweiterte Liste der Suchverzeichnisse nach jedem Start von Maxima zur Verfügung stehen, kann das obige Kommando in die Datei maxima-init.mac aufgenommen werden.

Mehrere Dateiendungen und Pfade können mit Wildcard-Konstruktionen spezifiziert werden. Eine Zeichenkette ### wird durch einen Dateinamen ersetzt. Werden mehrere Zeichenketten durch Kommata getrennt und mit geschweiften Klammern angegeben wie zum Beispiel {foo, bar, baz}, expandiert die Liste in mehrere Zeichenketten. Das folgende Beispiel expandiert für neumann

"/home/{wfs,gcj}/###.{lisp,mac}"

in /home/wfs/neumann.lisp, /home/gcj/neumann.lisp, /home/wfs/neumann.mac und /home/gcj/neumann.mac.

Funktion: file_type (filename)

Gibt eine Vermutung über den Typ der Datei filename zurück. Es wird nur die Dateiendung betrachtet.

Die Rückgabe ist das Symbol maxima oder lisp, wenn die Dateiendung einen der Werte der Optionsvariablen file_type_maxima oder der Optionsvariablen file_type_lisp entspricht. Ansonsten ist die Rückgabe das Symbol object.

Siehe auch die Funktion pathname_type.

Optionsvariable: file_type_lisp

Standardwert: [l, lsp, lisp]

Die Optionsvariable file_type_lisp enthält die Dateiendungen, die Maxima als die Bezeichnung für eine Lisp-Datei annimmt.

Siehe auch die Funktion file_type.

Optionsvariable: file_type_maxima

Standardwert: [mac, mc, demo, dem, dm1, dm2, dm3, dmt]

Die Optionsvariable file_type_maxima enthält die Dateiendungen, die Maxima als die Bezeichnung für eine Maxima-Datei annimmt.

Siehe auch die Funktion file_type.

Funktion: load (filename)

Wertet die Ausdrücke in der Datei filename aus, wodurch die Variablen, Funktionen und andere Objekte in Maxima geladen werden. Alle bisher zugewiesen Variablen und Definitionen werden überschrieben. Um die Datei zu finden, wird von load die Funktion file_search mit den Verzeichnislisten file_search_maxima und file_search_lisp aufgerufen. Ist load erfolgreich, wird der Dateiname zurückgegeben. Ansonsten gibt load eine Fehlermeldung aus.

load verarbeitet Dateien mit Lisp-Code oder Maxima-Code. Dateien, die mit den Funktionen save, translate_file und compile_file erstellt wurden, enthalten Lisp-Code. Dateien, die mit stringout erstellt wurden, enthalten Maxima-Code. Die Ausgabedateien dieser Funktionen können mit load geladen werden. load ruft die Funktion loadfile auf, um Lisp-Dateien und batchload auf, um Maxima-Dateien zu verarbeiten.

load erkennt keine :lisp-Unterbrechungskommandos in Maxima-Dateien. Die Systemvariablen _, __ und % und die Funktion %th behalten jeweils ihren letzten Wert vor dem Aufruf von load.

Siehe auch die Funktionen loadfile, batch, batchload und demo. loadfile verarbeitet Lisp-Dateien. batch, batchload und demo verarbeiten Maxima-Dateien.

Siehe file_search für mehr Informationen, wie Maxima Dateien in Verzeichnissen findet. load wertet die Argumente aus.

Systemvariable: load_pathname

Standardwert: false

Wird eine Datei mit den Funktionen load, loadfile oder batchload geladen, enthält die Systemvariable load_pathname den Namen der Datei. Der Wert der Systemvariablen kann in der Datei, die geladen wird, ausgelesen werden.

Beispiele:

Ist eine Batch-Datei mit den Namen test.mac in dem Verzeichnis

"/home/dieter/workspace/mymaxima/temp/"

abgelegt und enthält die Datei die folgenden Befehle

print("The value of load_pathname is: ", load_pathname)$
print("End of batchfile")$

dann wird das Folgende ausgegeben:

(%i1) load("/home/dieter/workspace/mymaxima/temp/test.mac")$
The value of load_pathname is:  
              /home/dieter/workspace/mymaxima/temp/test.mac 
End of batchfile
Funktion: loadfile (filename)

Lädt die Datei filename und wertet die Lisp-Ausdrücke in der Datei aus. filename ruft nicht file_search auf, um eine Datei zu finden. Daher muss filename ein vollständiger Dateiname sein.

loadfile kann Dateien verarbeiten, die mit den Funktionen save, translate_file und compile_file erzeugt wurden.

Optionsvariable: loadprint

Standardwert: true

loadprint kontrolliert, ob Meldungen ausgegeben werden, wenn eine Datei geladen wird.

  • Hat loadprint den Wert true, wird immer eine Meldung ausgegeben.
  • Hat loadprint den Wert 'loadfile, wird eine Meldung ausgegeben, wenn die Datei mit der Funktion loadfile geladen wird.
  • Hat loadprint den Wert 'autoload, wird eine Meldung ausgegeben, wenn eine Datei automatisch geladen wird.
  • Hat loadprint den Wert false, werden keine Meldungen beim Laden von Dateien ausgegeben.
Funktion: pathname_directory (pathname)
Funktion: pathname_name (pathname)
Funktion: pathname_type (pathname)

Diese Funktionen geben die Bestandteile eines Pfadnamens zurück.

Beispiele:

(%i1) pathname_directory("/home/dieter/maxima/changelog.txt");
(%o1)                 /home/dieter/maxima/
(%i2) pathname_name("/home/dieter/maxima/changelog.txt");
(%o2)                       changelog
(%i3) pathname_type("/home/dieter/maxima/changelog.txt");
(%o3)                          txt
Funktion: printfile (path)

Druckt eine Datei mit dem Namen path auf der Konsole aus. path kann ein Symbol oder eine Zeichenkette sein. printfile sucht die Datei in den Verzeichnissen, die in der Optionsvariablen file_search_usage enthalten sind.

printfile gibt path zurück, wenn die Datei existiert.

Funktion: save (filename, name_1, name_2, name_3, …)
Funktion: save (filename, values, functions, labels, …)
Funktion: save (filename, [m, n])
Funktion: save (filename, name_1=expr_1, …)
Funktion: save (filename, all)
Funktion: save (filename, name_1=expr_1, name_2=expr_2, …)

Speichert die aktuellen Werte von name_1, name_2, name_3, …, in die Datei filename. Die Argumente sind die Namen von Variablen, Funktionen oder anderen Objekten. Argumente, die keinen Wert haben, werden ignoriert. save gibt den Namen der Datei filename zurück.

save speichert die Daten in einem Lisp-Format. Die gespeicherten Daten können mit dem Kommando load(filename) zurückgelesen werden. Siehe load.

Die Optionsvariable file_output_append kontrolliert, ob save die Daten an die Ausgabedatei anhängt, wenn diese bereits existiert, oder die Ausgabedatei zuvor löscht. Hat file_output_append den Wert true, werden die Daten angehängt. Ansonsten wird die Datei gelöscht und neu angelegt, wenn diese bereits existiert. Existiert die Ausgabedatei noch nicht, wird diese angelegt.

save(filename, values, functions, labels, ...) speichert die Werte aller Einträge der Listen values, functions, labels, u.s.w. in die Ausgabedatei. Es kann jede der vorhandenen Informationslisten, die in der Systemvariablen infolists enthalten ist, als Argument übergeben werden. values enthält zum Beispiel alle vom Nutzer definierten Variablen.

save(filename, [m, n]) speichert die Werte der Eingabe- und Ausgabemarken von m bis n. m und n müssen ganze Zahlen sein. Die Eingabe- und Ausgabemarken können auch einzeln gespeichert werden, zum Beispiel mit dem Kommando save("foo.1", %i42, %o42). save(filename, labels) speichert alle Eingabe- und Ausgabemarken. Beim Zurücklesen der Marken werden vorhandene Werte überschrieben.

save(filename, name_1 = expr_1, name_2 = expr_2, ...) speichert die Werte expr_1, expr_2, …, unter den Namen name_1, name_2, … ab. Dies kann nützlich sein, um zum Beispiel die Werte von Marken unter einem neuen Namen abzuspeichern. Die rechte Seite der Gleichungen kann ein beliebiger ausgewerteter Ausdruck sein. Die neuen Namen werden der aktuellen Sitzung nicht hinzugefügt und nur in der Ausgabedatei gespeichert.

Die verschiedenen Möglichkeiten der Funktion save, können miteinander kombiniert werden. Das Kommando save(filename, aa, bb, cc=42, functions, [11,17]) ist dafür ein Beispiel.

save(filename, all) speichert den aktuellen Zustand von Maxima in eine Ausgabedatei. Eingeschlossen sind alle nutzerdefinierten Variablen, Funktionen oder Arrays, einschließlich automatischer Definitionen. Die gespeicherten Daten enthalten auch die Werte von geänderten System- oder Optionsvariablen. Siehe dazu auch myoptions.

save wertet das Argument filename aus. Alle anderen Argumente werden nicht ausgewertet.

Funktion: stringout (filename, expr_1, expr_2, expr_3, …)
Funktion: stringout (filename, [m, n])
Funktion: stringout (filename, input)
Funktion: stringout (filename, functions)
Funktion: stringout (filename, values)

stringout schreibt Ausdrücke in einem Format in eine Datei, dass identisch mit dem Format der Eingabe ist. Die Datei kann als Eingabedatei für die Funktionen batch oder demo genutzt werden. Sie kann mit einem Texteditor für jeden Zweck editiert werden. stringout kann ausgeführt werden, wenn das Kommando writefile aktiv ist.

Die Optionsvariable file_output_append kontrolliert, ob stringout die Daten an die Ausgabedatei anhängt, wenn diese bereits existiert oder die Ausgabedatei zuvor löscht. Hat file_output_append den Wert true, werden die Daten angehängt, wenn die Datei bereits existiert. Ansonsten wird die Datei gelöscht und neu angelegt. Existiert die Ausgabedatei noch nicht, wird diese angelegt.

Die allgemeine Form von stringout schreibt die Werte eines oder mehrerer Ausdrücke in die Ausgabedatei. Ist ein Ausdruck eine Variable, wird nur der Wert der Variablen, nicht jedoch der Name der Variablen in die Ausgabedatei geschrieben. Ein nützlicher Spezialfall ist, dass die Werte der Eingabe- und Ausgabemarken (%i1, %i2, %i3, … und %o1, %o2, %o3, …) in die Datei geschrieben werden können.

Hat die Optionsvariable grind den Wert true, wird die Ausgabe im Format der Funktion grind in die Ausgabedatei geschrieben. Ansonsten wird das Format der Funktion string für die Ausgabe genutzt.

stringout(filename, [m, n]) schreibt die Werte aller Eingabemarken von m bis n in die Ausgabedatei. stringout(filename, input) schreibt alle Eingabemarken in die Ausgabedatei. stringout(filename, functions) schreibt alle vom Nutzer definierten Funktionen, die in der Informationsliste functions enthalten sind, in die Ausgabedatei.

stringout(filename, values) schreibt alle benuzterdefinierten Variablen, die in der Informationsliste values enthalten sind, in die Ausgabedatei. Die Variablen werden als eine Zuweisung, mit dem Namen der Variablen, dem Zuweisungsoperator : und dem Wert in die Datei geschrieben. Im Unterschied dazu, speichert die allgemeine Form der Funktion stringout die Variablen nicht als Zuweisung.

Funktion: with_stdout (f, expr_1, expr_2, expr_3, …)
Funktion: with_stdout (s, expr_1, expr_2, expr_3, …)

with_stdout wertet Argumente expr_1, expr_2, expr_3, … aus und schreibt die Ergebnisse der Auswertung in die Ausgabedatei f oder in den Stream s. Die Ergebnisse werden nicht auf der Konsole ausgegeben.

Die Optionsvariable file_output_append bestimmt, ob with_stdout die Daten an die Ausgabedatei anhängt oder die Ausgabedatei zuvor löscht. Hat file_output_append den Wert true, werden die Daten angehängt. Ansonsten wird die Datei gelöscht und neu angelegt. Existiert die Ausgabedatei noch nicht, wird diese angelegt.

with_stout gibt das Ergebnis des letzten Argumentes zurück.

Siehe auch writefile.

Beispiel:

(%i1) with_stdout ("tmp.out", for i:5 thru 10 do
         print (i, "! yields", i!))$
(%i2) printfile ("tmp.out")$
5 ! yields 120 
6 ! yields 720 
7 ! yields 5040 
8 ! yields 40320 
9 ! yields 362880 
10 ! yields 3628800
Funktion: writefile (filename)

Startet eine Aufzeichnung aller Ein- und Ausgaben der Konsole. Die Ein- und Ausgaben werden in die Datei filename geschrieben.

Die Ausgabedatei kann von Maxima nicht wieder zurückgelesen werden. Um ein Datei zu erzeugen, die von Maxima zurückgelesen werden kann, siehe die Funktionen save und stringout. save speichert Ausdrücke in einem Lisp-Format und stringout in einem Maxima-Format.

Die Reaktion der Funktion writefile für den Fall, dass die Ausgabedatei bereits existiert, hängt von der Lisp-Implementation ab. Die Ausgabedatei kann zurückgesetzt werden oder die Daten werden angehängt. Die Funktion appendfile hängt die Daten immer an eine existierende Datei an.

Um eine Aufzeichnung ohne Textausgaben von Funktionen zu erhalten, kann writefile nach der Ausführung von playback ausgeführt werden. playback gibt alle vorhergenden Eingabe- und Ausgabemarken aus, jedoch nicht sonstige Textausgaben von Maxima-Funktionen.

Mit closefile wird die Aufzeichnung beendet.


Nächste: , Vorige: , Nach oben: Eingabe und Ausgabe   [Inhalt][Index]