Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ strfmon(3C) — Reliant UNIX 5.44c4

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

localeconv(3C)

strfmon(3C)                                                     strfmon(3C)

NAME
     strfmon - Monetären Wert in Zeichenkette umwandeln

SYNTAX
     #include <monetary.h>

     ssizet strfmon(char *s, sizet maxsize, const char *format, ...);

BESCHREIBUNG
     Die Funktion strfmon() bringt, gesteuert durch die Zeichenkette, auf
     die format zeigt, Zeichen in das Feld, auf das s zeigt. Es werden
     maximal maxsize Byte in das Feld gebracht.

     format ist eine Zeichenkette, die zwei Arten von Objekten enthält:
     normale Zeichen, die einfach in den Ausgabe-Stream kopiert werden, und
     Umwandlungsanweisungen. Es werden keines oder mehr Argumente abge-
     fragt, die konvertiert und formatiert werden. Die Ergebnisse sind
     nicht definiert, wenn für das Format nicht genügend Argumente zur Ver-
     fügung stehen. Wenn keine weiteren Formatangaben, aber noch Argumente
     zur Verfügung stehen, werden die übrigen Argumente einfach ignoriert.

     Eine Umwandlungsanweisung besteht aus:

     -  dem Zeichen %

     -  Flags (optional)

     -  Feldgröße (optional)

     -  Genauigkeit links (optional)

     -  Genauigkeit rechts (optional)

     -  ein Umwandlungszeichen, das die durchzuführende Umwandlung bestimmt
        (Pflichtangabe).

   Flags

     Zur Steuerung der Umwandlung kann eines oder mehrere der folgenden,
     optionalen Flags angegeben werden:

     =f   Das Gleichheitszeichen (=), gefolgt von genau einem Zeichen f,
          das als numerisches Füllzeichen verwendet wird. Das Füllzeichen
          muß wegen Genauigkeit und Anzahl für die Größe in einem Byte dar-
          stellbar sein. Standardmäßig wird für das numerische Füllzeichen
          das Leerzeichen verwendet. Dieses Flag hat keinen Einfluß auf das
          Füllzeichen bei der Feldgröße. Hierfür wird immer das Leerzeichen
          verwendet. Dieses Flag kommt nur dann zum Einsatz, wenn eine
          Angabe für die Genauigkeit links gemacht wird (siehe unten).






Seite 1                      Reliant UNIX 5.44               Gedruckt 11/98

