9.4. Általános rendszerfüggvények

iDevice ikon

A matematikai függvények helyett nézzünk néhány, az informatikában használatos szöveg- vagy dátumkezelő függvényt: KEZDŐBETŰ(név), HOSSZ(megnevezés), ÉV(születési_idő), HÓNAP(belépés_dátuma).

Általában ezek mindegyike belső függvényként szerepel bármely szoftver készletében, ezért biztos, hogy a függvény neve beszédes abból a célból, hogy a funkciója szerint hivatkozhassunk rá, másrészt a paraméter helyén beszédes neveket találunk, ami utal az oda beírandó adat típusára.

A KEZDŐBETŰ nevű függvény most a konkrét deklarációt mellőzve láthatóan szöveget vár a név paraméter helyébe, és visszaadja annak első karakterét, tehát szöveges adatot. Pl. KEZDŐBETŰ('Csuda Lajos') egy 'C'-t eredményez.

A HOSSZ nevű függvény szintén szöveget vár a megnevezés nevű változóba, de annak hosszával, tehát egész számmal tér vissza minden leképzelés szerint. Az ÉV nevű függvény dátumból számot csinál, amiről megszoktuk, hogy bármilyen formátumú is a bevitt dátum, századokkal együtt adja vissza annak az évét. Pl. HOSSZ('kakaós csiga') 12-vel, ÉV('10.05.14.') 2010-el  tér vissza.

A HÓNAP nevű függvény dátumot kap, és abból a hónapot adja vissza. Ez a visszadott érték lehet 1-12 közti egész szám, de lehet szövegesen annak elnevezése a szoftver nemzeti nyelvbeállításának megfelelően. Mindenesetre a visszaadott értéket felhasználjuk valahol, szerepeltetjük valamilyen kifejezésben, vagyis annak adattípusa csak korrekt módon használható fel a konkrét helyén. Ha a HÓNAP(belépés_dátuma) < 7 feltételben szerepel a szóban forgó függvény, akkor számíthatunk arra, hogy a visszaadott függvényérték számként van deklarálva. Valójában arra vagyunk kíváncsiak, hogy a dolgozók valamelyike az első félévben lépett-e a be. Észnél kell lenni, amikor ugyanez szöveges összehasonlításban szerepel: HÓNAP(belépés_dátuma) < 'július'. Ekkor egy 'május'-ban belépő dolgozóra nem teljesülne a feltétel, mert a 2 összehasonlítandó szöveg a magyar ábécé szerint is fordítva követi egymást. Tehát például a HÓNAP(2010.02.01.) lehetne 2 vagy 'február' , a függvényérték felhasználásának megfelelően, bár érdemes a nevükben is megkülönböztetni azokat.

Gyakran vagyunk kénytelenek több bemenő paraméterrel rendelkező függvényeket használni, de klasszikus értelemben a függvény mindig egyetlen visszaadott értékkel rendelkezik. RÉSZE(szövegnek, szöveg), HÁNY_NAPJA(kezdődátum, végdátum) vagy akár ÚJ_DÁTUM(dátum, szám, típus).

Lássuk, mit értünk a RÉSZE('mosógép', 'gép') függvényérték alatt! Arra, hogy az első helyen bevitt szövegnek része-e a második helyen bevitt szöveg, logikai értékkel válaszolnánk, tehát igaz vagy hamis lehet csak a visszaadott érték. Figyeljük meg, hogy a paraméterek sorrendje nem lehet tetszőleges.

A HÁNY_NAPJA(2010.05.01., 2010.05.08.) 2 dátum között eltelt időt akarja visszaadni napokban. Ezt egyébként már a dátumok közti művelet megléte miatt egyszerűen végdátum-kezdődátum kifejezéssel is használhatnánk. Mindenképpen számot, jelen esetben 7-et kapnánk vissza.

Felhívom a figyelmet arra, hogy a dátum adattípus a fenti „rövid dátum" mellett lehetne „hosszú dátum" is. Ekkor az év-hó-nap mögött óra-perc-másodperc is következne. De hosszú dátumok esetében is az eltelt napok száma kivonással számítható, csak akkor nem biztos, hogy egész számot kapnánk.

Előfordulhat, hogy 2 dátum között eltelt időt nem napokban, hanem hol évben, vagy hónapban, esetleg órában vagy percben kívánjuk megkapni. Ebben az esetben szükséges egy harmadik paraméter megadása is a funkció elvégzéséhez, ami a kívánt dátum-idő részletét határozná meg.

Fordítva pedig, kérhetnénk egy adott dátum megnövelését vagy lecsökkentését (az előjeltől függően) egy adott számmal, annak a számnak a megadható típusával együtt, hogy az pontosan milyen új dátum lesz a korrekt dátumkezelés mellett. Például ÚJ_DÁTUM(2010.04.08., 30, nap) dátum adattípusú eredményt ad, a 2010.05.06.-ot. Figyelem, a 3. paraméter egy foglalt szóval azonosított dátum_idő részlet (év, hónap, nap, óra, perc, másodperc) lenne.