IMsUserTransformImplementation.Execute

Syntax

Execute(

Calculation: IMsMethodCalculation;

Coord: IMsFormulaTransformCoord;

Explained: IMsFormulaTerm;

Explanatories: IMsFormulaTermList);

Parameters

Calculation. Settings required for model calculation.

Coord. Dimension by which calculation is executed.

Explained. Output series.

Explanatories. Collection of terms used as modelling factors.

Description

The Execute method calculates the model using the user algorithm.

Comments

This method must be redetermined in the custom class.

Example

This example is a macro that contains a custom method of model calculation.

Add links to the Cubes, Matrix, and Ms system assemblies.

Public Class My_Method: Object, IMsUserTransformImplementation Param1, Param2: Double;
    Sub Execute(Calculation: IMsMethodCalculation; Coo: IMsFormulaTransformCoord; Explained: IMsFormulaTerm; Explanatories: IMsFormulaTermList);
    Var
        Matr: IMatrix;
        Mcoo: IMatrixCoord;
        Cub: ICubeInstance;
        i: Integer;
        Term: IMsFormulaTerm;
        ModelAr, FactorAr: Array Of Double;
        Period: IMsModelPeriod;
    Begin
        //Get the variable matrix, to which calculated data will be saved
        Matr := Calculation.Variable(Explained.Slice.Variable.VariableStub);
        Mcoo := Matr.CreateCoord;
        Matr.ValueFlag := Matr.ValueFlag + 1;
        ModelAr := Explained.Serie(Calculation);
        Period := Calculation.Period;
        //Calculation
        If Explanatories.Count <> 0 Then
            Term := Explanatories.Item(0);
            FactorAr := Term.Serie(Calculation);
            For i := 0 To Period.ForecastEndDate.Year - Period.IdentificationStartDate.Year Do
                MCoo.Item(0) := i;
                MCoo.Item(1) := 1;
                If Double.IsNan(ModelAr[i]) Then
                    Matr.Item(Mcoo) := (FactorAr[i] + (FactorAr[i - 1] + FactorAr[i - 2])) * Param1 / Param2;
                Else
                    Matr.Item(Mcoo) := (ModelAr[i] + FactorAr[i]) * Param1 / Param2;
                End If;
                Calculation.CurrentPoint := DateTime.AddYears(Calculation.CurrentPoint, 1);
            End For;
        Else
            For i := 0 To Period.ForecastEndDate.Year - Period.IdentificationStartDate.Year Do
                MCoo.Item(0) := i;
                MCoo.Item(1) := 1;
                Matr.Item(Mcoo) := Math.RandBetween(0100) * Param1 / Param2;
            End For;
        End If;
        //Save data to variable
        Cub := ((Explained.Slice.Variable.VariableStub As IMsVariable).Cube As IMetabaseObject).Open(NullAs ICubeInstance;
        Cub.Destinations.DefaultDestination.CreateStorage.SaveMatrix(Matr, Matr.ValueFlag);
    End Sub Execute;
    Sub Set_params(ParamValue: IMsUserMethodParams);
    Begin
        Param1 := ParamValue.Item(0).Value As Double;
        Param2 := ParamValue.Item(1).Value As Double;
    End Sub Set_params;
End Class My_Method;

On calculating the model that is set up to use the custom method, the data based on some dependency between the output series and the model factor is calculated. After the calculation is performed the data is saved to the output variable.

See also:

IMsUserTransformImplementation