रेक्स

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

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

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

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

सुविधाएँ
रेक्सRexx में निम्नलिखित विशेषताएं और विशेषताएं हैं:


 * सरल वाक्य रचना
 * कई वातावरणों में कमांड को रूट करने की क्षमता
 * एक विशिष्ट आह्वान वातावरण से जुड़े कार्यों, प्रक्रियाओं और आदेशों का समर्थन करने की क्षमता।
 * एक बिल्ट-इन स्टैक, यदि कोई हो तो होस्ट स्टैक के साथ इंटरऑपरेट करने की क्षमता के साथ।


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

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

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

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

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

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

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

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

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

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

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


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

1996 में American National Standards Institute (ANSI) ने रेक्सRexx के लिए एक मानक प्रकाशित किया: ANSI X3.274–1996 सूचना प्रौद्योगिकी - प्रोग्रामिंग भाषा रेक्सRexx। 1985 से रेक्सRexx पर दो दर्जन से अधिक पुस्तकें प्रकाशित हो चुकी हैं।

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

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

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

रेक्सRexx को TIOBE इंडेक्स में शीर्ष 100 में शामिल पचास भाषाओं में से एक के रूप में सूचीबद्ध किया गया था जो शीर्ष 50 से संबंधित नहीं थी। 2019 में, 30वीं रेक्स लैंग्वेज एसोसिएशन सिम्पोजियम ने रेक्स की 40वीं वर्षगांठ मनाई। संगोष्ठी हर्सले, इंग्लैंड में आयोजित की गई थी, जहां रेक्सRexx को पहली बार डिजाइन और कार्यान्वित किया गया था।

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

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

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

लूपिंग
रेक्सRexx में लूप कंट्रोल स्ट्रक्चर a से शुरू होता है  और एक के साथ समाप्त होता है   लेकिन कई किस्मों में आता है। Netरेक्सRexx कीवर्ड का उपयोग करता है   के बजाय   लूपिंग के लिए, जबकि ooरेक्सRexx व्यवहार करता है   तथा   लूपिंग करते समय समकक्ष के रूप में।

सशर्त पाश
रेक्सRexx किसी स्थिति का परीक्षण करने से पहले या के बाद  निर्देशों की सूची निष्पादित की जाती है:

<वाक्यविन्यास हाइलाइट लैंग = रेक्सRexx शैली = पृष्ठभूमि-रंग: #ffffff; महत्वपूर्ण> जबकि [हालत] [निर्देश] समाप्त 

<वाक्यविन्यास हाइलाइट लैंग = रेक्सRexx शैली = पृष्ठभूमि-रंग: #ffffff; महत्वपूर्ण> [शर्त] तक करो [निर्देश] समाप्त 

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

<वाक्यविन्यास हाइलाइट लैंग = रेक्सRexx शैली = पृष्ठभूमि-रंग: #ffffff; महत्वपूर्ण> अनुक्रमणिका करें = प्रारंभ [सीमित करने के लिए] [वृद्धि द्वारा] [गिनती के लिए] [निर्देश] समाप्त 

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

रेक्सRexx गिने हुए लूप की अनुमति देता है, जहां लूप की शुरुआत में एक एक्सप्रेशन की गणना की जाती है और लूप के भीतर के निर्देशों को कई बार निष्पादित किया जाता है: <वाक्यविन्यास हाइलाइट लैंग = रेक्सRexx शैली = पृष्ठभूमि-रंग: #ffffff; महत्वपूर्ण> अभिव्यक्ति करो [निर्देश] समाप्त 

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

<वाक्यविन्यास हाइलाइट लैंग = रेक्सRexx शैली = पृष्ठभूमि-रंग: #ffffff; महत्वपूर्ण> हमेशा के लिए करो [निर्देश] समाप्त 

के साथ एक प्रोग्राम वर्तमान लूप से बाहर हो सकता है  निर्देश, जो a से बाहर निकलने का सामान्य तरीका है   लूप, या इसके साथ शॉर्ट-सर्किट कर सकते हैं   निर्देश।

