Benutzer-Werkzeuge

Webseiten-Werkzeuge


dc:betrag_in_worten

Betrag in Worten

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 );
dc/betrag_in_worten.txt · Zuletzt geändert: 2015/12/19 00:00 (Externe Bearbeitung)