Porovnávané verzie

Kľúč

  • Tento riadok sa pridal
  • Riadok je odstránený.
  • Formátovanie sa zmenilo.

...

Blok kódu
languageeda-l
themeRDark
titleNačítanie hodnôt vektora
VECTOR _v;

-- hodnotyHodnoty budú prístupné cez identifikátor Vector.Src
%LoadVector(Vector.Src, _BT, _ET, _STEP);

-- hodnotyHodnoty budú prístupné cez premennú _v
_v := %LoadVectorData("Vector.Src", _BT, _ET, _STEP);

Načítanie vektora s parametrami

Do výpočtu vypočítaného vektora je možné voliteľne podsunúť parametre. Počet parametrov odovzdaných do výpočtu vektora je možné získať funkciou %GetParamsNr. Parameter je identifikovaný svojim indexom. Hodnotu kontrétneho parametra je možné priradiť do lokálnej premennej funkciou %GetParamValue. Ak hodnota parametra nie je kompatibilná s typom lokálnej premennej, do ktorej je priraďovaná, je generovaná chyba.

Blok kódu
languageeda-l
themeRDark
titleVector.Calc
REAL _value;
VECTOR _v;

IF %GetParamsNr() > 0 THEN
  -- Priradí hodnotu parametra na indexe 1 do premennej _value
  %GetParamValue(1, _value);
END IF;
%CreateVectorInit(_v, _value, _BT, _ET, _STEP);

RETURN _v;

Načíta vektor Vector.Calc s podsunutím hodnoty prvého parametra 2,5.

Blok kódu
languageeda-l
themeRDark
titleVector.Result
%LoadVektorWithParams(Vector.Calc, _BT, _ET, _STEP, 2.5);
RETURN Vector.Calc;

Pre zvýšenie prehľadnosti kódu a zjednodušenie práce s parametrami je odporúčané použitie pomenovaných parametrov.

Načítanie vektora s pomenovanými parametrami

Ide o načítanie vektora, ktorý má jasne menom definované parametre. Hodnoty sú týmto parametrom automaticky pridelené pri načítaní vektora. Nezadané parametre budú obsahovať neplatnú hodnotu. Nasledovný príklad pozostáva z dvoch vektorov. Vektor, ktorý spracováva výpočet s parametrami (Vector.Calc) a vektor, ktorý načítava vektor Vector.Calca odovzdáva mu hodnoty parametrov (Vector.Result).

Nasledujúci predpis zobrazuje vektor Vector.Calc, ktorý má definovaný pomenovaný parameter _value typu reálne číslo (1).

Blok kódu
languageeda-l
themeRDark
titleVector.Calc
PARAM REAL _value; -- (1)
VECTOR _v;

%CreateVectorInit(_v, _value, _BT, _ET, _STEP);

RETURN _v;

Vektor Vector.Result už len volá načítanie vektora Vector.Calc, ktorému odovzdá hodnotu parametra _value (1). Ako hodnotu parametra je možné zadať akýkoľvek výraz, ktorého výsledný typ je kompatibilný s typom parametra.

Blok kódu
languageeda-l
themeRDark
titleVector.Result
VECTOR _v;

v := %LoadVectorData("Vector.Calc", _BT, _ET, _STEP, , , _value => 2.5); -- (1)

RETURN _v;

Načítanie zoznamu vektorov

Načítanie zoznamu vektorov je zvyčajne realizované načítaním scenára vektorov (%LoadScenario, %LoadScenarioData) alebo skupiny vektorov (%LoadGroup, %LoadGroupData). Je však možné načítať aj ľubovolný zoznam vektorov na základe SQL príkazu (%LoadFilter, %LoadFilterSimple). Ak do výpočtu vstupujú aj hodnoty vektorov z načítaného zoznamu, je potrebné ich načítať/sprístupniť.

Blok kódu
languageeda-l
themeRDark
titleNačítanie zoznamu vektorov
INT _i, _nr;
VECTOR _v;

%CreateVector(_v, _BT, _ET, _STEP);
%LoadScenario(Scenario.Test, 1);
_nr := %ValuesNr(Scenario.Test);
IF _nr > 0 THEN
  -- Sprístupní hodnoty vektorov v zozname
  FOR _i = 1 TO _nr LOOP
    %LoadVector(Scenario.Test[_i], _BT, _ET, _STEP);
  END LOOP;

  -- Vypočíta súčet hodnôt na rovnakých indexoch
  _v := %Sum(Scenario.Test);
END IF;

Štruktúra VECTORS môže okrem EDA vektorov obsahovať aj odkazy na lokálne vektory (premenné typu VECTOR). V prípade odovzdania takejto štruktúry do iného vypočítaného vektora, budú hodnoty zdrojového lokálneho vektora dostupné na modifikáciu aj vo vnorenom vypočítanom vektore, pričom zmena hodnôt sa prejaví v každej úrovni vnorenia. Nasledovný predpis predstavuje jednoduchý príklad použitia odkazov na lokálne vektory v poli vektorov.

Blok kódu
languageeda-l
themeRDark
VECTOR _v1, _v2;
VECTORS _w;
INT _i, _j;

%CreateVector(_v1, 5);
%CreateVector(_v2, 10);

-- Do poľa vektorov pridá lokálne vektory _v1 a _v2
_w := _w + _v1 + _v2;

-- Modifikuje hodnoty lokálnych vektorov nepriamo cez zoznam vektorov
FOR _i = 1 TO %ValuesNr(_w) LOOP
 FOR _j = 1 TO %ValuesNr(_w[_i]) LOOP
  _w[_i][_j] := _i + _j;
 END LOOP;
END LOOP;


Info
titleSúvisiace stránky:

Vytvorenie vektora
%CreateVectorInit
%ValuesNr