next up previous
Nächste Seite: Libraries Aufwärts: Externe Prozeduren, Libraries Vorherige Seite: Externe Prozeduren, Libraries


Externe Prozeduren

Externe Prozeduren sind -- ähnlich den externen Variablen -- nicht in , sondern in einer anderen Sprache deklariert. Somit wird die volle Verantwortung für den korrekten Aufruf auf den Programmierer abgewälzt.

Wie externe Variablen sind externe Prozeduren in Definitionsmoduln auch erlaubt.

Externe Prozeduren werden deklariert als

PROCEDURE name(
...
):
...
; CODE "LinkerName";

Der Programmierer ist selbst fuer die korrekte Angabe von Parametern und Resultat verantwortlich.

Die eigentliche Prozedur kann in einer beliebigen Sprache geschrieben sein. Hierbei sind jedoch die Namenskonventionen der Sprache zu beachten. Die Sprache C stellt beispielsweise üblicherweise einen Underscore-Zeichen an den Anfang des Namens.

Externe Prozeduren dürfen in Definitionsmodulen deklariert werden und natürlich auch lokal innerhalb anderer Prozeduren.

Dadurch ist es nun möglich, ein Prozedur-Alias zu erzeugen. Als LinkerName wird dann das Modul, gefolgt von einem Underscore und dem Prozedurnamen angegeben. Das erleichtert das Schreiben von Erweiterungsmodulen ungemein.


\begin{example}
\begin{alltt}
\relax{} DEFINITION MODULE MyInOut;
\\
\\ PROCEDU...
...);
\\
\\ {\rm {} \ldots}
\\
\\ END MyInOut.
\\ \relax \end{alltt}\end{example}

Hierdurch erpart man sich das Schreiben einer Dummy-Prozedur, die doch nur die Parameter weiterreicht und nichts Eigenes tut. Dann muss allerdings das Implementations-Modul (hier MyInOut) auf jeden Fall das andere Modul (hier Terminal) importieren, weil es ja sonst nie initialisiert würde!


next up previous
Nächste Seite: Libraries Aufwärts: Externe Prozeduren, Libraries Vorherige Seite: Externe Prozeduren, Libraries
Claudio Nieder 2000-11-12