Binary coded decimal (BCD) support (OMBCD legacy)

You can use the BCD (Binary Coded Decimal) library to create and manipulate BCD numbers in your programs.

BCD numbers are useful for financial and some scientific calculations.

While the syntax of most BCD library functions is the same as that for the corresponding floating point library functions, these two libraries are mutually exclusive. You can only include one of them - omfloat.xin or ombcd.xin - in a single OmniMark program.

There are several categories of external functions in the BCD library, all of which use the same operators as in the floating point library and in core OmniMark:

  • basic arithmetic functions.
  • comparison operators.
  • functions for rounding numbers.
  • exponential functions.

You can do output of all BCD numbers by using the OmniMark template formatting language and by using the format operator ("d" %).

This is a complete list of the BCD library external exceptions that may be thrown back to the calling OmniMark program. These are all catchable using the #external-exception label.

  • BCD0002 - String is Not a Valid BCD Value
  • BCD0010 - Format Command Not Supported
  • BCD0011 - Format Modifier Not Supported
  • BCD0012 - Illegal Template Character
  • BCD0013 - Template Overflow
  • BCD0014 - Illegal Format String
  • BCD0020 - Divide By Zero
  • BCD0021 - Zero Raised to the Power Zero
  • BCD0022 - Illegal Modulus
  • BCD0023 - Illegal Rounding Base
  • BCD0030 - Out Of Memory

To use these functions, you must include the following code near the top of your program:

  include "ombcd.xin"