式とは、データの参照または計算のことで、オペランド、演算子、括弧から構成されます。式を計算すると、タイプ、形状、および場合によっては型付きパラメーターを持った値が生成されます。
オペランド は、スカラーまたは配列のいずれかです。 演算子 は、組み込みまたは定義済みのいずれかです。単項演算の形式は次のとおりです。
ここで、2 つのオペランドの形状は整合性がとられます。一方のオペランドが配列で、もう一方がスカラーである場合、そのスカラーは、その配列と同じ形式を持つ配列として扱われ、その配列のすべてのエレメントがスカラーの値を持つことになります。
括弧内の式はどれもデータ・エンティティーとして扱われます。括弧を使用して式の明示的解釈を指定することもできます。さらに、括弧を使用して式の代替形式を制限することもできます。これにより、式の計算時に中間値の大きさと精度を制御できます。例として、次に 2 つの式を示します。
(I*J)/K I*(J/K)
この 2 つの式は、数学的には等しいものですが、計算の結果として異なる計算値が出ることもあります。
1 次子 は、最も単純な形式の式です。以下のいずれかになります。
データ・オブジェクトである 1 次子は、想定サイズ配列にはできません。
12.3 ! Constant 'ABCDEFG'(2:3) ! Subobject of a constant VAR ! Variable name (/7.0,8.0/) ! Array constructor EMP(6,'SMITH') ! Structure constructor SIN(X) ! Function reference (T-1) ! Expression in parentheses
1 次子のタイプ、型付きパラメーター、および形状は、次のように決定されます。
ポインターがポインター以外の仮引き数に関連した演算に 1 次子として入れられる場合、ターゲットが参照されます。 1 次子のタイプ、パラメーター、および形状は、ターゲットのタイプ、パラメーターおよび形状です。ポインターがターゲットと関連していない場合、そのポインターは、対応する仮引き数がポインターであるプロシージャー参照内の実引き数、またはポインター割り当てステートメント内のターゲットとしてのみ指定されます。
演算 [expr1] op expr2 の場合、 op が単項式であるか、あるいは expr1 がスカラーであると、その演算の形状は expr2 の形状となります。そうでない場合、その形状は expr1 の形状となります。
式のタイプおよび形状は、演算子および式の 1 次子のタイプと形状によって決まります。式のタイプは、組み込みタイプまたは派生型です。組み込みタイプの式は、kind パラメーターを持ち、これが文字タイプの場合には、length パラメーターも持ちます。