Function

Funkce dovolují vkládat do hlavního programového bloku další bloky, které umožňují vracet hodnoty. Každá deklarace funkce má záhlaví, za nímž následuje blok. Funkce se volá ve výrazu svým jménem za kterým následuje otevírací závorka a to i v případě, kdy funkce nemá žádné vstupní parametry. Jestliže funkce nemá žádné vstupní parametry, následuje samozřejmě za otevírací závorkou závorka zavírací!

Příklad:

a := Test();

V rámci funkce lze používat lokální proměnné dimenzované podobně jako v záhlaví makra. Tělo procedury se ukončuje klíčovým slovem EndFunc. Uvnitř těla musí být příkaz Return s vraceným parametrem. Jestliže program příkaz Return mine a vrátí se až díky EndFunc, nevrátí žádnou hodnotu!

V bloku funkce lze psát další procedury a funkce.

Záhlaví funkce ji dává jméno a určuje případné formální parametry. Neurčuje typ vraceného parametru.

Příklad:

function Test (    A : Word;
               dim B : Byte;
                   S : String[60])
    ...
    return xxx;
endfunc

Při volání procedury je jí možno předávat parametry. O těchto parametrech platí stejná pravidla jako u procedur.

Narazí-li makro při svém chodu na deklaraci funkce, skočí až za její EndFunc.

Funce lze volat i pomocí příkazu call. V tomto případě nebude samozřejmě vracená hodnota využita. Jestliže nebude mít funce parametry, nepište při volání funkce pomocí call prázdné závorky.

call Test;

Příklady:

call TestD(4);
exit
function TestD(c : Word)
    dim a (10) : Word;
    a[9] := c;
    return a[9];
endfunc

---

printup(TestA());
exit
function TestA

    return TestB();

    function TestB
        dim a : Word;
        call TestC(a);
        return a;
		
        procedure TestC(dim w : Word)
            w := 45;
        endproc		
    endfunc	
endfunc

---

printup(RealIsEqual(4,4),"  ",RealIsNull(0))
exit

function RealIsEqual(R1:Real;R2:Real)
    return (_Abs(R1 - R2) < 0.000000001);
endfunc

function RealIsNull(R:Real)
    return (_Abs(R) < 0.000000001);
endfunc

Podívejte se na: Příkazy