Úvod do jazyka OPL 6/10
Editovatelné hodnoty
Další odstavce budou popisovat příkazy dialogu definující řádky, na kterých můžeme hodnoty měnit. Všechny tyto příkazy mají dva povinné parametry: prvním z nich je jméno proměnné, jejíž hodnota bude použita k inicializaci dialogu a do níž bude při úspěšném ukončení dialogu uložen výsledek. (Úspěšné ukončení dialogu je jakékoliv jiné než klávesou Esc.) Druhým parametrem je "výzva" - text zobrazený vlevo od měněné hodnoty.
Editace textu a hesla
dEDIT promenna$, vyzva$ dEDIT promenna$, vyzva$, delka%
Přejeme-li si mít možnost text na řádku měnit, použijeme příkaz dEDIT. Za tímto příkazem uvedeme jméno řetězcové proměnné, která bude obsahovat editovaný text. Dalším parametrem definujeme výzvu zobrazenou v levém sloupci vedle editovaného textu. Poslední - nepovinný - parametr slouží k nastavení šířky políčka, ve kterém bude text zapisován. (Šířka políčka se uvádí v počtu průměrně širokých znaků.) Srovnejte první a druhý dialog z následujícího příkladu:
INCLUDE "Const.oph" PROC dialog5: LOCAL j$(20), p$(20) j$="žádné" : p$="nemá" dINIT "První" dEDIT j$, "Jméno" dEDIT p$, "Příjmení" IF DIALOG PRINT "Jméno = "; j$; " "; p$ ENDIF REM --- druhý dialog --- dINIT "Druhý" dEDIT j$, "Jméno", 10 dEDIT p$, "Příjmení", 10 IF DIALOG PRINT "Jméno = "; j$; " "; p$ ENDIF GET ENDP
Heslo
dXINPUT promenna$, vyzva$
Podobný příkazu dEDIT je i příkaz dXINPUT, který slouží ke vstupu hesla. Tento příkaz má pouze dva parametry - jméno proměnné a text, který bude zobrazen vlevo od ní. Počáteční hodnota proměnné, která následuje za dXINPUT, je ignorována a místo textu se na displeji z důvodu utajení zobrazují pouze hvězdičky. Políčko pro vstup textu má pevnou délku a maximální délka hesla, která může být zadána, je 16 znaků (v souboru CONST.OPH je uvedena konstanta KDXInputMaxLen%).
Políčko k zaškrtnutí
dXINPUT promenna%, vyzva$
Příkazem dCHECKBOX vložíte do dialogu políčko k zaškrtnutí. Za příkazem následuje jméno 16bitové celočíselné proměnné (a%). Při zobrazení dialogu bude políčko zaškrtnuto, pouze bude-li mít tato proměnná nenulovou hodnotu. Bude-li dialog ukončen jinak než klávesou Esc, tak bude do této proměnné uložena hodnota nula nebo jedna podle toho, zda bude čtvereček zaškrtnutý nebo ne.
Vstup čísla
dLONG promenna&, vyzva$, min&, max& dFLOAT promenna, vyzva$, min, max
Příkazy dLONG a dFLOAT vložíte do dialogu řádek, na kterém můžete zadávat celé číslo nebo číslo s pohyblivou desetinnou čárkou. Za proměnnou, do které bude uložen výsledek (pro dLONG je 32bitová (a&) a pro dFLOAT reálná), a textem výzvy následuje u obou příkazů minimální a maximální povolená hodnota. Jsou-li povolené všechny hodnoty, je nutné použít konstanty KMinFloat, KMaxFloat nebo KMinLong&, KMaxLong& definované v souboru CONST.OPH.
Vstup data
dDATE promenna&, vyzva$, min&, max&
K zadávání data slouží v OPL příkaz dDATE. Datum je uloženo v 32bitové proměnné jako počet dnů od 1. ledna 1900 a parametry tohoto příkazu jsou stejné jako parametry příkazu dLONG, včetně maximální a minimální povolené hodnoty.
Pro převod data na požadované číslo slouží funkce pocet&=DAYS(den%, mesic%, rok%). Obrácený převod 32bitového čísla na datum je možný příkazem SECSTODATE.
PROC vypocet: LOCAL suma, od&, do&, ano%, pocet& suma=0.0 : ano%=1 : od&=DAYS(DAY, MONTH, YEAR) : do&=od&+28 smycka:: dINIT "Rozložení na splátky" dFLOAT suma, "Celkem", 0.0, KMaxFloat dDATE od&, "Od", DAYS(1,1,1950), DAYS(31,12,2100) dDATE do&, "Do", DAYS(1,1,1950), DAYS(31,12,2100) IF DIALOG=0 : STOP : ENDIF pocet&=(do&-od&)/7 dINIT "Výsledek" dTEXT "Suma", FIX$(suma, 2, 20) dTEXT "Počet týdnů", NUM$(pocet&, 20) dTEXT "Týdenní splátka", FIX$(suma/pocet&, 2, 20) dCHECKBOX ano%, "Další výpočet" IF DIALOG=0 : STOP : ENDIF IF ano% : GOTO smycka : ENDIF ENDP