人人可用的 rexx

人人可用的 rexx

ID:20426774

大?。?6.00 KB

頁(yè)數(shù):6頁(yè)

時(shí)間:2018-10-09

人人可用的 rexx_第1頁(yè)
人人可用的 rexx_第2頁(yè)
人人可用的 rexx_第3頁(yè)
人人可用的 rexx_第4頁(yè)
人人可用的 rexx_第5頁(yè)
資源描述:

《人人可用的 rexx》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫(kù)

1、人人可用的Rexx  關(guān)于Rexx  Rexx編程語(yǔ)言最初創(chuàng)建于1979年,是一個(gè)層次非常高的腳本語(yǔ)言,有特別強(qiáng)大的用于文本處理任務(wù)的工具。從Rexx誕生起,IBM就將各種版本的Rexx加入到它的操作系統(tǒng)中從主機(jī)到中型機(jī)再到終端用戶操作系統(tǒng),比如OS/2和PC-DOS。其他OS制造商,比如Amiga,也將Rexx作為永遠(yuǎn)可用的系統(tǒng)腳本語(yǔ)言集成進(jìn)來(lái)。此外,許多獨(dú)立軟件開(kāi)發(fā)商為很多平臺(tái)創(chuàng)建了Rexx環(huán)境。再晚些時(shí)候,ANSI于1996年正式為Rexx采納了一個(gè)標(biāo)準(zhǔn)。  當(dāng)前(尤其是在Linux或者起源于BSD的OS上),

2、Rexx的那些大部分早期實(shí)現(xiàn),主要作為歷史足跡為人們所關(guān)心。不過(guò),兩個(gè)當(dāng)前保持的Rexx實(shí)現(xiàn)可以用于包括Linux、MacOSX和中運(yùn)行作為結(jié)果生成的.class文件。  NetRexx是一個(gè)IBM項(xiàng)目,用于為Java虛擬機(jī)編譯類似于Rexx的代碼。在實(shí)際能力和編程級(jí)別上,Rexx最接近于bash加上GNU文件工具(外加grep和sed);或者可能相當(dāng)于adash;或者更應(yīng)該說(shuō)是,簡(jiǎn)潔類似于Perl、Python、Ruby或者TCL。并且,Rexx當(dāng)然是完全Turing的,支持模塊和結(jié)構(gòu)化編程,有面向?qū)iT(mén)任務(wù)的庫(kù),例

3、如GUI接口、網(wǎng)絡(luò)編程和數(shù)據(jù)庫(kù)訪問(wèn)。但是它最自然的目標(biāo)在于系統(tǒng)腳本的自動(dòng)化和本文處理任務(wù)。與shell腳本一起,Rexx使得應(yīng)用程序的控制非常自然且顯而易見(jiàn);但相對(duì)于bash(或者tcsh、ksh等等),Rexx中包含了更豐富的內(nèi)置控制結(jié)構(gòu)和(文本處理)函數(shù)?! ≡谖捏w上,Rexx的IBM/mainframe根源體現(xiàn)在它對(duì)命令的大小寫(xiě)敏感;在某種次要程度上也體現(xiàn)在它使用標(biāo)點(diǎn)符號(hào)相對(duì)較少(更多用關(guān)鍵字而不是符號(hào))。我傾向于認(rèn)為這些特性的目的是提高可讀性;但這在很大程度上取決于個(gè)人的愛(ài)好?! 牧骱蜅i_(kāi)始  作為一個(gè)簡(jiǎn)單

4、的小例子,讓我來(lái)介紹一個(gè)特別簡(jiǎn)單的工具的多個(gè)版本,它可以列出文件并對(duì)其進(jìn)行編號(hào)。Rexx和shell腳本的一個(gè)共同點(diǎn)是,它用于和底層操作系統(tǒng)打交道的函數(shù)相對(duì)很少幾乎僅限于可以打開(kāi)、讀和修改文件。對(duì)大部分其他事情,您需要依賴于外部實(shí)用程序來(lái)完成手頭上的工作。實(shí)用程序numbered-1.rexx只是處理STDIN:  清單1.numbered-1.rexx#!/usr/bin/rexxDOi=1UNTILlines()==0 PARSELINEINline IFline=THEN  SAYi

5、

6、)

7、

8、lineEND  

9、無(wú)處不在的指令PARSE可以從各種不同的源讀入。在這里,它將STDIN的下一行賦給變量line。我們也會(huì)檢查某一行是否為空,如果是空的話,則不進(jìn)行顯示和編號(hào)。例如,與ls組合使用我們可以得到:  清單2.將命令通過(guò)管道傳輸?shù)絥umbered-1$ls

10、./numbered-1.rexx1)ls-1.rexx2)ls-2.rexx3)ls-3.rexx4)ls-4.rexx5)ls-5.rexx6)ls-6.rexx7)numbered-1.rexx8)numbered-2.rexx  同樣您可以方便地將任何其他命令通

11、過(guò)管道傳輸進(jìn)來(lái)?! exx的核心概念之一是巧妙地處理多個(gè)?;蛄?。類似bash的風(fēng)格,在Rexx中任何沒(méi)有被識(shí)別為內(nèi)部指令或函數(shù)的內(nèi)容,都被假定為一個(gè)外部實(shí)用程序。沒(méi)有特定的函數(shù)或語(yǔ)法用于調(diào)用外部命令。Regina的實(shí)用程序rxqueue可以將輸出壓入Rexx棧,利用它我們可以寫(xiě)一個(gè)這樣的有編號(hào)的ls實(shí)用程序:  清單3.ls-1.rexx#!/usr/bin/rexxls

12、rxqueueDOi=1lsALDOi=1WHILEqueued()=0 PARSEPULLline;SAYi

13、

14、)

15、

16、line;END  可能

17、看起來(lái)ADDRESS命令只是獲得ls實(shí)用程序的輸出;但實(shí)際上它改變了后面外部調(diào)用的整體執(zhí)行環(huán)境。這些例子運(yùn)行于固定大小寫(xiě)/區(qū)分大小寫(xiě)的文件系統(tǒng)上;在很多系統(tǒng)下,您將不得不保持ls的大小寫(xiě)去引用它。這個(gè)執(zhí)行相同:  清單5123下一頁(yè)——感謝閱讀這篇文章,..,.ls-5.rexx#!/usr/bin/rexxADDRESSSYSTEMALlsDOi=1環(huán)境下運(yùn)行,將把它們的輸入定向到默認(rèn)的FIFO(先入先出,first-in-first-out)。您也可以改為輸出到LIFO(或者是命名的,或者是默認(rèn)的)不同之處是,F(xiàn)

18、IFO向棧的底部添加,而LIFO向頂部添加。指令PUSH和QUEUE對(duì)應(yīng)的是對(duì)棧的LIFO和FIFO操作。指令PULL或者PARSEPULL從棧頂取得一個(gè)字符串?! ×硪粋€(gè)值得說(shuō)明的有用棧是Rexx腳本的命令行參數(shù)。例如,我們可能希望在我們的編號(hào)實(shí)用程序中執(zhí)行任意的命令,而不是只執(zhí)行l(wèi)s:  清單6.numbered-1.rexx#!/usr/

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫(huà)的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無(wú)此問(wèn)題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無(wú)法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。