$JUSTIFY
Synopsis
$JUSTIFY(expression,width,decimal) $J(expression,width,decimal)
パラメータ
expression | 右寄せされる値。数値、文字列リテラル、変数名、あるいは任意の有効な ObjectScript 式を使用できます。 |
width | 右寄せされる expression 内の文字数。正の整数、または正の整数に評価される式。 |
decimal | オプション — 小数桁数。 正の整数、または正の整数に評価される式。Caché によって、expression 内の小数桁の数がこの値に丸められるかパディングされます。decimal を指定すると、Caché では expression が数値として扱われます。 |
概要
$JUSTIFY は、指定した width 内で expression で指定した値を右寄せして返します。width 内で小数点を揃えるために、decimal パラメータを使用できます。
-
$JUSTIFY(expression,width) : 2 パラメータ構文では、expression を width 内で右寄せします。expression の変換は実行されません。expression には、数値、または非数値文字列を使用できます。
-
$JUSTIFY(expression,width,decimal) : 3 パラメータ構文では、expression をキャノニック形式の数値に変換し、decimal まで小数桁を丸めるかゼロで埋めてから、結果となる数値を width 内で右寄せします。expression が非数値文字列の場合、Caché はそれを 0 に変換し、パディングしてから、右寄せします。
$JUSTIFY は、現在のロケールの DecimalSeparator 文字を認識します。必要に応じて DecimalSeparator 文字を追加または削除します。DecimalSeparator 文字はロケールによって異なります。一般に、米国形式のロケール用のピリオド (.) またはヨーロッパ形式のロケール用のコンマ (,) のどちらかです。ユーザのロケールの DecimalSeparator 文字を決定するには、以下のメソッドを呼び出します。
WRITE ##class(%SYS.NLS.Format).GetFormatItem("DecimalSeparator")
一般に、$JUSTIFY は、小数桁がある数値を形式設定するために使用されます。すべての数値の小数桁数が同じになり、DecimalSeparator 文字が数値列内で揃うようにそれらの数値が右寄せされます。$JUSTIFY は、特に WRITE コマンドを使用してフォーマットされた値を出力するのに便利です。
パラメータ
expression
右寄せする値 (任意で、指定された小数桁数の数値として表すことができる)。
-
文字列揃えが必要な場合は、decimal は指定しないでください。expression にはどの文字でも含めることができます。$JUSTIFY は、width で説明しているように expression を右寄せします。
-
数値揃えが必要な場合は、decimal を指定します。decimal を指定すると、$JUSTIFY は expression をキャノニック形式の数値に変換します。それにより、先頭のプラス符号とマイナス符号が解決され、先頭および末尾のゼロが削除されます。それにより、最初の非数値文字列で expression が切り捨てられます。expression の先頭が非数値文字列 (通貨記号など) の場合は、$JUSTIFY は expression 値を 0 に変換します。Caché での数値からキャノニック形式の数値への変換方法、Caché での非数値文字を含む数値文字列の扱い方の詳細は、"Caché ObjectScript の使用法" の “データ型とデータ値” の章の "数値" の項を参照してください。
$JUSTIFY は、expression からキャノニック形式の数値への変換後に、width で説明しているように、このキャノニック形式の数値を decimal 小数桁数まで丸めるかゼロで埋めてから、その結果を右寄せします。$JUSTIFY では、NumericGroupSeparator 文字、通貨記号、複数の DecimalSeparator 文字、および末尾のプラス符号やマイナス符号は認識されません。
width
変換された expression を右寄せする width。width が expression の長さ (数値と小数桁の変換後) より長い場合、Caché は width まで右寄せし、必要に応じて空白スペースで左パディングします。width が expression の長さ (数値と小数桁の変換後) より短い場合、Caché は width を expression 値の長さに設定します。
width には、正の整数を指定します。width 値 0、NULL 文字列 ('')、または非数値文字列の場合は、width は 0 として扱われます。これは、Caché が width を expression 値の長さに設定することを意味します。
decimal
小数桁数。expression に含まれる小数桁が多い場合は、$JUSTIFY は小数部をこの数の小数桁まで丸めます。expression に含まれる小数桁が少ない場合は、$JUSTIFY は小数部をこの小数桁までゼロで埋めて、必要に応じて Decimal Separator 文字を追加します。decimal=0 の場合、$JUSTIFY は expression を整数値まで丸め、Decimal Separator 文字を削除します。
expression 値が 1 未満の場合、$JUSTIFY は DecimalSeparator 文字の前に 0 を挿入します。
$DOUBLE の INF 値、-INF 値、および NAN 値が、decimal 値には関係なく $JUSTIFY によって変更されずに返されます。
$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,"<"
例
以下の例では、文字列に対して右寄せを実行します。数値変換は実行されません。
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),"<"