Přehled nejdůležitějších funkcí jazyka OPL
Aritmetické funkce - ABS, IABS (absolutní hodnota), VAL, EVAL (vyhodnotí číslo nebo výraz obsažený v řetězci), FLT (převede celé číslo na reálné), INT, INTF (zaokrouhlí hodnotu na celé číslo), EXP (mocnina čísla e), LN, LOG (přirozený a desítkový logaritmus), SQR (odmocnina), MAX, MIN (nalezení maxima a minima seznamu čísel nebo pole), SUM, MEAN, STD, VAR, (suma, průměr a směrodatná odchylka seznamu čísel nebo pole), RND (pseudonáhodné číslo), UADD, USUB (sčítání a odčítání celých čísel bez znaménka).
Trigonometrické funkce - COS, ACOS, SIN, ASIN, TAN, ATAN (parametr i vrácená hodnota je v radiánech), RAD, DEG (převod ze stupňů na radiány a zpět) a PI (číslo pí).
Funkce pro práci s časem a datem - YEAR, MONTH, DAY, HOUR, MINUTE, SECOND (vrací aktuální hodnoty systémového času), DATETOSECS, SECSTODATE (převod data na počet vteřin uplynulých od půlnoci na 1.1.1970), DATIM$ (vrátí datum jako text), DAYS, DAYSTODATE (převod data na počet dnů uplynulých od 1.1.1900 a zpět), DOW, WEEK (číslo dne v týdnu a týdnu v roce), DAYNAME$, MONTH$ (jména dnů v týdnu a jména měsíců).
Řetězcové funkce - FIX$, GEN$, SCI$, NUM$ (převod reálného čísla na řetězec v pevné desetinné čárce, obecném tvaru, vědeckém tvaru nebo zaokrouhlené), HEX$ (převod celého čísla do šestnáctkové soustavy), LEFT$, RIGHT$, MID$ (výběr podřetězců), LEN (délka řetězce), LOC (vyhledání podřetězce), UPPER$, LOWER$ (převod řetězce na velká nebo na malá písmena), REPT$ (vytvoří řetězec z opakujících se znaků), CHR$ (pro převod ASCII hodnoty na kód znaku) a ASC (pro převod opačným směrem).
Pole
Proměnné mohou tvořit jednorozměrná pole - index pole uvádíme v kulatých závorkách; první prvek má index 1. Pole deklarujeme podobně jako samostatné proměnné za klíčovým slovem LOCAL (lokální proměnné) nebo GLOBAL. Při deklaraci řetězců používáme dva indexy oddělené čárkou: první udává počet prvků pole a druhý nejvyšší délku jednotlivého řetězce v poli.
PROC promenne: LOCAL a%(10), b(100) GLOBAL s$(100), r$(100, 1) s$ = "Text" r$(1) = "a" : r$(100) = "z" ENDP
V předchozím příkladu jsme deklarovali lokální celočíselné šestnáctibitové (odlišené znakem procento) pole a% o velikosti 10 prvků a pole reálných čísel b obsahující 100 prvků. Pozor na druhý řádek, kde je uvedena globální deklarace. s$ je řetězcová proměnná, která může mít délku nejvýše 100 znaků. Teprve proměnná r$ označuje pole sta jednoznakových řetězců r$(1) až r$(100).
Řídící struktury programu
Klasické větvení programu je možné pomocí klíčových slov IF, ELSEIF, ELSE a ENDIF. Každé z těchto klíčových slov musí být uvedeno na samostatném řádku nebo oddělené dvojtečkou jako samostatný příkaz. Struktura bloku podmínek je následující:
IF podmínka příkazy, které budou vykonány, bude-li podmínka platit ELSEIF podmínka-2 příkazy, které budou vykonány, bude-li platit podmínka-2 ELSEIF podmínka-3 příkazy, které budou vykonány, bude-li platit podmínka-3 ... ELSE příkazy, které budou vykonány, nebude-li žádná z podmínek splněna ENDIF
Bloků za ELSEIF může být uveden libovolný počet; tyto bloky však není povinné v podmínce uvádět. Relační operátory v podmínce mohou být =, <>, <, <=, >, >= a mohou být spojeny pomocí logických operátorů AND, OR a NOT a závorek do libovolně složitých podmínek.
Cykly, které jazyk OPL používá, mohou mít podmínku na začátku i na konci. Z obou dvou těchto cyklů je možné vyskočit příkazem BREAK a vynutit si další iteraci pomocí příkazu CONTINUE.
WHILE podmínka příkazy, které budu vykonávány, dokud bude podmínka platit ENDWH DO příkazy, které budu vykonávány, dokud nebude podmínka splněna UNTIL podmínka
Smyčky WHILE 1 ... ENDWH a DO ... UNTIL 0 jsou nekonečné smyčky, ze kterých musíme - chceme-li je opustit - vyskočit použitím příkazu BREAK.