Znakové funkce a příkazy

 

 

<expC1> $ <expC2>

 

Vrací .T., jestliže první zadaný řetězec je obsažen v druhém řetězci

 

ALLTRIM(<expC>)

 

Vrací řetězec bez počátečních a koncových mezer.

 

? "abc"==ALLTRIM(" abc ")

 

ASC(<expC>)

 

Vrací ASCII kód znaku.

Vrací ASCII kód odpovídající prvnímu znaku řetězce <expC>.

 

AT(<expC1>, <expC2> [, <expN>])

 

Hledá výskyt podřetězce v jiném řetězci. Pokud je <expC1> podřetězcem v <expC2>, vrací pozici znaku (číslování od jedničky) v <expC2>, kde nalezený podřetězec začíná. Implicitně se hledá první výskyt podřetězce, zadá-li se však nepovinný parametr, pak <expN>-tý výskyt. Není-li podřetězec nalezen, vrací funkce nulu.

 

? AT("AA","abcAAdeAAfAAgh",2)

 

ATC(<expC1>, <expC2> [, <expN>])

 

Hledá výskyt podřetězce v jiném řetězci bez rozlišování malých a velkých písmen. Pokud je <expC1> podřetězcem v <expC2>, vrací pozici znaku (číslování od jedničky) v <expC2>, kde nalezený podřetězec začíná. Implicitně se hledá první výskyt podřetězce, zadá-li se však nepovinný parametr, pak <expN>-tý výskyt. Není-li podřetězec nalezen, vrací funkce nulu.

 

? ATC("xx","123XX45xx6XX78",2)

 

CHR(<expN>)

 

Vrací znak, jehož číselný ASCII kód odpovídá hodnotě výrazu. Hodnota <expN> může být 0 až 255.

 

CHRTRAN(<expC1>, <expC2>, <expC3>)

 

Překládá znaky zadaného řetězce pomocí překladové tabulky. Postupně každý znak z řetězce <expC1> hledá v řetězci <expC2>. Nenalezne-li se tam, zůstane nepřeložen, pokud ano, je nahrazen znakem z řetězce <expC3> z pozice odpovídající nalezenému znaku v řetězci <expC2>. Je-li řetězec <expC3> kratší než <expC2>, pak se "přebytečné" znaky z <expC2> překládají jako prázdný řetězec. Funkce vrací přeložený vstupní řetězec.

 

? CHRTRAN('abcdef', 'ace', '135')

 

DIFFERENCE(<expC1>, <expC2>)

 

Určuje míru zvukové podobnosti dvou řetězců. Srovnává zvukovou podobnost dvou řetězců. Vrací číslo v rozmezí 0 (zásadní rozdíl) až 4 (téměř shodné).

 

EVALUATE(<expC>)

 

Vyhodnotí výraz a vrátí výsledek jako hodnotu odpovídajícího typu. Může být vhodné namísto makrosubstituce.

 

? EVALUATE("5*4") , EVALUATE("DATE()={21/03/91}")

 

ISALPHA(<expC>)

 

Vrací .T., jestliže první znak řetězce je písmeno.

 

ISLOWER(<expC>)

 

Vrací .T., jestliže první znak řetězce je malé písmeno.

 

ISUPPER(<expC>)

 

Vrací .T., jestliže první znak řetězce je velké písmeno.

 

LEFT(<expC>, <expN>)

 

Vrací podřetězec zleva. Vrací prvních <expN> znaků z řetězce <expC>. Je-li hodnota <expN> nula, vrací prázdný řetězec, je-li větší než počet znaků <expC>, vrací celý vstupní řetězec.

 

LEN(<expC>)

 

Vrací číslo udávající počet znaků v řetězci.

 

LIKE(<expC1>, <expC2>)

 

Srovnává dva znakové řetězce. První ze zadaných řetězců <expC1> může obsahovat "divoké znaky" "?" a "*" v duchu běžných konvencí. Funkce vrací .T., zjistí-li shodu masky <expC1> s řetězcem <expC2>.

 

? LIKE("??\*\s*", "c:\master\subdir")

 

LOWER(<expC>)

 

Převede všechna písmena v zadaném řetězci na malá písmena.

 

LTRIM(<expC>)

 

Vrací řetězec bez počátečních mezer.

 

OCCURS(<expC1>, <expC2>)

 

Vrací počet výskytů podřetězce v řetězci. Zjišťuje počet výskytů podřetězce <expC1> v řetězci <expC2>.

 

? OCCURS("AB", "abABabABabABA")

 

PADC(<expr>, <expN> [, <expC>])

PADL(<expr>, <expN> [, <expC>])

PADR(<expr>, <expN> [, <expC>])

 

