Editorytypu XEDIT pouzivam v praci.
LPEX je sucastou WebShere Development Studio Client od IBM. Predtym sme mali SPF/SE od command technology: https://www.commandtechnology.com/
Na line commands si clovek zvykne. Daju sa kopirovat, zarovnavat a prekryvat bloky.
Skoda , ze THE je tak spartansky editor. Viackrat som ho skusal, ale neprisiel som mu nikdy na chut :-)
Co sa tyka jazyka REXX existuju 2 rozsirene implementacie pre PC:
http://regina-rexx.sourceforge.net/ (autor: Mark Hesling t.j autor editora THE)
http://www.oorexx.org/ (reenginering povodneho Object REXX od IBM)
REXX na Windows je vynikajucim rozsirenim command line. Pretoze co nie je prikazom jazyka REXX, posiela na dane prostredie - t.j. spravidla OS. Vieme ze prikazovy jazyk windows je 100 rokov za opicami, takze tu je nainstalovany REXX velkym plus. Pri Linusovych systemoch to uz asi nema vyznam. Nenapada ma cim by REXX mohol konkurovat shellu. V spracovani retazcov asi nie ale mozno jedine v tom, ze REXX podporuje decimalnu aritmetiku.
Kazdopadne REXX je rozsireny na mainfamoch IBM zSeries a iSeries.
Okrem Windows pouzivam REXX este na AS/400 (aka iSeries). Tam je REXX scriptovaci jazy #1 a podporuje 2 prostredia: OS/400 a SQL, t.j. lahko napisete skript, ktory robi nieco v databaze a pouziva aj prikazy OS. Zial posledny manual na AS/400 je z roku 1997. Zrejme IBM na dalsi vyvoj na tejto platforme kasle. Pritom je to skoda lebo je to jedinecny jazyk.
Neviem aka je situacia s REXXom na z/OS.
Rexx znam jeste z Amigy, je to podle me hodne citelny jazyk, pro me treba vic nez BASH (i kdyz ten si myslim, ze docela umim, tak stejne nekdy resit i pitomy porovnavani je na zabiti :).
Ale to jsem se chtel zeptat - jak s ti pracuje s XEDITem? Videl jsem v tom delat par borcu pres terminal na AS/400, ale to byli moc velci pani, abych se jich mohl vyptavat (navic zamestnanci zakaznika ;)
Ano 80 x 24 je standard pre green screens.
Okrem toho je moznost 132 x (asi 27) - nie som si ale isty, pretoze som to nikdy nerobil.
Odomna vzdy pozadovali iba 24 x 80 - podobne ako u teba ti RPG borci. RPG je na AS/400 dost progresivny jazyk. My ho vsak zial nepouzivame. Pretoze nas system zrejme pochadza z mainfame, je pre istoru napisany v COBOLe.
Ano v dnesnej dobe vyzera byt taketo roztlisenie ubohe, ale na druhej strane napr. u nas bezni uzivatelia green screens uz nepouzivaju. Na AS/400 bezi iba backend.
Uzivatelia maju frontend, t.j WebApp v Jave ktora s AS/400 komunikuje prostrednictvom web servisov.
Pardon, ale v čem je REXX lepší v podpoře decimální aritmetiky než shell? I shell umí počítat, pro jednoduché výrazy stačí $(( Výraz )), pro složitější se pak použijí utility jako calc nebo dc (pro drsňáky i bc). Snad jen, že v REXXu se to nemusí závorkovat.
Na druhou stranu takové věci, co člověk od podobných scriptů potřebuje a které jsou v shellu zcela triviální, jako načíst a naparsovat výstup z nějakého programu, je v REXXu hodně nepohodlná práce a pro začátečníka naprosto nepochopitelná.
> načíst a naparsovat výstup z nějakého programu, je v REXXu hodně nepohodlná práce a pro začátečníka naprosto nepochopitelná
No, tady si dovolim trochu nesouhlasit (hlavne s tou druhou casti), i kdyz REXX rozhodne nepatri mezi moje oblibene jazyky (IMHO - aspon ten neobjektovy - nuti cloveka vybrat si mezi modularitou a datovymi strukturami, coz je tak trochu Sofiina volba).
V shellu (a jinych Unixovych nastrojich) se parsuje bezvadne, pokud ovsem znate regularni vyrazy. Pokud je jako zacatecnik neznate, je REXX o neco jednodussi.
Treba si uvedomit, ze REXX bol jeden z prvych tzv. skriptovacich jazykov - este pred Perlom a vtedy sa regularne vyrazy zrejme nepouzivali.
PARSE je dost univerzalny prikaz - pozri napr.:
http://www.kilowattsoftware.com/tutorial/rexx/parsetutorial.htm
mimochodom v Open Object REXXe sa daju pouzivat aj regexp.
>ale v čem je REXX lepší v podpoře decimální aritmetiky než shell? I shell umí počítat, pro jednoduché výrazy stačí $(( Výraz ))
Neviem ci to zavisi od verzie shellu ale mne to s tym $(( Výraz )) pocita iba s celymi cislami. Desatinne cisla nefunguju. Musel by som pouzit bc.
REXX pocita s lubovolnou presnostou, napr:
#!rexx say "1/6 with" DIGITS() "digits precission:" rslt = 1/6 say rslt say NUMERIC DIGITS 100 say "1/6 with" DIGITS() "digits precission:" rslt = 1/6 say rslt
da vysledok
$ precision2.rex 1/6 with 9 digits precission: 0.166666667 1/6 with 100 digits precission: 0.166666666666666666666666666666666666666666666666666666666666666666666666666666 6666666666666666666667
Pardon, ale opravdu mě nenapadlo, že myslíte neceločíselnou aritmetiku. Popravdě, za 35 let programování jsem ji potřeboval je při diplomce (numerické řešení parciálních diferenciálních rovnic) a pak jen na školení asembleru při probírání floating point instrukcí. I při psaní účetního systému jsem si vystačil s celými čísly.
> co člověk od podobných scriptů potřebuje a které jsou v shellu zcela triviální, jako načíst a naparsovat výstup z nějakého programu, je v REXXu hodně nepohodlná práce a pro začátečníka naprosto nepochopitelná
Zrejme to bude iba vec zvyku. Podla mna je to pochopitelne, napr. z vystupu prikazu
$ ls -la total 168 drwxr-xr-x 2 mikl1071 Administrators 4096 Sep 25 17:30 . drwxr-xr-x 60 mikl1071 Administrators 163840 Sep 25 16:42 .. -rwxr-xr-x 1 mikl1071 Administrators 231 Sep 25 17:07 parsing.rex -rwxr-xr-x 1 mikl1071 Administrators 222 Sep 25 17:30 parsing2.rex -rw-r--r-- 1 mikl1071 Administrators 279 Sep 25 17:11 precision.rex -rwxr-xr-x 1 mikl1071 Administrators 172 Sep 25 17:13 precision2.rex
vytiahnem info (meno suboru a velkost) napr. takto
#!rexx -- vykonat prikaz, vystup do queue 'ls -la | rxqueue' -- odstranit header do 3 parse pull . end -- info: file size do queued() parse pull . . . . size month day time fname say fname ':' size end
vysledok je:
$ parsing2.rex parsing.rex : 231 parsing2.rex : 222 precision.rex : 279 precision2.rex : 172
To je přesně ono.
V shellu udělám to samé (píšu to z hlavy, netestováno):
ls -la | (
# remove header
read blah ; read blah ; read blah
# info: file size
while
read blah1 blah2 blah3 blah4 size month day time fname
do
echo "$fname : $size"
done )
prostě výstup z programu sekvenčně čtu, jak mi přijde a zpracovávám. Nemusím si napřed naplnit frontu speciálním příkazem a pak ji správně číst.
A co teprve, kdyby chtěl tomu proramu i předat nějaká data, v shellu mu je prostě pošlu, v REXXu musím naplnít frontu a zase to speciálním příkazem tomu programu poslat. Pokud se program během zpracování zhroutí, v shellu prostě data nepřečte a o nic se nestarám, v REXXu se musím postarat o vyčištění fronty, jinak se nestačím divit, co se děje.