strfmon(3C)                                                     strfmon(3C)

     ^    Währungsbetrag nicht mit Tausender-Trennzeichen und Dezimalzei-
          chen formatieren. Standardmäßig werden die Tausender-Trennzeichen
          und Dezimalzeichen eingefügt, wenn sie für die aktuelle Locale
          (internationale Umgebung) definiert sind.

     + oder (
          Angabe der Darstellung positiver und negativer Währungsbeträge.
          Es darf immer nur eine der Angaben (also + oder ( ) gemacht wer-
          den. Bei Angabe des Zeichens + wird die Entsprechung von + und -
          in der jeweiligen Locale verwendet. So wird zum Beispiel für die
          USA die leere Zeichenkette für positive und das Zeichen - für
          negative Werte verwendet. Bei Angabe des Zeichens ( werden nega-
          tive Beträge in Klammern dargestellt. Wird keine Angabe gemacht,
          so wird das Flag + angenommen.

     !    Unterdrückung des Währungssymbols bei der Ausgabe-Umwandlung.

     -    Angabe der Ausrichtung. Wird dieses Flag angegeben, so werden
          alle Felder linksbündig ausgerichtet (rechts aufgefüllt).

   Feldgröße

     w    Eine Zeichenkette mit dezimalen Ziffern (w), die die Mindestfeld-
          größe in Byte angibt. Das Ergebnis der Umwandlung wird rechtsbün-
          dig (bzw. bei Angabe des Flags - auch linksbündig) formatiert.
          Der Standardwert beträgt Null.

   Genauigkeit links

     #n   Das Zeichen #, gefolgt von einer Zeichenkette mit dezimalen Zif-
          fern (n). Hier wird die maximale Anzahl der Ziffern angegeben,
          die links vom Dezimalzeichen formatiert werden sollen. Diese
          Option kann dazu verwendet werden, die formatierte Ausgabe mehre-
          rer Aufrufe der Funktion strfmon() in den gleichen Spalten auszu-
          richten. Ebenso kann sie verwendet werden, um nicht verwendete
          Positionen mit einem Sonderzeichen aufzufüllen (wie zum Beispiel
          bei $***123.45). Diese Option hat zur Folge, daß ein Betrag so
          formatiert wird, als ob er die in n angegebene Stellenanzahl
          hätte. Wenn mehr als n Stellen benötigt werden, wird diese
          Umwandlungsanweisung ignoriert. Stellen, die über die tatsächlich
          benötigte Stellenanzahl hinausgehen, werden mit dem numerischen
          Füllzeichen aufgefüllt (siehe unter dem Flag =f).

          Wenn die Formatierung numerischer Werte  nicht mit dem Flag ^
          unterdrückt wurde und für die aktuelle Locale definiert ist, so
          werden Tausender-Trennzeichen und Dezimalzeichen eingefügt, bevor
          gegebenenfalls Füllzeichen angefügt werden. Tausender-Trenn-
          zeichen und Dezimalzeichen werden nicht einmal dann für Füllzei-
          chen angewendet, wenn das Füllzeichen eine Ziffer ist.





Seite 2                      Reliant UNIX 5.44               Gedruckt 11/98

strfmon(3C)                                                     strfmon(3C)

          Zur Sicherstellung der Ausrichtung werden alle Zeichen, die in
          der formatierten Ausgabe vor oder nach der Zahl erscheinen (z. B.
          Währungssymbol oder Vorzeichen) je nach Bedarf mit Leerzeichen so
          aufgefüllt, daß positive und negative Formate die gleiche Länge
          haben.

   Genauigkeit rechts

     .p   Ein Punkt, gefolgt von einer Zeichenkette mit dezimalen Ziffern
          (p). Hier wird die Anzahl der Ziffern nach dem Dezimalzeichen
          angegeben. Wenn der Wert von p gleich Null ist, erscheint kein
          Dezimalzeichen. Wird diese Angabe nicht gemacht, wird der von der
          aktuellen Locale angegebene Standardwert verwendet. Der forma-
          tierte Betrag wird vor der Formatierung auf die angegebene Stel-
          lenanzahl gerundet.

   Umwandlungszeichen

     Die Umwandlungszeichen haben die folgende Bedeutung:

     i    Das double Argument wird entsprechend dem internationalen Wäh-
          rungsformat der Locale formatiert (in den USA zum Beispiel: USD
          1,234.56).

     n    Das double Argument wird entsprechend dem nationalen Währungsfor-
          mat der Locale formatiert (in den USA zum Beispiel: $1,234.56).

     %    In % umwandeln. Kein Argument wird umgewandelt. Die gesamte
          Umwandlungsanweisung muß %% lauten.

   Locale-Informationen

     Die Kategorie LCMONETARY der Locale des Programms hat Auswirkungen
     auf das Verhalten dieser Funktion. Die Auswirkungen betreffen unter
     anderem das Dezimalzeichen für Währungsbeträge (dieses kann sich vom
     numerischen Dezimalzeichen unterscheiden, das den Auswirkungen der
     Kategorie LCNUMERIC unterliegt), die Tausender-Trennzeichen, die Wäh-
     rungssymbole und -formate. Das internationale Währungssymbol sollte
     dem Standard ISO 4217:1987 entsprechen.

     Die Funktion strfmon() schlägt fehl, wenn:

     ENOSYS    Die Funktion wird nicht unterstützt.

     E2BIG     Die Umwandlung wurde angehalten, weil nicht genügend Platz
               im Puffer zur Verfügung steht.

ERGEBNIS
     Wenn die Gesamtzahl der Bytes für das Ergebnis (einschließlich
     abschließendem Nullbyte) nicht mehr als maxsize beträgt, gibt die
     Funktion strfmon() die Anzahl der Bytes zurück, die in dem Feld abge-
     legt wurden, auf das s zeigt (dies schließt das abschließende Nullbyte


Seite 3                      Reliant UNIX 5.44               Gedruckt 11/98

strfmon(3C)                                                     strfmon(3C)

     nicht mit ein). Andernfalls wird -1 zurückgegeben, und der Inhalt des
     Feldes ist nicht definiert. errno wird auf den Fehler gesetzt.

BEISPIELE
     Für diese Beispiele werden eine Locale für die USA und die Werte
     123.45, -123.45 und 3456.781 vorausgesetzt:

     ______________________________________________________________________
    | Umwandlungs- |                 |                                    |
    | anweisung    | Ausgabe         | Anmerkungen                        |
    |______________|_________________|____________________________________|
    | %n           |        $123.45  | Standardformatierung               |
    |              |       -$123.45  |                                    |
    |              |     $ 3,456.78  |                                    |
    |______________|_________________|____________________________________|
    | %11n         |        $123.45  | Ausrichtung nach rechts in einem   |
    |              |       -$123.45  | Feld mit 11 Zeichen                |
    |              |     $ 3,456.78  |                                    |
    |______________|_________________|____________________________________|
    | %#5n         |        $123.45  | ausgerichtete Spalten für Werte    |
    |              |      -$ 123.45  | bis max. 99,999                    |
    |              |     $ 3,456.78  |                                    |
    |______________|_________________|____________________________________|
    | %=*#5n       |     $***123.45  | Angabe eines Füllzeichens          |
    |              |    -$***123.45  |                                    |
    |              |     $*3,456.78  |                                    |
    |______________|_________________|____________________________________|
    | %=0#5n       |     $000123.45  | Füllzeichen werden nicht formatiert|
    |              |    -$000123.45  | (auch nicht, wenn es sich um       |
    |              |    $03, 456.78  | Ziffern handelt)                   |
    |______________|_________________|____________________________________|
    | %^#5n        |   $     123.45  | Tausender-Trennzeichen deaktivieren|
    |              | - $     123.45  |                                    |
    |              |     $  3456.78  |                                    |
    |______________|_________________|____________________________________|
    | %^#5.0n      |   $     123     | Runden                             |
    |              |  -$     123     |                                    |
    |              |    $   3457     |                                    |
    |______________|_________________|____________________________________|
    | %^#5.4n      |  $      123.4500| erhöhte Genauigkeit                |
    |              | -$      123.4500|                                    |
    |              |  $     3456.7810|                                    |
    |______________|_________________|____________________________________|
    | %(#5n        |         123.45  | andere Darstellung für             |
    |              |  ($     123.45) | positive/negative Werte            |
    |              |   $   3,456.78  |                                    |
    |______________|_________________|____________________________________|
    | %!(#5n       |         123.45  | Währungssymbol deaktivieren        |
    |              |   (     123.45) |                                    |
    |              |       3,456.78  |                                    |
    |______________|_________________|____________________________________|



Seite 4                      Reliant UNIX 5.44               Gedruckt 11/98

strfmon(3C)                                                     strfmon(3C)

SIEHE AUCH
     localeconv(3C).




















































Seite 5                      Reliant UNIX 5.44               Gedruckt 11/98

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026