VSI BASIC for OpenVMS
ओपनवीएमएस के लिए वी. एस. आई. बेसिक डिजिटल उपकरण निगम (डी. ई. सी.) द्वारा बनाई गई बेसिक प्रोग्रामिंग भाषा की एक बोली का नवीनतम नाम है और अब वी. एम. एस. सॉफ्टवेयर निगमित (वी. एस. आई.) के स्वामित्व में है। इसे मूल रूप से 1970 के दशक में पीडीपी-11 मिनी कंप्यूटर पर आरएसटीएस-11 ऑपरेटिंग सिस्टम के लिए बेसिक-प्लस के रूप में विकसित किया गया था। बाद में इसे ओपनवीएमएस में पोर्ट किया गया, पहले वीएएक्स, फिर अल्फा और हाल ही में इंटीग्रिटी पर। उत्पाद के पिछले नामों में शामिल हैंः बेसिक-प्लस, बेसिक प्लस 2 (बी. पी. 2 या बेसिक-प्लस-2), वी. ए. एक्स. बेसिक, डी. ई. सी. बेसिक, ओपन वी. एम. एस. के लिए कॉम्पैक बेसिक और ओपन वी. एम. एस. के लिए एच. पी. बेसिक। हार्डवेयर प्लेटफॉर्म (वीएएक्स, अल्फासर्वर, आदि) को ध्यान में रखते हुए शीर्षकों के कई बदलाव। भी मौजूद है। उल्लेखनीय विशेषताएँ वी. एस. आई. बेसिक में कई फोरट्रान जैसे विस्तार हैं, साथ ही साथ मूल डार्टमाउथ बेसिक मैट्रिक्स ऑपरेटरों का समर्थन करते हैं। पंक्ति संख्याएँ वैकल्पिक हैं, जब तक कि "ई. आर. एल". कार्य मौजूद न हो। यह आपको संरक्षित बयानों के आसपास "WHEN ERROR" त्रुटि हैंडलर लिखने की अनुमति देता है। अधिक पारंपरिक लेकिन कम सुरुचिपूर्ण "त्रुटि पर" कथन में इस तरह के संदर्भ या दायरे का अभाव है। वीएसआई बेसिक की अधिक उल्लेखनीय विशेषताओं में से एक ओपनवीएमएस की शक्तिशाली रिकॉर्ड प्रबंधन सेवाओं (आरएमएस) के लिए अंतर्निहित समर्थन है। वैक्स बेसिक के जारी होने से पहले, देशी आर. एम. एस. समर्थन केवल डी. ई. सी. के कोबोल संकलक में उपलब्ध था। इतिहास ओपनवीएमएस उत्पाद इतिहास के लिए वीएसआई बेसिक 30 से अधिक वर्षों की अवधि में फैला हुआ है, और यह उस समय में कई नाम और स्वामित्व परिवर्तनों से गुजरा है। डी. ई. सी., कॉम्पैक, एच. पी. और वी. एस. आई. द्वारा विकसित किए जाने के कारण इसे कई नए प्लेटफार्मों में भी रखा गया है। कंपनी और/या प्लेटफॉर्म का नाम अक्सर उत्पाद के नाम में शामिल किया गया है, जो नामों के प्रसार में योगदान देता है। बेसिक-प्लस वी. एस. आई. बेसिक की शुरुआत बेसिक-प्लस के रूप में हुई, जिसे डी. ई. सी. ने अपने आर. एस. टी. एस.-11 ऑपरेटिंग सिस्टम और पी. डी. पी.-11 मिनी कंप्यूटर के लिए बनाया था। प्रोग्रामिंग भाषा के कथनों को या तो सीधे कमांड दुभाषिया में टाइप किया जा सकता है, या एक पाठ संपादक में दर्ज किया जा सकता है, एक फ़ाइल में सहेजा जा सकता है, और फिर फ़ाइल से कमांड दुभाषिया में लोड किया जा सकता है। लाइन दर्ज किए जाने के तुरंत बाद उपयोगकर्ता को स्रोत कोड में त्रुटियों की सूचना दी गई। प्रोग्राम को "सेव" कमांड का उपयोग करके एक स्रोत फ़ाइल के रूप में संग्रहीत किया गया था। इसे "कम्पाइल" कमांड का उपयोग करके एक गैर-संपादन योग्य द्विआधारी फ़ाइल में "संकलित" किया जा सकता है। यह आदेश वास्तविक मशीनी भाषा प्रोग्रामों का उत्पादन नहीं करता था, बल्कि "टोकन" नामक एक बाइट कोड का उत्पादन करता था। टोकन की व्याख्या निष्पादन पर अधिक आधुनिक जावा के समान तरीके से की गई थी। कमांड इंटरप्रेटर में 1 से 32767 तक के पूर्णांक, लाइन नंबरों से शुरू होने वाले प्रोग्राम दर्ज किए गए थे। लाइन फ़ीड चरित्र का उपयोग करके कई लाइनों पर लाइनों को जारी रखा जा सकता है। स्रोत फ़ाइल के बाहरी संपादन की आसानी के लिए, बेसिक-प्लस के बाद के संस्करणों ने भी & वर्ण को एक पंक्ति-निरंतरता वर्ण के रूप में अनुमति दी। कथन विभाजक के रूप में उपयोग करते हुए एक ही पंक्ति पर कई कथन रखे जा सकते हैं। वर्चुअल मेमोरी (आर. एस. टी. एस./ई.) के साथ पी. डी. पी.-11 प्रणालियों के लिए, पता स्थान लगभग 64 के. बी. तक सीमित था। बेसिक-प्लस के साथ, इसका लगभग आधा हिस्सा संयुक्त कमांड इंटरप्रेटर और रन-टाइम लाइब्रेरी द्वारा उपयोग किया जाता था। यह उपयोगकर्ता कार्यक्रमों को लगभग 32 के. बी. मेमोरी तक सीमित करता है। पुराने आर. एस. टी. एस.-11 प्रणालियों में आभासी स्मृति की कमी थी, इसलिए आर. एस. टी. एस. और बेसिक-प्लस द्वारा अपना हिस्सा लेने के बाद उपयोगकर्ता कार्यक्रम को भौतिक स्मृति में जो कुछ भी बचा था, उसमें फिट होना पड़ा। उदाहरण के लिए, 32के भौतिक स्मृति के साथ पीडीपी-11/35 पर, आरएसटीएस-11 वी04बी-17 चलाने वाले उपयोगकर्ता प्रोग्राम 7केबी तक सीमित थे। "चीन" निर्देश का उपयोग करके बड़े कार्यक्रमों को विभिन्न टुकड़ों में विभाजित किया जा सकता है। प्रोग्राम एक द्वितीयक प्रोग्राम में विशिष्ट लाइन नंबरों के लिए श्रृंखला बना सकते हैं। कोर कॉमन नामक एक साझा स्मृति खंड के उपयोग ने भी कार्यक्रमों को आवश्यकता के अनुसार एक-दूसरे के बीच डेटा पारित करने की अनुमति दी; डिस्क फ़ाइलों का भी उपयोग किया जा सकता था लेकिन वे धीमी थीं। दुभाषिया में एक कचरा संग्रह स्मृति प्रबंधक शामिल था, जिसका उपयोग स्ट्रिंग डेटा और बाइट-कोड दोनों के लिए किया जाता था। एक चल रहे कार्यक्रम को बाधित किया जा सकता है, चर की जांच और संशोधन किया जा सकता है, और फिर फिर से शुरू किया जा सकता है। डब्ल्यू. एच. आई. एल. ई. और यू. एन. टी. आई. एल. सहित अन्य उच्च-स्तरीय भाषाओं में उपयोग की जाने वाली कई नियंत्रण संरचनाएँ बेसिक-प्लस में मौजूद थीं। भाषा ने एकल पंक्ति पर सशर्त परिवर्तकों के उपयोग का भी समर्थन किया। उदाहरण के लिए, जब तक मैं 10 से कम न हो, तब तक पंक्ति "I" का मान प्रिंट करेगी। बेसिक प्लस 2 बेसिक प्लस 2 (बी. पी. 2 या बेसिक-प्लस-2) को बाद में डी. ई. सी. द्वारा अतिरिक्त सुविधाओं को जोड़ने और प्रदर्शन बढ़ाने के लिए विकसित किया गया था। इसने थ्रेडेड कोड में सही संकलन का उपयोग किया, और अपने आउटपुट को मशीन भाषा ऑब्जेक्ट फ़ाइलों में लिखा। ये सिस्टम पर अन्य ऑब्जेक्ट फ़ाइलों के साथ संगत थे, और इन्हें पुस्तकालयों में इकट्ठा किया जा सकता था। एक लिंकर (टीकेबी टास्कबिल्डर) ने तब उनसे निष्पादन योग्य फाइलें बनाईं। टीकेबी ने ओवरले का भी समर्थन किया; इसने व्यक्तिगत दिनचर्या को आवश्यकतानुसार मुख्य स्मृति स्थान में अदला-बदली करने की अनुमति दी। बी. पी. 2 कार्यक्रम आर. एस. एक्स.-11 या आर. एस. टी. एस./ई. के आर. एस. एक्स. रन टाइम सिस्टम के तहत चलते थे। इस आरटीएस ने उपयोगकर्ता के पते के स्थान के केवल 8केबी (बाद में, 2केबी) पर कब्जा कर लिया, जिससे उपयोगकर्ता के कार्यक्रम के लिए 56केबी रह गया। इन दो कारकों ने व्यक्तिगत बी. पी. 2 कार्यक्रमों को बेसिक-प्लस कार्यक्रमों की तुलना में बहुत बड़ा होने दिया, जिससे अक्सर चेनिंग की आवश्यकता समाप्त हो गई। बेसिक-प्लस (जो केवल आर. एस. टी. एस.-11 पर उपलब्ध था) के विपरीत, बी. पी. 2 ने आर. एस. एक्स.-11 ऑपरेटिंग सिस्टम पर भी उपयोग की अनुमति दी। वैक्स बेसिक और डी. ई. सी. बेसिक वैक्स मिनी कंप्यूटर के निर्माण के साथ, डी. ई. सी. ने नए वी. एम. एस. ऑपरेटिंग सिस्टम में बेसिक-प्लस-2 को पोर्ट किया, और इसे वैक्स बेसिक कहा। वैक्स बेसिक ने मानक वी. एम. एस. कॉलिंग मानकों का उपयोग किया, इसलिए वैक्स बेसिक द्वारा उत्पादित ऑब्जेक्ट कोड को किसी भी अन्य वी. एम. एस. भाषाओं द्वारा उत्पादित ऑब्जेक्ट कोड के साथ जोड़ा जा सकता है। बेसिक प्लस 2 के लिए स्रोत कोड आमतौर पर वैक्स बेसिक पर बड़े बदलावों के बिना चलता है। जब डी. ई. सी. ने अपना अल्फा माइक्रोप्रोसेसर बनाया, तो वी. एम. एस. को इसमें पोर्ट किया गया और इसका नाम बदलकर ओपन. वी. एम. एस. कर दिया गया। वैक्स बेसिक को इसी तरह अल्फा में पोर्ट किया गया और इसका नाम बदलकर डी. ई. सी. बेसिक कर दिया गया। बेसिक दुभाषिया को इस बिंदु पर स्थायी रूप से हटा दिया गया था, जिसका अर्थ था कि डी. ई. सी. बेसिक कार्यक्रमों को केवल ओपनवी. एम. एस. निष्पादन के रूप में चलाया जा सकता था, जो एक संकलन के बाद एक लिंक द्वारा उत्पादित किया जाता था। कॉम्पैक, एच. पी. और वी. एस. आई. जब डी. ई. सी. को कॉम्पैक द्वारा 1997/98 में खरीदा गया, तो उत्पादों का नाम बदलकर ओपनवी. एम. एस. वी. ए. एक्स. के लिए कॉम्पैक बेसिक और ओपनवी. एम. एस. अल्फा के लिए कॉम्पैक बेसिक कर दिया गया। इसी तरह, जब 2001/02 में कॉम्पैक का एचपी के साथ विलय हुआ, तो उत्पादों का नाम बदलकर वीएएक्स पर ओपनवीएमएस के लिए एचपी बेसिक और अल्फासर्वर पर ओपनवीएमएस के लिए एचपी बेसिक कर दिया गया। एचपी ने बाद में इंटेल के आइटेनीयम प्रोसेसर पर आधारित अपने इंटीग्रिटी सर्वर प्लेटफार्मों के लिए इंटीग्रिटी पर ओपनवीएमएस के लिए एचपी बेसिक जारी किया। 2014 के मध्य में, एचपी ने पूरे ओपनवीएमएस पारिस्थितिकी तंत्र को वीएसआई को बेच दिया, जिसने उत्पाद का नाम बदलकर ओपनवीएमएस के लिए वीएसआई बेसिक कर दिया। नमूना कोड वी. एस. आई. बेसिक बेसिक का एक संरचित संस्करण है जिसमें पंक्ति संख्या वैकल्पिक है, और भाषा एस. यू. बी. और कार्य दोनों का समर्थन करती है। हैलो, वर्ल्ड प्रिंट "हैलो, वर्ल्ड!" सेल्सियस से फ़ारेनहाइट रूपांतरण फ़ंक्शन वास्तविक से फ़ारेनहाइट (वास्तविक सेल्सियस) से फ़ारेनहाइट = (सेल्सियस * 1.8) + 32 अंतिम फ़ंक्शन बाहरी वास्तविक फ़ंक्शन से फ़ारेनहाइट (वास्तविक) वास्तविक तापमान सेल्सियस घोषित करता है जब प्रिंट में त्रुटि "सेल्सियस में तापमान दर्ज करें"; इनपुट x तापमान सेल्सियस = वास्तविक (x) प्रिंट का उपयोग करें "त्रुटिः कृपया एक वैध संख्यात्मक मान दर्ज करें"। अंत में जब "डिग्री फ़ारेनहाइट में तापमान है"; से _ फ़ारेनहाइट (टेम्प _ सेल्सियस) अंत संदर्भ बाहरी लिंक एचपी में आधिकारिक बेसिक प्रलेखन ओपनवीएमएस के लिए एचपी बेसिक "स्रोत कोड डेमो और उदाहरण" उदाहरण के साथ लेख बेसिक कोड ओपनवीएमएस सॉफ्टवेयर बेसिक कंपाइलर बेसिक प्रोग्रामिंग भाषा परिवार