रेक्स: Difference between revisions

From Vigyanwiki
No edit summary
 
(18 intermediate revisions by 5 users not shown)
Line 1: Line 1:
{{Short description|Command/scripting/programming language}}
{{Short description|Command/scripting/programming language}}'''रेक्स''' (रेस्ट्रक्चर्ड एक्सटेंडेड एक्सेक्टों) एक प्रोग्रामिंग भाषा है जिसे व्याख्या (कंप्यूटिंग) या [[संकलक|संकलित]] किया जा सकता है। यह [[आईबीएम]] में [[माइक काउलिशॉ]] द्वारा विकसित किया गया था।<ref name=RexHist/><ref name=RexMay95/> यह एक संरचित, [[उच्च स्तरीय प्रोग्रामिंग भाषा|हाई लेवल प्रोग्रामिंग भाषा]] है जिसे सीखने और पढ़ने में आसानी के लिए डिज़ाइन किया गया है। कंप्यूटिंग प्लेटफॉर्म की विस्तृत श्रृंखला के लिए स्वामित्व और [[खुला स्रोत सॉफ्टवेयर|ओपन सोर्स सॉफ्टवेयर]] रेक्स इंटरप्रेटर (कंप्यूटिंग) उपस्थित है; आईबीएम [[मेनफ़्रेम कंप्यूटर]] के लिए संकलनकर्ता उपस्थित हैं।<ref>{{cite web
 
{{manual|date=September 2022}}
{{trivia|date=September 2022}}
{{Infobox programming language
| logo = [[File:Rexx-img-lg.png|frameless]]
| paradigm = [[multi-paradigm programming language|multiparadigm]]: [[procedural programming|procedural]], [[structured programming|structured]]
| year = {{Start date and age|1979}}
| designer = [[Mike Cowlishaw]]
| developer = Mike Cowlishaw, [[IBM]]
| latest release version = [[ANSI]] X3.274
| latest release date = {{Start date and age|1996}}
| typing = Dynamic
| implementations = VM/SP R3, TSO/E V2, SAAREXX, [[ARexx]], BREXX, Regina,<ref name="regina">{{cite web
      |url=http://regina-rexx.sourceforge.net
      |title=Regina Rexx Interpreter
      |author=Mark Hessling |date=October 25, 2012
      |publisher=[[SourceForge]] project regina-rexx |access-date=2014-02-10}}</ref> Personal REXX, REXX/imc
| dialects = [[NetRexx]], [[Object REXX]], now <!-- same page -->[[ooREXX]], [[XEDIT#KEXX|KEXX]] <!-- also mentions THE and Regina -->
| influenced_by = [[PL/I]], [[ALGOL]], [[CMS EXEC|EXEC]], [[EXEC 2]]
| influenced = [[NetRexx]], [[Object REXX]]
| file_ext = .cmd, .bat, .exec, .rexx, .rex, EXEC
| wikibooks = Rexx Programming
}}
रेक्स (पुनर्गठित विस्तारित निष्पादक) एक प्रोग्रामिंग भाषा है जिसे व्याख्या (कंप्यूटिंग) या [[संकलक|संकलित]] किया जा सकता है। यह [[आईबीएम]] में [[माइक काउलिशॉ]] द्वारा विकसित किया गया था।<ref name=RexHist/><ref name=RexMay95/> यह एक संरचित, [[उच्च स्तरीय प्रोग्रामिंग भाषा]] है जिसे सीखने और पढ़ने में आसानी के लिए डिज़ाइन किया गया है। कंप्यूटिंग प्लेटफॉर्म की एक विस्तृत श्रृंखला के लिए मालिकाना और [[खुला स्रोत सॉफ्टवेयर]] रेक्स दुभाषिया (कंप्यूटिंग) उपस्थित है; आईबीएम [[मेनफ़्रेम कंप्यूटर|मेनफ़्रेम संगणक]] के लिए संकलनकर्ता उपस्थित हैं।<ref>{{cite web
     |url=http://publibz.boulder.ibm.com/cgi-bin/bookmgr_OS390/FINDBOOK?filter=rexx
     |url=http://publibz.boulder.ibm.com/cgi-bin/bookmgr_OS390/FINDBOOK?filter=rexx
     |title=सभी दस्तावेज़ों की सूची (फ़िल्टर=rexx)|publisher=[[IBM]] library server |year=2005 |access-date=2014-02-10}}</ref>
     |title=सभी दस्तावेज़ों की सूची (फ़िल्टर=rexx)|publisher=[[IBM]] library server |year=2005 |access-date=2014-02-10}}</ref>


रेक्स एक पूर्ण भाषा है जिसका उपयोग स्क्रिप्टिंग भाषा, [[मैक्रो (कंप्यूटर विज्ञान)|मैक्रो (संगणक विज्ञान)]] भाषा और अनुप्रयोग विकास भाषा के रूप में किया जा सकता है। इसका उपयोग अक्सर डेटा और पाठ को संसाधित करने और रिपोर्ट तैयार करने के लिए किया जाता है; [[पर्ल]] के साथ इन समानताओं का अर्थ है कि रेक्स [[कॉमन गेटवे इंटरफ़ेस]] (सीजीआई) प्रोग्रामिंग में अच्छा काम करता है और यह वास्तविक में इस उद्देश्य के लिए उपयोग किया जाता है। कुछ ऑपरेटिंग सिस्टम में रेक्स प्राथमिक स्क्रिप्टिंग भाषा है, उदा। OS/2, [[MVS]], VM (ऑपरेटिंग सिस्टम), [[AmigaOS]], और SPF/PC, XEDIT, THE और ZOC (सॉफ़्टवेयर) टर्मिनल एमुलेटर जैसे कुछ अन्य सॉफ़्टवेयर में आंतरिक मैक्रो भाषा के रूप में भी उपयोग किया जाता है। इसके अतिरिक्त, रेक्स भाषा का उपयोग किसी भी प्रोग्राम में स्क्रिप्टिंग और मैक्रोज़ के लिए किया जा सकता है जो विंडोज स्क्रिप्टिंग होस्ट ActiveX [[भाषा का अंकन]] भाषाओं (जैसे VBScript और JScript) का उपयोग करता है यदि रेक्स इंजनों में से एक स्थापित है।
रेक्स एक पूर्ण भाषा है जिसका उपयोग स्क्रिप्टिंग भाषा, [[मैक्रो (कंप्यूटर विज्ञान)]] भाषा और अनुप्रयोग विकास भाषा के रूप में किया जा सकता है। इसका उपयोग अधिकांश डेटा और पाठ को संसाधित करने और रिपोर्ट तैयार करने के लिए किया जाता है; [[पर्ल]] के साथ इन समानताओं का अर्थ है कि रेक्स [[कॉमन गेटवे इंटरफ़ेस]] (सीजीआई) प्रोग्रामिंग में अच्छा काम करता है और यह वास्तविक में इस उद्देश्य के लिए उपयोग किया जाता है। कुछ ऑपरेटिंग सिस्टम में रेक्स प्राथमिक स्क्रिप्टिंग भाषा है, उदा। OS/2, [[MVS]], VM (ऑपरेटिंग सिस्टम), [[AmigaOS]], और SPF/PC, XEDIT, THE और ZOC (सॉफ़्टवेयर) टर्मिनल एमुलेटर जैसे कुछ अन्य सॉफ़्टवेयर में आंतरिक मैक्रो भाषा के रूप में भी उपयोग किया जाता है। इसके अतिरिक्त, रेक्स भाषा का उपयोग किसी भी प्रोग्राम में स्क्रिप्टिंग और मैक्रोज़ के लिए किया जा सकता है जो विंडोज स्क्रिप्टिंग होस्ट ActiveX [[भाषा का अंकन]] भाषाओं (जैसे VBScript और JScript) का उपयोग करता है यदि रेक्स इंजनों में से एक स्थापित है।


रेक्स को VM/SP रिलीज 3 ऑन अप, TSO/E संस्करण 2 ऑन अप, OS/2 (1.3 और बाद में, जहां इसे आधिकारिक रूप से प्रोसीजर्स भाषा/2 नाम दिया गया है), AmigaOS संस्करण 2 ऑन अप, [[PC DOS]] (7.0 या [[PC DOS 2000|2000]]) [[ArcaOS]] और विंडोज NT 4.0 (संसाधन किट: रेजिना) के साथ आपूर्ति की जाती है।<ref>{{cite web
रेक्स को VM/SP रिलीज 3 ऑन अप, TSO/E संस्करण 2 ऑन अप, OS/2 (1.3 और बाद में, जहां इसे आधिकारिक रूप से प्रोसीजर्स भाषा/2 नाम दिया गया है), AmigaOS संस्करण 2 ऑन अप, [[PC DOS]] (7.0 या [[PC DOS 2000|2000]]) [[ArcaOS]] और विंडोज NT 4.0 (संसाधन किट: रेजिना) के साथ आपूर्ति की जाती है।<ref>{{cite web
|url=https://www.arcanoae.com/faqwd/does-arcaos-include-rexx-support
|url=https://www.arcanoae.com/faqwd/does-arcaos-include-rexx-support
|title=क्या ArcaOS में REXX सपोर्ट शामिल है?|access-date=2020-09-03}}</ref> CMS के लिए रेक्स स्क्रिप्ट फ़ाइल प्रकार EXEC को EXEC और EXEC2 के साथ साझा करती है, और स्क्रिप्ट की पहली पंक्ति उपयोग किए जाने वाले दुभाषिया को निर्दिष्ट करती है। MVS के लिए रेक्स स्क्रिप्ट्स हो सकती हैं{{efn|The TSO EXEC command with an unqualified dataset name and neither the CLIST nor EXEC option examines the low level qualifier or EXEC.}} निम्न स्तर के क्वालीफायर EXEC द्वारा पहचाना जा सकता है या हो सकता है{{efn|If the first line of a script fetched from SYSPROC is a comment containing REXX then it is treated as REXX rather than CLIST. A script fetched from SYSEXEC must be REXX.}} संदर्भ और पहली पंक्ति से पहचाना जाना चाहिए। OS/2 के लिए रेक्स स्क्रिप्ट फ़ाइल नाम एक्सटेंशन .cmd को अन्य स्क्रिप्टिंग भाषाओं के साथ साझा करती है, और स्क्रिप्ट की पहली पंक्ति उपयोग किए जाने वाले दुभाषिया को निर्दिष्ट करती है। रेक्स-जागरूक अनुप्रयोगों के लिए रेक्स मैक्रोज़ एप्लिकेशन द्वारा निर्धारित एक्सटेंशन का उपयोग करते हैं। 1980 के दशक के उत्तरार्ध में, रेक्स [[आईबीएम सिस्टम एप्लीकेशन आर्किटेक्चर]] के लिए सामान्य स्क्रिप्टिंग भाषा बन गई, जहाँ इसका नाम परिवर्तितकर SAA प्रोसीजर भाषा रेक्स कर दिया गया है।
|title=क्या ArcaOS में REXX सपोर्ट शामिल है?|access-date=2020-09-03}}</ref> CMS के लिए रेक्स स्क्रिप्ट फ़ाइल प्रकार EXEC को EXEC और EXEC2 के साथ साझा करती है, और स्क्रिप्ट की पहली पंक्ति उपयोग किए जाने वाले इंटरप्रेटर को निर्दिष्ट करती है। MVS के लिए रेक्स स्क्रिप्ट्स हो सकती हैं{{efn|The TSO EXEC command with an unqualified dataset name and neither the CLIST nor EXEC option examines the low level qualifier or EXEC.}} निम्न स्तर के क्वालीफायर EXEC द्वारा पहचाना जा सकता है या हो सकता है{{efn|If the first line of a script fetched from SYSPROC is a comment containing REXX then it is treated as REXX rather than CLIST. A script fetched from SYSEXEC must be REXX.}} संदर्भ और पहली पंक्ति से पहचाना जाना चाहिए। OS/2 के लिए रेक्स स्क्रिप्ट फ़ाइल नाम extensions .cmd को अन्य स्क्रिप्टिंग भाषाओं के साथ साझा करती है, और स्क्रिप्ट की पहली पंक्ति उपयोग किए जाने वाले इंटरप्रेटर को निर्दिष्ट करती है। रेक्स-जागरूक अनुप्रयोगों के लिए रेक्स मैक्रोज़ एप्लिकेशन द्वारा निर्धारित एक्सटेंशन का उपयोग करते हैं। 1980 के दशक के उत्तरार्ध में, रेक्स [[आईबीएम सिस्टम एप्लीकेशन आर्किटेक्चर|आईबीएम सिस्टम एप्लीकेशन आर्किटेक्वेरिएबल्स]] के लिए सामान्य स्क्रिप्टिंग भाषा बन गई, जहाँ इसका नाम परिवर्तितकर SAA प्रोसीजर भाषा रेक्स कर दिया गया है।


एक रेक्स स्क्रिप्ट या कमांड को कभी-कभी EXEC, [[ईएक्सईसी 2|EXEC 2]]<ref name="X2">{{cite book |title=EXEC 2 संदर्भ| id=SC24-5219-1 |pages=92| edition=Second | date=April 1982 | publisher=International Business Machines Corporation |url=http://bitsavers.org/pdf/ibm/370/VM_SP/Release_2_Jun82/SC24-5219-1_VM_SP_EXEC_2_Rel_2_Reference_Apr82.pdf}}</ref> और CP/CMS पर रेक्स स्क्रिप्ट और z/VM के माध्यम से VM/370 के लिए उपयोग किए जाने वाले CMS फ़ाइल प्रकार के लिए एक नोड के रूप में संदर्भित किया जाता है।<ref name="x">{{cite book|title=IBM वर्चुअल मशीन सुविधा /370: EXEC उपयोगकर्ता गाइड|id=GC20-1812-1|edition=Second|date=April 1975|publisher=International Business Machines Corporation |url=http://bitsavers.org/pdf/ibm/370/VM_370/Release_2/GC20-1812-1_VM370_EXEC_Users_Guide_Rel_2_Apr75.pdf}}</ref>  
एक रेक्स स्क्रिप्ट या कमांड को कभी-कभी EXEC, [[ईएक्सईसी 2|EXEC 2]]<ref name="X2">{{cite book |title=EXEC 2 संदर्भ| id=SC24-5219-1 |pages=92| edition=Second | date=April 1982 | publisher=International Business Machines Corporation |url=http://bitsavers.org/pdf/ibm/370/VM_SP/Release_2_Jun82/SC24-5219-1_VM_SP_EXEC_2_Rel_2_Reference_Apr82.pdf}}</ref> और CP/CMS पर रेक्स स्क्रिप्ट और z/VM के माध्यम से VM/370 के लिए उपयोग किए जाने वाले CMS प्रकार की फाइलों के लिए नोड के रूप में संदर्भित किया जाता है।<ref name="x">{{cite book|title=IBM वर्चुअल मशीन सुविधा /370: EXEC उपयोगकर्ता गाइड|id=GC20-1812-1|edition=Second|date=April 1975|publisher=International Business Machines Corporation |url=http://bitsavers.org/pdf/ibm/370/VM_370/Release_2/GC20-1812-1_VM370_EXEC_Users_Guide_Rel_2_Apr75.pdf}}</ref>  


== सुविधाएँ ==
== सुविधाएँ ==
Line 40: Line 16:
* सरल वाक्य रचना
* सरल वाक्य रचना
* कई वातावरणों में कमांड को रूट करने की क्षमता
* कई वातावरणों में कमांड को रूट करने की क्षमता
* एक विशिष्ट आह्वान वातावरण से जुड़े कार्यों, प्रक्रियाओं और आदेशों का समर्थन करने की क्षमता।
* कोई विशिष्ट आह्वान वातावरण से जुड़े कार्यों, प्रक्रियाओं और आदेशों का समर्थन करने की क्षमता।
* एक बिल्ट-इन स्टैक, यदि कोई हो तो होस्ट स्टैक के साथ इंटरऑपरेट करने की क्षमता के साथ।
* यदि कोई बिल्ट-इन स्टैक हो तो होस्ट स्टैक के साथ इंटरऑपरेट करने की क्षमता।
<!-- The above three items need to be explained in the body of the article. -->
<!-- The above three items need to be explained in the body of the article. -->
* छोटे निर्देश सेट में केवल दो दर्जन निर्देश होते हैं
* छोटे निर्देश सेट में केवल दो दर्जन निर्देश होते हैं
* [[फ्री-फॉर्म भाषा]] सिंटैक्स
* [[फ्री-फॉर्म भाषा]] सिंटैक्स
* चर नाम सहित केस-असंवेदनशील टोकन
* वेरिएबल्स नाम सहित केस-असंवेदनशील टोकन
* [[वर्ण स्ट्रिंग]] आधार
* [[वर्ण स्ट्रिंग]] आधार
* टाइप सिस्टम डायनामिक टाइपिंग, कोई घोषणा नहीं
* टाइप सिस्टम डायनामिक टाइपिंग, कोई घोषणा नहीं
* स्थानीय संदर्भ को छोड़कर कोई [[आरक्षित शब्द]] नहीं
* स्थानीय संदर्भ को छोड़कर कोई [[आरक्षित शब्द]] नहीं
* फ़ाइल सुविधाएं शामिल नहीं हैं
* फ़ाइल सुविधाएं सम्मिलित नहीं हैं
* [[मनमाना-सटीक अंकगणित]]
* [[मनमाना-सटीक अंकगणित]]
* दशमलव अंकगणित, [[तैरनेवाला स्थल]]
* दशमलव अंकगणित, [[तैरनेवाला स्थल]]
Line 56: Line 32:
* क्रैश सुरक्षा
* क्रैश सुरक्षा
* सामग्री पता करने योग्य डेटा संरचनाएं
* सामग्री पता करने योग्य डेटा संरचनाएं
* साहचर्य सरणियाँ
* साहवेरिएबल्स्य सरणियाँ
* सिस्टम कमांड और सुविधाओं तक सीधी पहुंच
* सिस्टम कमांड और सुविधाओं तक सीधी पहुंच
* आसान एरर-हैंडलिंग, और बिल्ट-इन ट्रेसिंग और डिबगर
* आसान एरर-हैंडलिंग, और बिल्ट-इन ट्रेसिंग और डिबगर
Line 64: Line 40:
* विशिष्ट कार्यान्वयन को छोड़कर केवल आंशिक रूप से यूनिक्स शैली कमांड लाइन पैरामीटर का समर्थन करता है
* विशिष्ट कार्यान्वयन को छोड़कर केवल आंशिक रूप से यूनिक्स शैली कमांड लाइन पैरामीटर का समर्थन करता है
* विशिष्ट कार्यान्वयनों को छोड़कर, भाषा के हिस्से के रूप में कोई आधारभूत टर्मिनल नियंत्रण प्रदान नहीं करता है
* विशिष्ट कार्यान्वयनों को छोड़कर, भाषा के हिस्से के रूप में कोई आधारभूत टर्मिनल नियंत्रण प्रदान नहीं करता है
* विशिष्ट कार्यान्वयनों को छोड़कर बाहरी पुस्तकालयों से कार्यों और सबरूटीन्स को शामिल करने का कोई सामान्य विधि प्रदान नहीं करता है
* विशिष्ट कार्यान्वयनों को छोड़कर बाहरी पुस्तकालयों से कार्यों और सबरूटीन्स को सम्मिलित करने का कोई सामान्य विधि प्रदान नहीं करता है


रेक्स में न्यूनतम विराम चिह्न और स्वरूपण आवश्यकताओं के साथ सिर्फ तेईस, सामान्यतः स्व-स्पष्ट, निर्देश (जैसे <code>call</code>, <code>parse</code>, तथा <code>select</code>) हैं। यह अनिवार्य रूप से केवल एक डेटा-प्रकार, वर्ण स्ट्रिंग के साथ एक लगभग स्वतंत्र रूप वाली भाषा है; इस दर्शन का अर्थ है कि सभी डेटा दृश्यमान (प्रतीकात्मक) हैं और डिबगिंग और ट्रेसिंग सरल हैं।
रेक्स में न्यूनतम विराम चिह्न और स्वरूपण आवश्यकताओं के साथ सिर्फ तेईस, सामान्यतः स्व-स्पष्ट, निर्देश (जैसे <code>call</code>, <code>parse</code>, तथा <code>select</code>) हैं। यह अनिवार्य रूप से केवल एक डेटा-प्रकार, वर्ण स्ट्रिंग के साथ लगभग स्वतंत्र रूप वाली भाषा है; इस दर्शन का अर्थ है कि सभी डेटा दृश्यमान (प्रतीकात्मक) हैं और डिबगिंग और ट्रेसिंग सरल हैं।


रेक्स का सिंटैक्स PL/I के समान दिखता है, लेकिन इसमें कम संकेत हैं; इससे (कार्यक्रम द्वारा) पार्स करना कठिन हो जाता है, लेकिन उन स्थितियों को छोड़कर उपयोग करना आसान हो जाता है, जहां पीएल/आई की आदतें आश्चर्य का कारण बन सकती हैं। रेक्स डिजाइन लक्ष्यों में से एक [[कम से कम विस्मय का सिद्धांत]] था।<ref name="POLA">{{cite journal
रेक्स का सिंटैक्स PL/I के समान दिखता है, लेकिन इसमें कम संकेत हैं; इससे (कार्यक्रम द्वारा) पार्स करना कठिन हो जाता है, लेकिन उन स्थितियों को छोड़कर उपयोग करना आसान हो जाता है, जहां पीएल/आई की आदतें आश्वेरिएबल्स्य का कारण बन सकती हैं। रेक्स डिजाइन लक्ष्यों में से एक [[कम से कम विस्मय का सिद्धांत]] था।<ref name="POLA">{{cite journal
|url=https://www.cs.tufts.edu/~nr/cs257/archive/mike-cowlishaw/rexx.pdf|title=REXX भाषा का डिज़ाइन|author=M. F. Cowlishaw|journal=IBM Systems Journal |page=333|type=PDF|publisher=[[IBM Research]]|year=1984
|url=https://www.cs.tufts.edu/~nr/cs257/archive/mike-cowlishaw/rexx.pdf|title=REXX भाषा का डिज़ाइन|author=M. F. Cowlishaw|journal=IBM Systems Journal |page=333|type=PDF|publisher=[[IBM Research]]|year=1984
|volume=23|issue=4|quote=क्या नई विशेषता से जुड़ा कोई उच्च आश्चर्यजनक कारक हो सकता है? यदि कोई सुविधा उपयोगकर्ता द्वारा गलती से गलत तरीके से लागू की जाती है और उसके कारण अप्रत्याशित परिणाम दिखाई देता है, तो उस सुविधा में एक उच्च विस्मयकारी कारक होता है और इसलिए अवांछनीय है। यदि एक आवश्यक विशेषता में एक उच्च विस्मयकारी कारक है, तो सुविधा को फिर से डिज़ाइन करना आवश्यक हो सकता है।|doi=10.1147/sj.234.0326|author-link=Mike Cowlishaw|access-date=2014-01-23}}</ref>
|volume=23|issue=4|quote=क्या नई विशेषता से जुड़ा कोई उच्च आश्चर्यजनक कारक हो सकता है? यदि कोई सुविधा उपयोगकर्ता द्वारा गलती से गलत तरीके से लागू की जाती है और उसके कारण अप्रत्याशित परिणाम दिखाई देता है, तो उस सुविधा में एक उच्च विस्मयकारी कारक होता है और इसलिए अवांछनीय है। यदि एक आवश्यक विशेषता में एक उच्च विस्मयकारी कारक है, तो सुविधा को फिर से डिज़ाइन करना आवश्यक हो सकता है।|doi=10.1147/sj.234.0326|author-link=Mike Cowlishaw|access-date=2014-01-23}}</ref>
Line 76: Line 52:


===1990 से पहले ===
===1990 से पहले ===
रेक्स को 20 मार्च 1979 और 1982 के मध्य आईबीएम के माइक कोविलिशॉ द्वारा 'स्वयं-समय' परियोजना के रूप में असेंबली भाषा में डिजाइन और कार्यान्वित किया गया था, मूल रूप से [[EXEC]] और EXEC 2 भाषाओं को बदलने के लिए एक [[स्क्रिप्टिंग प्रोग्रामिंग भाषा]] के रूप में।<ref name=RexHist>{{cite web|url=http://www.rexxla.org/links/IBM_historical_pages/rexxhist.html|title=IBM REXX संक्षिप्त इतिहास|author=M. F. Cowlishaw|publisher=[[IBM]]|author-link=Mike Cowlishaw|access-date=2006-08-15}}</ref> इसे किसी भी सिस्टम के लिए मैक्रो (संगणक साइंस) या स्क्रिप्टिंग भाषा के रूप में डिजाइन किया गया था। जैसे, रेक्स को [[Tcl]] और Python (प्रोग्रामिंग भाषा) का अग्रदूत माना जाता है। रेक्स का उद्देश्य इसके निर्माता द्वारा [[पायथन (प्रोग्रामिंग भाषा)]] का एक सरलीकृत और सीखने में आसान संस्करण होना भी था। हालाँकि, PL/I से कुछ अस्वीकृति अज्ञानता में हो सकते हैं।
रेक्स को 20 मार्च 1979 और 1982 के मध्य आईबीएम के माइक कोविलिशॉ द्वारा मूल रूप से [[EXEC]] और EXEC 2 भाषाओं को बदलने के लिए एक [[स्क्रिप्टिंग प्रोग्रामिंग भाषा]] के रूप में 'ओन-टाइम' परियोजना के रूप में असेंबली भाषा में डिजाइन और कार्यान्वित किया गया था।<ref name=RexHist>{{cite web|url=http://www.rexxla.org/links/IBM_historical_pages/rexxhist.html|title=IBM REXX संक्षिप्त इतिहास|author=M. F. Cowlishaw|publisher=[[IBM]]|author-link=Mike Cowlishaw|access-date=2006-08-15}}</ref> इसे किसी भी सिस्टम के लिए मैक्रो (कंप्यूटर साइंस) या स्क्रिप्टिंग भाषा के रूप में डिजाइन किया गया था। जैसे, रेक्स को [[Tcl]] और पाइथन (प्रोग्रामिंग भाषा) का अग्रदूत माना जाता है। रेक्स का उद्देश्य इसके निर्माता द्वारा [[पायथन (प्रोग्रामिंग भाषा)]] का सरलीकृत और सीखने में आसान संस्करण करना भी था। चूँकि, PL/I से कुछ अस्वीकृति अज्ञानता में हो सकती हैं।


इसे पहली बार 1981 में ह्यूस्टन, टेक्सास में शेयर 56 सम्मेलन में सार्वजनिक रूप से वर्णित किया गया था।<ref>{{cite web|url=http://speleotrove.com/rexxhist/share56.txt <!-- http://www-306.ibm.com/software/awdtools/rexx/library/share56.html -->|title=REX - एक कमांड प्रोग्रामिंग लैंग्वेज|date=1981-02-18 |author=M. F. Cowlishaw |publisher=[[SHARE (computing)|SHARE]] |author-link=Mike Cowlishaw |access-date=2006-08-15}}</ref> जहां ग्राहकों की प्रतिक्रिया, [[एसएलएसी राष्ट्रीय त्वरक प्रयोगशाला]] के टेड जॉनस्टन द्वारा समर्थित, इसे 1982 में आईबीएम उत्पाद के रूप में भेज दिया गया।
इसे पहली बार 1981 में ह्यूस्टन, टेक्सास में शेयर 56 सम्मेलन में सार्वजनिक रूप से वर्णित किया गया था।<ref>{{cite web|url=http://speleotrove.com/rexxhist/share56.txt <!-- http://www-306.ibm.com/software/awdtools/rexx/library/share56.html -->|title=REX - एक कमांड प्रोग्रामिंग लैंग्वेज|date=1981-02-18 |author=M. F. Cowlishaw |publisher=[[SHARE (computing)|SHARE]] |author-link=Mike Cowlishaw |access-date=2006-08-15}}</ref> जहां ग्राहकों की प्रतिक्रिया, [[एसएलएसी राष्ट्रीय त्वरक प्रयोगशाला]] के टेड जॉनस्टन द्वारा समर्थित, इसे 1982 में आईबीएम उत्पाद के रूप में भेज दिया गया।


इन वर्षों में आईबीएम ने अपने लगभग सभी ऑपरेटिंग सिस्टम (वीएम/सीएमएस, एमवीएस  टीएसओ/ई, [[आईबीएम आई]], वीएसई/ईएसए, [[आईबीएम एआईएक्स]], पीसी डॉस, और OS/2) में रेक्स को भी शामिल किया गया है। और [[नोवेल नेटवेयर]], [[माइक्रोसॉफ़्ट विंडोज़]], [[जावा (प्रोग्रामिंग भाषा)]] और [[लिनक्स]] के लिए संस्करण उपलब्ध कराया है।
इन वर्षों में आईबीएम ने अपने लगभग सभी ऑपरेटिंग सिस्टम (वीएम/सीएमएस, एमवीएस  टीएसओ/ई, [[आईबीएम आई]], वीएसई/ईएसए, [[आईबीएम एआईएक्स]], पीसी डॉस, और OS/2) में रेक्स को भी सम्मिलित किया गया है। और [[नोवेल नेटवेयर]], [[माइक्रोसॉफ़्ट विंडोज़]], [[जावा (प्रोग्रामिंग भाषा)]] और [[लिनक्स]] के लिए संस्करण उपलब्ध कराया है।


पहला गैर-आईबीएम संस्करण 1984/5 में चार्ल्स डेनी द्वारा पीसी डॉस के लिए लिखा गया था<ref name=RexMay95>{{cite web |author=Melinda Varian
पहला गैर-आईबीएम संस्करण 1984/5 में चार्ल्स डेनी द्वारा पीसी डॉस के लिए लिखा गया था<ref name=RexMay95>{{cite web |author=Melinda Varian
|url=http://www.rexxla.org/events/1995/report.html |title=REXX संगोष्ठी, मई 1995}}</ref> और मैन्सफील्ड सॉफ्टवेयर ग्रुप (1986 में केविन जे. केर्नी द्वारा स्थापित) द्वारा विपणन किया गया।<ref name=RexHist/> 1987 में लुंडिन और वुड्रूफ़ द्वारा सीएमएस के लिए लिखा गया पहला संकलक संस्करण सामने आया।<ref name="TR">{{cite journal|url=http://www.copyrightsearch.org/trexx-a-rexx-compiler-for-cms/TXu000295377|title=T/REXX, CMS के लिए एक REXX कंपाइलर| last=Lundin|first=Leigh|author2=Woodruff, Mark  |date=1987-04-23 |journal=U.S. Copyright Office| publisher=Independent Intelligence Incorporated |location=Washington, DC |issue=TXu000295377}}</ref> [[अटारी]], अमिगाओएस, [[यूनिक्स]] (कई संस्करण), [[सोलारिस (ऑपरेटिंग सिस्टम)]], [[डिजिटल उपकरण निगम]], माइक्रोसॉफ्ट विंडोज, [[विंडोज सीई]], [[जेब में रखने लायक कंप्यूटर|जेब में रखने लायक संगणक]], डॉस, [[पाम ओएस]], [[क्यूएनएक्स]], ओएस/2, लिनक्स, [[BeOS]] के लिए, [[EPOC32]]/[[सिम्बियन]], [[AtheOS]], [[OpenVMS]],<ref name=FosdickBook/>{{rp|p.305}} एप्पल [[Macintosh|मैकिनटोश]], और [[Mac OS X]] अन्य संस्करण भी विकसित किए गए हैं।<ref>{{cite web |url=http://www.rexxla.org/About_Rexx/mfc/rexxplat.html
|url=http://www.rexxla.org/events/1995/report.html |title=REXX संगोष्ठी, मई 1995}}</ref> और मैन्सफील्ड सॉफ्टवेयर ग्रुप (1986 में केविन जे. केर्नी द्वारा स्थापित) द्वारा विपणन किया गया।<ref name=RexHist/> 1987 में लुंडिन और वुड्रूफ़ द्वारा सीएमएस के लिए लिखा गया पहला संकलक संस्करण सामने आया।<ref name="TR">{{cite journal|url=http://www.copyrightsearch.org/trexx-a-rexx-compiler-for-cms/TXu000295377|title=T/REXX, CMS के लिए एक REXX कंपाइलर| last=Lundin|first=Leigh|author2=Woodruff, Mark  |date=1987-04-23 |journal=U.S. Copyright Office| publisher=Independent Intelligence Incorporated |location=Washington, DC |issue=TXu000295377}}</ref> [[अटारी]], अमिगाओएस, [[यूनिक्स]] (कई संस्करण), [[सोलारिस (ऑपरेटिंग सिस्टम)]], [[डिजिटल उपकरण निगम]], माइक्रोसॉफ्ट विंडोज, [[विंडोज सीई]], [[जेब में रखने लायक कंप्यूटर]], डॉस, [[पाम ओएस]], [[क्यूएनएक्स]], ओएस/2, लिनक्स, [[BeOS]] के लिए, [[EPOC32]]/[[सिम्बियन]], [[AtheOS]], [[OpenVMS]],<ref name=FosdickBook/>{{rp|p.305}} एप्पल [[Macintosh|मैकिनटोश]], और [[Mac OS X]] अन्य संस्करण भी विकसित किए गए हैं।<ref>{{cite web |url=http://www.rexxla.org/About_Rexx/mfc/rexxplat.html
|title=रेक्स कार्यान्वयन|publisher=RexxLA |access-date=2006-08-15
|title=रेक्स कार्यान्वयन|publisher=RexxLA |access-date=2006-08-15
|archive-url=https://web.archive.org/web/20060924072512/http://www.rexxla.org/About_Rexx/mfc/rexxplat.html
|archive-url=https://web.archive.org/web/20060924072512/http://www.rexxla.org/About_Rexx/mfc/rexxplat.html
|archive-date=2006-09-24}}</ref>
|archive-date=2006-09-24}}</ref>


रेक्स का [[Amiga|अमिगा]] संस्करण, जिसे ARxx कहा जाता है, को AmigaOS 2 के साथ शामिल किया गया था और यह स्क्रिप्टिंग के साथ-साथ एप्लिकेशन नियंत्रण के लिए लोकप्रिय था। कई Amiga अनुप्रयोगों में एक [[ARexx|अरेक्स]] पोर्ट बनाया गया है जो रेक्स से एप्लिकेशन को नियंत्रित करने की अनुमति देता है। कई चल रहे अनुप्रयोगों को नियंत्रित करने के लिए एक एकल रेक्स स्क्रिप्ट विभिन्न रेक्स पोर्ट्स के बीच भी स्विच कर सकती है।
रेक्स का [[Amiga|अमिगा]] संस्करण, जिसे ARxx कहा जाता है, को AmigaOS 2 के साथ सम्मिलित किया गया था और यह स्क्रिप्टिंग के साथ-साथ एप्लिकेशन नियंत्रण के लिए लोकप्रिय था। कई Amiga अनुप्रयोगों में एक [[ARexx|अरेक्स]] पोर्ट बनाया गया है जो रेक्स से एप्लिकेशन को नियंत्रित करने की अनुमति देता है। कई चल रहे अनुप्रयोगों को नियंत्रित करने के लिए एक एकल रेक्स स्क्रिप्ट विभिन्न रेक्स पोर्ट्स के बीच भी स्विच कर सकती है।


=== 1990 से वर्तमान ===
=== 1990 से वर्तमान ===
Line 95: Line 71:
रेक्स के कई [[फ्रीवेयर]] संस्करण उपलब्ध हैं। 1992 में, दो सबसे व्यापक रूप से उपयोग किए जाने वाले ओपन-सोर्स पोर्ट सामने आए:: यूनिक्स के लिए इयान कोलियर का REXX/imc और विंडोज और यूनिक्स के लिए एंडर्स क्रिस्टेंसन का रेजिना<ref name="regina"/>(बाद में मार्क हेस्लिंग द्वारा अपनाया गया)। [http://ftp.gwdg.de/pub/languages/rexx/brexx/html/rx.html बिरेक्स] WinCE और पॉकेट पीसी प्लेटफॉर्म के लिए अच्छी तरह से जाना जाता है, और इसे VM/370 और MVS में बैक-पोर्ट किया गया है।
रेक्स के कई [[फ्रीवेयर]] संस्करण उपलब्ध हैं। 1992 में, दो सबसे व्यापक रूप से उपयोग किए जाने वाले ओपन-सोर्स पोर्ट सामने आए:: यूनिक्स के लिए इयान कोलियर का REXX/imc और विंडोज और यूनिक्स के लिए एंडर्स क्रिस्टेंसन का रेजिना<ref name="regina"/>(बाद में मार्क हेस्लिंग द्वारा अपनाया गया)। [http://ftp.gwdg.de/pub/languages/rexx/brexx/html/rx.html बिरेक्स] WinCE और पॉकेट पीसी प्लेटफॉर्म के लिए अच्छी तरह से जाना जाता है, और इसे VM/370 और MVS में बैक-पोर्ट किया गया है।


OS/2 में Watcom [[VX-REXX|VX-रेक्स]] का दृश्य विकास प्रणाली है। हॉकवेयर की एक अन्य बोली विज़प्रो रेक्स थी।
OS/2 में वाटकॉम [[VX-REXX|VX-रेक्स]] का दृश्य विकास प्रणाली है। हॉकवेयर की एक अन्य बोली विज़प्रो रेक्स थी।


किलोवाट द्वारा पोर्टेबल रेक्स और कुरक्युस द्वारा व्यक्तिगत रेक्स दो रेक्स इंटरप्रेटर हैं जिन्हें डॉस के लिए डिज़ाइन किया गया है और कमांड प्रॉम्प्ट का उपयोग करके विंडोज के अनुसार भी चलाया जा सकता है। 1990 के दशक के मध्य से, रेक्स के दो नए संस्करण सामने आए हैं:
किलोवाट द्वारा पोर्टेबल रेक्स और कुरक्युस द्वारा व्यक्तिगत रेक्स दो रेक्स इंटरप्रेटर हैं जिन्हें डॉस के लिए डिज़ाइन किया गया है और कमांड प्रॉम्प्ट का उपयोग करके विंडोज के अनुसार भी चलाया जा सकता है। 1990 के दशक के मध्य से, रेक्स के दो नए संस्करण सामने आए हैं:
Line 106: Line 82:
रेक्स ने 20 मार्च 2004 को अपनी 25वीं वर्षगांठ मनाई, जिसे मई 2004 में जर्मनी के बॉबलिंगेन में रेक्स भाषा एसोसिएशन के 15वें अंतर्राष्ट्रीय रेक्स संगोष्ठी में मनाया गया।
रेक्स ने 20 मार्च 2004 को अपनी 25वीं वर्षगांठ मनाई, जिसे मई 2004 में जर्मनी के बॉबलिंगेन में रेक्स भाषा एसोसिएशन के 15वें अंतर्राष्ट्रीय रेक्स संगोष्ठी में मनाया गया।


12 अक्टूबर 2004 को, आईबीएम ने [[सामान्य सार्वजनिक लाइसेंस]] के अनुसार अपने ऑब्जेक्ट रेक्स कार्यान्वयन के स्रोतों को जारी करने की अपनी योजना की घोषणा की। ऑब्जेक्ट रेक्स के हाल के रिलीज़ में रेक्स भाषा के इस संस्करण को लागू करने वाला ActiveX विंडोज [[विंडोज स्क्रिप्टिंग होस्ट]]WSH) स्क्रिप्टिंग इंजन शामिल है।
12 अक्टूबर 2004 को, आईबीएम ने [[सामान्य सार्वजनिक लाइसेंस]] के अनुसार अपने ऑब्जेक्ट रेक्स कार्यान्वयन के स्रोतों को जारी करने की अपनी योजना की घोषणा की। ऑब्जेक्ट रेक्स के हाल के रिलीज़ में रेक्स भाषा के इस संस्करण को लागू करने वाला ActiveX विंडोज [[विंडोज स्क्रिप्टिंग होस्ट]]WSH) स्क्रिप्टिंग इंजन सम्मिलित है।


22 फरवरी, 2005 को ओपन ऑब्जेक्ट रेक्स (ooRexx) की पहली सार्वजनिक रिलीज की घोषणा की गई। इस उत्पाद में एक WSH स्क्रिप्टिंग इंजन है जो विंडोज ऑपरेटिंग सिस्टम और रेक्स के साथ एप्लिकेशन को उसी तरह से प्रोग्रामिंग करने की अनुमति देता है जिसमें [[Visual Basic|विसुअल बेसिक]] और [[JScript|जेस्क्रिप्ट]] को डिफ़ॉल्ट WSH इंस्टॉलेशन और पर्ल, Tcl, Python (प्रोग्रामिंग भाषा) थर्ड-पार्टी स्क्रिप्टिंग इंजन द्वारा लागू किया जाता है।
22 फरवरी, 2005 को ओपन ऑब्जेक्ट रेक्स (ooRexx) की पहली सार्वजनिक रिलीज की घोषणा की गई। इस उत्पाद में एक WSH स्क्रिप्टिंग इंजन है जो विंडोज ऑपरेटिंग सिस्टम और रेक्स के साथ एप्लिकेशन को उसी तरह से प्रोग्रामिंग करने की अनुमति देता है जिसमें [[Visual Basic|विसुअल बेसिक]] और [[JScript|जेस्क्रिप्ट]] को डिफ़ॉल्ट WSH इंस्टॉलेशन और पर्ल, Tcl, Python (प्रोग्रामिंग भाषा) थर्ड-पार्टी स्क्रिप्टिंग इंजन द्वारा लागू किया जाता है।


{{As of|2017|January}} तक रेक्स को TIOBE इंडेक्स में शीर्ष 100 में शामिल 50 भाषाओं में से एक के रूप में सूचीबद्ध किया गया था जो शीर्ष 50 से संबंधित नहीं थी।<ref>{{cite web|url=http://www.tiobe.com/tiobe-index/|title=अगली 50 प्रोग्रामिंग भाषाएँ|work=[[TIOBE index]]|year=2017|publisher=tiobe.com|access-date=2017-01-10 |archive-url=https://web.archive.org/web/20170119054400/http://www.tiobe.com/tiobe-index/ |archive-date=2017-01-19 |url-status=live}}</ref>
{{As of|2017|January}} तक रेक्स को TIOBE इंडेक्स में शीर्ष 100 में सम्मिलित 50 भाषाओं में से एक के रूप में सूचीबद्ध किया गया था जो शीर्ष 50 से संबंधित नहीं थी।<ref>{{cite web|url=http://www.tiobe.com/tiobe-index/|title=अगली 50 प्रोग्रामिंग भाषाएँ|work=[[TIOBE index]]|year=2017|publisher=tiobe.com|access-date=2017-01-10 |archive-url=https://web.archive.org/web/20170119054400/http://www.tiobe.com/tiobe-index/ |archive-date=2017-01-19 |url-status=live}}</ref>


2019 में, 30वीं रेक्स भाषा एसोसिएशन सिम्पोजियम ने रेक्स की 40वीं वर्षगांठ मनाई। संगोष्ठी हर्सले, इंग्लैंड में आयोजित की गई थी, जहां रेक्स को पहली बार डिजाइन और कार्यान्वित किया गया था।<ref>{{Cite web|url=https://www.rexxla.org/events/schedule.rsp?year=2019|title = RexxLA - संगोष्ठी अनुसूची}}</ref>
2019 में, 30वीं रेक्स भाषा एसोसिएशन सिम्पोजियम ने रेक्स की 40वीं वर्षगांठ मनाई। संगोष्ठी हर्सले, इंग्लैंड में आयोजित की गई थी, जहां रेक्स को पहली बार डिजाइन और कार्यान्वित किया गया था।<ref>{{Cite web|url=https://www.rexxla.org/events/schedule.rsp?year=2019|title = RexxLA - संगोष्ठी अनुसूची}}</ref>
Line 119: Line 95:
Rexx/Tk, ग्राफिक्स के लिए एक टूलकिट है जिसका उपयोग रेक्स प्रोग्राम्स में Tcl/Tk के रूप में व्यापक रूप से उपलब्ध है।
Rexx/Tk, ग्राफिक्स के लिए एक टूलकिट है जिसका उपयोग रेक्स प्रोग्राम्स में Tcl/Tk के रूप में व्यापक रूप से उपलब्ध है।


विंडोज के लिए एक रेक्स IDE, RxxxEd विकसित किया गया है।<ref name=FosdickBook>{{cite book |author=Howard Fosdick |title=Rexx प्रोग्रामर का संदर्भ|publisher=[[Wiley Publishing]] |isbn=0-7645-7996-7 |year=2005 |page=390}}</ref> नेटवर्क संचार के साथ-साथ रेजिना रेक्स के अन्य ऐड-ऑन और कार्यान्वयन के लिए RxSock विकसित किया गया है, और विंडोज कमांड लाइन के लिए एक रेक्स दुभाषिया विंडोज के विभिन्न संस्करणों के लिए अधिकांश संसाधन किटों में आपूर्ति की जाती है और उन सभी के साथ-साथ डॉस के अनुसार काम करता है।
विंडोज के लिए रेक्स IDE, RxxxEd विकसित किया गया है।<ref name=FosdickBook>{{cite book |author=Howard Fosdick |title=Rexx प्रोग्रामर का संदर्भ|publisher=[[Wiley Publishing]] |isbn=0-7645-7996-7 |year=2005 |page=390}}</ref> नेटवर्क संचार के साथ-साथ रेजिना रेक्स के अन्य ऐड-ऑन और कार्यान्वयन के लिए RxSock विकसित किया गया है, और विंडोज कमांड लाइन के लिए रेक्स इंटरप्रेटर विंडोज के विभिन्न संस्करणों के लिए अधिकांश संसाधन किटों में आपूर्ति की जाती है और उन सभी के साथ-साथ डॉस के अनुसार काम करता है।


=== वर्तनी और पूंजीकरण ===
=== वर्तनी और पूंजीकरण ===
मूल रूप से भाषा को Rex ( पुनः संभावित प्रबंधक) कहा जाता था; अतिरिक्त X को अन्य उत्पादों के नामों के साथ विरोध से बचने के लिए जोड़ा गया था। REX मूल रूप से सभी अपरकेस था क्योंकि मेनफ्रेम कोड अपरकेस ओरिएंटेड था। उन दिनों की शैली में ऑल-कैप नाम होना था, आंशिक रूप से क्योंकि लगभग सभी कोड अभी भी ऑल-कैप थे। उत्पाद के लिए यह रेक्स बन गया, और माइक काउलीशॉ की पुस्तक के दोनों संस्करण ऑल-कैप का उपयोग करते हैं। 1984 में सिस्टम उत्पाद के लिए रीस्ट्रक्चर्ड एक्सटेंडेड एक्ज़ीक्यूटर के विस्तार का उपयोग किया गया था।<ref name="POLA"/>
मूल रूप से भाषा को Rex ( पुनः संभावित प्रबंधक) कहा जाता था; अतिरिक्त X को अन्य उत्पादों के नामों के साथ विरोध से बचने के लिए जोड़ा गया था। REX मूल रूप से सभी अपरकेस था क्योंकि मेनफ्रेम कोड अपरकेस ओरिएंटेड था। उन दिनों की शैली में ऑल-कैप नाम होना था, आंशिक रूप से क्योंकि लगभग सभी कोड अभी भी ऑल-कैप थे। उत्पाद के लिए यह रेक्स बन गया, और माइक काउलीशॉ की पुस्तक के दोनों संस्करण ऑल-कैप का उपयोग करते हैं। 1984 में सिस्टम उत्पाद के लिए रीस्ट्रक्वेरिएबल्स्ड एक्सटेंडेड एक्ज़ीक्यूटर के विस्तार का उपयोग किया गया था।<ref name="POLA"/>
 
 
== सिंटेक्स ==
== सिंटेक्स ==
{{manual|section|date=December 2012}}
=== लूपिंग ===
=== लूपिंग ===
रेक्स में लूप नियंत्रण संरचना <code>DO</code> से प्रारंभ होता है और <code>END</code> के साथ समाप्त होता है लेकिन कई किस्मों में आता है। नेटरेक्स लूपिंग के लिये <code>DO</code> के अतिरिक्त कीवर्ड <code>LOOP</code> का उपयोग करता है जबकि ooRexx लूप करते समय <code>LOOP</code> तथा <code>DO</code> को समतुल्य मानता है।
रेक्स में लूप नियंत्रण संरचना <code>DO</code> से प्रारंभ होता है और <code>END</code> के साथ समाप्त होता है लेकिन कई किस्मों में आता है। नेटरेक्स लूपिंग के लिये <code>DO</code> के अतिरिक्त कीवर्ड <code>LOOP</code> का उपयोग करता है जबकि ooRexx लूप करते समय <code>LOOP</code> तथा <code>DO</code> को समतुल्य मानता है।


==== सशर्त पाश ====
==== सशर्त लूप ====
रेक्स कई प्रकार के पारंपरिक संरचित-प्रोग्रामिंग लूप का समर्थन करता है, जबकि किसी स्थिति का परीक्षण करने से पहले (<code>do while</code>) या बाद में (<code>do until</code>) निर्देशों की सूची निष्पादित हो जाती है:
रेक्स कई प्रकार के पारंपरिक संरचित-प्रोग्रामिंग लूप का समर्थन करता है, जबकि किसी स्थिति का परीक्षण करने से पहले (<code>do while</code>) या बाद में (<code>do until</code>) निर्देशों की सूची निष्पादित हो जाती है:<syntaxhighlight lang="d">
जबकि [हालत]
do while [condition]
  [निर्देश]
  [instructions]
  समाप्त
  end
 
  do until [condition]
  [शर्त] तक करो
  [instructions]
  [निर्देश]
  end
  समाप्त
</syntaxhighlight>


==== दोहराए जाने वाले लूप्स ====
==== दोहराए जाने वाले लूप्स ====
अधिकांश भाषाओं की तरह, रेक्स एक इंडेक्स वेरिएबल को बढ़ाते समय लूप कर सकता है और एक सीमा तक पहुंचने पर रुक सकता है:
अधिकांश भाषाओं की तरह, रेक्स एक इंडेक्स वेरिएबल को बढ़ाते समय लूप कर सकता है और एक सीमा तक पहुंचने पर रुक सकता है:<syntaxhighlight lang="d">
अनुक्रमणिका करें = प्रारंभ [सीमित करने के लिए] [वृद्धि द्वारा] [गिनती के लिए]
do index = start [to limit] [by increment] [for count]
  [निर्देश]
  [instructions]
  समाप्त
  end
वेतन वृद्धि को छोड़ा जा सकता है और 1 के लिए डिफॉल्ट किया जा सकता है। सीमा को भी छोड़ा जा सकता है, जिससे लूप हमेशा के लिए जारी रहता है।
</syntaxhighlight>वेतन वृद्धि को छोड़ा जा सकता है और 1 के लिए डिफॉल्ट किया जा सकता है। सीमा को भी छोड़ा जा सकता है, जिससे लूप हमेशा के लिए जारी रहता है।


रेक्स गिने हुए लूप की अनुमति देता है, जहां लूप की शुरुआत में एक एक्सप्रेशन की गणना की जाती है और लूप के भीतर के निर्देशों को कई बार निष्पादित किया जाता है:
रेक्स गिने हुए लूप की अनुमति देता है, जहां लूप की प्रारंभ में एक एक्सप्रेशन की गणना की जाती है और लूप के भीतर के निर्देशों को कई बार निष्पादित किया जाता है:<syntaxhighlight lang="d">
 
  do expression
<वाक्यविन्यास हाइलाइट लैंग = रेक्स शैली = पृष्ठभूमि-रंग: #ffffff; महत्वपूर्ण>
  [instructions]
  अभिव्यक्ति करो
  end
  [निर्देश]
</syntaxhighlight>कार्यक्रम समाप्त होने तक रेक्स भी लूप कर सकता है:<syntaxhighlight lang="d">
  समाप्त
  do forever
</वाक्यविन्यास हाइलाइट>
  [instructions]
 
  end
कार्यक्रम समाप्त होने तक रेक्स भी लूप कर सकता है:
</syntaxhighlight><code>leave</code> निर्देश के साथ एक प्रोग्राम वर्तमान लूप से बाहर निकल सकता है, जो <code>do forever</code> लूप से बाहर निकलने का सामान्य विधि है, या <code>iterate</code> निर्देश के साथ शॉर्ट-सर्किट कर सकता है।
 
<वाक्यविन्यास हाइलाइट लैंग = रेक्स शैली = पृष्ठभूमि-रंग: #ffffff; महत्वपूर्ण>
  हमेशा के लिए करो
  [निर्देश]
  समाप्त
</वाक्यविन्यास हाइलाइट>
 
<code>leave</code> निर्देश के साथ एक प्रोग्राम वर्तमान लूप से बाहर निकल सकता है, जो <code>do forever</code> लूप से बाहर निकलने का सामान्य विधि है, या <code>iterate</code> निर्देश के साथ शॉर्ट-सर्किट कर सकता है।


==== संयुक्त लूप्स ====
==== संयुक्त लूप्स ====
PL/I की तरह, रेक्स सशर्त और दोहराए जाने वाले दोनों तत्वों को एक ही लूप में संयोजित करने की अनुमति देता है:<ref name="TRL">{{cite book |title=द रेक्स लैंग्वेज - ए प्रैक्टिकल एप्रोच टू प्रोग्रामिंग|author=M. F. Cowlishaw |author-link=Mike Cowlishaw |isbn=0-13-780651-5 |publisher=[[Prentice Hall]] |edition=2nd |year=1990}}</ref>
PL/I की तरह, रेक्स सशर्त और दोहराए जाने वाले दोनों तत्वों को एक ही लूप में संयोजित करने की अनुमति देता है:<ref name="TRL">{{cite book |title=द रेक्स लैंग्वेज - ए प्रैक्टिकल एप्रोच टू प्रोग्रामिंग|author=M. F. Cowlishaw |author-link=Mike Cowlishaw |isbn=0-13-780651-5 |publisher=[[Prentice Hall]] |edition=2nd |year=1990}}</ref><syntaxhighlight lang="d">
 
  do index = start [to limit] [by increment] [for count] [while condition]
<वाक्यविन्यास हाइलाइट लैंग = रेक्स शैली = पृष्ठभूमि-रंग: #ffffff; महत्वपूर्ण>
  [instructions]
  अनुक्रमणिका करें = प्रारंभ [सीमित करने के लिए] [वृद्धि द्वारा] [गिनती के लिए] [जबकि स्थिति]
  end
  [निर्देश]
  do expression [until condition]
  समाप्त
  [instructions]
</वाक्यविन्यास हाइलाइट>
  end
 
</syntaxhighlight>
<वाक्यविन्यास हाइलाइट लैंग = रेक्स शैली = पृष्ठभूमि-रंग: #ffffff; महत्वपूर्ण>
  अभिव्यक्ति करो [शर्त तक]
  [निर्देश]
  समाप्त
</वाक्यविन्यास हाइलाइट>


=== सशर्त ===
=== सशर्त ===


<code>IF</code>के साथ परीक्षण की स्थिति :
<code>IF</code>के साथ परीक्षण की स्थिति:<syntaxhighlight lang="d">
 
if [condition] then
<वाक्यविन्यास हाइलाइट लैंग = रेक्स शैली = पृष्ठभूमि-रंग: #ffffff; महत्वपूर्ण>
  do
अगर [शर्त] तो
  [instructions]
  करना
  end
  [निर्देश]
  else
  समाप्त
  do
  वरना
  [instructions]
  करना
  end
  [निर्देश]
</syntaxhighlight><code>ELSE</code> The E> section is optional.
  समाप्त
</वाक्यविन्यास हाइलाइट> <code>ELSE</code> ई> खंड वैकल्पिक है।
 
एकल निर्देशों के लिए, <code>DO</code> तथा <code>END</code> छोड़ा भी जा सकता है:
 
<वाक्यविन्यास हाइलाइट लैंग = रेक्स शैली = पृष्ठभूमि-रंग: #ffffff; महत्वपूर्ण>
अगर [शर्त] तो
[निर्देश]
वरना
[निर्देश]
</वाक्यविन्यास हाइलाइट>


इंडेंटेशन वैकल्पिक है, लेकिन यह पठनीयता में सुधार करने में सहायता करता है।
एकल निर्देशों के लिए, <code>DO</code> तथा <code>END</code> छोड़ा भी जा सकता है:<syntaxhighlight lang="d">
if [condition] then
[instruction]
else
[instruction]
</syntaxhighlight>इंडेंटेशन वैकल्पिक है, लेकिन यह पठनीयता में सुधार करने में सहायता करता है।


=== कई स्थितियों के लिए परीक्षण ===
=== कई स्थितियों के लिए परीक्षण ===


<code>SELECT</code> रेक्स का [[स्विच स्टेटमेंट]] है, जैसे PL/I से प्राप्त कई अन्य निर्माण। अन्य गतिशील भाषाओं में CASE निर्माण के कुछ कार्यान्वयनों की तरह, Rexx का <code>WHEN</code> क्लॉज़ पूरी शर्तों को निर्दिष्ट करता है, जिनका एक दूसरे से संबंधित होने की आवश्यकता नहीं है। उसमें, वे C या Java <code>switch</code> स्टेटमेंट की तुलना में <code>IF-THEN-ELSEIF-THEN-...-ELSE</code> कोड के कैस्केड सेट की तरह अधिक हैं।
<code>SELECT</code> रेक्स का [[स्विच स्टेटमेंट]] है, जैसे PL/I से प्राप्त कई अन्य निर्माण। अन्य गतिशील भाषाओं में CASE निर्माण के कुछ कार्यान्वयनों की तरह, Rexx का <code>WHEN</code> क्लॉज़ पूरी शर्तों को निर्दिष्ट करता है, जिनका एक दूसरे से संबंधित होने की आवश्यकता नहीं है। उसमें, वे C या Java <code>switch</code> स्टेटमेंट की तुलना में <code>IF-THEN-ELSEIF-THEN-...-ELSE</code> कोड के कैस्केड सेट की तरह अधिक हैं।<syntaxhighlight lang="d">
 
select
<वाक्यविन्यास हाइलाइट लैंग = रेक्स शैली = पृष्ठभूमि-रंग: #ffffff; महत्वपूर्ण>
  when [condition] then
चुनते हैं
  [instruction] or NOP
  जब [हालत] तब
  when [condition] then
  [निर्देश] या एनओपी
  do
  जब [हालत] तब
  [instructions] or NOP
  करना
  end
  [निर्देश] या एनओपी
  otherwise
  समाप्त
  [instructions] or NOP
  अन्यथा
  end
  [निर्देश] या एनओपी
</syntaxhighlight><code>NOP</code> e> निर्देश कोई ऑपरेशन नहीं करता है, और इसका उपयोग तब किया जाता है जब प्रोग्रामर कुछ भी नहीं करना चाहता है जहां एक या अधिक निर्देशों की आवश्यकता होती है।
  समाप्त
</वाक्यविन्यास हाइलाइट> <code>NOP</code> e> निर्देश कोई ऑपरेशन नहीं करता है, और इसका उपयोग तब किया जाता है जब प्रोग्रामर कुछ भी नहीं करना चाहता है जहां एक या अधिक निर्देशों की आवश्यकता होती है।


अन्यथा खंड वैकल्पिक है। यदि छोड़ दिया जाता है और कोई WHEN शर्तें पूरी नहीं होती हैं, तो SYNTAX की स्थिति बढ़ जाती है।
अन्यथा खंड वैकल्पिक है। यदि छोड़ दिया जाता है और कोई WHEN शर्तें पूरी नहीं होती हैं, तो SYNTAX की स्थिति बढ़ जाती है।


=== सरल चर ===
=== सरल वेरिएबल्स ===


रेक्स में वेरिएबल्स टाइपलेस हैं, और शुरुआत में अपर केस में उनके नाम के रूप में मूल्यांकन किया जाता है। इस प्रकार कार्यक्रम में इसके उपयोग के साथ एक चर का प्रकार भिन्न हो सकता है:
रेक्स में वेरिएबल्स टाइपलेस हैं, और प्रारंभ में अपर केस में उनके नाम के रूप में मूल्यांकन किया जाता है। इस प्रकार कार्यक्रम में इसके उपयोग के साथ एक वेरिएबल्स का प्रकार भिन्न हो सकता है:<syntaxhighlight lang="d">
say hello /* => HELLO */
hello = 25
say hello /* => 25 */
hello = "say 5 + 3"
say hello /* => say 5 + 3 */
interpret hello /* => 8 */
drop hello
say hello /* => HELLO */
</syntaxhighlight>


<वाक्यविन्यास लैंग = रेक्स>
=== यौगिक वेरिएबल्स ===
नमस्ते कहो /* => नमस्कार */
नमस्ते = 25
नमस्ते कहो /* => 25 */
हैलो = 5 + 3 कहो
हैलो कहें /* => कहें 5 + 3 */
व्याख्या हैलो /* => 8 */
ड्रॉप हैलो
नमस्ते कहो /* => नमस्कार */
</वाक्यविन्यास हाइलाइट>


=== यौगिक चर ===
कई अन्य प्रोग्रामिंग भाषाओं के विपरीत, पारंपरिक रेक्स के पास संख्यात्मक सूचकांक द्वारा संबोधित वेरिएबल्स के सरणियों के लिए कोई प्रत्यक्ष समर्थन नहीं है। इसके अतिरिक्त यह यौगिक वेरिएबल्स प्रदान करता है।<ref>{{Cite web|url=http://www.uic.edu/depts/accc/software/regina/rexxrule.html#p02h24|title=Rexx के लिए अंगूठे के छह नियम}}</ref> एक मिश्रित वेरिएबल्स में एक तना होता है जिसके बाद एक पूंछ होती है। ए । (डॉट) का उपयोग stem को पूंछ से जोड़ने के लिए किया जाता है। यदि उपयोग की जाने वाली पूंछ संख्यात्मक हैं, तो सरणी के समान प्रभाव उत्पन्न करना आसान है।
<syntaxhighlight lang="REXX" style="background-color: #ffffff; !important">
do i = 1 to 10
stem.i = 10 - i
end
</syntaxhighlight>
बाद में निम्न मान वाले निम्न वेरिएबल्स <code>stem.1 = 9, stem.2 = 8, stem.3 = 7</code>... उपस्थित हैं:


कई अन्य प्रोग्रामिंग भाषाओं के विपरीत, पारंपरिक रेक्स के पास संख्यात्मक सूचकांक द्वारा संबोधित चर के सरणियों के लिए कोई प्रत्यक्ष समर्थन नहीं है। इसके अतिरिक्त यह यौगिक चर प्रदान करता है।<ref>{{Cite web|url=http://www.uic.edu/depts/accc/software/regina/rexxrule.html#p02h24|title=Rexx के लिए अंगूठे के छह नियम}}</ref> एक मिश्रित चर में एक तना होता है जिसके बाद एक पूंछ होती है। ए । (डॉट) का उपयोग तने को पूंछ से जोड़ने के लिए किया जाता है। यदि उपयोग की जाने वाली पूंछ संख्यात्मक हैं, तो सरणी के समान प्रभाव उत्पन्न करना आसान है।
सरणियों के विपरीत, स्टेम वेरिएबल्स के सूचकांक के लिए पूर्णांक मान होना आवश्यक नहीं है। उदाहरण के लिए, निम्न कोड मान्य है:


<वाक्यविन्यास हाइलाइट लैंग = रेक्स शैली = पृष्ठभूमि-रंग: #ffffff; महत्वपूर्ण>
<syntax lang=rex>
  क्या मैं = 1 से 10
  i = 'Monday'                                                                                            stem.i = 2
स्टेम.आई = 10 - आई
</syntax highlight>
समाप्त
</वाक्यविन्यास हाइलाइट>


बाद में निम्न मान वाले निम्न चर <code>stem.1 = 9, stem.2 = 8, stem.3 = 7</code>... उपस्थित हैं:
रेक्स में स्टेम के लिए डिफ़ॉल्ट मान सेट करना भी संभव है।


सरणियों के विपरीत, स्टेम चर के सूचकांक के लिए पूर्णांक मान होना आवश्यक नहीं है। उदाहरण के लिए, निम्न कोड मान्य है:
<syntaxhighlight lang="REXX">
 
  i = 'Monday'
<वाक्यविन्यास लैंग = रेक्स>
  stem.i = 2
  मैं = 'सोमवार'
</syntaxhighlight>
  स्टेम.आई = 2
</वाक्यविन्यास हाइलाइट>
 
रेक्स में स्टेम के लिए डिफ़ॉल्ट मान सेट करना भी संभव है।


<वाक्यविन्यास लैंग = रेक्स>
तना। = 'अज्ञात'
स्टेम.1 = 'यूएसए'
स्टेम.44 = 'यूके'
स्टेम.33 = 'फ्रांस'
</वाक्यविन्यास हाइलाइट>


इन कार्यों के बाद कार्यकाल <code>stem.3</code> उत्पादन करेगा <code>'Unknown'</code>.
इन कार्यों के बाद कार्यकाल <code>stem.3</code> उत्पादन करेगा <code>'Unknown'</code>.


DROP स्टेटमेंट से पूरे तने को भी मिटाया जा सकता है।
DROP स्टेटमेंट से पूरे stem को भी मिटाया जा सकता है।
 
<वाक्यविन्यास लैंग = रेक्स>
ड्रॉप तना।
</वाक्यविन्यास हाइलाइट>


<syntaxhighlight lang="REXX">
stem. = 'Unknown'
stem.1 = 'USA'
stem.44 = 'UK'
stem.33 = 'France'
</syntaxhighlight>
यह पहले से सेट किए गए किसी भी डिफ़ॉल्ट मान को हटाने का प्रभाव भी रखता है।
यह पहले से सेट किए गए किसी भी डिफ़ॉल्ट मान को हटाने का प्रभाव भी रखता है।


परिपाटी के अनुसार (और भाषा के हिस्से के रूप में नहीं) यौगिक <code>stem.0</code> का उपयोग अक्सर एक स्टेम में कितने आइटम हैं इसका ट्रैक रखने के लिए प्रयोग किया जाता है, उदाहरण के लिए सूची में एक शब्द जोड़ने की प्रक्रिया को इस तरह कोडित किया जा सकता है:
परिपाटी के अनुसार (और भाषा के हिस्से के रूप में नहीं) यौगिक <code>stem.0</code> का उपयोग अधिकांश एक स्टेम में कि stem आइटम हैं इसका ट्रैक रखने के लिए प्रयोग किया जाता है, उदाहरण के लिए सूची में एक शब्द जोड़ने की प्रक्रिया को इस तरह कोडित किया जा सकता है:


<वाक्यविन्यास लैंग = रेक्स>
मिश्रित वेरिएबल्स के पुच्छ में अनेक तत्वों का होना भी संभव है। उदाहरण के लिए:
  add_word: प्रक्रिया शब्दकोश को उजागर करती है।
<syntaxhighlight lang="REXX">
पार्स आर्ग डब्ल्यू
  drop stem.
एन = शब्दकोश.0 + 1
</syntaxhighlight>
डिक्शनरी.एन = डब्ल्यू
शब्दकोश.0 = एन
वापसी
</वाक्यविन्यास हाइलाइट>


मिश्रित चर के पुच्छ में अनेक तत्वों का होना भी संभव है। उदाहरण के लिए:


<वाक्यविन्यास लैंग = रेक्स>
बहु-आयामी सरणी के प्रभाव को प्रदान करने के लिए एकाधिक संख्यात्मक पूंछ तत्वों का उपयोग किया जा सकता है।
एम = 'जुलाई'
डी = 15
वाई = 2005
day.y.m.d = 'शुक्रवार'
</वाक्यविन्यास हाइलाइट>


बहु-आयामी सरणी के प्रभाव को प्रदान करने के लिए एकाधिक संख्यात्मक पूंछ तत्वों का उपयोग किया जा सकता है।
रेक्स यौगिक वेरिएबल्स के समान सुविधाएँ कई अन्य भाषाओं में पाई जाती हैं (AWK प्रोग्रामिंग भाषा में साहवेरिएबल्स्य सरणियों सहित, पर्ल में [[हैश टेबल]] और जावा (प्रोग्रामिंग भाषा) में हैशटेबल्स)। इनमें से अधिकतर भाषाएं इस तरह के निर्माण के सभी चाबियों (या रेक्स शर्तों में पूंछ) पर पुनरावृति करने के लिए एक निर्देश प्रदान करती हैं, लेकिन पारंपरिक रेक्स में इसकी कमी है। इसके अतिरिक्त पूंछ मूल्यों की सहायक सूचियों को उपयुक्त रखना आवश्यक है। उदाहरण के लिए, किसी प्रोग्राम में शब्दों की गिनती करने के लिए किसी शब्द की प्रत्येक घटना को रिकॉर्ड करने के लिए निम्नलिखित प्रक्रिया का उपयोग किया जा सकता है।


रेक्स यौगिक चर के समान सुविधाएँ कई अन्य भाषाओं में पाई जाती हैं (AWK प्रोग्रामिंग भाषा में साहचर्य सरणियों सहित, पर्ल में [[हैश टेबल]] और जावा (प्रोग्रामिंग भाषा) में हैशटेबल्स)। इनमें से अधिकतर भाषाएं इस तरह के निर्माण के सभी चाबियों (या रेक्स शर्तों में पूंछ) पर पुनरावृति करने के लिए एक निर्देश प्रदान करती हैं, लेकिन पारंपरिक रेक्स में इसकी कमी है। इसके अतिरिक्त पूंछ मूल्यों की सहायक सूचियों को उपयुक्त रखना आवश्यक है। उदाहरण के लिए, किसी प्रोग्राम में शब्दों की गिनती करने के लिए किसी शब्द की प्रत्येक घटना को रिकॉर्ड करने के लिए निम्नलिखित प्रक्रिया का उपयोग किया जा सकता है।


<वाक्यविन्यास हाइलाइट लैंग = रेक्स शैली = पृष्ठभूमि-रंग: #ffffff; महत्वपूर्ण>
<syntaxhighlight lang="REXX">
  add_word: प्रक्रिया एक्सपोज़ गिनती। शब्द सूची
  add_word: procedure expose dictionary.
  पार्स आर्ग डब्ल्यू।
  parse arg w
  काउंट.डब्ल्यू = काउंट.डब्ल्यू + 1 /* काउंट मान लें। 0 */ पर सेट किया गया है
  n = dictionary.0 + 1
  अगर गिनती.w = 1 तो word_list = word_list w
  dictionary.n = w
  वापसी
dictionary.0 = n
</वाक्यविन्यास हाइलाइट>
  return
</syntaxhighlight>


और फिर बाद में:
और फिर बाद में:


<वाक्यविन्यास हाइलाइट लैंग = रेक्स शैली = पृष्ठभूमि-रंग: #ffffff; महत्वपूर्ण>
<syntaxhighlight lang="REXX">
  क्या मैं = 1 शब्दों के लिए (word_list)
  m = 'July'
  डब्ल्यू = शब्द (शब्द_सूची, मैं)
  d = 15
  डब्ल्यू काउंट डब्ल्यू कहें
  y = 2005
  समाप्त
  day.y.m.d = 'Friday'
</वाक्यविन्यास हाइलाइट>
</syntaxhighlight>
 


कुछ स्पष्टता की कीमत पर इन तकनीकों को एक ही तने में संयोजित करना संभव है:
कुछ स्पष्टता की मूल्य पर इन तकनीकों को एक ही stem में संयोजित करना संभव है:


<वाक्यविन्यास हाइलाइट लैंग = रेक्स शैली = पृष्ठभूमि-रंग: #ffffff; महत्वपूर्ण>
<syntaxhighlight lang="REXX" style="background-color: #ffffff; !important">
  add_word: प्रक्रिया शब्दकोश को उजागर करती है।
  add_word: procedure expose count. word_list
  पार्स आर्ग डब्ल्यू।
  parse arg w .
  डिक्शनरी.डब्ल्यू = डिक्शनरी.डब्ल्यू + 1
  count.w = count.w + 1 /* assume count. has been set to 0 */
अगर Dictionary.w = 1 /* डिक्शनरी मान लें। = 0 */
  if count.w = 1 then word_list = word_list w
  फिर करो
  return
एन = शब्दकोश.0 + 1
</syntaxhighlight>
डिक्शनरी.एन = डब्ल्यू
शब्दकोश.0 = एन
समाप्त
  वापसी
</वाक्यविन्यास हाइलाइट>


और बाद में:
और बाद में:


<वाक्यविन्यास हाइलाइट लैंग = रेक्स शैली = पृष्ठभूमि-रंग: #ffffff; महत्वपूर्ण>
<syntaxhighlight lang="REXX" style="background-color: #ffffff; !important">
  do i = 1 to dictionary.0
  do i = 1 to words(word_list)
  डब्ल्यू = डिक्शनरी.आई
  w = word(word_list,i)
  कहो मैं w dictionary.w
  say w count.w
  समाप्त
  end
</वाक्यविन्यास हाइलाइट>
</syntaxhighlight>


रेक्स यहां कोई सुरक्षा जाल प्रदान नहीं करता है, इसलिए यदि कोई एक शब्द <code>dictionary.0</code> से कम होता है  यह तकनीक रहस्यमय तरीके से विफल हो जाएगी।
रेक्स यहां कोई सुरक्षा जाल प्रदान नहीं करता है, इसलिए यदि कोई एक शब्द <code>dictionary.0</code> से कम होता है  यह तकनीक रहस्यपूर्ण रूप से विफल हो जाएगी।


IBM के ऑब्जेक्ट रेक्स सहित रेक्स के हाल के कार्यान्वयन और oorexx जैसे ओपन सोर्स कार्यान्वयन में स्टेम के मान पर पुनरावृत्ति को सरल बनाने के लिए एक नई भाषा का निर्माण शामिल है, या किसी अन्य संग्रह वस्तु जैसे कि सरणी, तालिका या सूची पर।
IBM के ऑब्जेक्ट रेक्स सहित रेक्स के हाल के कार्यान्वयन और oorexx जैसे ओपन सोर्स कार्यान्वयन में स्टेम के मान पर पुनरावृत्ति को सरल बनाने के लिए एक नई भाषा का निर्माण सम्मिलित है, या किसी अन्य संग्रह वस्तु जैसे कि सरणी, तालिका या सूची पर।


<वाक्यविन्यास हाइलाइट लैंग = ooरेक्स शैली = पृष्ठभूमि-रंग: #ffffff; महत्वपूर्ण>
<syntaxhighlight lang="rexx" style="background-color: #ffffff; !important">
क्या मैं तने के ऊपर हूं।
  do i over stem.
कहो मैं '-->' स्टेम.आई
  say i '-->' stem.i
समाप्त
</वाक्यविन्यास हाइलाइट>
 
=== कीवर्ड निर्देश ===
 
==== पार्स ==== <code>PARSE</code> ई> निर्देश विशेष रूप से शक्तिशाली है; यह कुछ उपयोगी स्ट्रिंग-हैंडलिंग फ़ंक्शंस को जोड़ती है। इसका सिंटैक्स है:
 
<वाक्यविन्यास लैंग = रेक्स>
पार्स [ऊपरी] मूल [टेम्पलेट]
</वाक्यविन्यास हाइलाइट>
 
जहां मूल स्रोत निर्दिष्ट करता है:
 
* <code>arg</code> (तर्क, कमांड लाइन के शीर्ष स्तर की पूंछ पर)
* <code>linein</code> (मानक इनपुट, जैसे कीबोर्ड)
* <code>pull</code> (रेक्स डेटा कतार या मानक इनपुट)
* <code>source</code> (कार्यक्रम को कैसे क्रियान्वित किया गया, इसकी जानकारी)
* <code>value</code> (एक अभिव्यक्ति) <code>with</code>: कीवर्ड <code>with</code> यह इंगित करना आवश्यक है कि अभिव्यक्ति कहाँ समाप्त होती है
* <code>var</code> (एक परिवर्तनीय)
* <code>version</code> (संस्करण/रिलीज़ नंबर)
 
और टेम्पलेट हो सकता है:
 
* चर की सूची
* स्तंभ संख्या सीमांकक
* शाब्दिक सीमांकक
 
<code>upper</code> वैकल्पिक है; यदि निर्दिष्ट किया गया है, तो पार्स करने से पहले डेटा अपर केस में परिवर्तित हो जाएगा।
 
उदाहरण:
 
टेम्पलेट के रूप में चरों की सूची का उपयोग करना
 
<वाक्यविन्यास हाइलाइट लैंग = रेक्स शैली = पृष्ठभूमि-रंग: #ffffff; महत्वपूर्ण>
myVar = जॉन स्मिथ
पार्स var myVar firstName lastName
पहला नाम है: पहला नाम
कहें अंतिम नाम है: lastName
</वाक्यविन्यास हाइलाइट>
 
निम्नलिखित प्रदर्शित करता है:
 
<पूर्व>
पहला नाम है: जॉन
अंतिम नाम है: स्मिथ
</पूर्व>
 
टेम्पलेट के रूप में सीमांकक का उपयोग करना:
 
<वाक्यविन्यास लैंग = रेक्स>
myVar = स्मिथ, जॉन
पार्स var myVar LastName , FirstName
पहला नाम है: पहला नाम
कहें अंतिम नाम है: lastName
</वाक्यविन्यास हाइलाइट>
 
निम्नलिखित भी प्रदर्शित करता है:
 
<पूर्व>
पहला नाम है: जॉन
अंतिम नाम है: स्मिथ
</पूर्व>
 
स्तंभ संख्या सीमांकक का उपयोग करना:
 
<वाक्यविन्यास लैंग = रेक्स>
मायवर = (202) 123-1234
पार्स var MyVar 2 एरियाकोड 5 7 सबनंबर
कहते हैं एरिया कोड है: एरियाकोड
कहें सब्सक्राइबर नंबर है: सबनंबर
</वाक्यविन्यास हाइलाइट>
 
निम्नलिखित प्रदर्शित करता है:
 
<पूर्व>
क्षेत्र कोड है: 202
सब्सक्राइबर संख्या है: 123-1234
</पूर्व>
 
एक टेम्पलेट चर, शाब्दिक सीमांकक और स्तंभ संख्या सीमांकक के संयोजन का उपयोग कर सकता है।
 
==== व्याख्या ====
 
INTERPRET निर्देश अपने तर्क का मूल्यांकन करता है और इसके मान को रेक्स कथन के रूप में मानता है। कभी-कभी INTERPRET किसी कार्य को करने का सबसे स्पष्ट विधि है, लेकिन इसका उपयोग अक्सर वहाँ किया जाता है जहाँ स्पष्ट कोड का उपयोग करना संभव होता है, जैसे, <code>value()</code>.
 
INTERPRET के अन्य उपयोग रेक्स's (दशमलव) मनमाने ढंग से सटीक अंकगणित (फ़ज़ी तुलनाओं सहित), प्रोग्रामेटिक टेम्प्लेट, स्टेम्ड एरेज़ और विरल सरणियों के साथ PARSE स्टेटमेंट का उपयोग हैं।{{how|date=January 2021}}
 
<वाक्यविन्यास लैंग = रेक्स>
/* वर्ग(4) के साथ व्याख्या प्रदर्शित करें => 16 */
एक्स = 'वर्ग'
व्याख्या 'कहो' एक्स || '(4); बाहर निकलना'
स्क्वायर: वापसी तर्क (1) ** 2
</वाक्यविन्यास हाइलाइट>
 
यह 16 प्रदर्शित करता है और बाहर निकलता है। क्योंकि रेक्स में चर सामग्री स्ट्रिंग्स हैं, जिसमें एक्सपोनेंट और यहां तक ​​​​कि पूरे प्रोग्राम के साथ परिमेय संख्याएं शामिल हैं, रेक्स स्ट्रिंग्स को मूल्यांकन किए गए भावों के रूप में व्याख्या करने की प्रस्तुत करता है।
 
इस सुविधा का उपयोग फ़ंक्शन मापदंडों के रूप में कार्यों को पारित करने के लिए किया जा सकता है, जैसे कि इंटीग्रल की गणना करने के लिए SIN या COS को एक प्रक्रिया में पास करना।
 
रेक्स ABS, DIGITS, MAX, MIN, SIGN, RANDOM जैसे केवल बुनियादी गणित कार्यों और बिट संचालन के साथ हेक्स प्लस बाइनरी रूपांतरणों का एक पूरा सेट प्रदान करता है। एसआईएन जैसे अधिक जटिल कार्यों को खरोंच से लागू किया गया था या तीसरे पक्ष के बाहरी पुस्तकालय (कंप्यूटिंग) से प्राप्त किया गया था। कुछ बाहरी पुस्तकालय, विशेष रूप से पारंपरिक भाषाओं में लागू किए गए, विस्तारित परिशुद्धता का समर्थन नहीं करते थे।
 
बाद के संस्करण (गैर-पारंपरिक) <code>CALL variable</code> निर्माणों का समर्थन करते हैं। साथ में बिल्ट-इन फ़ंक्शन <code>VALUE</code>, CALL के कई मामलों के स्थान पर उपयोग किया जा सकता है <code>INTERPRET</code>. यह एक पारंपरिक प्रोग्राम है:
 
<वाक्यविन्यास हाइलाइट लैंग = रेक्स शैली = पृष्ठभूमि-रंग: #ffffff; महत्वपूर्ण>
/ * इनपुट निकास या इसी तरह से समाप्त * /
हमेशा के लिए करो; लाइनिन की व्याख्या करें (); समाप्त
</वाक्यविन्यास हाइलाइट>
 
थोड़ा और परिष्कृत रेक्स कैलकुलेटर:
 
<वाक्यविन्यास हाइलाइट लैंग = रेक्स शैली = पृष्ठभूमि-रंग: #ffffff; महत्वपूर्ण>
एक्स = 'छोड़ने के लिए अलविदा इनपुट'
X = 'BYE' तक करें; व्याख्या 'कहो' एक्स; एक्स खींचो; समाप्त
</वाक्यविन्यास हाइलाइट>
 
<code>PULL</code> के लिए आशुलिपि है <code>parse upper pull</code>. वैसे ही, <code>ARG</code> के लिए आशुलिपि है <code>parse upper arg</code>.
 
INTERPRET निर्देश की शक्ति के अन्य उपयोग थे। वेलोर (सॉफ्टवेयर) पैकेज [[वस्तु उन्मुख कार्यकर्म]] वातावरण को लागू करने के लिए रेक्स की व्याख्यात्मक क्षमता पर निर्भर था। टाइम मशीन नामक एक अप्रकाशित [[वेस्टिंगहाउस इलेक्ट्रिक (1886)]] उत्पाद में एक अन्य उपयोग पाया गया जो एक घातक त्रुटि के बाद पूरी तरह से ठीक होने में सक्षम था।
 
==== संख्यात्मक ====
 
<वाक्यविन्यास लैंग = रेक्स>
अंक कहें () फ़ज़ () फॉर्म () /* => 9 0 वैज्ञानिक */
कहें 999999999+1 /* => 1.000000000E+9 */
संख्यात्मक अंक 10 /* केवल उपलब्ध स्मृति द्वारा सीमित */
कहें 999999999+1 /* => 1000000000 */
 
कहें 0.9999999999=1 /* => 0 (गलत) */
संख्यात्मक फ़ज़ 3
कहें 0.99999999=1 /* => 1 (सच) */
कहते हैं 0.99999999==1 /* => 0 (गलत) */
 
कहें 100*123456789 /* => 1.23456789E+10 */
संख्यात्मक रूप इंजीनियरिंग
कहें 100*123456789 /* => 12.34567890E+9 */
 
कहें 53 // 7 /* => 4 (शेष विभाजन)*/
</वाक्यविन्यास हाइलाइट>
{|class="wikitable"
! &nbsp;
! √2 की गणना करता है
! {{mvar|[[e (mathematical constant)|e]]}} की गणना करता है
|-valign="top"
! कोड
|<syntaxhighlight lang="REXX" style="background-color: #ffffff; !important">
numeric digits 50
n=2
r=1
  do forever /* Newton's method */
rr=(n/r+r)/2
if r=rr then leave
r=rr
end
  say "sqrt" n ' = ' r
</syntaxhighlight>
|<syntaxhighlight lang="REXX" style="background-color: #ffffff; !important">
numeric digits 50
e=2.5
f=0.5
do n=3
f=f/n
ee=e+f
if e=ee then leave
e=ee
  end
  end
say "e =" e
</syntaxhighlight>
</syntaxhighlight>
|-
! आउटपुट
| {{samp|1= sqrt 2 = 1.414213562373095048801688724209698078569671875377}}
| {{samp|1= e = 2.7182818284590452353602874713526624977572470936998}}
|}


[[Category:1979 में बनाई गई प्रोग्रामिंग भाषा]]
[[Category:All articles containing potentially dated statements]]
[[Category:Articles containing potentially dated statements from January 2017]]
[[Category:Articles with invalid date parameter in template]]
[[Category:Collapse templates]]
[[Category:Commons category link is locally defined]]
[[Category:Created On 30/11/2022]]
[[Category:Lua-based templates]]
[[Category:Machine Translated Page]]
[[Category:Navigational boxes| ]]
[[Category:Navigational boxes without horizontal lists]]
[[Category:Pages with broken file links]]
[[Category:Pages with empty portal template]]
[[Category:Pages with reference errors]]
[[Category:Pages with script errors]]
[[Category:Portal templates with redlinked portals]]
[[Category:Rexx]]
[[Category:Short description with empty Wikidata description]]
[[Category:Sidebars with styles needing conversion]]
[[Category:Template documentation pages|Documentation/doc]]
[[Category:Templates Vigyan Ready]]
[[Category:Templates generating microformats]]
[[Category:Templates that add a tracking category]]
[[Category:Templates that are not mobile friendly]]
[[Category:Templates that generate short descriptions]]
[[Category:Templates using TemplateData]]
[[Category:Wikipedia articles needing clarification from January 2021]]
[[Category:Wikipedia metatemplates]]
[[Category:आईबीएम मेनफ्रेम ऑपरेटिंग सिस्टम]]
[[Category:आईबीएम सॉफ्टवेयर]]
[[Category:कमांड शैल]]
[[Category:क्रॉस-प्लेटफ़ॉर्म सॉफ़्टवेयर]]
[[Category:पाठ-उन्मुख प्रोग्रामिंग भाषाएं]]
[[Category:स्क्रिप्टिंग भाषाएं]]


==== संकेत ====


सिग्नल निर्देश नियंत्रण के प्रवाह में असामान्य परिवर्तन के लिए अभिप्रेत है (अगला खंड देखें)। हालाँकि, इसका दुरुपयोग किया जा सकता है और अन्य भाषाओं में पाए जाने वाले [[GOTO]] स्टेटमेंट की तरह व्यवहार किया जा सकता है (हालाँकि यह प्रभुत्व से समतुल्य नहीं है, क्योंकि यह लूप और अन्य निर्माणों को समाप्त करता है)। यह पढ़ने में जटिल कोड उत्पन्न कर सकता है।


=== त्रुटि से निपटने और अपवाद ===
[[Category:1979 में बनाई गई प्रोग्रामिंग भाषा]]
[[Category:All articles containing potentially dated statements]]
[[Category:Articles containing potentially dated statements from January 2017]]
[[Category:Articles with invalid date parameter in template]]
[[Category:Collapse templates]]
[[Category:Commons category link is locally defined]]
[[Category:Created On 30/11/2022]]
[[Category:Lua-based templates]]
[[Category:Machine Translated Page]]
[[Category:Navigational boxes| ]]
[[Category:Navigational boxes without horizontal lists]]
[[Category:Pages with broken file links]]
[[Category:Pages with empty portal template]]
[[Category:Pages with reference errors]]
[[Category:Pages with script errors]]
[[Category:Portal templates with redlinked portals]]
[[Category:Rexx]]
[[Category:Short description with empty Wikidata description]]
[[Category:Sidebars with styles needing conversion]]
[[Category:Template documentation pages|Documentation/doc]]
[[Category:Templates Vigyan Ready]]
[[Category:Templates generating microformats]]
[[Category:Templates that add a tracking category]]
[[Category:Templates that are not mobile friendly]]
[[Category:Templates that generate short descriptions]]
[[Category:Templates using TemplateData]]
[[Category:Wikipedia articles needing clarification from January 2021]]
[[Category:Wikipedia metatemplates]]
[[Category:आईबीएम मेनफ्रेम ऑपरेटिंग सिस्टम]]
[[Category:आईबीएम सॉफ्टवेयर]]
[[Category:कमांड शैल]]
[[Category:क्रॉस-प्लेटफ़ॉर्म सॉफ़्टवेयर]]
[[Category:पाठ-उन्मुख प्रोग्रामिंग भाषाएं]]
[[Category:स्क्रिप्टिंग भाषाएं]]


रेक्स में SIGNAL निर्देश का उपयोग करके त्रुटियों और अन्य अपवादों को रोकना और उनसे निपटना संभव है। सात सिस्टम कंडीशन हैं: एरर, फेल्योर, हॉल्ट, नोवैल्यू, नोट्रेडी, लॉस्टडिजिट्स और सिंटेक्स। स्रोत कोड में वांछित के रूप में प्रत्येक की हैंडलिंग को चालू और बंद किया जा सकता है।


उपयोगकर्ता द्वारा समाप्त किए जाने तक निम्न प्रोग्राम चलेगा:


<वाक्यविन्यास हाइलाइट लैंग = रेक्स शैली = पृष्ठभूमि-रंग: #ffffff; महत्वपूर्ण>
[[Category:1979 में बनाई गई प्रोग्रामिंग भाषा]]
रुकने का संकेत;
[[Category:All articles containing potentially dated statements]]
ए = 1 करो
[[Category:Articles containing potentially dated statements from January 2017]]
ए कहो
[[Category:Articles with invalid date parameter in template]]
100000 /* देरी से करें */
[[Category:Collapse templates]]
 
[[Category:Commons category link is locally defined]]
समाप्त
[[Category:Created On 30/11/2022]]
समाप्त
[[Category:Lua-based templates]]
पड़ाव:
[[Category:Machine Translated Page]]
कार्यक्रम उपयोगकर्ता द्वारा बंद कर दिया गया था
[[Category:Navigational boxes| ]]
बाहर निकलना
[[Category:Navigational boxes without horizontal lists]]
</वाक्यविन्यास हाइलाइट>
[[Category:Pages with broken file links]]
 
[[Category:Pages with empty portal template]]
A <syntaxhighlight lang= REXX inline>signal on novalue</syntaxhighlight> कथन अपरिभाषित चरों के उपयोग को रोकता है, जो अन्यथा उनके मूल्य के रूप में अपना (अपर केस) नाम प्राप्त करेंगे। <code>NOVALUE</code> स्थिति की स्थिति के अतिरिक्त, एक चर की स्थिति को परिभाषित चर के लिए अंतर्निहित फ़ंक्शन <code>SYMBOL</code> रिटर्निंग VAR के साथ हमेशा जांचा जा सकता है।
[[Category:Pages with reference errors]]
 
[[Category:Pages with script errors]]
<code>VALUE</code> e> फ़ंक्शन का उपयोग <code>NOVALUE</code> स्थिति को ट्रिगर किए बिना चर का मान प्राप्त करने के लिए किया जा सकता है, लेकिन इसका मुख्य उद्देश्य [[POSIX]] <code>getenv</code> और <code>putenv</code> के समान env (शेल) चर को पढ़ना और सेट करना है।
[[Category:Portal templates with redlinked portals]]
 
[[Category:Rexx]]
==== शर्तें ====
[[Category:Short description with empty Wikidata description]]
 
[[Category:Sidebars with styles needing conversion]]
; <code>ERROR</code>
[[Category:Template documentation pages|Documentation/doc]]
: सिस्टम कमांड से सकारात्मक आरसी
[[Category:Templates Vigyan Ready]]
; <code>FAILURE</code>
[[Category:Templates generating microformats]]
: सिस्टम कमांड के लिए नेगेटिव आरसी (जैसे कमांड उपस्थित नहीं है)
[[Category:Templates that add a tracking category]]
; <code>HALT</code>
[[Category:Templates that are not mobile friendly]]
: असामान्य समाप्ति
[[Category:Templates that generate short descriptions]]
; <code>NOVALUE</code>
[[Category:Templates using TemplateData]]
: एक अनसेट चर का संदर्भ दिया गया था
[[Category:Wikipedia articles needing clarification from January 2021]]
; <code>NOTREADY</code>
[[Category:Wikipedia metatemplates]]
: इनपुट या आउटपुट त्रुटि (उदाहरण फ़ाइल के अंत से परे पढ़ने के प्रयास)
[[Category:आईबीएम मेनफ्रेम ऑपरेटिंग सिस्टम]]
; <code>SYNTAX</code>
[[Category:आईबीएम सॉफ्टवेयर]]
: अमान्य प्रोग्राम सिंटैक्स, या कुछ अन्य त्रुटि स्थिति
[[Category:कमांड शैल]]
; <code>LOSTDIGITS</code>
[[Category:क्रॉस-प्लेटफ़ॉर्म सॉफ़्टवेयर]]
: महत्वपूर्ण अंक खो गए हैं (एएनएसआई रेक्स, टीआरएल दूसरे संस्करण में नहीं)
[[Category:पाठ-उन्मुख प्रोग्रामिंग भाषाएं]]
 
[[Category:स्क्रिप्टिंग भाषाएं]]
जब किसी स्थिति को <code>SIGNAL ON</code> द्वारा नियंत्रित किया जाता है, तो स्थिति को समझने के लिए <code>SIGL</code> तथा <code>RC</code> सिस्टम चर का विश्लेषण किया जा सकता है। आरसी में रेक्स त्रुटि कोड होता है और एसआईजीएल में वह पंक्ति संख्या होती है जहां त्रुटि उत्पन्न हुई थी।
 
रेक्स संस्करण 4 के साथ प्रारंभ होने वाली स्थितियों को नाम मिल सकते हैं, और एक <code>CALL ON</code> निर्माण भी है। यदि बाहरी कार्य आवश्यक रूप से मौजूद नहीं हैं तो यह आसान है:
 
<वाक्यविन्यास लैंग = रेक्स>
ChangeCodePage: कार्यविधि /* SIGNAL सेटिंग सुरक्षित करें */
सिंटैक्स नाम ChangeCodePage.Trap पर संकेत
वापसी SysQueryProcessCodePage ()
ChangeCodePage.Trap: OS/2 पर 1004 /* विंडोज-1252 लौटाएं */
</वाक्यविन्यास हाइलाइट>


== यह भी देखें ==
== यह भी देखें ==
Line 584: Line 400:
* [[आईएसपीएफ]]
* [[आईएसपीएफ]]
* एक्सईडीआईटी
* एक्सईडीआईटी
* संगणक गोले की तुलना
* कंप्यूटर गोले की तुलना
* [[प्रोग्रामिंग भाषाओं की तुलना]]
* [[प्रोग्रामिंग भाषाओं की तुलना]]


Line 623: Line 439:
* [https://www.openhub.net/languages/rexx रेक्स programming language] at [[Open Hub]]
* [https://www.openhub.net/languages/rexx रेक्स programming language] at [[Open Hub]]


{{IBM FOSS}}
[[Category:1979 में बनाई गई प्रोग्रामिंग भाषा]]
{{programming languages}}
[[Category:All articles containing potentially dated statements]]
{{Portal bar|Computer programming}}
[[Category:Articles containing potentially dated statements from January 2017]]
 
[[Category:Articles with invalid date parameter in template]]
{{Authority control}}
[[Category:Collapse templates]]
[[Category:Commons category link is locally defined]]
[[Category:Created On 30/11/2022]]
[[Category:Lua-based templates]]
[[Category:Machine Translated Page]]
[[Category:Navigational boxes| ]]
[[Category:Navigational boxes without horizontal lists]]
[[Category:Pages with broken file links]]
[[Category:Pages with empty portal template]]
[[Category:Pages with reference errors]]
[[Category:Pages with script errors]]
[[Category:Portal templates with redlinked portals]]
[[Category:Rexx]]
[[Category:Short description with empty Wikidata description]]
[[Category:Sidebars with styles needing conversion]]
[[Category:Template documentation pages|Documentation/doc]]
[[Category:Templates Vigyan Ready]]
[[Category:Templates generating microformats]]
[[Category:Templates that add a tracking category]]
[[Category:Templates that are not mobile friendly]]
[[Category:Templates that generate short descriptions]]
[[Category:Templates using TemplateData]]
[[Category:Wikipedia articles needing clarification from January 2021]]
[[Category:Wikipedia metatemplates]]
[[Category:आईबीएम मेनफ्रेम ऑपरेटिंग सिस्टम]]
[[Category:आईबीएम सॉफ्टवेयर]]
[[Category:आईबीएम सॉफ्टवेयर]]
[[Category: स्क्रिप्टिंग भाषाएं]]
[[Category: पाठ-उन्मुख प्रोग्रामिंग भाषाएं]]
[[Category:कमांड शैल]]
[[Category:कमांड शैल]]
[[Category:आईबीएम मेनफ्रेम ऑपरेटिंग सिस्टम]]
[[Category:क्रॉस-प्लेटफ़ॉर्म सॉफ़्टवेयर]]
[[Category:क्रॉस-प्लेटफ़ॉर्म सॉफ़्टवेयर]]
[[Category: 1979 में बनाई गई प्रोग्रामिंग भाषा]]
[[Category:पाठ-उन्मुख प्रोग्रामिंग भाषाएं]]
[[Category:Rexx]]
[[Category:स्क्रिप्टिंग भाषाएं]]
 
 
[[Category: Machine Translated Page]]
[[Category:Created On 30/11/2022]]

Latest revision as of 16:33, 2 November 2023

रेक्स (रेस्ट्रक्चर्ड एक्सटेंडेड एक्सेक्टों) एक प्रोग्रामिंग भाषा है जिसे व्याख्या (कंप्यूटिंग) या संकलित किया जा सकता है। यह आईबीएम में माइक काउलिशॉ द्वारा विकसित किया गया था।[1][2] यह एक संरचित, हाई लेवल प्रोग्रामिंग भाषा है जिसे सीखने और पढ़ने में आसानी के लिए डिज़ाइन किया गया है। कंप्यूटिंग प्लेटफॉर्म की विस्तृत श्रृंखला के लिए स्वामित्व और ओपन सोर्स सॉफ्टवेयर रेक्स इंटरप्रेटर (कंप्यूटिंग) उपस्थित है; आईबीएम मेनफ़्रेम कंप्यूटर के लिए संकलनकर्ता उपस्थित हैं।[3]

रेक्स एक पूर्ण भाषा है जिसका उपयोग स्क्रिप्टिंग भाषा, मैक्रो (कंप्यूटर विज्ञान) भाषा और अनुप्रयोग विकास भाषा के रूप में किया जा सकता है। इसका उपयोग अधिकांश डेटा और पाठ को संसाधित करने और रिपोर्ट तैयार करने के लिए किया जाता है; पर्ल के साथ इन समानताओं का अर्थ है कि रेक्स कॉमन गेटवे इंटरफ़ेस (सीजीआई) प्रोग्रामिंग में अच्छा काम करता है और यह वास्तविक में इस उद्देश्य के लिए उपयोग किया जाता है। कुछ ऑपरेटिंग सिस्टम में रेक्स प्राथमिक स्क्रिप्टिंग भाषा है, उदा। OS/2, MVS, VM (ऑपरेटिंग सिस्टम), AmigaOS, और SPF/PC, XEDIT, THE और ZOC (सॉफ़्टवेयर) टर्मिनल एमुलेटर जैसे कुछ अन्य सॉफ़्टवेयर में आंतरिक मैक्रो भाषा के रूप में भी उपयोग किया जाता है। इसके अतिरिक्त, रेक्स भाषा का उपयोग किसी भी प्रोग्राम में स्क्रिप्टिंग और मैक्रोज़ के लिए किया जा सकता है जो विंडोज स्क्रिप्टिंग होस्ट ActiveX भाषा का अंकन भाषाओं (जैसे VBScript और JScript) का उपयोग करता है यदि रेक्स इंजनों में से एक स्थापित है।

रेक्स को VM/SP रिलीज 3 ऑन अप, TSO/E संस्करण 2 ऑन अप, OS/2 (1.3 और बाद में, जहां इसे आधिकारिक रूप से प्रोसीजर्स भाषा/2 नाम दिया गया है), AmigaOS संस्करण 2 ऑन अप, PC DOS (7.0 या 2000) ArcaOS और विंडोज NT 4.0 (संसाधन किट: रेजिना) के साथ आपूर्ति की जाती है।[4] CMS के लिए रेक्स स्क्रिप्ट फ़ाइल प्रकार EXEC को EXEC और EXEC2 के साथ साझा करती है, और स्क्रिप्ट की पहली पंक्ति उपयोग किए जाने वाले इंटरप्रेटर को निर्दिष्ट करती है। MVS के लिए रेक्स स्क्रिप्ट्स हो सकती हैं[lower-alpha 1] निम्न स्तर के क्वालीफायर EXEC द्वारा पहचाना जा सकता है या हो सकता है[lower-alpha 2] संदर्भ और पहली पंक्ति से पहचाना जाना चाहिए। OS/2 के लिए रेक्स स्क्रिप्ट फ़ाइल नाम extensions .cmd को अन्य स्क्रिप्टिंग भाषाओं के साथ साझा करती है, और स्क्रिप्ट की पहली पंक्ति उपयोग किए जाने वाले इंटरप्रेटर को निर्दिष्ट करती है। रेक्स-जागरूक अनुप्रयोगों के लिए रेक्स मैक्रोज़ एप्लिकेशन द्वारा निर्धारित एक्सटेंशन का उपयोग करते हैं। 1980 के दशक के उत्तरार्ध में, रेक्स आईबीएम सिस्टम एप्लीकेशन आर्किटेक्वेरिएबल्स के लिए सामान्य स्क्रिप्टिंग भाषा बन गई, जहाँ इसका नाम परिवर्तितकर SAA प्रोसीजर भाषा रेक्स कर दिया गया है।

एक रेक्स स्क्रिप्ट या कमांड को कभी-कभी EXEC, EXEC 2[5] और CP/CMS पर रेक्स स्क्रिप्ट और z/VM के माध्यम से VM/370 के लिए उपयोग किए जाने वाले CMS प्रकार की फाइलों के लिए नोड के रूप में संदर्भित किया जाता है।[6]

सुविधाएँ

रेक्स में निम्नलिखित अभिलक्षण और विशेषताएं हैं:

  • सरल वाक्य रचना
  • कई वातावरणों में कमांड को रूट करने की क्षमता
  • कोई विशिष्ट आह्वान वातावरण से जुड़े कार्यों, प्रक्रियाओं और आदेशों का समर्थन करने की क्षमता।
  • यदि कोई बिल्ट-इन स्टैक हो तो होस्ट स्टैक के साथ इंटरऑपरेट करने की क्षमता।
  • छोटे निर्देश सेट में केवल दो दर्जन निर्देश होते हैं
  • फ्री-फॉर्म भाषा सिंटैक्स
  • वेरिएबल्स नाम सहित केस-असंवेदनशील टोकन
  • वर्ण स्ट्रिंग आधार
  • टाइप सिस्टम डायनामिक टाइपिंग, कोई घोषणा नहीं
  • स्थानीय संदर्भ को छोड़कर कोई आरक्षित शब्द नहीं
  • फ़ाइल सुविधाएं सम्मिलित नहीं हैं
  • मनमाना-सटीक अंकगणित
  • दशमलव अंकगणित, तैरनेवाला स्थल
  • अंतर्निहित कार्यों का एक समृद्ध चयन, विशेष रूप से स्ट्रिंग और वर्ड प्रोसेसिंग
  • स्वचालित भंडारण प्रबंधन
  • क्रैश सुरक्षा
  • सामग्री पता करने योग्य डेटा संरचनाएं
  • साहवेरिएबल्स्य सरणियाँ
  • सिस्टम कमांड और सुविधाओं तक सीधी पहुंच
  • आसान एरर-हैंडलिंग, और बिल्ट-इन ट्रेसिंग और डिबगर
  • कुछ कृत्रिम सीमाएँ
  • सरलीकृत I/O सुविधाएं
  • अपरंपरागत ऑपरेटरों
  • विशिष्ट कार्यान्वयन को छोड़कर केवल आंशिक रूप से यूनिक्स शैली कमांड लाइन पैरामीटर का समर्थन करता है
  • विशिष्ट कार्यान्वयनों को छोड़कर, भाषा के हिस्से के रूप में कोई आधारभूत टर्मिनल नियंत्रण प्रदान नहीं करता है
  • विशिष्ट कार्यान्वयनों को छोड़कर बाहरी पुस्तकालयों से कार्यों और सबरूटीन्स को सम्मिलित करने का कोई सामान्य विधि प्रदान नहीं करता है

रेक्स में न्यूनतम विराम चिह्न और स्वरूपण आवश्यकताओं के साथ सिर्फ तेईस, सामान्यतः स्व-स्पष्ट, निर्देश (जैसे call, parse, तथा select) हैं। यह अनिवार्य रूप से केवल एक डेटा-प्रकार, वर्ण स्ट्रिंग के साथ लगभग स्वतंत्र रूप वाली भाषा है; इस दर्शन का अर्थ है कि सभी डेटा दृश्यमान (प्रतीकात्मक) हैं और डिबगिंग और ट्रेसिंग सरल हैं।

रेक्स का सिंटैक्स PL/I के समान दिखता है, लेकिन इसमें कम संकेत हैं; इससे (कार्यक्रम द्वारा) पार्स करना कठिन हो जाता है, लेकिन उन स्थितियों को छोड़कर उपयोग करना आसान हो जाता है, जहां पीएल/आई की आदतें आश्वेरिएबल्स्य का कारण बन सकती हैं। रेक्स डिजाइन लक्ष्यों में से एक कम से कम विस्मय का सिद्धांत था।[7]


इतिहास

1990 से पहले

रेक्स को 20 मार्च 1979 और 1982 के मध्य आईबीएम के माइक कोविलिशॉ द्वारा मूल रूप से EXEC और EXEC 2 भाषाओं को बदलने के लिए एक स्क्रिप्टिंग प्रोग्रामिंग भाषा के रूप में 'ओन-टाइम' परियोजना के रूप में असेंबली भाषा में डिजाइन और कार्यान्वित किया गया था।[1] इसे किसी भी सिस्टम के लिए मैक्रो (कंप्यूटर साइंस) या स्क्रिप्टिंग भाषा के रूप में डिजाइन किया गया था। जैसे, रेक्स को Tcl और पाइथन (प्रोग्रामिंग भाषा) का अग्रदूत माना जाता है। रेक्स का उद्देश्य इसके निर्माता द्वारा पायथन (प्रोग्रामिंग भाषा) का सरलीकृत और सीखने में आसान संस्करण करना भी था। चूँकि, PL/I से कुछ अस्वीकृति अज्ञानता में हो सकती हैं।

इसे पहली बार 1981 में ह्यूस्टन, टेक्सास में शेयर 56 सम्मेलन में सार्वजनिक रूप से वर्णित किया गया था।[8] जहां ग्राहकों की प्रतिक्रिया, एसएलएसी राष्ट्रीय त्वरक प्रयोगशाला के टेड जॉनस्टन द्वारा समर्थित, इसे 1982 में आईबीएम उत्पाद के रूप में भेज दिया गया।

इन वर्षों में आईबीएम ने अपने लगभग सभी ऑपरेटिंग सिस्टम (वीएम/सीएमएस, एमवीएस टीएसओ/ई, आईबीएम आई, वीएसई/ईएसए, आईबीएम एआईएक्स, पीसी डॉस, और OS/2) में रेक्स को भी सम्मिलित किया गया है। और नोवेल नेटवेयर, माइक्रोसॉफ़्ट विंडोज़, जावा (प्रोग्रामिंग भाषा) और लिनक्स के लिए संस्करण उपलब्ध कराया है।

पहला गैर-आईबीएम संस्करण 1984/5 में चार्ल्स डेनी द्वारा पीसी डॉस के लिए लिखा गया था[2] और मैन्सफील्ड सॉफ्टवेयर ग्रुप (1986 में केविन जे. केर्नी द्वारा स्थापित) द्वारा विपणन किया गया।[1] 1987 में लुंडिन और वुड्रूफ़ द्वारा सीएमएस के लिए लिखा गया पहला संकलक संस्करण सामने आया।[9] अटारी, अमिगाओएस, यूनिक्स (कई संस्करण), सोलारिस (ऑपरेटिंग सिस्टम), डिजिटल उपकरण निगम, माइक्रोसॉफ्ट विंडोज, विंडोज सीई, जेब में रखने लायक कंप्यूटर, डॉस, पाम ओएस, क्यूएनएक्स, ओएस/2, लिनक्स, BeOS के लिए, EPOC32/सिम्बियन, AtheOS, OpenVMS,[10]: p.305  एप्पल मैकिनटोश, और Mac OS X अन्य संस्करण भी विकसित किए गए हैं।[11]

रेक्स का अमिगा संस्करण, जिसे ARxx कहा जाता है, को AmigaOS 2 के साथ सम्मिलित किया गया था और यह स्क्रिप्टिंग के साथ-साथ एप्लिकेशन नियंत्रण के लिए लोकप्रिय था। कई Amiga अनुप्रयोगों में एक अरेक्स पोर्ट बनाया गया है जो रेक्स से एप्लिकेशन को नियंत्रित करने की अनुमति देता है। कई चल रहे अनुप्रयोगों को नियंत्रित करने के लिए एक एकल रेक्स स्क्रिप्ट विभिन्न रेक्स पोर्ट्स के बीच भी स्विच कर सकती है।

1990 से वर्तमान

1990 में, SLAC की कैथी डैगर ने पहली स्वतंत्र रेक्स संगोष्ठी का आयोजन किया, जिसके कारण रेक्स भाषा एसोसिएशन का गठन हुआ। संगोष्ठी प्रतिवर्ष आयोजित की जाती हैं।

रेक्स के कई फ्रीवेयर संस्करण उपलब्ध हैं। 1992 में, दो सबसे व्यापक रूप से उपयोग किए जाने वाले ओपन-सोर्स पोर्ट सामने आए:: यूनिक्स के लिए इयान कोलियर का REXX/imc और विंडोज और यूनिक्स के लिए एंडर्स क्रिस्टेंसन का रेजिना[12](बाद में मार्क हेस्लिंग द्वारा अपनाया गया)। बिरेक्स WinCE और पॉकेट पीसी प्लेटफॉर्म के लिए अच्छी तरह से जाना जाता है, और इसे VM/370 और MVS में बैक-पोर्ट किया गया है।

OS/2 में वाटकॉम VX-रेक्स का दृश्य विकास प्रणाली है। हॉकवेयर की एक अन्य बोली विज़प्रो रेक्स थी।

किलोवाट द्वारा पोर्टेबल रेक्स और कुरक्युस द्वारा व्यक्तिगत रेक्स दो रेक्स इंटरप्रेटर हैं जिन्हें डॉस के लिए डिज़ाइन किया गया है और कमांड प्रॉम्प्ट का उपयोग करके विंडोज के अनुसार भी चलाया जा सकता है। 1990 के दशक के मध्य से, रेक्स के दो नए संस्करण सामने आए हैं:

  • Netरेक्स: जावा स्रोत कोड के माध्यम से जावा (प्रोग्रामिंग भाषा) बाइट कोड को संकलित करता है; इसमें कोई भी आरक्षित कीवर्ड नहीं है, और जावा ऑब्जेक्ट मॉडल का उपयोग करता है, और इसलिए सामान्यतः 'पारंपरिक' रेक्स के साथ ऊपर-संगत नहीं होता है।
  • ऑब्जेक्ट रेक्स: रेक्स का एक वस्तु के उन्मुख सामान्यतः ऊपर की ओर-संगत संस्करण।

1996 में अमेरिकन राष्ट्रीय मानक संस्थान (एएनएसआई) ने रेक्स के लिए एक मानक: ANSI X3.274–1996 सूचना प्रौद्योगिकी - प्रोग्रामिंग भाषा रेक्स प्रकाशित किया।[13] 1985 से रेक्स पर दो दर्जन से अधिक पुस्तकें प्रकाशित हो चुकी हैं।

रेक्स ने 20 मार्च 2004 को अपनी 25वीं वर्षगांठ मनाई, जिसे मई 2004 में जर्मनी के बॉबलिंगेन में रेक्स भाषा एसोसिएशन के 15वें अंतर्राष्ट्रीय रेक्स संगोष्ठी में मनाया गया।

12 अक्टूबर 2004 को, आईबीएम ने सामान्य सार्वजनिक लाइसेंस के अनुसार अपने ऑब्जेक्ट रेक्स कार्यान्वयन के स्रोतों को जारी करने की अपनी योजना की घोषणा की। ऑब्जेक्ट रेक्स के हाल के रिलीज़ में रेक्स भाषा के इस संस्करण को लागू करने वाला ActiveX विंडोज विंडोज स्क्रिप्टिंग होस्टWSH) स्क्रिप्टिंग इंजन सम्मिलित है।

22 फरवरी, 2005 को ओपन ऑब्जेक्ट रेक्स (ooRexx) की पहली सार्वजनिक रिलीज की घोषणा की गई। इस उत्पाद में एक WSH स्क्रिप्टिंग इंजन है जो विंडोज ऑपरेटिंग सिस्टम और रेक्स के साथ एप्लिकेशन को उसी तरह से प्रोग्रामिंग करने की अनुमति देता है जिसमें विसुअल बेसिक और जेस्क्रिप्ट को डिफ़ॉल्ट WSH इंस्टॉलेशन और पर्ल, Tcl, Python (प्रोग्रामिंग भाषा) थर्ड-पार्टी स्क्रिप्टिंग इंजन द्वारा लागू किया जाता है।

As of January 2017 तक रेक्स को TIOBE इंडेक्स में शीर्ष 100 में सम्मिलित 50 भाषाओं में से एक के रूप में सूचीबद्ध किया गया था जो शीर्ष 50 से संबंधित नहीं थी।[14]

2019 में, 30वीं रेक्स भाषा एसोसिएशन सिम्पोजियम ने रेक्स की 40वीं वर्षगांठ मनाई। संगोष्ठी हर्सले, इंग्लैंड में आयोजित की गई थी, जहां रेक्स को पहली बार डिजाइन और कार्यान्वित किया गया था।[15]


टूलकिट

Rexx/Tk, ग्राफिक्स के लिए एक टूलकिट है जिसका उपयोग रेक्स प्रोग्राम्स में Tcl/Tk के रूप में व्यापक रूप से उपलब्ध है।

विंडोज के लिए रेक्स IDE, RxxxEd विकसित किया गया है।[10] नेटवर्क संचार के साथ-साथ रेजिना रेक्स के अन्य ऐड-ऑन और कार्यान्वयन के लिए RxSock विकसित किया गया है, और विंडोज कमांड लाइन के लिए रेक्स इंटरप्रेटर विंडोज के विभिन्न संस्करणों के लिए अधिकांश संसाधन किटों में आपूर्ति की जाती है और उन सभी के साथ-साथ डॉस के अनुसार काम करता है।

वर्तनी और पूंजीकरण

मूल रूप से भाषा को Rex ( पुनः संभावित प्रबंधक) कहा जाता था; अतिरिक्त X को अन्य उत्पादों के नामों के साथ विरोध से बचने के लिए जोड़ा गया था। REX मूल रूप से सभी अपरकेस था क्योंकि मेनफ्रेम कोड अपरकेस ओरिएंटेड था। उन दिनों की शैली में ऑल-कैप नाम होना था, आंशिक रूप से क्योंकि लगभग सभी कोड अभी भी ऑल-कैप थे। उत्पाद के लिए यह रेक्स बन गया, और माइक काउलीशॉ की पुस्तक के दोनों संस्करण ऑल-कैप का उपयोग करते हैं। 1984 में सिस्टम उत्पाद के लिए रीस्ट्रक्वेरिएबल्स्ड एक्सटेंडेड एक्ज़ीक्यूटर के विस्तार का उपयोग किया गया था।[7]

सिंटेक्स

लूपिंग

रेक्स में लूप नियंत्रण संरचना DO से प्रारंभ होता है और END के साथ समाप्त होता है लेकिन कई किस्मों में आता है। नेटरेक्स लूपिंग के लिये DO के अतिरिक्त कीवर्ड LOOP का उपयोग करता है जबकि ooRexx लूप करते समय LOOP तथा DO को समतुल्य मानता है।

सशर्त लूप

रेक्स कई प्रकार के पारंपरिक संरचित-प्रोग्रामिंग लूप का समर्थन करता है, जबकि किसी स्थिति का परीक्षण करने से पहले (do while) या बाद में (do until) निर्देशों की सूची निष्पादित हो जाती है:

do while [condition]
 [instructions]
 end
 do until [condition]
 [instructions]
 end

दोहराए जाने वाले लूप्स

अधिकांश भाषाओं की तरह, रेक्स एक इंडेक्स वेरिएबल को बढ़ाते समय लूप कर सकता है और एक सीमा तक पहुंचने पर रुक सकता है:

do index = start [to limit] [by increment] [for count]
 [instructions]
 end

वेतन वृद्धि को छोड़ा जा सकता है और 1 के लिए डिफॉल्ट किया जा सकता है। सीमा को भी छोड़ा जा सकता है, जिससे लूप हमेशा के लिए जारी रहता है। रेक्स गिने हुए लूप की अनुमति देता है, जहां लूप की प्रारंभ में एक एक्सप्रेशन की गणना की जाती है और लूप के भीतर के निर्देशों को कई बार निष्पादित किया जाता है:

 do expression
 [instructions]
 end

कार्यक्रम समाप्त होने तक रेक्स भी लूप कर सकता है:

 do forever
 [instructions]
 end

leave निर्देश के साथ एक प्रोग्राम वर्तमान लूप से बाहर निकल सकता है, जो do forever लूप से बाहर निकलने का सामान्य विधि है, या iterate निर्देश के साथ शॉर्ट-सर्किट कर सकता है।

संयुक्त लूप्स

PL/I की तरह, रेक्स सशर्त और दोहराए जाने वाले दोनों तत्वों को एक ही लूप में संयोजित करने की अनुमति देता है:[16]

 do index = start [to limit] [by increment] [for count] [while condition]
 [instructions]
 end
 do expression [until condition]
 [instructions]
 end

सशर्त

IFके साथ परीक्षण की स्थिति:

if [condition] then
 do
 [instructions]
 end
 else
 do
 [instructions]
 end

ELSE The E> section is optional. एकल निर्देशों के लिए, DO तथा END छोड़ा भी जा सकता है:

if [condition] then
 [instruction]
 else
 [instruction]

इंडेंटेशन वैकल्पिक है, लेकिन यह पठनीयता में सुधार करने में सहायता करता है।

कई स्थितियों के लिए परीक्षण

SELECT रेक्स का स्विच स्टेटमेंट है, जैसे PL/I से प्राप्त कई अन्य निर्माण। अन्य गतिशील भाषाओं में CASE निर्माण के कुछ कार्यान्वयनों की तरह, Rexx का WHEN क्लॉज़ पूरी शर्तों को निर्दिष्ट करता है, जिनका एक दूसरे से संबंधित होने की आवश्यकता नहीं है। उसमें, वे C या Java switch स्टेटमेंट की तुलना में IF-THEN-ELSEIF-THEN-...-ELSE कोड के कैस्केड सेट की तरह अधिक हैं।

select
 when [condition] then
 [instruction] or NOP
 when [condition] then
 do
 [instructions] or NOP
 end
 otherwise
 [instructions] or NOP
 end

NOP e> निर्देश कोई ऑपरेशन नहीं करता है, और इसका उपयोग तब किया जाता है जब प्रोग्रामर कुछ भी नहीं करना चाहता है जहां एक या अधिक निर्देशों की आवश्यकता होती है।

अन्यथा खंड वैकल्पिक है। यदि छोड़ दिया जाता है और कोई WHEN शर्तें पूरी नहीं होती हैं, तो SYNTAX की स्थिति बढ़ जाती है।

सरल वेरिएबल्स

रेक्स में वेरिएबल्स टाइपलेस हैं, और प्रारंभ में अपर केस में उनके नाम के रूप में मूल्यांकन किया जाता है। इस प्रकार कार्यक्रम में इसके उपयोग के साथ एक वेरिएबल्स का प्रकार भिन्न हो सकता है:

say hello /* => HELLO */
 hello = 25
 say hello /* => 25 */
 hello = "say 5 + 3"
 say hello /* => say 5 + 3 */
 interpret hello /* => 8 */
 drop hello
 say hello /* => HELLO */

यौगिक वेरिएबल्स

कई अन्य प्रोग्रामिंग भाषाओं के विपरीत, पारंपरिक रेक्स के पास संख्यात्मक सूचकांक द्वारा संबोधित वेरिएबल्स के सरणियों के लिए कोई प्रत्यक्ष समर्थन नहीं है। इसके अतिरिक्त यह यौगिक वेरिएबल्स प्रदान करता है।[17] एक मिश्रित वेरिएबल्स में एक तना होता है जिसके बाद एक पूंछ होती है। ए । (डॉट) का उपयोग stem को पूंछ से जोड़ने के लिए किया जाता है। यदि उपयोग की जाने वाली पूंछ संख्यात्मक हैं, तो सरणी के समान प्रभाव उत्पन्न करना आसान है।

 do i = 1 to 10
 stem.i = 10 - i
 end

बाद में निम्न मान वाले निम्न वेरिएबल्स stem.1 = 9, stem.2 = 8, stem.3 = 7... उपस्थित हैं:

सरणियों के विपरीत, स्टेम वेरिएबल्स के सूचकांक के लिए पूर्णांक मान होना आवश्यक नहीं है। उदाहरण के लिए, निम्न कोड मान्य है:

<syntax lang=rex>

i = 'Monday'                                                                                            stem.i = 2 

</syntax highlight>

रेक्स में स्टेम के लिए डिफ़ॉल्ट मान सेट करना भी संभव है।

 i = 'Monday'
 stem.i = 2


इन कार्यों के बाद कार्यकाल stem.3 उत्पादन करेगा 'Unknown'.

DROP स्टेटमेंट से पूरे stem को भी मिटाया जा सकता है।

 stem. = 'Unknown'
 stem.1 = 'USA'
 stem.44 = 'UK'
 stem.33 = 'France'

यह पहले से सेट किए गए किसी भी डिफ़ॉल्ट मान को हटाने का प्रभाव भी रखता है।

परिपाटी के अनुसार (और भाषा के हिस्से के रूप में नहीं) यौगिक stem.0 का उपयोग अधिकांश एक स्टेम में कि stem आइटम हैं इसका ट्रैक रखने के लिए प्रयोग किया जाता है, उदाहरण के लिए सूची में एक शब्द जोड़ने की प्रक्रिया को इस तरह कोडित किया जा सकता है:

मिश्रित वेरिएबल्स के पुच्छ में अनेक तत्वों का होना भी संभव है। उदाहरण के लिए:

 drop stem.


बहु-आयामी सरणी के प्रभाव को प्रदान करने के लिए एकाधिक संख्यात्मक पूंछ तत्वों का उपयोग किया जा सकता है।

रेक्स यौगिक वेरिएबल्स के समान सुविधाएँ कई अन्य भाषाओं में पाई जाती हैं (AWK प्रोग्रामिंग भाषा में साहवेरिएबल्स्य सरणियों सहित, पर्ल में हैश टेबल और जावा (प्रोग्रामिंग भाषा) में हैशटेबल्स)। इनमें से अधिकतर भाषाएं इस तरह के निर्माण के सभी चाबियों (या रेक्स शर्तों में पूंछ) पर पुनरावृति करने के लिए एक निर्देश प्रदान करती हैं, लेकिन पारंपरिक रेक्स में इसकी कमी है। इसके अतिरिक्त पूंछ मूल्यों की सहायक सूचियों को उपयुक्त रखना आवश्यक है। उदाहरण के लिए, किसी प्रोग्राम में शब्दों की गिनती करने के लिए किसी शब्द की प्रत्येक घटना को रिकॉर्ड करने के लिए निम्नलिखित प्रक्रिया का उपयोग किया जा सकता है।


 add_word: procedure expose dictionary.
 parse arg w
 n = dictionary.0 + 1
 dictionary.n = w
 dictionary.0 = n
 return

और फिर बाद में:

 m = 'July'
 d = 15
 y = 2005
 day.y.m.d = 'Friday'


कुछ स्पष्टता की मूल्य पर इन तकनीकों को एक ही stem में संयोजित करना संभव है:

 add_word: procedure expose count. word_list
 parse arg w .
 count.w = count.w + 1 /* assume count. has been set to 0 */
 if count.w = 1 then word_list = word_list w
 return

और बाद में:

 do i = 1 to words(word_list)
 w = word(word_list,i)
 say w count.w
 end

रेक्स यहां कोई सुरक्षा जाल प्रदान नहीं करता है, इसलिए यदि कोई एक शब्द dictionary.0 से कम होता है यह तकनीक रहस्यपूर्ण रूप से विफल हो जाएगी।

IBM के ऑब्जेक्ट रेक्स सहित रेक्स के हाल के कार्यान्वयन और oorexx जैसे ओपन सोर्स कार्यान्वयन में स्टेम के मान पर पुनरावृत्ति को सरल बनाने के लिए एक नई भाषा का निर्माण सम्मिलित है, या किसी अन्य संग्रह वस्तु जैसे कि सरणी, तालिका या सूची पर।

 do i over stem.
 say i '-->' stem.i
 end

यह भी देखें

टिप्पणियाँ

  1. The TSO EXEC command with an unqualified dataset name and neither the CLIST nor EXEC option examines the low level qualifier or EXEC.
  2. If the first line of a script fetched from SYSPROC is a comment containing REXX then it is treated as REXX rather than CLIST. A script fetched from SYSEXEC must be REXX.


संदर्भ

  1. 1.0 1.1 1.2 M. F. Cowlishaw. "IBM REXX संक्षिप्त इतिहास". IBM. Retrieved 2006-08-15.
  2. 2.0 2.1 Melinda Varian. "REXX संगोष्ठी, मई 1995".
  3. "सभी दस्तावेज़ों की सूची (फ़िल्टर=rexx)". IBM library server. 2005. Retrieved 2014-02-10.
  4. "क्या ArcaOS में REXX सपोर्ट शामिल है?". Retrieved 2020-09-03.
  5. EXEC 2 संदर्भ (PDF) (Second ed.). International Business Machines Corporation. April 1982. p. 92. SC24-5219-1.
  6. IBM वर्चुअल मशीन सुविधा /370: EXEC उपयोगकर्ता गाइड (PDF) (Second ed.). International Business Machines Corporation. April 1975. GC20-1812-1.
  7. 7.0 7.1 M. F. Cowlishaw (1984). "REXX भाषा का डिज़ाइन" (PDF). IBM Systems Journal (PDF). IBM Research. 23 (4): 333. doi:10.1147/sj.234.0326. Retrieved 2014-01-23. क्या नई विशेषता से जुड़ा कोई उच्च आश्चर्यजनक कारक हो सकता है? यदि कोई सुविधा उपयोगकर्ता द्वारा गलती से गलत तरीके से लागू की जाती है और उसके कारण अप्रत्याशित परिणाम दिखाई देता है, तो उस सुविधा में एक उच्च विस्मयकारी कारक होता है और इसलिए अवांछनीय है। यदि एक आवश्यक विशेषता में एक उच्च विस्मयकारी कारक है, तो सुविधा को फिर से डिज़ाइन करना आवश्यक हो सकता है।
  8. M. F. Cowlishaw (1981-02-18). "REX - एक कमांड प्रोग्रामिंग लैंग्वेज". SHARE. Retrieved 2006-08-15.
  9. Lundin, Leigh; Woodruff, Mark (1987-04-23). "T/REXX, CMS के लिए एक REXX कंपाइलर". U.S. Copyright Office. Washington, DC: Independent Intelligence Incorporated (TXu000295377).
  10. 10.0 10.1 Howard Fosdick (2005). Rexx प्रोग्रामर का संदर्भ. Wiley Publishing. p. 390. ISBN 0-7645-7996-7.
  11. "रेक्स कार्यान्वयन". RexxLA. Archived from the original on 2006-09-24. Retrieved 2006-08-15.
  12. Cite error: Invalid <ref> tag; no text was provided for refs named regina
  13. While ANSI INCITS 274-1996/AMD1-2000 (R2001) and ANSI INCITS 274-1996 (R2007) are chargeable, a free draft can be downloaded: "American National Standard for Information Systems – Programming Language REXX" (PDF). X3J18-199X.
  14. "अगली 50 प्रोग्रामिंग भाषाएँ". TIOBE index. tiobe.com. 2017. Archived from the original on 2017-01-19. Retrieved 2017-01-10.
  15. "RexxLA - संगोष्ठी अनुसूची".
  16. M. F. Cowlishaw (1990). द रेक्स लैंग्वेज - ए प्रैक्टिकल एप्रोच टू प्रोग्रामिंग (2nd ed.). Prentice Hall. ISBN 0-13-780651-5.
  17. "Rexx के लिए अंगूठे के छह नियम".


अग्रिम पठन

  • Callaway, Merrill. The ARexx Cookbook: A Tutorial Guide to the ARexx Language on the Commodore Amiga Personal Computer. Whitestone, 1992. ISBN 978-0963277305.
  • Callaway, Merrill. The Rexx Cookbook: A Tutorial Guide to the Rexx Language in OS/2 & Warp on the IBM Personal Computer. Whitestone, 1995. ISBN 0-9632773-4-0.
  • Cowlishaw, Michael. The Rexx Language: A Practical Approach to Programming. Prentice Hall, 1990. ISBN 0-13-780651-5.
  • Cowlishaw, Michael. The NetRexx Language. Prentice Hall, 1997. ISBN 0-13-806332-X.
  • Daney, Charles. Programming in REXX. McGraw-Hill, TX, 1990. ISBN 0-07-015305-1.
  • Ender, Tom. Object-Oriented Programming With Rexx. John Wiley & Sons, 1997. ISBN 0-471-11844-3.
  • Fosdick, Howard. Rexx Programmer's Reference. Wiley/Wrox, 2005. ISBN 0-7645-7996-7.
  • Gargiulo, Gabriel. REXX with OS/2, TSO, & CMS Features. MVS Training, 1999 (third edition 2004). ISBN 1-892559-03-X.
  • Goldberg, Gabriel and Smith, Philip H. The Rexx Handbook . McGraw-Hill, TX, 1992. ISBN 0-07-023682-8.
  • Goran, Richard K. REXX Reference Summary Handbook. CFS Nevada, Inc.,1997. ISBN 0-9639854-3-4.
  • IBM Redbooks. Implementing Rexx Support in Sdsf. Vervante, 2007. ISBN 0-7384-8914-X.
  • Kiesel, Peter C. Rexx: Advanced Techniques for Programmers. McGraw-Hill, TX, 1992. ISBN 0-07-034600-3.
  • Marco, Lou ISPF/REXX Development for Experienced Programmers. CBM Books, 1995. ISBN 1-878956-50-7
  • O'Hara, Robert P. and Gomberg, David Roos. Modern Programming Using Rexx. Prentice Hall, 1988. ISBN 0-13-597329-5.
  • Rudd, Anthony S. 'Practical Usage of TSO REXX'. CreateSpace, 2012. ISBN 978-1475097559.
  • Schindler, William. Down to Earth Rexx. Perfect Niche Software, 2000. ISBN 0-9677590-0-5.


बाहरी संबंध