Mit diesem Feld im Fenster Steuerformel - Definition können Sie gültige Berechnungen für die Steuerformel auswählen.
Öffnen Sie dieses Fenster über
.Operation |
Beschreibung |
Beispiel |
Ergebnis |
---|---|---|---|
+ |
Addition |
X=2 X=X+1 |
3 |
– |
Subtraktion |
X=2 X=5-X |
3 |
* |
Multiplikation |
X=4 X=X*5 |
20 |
/ |
Division |
X=5 X=15/X; X=5 X=X/2 |
3; 2.5 |
% |
Modulus (Rest aus der Division) |
5%2; 10%8; 10%2; |
1; 2; 0 |
(,) |
Priorität |
5*(2+3) |
25 |
Round (Number, Decimals as Number) |
Eine vordefinierte Rundungsfunktion. Die Rundungsregeln beruhen auf folgenden Einstellungen:
|
Runden (2,134,2); Runden (2,-1) |
2.13; 0 |
Round (Number, Type) |
Eine vordefinierte Rundungsfunktion. Sie können nur eine der folgenden Einstellungen wählen:
Die Rundungsregeln beruhen auf den Einstellungen im Feld Dezimalstelle im Fenster Allgemeine Einstellungen, Registerkarte Anzeigen. |
Runden (2,134, Beträge) Wenn die Einstellung des Feldes Dezimalstelle Beträge 2 lautet. |
2.13 |
Operationen |
Beschreibung |
Beispiel |
Ergebnis |
---|---|---|---|
< |
Kleiner als |
5<8 |
True |
<= |
Kleiner gleich |
5<=8 |
True |
== |
Gleich |
5==8 |
False |
!= |
Ungleich |
5!=8 |
True |
>= |
Größer gleich |
5>=8 |
False |
> |
Größer als |
5>8 |
False |
If…else |
Bedingungsoperation |
if (X<6) {X=X+2} else {X=X+1} X=3 |
5 |
Beispiel
ICMS
Industrialisierung oder Wiederverkauf oder Verbrauch oder Assets
ICMS Bruttobetrag = Nettowert Artikel / (1-((ICMS-Satz/100)*(Basis/100)))
ICMS Steuerbetrag = ICMS Bruttobetrag – Nettowert
Basisbetrag = Nettowert Artikel / (1-((ICMS-Satz/100)*(Basis/100))*(1+(IPI-Satz/100)*(IPI-Basis/100)))
ICMS-Betrag = Basisbetrag * ((100-ICMS-Satz)/100)*(Basis/100))
Bei dieser Sprache wird zwischen Groß- und Kleinschreibung unterschieden.
Einzelausdrücke werden nicht unterstützt. Nur Anweisungen sind gültig.
Zu den gültigen Anweisungen gehören:
Zuordnungen
If
While
Zusammengesetzt
Regeln für Zuordnungsanweisungen:
Die lokale Bezugsvariable muss initialisiert sein.
Die folgenden Anweisungen sind ungültig:
a = a + 1
/*der lokalen Variable "a" ist zuvor kein Wert zugeordnet */
b = a
/*der lokalen Variable "a" ist zuvor kein Wert zugeordnet */
Der externen Bezugsvariable im Block kann kein Wert mit einem anderen Typ zugeordnet werden.
Die folgenden Anweisungen sind nicht korrekt:
a = "124"
/*nicht korrekt, da der Typ der lokalen Variable "a" String ist, was durch die letzte Anweisung vor dem Block bestimmt werden kann*/
Regeln für If/While-Anweisungen:
Der Typ des in "(" und ")" eingeschlossenen Ausdrucks muss vom Typ boolesch sein:
True
False
Das Ergebnis des Beziehungsausdrucks.
Die in "{" und "}" plus "{" und "}" eingeschlossenen Anweisungen bestehen aus einem Block, daher kommt Regel 2.b) zur Anwendung.
Regel für Funktionen:
Dieses Release unterstützt nur die Funktion "Runden", die über zwei Arten von Prototypen verfügt:
Round (Number, Decimals as Number)
/* Der erste Parameter "Zahl" enthält ganze und reelle Zahlen und stellt die Rundungszahl dar; der zweite Parameter "Ganzzahl" enthält den Typ integer und stellt nur die Zahlen nach dem Dezimalzeichen dar */
Round (Number, Type)
/* Der erste Parameter ist derselbe wie beim ersten Prototyp; der Wert des zweiten Parameters "Typ" muss einer der folgenden Werte sein: Prozente, Preise, Beträge oder Mengen */
Regeln für Ausdrücke:
Logischer Ausdruck:
Operatoren: && > ||
Operanden: Wert muss boolesch sein
Beziehungsausdruck:
Operatoren: >, >=, ==, !=, <, <=
Operanden:
Ist ein Stringwert zwischen zwei Operanden vorhanden, wird der Nicht-Stringwert vor einem Vergleich in den entsprechenden Stringwert geändert.
Ist kein Stringwert zwischen zwei Operanden vorhanden, können die Werte des Typs integer, reell und boolesch verglichen werden.
Beispiel
Der Wert von ("truf" > true) ist true. Hier wird der zweite Operand in "true" umgewandelt.
Der Wert von (2 > "12") ist false. Hier wird der erste Operand in "2" umgewandelt.
Der Wert von (2 < true) ist false. Hier wird der zweite Operand in 1 umgewandelt.
Der Wert von (2 > false) ist true. Hier wird der zweite Operand in 0 umgewandelt.
Arithmetischer Ausdruck:
Operatoren: (*, /, %) > (+, -)
Operanden:
Die Operanden für "%" müssen vom Typ integer sein\
Die Operanden für die Operatoren, außer "%" und "+" , müssen vom Typ Nicht-String sein, einschließlich integer, reell und boolesch.
Die Operanden für "+" können einen beliebigen Typ haben. Befindet sich ein Stringwert unter den Operanden, ist das Ergebnis eine Zeichenfolge; anderenfalls ist das Ergebnis numerisch.
Sind beide Operanden ganze Zahlen, ist auch das Ergebnis der Division ganzzahlig. Zum Beispiel: 2 / 4 =0 (genaue Division)
Monadischer Ausdruck:
Operatoren: !, -
Operanden:
Bei "!" müssen boolesche Werte stehen.
Bei "-" müssen Nicht-Stringwerte stehen.
Klammerausdruck: Ausdruck mit der höchsten Priorität
Operatoren: (, )
Ihre Priorität ist: 1) < 2) < 3) < 4) < 5)
Weitere Regeln:
Strings können nicht einem Ausgabeparameter zugeordnet werden, der nicht aus einem String besteht.
Dem Eingabeparameter kann kein Wert zugeordnet werden.
Zahlenüberlauf - wenn der Maximalwert 9223372036854 überschritten wird
Allen Ausgabevariablen müssen Werte zugeordnet werden.
if |
Percents |
ContinueNotice |
Round |
else |
Prices |
ContinueNextPageNotice |
|
while |
Amounts |
B1Notice |
|
True |
Quantities |
||
false |
UMWANDLUNGSPROGRAMM B1 |
ZEICHEN Buchstabe = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" . Zahl = "0123456789" . cr = CHR(13). tab = CHR(9) . If = CHR(10) . anyButQuote = ANY – “ ' ” anyButApostrophe = ANY – “ ' ” |
BEMERKUNGEN VON "/*" BIS "*/" |
IGNORE cr + lf + tab |
TOKENS ident = letter {letter | digit | '_'} . number = digit {digit}. real = digit {digit} "." digit {digit}. string = '"' {anyButQuote} '"' | "'" {anyButApostrophe} "'". |
PRODUCTIONS |
B1 = Body. Body = StatSeq . StatSeq = Stat [";"] {Stat [";"]}. CompoundStat = "{" StatSeq "}". Stat = AssignStat | IfStat | WhileStat | CompoundStat. |
AssignStat = Ident "=" Exp. IfStat = "if" "(" Exp ")" CompoundStat [ "else" CompoundStat ]. WhileStat = "while" "(" Exp ")" CompoundStat. |
Exp = ConExp. ConExp = OrExp. OrExp = AndExp { "||" AndExp }. AndExp = RelExp { "&&" RelExp }. RelExp = AddExp [ RelOp AddExp]. RelOp = ( "<" | "<=" | ">" | ">=" | "==" | "!=" ). |
AddExp = MulExp { AddOp MulExp}. AddOp = ( "+" | "-" ). |
MulExp = Factor { MulOp Factor }. MulOp = ( "*" | "/" | "%" ). |
Factor = ("true" | "false" | integer | string | real |"(" Exp ")" | IdentOrFunction | Enum | UnaryOp Factor). |
IdentOrFunction = Ident (ParamList | ). Ident = ident. ParamList = "(" [Exp { "," Exp}] ")". |
Enum = RoundTypeEnum | SystemStringEnum. RoundTypeEnum = ("Percents" | "Prices" | "Amounts" | "Quantities"). SystemStringEnum = ("ContinueNotice" | "ContinueNextPageNotice" | "B1Notice"). UnaryOp = ("-" | "!"). |
END B1. |