संयुक्त लूप्स
PL/I की तरह, रेक्सRexx सशर्त और दोहराए जाने वाले दोनों तत्वों को एक ही लूप में संयोजित करने की अनुमति देता है: <वाक्यविन्यास हाइलाइट लैंग = रेक्सRexx शैली = पृष्ठभूमि-रंग: #ffffff; महत्वपूर्ण> अनुक्रमणिका करें = प्रारंभ [सीमित करने के लिए] [वृद्धि द्वारा] [गिनती के लिए] [जबकि स्थिति] [निर्देश] समाप्त  <वाक्यविन्यास हाइलाइट लैंग = रेक्सRexx शैली = पृष्ठभूमि-रंग: #ffffff; महत्वपूर्ण> अभिव्यक्ति करो [शर्त तक] [निर्देश] समाप्त 

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

<वाक्यविन्यास हाइलाइट लैंग = रेक्सRexx शैली = पृष्ठभूमि-रंग: #ffffff; महत्वपूर्ण> अगर [शर्त] तो करना [निर्देश] समाप्त वरना करना [निर्देश] समाप्त   ई> खंड वैकल्पिक है।

एकल निर्देशों के लिए,  तथा   छोड़ा भी जा सकता है:

<वाक्यविन्यास हाइलाइट लैंग = रेक्सRexx शैली = पृष्ठभूमि-रंग: #ffffff; महत्वपूर्ण> अगर [शर्त] तो [निर्देश] वरना [निर्देश] 

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

कई स्थितियों के लिए परीक्षण
रेक्सRexx का स्विच स्टेटमेंट है, जैसे PL/I से प्राप्त कई अन्य निर्माण। CASE के कुछ कार्यान्वयनों की तरह अन्य गतिशील भाषाओं में निर्माण होता है, रेक्सRexx's  खंड पूरी शर्तें निर्दिष्ट करते हैं, जो एक दूसरे से संबंधित होने की आवश्यकता नहीं है। उसमें, वे अधिक के कैस्केड सेट की तरह हैं   कोड की तुलना में वे सी या जावा की तरह हैं   बयान।

<वाक्यविन्यास हाइलाइट लैंग = रेक्सRexx शैली = पृष्ठभूमि-रंग: #ffffff; महत्वपूर्ण> चुनते हैं जब [हालत] तब [निर्देश] या एनओपी जब [हालत] तब करना [निर्देश] या एनओपी समाप्त अन्यथा [निर्देश] या एनओपी समाप्त   e> निर्देश कोई ऑपरेशन नहीं करता है, और इसका उपयोग तब किया जाता है जब प्रोग्रामर कुछ भी नहीं करना चाहता है जहां एक या अधिक निर्देशों की आवश्यकता होती है।

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

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

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

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

<वाक्यविन्यास हाइलाइट लैंग = रेक्सRexx शैली = पृष्ठभूमि-रंग: #ffffff; महत्वपूर्ण> क्या मैं = 1 से 10 स्टेम.आई = 10 - आई समाप्त 

बाद में निम्न मान वाले निम्न चर उपस्थित हैं: ...

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

<वाक्यविन्यास लैंग = रेक्सRexx> मैं = 'सोमवार' स्टेम.आई = 2 

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

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

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

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

<वाक्यविन्यास लैंग = रेक्सRexx> ड्रॉप तना। 

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

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

<वाक्यविन्यास लैंग = रेक्सRexx> add_word: प्रक्रिया शब्दकोश को उजागर करती है। पार्स आर्ग डब्ल्यू एन = शब्दकोश.0 + 1 डिक्शनरी.एन = डब्ल्यू शब्दकोश.0 = एन वापसी 

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

<वाक्यविन्यास लैंग = रेक्सRexx> एम = 'जुलाई' डी = 15 वाई = 2005 day.y.m.d = 'शुक्रवार' </वाक्यविन्यास हाइलाइट>

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

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

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

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

<वाक्यविन्यास हाइलाइट लैंग = रेक्सRexx शैली = पृष्ठभूमि-रंग: #ffffff; महत्वपूर्ण> क्या मैं = 1 शब्दों के लिए (word_list) डब्ल्यू = शब्द (शब्द_सूची, मैं) डब्ल्यू काउंट डब्ल्यू कहें समाप्त </वाक्यविन्यास हाइलाइट>

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

