====== Standardní funkce ====== Standardní funkce jsou použitelné ve všech programovacích jazycích (FUPLA, ST), některé z nich umožňují přetížení (pracují nad různými typy - například sčítání) a některé jsou rozšiřitelné (mohou mít proměnný počet vstupů - například logický součet). ===== Funkce pro konverzi typu ===== |Jméno funkce ^Popis ^Příklad | |..._TO_... |Konverze datového typu uvedeného na prvním místě na datový typ uvedený na druhém místě|A:=INT_TO_REAL(B); | |TO_... |Přetížená konverze datového typu |A:=TO_REAL(B); | |..._TRUNC_... |"Oříznutí" ANY_REAL na ANY_INT |A:=REAL_TRUNC_INT(B); | |..._BCD_TO_...|Převod ANY_BIT na ANY_INT |A:=WORD_BCD_TO_INT(B);| ===== Numerické funkce ===== |Jméno funkce^V/V datový typ^Popis | |ABS |ANY_NUM |Absolutní hodnota | |SQRT |ANY_REAL |Odmocnina | |LN |ANY_REAL |Přirozený logaritmus | |LOG |ANY_REAL |Desítkový logaritmus | |EXP |ANY_REAL |Přirozený exponenciální funkce | |SIN |ANY_REAL |Sinus (radiány) | |COS |ANY_REAL |Kosinus (radiány) | |TAN |ANY_REAL |Tangens (radiány) | |ASIN |ANY_REAL |Arcus sinus | |ACOS |ANY_REAL |Arcus kosinus | |ATAN |ANY_REAL |Arcus tangens | |ATAN2 |ANY_REAL |Arcus tangens k danému bodu (x, y)| |ADD |ANY_NUM |Součet | |MUL |ANY_NUM |Součin | |SUB |ANY_NUM |Rozdíl | |DIV |ANY_NUM |Podíl | |MOD |ANY_NUM |Modulo | |EXPT |ANY_NUM |Umocnění | |MOVE |ANY_NUM |Přiřazení | ===== Funkce nad řetězcem bitů ===== |Jméno funkce^V/v datový typ^Popis | |SHL |ANY_BIT |Posun vlevo (zprava doplněno nulami) | |SHR |ANY_BIT |Posun vpravo (zleva doplněno nulami) | |ROL |ANY_BIT |Rotace vlevo (zprava doplněno o zleva odrotované bity) | |ROR |ANY_BIT |Rotace vpravo (zleva doplněno o zprava odrotované bity)| |AND |ANY_BIT |Logický součin (Př.: A:=AND(B,C,D); nebo A:=B&C&D;) | |OR |ANY_BIT |Logický součet | |XOR |ANY_BIT |Logický exkluzivní součet | |NOT |ANY_BIT |Negace | ===== Funkce výběru ===== |Jméno funkce^V/v datový typ^Popis | |MOVE |ANY |Přiřazení (Př.: A:=B;) | |SEL |ANY |Binární výběr (Př.: OUT:=IN if G=0;)| |MAX |ANY |Maximum | |MIN |ANY |Minimum | |LIMIT |ANY |Limiter | |MUX |ANY |Multiplexer | ===== Funkce porovnání ===== |Jméno funkce^Symbol^Popis | |GT |> |Klesající sekvence | |GE |>= |Monotónní sekvence směrem dolů | |EQ |= |Rovnost | |LE |<= |Monotónní sekvence směrem nahoru| |LT |< |Stoupající sekvence | |NE |<> |Nerovnost | ===== Funkce nad řetězcem znaků ===== |Jméno funkce^V/v datový typ ^Popis | |LEN |ANY_STRING/ANY_INT|Délka řetězce | |LEFT |ANY_STRING/ANY_INT|Zkopírovat daný počet znaků zleva ze vstupního řetězce | |RIGHT |ANY_STRING/ANY_INT|Zkopírovat daný počet znaků zprava ze vstupního řetězce | |MID |ANY_STRING/ANY_INT|Zkopírovat daný počet znaků z dané pozice ze vstupního řetězce (Př.: OUT:=MID(IN,10,3);)| |CONCAT |ANY_STRING |Propojení řetězců | |INSERT |ANY_STRING/ANY_INT|Vložení řetězce od dané pozice | |DELETE |ANY_STRING/ANY_INT|Smazání daného počtu znaků od dané pozice | |REPLACE |ANY_STRING/ANY_INT|Nahrazení daného počtu znaků od daného místa | |FIND |ANY_STRING/ANY_INT|Nalezení pozice prvního výskytu řetězce | ===== Funkce s typy datum a čas ===== |Jméno funkce ^IN1 ^IN2 ^OUT | |ADD |TIME|TIME |TIME| |ADD |DT |TIME |DT | |ADD_TIME |TIME|TIME |TIME| |ADD_TOD_TIME |TOD |TIME |TOD | |ADD_DT_TIME |DT |TIME |DT | |SUB |TIME|TIME |TIME| |SUB |DATE|DATE |TIME| |SUB |TOD |TIME |TOD | |SUB |TOD |TOD |TIME| |SUB |DT |TIME |DT | |SUB |DT |DT |TIME| |SUB_TIME |TIME|TIME |TIME| |SUB_DATE_DATE|DATE|DATE |TIME| |SUB_TOD_TIME |TOD |TIME |TOD | |SUB_TOD_TOD |TOD |TOD |TIME| |SUB_DT_TIME |DT |TIME |DT | |SUB_DT_DT |DT |DT |TIME| |MUL |TIME|ANY_NUM|TIME| |MUL_TIME |TIME|ANY_NUM|TIME| |DIV |TIME|ANY_NUM|TIME| |DIV_TIME |TIME|ANY_NUM|TIME| Výše uvedené funkce jsou dále doplněné o funkce CONCAT a SPLIT, které umožňují spojování a rozdělování částí proměnných typu datum a čas. Například funkce SPLIT_DATE rozdělí datum na tři hodnoty INT (rok, měsíc a den).