第24章Caché関数コレクション$ JUSTIFY関数

記事ディレクトリ

第24章Caché関数コレクション$ JUSTIFY関数

指定した幅内で式を右に揃え、指定した小数点以下の桁数に丸めます。

概要

$JUSTIFY(expression,width,decimal)
$J(expression,width,decimal)

パラメータ

  • 式右寄せする値。数値、文字列リテラル、変数名、または任意の有効なObjectScript式を使用できます。
  • 幅式で右揃えされる文字数。正の整数、または結果が正の整数となる式。
  • decimalオプション-小数点以下の桁数。正の整数、または結果が正の整数となる式。Cachéは、式の小数点以下の桁数をこの値に丸めるか、埋めます。指定した場合DECIMAL、Cachéは式を数値として扱います。

解説

$JUSTIFY指定した幅内で右揃えされた式で指定された値を返します。DECIMALパラメータを含めて、小数を幅に揃えることができます。

  • $ JUSTIFY(式、幅):2パラメーター構文は、幅内で右揃えの式です。式の変換は行いません。式には、数値または数値以外の文字列を指定できます。
  • $ JUSTIFY(式、幅、10進数):3パラメーターの構文は、式を正規の数値に変換し、小数点以下の丸めまたはゼロの小数点以下を10進数に変換し、結果の値を幅内で右揃えします。式が非数値文字列の場合、Cachéはそれを0に変換し、パディングしてから右揃えします。

$JUSTIFY現在のロケールのDecimalSeparator文字を識別します必要に応じてDecimalSeparator文字を追加または削除しますDecimalSeparator文字はロケールに依存します。通常、US形式のロケールの場合はピリオド(、ヨーロッパ形式のロケールの場合はコンマ(ですロケールのDecimalSeparator文字を判別するには、次のメソッドを呼び出します

DHC-APP>WRITE ##class(%SYS.NLS.Format).GetFormatItem("DecimalSeparator")
.

通常、これは$JUSTIFY小数点以下の桁数を使用して数値をフォーマットするために使用されます。各数値は小数点以下の桁数が同じであり、数字はDecimalSeparator文字が数値列に配置されるように右揃えされます。コマンド$JUSTIFYを使用してWRITEフォーマットされた値出力する場合特に便利です。

パラメータ

表情

右寄せされる値は、オプションで、小数点以下の桁数を指定した数値として表すことができます。

  • 文字列の配置が必要な場合は、小数を指定しないでください。式には任意の文字を含めることができます。$JUSTIFY幅で説明されているように、式を右揃えにします。空の文字列(“”)を指定して、指定した幅の空の文字列を作成できます
  • 数値を揃える必要がある場合は、小数を指定してください。小数が指定されている場合、$JUSTIFY表現を調整するためにデジタルに変換します。先頭の符号を解析し、先頭と末尾のゼロを削除します。最初の数字以外の文字で式を切り捨てます。$先頭に数字以外の文字(例:通貨記号)$JUSTIFYの式がある場合、式の値0に変換されます。

$JUSTIFY式が正規数に変換された、正規数はゼロで埋められるか、小数点以下の桁数で丸められ、幅で説明されているように結果が右揃えされます。$JUSTIFY認識されないNumericGroupSeparator文字、通貨の$記号、複数のDecimalSeparator文字、末尾のプラス記号またはマイナス記号。

変換された式の幅を右揃えにします。幅が式の長さより大きい場合(数値と小数点以下の桁数が変換された後)、Cachéは幅を右に揃え、必要に応じて左を空白で埋めます。幅が式の長さよりも小さい場合(数値と小数点以下の桁数が変換された後)、Cachéは幅を式の値の長さに設定します。

幅を正の整数として指定します。幅の値0、空の文字列(“”)、または数値以外の文字列は、幅0と見なされます。つまり、Cachéは幅を式の値の長さに設定します。

小数

小数点以下の桁数。式に小数点以下の桁数が含まれている場合、$JUSTIFY小数部分は小数点以下の桁数に丸められます。式に含まれる小数点以下の桁数が少ない場合、$JUSTIFY小数部分はゼロで埋められ、必要に応じて小数点が追加されます。= 0 10進数の場合$JUSTIFY、式は整数値に丸められ、小数点記号は削除されます。

式の値以下であれば1より、文字の前に先行ゼロを挿入します。$JUSTIFYDecimalSeparator

$DOUBLEINF-INFおよび10進数の値に関係なくNAN$JUSTIFY戻り変わりません。

$JUSTIFY$FNUMBER

$FNUMBERフォーマットされた数値を使用できます$JUSTIFYまた$FNUMBER、指定した小数点以下の桁数に切り上げる(またはゼロを埋め込む)ことができます。文字の$FNUMBER追加にも使用できますNumericGroupSeparatorただし、次の点に注意してください。

  • $JUSTIFY右揃えの数値を使用すると、数値$FNUMBERをフォーマットできなくなります。$FNUMBER先行スペースを非数値文字として解釈します。)
  • NumericGroupSeparator文字を追加したり、通貨記号を追加したりする$JUSTIFYと、数字を揃えることはできません。または非数値文字の通貨記号として解釈されます。)$JUSTIFYNumericGroupSeparators