<वाक्यविन्यास हाइलाइट लैंग = रेक्सRexx शैली = पृष्ठभूमि-रंग: #ffffff; महत्वपूर्ण> add_word: प्रक्रिया शब्दकोश को उजागर करती है। पार्स आर्ग डब्ल्यू। डिक्शनरी.डब्ल्यू = डिक्शनरी.डब्ल्यू + 1 अगर Dictionary.w = 1 /* डिक्शनरी मान लें। = 0 */ फिर करो एन = शब्दकोश.0 + 1 डिक्शनरी.एन = डब्ल्यू शब्दकोश.0 = एन समाप्त वापसी </वाक्यविन्यास हाइलाइट>

और बाद में:

<वाक्यविन्यास हाइलाइट लैंग = रेक्सRexx शैली = पृष्ठभूमि-रंग: #ffffff; महत्वपूर्ण> do i = 1 to dictionary.0 डब्ल्यू = डिक्शनरी.आई कहो मैं w dictionary.w समाप्त </वाक्यविन्यास हाइलाइट>

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

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

<वाक्यविन्यास हाइलाइट लैंग = ooरेक्सRexx शैली = पृष्ठभूमि-रंग: #ffffff; महत्वपूर्ण> क्या मैं तने के ऊपर हूं। कहो मैं '-->' स्टेम.आई समाप्त </वाक्यविन्यास हाइलाइट>

पार्स
ई> निर्देश विशेष रूप से शक्तिशाली है; यह कुछ उपयोगी स्ट्रिंग-हैंडलिंग फ़ंक्शंस को जोड़ती है। इसका सिंटैक्स है:

<वाक्यविन्यास लैंग = रेक्सRexx> पार्स [ऊपरी] मूल [टेम्पलेट] </वाक्यविन्यास हाइलाइट>

जहां मूल स्रोत निर्दिष्ट करता है:


 * (तर्क, कमांड लाइन के शीर्ष स्तर की पूंछ पर)
 * (मानक इनपुट, जैसे कीबोर्ड)
 * (रेक्सRexx डेटा कतार या मानक इनपुट)
 * (कार्यक्रम को कैसे क्रियान्वित किया गया, इसकी जानकारी)
 * (एक अभिव्यक्ति) : कीवर्ड   यह इंगित करना आवश्यक है कि अभिव्यक्ति कहाँ समाप्त होती है
 * (एक परिवर्तनीय)
 * (संस्करण/रिलीज़ नंबर)

और टेम्पलेट हो सकता है:


 * चर की सूची
 * स्तंभ संख्या सीमांकक
 * शाब्दिक सीमांकक

वैकल्पिक है; यदि निर्दिष्ट किया गया है, तो पार्स करने से पहले डेटा अपर केस में परिवर्तित हो जाएगा।

उदाहरण:

टेम्पलेट के रूप में चरों की सूची का उपयोग करना

<वाक्यविन्यास हाइलाइट लैंग = रेक्सRexx शैली = पृष्ठभूमि-रंग: #ffffff; महत्वपूर्ण> myVar = जॉन स्मिथ पार्स var myVar firstName lastName पहला नाम है: पहला नाम कहें अंतिम नाम है: lastName </वाक्यविन्यास हाइलाइट>

निम्नलिखित प्रदर्शित करता है:

<पूर्व> पहला नाम है: जॉन अंतिम नाम है: स्मिथ </पूर्व>

टेम्पलेट के रूप में सीमांकक का उपयोग करना:

<वाक्यविन्यास लैंग = रेक्सRexx> myVar = स्मिथ, जॉन पार्स var myVar LastName, FirstName पहला नाम है: पहला नाम कहें अंतिम नाम है: lastName </वाक्यविन्यास हाइलाइट>

निम्नलिखित भी प्रदर्शित करता है:

<पूर्व> पहला नाम है: जॉन अंतिम नाम है: स्मिथ </पूर्व>

स्तंभ संख्या सीमांकक का उपयोग करना:

<वाक्यविन्यास लैंग = रेक्सRexx> मायवर = (202) 123-1234 पार्स var MyVar 2 एरियाकोड 5 7 सबनंबर कहते हैं एरिया कोड है: एरियाकोड कहें सब्सक्राइबर नंबर है: सबनंबर </वाक्यविन्यास हाइलाइट>

निम्नलिखित प्रदर्शित करता है:

<पूर्व> क्षेत्र कोड है: 202 सब्सक्राइबर संख्या है: 123-1234 </पूर्व>

एक टेम्पलेट चर, शाब्दिक सीमांकक और स्तंभ संख्या सीमांकक के संयोजन का उपयोग कर सकता है।

