Um Prozeduren für mehr als eine SINGULAR-Sitzung
verfügbar zu machen,
ist es sinnvoll, sie in Dateien abzuspeichern, die später von
Singular wieder eingelesen werden können - sogenannten
Bibliotheken (= Libraries). Die Namen der Bibliotheken lassen meist
Rückschlüsse auf die enthaltenen Prozeduren zu, und tragen
grundsätzlich die Endung .lib. Bibliotheken werden in
SINGULAR eingelesen durch den Befehl LIB gefolgt
von dem in Anführungszeichen " eingeschachtelten Bibliotheksnamen,
etwa
Jeder Übungsteilnehmer sollte für die Prozeduren, die im Laufe des Semesters zu schreiben sind, eine Bibliothek anlegen - vorzugsweise unter dem eingenen Namen, etwa KeilenT.lib.
Natürlich muß auch eine Bibliothek gewissen Syntaxregeln entsprechen, und Prozeduren, die in Bibliotheken abgespeichert werden, sollten um zwei erläuternde Zusätze erweitert werden. Wir verdeutlichen dies an einem Musterbeispiel.
////////////////////////////////////////////////////////////////////
version="1.0";
info="
LIBRARY:
KeilenT.lib LOESUNGEN ZU DEN LA-UEBUNGEN
AUTHOR:
Thomas Keilen, email: keilen@mathematik.uni-kl.de
SEE ALSO:
matrix.lib, linalg.lib
KEYWORDS:
Lineare Algebra, Gauß-Algorithmus
PROCEDURES:
";
////////////////////////////////////////////////////////////////////
LIB "inout.lib";
////////////////////////////////////////////////////////////////////
proc permcol (matrix A, int c1, int c2)
"USAGE:
permcol(A,c1,c2); A matrix, c1,c2 positive integers
RETURN:
matrix, A being modified by permuting column c1 and c2
NOTE:
Platz für wichtige Anmerkungen,
auch über mehrere Zeilen gestreckt
KEYWORDS:
matrix, gaussnf, Lineare Algebra
EXAMPLE:
example permcol; shows an example"
{
}
example
{
"EXAMPLE:";
echo = 2;
ring r=0,(x),lp;
matrix A[3][3]=1,2,3,4,5,6,7,8,9;
pmat(A);
pmat(permcol(A,2,3));
}
Taucht innerhalb einer Zeile ein Doppelslash // auf, so wird der Rest der Zeile als Kommentar interpretiert und ignoriert.
Der erste Abschnitt, der zwischen den beiden Kommentarzeilen steht,
ist sozusagen der Kopf der Bibliothek. Die erste Zeile enthält das
reservierte Wort version, durch das die Versionsnummer der
Bibliothek festgelegt wird.
Dem reservierten Wort info folgen allgemeine Informationen
zur Bibliothek. SEE ALSO: und KEYWORDS: dienen
der Erstellung von Verweisen im Handbuch. Man sollte
beachten, daß unter dem Punkt PROCECURES: alle
Prozedurnamen, die in der Bibliothek enthalten sind, mit einer
maximal einzeiligen Beschreibung aufgeführt werden. Dieser Teil wird
von SINGULAR angezeigt, wenn die Hilfe zur entsprechenden
Bibliothek angefordert wird, etwa
Abschnitt zwei dient dem Einladen von anderen Bibliotheken, deren Prozeduren im bei den eigenen Prozeduren benötigt werden. Im Beispiel die Bibliothek inout.lib, deren Prozedur pmat im example-Teil der Prozedur permcol verwendet wird.
Im dritten Abschnitt folgen die Prozeduren, schlicht aneinander
gereiht. (Dabei ist darauf zu achten, daß der Befehl proc
stets am Beginn einer neuen Zeile steht!) Es empfiehlt sich, die in Abschnitt
angegebene Syntax für Prozeduren um zwei
Abschnitte zu erweitern. Zwischen Prozedurkopf und -körper kann man,
in Anführungszeichen " eingeschachtelt, einen Kommentarblock
einschieben, der gewisse Schlüsselworte gefolgt von zugehöriger
Information enthält. Unter USAGE: sollte eingegeben
werden, wie der Befehl aufgerufen wird, und ggf. von welchem Typ
die Argumente sind. RETURN: sollte Informationen darüber
enthalten, von welchem Typ die Rückgabe ist, und ggf. weitere
Informationen. NOTE: dient dazu wichtige Hinweise, zur
Prozedur, ihrer Bedienung, etc. zu geben. Die unter KEYWORDS:
angegebenen Worte werden ins Inhaltsverzeichnis des
SINGULAR-Handbuches aufgenommen, sofern die Bibliothek
SINGULAR offiziell angegliedert wird. EXAMPLE: gibt schließlich einen
Hinweis darauf, wie man sich unter SINGULAR ein Beispiel
zeigen lassen kann. Der hier erläuterte Kommentarblock enthält die
Information, die angezeigt wird, wenn man unter SINGULAR
Hilfe zu einer Prozedur anfordert, etwa durch
Der zweite Zusatzabschnitt am Ende der Prozedur wird durch das reservierte Wort example eingeleitet, gefolgt von einem Abschnitt in geschweiften Klammern, der SINGULAR-Code enthält. Ziel ist es, ein Beispiel für die Wirkung der Prozedur zu geben, die dem Nutzer die Verwendung erleichtert. Der Nutzer erhält das Beispiel durch Eingabe von example PROZEDURNAME;.