Dieses benannte DOCUcontrol-Makro stellt alle Zahlen ab 1.000 in Tausender-Schritten bis 9.999.000 in Worten da.
STRING BetragInWorten( FLOAT Betrag )
STRING AnfangStr, Bindewort, StrBetrag, erstesZeichenStr, zweitesZeichenStr, Ausgabe, Einer, Zehner, Hunderttausend, Million;
STRING einzelndWort[9] = {"ein", "zwei", "drei", "vier", "fünf", "sechs", "sieben", "acht", "neun" };
STRING zehnerWort[9] = {"zehn", "zwanzig", "dreissig", "vierzig", "fünftzig", "sechzig", "siebzig", "achtzig", "neunzig" };
INT AnfangInt, ersteZiffer, erstesZeichenInt, zweitesZeichenInt;
StrBetrag = FloatToStr( Betrag, 2, LANGID_C );
ersteZiffer = StrToInt( StrLeft( StrBetrag, 1 ) );
IF( Betrag >= 1000000.00 ) // ab einer Million
IF( ersteZiffer == 1 )
Million = "Eine Million ";
ELSE // zwei bis 9 Millionen
Million = einzelndWort[ersteZiffer] + " Millionen ";
ENDIF
StrBetrag = StrRight( StrBetrag, StrGetLength( StrBetrag ) -1 ); // erste Ziffer entfernen
ersteZiffer = StrToInt( StrLeft( StrBetrag, 1 ) );
ENDIF // größer oder gleich als eine Million
IF( Betrag > 99999 ) // ab 100.000 Euro
IF( ersteZiffer > 0 ) // Array-Fehlermeldung verhindern
Hunderttausend = einzelndWort[ersteZiffer] + "hundert";
ENDIF
StrBetrag = StrRight( StrBetrag, StrGetLength( StrBetrag ) -1 ); // erste Ziffer entfernen
ersteZiffer = StrToInt( StrLeft( StrBetrag, 1 ) );
ENDIF
erstesZeichenStr = StrLeft( StrBetrag, 1 );
erstesZeichenInt = StrToInt( erstesZeichenStr);
IF( erstesZeichenInt > 0 ) // Array-Fehlermeldung verhindern
IF( Betrag >= 10000 )
Zehner = zehnerWort [erstesZeichenInt];
ELSE // 5.000 bis 9.000
Zehner = einzelndWort[erstesZeichenInt];
ENDIF
ENDIF
zweitesZeichenStr = StrMid( StrBetrag, 2, 1 );
zweitesZeichenInt = StrToInt( zweitesZeichenStr );
IF( zweitesZeichenInt > 0 ) // Array-Fehlermeldung verhindern
Einer = einzelndWort[zweitesZeichenInt];
ENDIF
AnfangStr = StrLeft( StrBetrag, 2);
AnfangInt = StrToInt( AnfangStr );
IF( AnfangInt >20 && zweitesZeichenInt != 0 ) // z. B. Einundzwanzig, zweiunddreißig, vierundvierzig usw.
Bindewort = "und";
ENDIF
IF( AnfangStr == "11" ) // 11.000
Ausgabe = Hunderttausend + "elftausend";
ELSEIF( AnfangStr == "12" ) // 12.000
Ausgabe = Hunderttausend + "zwölftausend";
ELSE // ab dreizehntausen
Ausgabe = Million + Hunderttausend + Einer + Bindewort + Zehner + "tausend";
ENDIF
IF( StrIsEmpty( Ausgabe ) )
Ausgabe = "keine Angabe";
ELSE // Erstes Zeichen in einen Großbuchstaben umwandeln
erstesZeichenInt = StrGetAt ( Ausgabe, 1 ); // Gibt das erste Zeichen der Zeichenkette in Ascii aus
erstesZeichenStr = StrLeft( Ausgabe, 1 ); // Gibt das erste Zeichen im STRING aus
StrTrimLeft ( Ausgabe, erstesZeichenInt ); // entfernt das erste Ascii-Zeichen der Zeichenkette
StrMakeUpper ( erstesZeichenStr ); // Wandelt das erste Zeichen in einem Großbuchstaben um
Ausgabe = erstesZeichenStr + Ausgabe;
ENDIF
RETURN( Ausgabe );