| Pojawienie się | 1983 | ||
|---|---|---|---|
| Paradygmat | |||
| Aktualnawersja stabilna | ANSI X3.274 | ||
| Twórca | |||
| |||
REXX (ang.REstructured eXtended eXecutor) – proceduralny interpretowanyjęzyk programowania zaprojektowany przez Mike’a Cowlishawa. Jego składnia jest zbliżona dojęzyka angielskiego. Po raz pierwszy pojawił się na platformie VM/SP Relase 3 w 1983 roku.
Dużą zaletą tego języka jest możliwość zastosowania go jakojęzyka programowania wsadowego w różnychsystemach operacyjnych orazjęzyka skryptowego dla różnych środowisk iaplikacji. REXX charakteryzuje się dużym zestawemwbudowanych funkcji o naturalnych nazwach iargumentach, posiada tablice dynamiczne, nie trzebadeklarowaćzmiennych i określać ichtypów. Na podstawie REXX-a powstały dwajęzyki obiektowe NetRexx i ObjectRexx dla tych trzech języków (REXX, NetRexx, ObjectRexx) obowiązuje zasada "write once, run anywhere". Przy pomocy wizualnych środowisk zdarzeniowego programowania w REXX-ie (np.VisPro/Rexx, GpfRexx, VX Rexx) można w bardzo prosty sposób tworzyć aplikacje z interfejsem graficznymGUI.ARexx, implementacja języka Rexx dlaAmigaOS iMorphOS, jest integralnym elementem tych systemów. Bardzo duża część oprogramowania dla AmigaOS/MorphOS jest wyposażona w porty ARexxa. Ta cecha znacznie rozszerza możliwość programów i umożliwia komunikowanie się ich między sobą.
Zaimplementowany jest na wszystkich znaczącychplatformach firmyIBM:
Można go używać także na platformach niezwiązanych z IBM jak:
IF [warunek] THEN [instrukcja] ELSE [instrukcja]
Przykład wykorzystania instrukcji warunkowej:
/* If varM jest większe od 10, then say "It's true". W przeciwnym przypadku, say "It's not true". */varM = 5 + 2IF varM > 10 THEN SAY "It's true." ELSE SAY "It's not true."
Operatory porównania
= | równe |
< | mniejsze |
> | większe |
<= | mniejsze lub równe |
>= | większe lub równe |
<> | większe lub mniejsze (nierówne) |
\= lub^= | nierówne |
\< | niemniejsze |
\> | niewiększe |
SELECT jest używany w przypadku kiedy ma sięwykonać jedna z kilku możliwych instrukcji warunkowych (pozostałe zostają pominięte).
/* Sprawdź varM dla różnych wyrażeń ale wykonaj tylko jedną instrukcję dla wyrażenia */SAY "Enter a number"PULL varMSELECT WHEN varM = 10 THEN SAY "It's equal to 10." WHEN varM < 10 THEN SAY "It's less than 10." WHEN varM < 20 THEN SAY "It's less than 20."END
Pętla Aby zaimplementowaćpętle w języku Rexx należy użyć wyrazów DO oraz END. DO wskazuje na początek pętli i jest umieszczane przed pierwszą instrukcją w pętli, natomiast END kończy pętlę i jest umieszczane po ostatniej instrukcji w pętli.Standardowa pętla
DO UNTIL [warunek] [instrukcje] END DO WHILE [warunek] [instrukcje] END
Inne przykłady wykorzystania pętli:
/* Powtórzy "Hello" 10 razy */DO 10 SAY "Hello"END
Wykorzystanie słowa FOREVER spowoduje wykonanie siępętli nieskończenie wiele razy. Taką pętle można przerwać przy pomocyinstrukcji opuszczeniaLEAVE
/* Słowo "Hello" będzie powtarzane nieskończenie */DO FOREVER SAY "Hello"END----DO FOREVER [instrukcja] IF [warunek] THEN LEAVE END
Należy pamiętać, że każdy program w REXX'ie rozpoczyna się odkomentarza. Jakorozszerzenie pliku przyjmuje się ".rexx" lub ".rex".
/* REXX Calculator *//* program główny */ say "Please enter two numbers" parse pull a b . /* wczytanie zmiennych a i b z klawiatury */if b <>"" then if \(datatype(a,number) & datatype(b,number)) then say "a or b isn't a number" else call Sub1 a b /* wywołanie procedury Sub1 */else say "b is empty" Exit /* procedura */ Sub1: say "At" TIME() "on" DATE() "user" USERID() "entered" a "and" b say a "+" b "=" a + b say a "-" b "=" a - b say a "*" b "=" a * b say a "/" b "=" a / b say "divided by" b "is" a%b "with remainder of" a//breturn
| 1GL | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2GL/ Język drugiej generacji/ Asembler | |||||||||||||||
| 3GL / Język trzeciej generacji |
| ||||||||||||||
| 4GL/ Język czwartej generacji/ Język dziedzinowy |
| ||||||||||||||
| 5GL/Logiczne | |||||||||||||||
| Ezoteryczne | |||||||||||||||
| Inne |