Die LPU-Anweisungen werden zeilenweise ausgewertet; dabei besagt das erste Zeichen der Zeile, um welche Art von Daten es sich handelt.
hiermit wird ein Label definiert. Dieser dient als Sprungziel für diverse Verzweigungsbefehle.
Label sind immer nur lokal innerhalb der aktuellen Prozedur gültig.
an dieser Stelle beginnt eine neue Prozedur. Sie erstreckt sich bis zum nächsten Prozedurbeginn oder bis zum Modulende.
Eine Prozedur wird mit `do' aufgerufen und mit `return' wieder verlassen.
Folgende Punktbefehle sind derzeit definiert:
definiert einen neuen Referenzpunkt auf dem aktuellen Label. Per Default ist dieser Referenzpunkt (0, 0), wodurch alle relativen Koordinaten im aktuellen Ausgabefenster zugleich absoluten Positionen auf dem aktuellen Fenster entsprechen.
Durch die BASE-Anweisung wird dieser Referenzpunkt verschoben; alle Ausgaben werden entsprechend versetzt.
Diese Anweisung definiert neue Ränder für das aktuelle Fenster. Wird für eine Seite kein Rand benötigt, so muß dort der Wert `0' angegeben werden.
stellt die Standard-Textausrichtung auf `zentriert' ein. Die gewählte Einstellung gilt ab der nächsten, neu begonnenen Zeile.
Diese Anweisung wirkt nur auf direkte Textzeilen, bzw. auf die Anweisung `text'.
Schaltet den Einzelschrittmodus wieder aus.
Setzt den Cursor an den linken Rand des aktuellen Labels in der aktuellen vertikalen Position. Dabei wird ein eventuell gesetzter linker Rand beachtet.
Entspricht der Anweisung `text', die Ausgabe erfolgt hier jedoch immer zentriert.
Befehle, die mit dem Schlüsselwort `db' eingeleitet werden, sind Datenbankbefehle. Diese werden im Abschnitt Datenbankanbindung gesondert behandelt.
Gibt die angegebenen Ausdrücke nach STDERR aus. Dies kann z.B. für Hinweise an den Anwender, oder zur Fehlersuche genutzt werden.
definiert eine neue Farbe unter dem angegebenen Namen. Das Format von INKDEF lautet
( [cVALUE] [mVALUE] [yVALUE] [kVALUE] )
Dabei steht VALUE jeweils für eine Prozentzahl zwischen 0 und 100. `c', `m', `y' und `k' stehen für die Farbkomponenten `cyan', `magenta', `yellow' und `black'.
Nicht angeführte Komponenten werden mit 0 Prozent gewichtet.
Alternativ kann man auch eine bereits zuvor definierte Farbe verwenden, wenn man INKDEF in der Form `@INKNAME' verwendet.
definiert einen neuen Stift unter dem angegebenen Namen. Das Format von PENDEF lautet
linewidth
Alternativ kann man auch einen bereits zuvor definierten Stift verwenden, wenn man PENDEF in der Form `@PENNAME' verwendet.
definiert einen neuen Style unter dem angegebenen Namen. Das Format von STYLEDEF lautet
basename size { attr }
Dabei steht `basename' für den Basisnamen der Fontfamilie, `size' für die Zeichengroesse in Punkt, und `attr' steht für jeweils eines der Attribute `N' (normal), `B' (bold, fett), `I' (italic, kursiv) und `U' (underlined, unterstrichen). Fehlen die Attributangaben, so wird `normal' angegeben.
Alternativ kann man auch einen bereits zuvor definierten Style verwenden, die Syntax von STYLEDEF lautet dann `@STYLENAME'.
hiermit wird eine Prozedur aufgerufen. Nach der Rückkehr aus dieser Prozedur (`return'-Anweisung) wird die Ausführung mit der nächsten Anweisung nach dem `do' fortgesetzt.
Optional können durch Komma getrennte Parameter angegeben werden. Innerhalb der Prozedur kann man die Anzahl der übergebenen Parameter mit `$parcnt' abfragen. Einzelne Parameter können mit `$param(N)' geholt werden; dabei läuft `N' von `0' bis `$parcnt'. `$param(0)' liefert den Namen der Prozedur.
beendet das aktuelle Formular, auch wenn hier noch unbenutzte Label vorhanden sind.
Die nächste `label'-Anweisung beginnt auf jeden Fall ein neues Formular.
Nach dem `eject' und vor dem nächsten `label' kann bei Bedarf ein neuer Formulartyp selektiert werden.
Befehle, die mit dem Schlüsselwort `eps' eingeleitet werden, gehören zum Komplex EPS-Support und werden dort gesondert behandelt.
bricht die Ausführung ab und verläßt LPU.
Es wird die angegebene MESSAGE nach STDERR ausgegeben, der Returncode ist 9.
bricht die Ausführung ab und verläßt LPU, wenn EXPR einen Wert ungleich Null ergibt.
Es wird die angegebene MESSAGE nach STDERR ausgegeben, der Returncode ist 9.
selektiert den angegebenen Formulartyp. Die ID muß dabei in der verwendeten TAB-Datei im Rahmen einer `form'-Anweisung definiert worden sein.
zeichnet einen Rahmen um das aktuelle Ausgabefenster
zeichnet ein Rechteck der Breite WIDTH und der Höhe HEIGHT. Wird der `@'-Ausdruck mit angegeben, so wird das Rechteck an der angegebenen Koordinate ausgegeben, ansonsten an der aktuellen Position.
Die Option `.pen' wählt einen anderen Stift aus.
Die Option `.ink' selektiert eine andere Farbe.
Die Option `.fill' besagt, daß der Kreis in der aktuellen Farbe und mit dem aktuellen Muster gefüllt wird.
Die Optionen `.dashed' und `.dotted' bzw. deren Kombination wählen die Art der Linien aus, die durch das Kommando gezeichnet werden: `solid', `dashed', `dotted' oder `dashed dotted'.
zeichnet einen Kreis mit dem Mittelpunkt an der aktuellen bzw. der angegebenen Koordinate mit dem angegebenen Radius.
Die Option `.pen PENDEF' wählt für dieses Objekt einen anderen Stift aus.
Die Option `.ink' selektiert eine andere Farbe.
Die Option `.fill' definiert, daß der Kreis in der aktuellen Farbe und mit dem aktuellen Muster gefüllt wird.
zeichnet eine Linie mit dem relativen Endpunkt (XOFF, YOFF), entweder ab der aktuellen Position, oder - sofern der `@'-Ausdruck angegeben ist - ab der Koordinate (XPOS, YPOS).
Die Option `.pen' wählt einen anderen Stift aus.
Die Option `.ink' selektiert eine andere Farbe.
Die Optionen `.dashed' und `.dotted' bzw. deren Kombination wählen die Art der Linien aus, die durch das Kommando gezeichnet werden: `solid', `dashed', `dotted' oder `dashed dotted'.
springe zum angegebenen lokalen Label.
erzeugt eine horizontale Linie mit der Breite WIDTH.
Durch Angabe der Option `.pen PENDEF' kann eine Linienstärke abweichend von der Standardeinstellung gewählt werden.
Die Angabe von `.left', `.right' bzw. `.center' überschreibt die aktuelle Einstellung für die Ausrichtung.
Setzt den Cursor in die linke obere Ecke des aktuellen Labels. Dabei werden eventuell gesetzte Ränder links und oben beachtet.
verschiebt den Cursor um WIDTH DOTs nach rechts (bzw. bei negativem Wert für WIDTH nach links). Die vertikale Position wird nicht verändert.
der logische Ausdruck EXPR wird berechnet. Ist das Ergebnis `wahr', so wird die danach genannte Anweisung ausgeführt, anderenfalls wird sie übersprungen.
Derzeit sind für STATEMENT nur `goto', `do', `return' und `exit' erlaubt.
selektiert eine neue Farbe. Die Syntax von INKDEF kann man beim Befehl `.defink' nachlesen.
gibt den Prompt aus, liest dann eine Zeile von STDIN ein und speichert sie in der angegebenen Variable.
Standardmäßig wird die Eingabe als Text abgespeichert; wird jedoch `#' mit angegeben, so wird die Eingabe als Zahl interpretiert, und die Variable bekommt den Typ `numerisch'. Wird in diesem Fall die Eingabe nicht als Zahl erkannt, so erfolgt eine Fehlermeldung nach STDERR, und die Eingabe muß wiederholt werden.
selektiert den ersten/nächsten Label. Es wird auf den nächsten Label auf dem aktuellen Formular weitergeschaltet. Wurde `ID' angegeben, so wird der nächste Label mit dieser ID verwendet.
Sind auf dem aktuellen Formular keine Label (mit der angegebenen ID) mehr vorhanden, wird das nächste Formular begonnen.
Die Angabe von `=' bestimmt, daß innerhalb des aktuellen Formulars nur noch Label vom aktuellen Typ verwendet werden, auch wenn für das Formular noch andere Typen definiert sind. Der Default für `=' ist die erste LABEL-Definition für das Formular.
Durch diesen Befehl wird die gesamte Fläche des Labels als Ausgabebereich definiert, und die Schreibposition wird in die linke obere Ecke gesetzt.
stellt die Standard-Textausrichtung auf `linksbündig' ein. Die gewählte Einstellung gilt ab der nächsten, neu begonnenen Zeile.
Diese Anweisung wirkt nur auf direkte Textzeilen, bzw. auf die Anweisung `text'.
hiermit wird ein Ausdruck berechnet, und das Ergebnis einer Variablen zugewiesen
entspricht der Anweisung `text', die Ausgabe erfolgt hier jedoch immer linksbündig.
setzt die Schreibposition an den Anfang der Zeile, und schaltet danach `N' Zeilen weiter; fehlt `N', so wird `1' angenommen. Für den Vorschub in Y-Richtung wird die Höhe eines Zeichens des aktuellen Fonts verwendet.
wie eject, jedoch wird keine neue Seite begonnen. Vielmehr werden die folgenden Ausgaben bis zum nächsten `.eject' über die bisherigen Ausgaben geschrieben.
selektiert einen neuen Stift. Die Syntax von PENDEF kann man beim Befehl `.defpen' nachlesen.
Gibt die angegebenen Textausdrücke ab der aktuellen Position, oder ab der angegebenen Koordinate (XPOS, YPOS) aus.
Fehlt der `@'-Ausdruck, so wird der Text ab der aktuellen Position ausgegeben, und die Schreibposition wird entsprechend aktualisiert.
Hier wird die angegebene Prozedur sooft ausgeführt, wie der Wert COUNT angibt. Beim ersten Durchlauf hat die Systemvariable `$count' dabei den Wert `1', dann `2' usw.
fordert eine bestimmte `Mindest-Version' von LPU. Ist die aktuelle LPU-Version kleiner als die angegebene VERSION, so wird das Programm mit einer entsprechenden Fehlermeldung abgebrochen.
Die Version muß im Format V.R-S angegeben werden (V=Version, R=Release, S=Subrelease), z.B. als `0.9-23' (ohne die Anführungszeichen).
verläßt das aktuelle Modul und kehrt zum aufrufenden Modul zurück. Dabei bildet EXPR den Returncode des Moduls.
stellt die Standard-Textausrichtung auf `rechtsbündig' ein. Die gewählte Einstellung gilt ab der nächsten, neu begonnenen Zeile.
Diese Anweisung wirkt nur auf direkte Textzeilen, bzw. auf die Anweisung `text'.
entspricht der Anweisung `text', die Ausgabe erfolgt hier jedoch immer rechtsbündig.
setzt die aktuelle Schreibposition auf die angegebene Koordinate innerhalb des aktuellen Fensters.
Schaltet in den Singlestep-Modus um. Danach wird vor der Ausführung jeder einzelnen Zeile die Anweisung sowie ein Prompt ausgegeben, und eine Bedienereingabe erwartet.
Die Leereingabe (nur ENTER) führt die nächste Zeile im Singlestep- Modus aus.
Eine ausführlichere Beschreibung findet sich im Abschnitt `Der Debugger'.
selektiert einen neuen Schriftstil. Die Bedeutung von STYLEDEF ist beim Befehl `.defstyle' nachzulesen.
gibt den angegebenen String in der aktuellen Zeile aus. Die Ausrichtung ist standardmäßig zentriert, sie wird jedoch doch die Anweisungen `left', `right' bzw. `center' verändert.
Es erfolgt hier keine automatische Zeilenfortschaltung!
Schaltet die Ausgabe von Trace-Informationen wieder ab.
Schaltet die Ausgabe von Trace-Informationen ein. Danach wird jede einzelne Anweisungszeile vor der Ausführung nach STDERR ausgegeben.
verhält sich exakt wie `.print', jedoch werden alle erzeugten Texte unterstrichen.
die angegebene Prozedur wird solange immer wieder ausgeführt, bis die angesprochene Datenbank `EOF' meldet. DBNUM ist Null fuer die aktuelle Datenbank, und größer Null für eine bestimmte Datenbank.
definiert eine oder mehrere Variablen mit den angegebenen IDs.
Variablen müssen definiert worden sein, bevor man sie verwenden kann. Der Gültigkeitsbereich einer Variablen ergibt sich aus dem Ort und Zeitpunkt der Definition.
Eine Variable `lebt' ab dem Moment der Definition, bis zum Verlassen der Prozedur, in der sie definiert wurde.
Wird auf eine Variable referiert, so wird sie zuerst in den lokalen Variablen der aktuellen Prozedur gesucht, und dann rückwaerts in den übergeordneten Prozeduren bis hin zu `main'.
verschiebt den Cursor um HEIGHT DOTs nach unten (bzw. bei negativem Wert für HEIGHT nach oben). Die horizontale Position wird nicht verändert.
Definiert eine Liste von Ausdrücken, die im Trace- oder Singlestep-Modus jeweils vor der Ausführung einer Anweisung berechnet und ausgegeben werden sollen. Diese Anweisung ist vor allem dazu geeignet, die Veränderung von Variablen während der Programmausführung zu beobachten.
Hier wird wiederholt der Ausdruck EXPR ausgewertet. Liefert dieser den Wert `wahr', so wird die angegebene Prozedur ausgeführt, und die Auswertung beginnt von vorne.
Liefert EXPR dagegen den Wert `falsch', so wird die Auswertung agbebrochen, und mit der nächsten Anweisung fortgefahren.
Definiert ein Ausgabefenster innerhalb des aktuellen Labels. Nach der Selektion eines neuen Labels ist dessen gesamte Fläche als Ausgabefenster definiert. Das Gleiche wird durch den Befehl `.window' ohne weitere Parameter erreicht.
Anderenfalls wird ein Fenster mit der Breite WIDTH und der Höhe HEIGHT definiert, entweder ab der aktuellen Position, oder - wenn der Ausdruck `@(XPOS, YPOS)' angegeben ist - ab der angegebenen Position.
Wird die Option `.frame' angegeben, so wird zusätzlich ein dünner Rahmen um das eben definierte Fenster gezogen.
Alle folgenden Koordinaten beziehen sich dann auf dieses neu definierte Fenster.
Diese Einstellung kann jederzeit durch eine neue `.window'-Anweisung überschrieben werden.
Zu Beginn hat das Fenster keinerlei Ränder. Diese können dann bei Bedarf durch die `.border'-Anweisung nachträglich gesetzt werden.
Eine Zeitatzeile beginnt mit einem `"' in der ersten Spalte.
Der angegebene Textstring (alles hinter dem `"') wird im aktuellen Stil ab der aktuellen Schreibposition ausgegeben. Die Schreibposition wird anschließend auf den Anfang der nächsen Zeile gesetzt. Dies wird erreicht, indem die X-Koordinate auf Null gesetzt, und die Y-Koordinate um die Höhe eines Zeichens des aktuellen Fonts erhöht wird.
Somit entspricht die Zeile
"TEXTZEILE
einer Kurzform für die beiden Punktanweisungen
.text :TEXTZEILE
.nl
Innerhalb des Textes können bestimmte Ersetzungen durchgeführt werden; siehe hierzu den entsprechenden Abschnitt.
Für die serienmäßige Erstellung von Formularen, Etiketten etc. wird eine Importmöglichkeit für externe Daten benötigt. Dies wird bei LPU durch die Datenbankschnittstelle TDB erreicht.
Dabei handelt es sich um eine einfache Datenbank, speziell für die sequentielle Verarbeitung von textuellen Daten. Derzeit wird nur der Typ `TDB' unterstützt. Die Dateiendung dafür lautet `.tdb'.
Weitere Datenbanktypen sind geplant.
Eine TDB-Datei ist eine normale Textdatei, bei der jede Textzeile einen Datensatz darstellt. Innerhalb einer Zeile werden Felder durch ein spezielles Trennzeichen abgegrenzt. Das Trennzeichen ist per Default das Nullbyte, so daß die ganze Zeile als ein Feld angesehen wird; dies kann jedoch beim öffnen der Datei mit der Option `/' durch ein beliebiges, druckbares Zeichen ersetzt werden.
Folgende Punktbefehle realisieren die Datenbank-Schnittstelle in LPU:
Hiermit wird eine Datenbank mit dem angegebenen Namen eröffnet. Der Typ ist `TDB'.
Wird die Option `#N' angegeben, so wird die Datenbank nicht im aktuellen, sondern im angegebenen Bereich eröffnet, und dieser Bereich wird zum aktuellen Bereich. Der erste Satz dieser Datenbank wird zum aktuellen Datensatz.
Wird die Option `/T' verwendet, so wird der Feldtrenner <NUL> durch den Trenner `T' ersetzt. Fuer `T' kann dabei jedes beliebige, druckbare Zeichen eingesetzt werden.
Hiermit wird die Datenbank im aktuellen Bereich wieder geschlossen.
setzt den aktuellen Bereich auf den angegebenen Wert.
setzt den Datensatzzeiger der Datenbank im aktuellen Bereich auf den ersten Satz.
springt in der aktuellen Datenbank auf den nächsten Datensatz.
durchsucht die aktuelle Datenbank ab dem aktuellen Datensatz sequentiell bis zum Ende nach dem Eintrag PATTERN im Feld `N'.
Der gefundene Datensatz wird zum aktuellen Datensatz.
Ab der Version 0.9-23 ist in LPU experimentelle Unterstützung für `Embedded Postscript' Files (EPS) integriert.
Der Inhalt einer EPS-Datei wird als `Black Box' ausgegeben; lediglich die Lage auf dem Label und die Größe der Ausgabebox können beeinflusst werden.
Es gibt die einfache Möglichkeit, die EPS-Datei mit einer einzigen Anweisung (eps insert) auszugeben, oder die Datei zu öffnen, Informationen über die Datei (derzeit nur die Größe) zu ermitteln, die Größe zu modifizieren, und den Inhalt dann an einer bestimmten Stelle auszugeben. Im zweiten Fall kann die Datei auch mehrfach ausgegeben werden (auch in verschiedenen Größen); dies erhöht die Performance etwas, aber nicht entscheidend.
Der zweite Anwendungsfall ist aufwendiger, aber auch flexibler. Insbesondere stehen nur hier die Dateiinformationen vor der Ausgabe zur Verfügung.
Wie bereits gesagt ist die Unterstützung für EPS-Dateien derzeit noch experimentell; es muß insbesondere noch mit Änderungen an der Programmier-Schnittstelle gerechnet werden.
Es folgt eine Liste der derzeit verfügbaren Anweisungen.
Diese Anweisung gibt eine EPS-Datei an einer bestimmten Stelle des aktuellen Labels in einer bestimmten Größe aus.
FILENAME ist der Name der Datei als absoluter oder relativer Pfad in Unix-Notation; die Extension der Datei muß ebenfalls mit angegeben werden.
Ohne die Angabe von Optionen wird die Datei an der aktuellen Position in der durch die EPS-Datei vorgegebenen Größe ausgegeben.
Folgende Optionen sind erlaubt:
Diese Anweisung öffnet die angegebene EPS-Datei.
FILENAME ist der Name der Datei als absoluter oder relativer Pfad in Unix-Notation; die Extension der Datei muß ebenfalls mit angegeben werden.
Anschließend können weitere `eps'-Anweisungen auf die Datei angewendet werden, bis die Datei mit 'eps close' (siehe unten) wieder geschlossen wird. Es kann zu einer Zeit immer nur eine EPS-Datei offen sein.
Während die EPS-Datei offen ist, kann man unter Verwendung der Systemfunktion `$eps{ATTR}' auf die Dateiattribute zugreifen; Näheres dazu im Abschnitt über die Systemfunktionen.
Gibt der offenen EPS-Datei eine neue Größe. Die Parameter XSIZE und YSIZE besitzen die Einheit DOT.
Auch hiermit wird der offenen EPS-Datei eine neue Größe gegeben. Im Unterschied zu `eps resize' wird hier keine absolute Größe festgelegt, sondern es werden Skalierungsfaktoren für beide Richtungen angegeben. `1.0' für beide Werte läßt die Größe unverändert. `0.5' staucht die Datei in der angegebenen Richtung auf die Hälfte zusammen.
Der Skalierungsfaktor bezieht sich immer auf die Originalgröße der Datei; dadurch wirkt sich bei mehrfacher Anwendung dieser Funktion immer nur der jeweils letzte Aufruf aus.
Ebenso beeinflussen sich Aufrufe von `eps resize' und `eps rescale' nicht, nur der jeweils letzte Aufruf wirkt sich auf die Größe aus.
Diese Anweisung gibt die offene EPS-Datei einmalig aus. Dabei wird die zuvor durch die Anweisungen `eps resize' bzw. `eps rescale' festgelegte Größe (bzw. bei Fehlen dieser Anweisungen die Originalgröße) verwendet.
`eps show' kann beliebig oft hintereinander ausgeführt werden, wobei jeweils neue Positionen und (durch Anwendung von `eps resize' oder `eps rescale') Größen zur Anwendung kommen können.
Die Ausgabe erfolgt an der aktuellen Cursorposition, es sei denn die Position wird durch die '@'-Option überschrieben.
Als Ankerpunkt für die EPS-Datei wird normalerweise die linke obere Ecke der BoundingBox verwendet; dies kann durch die Optionen `.hcenter', `.vcenter' und `.center' verändert werden.
Es folgt eine vollständige Liste der verfügbaren Optionen für diese Anweisung.
Diese Anweisung schließt eine offene EPS-Datei. Erst danach kann wieder eine neue EPS-Datei verwendet werden.
Zeilen, die mit einem `#' beginnen, sind Präprozessoranweisungen. Sie werden direkt beim Einlesen des Quelltextes ausgeführt.
Derzeit sind folgende Präprozessoranweisungen definiert:
Fügt die angegebene Datei an der aktuellen Stelle in den Quelltext ein. Fehlt die Erweiterung, so wird implizit `.lpi' angenommen.
Jede Zeile der Eingabedatei wird vor der Interpretation auf darin enthaltene Ersetzungsmarken untersucht. Werden solche Marken gefunden, so wird eine entsprechende Ersetzung durchgeführt, d.h. jede Marke wird durch jeweils aktuell gültigen Text ersetzt. Die Ersetzungsmarke wird durch den Backslash `\' eingeleitet.
Folgende Ersetzungen sind derzeit definiert:
erzeugt einen einzelnen Backslash.
liefert den Namen des aktuellen Moduls.
liefert den Parameter `N' des aktuellen Moduls.
liefert die Anzahl der Parameter.
liefert den Returncode des letzten Moduls.
liefert Feld `N' aus dem aktuellen Datensatz.
liefert die Anzahl der Felder im aktuellen Datensatz.
liefert die Datensatznummer der aktuellen Datenbank.
liefert den EOF-Status der aktuellen Datenbank.
liefert den Inhalt des Symbols ID.
liefert das Resultat des angegebenen Ausdrucks.
liefert den Inhalt der Environmentvariable ENV.
An vielen Stellen innerhalb der Punktanweisungen ist ein Ausdruck erlaubt. Dieser besteht aus Operanden, die durch Operatoren miteinander verknüpft werden.
Als Operanden sind Textkonstanten, numerische Konstanten, Symbole, Systemvariablen und Systemfunktionen erlaubt. Verknüpft werden diese durch arithmetische, logische oder Vergeichsoperatoren.
Jeder Ausdruck liefert als Ergebnis einen Wert und einen Typ, Text oder numerisch.
Man unterscheidet normale, logische, numerische und Text-Ausdrücke:
Hier eine Liste der z.Z. definierten Operatoren, deren Bedeutung weitgehend denjenigen der gleichlautenden C-Operatoren entspricht:
Vergleich: `=', `<>', `<', `<=', `>', `>='
Numerisch: `+', `-', `*', `/', `%'
Logisch: `&', `|', `&&', `||', `!'
Sonstiges: `#' wandelt den folgenden Faktor, soweit möglich, in eine Zahl um.
Folgende Systemvariablen und -funktionen sind derzeit definiert:
liefert den Abstand der Baseline zur Oberkante der `bounding box' des derzeit selektierten Font in DOT.
liefert die Information, ob LPU aktuell in Batchmode läft.
haengt zwei oder mehr Strings aneinander.
liefert innerhalb von `.repeat'-Anweisungen einen Schleifenzähler.
liefert den Inhalt von Feld FLD des aktuellen Datensatzes von Datenbank DB.
liefert die Anzahl der Felder im aktuellen Datensatz der Datenbank DB.
wertet einen Ausdruck vom Typ `UNIT' aus, und liefert dessen Wert in DOTs zurück.
Der Ausdruck kann vom Typ INT oder FLOAT sein, und eine nachgestellte Einheit besitzen. Als Ergebnis wird in jedem Fall ein INT-Wert mit der entsprechenden Anzahl DOTs geliefert.
liefert den Status `Dateiende' für die angegebene Datenbank.
liefert einen Attributwert für die derzeit offene EPS-Datei.
Derzeit sind folgende Attribute definiert:
wertet den Ausdruck EXPR aus, und wandelt das Ergebnis in einen Wert vom Typ T_FLT um. Kann der Resultattyp nicht umgewandelt werden, tritt ein Fehler auf.
liefert die Anzahl der aktuell definierten Fonts.
liefert die Höhe des derzeit selektierten Font in DOT.
liefert die Anzahl der in der TAB-Datenbank definierten Formtypen.
liefert den Namen der Form mit der Nummer FNR.
FNR läuft von 0 bis `$formcnt-1'. Die spezielle Angabe `.' bezieht sich auf die aktuell selektierte Form.
liefert einen String-Wert mit dem Datum der Generierung von LPU.
testet, ob die angegebene Variable vom Typ `numerisch' ist.
testet, ob die angegebene Variable vom Typ `text' ist.
testet, ob eine Variable mit dem angegebenen Namen existiert.
liefert die Anzahl der verschiedenen Labeltypen, die in der angegebenen Form definiert sind.
Zu FNR siehe bei $formid.
liefert den Namen von Labeltyp LNR in Form FNR.
Zu FNR siehe bei $formid.
LNR läuft von 0 bis `$lblcnt(FNR)-1'. Die spezielle Angabe `.' bezieht sich auf den aktuell selektierten Labeltyp.
liefert die Anzahl von identischen Labeln von Typ LNR in Form FNR, die innerhalb einer Form nebeneinander liegen.
Zu FNR siehe bei $formid. Zu LNR siehe bei $lblid.
liefert die Anzahl von identischen Labeln von Typ LNR in Form FNR, die innerhalb einer Form untereinander liegen.
Zu FNR siehe bei $formid. Zu LNR siehe bei $lblid.
entfernt alle führenden Blanks aus dem String STR.
liefert den größeren der beiden angegebenen Ausdrücke E1 und E2 zurück.
liefert den kleineren der beiden angegebenen Ausdrücke E1 und E2 zurück.
liefert die aktuelle Zeit als ANSI-Timestamp. (Integerwert, der die seit Beginn der `Epoche' (01.01.1970, 00:00 GMT) vergangene Zeit in Sekunden enthält).
wandelt den angegebenen Ausdruck in einen ganzzahligen Wert um und liefert diesen zurück.
liefert die Information, ob das Ergebnis der Auswertung von EXPR ungerade ist. Diese Funktion ist nur für Ausdrücke vom Typ T_NUM definiert, und liefert anderenfalls einen Fehler.
liefert den aktuellen Inhalt von Parameter `N'.
Der Wert von N kann im Bereich 0..$parcnt liegen. `0' liefert dabei den Prozedurnamen, 1..$parcnt den aktuellen Wert des angegebenen Parameters.
liefert die aktuelle Anzahl von Parametern.
liefert die Information, ob der aktuell selektierte Font proportional ist oder nicht.
liefert den Status der letzten `return'-Anweisung.
entfernt alle folgenden Blanks aus dem String STR.
wandelt den Zahlenwert VAL in einen formatierten String der Mindestlänge LEN um. Ist der Wert DEC angegeben, und ist er größer Null, so wird vor den letzten DEC Stellen ein Dezimalpunkt eingefügt.
erzeugt einen String mit einer formatierten Zeitangabe.
Der Parameter TIME enthält einen ANSI-Timestamp, und in FORMAT wird der Formatstring angegeben; dieser entspricht dem Formatstring der gleichnamigen C-Funktion.
liefert die Anzahl der Zeichen im angegebenen String.
liefert einen String der Länge LEN, indem der String STRING durch wiederholtes Anhaengen des Strings PAT auf die angegebene Länge gebracht wird. Ein zu langer String wird entsprechend abgeschnitten.
liefert einen String, der durch die COUNT-malige Aneinanderreihung von STRING erzeugt wird.
liefert einen Ausschnitt des angegebenen Strings, beginnend mit POS (ab 0), und mit der Länge LEN Zeichen.
Ist LEN negativ, so werden die letzten `abs(LEN)' Zeichen des Strings geliefert, jedoch keinesfalls vor Zeichen POS des Strings beginnend.
liefert den Offset, an dem der String PAT erstmals in STRING vorkommt (>=0), oder -1, falls das Pattern nicht gefunden wird.
liefert das erste bzw. nächste Token aus dem String STR. Der erste Aufruf der Funktion erfolgt in der Form
$strtok(STR, LIM)
Damit wird der String STR intern abgelegt, und der Anfang von STR bis zum ersten Auftreten eines Zeichens aus dem String LIM wird zurückgegeben.
Alle folgenden Aufrufe sollten dann in der Form
$strtok(LIM)
erfolgen. Damit wird das nächste Teil des gespeicherten Strings STR, diesmal bis zum ersten Auftreten eines Zeichens aus dem aktuell übergebenen String LIM, zurückgegeben.
Dieser Vorgang wiederholt sich solange, bis der gesamte String in einzelnen Portionen zurückgegeben wurde. Alle folgenden Aufrufe liefern dann nur noch einen Leerstring zurück.
liefert die Breite des angegebenen Strings fuer den aktuellen Font in DOTs.
entfernt alle führenden und folgenden Blanks aus dem String STR.
liefert die aktuelle LPU-Version als String zurück.
liefert den horizontalen Offset des aktuellen Fensters innerhalb des Labels in DOT.
liefert die horizontale Position des Cursors im aktuellen Fenster in DOT.
liefert die Breite des aktuellen Fensters in DOT.
liefert den vertikalen Offset des aktuellen Fensters innerhalb des Labels in DOT.
liefert die vertikale Position des Cursors im aktuellen Fenster in DOT.
liefert die Höhe des aktuellen Fensters in DOT.