If-Bedingungen

Sie dürfen in Skripten, in Buchungssatz-Listen und auch in Kontenplänen If-Bedingungen setzen. (Wenn BEDINGUNG dann führe aus...)

Die Parameter können über das Eingabefeld If-Bedingungen im TEXTBUCH-Hauptfenster eigenständig gesetzt werden. Mehrere Bedingungen werden durch Leerzeichen getrennt.


***if VORLÄUFIG ***else ***end

Das "else" ist optional. Auf Deutsch heißt das:

Wenn (if) VORLÄUFIG gesetzt ist, führe nur dann die folgenden Zeilen aus.
Wenn VORLÄUFIG nicht gesetzt ist, führe stattdessen (else) die Zeilen hinter "else" aus; führe die Zeilen hinter (end) Ende wieder auf jeden Fall aus.

Hinter IF dürfen mehrere beliebig verschachtelte Bedingungen wie in vielen Programmiersprachen stehen, eingeklammert mit runden Klammern. Groß- und Kleinschreibung wird ignoriert.


***if (Vorläufig UND Testabschluss) ODER Immer

Die zulässigen Verknüpfungen sind:
- NICHT, NOT (wird immer zuerst aufgelöst)
- UND, UNDZUGLEICH, AND, &, &&
- ODER, OR, |, ||
- XOR

Das "UND" müssen Sie gedanklich immer als "und zugleich" lesen. Am besten verwenden Sie gleich den Ausdruck "UNDZUGLEICH".

Werden im If-Eingabefeld im TEXTBUCH Hauptfenster mehrere If-Bedingungen angegeben, so werden diese durch Leerzeichen oder Semikolon getrennt.

Im Hauptfenster stellt der Schriftzug "if" einen Button dar. Wenn man darauf drückt, erhält man eine Auswahlbox der verwendeten If-Bedingungen in den augenblicklich angemeldeten Skripten. Sie dürfen also sowohl If-Bedingungen über die Auswahlbox auswählen als auch selbst editieren. Wenn Sie eine Auswahl in der Auswahlbox treffen, wird die Auswahl unmittelbar im Editierfeld aktualisiert.

Der Editor zeigt bei Skripten und Buchungssatz-Dateien die If-Bedingungen per Hintergrundfarbe an: Wenn keine If-Bedingungen gesetzt sind, wird die Verschachtelungsebene mit leichter gelber Hintergrundfärbung angezeigt. Bei gesetzten If-Bedingungen wird dagegen der inaktive Teil des Textes mit einer grauen Hintergrundfarbe versehen.

Eine Sonderrolle spielt die vordefinierte If-Bedingung


***if LAUFENDESJAHR

"LAUFENDESJAHR" wird vom Programm selbst gesetzt: Wenn das aktuelle Datum der Computeruhr in den Zeitraum des momentan angemeldeten Buchungsjahres fällt, ist die Bedingung wahr, andernfalls falsch. Diese Unterscheidung kann genutzt werden, um die richtige Überschrift für die Auswertung auszugeben:


***if Laufendesjahr Vorläufiger Abschluss Buchungsjahr [Jahr] zum Stichtag [Datum] ***else Jahresabschluss [Jahr] ***end

Außerdem werden automatisch zwei If-Bedingungen gesetzt, mit dem Sie das Buchungsjahr abfragen können:

***if Buchungsjahr17
***if Buchungsjahr2017

Achten Sie bitte darauf, dass zwischen "Buchungsjahr" und Jahreszahl kein Leerzeichen sich befinden darf.

Des weiteren wird je nach verwendeter TEXTBUCH-Version eine plattformabhängige Bedingung gesetzt:

WIN32 für das Windows-Betriebssystem
Linux für Linux
MACOSX für Macintosh OSX
OS2 für eComStation, ArcaOS und OS/2.

If-Bedingungs-Fenster

If-Bedingungen können Sie auf zweierlei Weise setzen. Entweder Sie schreiben die gewünschten Bedingungen in das If-Bedingungs-Eingabefeld im TEXTBUCH Hauptfenster neben dem Button "if". Oder Sie drücken auf den "if" Button und setzen mit Doppelklick die zur Verfügung stehenden Bedingungen. In dieser Liste stehen alle If-Bedingungen, die in Skripten enthalten sind. Die in runden Klammern gesetzten Bedingungen wurden vom Programm selbst gesetzt. Diese können Sie nicht per Doppelklick verändern.

