Porovnávané verzie
Kľúč
- Tento riadok sa pridal
- Riadok je odstránený.
- Formátovanie sa zmenilo.
Funkcia %StructCalcOp
Blok kódu | ||||
---|---|---|---|---|
| ||||
%StructCalcOp( in _recA[fromRowA]^fromColA, IN _recA[toRowA]^toColA, in _recB[fromRowB]^fromColB, in _recC[fromRowC]^fromRowC^fromColC, INT in _operation [, IN BOOL _bInvalidIsZero = @TRUE] ) |
_recA[fromRowA]^fromColA, _recA[toRowA]^toColA | Odkaz na hodnotu políčka lokálnej štruktúrovanej premennej. |
_recB[fromRowB]^fromColB | Odkaz na hodnotu políčka lokálnej štruktúrovanej premennej. |
_recC[fromRowC] |
^fromColC | Odkaz na hodnotu políčka lokálnej štruktúrovanej premennej. |
INT IN _operation | Typ vykonávanej matematickej operácie. |
IN BOOL _bInvalidIsZero | Nepovinný parameter. Určuje správanie sa matematickej operácie v prípade, ak má niektorý z operandov neplatnú hodnotu. |
Hodnota | Matematická operácia |
0 | + |
1 | - |
2 | * |
3 | / |
Matematická operácia je vykonaná nasledovne:
C = A + B
pričom:
Symbol A predstavuje oblasť hodnôt lokálnej štruktúrovanej premennej, ktorá je daná jej ľavým horným rohom (políčkom _recA[fromRowA]^fromColA) a pravým dolným rohom (políčko _recA[toRowA]^toColA). Štruktúrovaná premenná použitá v prvom a druhom parametri musí byť preto tá istá. Týmto sú definované aj rozmery (počet riadkov a stĺpcov). Rozmery sa použijú pri určení oblastí B a C, ktoré sú v parametroch uvedené len ich pravým horným rohom.
Matematická operácia (určená parametrom) sa vykonáva medzi jednotlivými zodpovedajúcimi políčkami oblastí A a B. Výsledok sa zapisuje do oblasti C.
Nastavený parameter _bInvalidIsZero je interpretovaný týmto spôsobom:
- v prípade operátorov + a - na operandy pred výpočtom
- v prípade * a / je výsledok 0
Prvá je ohraničená políčkami _A[1]^_firstColNr (pričom _firstColNr je nastavená na hodnotu 1) a _A[2]^_lastColNr (pričom _lastColNr je nastavená na poradové číslo posledného stĺpca príslušnej štruktúry).
Druhá je daná políčkom _B[1]^_firstColNr a má dva riadky a rovnaký počet stĺpcov ako matica v rámci premennej _A.
Výsledok sa zapíše do zodpovedajúcich políčok v rámci premennej _C.
Blok kódu | ||||
---|---|---|---|---|
| ||||
BEGIN RECORD (SD.BIG) _A RECORD (SD.BIG) _B RECORD (SD.BIG) _C REDIM _A[20] REDIM _B[20] REDIM _C[20] INT _firstColNr, _lastColNr _firstColNr := 1 _lastColNr := _A\CNR _A[1]^R1 := 1 _A[2]^R1 := 2 _B[1]^R1 := 1 _B[2]^R1 := 2 %StructCalcOp(_A[1]^_firstColNr,_A[2]^_lastColNr,_B[1]^_firstColNr,_C[1]^_firstColNr,0) END |