MODINPUTORDERオプションは、モデルの連立ブロック内の方程式を、指定した順序で実行するか、またはモデル・コンパイラで決定される順序で実行するかを制御します。MODINPUTORDERは、単純ブロックおよびステップ・ブロック内の方程式の順序には影響しません。
例
例5-55 デフォルトの順序の使用
次の文は、income.calc
モデルを定義する文です。
DEFINE income.calc MODEL MODEL DIMENSION line month Net.Income = Opr.Income - Taxes Opr.Income = Gross.Margin - TOTAL(Marketing + Selling + R.D) Marketing = LAG(Opr.Income, 1, month) Gross.Margin = Revenue - Cogs END
次の文で、モデルをコンパイルし、MODEL.COMPRPTプログラムを使用してコンパイル・レポートを生成します。
COMPILE income.calc MODEL.COMPRPT income.calc
これらの文によって生成される出力は次のとおりです。
MODEL INCOME.CALC <LINE MONTH> BLOCK 1 (SIMPLE) INCOME.CALC 5: gross.margin = revenue - cogs BLOCK 2 (SIMULTANEOUS <MONTH>) INCOME.CALC 4: marketing = lag(opr.income, 1, month) INCOME.CALC 3: opr.income = gross.margin - total(marketing + selling + r.d) END BLOCK 2 INCOME.CALC 2: net.income = opr.income - taxes END BLOCK 1
MODINPUTORDERをデフォルト値のNO
に設定してincome.calc
をコンパイルすると、コンパイラによって連立ブロック内の方程式の順序が置き換えられているのが確認できます。
例5-56 MODINPUT値の変更
次の文では、MODINPUTORDERの値をYES
に設定してモデルをコンパイルし、コンパイル・レポートを生成します。
MODINPUTORDER = YES COMPILE income.calc MODEL.COMPRPT income.calc
これらの文によって生成される出力は次のとおりです。
MODEL INCOME.CALC <LINE MONTH> BLOCK 1 (SIMPLE) INCOME.CALC 5: gross.margin = revenue - cogs BLOCK 2 (SIMULTANEOUS <MONTH>) INCOME.CALC 3: opr.income = gross.margin - total(marketing + selling + r.d) INCOME.CALC 4: marketing = lag(opr.income, 1, month) END BLOCK 2 INCOME.CALC 2: net.income = opr.income - taxes END BLOCK 1
連立方程式の順序が指定した順序のまま、コンパイラによって変更されていないことが確認できます。