D3 Reference Manual

Index | Help

Поиск по страницам

Разделы / Коды обработки / m

m

(mask) Форматирование значений

m{just} {{precision} {scalefactor}} {z} {,} {signcode} {$} {format.mask}

Преобразование с помощью маски, используемое для форматирования как числовых, так и текстовых строк.

Это преобразование достаточно сложно, так как почти все элементы его синтаксиса необязательны. Элементы указываются в том порядке, в котором система оценивает выражение. Если какой-либо элемент должен использоваться, необходимо указать его в таком же порядке. Каждый из элементов обсуждается ниже.

Следует отметить, что пробелы в синтаксисе употреблены только для наглядности. В самом преобразовании пробелы недопустимы за исключением пробелов-литералов, указанных в кавычках или с маской формата, заключенной в скобки.

Элементы включают следующее:

"just" выравнивание строки. Может быть либо "l" для выравнивания слева, либо "r" или "d" выравнивания справа. Левое выравнивание используется прежде всего для текстовых строк. Правое выравнивание обычно используется при обработке десятичных чисел.
"precision" количество десятичных разрядов, которые должны быть напечатаны после десятичной точки. Параметр должен быть в пределах от 0 до 9 (по умолчанию - 0). Если подразумевается или задан 0, то десятичная точка не печатается.
"scalefactor" степень, используемая для масштабирования значения (показывает, на сколько позиций влево следует перенести десятичную точку). Параметр должен быть в пределах от 0 до 9 (значения по умолчанию нет). При указании параметра "precision" без "scalefactor" второй параметр по умолчанию принимается равным первому ("mr2" идентично "mr22").
"z" подавление ведущих нулей нулей (т.е. "0003" становится "3") и, следовательно, подавление полей с нулевым остатком в бухгалтерских отчетах
"," вставка запятых для выделения тысяч и миллионов при выводе
"signcodes" (коды знака) изменяют обычную обработку отрицательных чисел (за исключением кода "d"). Они имеют следующие функции:
c после отрицательных величин добавляется "cr" (от "credit")
d после положительных и нулевых значение добавляется "db" (от "debit")
e отрицательные значения заключаются в угловые скобки (<value>). Перед нулевыми значениями и после них вносится пробел.
m после отрицательных чисел добавляется знак "минус" (-)
n подавление (ведущего) знака "минус" у отрицательных чисел
"$" присоединение знака "доллар" к значению перед выравниванием
"format.mask" (маска формата) может быть любой комбинацией литералов и специальных операторов "заполнения", перечисленных ниже
#n заполнение "n" пробелами
*n заполнение "n" звездочками
%n заполнение "n" нулями

Маска формата (format.mask) сама может быть заключена в скобки. Если маска формата заключена в скобки, в качестве литеральных строк могут указываться любые алфавитные символы (а также знаки препинания за исключением "#","%","*").

При маскировании десятичных чисел "precision" и "scaling" могут быть использованы для округления. Например, в машине хранится число "56789". В этом числе подразумевается 4 разряда десятичной дроби. Маска "mr4" указывает, что как "scalefactor", так и "precision" равны 4. Это дает результат "5.6789".

"precision" и "scalefactor" не обязательно равны. Рассмотрим ситуацию масштабирования числа на 4 разряда, но результат должен быть выдан с точностью до одной сотой. Преобразование выполняется кодом "mr24". Если преобразованию с помощью "mr24" подвергается число "56789", это число сначала масштабируется на 4 разряда после десятичной точки, а затем округляется до 2 разрядов после десятичной точки, в результате чего получается десятичное число "5.68".

Примеры:

Эта таблица содержит примеры преобразования значений данных функцией "oconv":

Данные    Преобразование      Вывод
12345       mr2                  123.45
12345       mr02                 123
123456      mr2,$                $1,234.56
123456      mr02,$               $1,235
0           mrz                  (нет)
0           mr2,z$               (нет)
123456      mr2,e                1,234.56
123456      mr2,d                1,234.56db
-123456     mr2,e                <1,234.56>
-123456     mr2,c                1,234.56cr
-123456     mr2,m                1,234.56-
-123456     mr2,n                1,234.56
123456      mr24,                12.35
123456      mr02,$               $1,235
-123456     mr2,$                -$1,234.56
-123456     mr2,e$               <$1,234.56> 
-123456     mr2,c$               $1,234.56cr
123456      mr2,c$               $1,234.56
123456      mr(%10)              0000123456
123456      mr2(%10)             0001234.56
123456      mr(*10)              ****123456
123456      mr2(*10)             ***1234.56
123456      mr2,$*12             ***$1,234.56
7145551212  ml((###)###-####)    (714)555-1212
7145551212  ml(###-###-####)     714-555-1212
7145551212  ml(#3-#3-#4)         714-555-1212
123456      mr2$(#10)            $  1234.56
123456      mr2($#10)              $1234.56
123456      mr(#3 plus #3)       123 plus 456
123456      mr24                 12.35