$JUSTIFY(expression,width,decimal)
$J(expression,width,decimal)
概要
$JUSTIFY は、指定した width 内で expression で指定した値を右寄せして返します。width 内で小数点を揃えるために、decimal 引数を使用できます。
-
$JUSTIFY(expression,width) : 引数が 2 つの構文では、expression を width 内で右寄せします。expression の変換は実行されません。expression には、数値、または非数値文字列を使用できます。
-
$JUSTIFY(expression,width,decimal) : 引数が 3 つの構文では、expression をキャノニック形式の数値に変換し、decimal まで小数桁を丸めるかゼロで埋めてから、結果となる数値を width 内で右寄せします。expression が非数値文字列の場合、InterSystems IRIS はそれを 0 に変換し、パディングしてから、右寄せします。
$JUSTIFY は、現在のロケールの DecimalSeparator 文字を認識します。必要に応じて DecimalSeparator 文字を追加または削除します。DecimalSeparator 文字はロケールによって異なります。一般に、米国形式のロケール用のピリオド (.) またはヨーロッパ形式のロケール用のコンマ (,) のどちらかです。ユーザのロケールの DecimalSeparator 文字を決定するには、以下のメソッドを呼び出します。
WRITE ##class(%SYS.NLS.Format).GetFormatItem("DecimalSeparator")
一般に、$JUSTIFY は、小数桁がある数値を形式設定するために使用されます。すべての数値の小数桁数が同じになり、DecimalSeparator 文字が数値列内で揃うようにそれらの数値が右寄せされます。$JUSTIFY は、特に WRITE コマンドを使用してフォーマットされた値を出力するのに便利です。
例
以下の例では、文字列に対して右寄せを実行します。数値変換は実行されません。
WRITE ">",$JUSTIFY("right",10),"<",!
WRITE ">",$JUSTIFY("aligned",10),"<",!
WRITE ">",$JUSTIFY("+0123.456",10),"<",!
WRITE ">",$JUSTIFY("string longer than width",10),"<",!
以下の例では、指定された小数桁数で数値の右寄せを実行します。
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)
以下の行を返します。
250.51
875.00
_______
TOTAL 1125.51
以下の例では、$DOUBLE 値の INF および NAN を使用して数値の右寄せを実行します。
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),"<"
$JUSTIFY および $FNUMBER
$FNUMBER を使用して、表示する数値の形式を設定できます。$JUSTIFY および $FNUMBER は、両方とも指定した小数桁まで丸めることができます (またはゼロで埋めることができます)。$FNUMBER は、NumericGroupSeparator 文字を追加するために使用することもできます。ただし、以下の点に注意してください。
-
数値が $JUSTIFY により右寄せされている場合、$FNUMBER でその数値の形式を設定できません($FNUMBER は、先頭のスペースを非数値文字として解釈します)。
-
NumericGroupSeparator 文字や通貨記号を追加した場合、$JUSTIFY で数値揃えを実行できません($JUSTIFY は、NumericGroupSeparators または通貨記号を非数値文字として解釈します)。
したがって、NumericGroupSeparators の追加、小数桁数の丸め、通貨記号の追加、および結果の数値の右寄せを適切に行うには、$FNUMBER を使用して、丸めおよび NumericGroupSeparators の挿入を行います。その後、$JUSTIFY を 2 引数構文で使用して、結果の文字列を右寄せします。
SET num=123456.789
SET fmtnum=$FNUMBER(num,",",2)
SET money="$"_fmtnum
SET rmoney=$JUSTIFY(money,15)
WRITE ">",rmoney,"<"