operator
string-expression % expression
You can use the % operator, also called the format operator, to format the value of an expression as a string. For instance, the following program uses %
to output the value of a BCD variable as dollars and cents:
process local bcd price set price to 12.95 output "<$,NNZ.ZZ>" % price
The format operator is preceded by a format string which specifies how the value is to be formatted. It is followed by the expression to be formatted. The expression to be formatted can be a string expression, an integer expression, or a BCD expression.
The format strings used with each type of data are different. See
You can pad data to a certain number of characters as you format it, by using a number and the f format modifier:
; pad-format.xom ; "8fd" pads the number bar with spaces to a width of 8 import "ombcd.xmd" unprefixed process local bcd bar initial {3456} output "8fd" % bar || "END" ; Output: "3456 END"
You can generate the format string dynamically. For instance, the following program dynamically determines the width to use in formatting an integer expression. Notice that the format operator is also used to create the format string dynamically.
; dynamic-format.xom ; "8fd" pads the number bar with spaces to a width of 8 import "ombcd.xmd" unprefixed process local integer foo initial {8} local integer bar initial {3456} local stream format-string set format-string to "d" % foo || "fd" output format-string % bar || "END%n" ; Output: "3456 END"
In the example above, "8fd" is created dynamically to format the local integer "bar". The "8f" in "8fd" tells OmniMark to pad whatever is being formatted with spaces to a width of eight characters. The "f" is one of a number of format items you can use in specific contexts.
You must use a format string appropriate to the type of expression being formatted, or an error occurs.
You can also format the values of individual variables (as opposed to expressions) using format items.
format
is a deprecated synonym for %.