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 );