System PROMOTIC wykorzystuje język skryptów
VBScript już od pierwszych wersji od
1995 roku.
Czas jednak płynie i ten język nie należy już do najnowocześniejszych. Wspúierany jest tylko przez produkty Microsoftu, jednak pozostali producenci go nie wspierają (np.
InternetExplorer go wspiera lecz nie jest wspierany przez
Chrome,
Firefox,
Edge ...).
Przez ten czas często stosowanym stał się
język JavaScript i ten stał się podstawą i standardem technologii internetowych ale również został
standardowym językiem w systemie PROMOTIC (od wersji
Pm9.0.0 można ten język stosować wszędzie zamiast języka
VBScript).
Celem tego rozdziału jest pokazanie, że nawet jeżeli język
JavaScript jest bardziej ogólny (i dlatego może się wydawać, że jest bardziej złożony), to do celów systemu PROMOTIC zapisy okazują się prostszymi i w wielu przypadkach bardziej zrozumiałymi niż w języku
VBScript.
Składnia jest często bardzo podobna jak w języku
VBScript. Na różnice tych dwu języków zwrócimy uwagę właśnie tutaj.
Różnica podczas pisania dużych/małych liter
Obydwa jęzuki różnią się rozróżnianiem dużych i małych liter w nazwach zmiennych, właściwości oraz metod.
Język
JavaScript rozróżnia duże i małe litery (jest
case sensitive). Dlatego jest np. różnica między nazwą
Value oraz
value. Nazwy właściwości oraz metod należy pisać zgodnie z opisem w dokumentacji.
Język
VBScript NIE rozróżnia duże i małe litery. Właściwość o nazwie "
Value" można w tej składni napisać np.
value,
VALUE itd. Również tutaj zalecane jest pisanie nazw zgodnie z dokumentacją.
Domyślne właściwości lub metody
Język
VBScript wspiera koncepcję tak zwanych "właściwości domyślnych" (lub metod). Każdy obiekt może posiadać jedną właściwość lub metodę określoną jakogłówną (domyślną) a wtedy tą nie trzeba w skrypcie pisać.
Przykład:
Obiekt
PmaData posiada metodę
Item określoną jako główną. Tak samo zmienna w
PmaData (obiekt
PmVar) posiada główną właściwość
Value. Dlatego dostęp do wartości zmiennej
"Temperatura1" można pisać w dowolny sposób:
Przykład1:
VBScriptWybierz oraz skopiuj do schowka
oData.Item("Temperatura1").Value = 95
' lub
oData("Temperatura1").Value = 95
' lub
oData.Item("Temperatura1") = 95
' lub
oData("Temperatura1") = 95
Język
JavaScript nie posiada tej koncepcji i dlatego jest konieczne określić każdą właściwość oraz metodę. To znaczy, że w tym przypadku należy pisać:
Przykład2:
JavaScriptWybierz oraz skopiuj do schowka
oData.Item("Temperatura1").Value = 95;
Różnica przy oddzielaniu poleceń
W języku
VBScript każde polecenie znajduje się standardowo na nowym wierszu (tzn. nowy wiersz służy jako separator poleceń).
W języku
JavaScript każde polecenie musi być zakończone średnikiem i dlatego na jednym wierszu można wpisać kilka poleceń (nawet jeżeli nie jest dogodnym przesadanie w tej kwestii).
Przykład:
Dwa polecenia typu przepisanie wartości znajdują się każde na nowym wierszu
VBScriptWybierz oraz skopiuj do schowka
Dim a, b
a = 1
b = 2
Dwa polecenia mogą być każde na nowym wierszu
JavaScriptWybierz oraz skopiuj do schowka
var a = 1;
var b = 2;
a = 1; b = 2;
// lecz mogą być także na jednym wierszu
Różnica przy wywołaniu metod
Przy wywołaniu metod jest język
JavaScript prostszy, ponieważ za nazwą metody
zawsze muszą się znajdować nawiasy (bez względu na to, czy metoda zwraca wartość).
Przykład:
VBScriptWybierz oraz skopiuj do schowka
Pm.Debug "jakiś tekst"
' w tym miejscu nie ma nawiasów, ponieważ nie interesuje nas wartość zwrotna
oCommMsg.Run
' w tym miejscu ponownie nie ma nawiasów i metoda nie posiada parametrów
data = Pm.FileTextRead("#data:file.txt", 1)
' a tym miejscu znajdują się nawiasy, ponieważ interesuje nas wartość zwrotna
JavaScriptWybierz oraz skopiuj do schowka
Pm.Debug("jakiś tekst");
// nawiasy muszą być zawsze pisane
oCommMsg.Run();
// nawiasy muszą być pisane nawet jeżeli metoda nie posiada parametrów
data = Pm.FileTextRead("#data:file.txt", 1);
// nawiasy są pisana ponownie, w tym przypadku zapis jest taki sam jak w VBScript
Wytworzenie i inicjalizacja zmiennej
W języku
JavaScript jest prostsze wytworzenie zmiennej i przyszeregowanie jej wartości. To można wykonać przy pomocy jednego polecenia, podczas kiedy w języku
VBScript są konieczne dwa polecenia. Przy przypisaniu nie rozróżnia się, czy dochodzi do przypisania prostej wartości czy obiektu, podczas kiedy w języku
VBScript przy przypisaniu obiektu musi być zastosowane polecenie
Set.
Przykład:
Polecenie
Dim tylko wytworzy zmienne lecz nie umożliwia przypisania im wartości
VBScriptWybierz oraz skopiuj do schowka
Dim nVal, oPanel
nVal = 1
Set oPanel = pMe.Pm("/Panel1")
Polecenie
var wytworzy zmienne i umożliwia im bezpośrednio przypisać wartości
JavaScriptWybierz oraz skopiuj do schowka
var nVal = 1;
var oPanel = pMe.Pm("/Panel1");
Operatory języka
Oba języki mają wiele wspólnych operatorów, na przykład dodawanie (
+), odejmowanie (
-), mnożenie (
*), dzielenie (
/) itd. Język
JavaScript ma jednakże więcej operatorów a są bardzo przydatne. Na przykład przesunięcie bitowe (
<< oraz
>>), wyrażenie warunkowe (
a ? b : c), dodawanie/odejmowani jedynki (
++ oraz
--).
Zwłaszcza przydatnym jest uproszczenie polecenia dodania wartości (np. do zmiennej w obiekcie
PmaData):
Przykład:
Dodanie wartości 15 do zmiennej oznacza konieczność powtórzenia wyrażenia także po prawej stronie polecenia.
VBScriptWybierz oraz skopiuj do schowka
pMe.Pm("/Data/#vars/Temperatura").Value = pMe.Pm("/Data/#vars/Temperatura").Value + 15
Dodanie wartości 15 do zmiennej jest o wiele prostsze dzięki wyrażeniu
+=, które nie oznacza "przypisz" lecz "dodaj". Istnieją podobne polecenia dla operacji "odejmij", "pomnóż", "podziel" ...
JavaScriptWybierz oraz skopiuj do schowka
pMe.Pm("/Data/#vars/Temperatura").Value += 15;
Patrz również
Operatory JavaScript oraz opis składni.
Funkcje języka
Oba języki posiadają duże zestawy własnych funkcji (w języku
VBScript na przykład funkcje
Now,
Abs ...). Język
JavaScript posiada również dużą ilość podobnych funkcji,
lecz nie zalecamy ich stosowanie - jest lepiej zastosować metody obiektu
Pm.
Typy danych języka
Oba języki posiadają typy danych jak "liczba całkowita", "Liczba rzeczywista", "łańcuch tekstowy", "Obiekt". Podstawowa różnica spoczywa w tym, że język
JavaScript posiada
różne typy dla "Data" oraz "Array". Oba powyższe typy są często stosowanymi w systemie PROMOTIC i sposób implementacji tych typów w języku
JavaScript nie jest odpowiedni dla systemu PROMOTIC. Problem został rozwiązany następująco:
-
dla typu "Data": W języku
VBScript datą jest "coś jakby liczba rzeczywista" z której trudno bezpośrednio rozeznać, jaki jest rok, miesiąc, dzień, godzina, minuta, sekunda, milisekunda. Do tego celu służą funkcje
VBScript, które z tej "liczby rzeczywistej" potrafią określić rok, miesiąc, itd.
Podobna koncepcja jest wprowadzona także dla
JavaScript: Wszystkie metody systemu PROMOTIC, które zwracają datę, zwracają "coś jakby liczbę rzeczywistą". Taką wartość możnw wtedy przekazywać do innych metod i głównie przy pomocy nowego obiektu
PmDateObject można z tej wartości stwierdzić jaki jest rok, miesiąc, dzień, itd.
-
dla typu "Array": Język
VBScript posiada typ "Array" (można wytworzyć na przykład przy pomocy funkcji
Array). Najpowszechniejszymi są warianty 1-wymiarowe i 2-wymiarowe.
Podobna koncepcja jest wprowadzona również dla
JavaScript: Przy pomocy nowej metody
Pm.CreatePmArray można wytworzyć "Array" jako specjalny obiekt
PmArray, i obiekt ten równocześnie zwraca wszystkie metody
PROMOTIC, które według dokumentacji "Array" powinny zwracać.
Warunek IF
Oba języki potrafią wytworzyć warunek przy pomocy polecenia
IF. Jednakże w języku
JavaScript polecenie jest zapisywane w trochę inny sposób.
Przykład:
VBScriptWybierz oraz skopiuj do schowka
If a > 1 Then
' ...
' ...
Else
' ...
' ...
End If
Warunek jest wykonywany przy pomocy poleceń
if...else. Jeżeli w warunku występuje klika poleceń, wtedy muszą być ujęte w nawiasach złożonych
{...}.
JavaScriptWybierz oraz skopiuj do schowka
if (a > 1)
{
// ...
// ...
}
else
{
// ...
// ...
}
Polecenie pętli FOR
Oba języki posiadają polecenie
FOR które umożliwia kilkukrotne wykonywanie części kodu. W języku
JavaScript polecenie ma trochę bardziej skomplikowany zapis, lecz zato jest bardziej ogólne.
Przykład:
VBScriptWybierz oraz skopiuj do schowka
For iRow = 0 To 100
' ...
' ...
Next
Polecenie
for ma trzy parametry.
- 1. parametr (np. i=0) jest polecenie, które zostanie wykonane na początku pętli.
- 2. parametr (np. i<100) jest wyrażenie, które jest sprawdzane na końcu pętli do stwierdzania, czy ma być jeszcze dalej powtarzane
- 3. parametr (np. i++) jest polecenie, które zostanie wykonane na końcu pętli w celu zmiany zmiennej pętli
Jeżeli w poleceniu
for występuje kilka poleceń, które mają być powtarzane, wtedy muszą być ujęte w złożonych nawiasach
{...}.
JavaScriptWybierz oraz skopiuj do schowka
for (iRow = 0; iRow <= 100; iRow++)
{
// ...
// ...
}
Polecenie wielokrotnego warunku
Oba języki posiadają polecenie wielokrotnego warunku, kiedy zestaw poleceń zostanie wykonany tylko jeżeli jakaś zmienna posiada odpowiednią wartość.
Przykład:
VBScriptWybierz oraz skopiuj do schowka
Select Case nVar
Case 1
sMsg = "OK"
Case 2
sMsg = "Warning"
Case 3
sMsg = "Alarm"
End Select
Polecenie
switch. Za każdym zestawem poleceń jest umieszcane polecenie
break; który zakończy warunki i wyskoczy z polecenia
switch.
JavaScriptWybierz oraz skopiuj do schowka
switch (nVar)
{
case 1:
sMsg = "OK";
break;
case 2:
sMsg = "Warning";
break;
case 3:
sMsg = "Alarm";
break;
}