व्याख्या
INTERPRET निर्देश अपने तर्क का मूल्यांकन करता है और इसके मान को रेक्सRexx कथन के रूप में मानता है। कभी-कभी INTERPRET किसी कार्य को करने का सबसे स्पष्ट तरीका है, लेकिन इसका उपयोग अक्सर वहाँ किया जाता है जहाँ स्पष्ट कोड का उपयोग करना संभव होता है, जैसे,.

INTERPRET के अन्य उपयोग रेक्सRexx's (दशमलव) मनमाने ढंग से सटीक अंकगणित (फ़ज़ी तुलनाओं सहित), प्रोग्रामेटिक टेम्प्लेट, स्टेम्ड एरेज़ और विरल सरणियों के साथ PARSE स्टेटमेंट का उपयोग हैं। <वाक्यविन्यास लैंग = रेक्सRexx> /* वर्ग(4) के साथ व्याख्या प्रदर्शित करें => 16 */ एक्स = 'वर्ग' व्याख्या 'कहो' एक्स || '(4); बाहर निकलना' स्क्वायर: वापसी तर्क (1) ** 2 </वाक्यविन्यास हाइलाइट>

यह 16 प्रदर्शित करता है और बाहर निकलता है। क्योंकि रेक्सRexx में चर सामग्री स्ट्रिंग्स हैं, जिसमें एक्सपोनेंट और यहां तक ​​​​कि पूरे प्रोग्राम के साथ परिमेय संख्याएं शामिल हैं, रेक्सRexx स्ट्रिंग्स को मूल्यांकन किए गए भावों के रूप में व्याख्या करने की पेशकश करता है।

इस सुविधा का उपयोग फ़ंक्शन मापदंडों के रूप में कार्यों को पारित करने के लिए किया जा सकता है, जैसे कि इंटीग्रल की गणना करने के लिए SIN या COS को एक प्रक्रिया में पास करना।

रेक्सRexx ABS, DIGITS, MAX, MIN, SIGN, RANDOM जैसे केवल बुनियादी गणित कार्यों और बिट संचालन के साथ हेक्स प्लस बाइनरी रूपांतरणों का एक पूरा सेट प्रदान करता है। एसआईएन जैसे अधिक जटिल कार्यों को खरोंच से लागू किया गया था या तीसरे पक्ष के बाहरी पुस्तकालय (कंप्यूटिंग) से प्राप्त किया गया था। कुछ बाहरी पुस्तकालय, विशेष रूप से पारंपरिक भाषाओं में लागू किए गए, विस्तारित परिशुद्धता का समर्थन नहीं करते थे।

बाद के संस्करण (गैर-क्लासिक) समर्थन करते हैं  निर्माण। साथ में बिल्ट-इन फ़ंक्शन , CALL के कई मामलों के स्थान पर उपयोग किया जा सकता है. यह एक क्लासिक प्रोग्राम है:

<वाक्यविन्यास हाइलाइट लैंग = रेक्सRexx शैली = पृष्ठभूमि-रंग: #ffffff; महत्वपूर्ण> / * इनपुट निकास या इसी तरह से समाप्त * / हमेशा के लिए करो; लाइनिन की व्याख्या करें ; समाप्त </वाक्यविन्यास हाइलाइट>

थोड़ा और परिष्कृत रेक्स कैलकुलेटर:

<वाक्यविन्यास हाइलाइट लैंग = रेक्सRexx शैली = पृष्ठभूमि-रंग: #ffffff; महत्वपूर्ण> एक्स = 'छोड़ने के लिए अलविदा इनपुट' X = 'BYE' तक करें; व्याख्या 'कहो' एक्स; एक्स खींचो; समाप्त </वाक्यविन्यास हाइलाइट>

के लिए आशुलिपि है. वैसे ही,  के लिए आशुलिपि है.

INTERPRET निर्देश की शक्ति के अन्य उपयोग थे। वेलोर (सॉफ्टवेयर) पैकेज वस्तु उन्मुख कार्यकर्म वातावरण को लागू करने के लिए रेक्सRexx की व्याख्यात्मक क्षमता पर निर्भर था। टाइम मशीन नामक एक अप्रकाशित वेस्टिंगहाउस इलेक्ट्रिक (1886) उत्पाद में एक अन्य उपयोग पाया गया जो एक घातक त्रुटि के बाद पूरी तरह से ठीक होने में सक्षम था।

