宣言部分、関数、およびパッケージを含むクエリがあります。次に示すようなパッケージがあります。Compute_X1 関数は複雑なため、この関数を計算するための「分離」を作成しました。Compute_X1 から返される値は X1 で、関数 J21 で使用されます (J21 は X1 を最初の引数として受け取ります)。
パッケージ仕様:
package Compute_Jacobian is
--compute X1
function Compute_X1 ( Force_Applied, Forcing_Frequency: Long_Float) return Long_Float;
--- use X1 in J21
function J21 ( X1, Forcing_Frequency, Natural_Frequency : Long_Float) return Long_Float;
end Compute_Jacobian;
パッケージ本体は次のとおりです。
package body Compute_Jacobian is
--compute X1
function Compute_X1 ( Force_Applied, Forcing_Frequency: Long_Float) return Long_Float is separate;
X1 := Compute_X1 ( Force_Applied, Forcing_Frequency);
function J21 ( X1, Forcing_Frequency, Natural_Frequency : Long_Float) return Long_Float is separate;
end Compute_Jacobian;
Compute_X1 と J21 のスタブを作成しました。
パッケージ本体の Compute_Jacobian.adb をコンパイルすると、次のエラー メッセージが表示されます。
12. X1 := Compute_X1 ( Force_Applied, Forcing_Frequency);
|
>>> statement not allowed in declarative part
私の質問は、X1 を計算し、それを関数 J21 の計算に使用する方法です。
「メイン」コード (ここには示されていません) で X1 を直接計算して (そこから「分離」を作成)、それを J21 の計算で通常の引数として使用することができます。しかし、Compute_Jacobian パッケージの X1 の計算を使用して、上記の構造 (上記の投稿はこちら) が必要でした。
どうもありがとう...