Rozšiřuje výraz doplněním o specifikované znaky. PADL doplňuje znaky před výraz <expr>, PADR za výraz, PADC výraz centruje a doplní z obou stran. <expr> může být typu C, N, D, ale funkce vrací vždy znakový řetězec. Hodnota <expN> zadává délku vraceného řetězce. V <expC> zadáváme znak nebo skupinu znaků, které se budou doplňovat. Není-li <expC> zadáno, doplňují se mezery.

 

PROPER(<expC>)

 

Upraví slova v řetězci na vlastní jména. V zadaném řetězci každé slovo upraví tak, že případné první písmeno slova převede na velké a další písmena převede na malá. Oddělovače slov jsou mezery.

 

? PROPER("jan amos komensky")

 

RAT(<expC1>, <expC2> [, <expN>])

 

Hledá výskyt podřetězce v jiném řetězci zprava. Pokud je <expC1> podřetězcem v <expC2>, vrací pozici znaku (číslování od jedničky zleva) v <expC2>, kde nalezený podřetězec začíná. Podřetězec se hledá od pravého konce <expC2> směrem doleva. Implicitně se hledá první výskyt, zadá-li se však nepovinný parametr, pak <expN>-tý výskyt. Není-li podřetězec nalezen, vrací funkce nulu.

 

? RAT("AA", "abcAAdeAAfAAgh", 2)

 

REPLICATE(<expC>,<expN>)

 

Vrací řetězec znaků vygenerovaný opakováním zadaného řetězce. Řetězec <expC> je opakován <expN> krát.

 

podtrhnuti = REPLICATE("-",50)

 

RIGHT(<expC>, <expN>)

 

Vrací podřetězec zprava. Z řetězce <expC> vrací posledních <expN> znaků. Je-li hodnota <expN> menší nebo rovna nule, vrací prázdný řetězec, je-li větší než délka <expC>, vrací celý vstupní řetězec.

 

RTRIM(<expC>)

 

Odstraní z řetězce koncové mezery.

 

SOUNDEX(<expC>)

 

Vrací zvukovou reprezentaci řetězce znaků. Vrací čtveřici znaků, v níž je zakódována zvuková reprezentace výrazu <expC>.

 

SPACE(<expN>)

 

Vrací znakový řetězec sestavený ze zadaného počtu mezer.

 

STRTRAN(<expC1>, <expC2> [, <expC3>] [, <expN1>] [, <expN2>])

 

Nahrazuje výskyty podřetězce v řetězci jiným podřetězcem.

<expC1> vstupní řetězec.

<expC2> hledaný podřetězec.

<expC3> podřetězec, kterým se má <expC2> nahrazovat.

<expN1> pořadové číslo výskytu podřetězce <expC3>, od kterého má začít nahrazování. Implicitně první výskyt.

<expN2> počet opakování náhrad při výskytu dalších podřetězců <expC2>. Implicitně jedno nahrazení.

 

? STRTRAN("CENY JSOU V Kcs","Kcs","DM")

 

STUFF(<expC1>, <expN1>, <expN2>, <expC2>)

 

Nahradí podřetězec jiným nebo vloží podřetězec od zadané pozice.

<expC1> vstupní řetězec.

<expN1> pozice ve vstupním řetězci, od které má začít úprava.

<expN2> počet znaků, které mají být nahrazeny. Je-li zde nula, pak se od pozice <expN1> vkládá.

<expC2> vkládaný řetězec, je-li zadán jako prázdný, funkce provede pouze odstranění <expN2> znaků.

 

? STUFF("abcabc", 4, 0, "-")

 

SUBSTR(<expC>, <expN1> [, <expN2>])

 

Vrací podřetězec zadané délky od zadané pozice. Z řetězce <expC> vybere podřetězec počínaje pozicí <expN1>. Délku podřetězce určuje hodnota <expN2>, implicitně až do konce řetězce.

 

? SUBSTR("//texty",3)

 

Vrací kontrolní součet zadaného řetězce.

 

TRANSFORM(<expr>,<expC>)

 

Formátuje znakový řetězec pro výstup. Výraz <expr> se připraví pro výstup naformátováním podle editačních symbolů jako ve frázi PICTURE příkazu SAY. Editační symboly zadáme v <expC>.

 

TRANSFORM("abcd", "!!XX")

 

TRIM(<expC>)

 

Odstraní z řetězce koncové mezery.

 

TYPE(<expC>)

 

Vrací typ výrazu jako jeden znak. Do <expC> zadáváme výraz libovolného typu uzavřený v omezovačích. Funkce vrací jeden ze znaků C, N (i pro typ F), D, L, M, U (nedefinovatelný typ výrazu, zejména není-li výraz syntakticky správný).

 

? TYPE("dbsoub->pracoviste")

 

UPPER(<expC>)

 

Nahradí všechna písmena v řetězci velkými písmeny.