Rundung auf 20er Schritte im Tag BMP

Runden von BPM Werten mit bis zu 2 Dezimalstellen auf ganze Zahlen mit Rundungsschrittweite BPM_ROUNDBY = n (mit n als Element von N+):

$div($mul($mul(%BPM_ROUNDBY%,100),$ifgreater($sub($div($mul($left($replace(%BPM%,.,)00,$add($len($div(%BPM%,1)),2)),10),$mul(%BPM_ROUNDBY%,100)),$mul($div($left($replace(%BPM%,.,)00,$add($len($div(%BPM%,1)),2)),$mul(%BPM_ROUNDBY%,100)),10)),4,$add($div($left($replace(%BPM%,.,)00,$add($len($div(%BPM%,1)),2)),$mul(%BPM_ROUNDBY%,100)),1),$div($left($replace(%BPM%,.,)00,$add($len($div(%BPM%,1)),2)),$mul(%BPM_ROUNDBY%,100)))),100)

Beispiele:
BPM=149.99 und ROUNDBY=1 ergibt BPM=150.
BPM=149.99 und ROUNDBY=2 ergibt BPM=150.
BPM=149.99 und ROUNDBY=3 ergibt BPM=150.
BPM=149.99 und ROUNDBY=4 ergibt BPM=148.
BPM=149.99 und ROUNDBY=5 ergibt BPM=150.
BPM=149.99 und ROUNDBY=6 ergibt BPM=150.
BPM=149.99 und ROUNDBY=7 ergibt BPM=147.
BPM=149.99 und ROUNDBY=8 ergibt BPM=152.
BPM=149.99 und ROUNDBY=9 ergibt BPM=153.
BPM=149.99 und ROUNDBY=10 ergibt BPM=150.
BPM=149.99 und ROUNDBY=20 ergibt BPM=140.
BPM=149.99 und ROUNDBY=40 ergibt BPM=160.
BPM=149.99 und ROUNDBY=100 ergibt BPM=100.

Anfang Aktionengruppe Round BPM to integer

Aktion #1
Aktionstyp 5: Tagfeld formatieren
Feld: BPM_MIXMEISTER
Formatstring: $if2(%BPM_MIXMEISTER%,%BPM%)

Aktion #2
Aktionstyp 5: Tagfeld formatieren
Feld: BPM_ROUNDBY
Formatstring: 1

Aktion #3
Aktionstyp 5: Tagfeld formatieren
Feld: BPM_A
Formatstring: $mul(%BPM_ROUNDBY%,100)

Aktion #4
Aktionstyp 5: Tagfeld formatieren
Feld: BPM_B
Formatstring: $left($replace(%BPM%,.,)00,$add($len($div(%BPM%,1)),2))

Aktion #5
Aktionstyp 5: Tagfeld formatieren
Feld: BPM_C
Formatstring: $div($mul(%BPM_B%,10),%BPM_A%)

Aktion #6
Aktionstyp 5: Tagfeld formatieren
Feld: BPM_D
Formatstring: $div(%BPM_B%,%BPM_A%)

Aktion #7
Aktionstyp 5: Tagfeld formatieren
Feld: BPM_E
Formatstring: $mul(%BPM_D%,10)

Aktion #8
Aktionstyp 5: Tagfeld formatieren
Feld: BPM_F
Formatstring: $ifgreater($sub(%BPM_C%,%BPM_E%),4,$add(%BPM_D%,1),%BPM_D%)

Aktion #9
Aktionstyp 5: Tagfeld formatieren
Feld: BPM
Formatstring: $div($mul(%BPM_A%,%BPM_F%),100)

Aktion #10
Aktionstyp 9: Tagfelder entfernen
Folgende Tagfelder entfernen (mit Semikolon getrennt): BPM_A;BPM_B;BPM_C;BPM_D;BPM_E;BPM_F;BPM_ROUNDBY

Ende Aktionengruppe Round BPM to integer (10 Aktionen)

oder

Anfang Aktionengruppe Round BPM to integer

Aktion #1
Aktionstyp 5: Tagfeld formatieren
Feld: BPM_MIXMEISTER
Formatstring: $if2(%BPM_MIXMEISTER%,%BPM%)

Aktion #2
Aktionstyp 5: Tagfeld formatieren
Feld: BPM_ROUNDBY
Formatstring: 1

Aktion #3
Aktionstyp 5: Tagfeld formatieren
Feld: BPM
Formatstring: $div($mul($mul(%BPM_ROUNDBY%,100),$ifgreater($sub($div($mul($left($replace(%BPM%,.,)00,$add($len($div(%BPM%,1)),2)),10),$mul(%BPM_ROUNDBY%,100)),$mul($div($left($replace(%BPM%,.,)00,$add($len($div(%BPM%,1)),2)),$mul(%BPM_ROUNDBY%,100)),10)),4,$add($div($left($replace(%BPM%,.,)00,$add($len($div(%BPM%,1)),2)),$mul(%BPM_ROUNDBY%,100)),1),$div($left($replace(%BPM%,.,)00,$add($len($div(%BPM%,1)),2)),$mul(%BPM_ROUNDBY%,100)))),100)

Ende Aktionengruppe Round BPM to integer (3 Aktionen)

DD.20080726.1602.CEST

Aktion angepasst für BPM Werte mit bis zu 2 Dezimalstellen.

DD.20080728.1152