Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

$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 パラメータ構文では、expressionwidth 内で右寄せします。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 を指定すると、$JUSTIFYexpressionキャノニック形式の数値に変換します。それにより、先頭のプラス符号とマイナス符号が解決され、先頭および末尾のゼロが削除されます。それにより、最初の非数値文字列で expression が切り捨てられます。expression の先頭が非数値文字列 (通貨記号など) の場合は、$JUSTIFYexpression 値を 0 に変換します。Caché での数値からキャノニック形式の数値への変換方法、Caché での非数値文字を含む数値文字列の扱い方の詳細は、"Caché ObjectScript の使用法" の “データ型とデータ値” の章の "数値" の項を参照してください。

    $JUSTIFY は、expression からキャノニック形式の数値への変換後に、width で説明しているように、このキャノニック形式の数値を decimal 小数桁数まで丸めるかゼロで埋めてから、その結果を右寄せします。$JUSTIFY では、NumericGroupSeparator 文字、通貨記号、複数の DecimalSeparator 文字、および末尾のプラス符号やマイナス符号は認識されません。

width

変換された expression を右寄せする widthwidthexpression の長さ (数値と小数桁の変換後) より長い場合、Caché は width まで右寄せし、必要に応じて空白スペースで左パディングします。widthexpression の長さ (数値と小数桁の変換後) より短い場合、Caché は widthexpression 値の長さに設定します。

width には、正の整数を指定します。width 値 0、NULL 文字列 ('')、または非数値文字列の場合は、width は 0 として扱われます。これは、Caché が widthexpression 値の長さに設定することを意味します。

decimal

小数桁数。expression に含まれる小数桁が多い場合は、$JUSTIFY は小数部をこの数の小数桁まで丸めます。expression に含まれる小数桁が少ない場合は、$JUSTIFY は小数部をこの小数桁までゼロで埋めて、必要に応じて Decimal Separator 文字を追加します。decimal=0 の場合、$JUSTIFYexpression を整数値まで丸め、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),"<"

関連項目

FeedbackOpens in a new tab