サーバー管理 > フィールド、チャート、およびレポート内の計算 > 計算式の規則
  
計算式の規則
計算式の記述に関する規則は、大半のプログラミング言語で式を記述する際に適用される規則と似ています。計算式は、特定の構文と演算子、定数、関数、および Windchill RV&S フィールドを使用して計算を実行します。
たとえば、次の図は、関数とフィールドを 1 つずつ使用して集計計算を実行する単純な計算式を示しています。
この計算式は、複数のアイテムに表示されるフィールドの合計を計算するためにチャートで使用されます。
次の図は、複数の関数、フィールド、フィールド値、および演算子を組み合わせて計算フィールドで計算を実行する、より複雑な計算式を示しています。
* 
この図では説明のため、関数、フィールド、フィールド値、および演算子の一部のみ示しています。
計算フィールドの計算式は、アイテムが有効な変更依頼かどうかを判断します。
* 
計算式を作成する前に、次の重要な考慮事項に目を通して、使用可能な構文、演算子、および定数について理解しておいてください。
重要な考慮事項
標準
このガイドでは、計算式の記述方法については具体的に説明しませんが、単純な計算式と複雑な計算式の例をいくつか挙げて、フィールド、チャート、およびレポートで計算を実行する方法について説明します。
Windchill RV&S では、計算式に適切な構文を指定しないと、その計算式を保存するときに詳細なエラー メッセージが表示されます。
構文
フィールド名を指定するには、フィールド名を二重引用符で囲みます ("Actual Cost" など)。
引用符で囲まれた場合 ("Defect Count" など) を除き、スペースは無視されます。
識別子の後に "(" (かっこ) が続く場合、その識別子は関数と見なされます。後にかっこが続かない識別子はフィールド名と見なされます。
計算フィールドは、別の計算フィールドや別の計算式で使用されるフィールドとしては有効ですが、再帰的には使用できません。
算術演算子
計算式では、次の算術演算子がサポートされています。
* (乗算)
/ (除算)
+ (加算)
-(減算)
-(単項否定)
Boolean-exp?true_exp:false_exp(条件付きターナリ)
ブール演算子
計算式では、次のブール演算子がサポートされています。
== (等しい)
=(含まれる)
!=(等しくない)
<>(含まれない)
<(より小さい)
>(より大きい)
<=(以下)
>=(以上)
and
or
expression boolean-operator expression
ブール演算型フィールドでは、ブール定数である次の 2 つのキーワードが使用されます。true および false 計算フィールドがブール演算型フィールドに対してマークされている場合、次の例のように、計算式の結果はブール値である必要があります。
空フィールド
Windchill RV&S では、値のないフィールドは空フィールドと呼ばれます。空フィールドまたは不確定なフィールドを含む計算式は、集計式の場合を除き空の値を返します。
たとえば、「Project End Date」日付フィールドが空かどうかを確認するには、次のように入力します。
"Project End Date"-today() > 0
または
"Project End Date" - today() <=0? false:true
空フィールドの値をゼロと指定するには、isEmpty 関数を使用します。次に例を示します。
isEmpty("QA Time", 0) + isEmpty("Development Time", 0)
このようにすると、どちらか 1 つの値が空の場合でも、2 つの時間を合計して結果を取得できます。
* 
計算フィールドに不確定な計算が含まれる可能性がある場合、PTC ではもっとも良い方法として IsEmpty() 関数で式を囲むことを推奨します。これにより、履歴に保管されたすべての空の計算フィールド値が不確定な計算式の結果であることが確実になります。
日付、時刻、タイムゾーン
計算式では、日付と日付/時刻は別々の日付タイプと見なされ、相互に割り当てることはできません。
表示される日付フィールドは、ユーザーが作業するタイムゾーンに基づいて変更されませんが、表示される日付/時刻フィールドおよびタイム エントリは、ユーザーが作業するタイムゾーンに基づいて変更されます。
計算式では、Windchill RV&S Client のタイムゾーンに日付/時刻が返され、必要に応じて Windchill RV&S Server のタイムゾーンで計算が実行されます。
計算式には日付/時刻情報を日付だけに変換する関数は含まれていません。これは、式がタイムスタンプ (日付と時刻) 値を返す、すべての場合に該当します。日付/時刻情報が必要な場合は、「タイムスタンプ」フィールドで計算式を使用します。
日付式では、標準化されたすべての日付形式およびタイムスタンプ形式が利用可能です。
計算式では、次の演算がタイムスタンプでサポートされています。
* 
日付とタイムスタンプを混在させることはできません。
timestamp + integer constant; integer constant + timestamp
timestamp - integer constant
timestamp("timestamp-constant")
timestamp - timestamp
タイムスタンプを整数定数で減算したり、加算したりできます (たとえば、now()+5 または now() - 5 )。
整数定数は日を単位として扱われます。たとえば、"timestamp + integer constant" では、指定された時刻が取得され、指定された日数が加算されます。2 つのタイムスタンプの間で減算する場合、2 つの日付の間の日数が、最も近い日単位の値に丸められて算出されます。その他の演算子や浮動小数点を使用すると、エラーが発生します。
ユーザー フィールドおよびグループ フィールド
単一および複数の値を持つユーザー フィールドやグループ フィールドを計算式で比較できます (たとえば、"Assigned User" = jriley"Assigned Group" = Development)。ユーザー フィールドまたはグループ フィールドの比較が含まれた計算式を作成すると、計算フィールドの結果を編集可能性の規則に組み込むことができます。
“Assigned User” = “Created By” のように、計算式で 2 つのユーザー フィールドを比較することもできます。論理値や true または false が返されます。
me」シンボリック ユーザー名を使用すると、アイテムを取得するユーザーを示すこともできます。