MAL-Homepage
Inhaltsverzeichnis
MAL Dokumentation: Metaformat
1. EINFÜHRUNG
Bei der Implementierung des MAL-Systems wurde
unter anderem auch berücksichtigt, dass verschiedene
Hardware-Plattformen unterschiedliche Binärformate
bei der Darstellung von Daten (hauptsächlich der
Gleitkommazahlen, aber auch der Integerzahlen und
Zeichencodes) haben können. Damit der Datenaustausch
zwischen verschiedenen Systemen keinen Mehraufwand
bedeutet, wird nun einheitlich (auch zwischen gleichen
Systemen) der Datenaustausch in einem maschinenunabhängigen
Metaformat vorgenommen. Das Metaformat wird
ausschließlich in Dateien (sog. Metadateien) abgelegt.
Die C++-Konvertierungsroutine verläßt sich darauf,
daß der Datentyp 'unsigned char' bei allen Compilern
ein 8-Bit-Typ ohne Vorzeichen und gewohnter
Bitreihenfolge (niederwertigstes Bit rechts) ist.
Realzahlen werden in ein 4-Byte Format übertragen
(ein Byte Exponent). Geringfügige Abweichungen
in der Genauigkeit (etwa ab der 6-ten Kommastelle)
sind desshalb wegen Rundungsfehlern zu erwarten.
Die Metakonvertierung übernimmt auch die
Umwandlung der Umlaute und des scharfen ß.
Im Metaformat haben diese Zeichen folgende Oktaläquivalente:
MAL-Homepage Inhaltsverzeichnis
2. METADIRECTORY
In der Datei 'auto.cpu' ist ein Wort 'metadirectory' definiert,
das den Pfad für allgemeine Metadateien festlegt. Obwohl
Metadaten in beliebigen Directories abgespeichert werden können,
ist dieser Pfad die Voreinstellung für die meisten
Meta-Konvertierungen.
Hat man mehrere MAL-Systeme in einem gemeinsamen Netzwerk
installiert, so empfiehlt es sich für alle eine gemeinsame
Meta-Directory einzurichten. Der Datenaustausch zwischen
den Systemen gestaltet sich dann sehr einfach.
Auch der Datentransfer innerhalb eines MAL-Systems (z.B. von
einem Folder in einen anderen) wird am Besten über eine
Metakonvertierung durchgeführt (mit Submenu / Export und
Submenu / Import).
Die Metadirectory ist eine Schmierdirectory. Es gibt kein
automatisches Löschen nicht mehr benötigter Dateien. Das muss
von Zeit zu Zeit manuell vorgenommen werden.
MAL-Homepage Inhaltsverzeichnis
3. ELEMENTARE BEFEHLE
Eine Metadatei wird mit dem Wort
rewrite angelegt.
Syntax:
dateiname ->
Danach können mit dem Wort
>meta einzelne
Stackeinträge in die Metadatei gespeichert werden. Bei jedem
Aufruf von >meta
wird ein neuer Stackeintrag an die bestehende Metadatei angehängt.
Syntax von '>meta':
x dateiname ->
Gelesen wird eine Metadatei mit dem Wort
meta>.
Syntax von 'meta>':
dateiname -> x1 .. xN
MAL-Homepage Inhaltsverzeichnis
4. VERBUNDE
Verbunde (auch homogene Verbunde) werden rekursiv durch Übertragung
der Einzelkomponenten umgewandelt. D. h. am Zielrechner wird zuerst
ein Verbundanfang-Symbol '[' am Stack gelegt, dann folgen die
Komponenten und am Schluß wird das Wort ']' ausgeführt.
Daher darf ein Verbund im Metaformat nicht mehr Komponenten
enthalten, als Einträge am Stack gelegt werden können. Eine Ausnahme
bilden komprimierte Realfelder oder Integerfelder. Sie können beliebig
viele Komponenten beinhalten.
MAL-Homepage Inhaltsverzeichnis
5. CODESTRINGS
Codestrings werden beim Lesen aus einer Metadatei automatisch
ausgeführt (das gilt nicht für Doppelpunktdefinitionen oder Poolverweise).
Will man die Ausführung von Codestrings auf der Zielmaschine vermeiden,
so muß man beim Austransfer den Codestring in einen normalen String
umwandeln (mit dem Wort code>)
und einen entsprechenden Codestring nachschicken, damit dieser
String auf der Zielmaschine wieder in einen Code umgewandelt
wird (mit dem Wort >code).
Beispiel:
"meta.dat" rewrite "vlist" "meta.dat" >meta ">code" >code "meta.dat" >meta
MAL-Homepage Inhaltsverzeichnis
6. KONVERTIERUNG VON POOLS
Das Wort pool>meta
konvertiert einen ganzen Pool auf Metaformat. Die Zieldatei wird
dabei automatisch eingerichtet, ein Aufruf von
rewrite ist daher nicht
erforderlich (bestehende Dateien werden ohne Warnung gelöscht!).
Syntax:
poolname dateiname ->
Zum Einlesen einer derart erstellten Datei dient das Wort
meta>pool.
Syntax:
dateiname ->
Der Poolname wird beim Anlegen der Datei mit abgespeichert,
daher benötigt meta>pool
keine Angabe des Poolnamens.
Die Kombination von pool>meta
und meta>pool kann
auch verwendet werden, um Pools dicht zu schieben, damit der
Speicherplatz von als ´gelöscht´ markierten Einträgen tatsächlich
frei gegeben wird. Es empfiehlt sich grundsätzlich, zuvor eine
Sicherungskopie der Pooldateien anzulegen, weil die
Metakonvertierung abbricht, wenn Ungereimtheiten in den Daten auftreten.
Im Admin-Folder (im Public-Pool, Aufruf durch das Wort
admin) kann man
Worte mit Bedienoberfläche
(export_pool
und import_pool)
für das Aus- und Eintransferieren eines ganzen Pools finden.
Für die Standard-Pools (Public und Private) können die
Worte public>meta
und meta>public
bzw. private>meta und
meta>private
verwendet werden. Diese Worte legen die
Metadaten in den Dateien 'public.met' bzw. 'private.met'
in der Metadirectory ab.
MAL-Homepage Inhaltsverzeichnis