If-Bedingungen zur Laufzeit in Skripten setzen

Sie können mit Hilfe von Vergleichsoperatoren If-Bedingungen fallweise setzen. Hierfür gibt es ein weiteres Stern-Kommando mit der allgemeinen Schreibweise für Zahlenwerte


***Bedingung BEDNAME : FORMEL1 = FORMEL2

und außerdem auch für Kontenmengen:


***Bedingung BEDNAME : KONTENMENGE Mengenoperator ***Bedingung BEDNAME : KONTENMENGE1 Mengen-Vergleichsoperator KONTENMENGE2

Diese Funktionalität steht in vollem Umfang nur für Skripte zur Verfügung. Innerhalb von Buchungssätzen steht dieser Befehl nicht zur Verfügung und innerhalb von Kontenplänen steht eine eingeschränkte Funktionalität zur Verfügung.

Fixe If-Bedingungen setzen

Mit dem Befehl ***DF (DeFinieren) können Sie in Skripten, aber auch in beliebigen Eingabedateien, feste If-Bedingungen setzen:


***DF BEDNAME

BEDNAME steht für eine beliebige Zeichenfolge, die den Namen der Bedingung festlegt.

If-Bedingungen über den Vergleich von Zahlenwerten setzen


***BEDINGUNG BEDNAME : FORMEL1 = FORMEL2

BEDNAME steht für eine beliebige Zeichenfolge, die den Namen der Bedingung festlegt. Statt "Formel1" bzw. "Formel2" dürfen Sie beliebige Zahlen oder auch ganze Formeln, ggfs. mit runden Klammern, verwenden; hierbei sind neben Zahlen die Summen- und Faktorvariablen SUMX und FAKX zulässig, das aktuelle Buchungsjahr [JAHR] sowie vorab schon definierte Formeln FORMELn, die wiederum die vorher genannten Elemente enthalten dürfen.

Neben dem Istgleichzeichen "=" dürfen auch noch andere Vergleichsoperatoren verwendet werden. Ingesamt gibt es sechs Operatoren:

= Gleich
> Größer
< Kleiner
>= größer oder gleich
<= kleiner oder gleich
<> Ungleich.

Zwei Zahlenwerte werden als "gleich" interpretiert, wenn die Differenz kleiner 0,005 ist.

Eine einfache Anwendung wäre folgendes Skript:


***Bedingung NeueMwst : [Jahr] >= 2007 ***if NeueMwst Es wird ein Mehrwertsteuersatz von 19% berechnet. ***else Es wird ein Mehrwertsteuersatz von 16% berechnet. ***end

If-Bedingungen über Mengenoperatoren setzen

Sie können If-Bedingungen mit Vergleichsoperatoren für Kontenmengen setzen.


***Bedingung BEDNAME : KONTENMENGE Mengenoperator ***Bedingung BEDNAME : KONTENMENGE1 Mengen-Vergleichsoperator KONTENMENGE2

Als Kontenmengen kommen beliebige Kontenmengen in Frage, d.h. die im Programm fest definierten Kontenmengen wie z.B. "AUFWANDSKONTEN", die im Kontenplan mit runden oder geschweiften Klammern definierten Untergruppen und die mit "***sind" in Skripten definierten Kontenmengen. Wie üblich spielt auch bei diesem Befehl Groß- und Kleinschreibung keine Rolle.

Es gibt drei Mengenoperatoren, die nur die Eingabe einer Kontenmenge erwarten:

Mengenoperator ISTDEFINIERT

Mit "IstDefiniert" können Sie abfragen, ob eine bestimmte Kontenmenge im Programm überhaupt definiert wurde. Dies macht natürlich bei den im Programm fest definierten Kontenmengen keinen Sinn, aber bei der Verwendung von Untergruppen in Kontenplänen, wenn Sie mit demselben Skript unterschiedliche Kontenpläne verarbeiten möchten, oder um die Reihenfolge der Abarbeitung von Skripten zu kontrollieren.