संख्यात्मक
<वाक्यविन्यास लैंग = रेक्सRexx> अंक कहें फ़ज़  फॉर्म  /* => 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 (शेष विभाजन)*/ </वाक्यविन्यास हाइलाइट>

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

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

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

<वाक्यविन्यास हाइलाइट लैंग = रेक्सRexx शैली = पृष्ठभूमि-रंग: #ffffff; महत्वपूर्ण> रुकने का संकेत; ए = 1 करो ए कहो 100000 /* देरी से करें */ समाप्त समाप्त पड़ाव: कार्यक्रम उपयोगकर्ता द्वारा बंद कर दिया गया था बाहर निकलना </वाक्यविन्यास हाइलाइट>

A  कथन अपरिभाषित चरों के उपयोग को रोकता है, जो अन्यथा उनके मूल्य के रूप में अपना (अपर केस) नाम प्राप्त करेंगे। राज्य की परवाह किए बिना   हालत, एक चर की स्थिति हमेशा अंतर्निहित फ़ंक्शन के साथ जांची जा सकती है   परिभाषित चरों के लिए VAR लौटाना।   e> फ़ंक्शन का उपयोग a को ट्रिगर किए बिना वेरिएबल्स का मान प्राप्त करने के लिए किया जा सकता है   हालत, लेकिन इसका मुख्य उद्देश्य POSIX के समान env (शेल) चर को पढ़ना और सेट करना है   तथा.

शर्तें

 * सिस्टम कमांड से सकारात्मक आरसी
 * सिस्टम कमांड से सकारात्मक आरसी


 * सिस्टम कमांड के लिए नेगेटिव आरसी (जैसे कमांड उपस्थित नहीं है)
 * सिस्टम कमांड के लिए नेगेटिव आरसी (जैसे कमांड उपस्थित नहीं है)


 * असामान्य समाप्ति
 * असामान्य समाप्ति


 * एक अनसेट चर का संदर्भ दिया गया था
 * एक अनसेट चर का संदर्भ दिया गया था


 * इनपुट या आउटपुट त्रुटि (उदाहरण फ़ाइल के अंत से परे पढ़ने के प्रयास)
 * इनपुट या आउटपुट त्रुटि (उदाहरण फ़ाइल के अंत से परे पढ़ने के प्रयास)


 * अमान्य प्रोग्राम सिंटैक्स, या कुछ अन्य त्रुटि स्थिति
 * अमान्य प्रोग्राम सिंटैक्स, या कुछ अन्य त्रुटि स्थिति


 * महत्वपूर्ण अंक खो गए हैं (एएनएसआई रेक्स, टीआरएल दूसरे संस्करण में नहीं)
 * महत्वपूर्ण अंक खो गए हैं (एएनएसआई रेक्स, टीआरएल दूसरे संस्करण में नहीं)

जब किसी शर्त को संभाला जाता है, द   तथा   स्थिति को समझने के लिए सिस्टम चर का विश्लेषण किया जा सकता है। आरसी में रेक्स त्रुटि कोड होता है और एसआईजीएल में वह पंक्ति संख्या होती है जहां त्रुटि उत्पन्न हुई थी।

रेक्सRexx संस्करण 4 के साथ शुरू होने वाली स्थितियों को नाम मिल सकते हैं, और एक भी है  निर्माण। यह आसान है अगर बाहरी कार्य जरूरी नहीं हैं:

<वाक्यविन्यास लैंग = रेक्सRexx> ChangeCodePage: कार्यविधि /* SIGNAL सेटिंग सुरक्षित करें */ सिंटैक्स नाम ChangeCodePage.Trap पर संकेत वापसी SysQueryProcessCodePage ChangeCodePage.Trap: OS/2 पर 1004 /* windows-1252 लौटाएं */ </वाक्यविन्यास हाइलाइट>

यह भी देखें

 * आईएसपीएफ
 * एक्सईडीआईटी
 * कंप्यूटर गोले की तुलना
 * प्रोग्रामिंग भाषाओं की तुलना

अग्रिम पठन

 * 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.

बाहरी संबंध

 * Mike Cowlishaw's home page
 * रेक्सRexx language page at IBM
 * रेक्सRexx Language Association
 * रेक्सRexx programming language at Open Hub