Next: Funktionen und Variablen für die TeX-Ausgabe, Previous: Dateien, Up: Eingabe und Ausgabe [Contents][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.

Next: Funktionen und Variablen für die TeX-Ausgabe, Previous: Dateien, Up: Eingabe und Ausgabe [Contents][Index]