M[UMPS] Functions - $FN[UMBER]

Introduced in the 1990 ANSI M[UMPS] language standard.

This function returns a formatted reproduction of the string passed as a parameter. The actual formatting depends on further parameters.

The first parameter is intended to be a numeric value. The second parameter tells whether or not to include thousands-separators, and what to do with the sign. The third parameter, if any, indicates the number of decimal digits to be included in the result (i.e. where to round the number from the first parameter).

The second parameter is a string value. When this value contains a comma, "thousands" separators will be included in the output value. When this value includes a plus sign, the sign for positive numbers will be included. When this value includes a minus sign, the sign for negative values will be omitted. When this value includes a "p" or a "P", the output value will have parentheses around negative values (no minus-sign, however), and there will be space-characters around positive values. When this value includes a "t" or a "T", the sign will trail the output value, rather than precede it.

SET X=987654123.45

Reference   Value
SET Y=$FNUMBER(X,",")   "987,654,123.45"
$TRANSLATE(Y,",.",".,")   "987.654.123,45"

SET X=123.456
Reference   Value
$FNUMBER(X,"")   "123.456"
$FNUMBER(X,"P")   "~123.456~"
$FNUMBER(X,"T")   "123.456~"
$FNUMBER(X,",")   "123.456"
$FNUMBER(X,"+")   "+123.456"
$FNUMBER(X,"-")   "123.456"
$FNUMBER(-X,"")   "-123.456"
$FNUMBER(-X,"P")   "(123.456)"
$FNUMBER(-X,"T")   "123.456-"
$FNUMBER(-X,",")   "-123.456"
$FNUMBER(-X,"+")   "-123.456"
$FNUMBER(-X,"-")   "123.456"
$FNUMBER(-X,"",2)   "-123.46"
$FNUMBER(-X,"P",2)   "(123.46)"
$FNUMBER(-X,"T",2)   "123.46-"
$FNUMBER(-X,",",2)   "-123.46"
$FNUMBER(-X,"+",2)   "-123.46"
$FNUMBER(-X,"-",2)   "123.46"
$FNUMBER(-X,"",5)   "-123.45600"
$FNUMBER(-X,"P",5)   "(123.45600)"
$FNUMBER(-X,"T",5)   "123.45600-"
$FNUMBER(-X,",",5)   "-123.45600"
$FNUMBER(-X,"+",5)   "-123.45600"
$FNUMBER(-X,"-",5)   "123.45600"
$FNUMBER(-X,"P-")   error (M2)

If the second parameter is an empty string, no editing takes place:
Reference   Value
$FNUMBER(-X*3,"")   "-370.368"

Note: the three parameter form forces a leading zero on numbers between -1 and +1; the two parameter form does not.

Reference   Value
$FNUMBER(.123,"+")   "+.123"
$FNUMBER(.123,"+",3)   "+0.123"
$JUSTFY(.123,7)   "  0.123"
$JUSTFY(.123,7,2)   "   0.12"
$JUSTFY(.123,7,4)   " 0.1230"

0, zero, is neither negative nor positive:

Reference   Value
$FNUMBER(-1,"+")   "-1"
$FNUMBER(0,"+")   "0"
$FNUMBER(1,"+")   "+1"
$FNUMBER(-1,"-")   "1"
$FNUMBER(0,"-")   "0"
$FNUMBER(1,"-")   "1"

Addition in the 1995 ANSI M[UMPS] language standard.

Reference   Value
$FNUMBER(X,"T",-2)   error (reserved)

This document is © Ed de Moel, 1995-2005.
It is part of a book by Ed de Moel that is published under the title "M[UMPS] by Example" (ISBN 0-918118-42-5).
Printed copies of the book are no longer available.