ري أكس أكس
ظهر في عام 1979 ؛ قبل 32 عاماالمصممم ايك كاوليشا و Mike Cowlishaw, المطور مايك كاوليشا وآى بى إم Mike Cowlishaw, IBMالإصدار المستقر ANSI X3.274 (1996 منذ 14 عام) قواعد الكتابة ديناميكي، كل شيء يعتبر سلسلة (REXX الكلاسيكي) أو جسم (REX الجسم) التطبيقات الرئيسية VM/SP ثم بعده, TSO/E V2 ثم بعده, IBMNetRexx,[1] و Object REXX,و Open Object و Rexxو ,[2]Regina ,[3] others اللهجاتObject REXX و، Open Object و Rexx و، NetRexxتأثرت بـPL/I, و Algol و، EXEC 2 أثرت فيNetRexx, و Object REXX و، Open Object و Rexx
REXX (المنفذ الممتد المعدل) هي لغة برمجة تفسير التي استحدثت في آي بي إم IBM. وهى لغة برمجة رفيعة المستوى منظمة التي صممت لتكون سهلة التعلم وسهلة القراءة على حد سواء. كلا من الملكية ومترجمين المصدر المفتوحة لREXX متاحة على نطاق واسع في مجال الحوسبة، والمترجمين المتاحين للحاسباات اي بي ام الكبيرة.
يستخدم Rexx على نطاق واسع كلغة جلو glue language، ولغة الماكرو macro، وغالبا ما تستخدم لمعالجة البيانات والنصوص توليد التقارير، وهذه أوجه التشابه مع بيرل Perl يعني أن Rexx يعمل بشكل جيد في برمجة الواجهة العمومية للمعبر (CGI) ويستخدم في الواقع لهذا الغرض. Rexx هي لغة برمجة النصوص المكتوبة في بعض أنظمة التشغيل، على سبيل المثال OS/2, MVS, VM, AmigaOS، وأيضا يستخدم كلغة ماكرو داخلية في بعض البرامج الأخرى، مثل، KEDIT, THE، المحاكي الطرفي ZOC. بالإضافة إلى ذلك، يمكن استخدام لغة Rexx للبرمجة في برمجة النصوص ووحدات الماكرو في أي برنامج يستخدم برمجة ويندوز المضيفه، ولغة برمجة المشغلات أكتف أكس (مثلأً VBScript و JScript) لو تم تثبيت إحدى مشغلات ريكس Rexx (أنظر أدناه).
Rexx متوفر مع VM/SP إلى، الإصدار 2 من TSO/E ،إلى OS/2 (1.3 on up), و PC DOS (7.0 or 2000) و Windows NT 4.0 (الموارد Resource Kit: Regina). نصوص REXX لـ OS/2 ويندوز القائم على ان تي NT-based Windows لديه تمدد اسم الملف. cmdوالسطر الأول من النص يحدد نظام التشغيل الذي عليه النص.
REXX لديها الخصائص والميزات التالية :REXX تحتوي فقط على 23 تعليمات بديهية عموماً (على سبيل المثال call و parse, و select) مع الحد الأدنى من علامات الترقيم ومتطلبات التنسيق. وهى أساسية ولغة ذات شكل حر تقريبا مع نوع واحد فقط من البيانات، وسلسلة الأحرف، وهذه الفلسفة تعني أن جميع البيانات مرئية (رمزية)، ومميزات تصحيح الأخطاء وتعقب الخطأ مبسطة.
قواعد REXX مشابهة لـ PL/I، ولكن رموزها أقل، وهذا يجعلها أصعب في التحليل (حسب البرنامج) ولكن أسهل في الاستخدام، باستثناء الحالات التي يكون فيها سلوك PL/I قد يؤدي إلى مفاجآت.
REXX صمت ونفذت أولا، في لغة التجميع، كمشروع "لوقته "بين 20 مارس 1979 ومنتصف 1982 من قبل مايك كاوليشاو Mike Cowlishaw من آي بي إم، أصلا كلغة برمجة نصية لتحل محل الغاتEXEC و EXEC 2.[4] وقد صممت لتكون لغة برمجة نصية أو ماكرو لأي نظام. على هذا النحو، تعتبر REXX سلفاً لـ Tcl و Python. وكان هدف REXX من قبل مؤلفها أن تكون مبسطة وأسهل للتعلم نسخة من لغة البرمجة PL/I. ومع ذلك، بعض الاختلافات من PL/I قد تخدع الغافلين.
وقد وصفت لأول مرة للجمهور في مؤتمر شير 56 SHARE 56 في هيوستن، تكساس، في 1981 ،[5] حيث تفاعل العملاء، وأيدها تيد جونستون في SLAC، أدت إلي تضمينها على أنها منتج آي بي إم في عام 1982.
على مدى السنين، آي بي إم ضمنت REXX تقريبا في جميع نظم التشغيلها (VM/CMS و VM/GCS و MVS TSO/E و AS/400 و VSE/ESA و AIX, CICS/ESA و PC DOS, و OS/2,) واستحدثت إصدارات متوفرة ل نوفيل نت وار Novell NetWare، ويندوزWindows,، جافا Java، ولينوكسLinux.
تمت كتابة النسخة الأولية التي ليست من آي بي إم لـ PC DOS عن طريق تشارلز داني في 5 / 1984. والإصدار الأول للمترجم ظهر في عام 1987، كتب لـ CMS بواسطة وندين وودروف. [6] وتم استحداث إصدارات أخرى أيضاً لـ Atari و AmigaOS و Unix (أشكال متعددة) و Solaris و DEC, Windows و Windows CE و Pocket PC و DOS و Palm OS و QNX و OS/2 و Linux و BeOS و EPOC32 و AtheOS و OpenVMS و OpenEdition و AppleMacintosh, و Mac OS X.[7]،
إصدار Amiga من REXX، يسمى ARexx وكان متضمناً مع 2 AmigaOS وكانت شعبية أبتداءً من البرمجة وكذلك مراقبة التطبيق. العديد من تطبيقات أميغا لديها "منفذ ARexx" "ARexx port" متضمن فيهم مما يتيح السيطرة على التطبيق من Rexx. نص Rexx وحيد يمكنه التبديل بين منافذ Rexx المختلفة من أجل السيطرة على العديد من التطبيقات التي تعمل.
العديد من إصدارات برامج REXX المجانية متاحة. وفي عام 1992، ظهري معظم المنافذ مفتوحة المصدر التي تستخدم على نطاق واسع : REXX/imc من إيان كولير ليونكس وريجينا Regina من اندرس كريستنسن (التي اعتمدت لاحقاً من قبل مارك هيسلينج Mark Hessling) لويندوز ولينكس. BREXX معروفة لـ WinCE وبرامج Pocket PC.
OS/2 لديه نظام بصري تطويري من واتكم Watcom VX-REXX وكتنت هناك لهجة أخرى VisPro REXX من هوكوير Hockware.
في عام 1996 نشر المعهد الوطني الأمريكي للمعايير (ANSI) مقياساً لREXX : ANSI X3.274–1996 "تكنولوجيا المعلومات -- لغة برمجة REXX". وقد تم نشر أكثر من أربعة وعشرون كتاباً في REXX منذ عام 1985.
منذ منتصف التسعينات، ظهر شكلين حديثين من REXX :في عام 1990، نظمت كاثي داغر من SLAC أول ندوة مستقلة عن REXX، مما أدى إلى تشكيل رابطة لغة REXX. وتعقد ندوات سنويا.
ملحوظة REXX حدد عيدها ال25 في 20 مارس 2004، الذي احتفل به في بلوجين، بأمانيا في الندوة العالمية الخامسة عشر لرابطة لغة REXX ،في مايو 2004.
يوم 12 أكتوبر 2004، أعلنت آي بي إم خطتهم لإصدار مصادر تنفيذ Object REXX تحت الرخصة العامة المشتركة Common Public License.الإصدارات الأخيرة من Object REXX تحتوي على مشغل البرامج النصية ActiveX WSH لتنفيذ هذا الإصدار من لغة Rexx.
في 22 فبراير 2005، تم الإعلان عن الإصدار الأول العام من كائن Rexxالمفتوح Open Object Rexx (ooRexx). يحتوي هذا المنتج على مشغل البرمجة النصية WSH الذي يسمح لبرمجة لنظام التشغيل ويندوز والتطبيقات بـ Rexx في نفس الشكل تنفيذ مع Visual Basic و Java/J++بتثبيت WSH الافتراضي وبيرل ومشغلات البرمجة النصية ،Perl و Tcl و.Python-third-party ملحق اسم الملف الافتراضي لنصوص ooRexxScript هو *.rxs.
يتم أيضا تثبيت سطر الأوامر مترجم Rexx مع ooRexx، ومن الممكن أيضا تشغيل برامج ooRexxScript من سطر الأوامر بواسطة الأمر CScript (WScript يمكن أيضا أن يتم تشغيلها من سطر الأوامر) استناداً إلى مضيف برمجة ويندوز.
وقد تم تطوير A Rexx IDE, RxxxEd لويندوز. RxSock لشبكة الاتصالات، فضلا عن الإضافات الأخرى، تطبيقات Regina Rexx تم تطويرها، ومترجم Rexx لسطر أوامر ويندوز تم توفيره في معظم الإصدارات المختلفة من ويندوز وتعمل تحت كل منها وكذلك مايكروسوفت دوس MS-DOS.
Rexx القابلة للنقل بواسطة كيلو-واط Kilowatt و Rexx الشخصية بواسطة كويركس Quercus هما نوعان من مترجمين Rexx صممتا لمايكروسوفت دوس MS-DOS ويمكن بالطبع أن تعمل تحت ويندوز وكذلك باستخدام موجه الأوامر.
في الأصل كانت تسمى فقط " Rex" و"المنفذ المعدل" ؛ " X" الاضافية تم إضاف لتجنب التعارض مع أسماء المنتجات الأخرى. والتوسع في Rexx إلى المنفذ الموسع المعدل يعتقد أن يكون backronym. وكانت ريكس أصلا كافة أحرفها كبيرة لأن رمز الكمبيوتر المركزي كان موجه بالحرف الكبيرة. وكان النمط في تلك الأيام أن كل أسماء تكون بأحرف كبيرة، ويرجع ذلك جزئيا تقريبا أن كل الرموز كانت لا تزال تكتب بالاحرف الكبيرة حينها، ثم أصبح المنتج REXX، وكلا من طبعات كتاب مايك كاوليشاو Cowlishaw تستخدم الإحرف الكبيرة. منالتسعينات كانت مكتوبة في المجمل Rexx، مع أحرف صغيرة : REXX. اعتبارا من عام 2008، مايك كاوليشا و Mike Cowlishaw يبدو وكأنه يفضل Rexx، وثائق آي بي إم استخدمت REXX، مقاييسANSI استخدمت REXX.
بناء التحكم في الحلقة في REXX يبدأ من DO وينتهي مع END نهاية ولكنه يأتي في عدة أشكال. NetRexx تستخدم الكلمة الرئيسية LOOP بدلا من DO لعمل التكرار الحلقي، في حين ooRexx تعامل LOOP و DO بالتساوي في حالة التكرار الحلقي.
الأشكال التقليدية : 
codice_1
codice_2
codice_3
With an index variable:
codice_4
another variant:
codice_5
قد يتم حذف الخطوة الزائدة (Z أعلاه) وافتراضها إلى 1. ويمكن أيضا حذف الحد الأعلى (Y أعلاه) يمكن حذفها، مما يجعل الحلقة تستمر إلى الأبد. يمكنك أيضا يتم التكرار الحلقي إلى الأبد بدون متغير مؤشر مع هذا :
codice_6
يمكن للبرنامج الخروج من الحلقة الحالية مع تعليمات leave (والذي هو الطريق الطبيعي للخروج من الحلقة "الأبدية")، أو يمكن أن تختصر الطريق مع التعليمات iterate.
النماذج do while و do until متعادلة : 
codice_7 
and: 
codice_8
اختبار الشروط مع إذا IF
codice_9
لاحظ أن فقرة ELSE اختياري. 
أو، باختصار :
codice_10
للحصول على تعليمة واحدة، DO و END يمكن حذفها أيضاً :
codice_11
أو، في نسخة موجزة :
codice_12
التفصيل اختياري، ولكنه يساعد على تحسين القراءة.
SELECT هو بناء CASE لـ REXX، مثل غيرها من العديد من البنيات المستمدة من PL/I:
NOP لا يشير تنفيذ أي تعليمات. 
لاحظ أن بند OTHERWISE (الخلاف) اختياري. إذا تم حذفه ولا يتم استيفاء WHEN الشروط، ثم يتم رفع حالة القواعد.
المتغيرات في REXX ليس لها أنواع، وفي البداية يتم تقييمها بأسمائهم، في أحرف كبيرة. وهكذا يمكن أن تختلف أنواع المتغيرات مع استخدامها في البرنامج :
codice_14
خلافا للعديد من لغات البرمجة الأخرى، REXX الكلاسيكية لا يوجد لديها دعم مباشر لمصفوفات المتغيرات التي تعالج بمؤشر عددي. بدلا من ذلك فإنها توفر متغيرات مركبة. المتغير المركب يتكون من جذع يليه ذيل A.. يتم استخدام (نقطة) لضم الجذع إلى الذيل. إذا كانت الذيول المستخدمة رقمية، فمن السهل لإنتاج نفس التأثير كمصفوفة.
codice_15
بعد ذلك المتغيرات التالية مع القيم التالية موجودة : stem.1 == 9, stem.2 = 8, stem.3 == 7...
وخلافا للمصفوفات، مؤشر المتغير الجذعي غير مطلوب أن يكون له قيمة عددية. على سبيل المثال، الرمز التالي هو صحيح :
في REXX أيضاً من الممكن تحديد قيمة افتراضية للجذع.
بعد هذه المهام فإن مصطلح stem.3 سوف ينتج 'شيء غير معروف' 'Unknown'. 
ويمكن أيضا حذف كل الجذع مع عبارة DROP.
codice_17
وله أيضاً تأثير إزالة أي قيمة افتراضية معينة سابقا.
بالاتفاق (وليس كجزء من اللغة) مجمع stem.0 غالبا ما يستخدم لتتبع عدد العناصر الموجودة في الساق، على سبيل المثال إجراء لإضافة كلمة إلى قائمة قد تكون مشفرة مثل هذا : 
codice_18
ومن الممكن أيضا أن يكون هناك عناصر متعددة في ذيل المتغير امركب. على سبيل المثال : 
codice_19
يمكن استخدام عناصر الذيل الرقمي المتعدد لتوفير تأثير مصفوفة متعددة الأبعاد.
تم العثور على ملامح مشابهة لمتغيرات REXX المركبة في العديد من اللغات الأخرى (المصفوفات الترابطية في أووك AWK، علامات الرقم hashes في بيرل Perl، Hashtablesجداول البعثرة في جافا، الخ). ومعظم هذه اللغات توفير تعليمات للتكرار على كل المفاتيح (أو ذيول في لغة REXX) من مثل هذا البناء، ولكن هذا غير موجود في REXX الكلاسيكية. بدلا من ذلك فإنه من الضروري للحفاظ على قوائم المساعدة لقيم الذيل، حسب اقتضاء الأمر. على سبيل المثال في برنامج لعد الكلمات يمكن استخدام الإجراء التالي لتسجيل كل وجود لكلمة.
ومن ثم لاحقا
codice_21
في سبيل بعض الوضوح من الممكن الجمع بين هذه التقنيات إلى جذع واحد. 
codice_22
ثم لاحقا
codice_23
ومع ذلك، لا يوفر REXX شبكة أمان هنا، إذا كانت إحدى الكلمات رقم كامل أقل من dictionary.0 ستفشل في ظروف غامضة.
التطبيقات الحديثة من REXX، بما في ذلك كائن REXX آي بي إم والتطبيقات مفتوحة المصدر مثل ooRexx تشمل بناء لغة جديدة لتبسيط التكرار أكثر من القيمة الجذعية، أو أكثر من مجموعة الكيانات أخرى مثل مصفوفة، قائمة، جدول، الخ. 
codice_24
تعليمات التحليل قوية بوجه خاص ؛ فهى تجمع بين بعض وظائف معالجة السلسلة. وقواعدها هو :
codice_25
حيث الأصل يحدد المصدر : 
الكلمة المفتاحية with مطلوبة للإشارة حيث ينتهي التعبير
والقالب (النموذج) يمكن أن يكون : 
الأحرف العلوية اختيارية، وإذا تم تحديدها، سيتم تحويل البيانات إلى حالة الأحرف العلوية قبل التحليل.
أمثلة : 
باستخدام قائمة من المتغيرات كقالب (كنموذج)
codice_26
سوف يعرض الآتي :
codice_27
استخدام المحدد كقالب :
codice_28
أيضاً يعرض ما يلي :
codice_27
باستخدام المحددات رقم العمود :
codice_30
يعرض ما يلي :
codice_31
القالب يمكن أن استخدام مزيج من المتغيرات والمحددات الحرفية، ومحددات رقم العمود.
تعليمات التفسير تقيم معاملاتها، وتعامل قيمتها كعبارة REXX. أحيانا التفسير هو أوضح وسيلة لتنفيذ المهمة، ولكن غالبا ما يستخدم عند وجود رمز أكثر وضوحا باستخدام مثلاً قيمة، value()..
codice_32
هذا يعرض 16 والمخارج. لأن محتويات المتغير في REXX هي سلاسل، متضمنة أرقام منطقية مع رموز أسية وحتى البرامج بأكملها، REXX يعرض تفسير السلاسل كمصطلحات مقيمة.
ويمكن استخدام هذه الميزة لتمرير الوظائف كمعاملات الوظيفة، مثل تمرير SIN، COS، إلخ. إلى الإجراء لحساب التكاملات.
علما بأن REXX توفر الوظائف الحسابية الأساسية فقط مثل ABS و DIGITS و MAX و MIN و SIGN و RANDOM، ومجموعة كاملة من التحويلات الثنائية والزائدة عن السداسية مع عمليات بت. وظائف أكثر تعقيدا مثل SIN يجب أن تنفذ بالتسويد أو يتم الحصول عليها من المكتبات الخارجية للطرف الثالث. إن بعض المكتبات الخارجية، التي تنفذ بتلك اللغات التقليدية، لا تدعم الدقة الموسعة.
الإصدارات اللاحقة (غير الكلاسيكية) تؤيد بناء المتغير CALL. جنباً إلى جنب مع وظيفة القيمة VALUE المتضمنة، يمكن استخدام CALL في مكان كثير من حالات التفسير INTERPRET.
هذا هو برنامج كلاسيكي :
codice_33
آلة حاسبة REXX أكثر تعقيدا قليلا:
codice_34
PULL هو اختصار لـ parse upper pull (سحب تخليل علوي)
وبالمثل، ARG هو اختصار لـ parse upper arg (معمل تحليل علوي)
وكانت قوة تعليمات التفسير لها استخدامات أخرى. حزمة برامج Valour software (الشجاعة) أعتمد عليها قدرة REXX التفسيرية لتنفيذ بيئة OOP. عثر على استخدام اخر لها في منتج ويستنغهاوس Westinghouse الغير معلن [disambiguation needed] الذي يسمى آلة الزمن الذي كان قادرا على تصحيح الأخطاء الفادحة بشكل كامل.
codice_35
تعليمات إشارة REXX هدفها التغييرات الغير طبيعية في تدفق التحكم (راجع المقطع التالي). ومع ذلك، فإنه يمكن أن يساء استخدامها ومعالجتها مثل عبارة GOTO التي وجدت في لغات أخرى (على الرغم من أنها غير متساوية تماما، بسبب حلقات النهاية وبنيات أخرى). هذا يمكن ان ينتج رمز من الصعب قراءته difficult-to-read code.
من الممكن في REXX التصدي للأخطاء والتعامل معها والاستثناءات الأخرى، وذلك باستخدام تعليمة SIGNAL (الإشارة). هناك سبع حالات للنظام: خطأ ERROR، الفشل FAILURE، توقف HALT، لا قيمة NOVALUE، غير مستعد NOTREADY، أرقام ضائعة LOSTDIGITS والقواعد SYNTAX. ومعالجة كل منها يمكن أن تبدل تشغيل أو إيقاف في رمز المصدر على النحو المرغوب فيه.
هذا المثال سوف يستمر حتى يتم وقفه من قبل المستخدم :
في معظم أجهزة الكمبيوتر، فإن الوقف يتحقق عن طريق الضغط على Ctrl-Pause (وتسمى أيضا مفتاح الكسرأو الإيقاف).
في بعض الأنظمة المركزية، الضغط على مفتاح PA1 (يساعد البرنامج Program Assist).
codice_36
تقريبا جميع برامج REXX الجادة تحتوي على إشارة novalue أو عبارة مماثل. هذا يعطل "الميزة"، حيث المتغيرات الغير معروف تحصل على (حالة الأحرف الكبيرة) الاسم كالقيمة. يمكن التحقق من حالة المتغير مع وظيفة SYMBOL المتضمنة تعيد VAR للمتغيرات المحددة.
الوظيفة VALUE يمكن استخدامها للحصول على قيمة المتغيرات دون أن تسبب حالة NOVALUE، ولكن الغرض الرئيسي منها هو لقراءة وتعيين متغيرات البيئة environment variables—المماثلة لPOSIXgetenv وputenv.
عندما يتم معالجة الوضع عن طريق SIGNAL ON فإن متغيرات نظام التشغيل SIGL وRC يمكن تحليلها لفهم الوضع. RC يحتوي على رمز خطأ REXX وSIGL يحتوي على رقم السطر حيث نشأ الخطأ.
بدءا من إصدارREXX الرابع بدأت الأوضاع أن يكون لها أسماء، وهناك أيضا SIGNAL ON دعوة للبناء. وهى مفيد إذا المهام الخارجية غير موجودة بالضرورة :
codice_37
AmigaOS
(s) with native REXX support
-like language compiling into Java byte code
برمجة كائنية التوجه based on the REXX language