SetGramsPerUnits()
******************


FUNKTION
========

   void SetGramsPerUnits(int grams, int units);


DEFINIERT IN
============

   /std/unit.c


ARGUMENTE
=========

   grams
        Gewicht in Gramm
   units
        Zahl der Einheiten


BESCHREIBUNG
============

   Es wird festgelegt, wieviel eine bestimmte Menge der Einheiten wiegt.
   Eine einzelne Einheit wiegt grams/units Gramm.


RUeCKGABEWERT
=============

   keiner


BEISPIELE
=========

   Vier Einheiten sollen 3 Gramm wiegen:

   SetGramsPerUnits(3,4);


SIEHE AUCH
==========

   SetCoinsPerUnits(), QueryCoinsPerUnits(), QueryGramsPerUnits(),
   /std/unit.c

Last modified: Wed May 8 10:25:09 1996 by Wargon