***Bedingung KassenkontenVorhanden : Kassenkonten ISTDEFINIERT ***if KassenkontenVorhanden //Auswertung bzgl. Kassenkonten... ***else FEHLER: Es ist kein Kontenplan oder Skript mit "Kassenkonten" ausgeführt worden. ***end

Mengenoperator ISTLEER

Der Ausdruck "Kontenmenge ISTLEER" ist wahr, wenn die Kontenmenge kein einziges Konto enthält:


***Bedingung UmlaufkontenFehlerhaft : Umlaufkonten ISTLEER ***if UmlaufkontenFehlerhaft FEHLER: Kontenmenge "UMLAUFKONTEN" ist leer. Entweder sind die Konten noch nicht abgeschlossen worden oder alle Konten des Umlaufvermögens bzw. der Verbindlichkeiten (UMLAUFVERBINDKONTEN) sind im Soll. ***end

Mengenoperator ISTSINGLE

Wenn Sie Skripte für gänzlich unterschiedliche Kontenpläne schreiben (z.B. gleichzeitig für SKR03 und SKR04), können Sie mit Hilfe der sog. Zusatzgruppen im Kontenplan einem einzelnen Konto einen Namen zuteilen, indem Sie einem Konto einen Namen in geschweiften Klammern vergeben, z.B. {USTVERRECHKONTO}. Programmtechnisch ist es aber kein Name für ein Konto, sondern eine Kontenmenge, die grundsätzlich nur ein Konto enthält bzw. enthalten sollte. Mittels ISTSINGLE können Sie abfragen, ob die fragliche Kontenmenge wirklich genau ein Konto enthält:


***Bedingung UstVerrechKorrekt : UstVerrechKonto ISTSINGLE ***if UstVerrechKorrekt ***alle UstVerrechKonto Das Umsatzsteuer-Verrechnungskonto lautet: [Knum] [Text] ***else //Anfang von UstVerrech Fehler! ***Bedingung UstVerrechLeer : UstVerrechKonto ISTLEER ***if UstVerrechLeer FEHLER: Es ist vergessen worden, im Kontenplan das Ust-Verrechnungskonto mit {UstVerrech} zu markieren. ***else FEHLER: {UstVerrech} darf im Kontenplan nur einmal verwendet werden! ***end ***end //Ende von UstVerrech Fehler!

Hier sind nun zwei If-Bedingungen ineinander verschachtelt worden, so dass zwischen zwei unterschiedlichen Fehlermeldungen sowie einer korrekten Ausgabe unterschieden wird.

Mengen-Vergleichsoperatoren ENTHÄLT, ENTSPRICHT, ÜBERLAPPT

Es gibt drei Mengen-Vergleichsoperatoren, die die Eingabe von zwei Kontenmengen erwarten:

ENTHÄLT ist zu lesen als "enthält vollständig". Das heißt die zweite Kontenmenge ist eine Teilmenge der ersten Kontenmenge. Beim folgenden Beispiel sollte PROGRAMM_OK1 immer wahr sein, denn dieser Zusammenhang ist in TEXTBUCH fest verdrahtet und dient hier nur zum Verständnis:


***Bedingung PROGRAMM_OK1 : Erfolgskonten ENTHÄLT Aufwandskonten

ENTSPRICHT stellt einen simplen Vergleich zweier Kontenmengen dar. Die Bedingung ist wahr, wenn die beiden Kontenmengen völlig identisch sind, das heißt exakt dieselben Konten enthalten.


***Bedingung KASSE_NORMAL : Kassenkonten ENTSPRICHT Barvermögen

Mit ÜBERLAPPT fragen Sie ab, ob es Konten (mindestens eines) gibt, die beiden Kontenmengen angehören: die sog. "Schnittmenge".


***Bedingung KASSE_FEHLER1 : Kassen_A ÜBERLAPPT Kassen_B ***if KASSE_FEHLER1 Fehler im Kontenplan: Folgende Kassen werden sowohl unter "Kassen_A" als auch unter "Kassen_B" aufgelistet: ***alle Kassen_A undzugleich Kassen_B [Knum] [Text] Bitte im Kontenplan Gruppenzugehörigkeit korrigieren! ***end