MAL-Homepage
Inhaltsverzeichnis
MAL Dokumentation: Ein- Ausgabe
1. ALLGEMEINES
Ein Überblick über alle Ein/Ausgabe-Worte kann unter
Topic input/output
gefunden werden. Hier werden nur
einige wichtige Worte und die grundsätzliche
Ein/Ausgabe-Strategie beschrieben.
MAL-Homepage Inhaltsverzeichnis
1.1. Ausgabeumleitung
Mit dem Wort output können
alle Ausgaben (ausgenommen Meldungen des Interpreters) auf Datei
umgeleitet werden. Beim Aufruf von output wird die angegebene
Datei neu eingerichtet (eine bestehende gleichlautende Datei wird dabei
ohne Warnung gelöscht). Mit dem nächsten Aufruf von output wird die
zuletzt verwendete Datei geschlossen und eine neue eingerichtet.
Das Wort con übergibt einen
Dateinamen am Stack, der für das Zurückstellen der Ausgabe auf den
Bildschirm verwendet werden kann.
Beispiel:
"rampe.dat" output 17 ramp . cr con output
: prn_close "con" output "\Programme\PrintFile\prfile32 /q print.txt" system ;
MAL-Homepage Inhaltsverzeichnis
1.2. Formatieren
Das Format für die Ausgabe von Gleitkommazahlen (das ist der einzige in
MAL verwendete Zahlentyp) kann durch Einrichten einer Variablen mit
dem Namen format eingestellt werden.
Dieser Variable muß ein Formatstring zugewiesen werden. Die Möglichen
Formatangaben entsprechen den in der Programmiersprache C üblichen.
Beispiele:
"%0.0f" >> format 3.1415 . 3Das voreingestellte Ausgabeformat entspricht
"%7.2f" >> format 3.1415 . 3.14
MAL-Homepage Inhaltsverzeichnis
2. EINLESEN VON MAL-CODE
Eine Datei, die exekutierbaren MAL-Code enthält, kann mit dem
Wort include interpretiert
werden. Selbstverständlich kann diese Datei ebenfalls ´include´-Anweisungen
enthalten.
Syntax:
dateiname ->
Definitionen, die in der Datei gemacht wurden bleiben auch nach dem Abarbeiten
der Datei bestehen. Das heißt, die Datei stellt im Gegensatz zu einer
Doppelpunktdefinition keine Black-Box dar.
Der Weg, MAL-Programme in Dateien zu editieren und diese mit include
auszuführen ist für den Anfang die einfachste Methode der Entwicklung
von MAL-Programmen.
Man kann die Dateien auch editieren, ohne den MAL-Interpreter zu verlassen,
indem man das Wort med
verwendet. Es empfiehlt es sich aber, die Programmcodes in sogenannten
Foldern unterzubringen, wie das im Kapitel
Programmentwicklung erläutert ist.
Mit include können auch Schnittstellen (vor allem zu selbstentwickelten)
Fremdprogrammen verwirklicht werden. Das Fremdprogramm muß in diesem
Fall die Daten in Form von exekutierbarem MAL-Code (in der Regel Zahlen
mit Verbundklammern) auf Datei schreiben, die in der Folge mit inlcude
gelesen werden kann.
Anstatt das Wort include zu verwenden kann man den MAL-Interpreter
auch mit in der Kommandozeile angegebenen Dateinamen starten. Die Dateien
werden dann in der angegebenen Reihenfolge interpretiert.
Beispiel:
Das Fremdprogramm hätte eine Datei ´daten´ mit folgendem Inhalt erstellt:
[ 1 2 3 3.4 3 ] draw screen bye
MAL-Homepage Inhaltsverzeichnis
3. TEXTDATEIEN
Eine Textdatei wird am MAL-Stack als Verbund von Strings
(oder kurz ´Stringverbund´) dargestellt. Das Wort read
dient zum Einlesen einer Textdatei.
Syntax:
dateiname -> [ zeile1 zeile2 ... ]
Das Wort write gibt einen
Stringverbund am Bildschirm aus. Will man mit write auf eine
Datei ausgeben, so kann man mit output
die Ausgabe umleiten.
write gibt im Gegensatz zu ´. ´ (Punkt) keine Klammern am Anfang und
am Ende des Verbundes aus.
MAL-Homepage Inhaltsverzeichnis
3.1. Ausgabe von Tabellen
Die Worte table
und html_table
bauen Tabellen auf. Beide Worte legen die Tabelle
in Form eines Verbunds von Strings am Stack ab (kann mit
write ausgegeben werden).
Das Ergebnis von table ist direkt im Textformat und jenes
von html_table kann mit einem HTML-Browser gelesen werden.
Syntax:
[ [ a11 a12 a13 ...] [ a21 a22 a23 ...] [ a31 a32 a33 ... ] . . ] [ kopf1 kopf2 kopf3 ... ] ->Die Parameter ´aIJ´ können Strings oder Zahlen sein.
[ [ "Müller" 87.5 45 ] [ "Huber" 55.7 39 ] [ "Meier" 105 46 ] ] [ "Name" "Gewicht" "Schuhgröße" ] table writeBenötigt man keine Kopfzeile, so kann man einen leeren Verbund als Kopfzeilendefinition übergeben.
+------------------------------+ | Name | Gewicht | Schuhgröße| +------------------------------+ | Müller | 87.5 | 45 | | Huber | 55.7 | 39 | | Meier | 105 | 46 | +------------------------------+
MAL-Homepage Inhaltsverzeichnis
3.2. Einlesen von ASCII-Daten
Mit dem Wort field>
können numerische Daten im ASCII-Format
von einer Datei gelesen werden. Voraussetzung ist, dass die
Daten spaltenweise durch Blank getrennt abgelegt sind und
alle Spalten gleich viele Zeilen haben.
Syntax:
dateiname -> [ spalte1 spalte2 ... ]
Das gelesene Ergebnis ist ein Verbund von Realverbunden, von
denen jeder die Daten einer Spalte enthält.
MAL-Homepage Inhaltsverzeichnis
4. BINÄRDATEIEN 4.1. Lesen und Schreiben
MAL-Homepage
Inhaltsverzeichnis
Dateien mit Binärdaten können mit dem Wort
read_binary gelesen
und mit dem Wort write_binary
geschrieben werden. Die Stackeinträge, die von read_binary
erzeugt werden, sind vom Typ "ungültig" und können vom
MAL-Interpreter zwar gespeichert, aber nicht weiter
verarbeitet werden (ausser mit
write_binary
und analyze_binary).
4.2. Interpretieren von Binärdaten
Das Wort analyze_binary
kann für die Umwandlung von
Binärdaten (Stackeinträge vom Typ "ungültig") auf MAL-Daten
verwendet werden. Es hat folgende Syntax:
binär code -> mal_daten
wobei 'binär' den Stackeintrag vom Typ "ungültig" darstellt
und 'code' einen String mit MAL-Code zum Analysieren des
Binärdaten enthalten muss. Bei der Ausührung dieses Codes
sind folgende zusätzliche Worte für die Konvertierung von
Binärdaten in MAL-Daten verfügbar:
MAL-Homepage Inhaltsverzeichnis