したがって、正しく追加するにはNumericGroupSeparators、小数点以下の桁数丸め、通貨記号の前に接頭辞を追加し、右側の結果の数を揃え、ご使用ください$FNUMBERNumericGroupSeparatorsラウンドし、挿入。次に、これ$JUSTIFYを2パラメータ構文で使用して、結果の文字列を右揃えにすることができます。

/// d ##class(PHA.TEST.Function).JUSTIFY()
ClassMethod JUSTIFY()
{
    
    
	SET num=123456.789
	SET fmtnum=$FNUMBER(num,",",2)
	SET money="$"_fmtnum
	SET rmoney=$JUSTIFY(money,15)
	WRITE ">",rmoney,"<"
}
DHC-APP>d ##class(PHA.TEST.Function).JUSTIFY()
>    $123,456.79<

次の例では、文字列を右揃えします。デジタル変換なし:

/// d ##class(PHA.TEST.Function).JUSTIFY1()
ClassMethod JUSTIFY1()
{
    
    
	WRITE ">",$JUSTIFY("right",10),"<",!
	WRITE ">",$JUSTIFY("aligned",10),"<",!
	WRITE ">",$JUSTIFY("+0123.456",10),"<",!
	WRITE ">",$JUSTIFY("string longer than width",10),"<",!
}
DHC-APP>d ##class(PHA.TEST.Function).JUSTIFY1()
>     right<
>   aligned<
> +0123.456<
>string longer than width<
 

次の例では、指定された小数点以下の桁数を使用して、数値の右寄せを実行しています。

/// d ##class(PHA.TEST.Function).JUSTIFY2()
ClassMethod JUSTIFY2()
{
    
    
	SET var1 = 250.50999
	SET var2 = 875
	WRITE !,$JUSTIFY(var1,20,2),!,$JUSTIFY(var2,20,2)
	WRITE !,$JUSTIFY("_________",20)
	WRITE !,$JUSTIFY("TOTAL",9),$JUSTIFY(var1+var2,11,2)
}
DHC-APP>d ##class(PHA.TEST.Function).JUSTIFY2()
 
              250.51
              875.00
           _________
    TOTAL    1125.51
/// d ##class(PHA.TEST.Function).JUSTIFY2()
ClassMethod JUSTIFY2()
{
    
    
	SET var1 = 0.50999
	SET var2 = 875
	WRITE !,$JUSTIFY(var1,"",2),!,$JUSTIFY(var2,0,2)
	WRITE !,$JUSTIFY("_________",20)
	WRITE !,$JUSTIFY("TOTAL",9),$JUSTIFY(var1+var2,11,2)
}
DHC-APP>d ##class(PHA.TEST.Function).JUSTIFY2()
 
0.51
875.00
           _________
    TOTAL     875.51
DHC-APP>WRITE !,$JUSTIFY(0.1,"",2)
 
0.10
DHC-APP>WRITE !,$JUSTIFY(.1,"",2)
 
0.10
DHC-APP>WRITE !,$JUSTIFY(.1,"",3)
 
0.100

次の例では、$DOUBLEINF使用して数値のNAN右揃え実行しています

/// d ##class(PHA.TEST.Function).JUSTIFY3()
ClassMethod JUSTIFY3()
{
    
    
	SET rtn=##class(%SYSTEM.Process).IEEEError(0)
	SET x=$DOUBLE(1.2e500)
	WRITE !,"Double: ",x
	WRITE !,">",$JUSTIFY(x,12,2),"<"
	SET y=$DOUBLE(x-x)
	WRITE !,"Double INF minus INF: ",y
	WRITE !,">",$JUSTIFY(y,12,2),"<"
}

おすすめ

転載: blog.csdn.net/yaoxin521123/article/details/108571931