REXX
Z Wikipedii
REXX (ang. REstructured eXtended eXecutor) jest proceduralnym interpretowanym językiem programowania zaprojektowanym przez Mike'a Cowlishawa. Jego składnia jest zbliżona do ję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 jako języka programowania wsadowego w różnych systemach operacyjnych oraz języka skryptowego dla różnych środowisk i aplikacji. Rexx charakteryzuje się dużym zestawem wbudowanych funkcji o naturalnych nazwachi argumentach, posiada tablice dynamiczne, nie trzeba deklarować zmiennych i określać ich typów. Na podstawie REXXa powstały dwa jezyki 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 REXXie (np.VisPro/Rexx, GpfRexx, VX Rexx) można w bardzo prosty sposób tworzyć aplikacje z interfejsem graficznym GUI.
Zaimplementowany jest na wszystkich znaczących platformach firmy IBM:
- z/VM
- VSE/ESA
- OS/390, z/OS
- AIX
- OS/2
Można go używać także na platformach niezwiązanych z IBM jak:
- Amiga
- AROS
- HP OpenVMS
- HP NonStop Kernel (dawniej Tandem)
- wiele odmian UNIX-a (w tym FreeBSD, Linux, Solaris)
- Mac OS
- Microsoft Windows
- Palm OS
Spis treści |
[edytuj] Składnia
Instrukcja warunkowa IF
IF [warunek] THEN [instrukcja] ELSE [instrukcja]
Przykład wykorzystania instrukcj warunkowej:
/* If varM jest większe od 10, then say "It's true". W przeciwnym przypadku, say "It's not true". */ varM = 5 + 2 IF var > 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ę wykonac 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 varM SELECT 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 zaimplementowac 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 pierwsza instrukcją w pętli, natomiast END kończy pętle 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 pomocy instrukcji LEAVE
/* Słowo "Hello" będzie powtarzane nieskończenie */ DO FOREVER SAY "Hello" END ---- DO FOREVER [instrukcja] IF [warunek] THEN LEAVE END
[edytuj] Przykładowy program
Należy pamiętać, że każdy program w REXX'ie rozpoczyna się od komentarza. Jako rozszerzenie pliku przyjmuje się ".rexx" lub ".rex".
/* REXX Calculator */ /* progam glowny */ 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 /* wywolanie 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//b return
[edytuj] Zobacz też
- Regina - najpopularniejszy opensource'owy interpreter języka REXX
[edytuj] Linki zewnętrzne
- The Rexx Language Association
- Regina Rexx - najpopularniejsza darmowa implementacja
- Dokumentacja Rexxa
ABAP • Ada • AWK • Asembler • C • C++ • C# • COBOL • Common Lisp • D • F# • Forth • Fortran • GAUSS • Icon • Java • JavaScript • Lisp • Lustre• Modula 2 • Ocaml • Oberon • Object Pascal • Objective-C • Pascal • Perl • PHP • PL/SQL • Python • REXX • Ruby • SAS 4GL • sh • Smalltalk • Snobol • SQL • Visual Basic • VB.NET • XUL
Akademickie: Comal • Eiffel • Haskell • Logo • MCPL • ML • Nemerle • Prolog • Scheme
Historyczne: ALGOL • APL • BASIC • Clipper • JAS • MUMPS • PLAN • PL/I • PL/M • SAKO • SAS (asembler) • Simula
Ezoteryczne: INTERCAL • Brainfuck • BeFunge • Unlambda • Malbolge • Whitespace • FALSE • HQ9+ • Shakespeare • Whirl • Ook