VSI BASIC for OpenVMS
ওপেনভিএমএস-এর জন্য ভিএসআই বেসিক হল ডিজিটাল ইকুইপমেন্ট কর্পোরেশন (ডিইসি) দ্বারা নির্মিত এবং এখন ভিএমএস সফ্টওয়্যার ইনকর্পোরেটেড (ভিএসআই)-এর মালিকানাধীন বেসিক প্রোগ্রামিং ভাষার একটি উপভাষার সর্বশেষ নাম। এটি মূলত 1970-এর দশকে পিডিপি-11 মিনিকম্পিউটারের আরএসটিএস-11 অপারেটিং সিস্টেমের জন্য বেসিক-প্লাস হিসাবে তৈরি করা হয়েছিল। এটি পরে ওপেনভিএমএস-এ পোর্ট করা হয়েছিল, প্রথমে ভিএএক্স-এ, তারপর আলফা এবং অতি সম্প্রতি ইন্টিগ্রিটিতে। পণ্যটির অতীতের নামগুলির মধ্যে রয়েছেঃ বেসিক-প্লাস, বেসিক প্লাস 2 (বিপি2 বা বেসিক-প্লাস-2), ভ্যাক্স বেসিক, ডিইসি বেসিক, ওপেনভিএমএস-এর জন্য কমপ্যাক বেসিক এবং ওপেনভিএমএস-এর জন্য এইচপি বেসিক। হার্ডওয়্যার প্ল্যাটফর্ম (ভিএএক্স, আলফা সার্ভার, ইত্যাদি) উল্লেখ করে শিরোনামগুলির একাধিক বৈচিত্র। অস্তিত্বও রয়েছে। উল্লেখযোগ্য বৈশিষ্ট্যগুলি হল ভিএসআই বেসিক-এর অনেকগুলি ফোরট্রান-সদৃশ এক্সটেনশন রয়েছে, পাশাপাশি মূল ডার্টমাউথ বেসিক ম্যাট্রিক্স অপারেটরদের সমর্থন করে। লাইন নম্বরগুলি ঐচ্ছিক, যদি না "ই. আর. এল" ফাংশন উপস্থিত থাকে। এটি আপনাকে সুরক্ষিত বিবৃতিগুলির চারপাশে "কখন ত্রুটি" ত্রুটি হ্যান্ডলার লিখতে দেয়। আরও ঐতিহ্যবাহী কিন্তু কম মার্জিত "ভুলের উপর" বিবৃতির এই ধরনের প্রসঙ্গ বা সুযোগের অভাব রয়েছে। ভিএসআই বেসিকের আরও উল্লেখযোগ্য বৈশিষ্ট্যগুলির মধ্যে একটি হল ওপেনভিএমএস-এর শক্তিশালী রেকর্ড ম্যানেজমেন্ট সার্ভিসেস (আরএমএস)-এর জন্য অন্তর্নির্মিত সমর্থন। ভিএএক্স বেসিক প্রকাশের আগে, নেটিভ আরএমএস সমর্থন শুধুমাত্র ডিইসি-র কোবল সংকলক-এ উপলব্ধ ছিল। ইতিহাস ওপেনভিএমএস পণ্যের জন্য ভিএসআই বেসিক 30 বছরেরও বেশি সময় ধরে বিস্তৃত এবং সেই সময়ে এটি অনেক নাম এবং মালিকানা পরিবর্তনের মধ্য দিয়ে গেছে। ডিইসি, কমপ্যাক, এইচপি এবং ভিএসআই দ্বারা বিকশিত হওয়ায় এটি ধারাবাহিকভাবে নতুন প্ল্যাটফর্মগুলিতে পোর্ট করা হয়েছে। কোম্পানি এবং/অথবা প্ল্যাটফর্মের নাম প্রায়শই পণ্যের নামে অন্তর্ভুক্ত করা হয়, যা নামের প্রসারে অবদান রাখে। বেসিক-প্লাস ভিএসআই বেসিক বেসিক-প্লাস হিসাবে শুরু হয়েছিল, যা ডিইসি তাদের আরএসটিএস-11 অপারেটিং সিস্টেম এবং পিডিপি-11 মিনিকম্পিউটারের জন্য তৈরি করেছিল। প্রোগ্রামিং ভাষার বিবৃতিগুলি সরাসরি কমান্ড ইন্টারপ্রেটার-এ টাইপ করা যেতে পারে, অথবা একটি টেক্সট এডিটর-এ প্রবেশ করা যেতে পারে, একটি ফাইলে সংরক্ষণ করা যেতে পারে এবং তারপর ফাইল থেকে কমান্ড ইন্টারপ্রেটার-এ লোড করা যেতে পারে। লাইনটি প্রবেশ করার পরপরই ব্যবহারকারীকে সোর্স কোডের ত্রুটিগুলি জানানো হয়েছিল। "সেভ" কমান্ড ব্যবহার করে প্রোগ্রামগুলি একটি উৎস ফাইল হিসাবে সংরক্ষণ করা হয়েছিল। "কম্পাইল" কমান্ড ব্যবহার করে এটি একটি অ-সম্পাদনাযোগ্য বাইনারি ফাইলে "কম্পাইল" করা যেতে পারে। এই কমান্ডটি প্রকৃত মেশিন ল্যাঙ্গুয়েজ প্রোগ্রাম তৈরি করেনি, বরং "টোকেন" নামে একটি বাইট কোড তৈরি করেছে। টোকেনগুলি কার্যকর করার পরে আরও আধুনিক জাভার মতো পদ্ধতিতে ব্যাখ্যা করা হয়েছিল। 1 থেকে 32767 পর্যন্ত পূর্ণসংখ্যা সহ লাইন নম্বর দিয়ে শুরু করে কমান্ড ইন্টারপ্রেটারের মধ্যে প্রোগ্রামগুলি প্রবেশ করানো হয়েছিল। লাইন ফিড চরিত্র ব্যবহার করে একাধিক লাইনে লাইন চালিয়ে যাওয়া যেতে পারে। উৎস ফাইলের বাহ্যিক সম্পাদনার সুবিধার জন্য, বেসিক-প্লাস-এর পরবর্তী সংস্করণগুলিও & অক্ষরকে লাইন-কন্টিনিউয়েশন অক্ষর হিসাবে অনুমতি দেয়। বিবৃতি বিভাজক হিসাবে ব্যবহার করে একক লাইনে একাধিক বিবৃতি স্থাপন করা যেতে পারে। ভার্চ্যুয়াল মেমোরি (আর. এস. টি. এস/ই) সহ পি. ডি. পি-11 সিস্টেমের জন্য, ঠিকানার স্থান প্রায় 64 কেবি-র মধ্যে সীমাবদ্ধ ছিল। বেসিক-প্লাসের ক্ষেত্রে, এর প্রায় অর্ধেক সম্মিলিত কমান্ড ইন্টারপ্রেটার এবং রান-টাইম লাইব্রেরি দ্বারা ব্যবহৃত হত। এই সীমিত ব্যবহারকারী প্রোগ্রামগুলি প্রায় 32 কেবি মেমরিতে। পুরনো আর. এস. টি. এস-11 সিস্টেমে ভার্চ্যুয়াল মেমরির অভাব ছিল, তাই আর. এস. টি. এস এবং বেসিক-প্লাস তাদের অংশ নেওয়ার পরে ব্যবহারকারী প্রোগ্রামটিকে শারীরিক মেমরির অবশিষ্টাংশের সাথে খাপ খাইয়ে নিতে হয়েছিল। উদাহরণস্বরূপ, আর. এস. টি. এস-11 ভি. 04বি-17 চালিত 32কে ফিজিক্যাল মেমোরি সহ পি. ডি. পি-<আই. ডি. 1>-এ ব্যবহারকারী প্রোগ্রামগুলি 7 কেবি-র মধ্যে সীমাবদ্ধ ছিল। "চেইন" নির্দেশ ব্যবহার করে বড় প্রোগ্রামগুলিকে বিভিন্ন অংশে ভাগ করা যেতে পারে। প্রোগ্রামগুলি একটি গৌণ প্রোগ্রামে নির্দিষ্ট লাইন সংখ্যার সাথে চেইন করতে পারে। কোর কমন নামে একটি ভাগ করা মেমরি বিভাগের ব্যবহার প্রোগ্রামগুলিকে প্রয়োজন অনুসারে একে অপরের মধ্যে ডেটা পাস করার অনুমতি দেয়; ডিস্ক ফাইলগুলিও ব্যবহার করা যেতে পারে তবে ধীর ছিল। দোভাষীতে একটি আবর্জনা সংগ্রহকারী মেমরি ম্যানেজার অন্তর্ভুক্ত ছিল, যা স্ট্রিং ডেটা এবং বাইট-কোড উভয়ের জন্যই ব্যবহৃত হত। একটি চলমান প্রোগ্রাম বিঘ্নিত হতে পারে, পরিবর্তনশীল পরীক্ষা এবং সংশোধন করা যেতে পারে, এবং তারপর পুনরায় শুরু করা যেতে পারে। WHILE এবং UNTIL সহ অন্যান্য উচ্চ-স্তরের ভাষায় ব্যবহৃত অনেক নিয়ন্ত্রণ কাঠামো বেসিক-প্লাসে বিদ্যমান ছিল। ভাষাটি একক লাইনে শর্তাধীন পরিবর্তনকারীদের ব্যবহারকেও সমর্থন করেছিল। উদাহরণস্বরূপ, "" লাইনটি "আই"-এর মান মুদ্রণ করবে যদি না আমি 10-এর কম হতাম। বেসিক প্লাস 2 বেসিক প্লাস 2 (বিপি2 বা বেসিক-প্লাস-2) পরে ডিইসি দ্বারা অতিরিক্ত বৈশিষ্ট্য যোগ এবং কর্মক্ষমতা বাড়ানোর জন্য তৈরি করা হয়েছিল। এটি থ্রেডেড কোডে সত্য সংকলন ব্যবহার করে এবং এর আউটপুট মেশিন ল্যাঙ্গুয়েজ অবজেক্ট ফাইলগুলিতে লিখে দেয়। এগুলি সিস্টেমের অন্যান্য অবজেক্ট ফাইলের সাথে সামঞ্জস্যপূর্ণ ছিল এবং গ্রন্থাগারগুলিতে একত্রিত করা যেতে পারে। একটি লিঙ্কার (টি. কে. বি টাস্ক বিল্ডার) তারপর তাদের থেকে এক্সিকিউটেবল ফাইল তৈরি করে। টি. কে. বি ওভারলেগুলিকেও সমর্থন করেছিল; এটি প্রয়োজন অনুসারে পৃথক রুটিনগুলিকে মূল মেমরি স্পেসে অদলবদল করার অনুমতি দেয়। বিপি2 প্রোগ্রামগুলি আরএসএক্স-11 বা আরএসটিএস/ই-এর আরএসএক্স রান টাইম সিস্টেমের অধীনে চলে। এই আরটিএস শুধুমাত্র ব্যবহারকারীর ঠিকানা স্থানের 8কেবি (পরে, 2কেবি) দখল করে, ব্যবহারকারীর প্রোগ্রামের জন্য 56কেবি রেখে যায়। এই দুটি কারণ পৃথক বিপি2 প্রোগ্রামকে বেসিক-প্লাস প্রোগ্রামের তুলনায় অনেক বড় হতে দেয়, যা প্রায়শই চেইনিংয়ের প্রয়োজনীয়তা দূর করে। বেসিক-প্লাসের (যা শুধুমাত্র আর. এস. টি. এস-11-এ উপলব্ধ ছিল) বিপরীতে, বি. পি. 2 আর. এস. এক্স-11 অপারেটিং সিস্টেমেও ব্যবহারের অনুমতি দেয়। ভিএএক্স মিনি কম্পিউটার তৈরির সাথে সাথে ডিইসি নতুন ভিএমএস অপারেটিং সিস্টেমে বেসিক-প্লাস-2 পোর্ট করে এবং এটিকে ভিএএক্স বেসিক নামে অভিহিত করে। ভিএএক্স বেসিক স্ট্যান্ডার্ড ভিএমএস কলিং স্ট্যান্ডার্ড ব্যবহার করে, তাই ভিএএক্স বেসিক দ্বারা উত্পাদিত অবজেক্ট কোডকে অন্য যে কোনও ভিএমএস ভাষা দ্বারা উত্পাদিত অবজেক্ট কোডের সাথে যুক্ত করা যেতে পারে। বেসিক প্লাস 2-এর সোর্স কোড সাধারণত ভিএএক্স বেসিক-এ কোনও বড় পরিবর্তন ছাড়াই চলে। যখন ডিইসি তাদের আলফা মাইক্রোপ্রসেসর তৈরি করে, তখন ভিএমএস এটিতে পোর্ট করা হয় এবং ওপেনভিএমএস নামকরণ করা হয়। একইভাবে ভিএএক্স বেসিককে আলফায় পোর্ট করা হয়েছিল এবং নাম পরিবর্তন করে ডিইসি বেসিক রাখা হয়েছিল। এই মুহুর্তে বেসিক ইন্টারপ্রেটার স্থায়ীভাবে বাদ দেওয়া হয়েছিল, যার অর্থ ছিল যে ডিইসি বেসিক প্রোগ্রামগুলি শুধুমাত্র ওপেনভিএমএস এক্সিকিউটেবল হিসাবে চালানো যেতে পারে, একটি সংকলন দ্বারা উত্পাদিত একটি লিঙ্ক দ্বারা অনুসরণ করা হয়। কম্পাক, এইচপি এবং ভিএসআই যখন ডিইসি কিনেছিল, তখন পণ্যগুলির নাম পরিবর্তন করে ওপেনভিএমএস ভিএএক্স-এর জন্য কম্পাক বেসিক এবং ওপেনভিএমএস আলফার জন্য কম্পাক বেসিক রাখা হয়েছিল। একইভাবে, যখন কমপ্যাক এইচপি-র সাথে 2001/02-এ একীভূত হয়, তখন পণ্যগুলির নাম পরিবর্তন করে এইচপি বেসিক ফর ওপেনভিএমএস অন ভিএএক্স এবং এইচপি বেসিক ফর ওপেনভিএমএস অন আলফা সার্ভার রাখা হয়। এইচপি পরে ইন্টেলের ইটানিয়াম প্রসেসরের উপর ভিত্তি করে তাদের ইন্টিগ্রিটি সার্ভার প্ল্যাটফর্মের জন্য ইন্টিগ্রিটিতে ওপেনভিএমএসের জন্য এইচপি বেসিক প্রকাশ করে। 2014 সালের মাঝামাঝি সময়ে, এইচপি পুরো ওপেনভিএমএস বাস্তুতন্ত্রটি ভিএসআই-এর কাছে বিক্রি করে দেয়, যারা পণ্যটির নাম পরিবর্তন করে ওপেনভিএমএস-এর জন্য ভিএসআই বেসিক রাখে। নমুনা কোড ভি. এস. আই বেসিক হল বেসিকের একটি কাঠামোগত রূপ যেখানে লাইন নম্বরগুলি ঐচ্ছিক, এবং ভাষাটি এস. ইউ. বি এবং ফাংশন উভয়কেই সমর্থন করে। হ্যালো, ওয়ার্ল্ড প্রিন্ট "হ্যালো, ওয়ার্ল্ড!" সেলসিয়াস থেকে ফারেনহাইট রূপান্তর ফাংশন বাস্তব থেকে ফারেনহাইট (বাস্তব সেলসিয়াস) থেকে ফারেনহাইট = (সেলসিয়াস * 1.8) + 32 শেষ ফাংশন বাহ্যিক বাস্তব ফাংশন থেকে ফারেনহাইট (বাস্তব) আসল তাপমাত্রা ঘোষণা করে যখন মুদ্রণের ত্রুটি হয় "সেলসিয়াসে তাপমাত্রা প্রবেশ করান"; ইনপুট x টেম্প সেলসিয়াস = বাস্তব (x) মুদ্রণ ব্যবহার করুন "ত্রুটিঃ দয়া করে একটি বৈধ সংখ্যাসূচক মান প্রবেশ করান"। শেষ হয় যখন "তাপমাত্রা ডিগ্রি ফারেনহাইট হয়"; থেকে _ ফারেনহাইট (টেম্প সেলসিয়াস) শেষ রেফারেন্স বাহ্যিক লিঙ্ক এইচপি-তে অফিসিয়াল বেসিক ডকুমেন্টেশন ওপেনভিএমএস-এর জন্য এইচপি বেসিক "সোর্স কোড ডেমো এবং উদাহরণ" বেসিক কোড সহ নিবন্ধ ওপেনভিএমএস সফ্টওয়্যার বেসিক কম্পাইলার বেসিক প্রোগ্রামিং ভাষা পরিবার