Eval

Formát: EVAL <hodnota1> [<operátor>] [<hodnota2>] [TO <soubor>] [LFORMAT=<řetězec>]
Šablona: VALUE1/A, OP, VALUE2/M, TO/K, LFORMAT/K
Účel: Vyhodnocuje jednoduché celočíselné výrazy
Cesta: C:EVAL

Příkaz EVAL umí vyhodnocovat jednoduché celočíselné výrazy. Pokud by výsledkem mělo být desetinné číslo (k čemuž může dojít třeba při dělení), bude z výsledku zobrazena jen celočíselná část, desetinná část je odříznuta.

<Hodnota1> a <hodnota2> mohou být desítková, šestnáctková nebo osmičková čísla. Můžete sice zadat i desetinná desítková čísla, avšak příkaz z nich použije pouze celočíselné části.

Implicitně příkaz EVAL používá desítková čísla. Šestnáctková čísla se označují předponou 0x nebo #X. Osmičková čísla mají předponu 0 nebo #. Jako hodnotu můžete zadávat i znaky, pro výpočet je použit jejich ASCII kód. Znak musí vždy být uveden apostrofem (').

Výsledek je implicitně desítkový, avšak klíčovým slovem LFORMAT můžete nastavit i jiný formát. Řetězec argumentu LFORMAT je formátovací řetězec, který určuje vzhled výsledku.

Ve formátovacím řetězci můžete použít tyto znaky:

ZnakPopis
%X Šestnáctkové číslo
%O Osmičkové číslo
%N Desítkové číslo
%C Znak
*N Znak pro odřádkování

U kódů %X a %O navíc musíte vždy zadat počet zobrazených číslic (například %X4 je čtyřciferné šestnáctkové číslo). Ostatní znaky formátovacího řetězce se zobrazí tak, jak je zapíšete.

Příkaz EVAL může zadané hodnoty zpracovat těmito operátory:

OperátorOperace
+ Sčítání
- Odečítání
* Násobení
/ Dělení (celočíselné)
mod Zbytek celočíselného dělení
& Logický součin (AND)
| Logický součet (OR)
~ Logická negace (NOT)
xor Výlučný logický součet (XOR)
qqv Bitová ekvivalence

Ve výrazech je možno používat závorky, syntaxe výrazů se řídí běžnými algebraickými pravidly.

Výstup příkazu EVAL můžete klíčovým slovem TO přesměrovat do zadaného <souboru>.

Příkaz EVAL může fungovat jako jednoduchá kalkulačka, ale zajímavější je možnost použít ho jako čítače smyček v dávkových souborech.

Příklady

1.System2.0:> EVAL 5+3
8

Tohle je hodně primitivní výpočet.

1.System2.0:> EVAL 0xff LFORMAT="%N*N"
255

S argumentem LFORMAT může příkaz EVAL sloužit i jako převodník číselných soustav.

ECHO >ENV:Loop{loop}
LAB Start
ECHO "Smyčka #" NOLINE
TYPE ENV:Loop
EVAL <ENV:LOOP >NIL: TO T:Temp{$$} value2=1 op=- ?
TYPE >ENV:Loop T:Temp{$$}
IF val $loop GT 0
SKIP Start BACK
ENDIF
ECHO "Konec"

7.Ram_Disk:> execute loop 5
Smyčka #5
Smyčka #4
Smyčka #3
Smyčka #2
Smyčka #1
Konec

Dávkový soubor "loop" ilustruje užití příkazu EVAL pro čítač smyčky.

První příkaz ECHO uloží počet průběhů smyčkou, zadaný jako argument dávkového souboru, do souboru "ENV:Loop" (systémové proměnné). Zde to je 5. Druhý příkaz ECHO ve spojení s příkazem TYPE zobrazuje číslo právě prováděné smyčky (poprvé tedy 5).

Příkaz EVAL použije jako první hodnotu číslo v souboru "ENV:Loop", druhá hodnota je vždy 1 a provádí se odečítání. Výsledek se ukládá do souboru T:Temp<$$>. V prvním průchodu to bude číslo 4.

Výsledek se poté překopíruje ze souboru Temp<$$> do souboru "ENV:Loop".

Podmínka IF sleduje, zda je hodnota čítače větší než nula. Když je, vše se provádí znovu, ale s čítačem o jedničku menším. O toto zmenšení se postará opět příkaz EVAL. Až bude čítač nulový, zpracování souboru se ukončí.

  • sobota, 15 srpen 2020
  • Posted in: E

Napsat komentář

Pro přidání komentáře se prosím přihlaste.

Odhadované roční prodeje

odhadovany prodej

Prodeje podle regionů

prodej regiony

Počet prodaných kusů

Počet prodaných kusů