ثابت هوليريث

تم استخدام ثوابت هوليريث ، التي سميت تكريماً لهيرمان هوليريث ، في برامج FORTRAN المبكرة للسماح بمعالجة بيانات الأحرف.

في بدايات لغة فورتران، لم تكن CHARACTERأنواع البيانات مُعرّفة، بل كانت تقتصر على الأنواع العددية. ولإجراء عمليات على الأحرف، كان لا بد من وضعها في متغيرات عددية باستخدام ثوابت هوليريث. على سبيل المثال، 3HABCيُحدد الثابت سلسلة نصية من ثلاثة أحرف "ABC"، يتم تحديدها بواسطة العدد الصحيح الأولي الذي يُمثل طول السلسلة 3، وحرف هوليريث المُحدد H، متبوعًا ببيانات السلسلة ABC. كانت هذه الثوابت بلا نوع ، لذا لم تكن هناك أي مشاكل في تحويل الأنواع . إذا حدد الثابت عددًا من الأحرف أقل مما يُمكن تخزينه في عنصر البيانات، فسيتم تخزين الأحرف في العنصر مع محاذاة لليسار وملء الفراغات .

الميكانيكا

وفقًا لمعيار FORTRAN 66 ، كان استخدام صيغة Hollerith مسموحًا به في الاستخدامات التالية:

  • كثوابت في DATAالعبارات
  • باعتبارها وسائط فعلية ثابتة في CALLعبارات الروتين الفرعي
  • كأوصاف تحرير في FORMATالعبارات

كانت قابلية النقل مشكلةً مع ثوابت هوليريث. أولًا، تباينت أحجام الكلمات على أنظمة الحاسوب المختلفة، وبالتالي تباين عدد الأحرف التي يمكن وضعها في كل عنصر بيانات. وتراوحت التطبيقات من حرفين إلى عشرة أحرف لكل كلمة. ثانيًا، كان من الصعب التعامل مع الأحرف الفردية داخل الكلمة بطريقة قابلة للنقل. وقد أدى ذلك إلى استخدام الكثير من التعليمات البرمجية الخاصة بالإزاحة والإخفاء باستخدام ميزات غير قياسية خاصة بكل مُصنِّع. كما أن اختلاف مجموعات الأحرف بين الأجهزة زاد من تعقيد المشكلة.

رأى بعض المؤلفين أنه لتحقيق أفضل قابلية للنقل، ينبغي استخدام حرف واحد فقط لكل عنصر بيانات. إلا أنه بالنظر إلى صغر حجم ذاكرة أجهزة ذلك الوقت، اعتُبرت هذه التقنية مُهدرة للغاية.

التقادم التكنولوجي

كان نوع بيانات السلسلة النصية أحد أبرز ميزات لغة فورتران 77. CHARACTERوقد أدى استخدام هذا النوع من البيانات إلى تبسيط معالجة الأحرف في برامج فورتران بشكل كبير ، مما جعل استخدام تقنية ثوابت هوليريث غير ضروري تقريبًا. 

أُزيلت ثوابت هوليريث من معيار فورتران 77، مع أنها لا تزال موصوفة في ملحق لمن يرغب في مواصلة دعمها. سُمح باستخدام مُعرّفات تحرير هوليريث حتى فورتران 90، ثم أُزيلت من معيار فورتران 95.

أمثلة

فيما يلي برنامج " مرحباً بالعالم" مكتوب بلغة فورتران 66 باستخدام ثوابت هوليريث. يفترض البرنامج أن كل كلمة تتكون من أربعة أحرف على الأقل.

برنامج HELLO1 C عدد صحيح IHWSTR ( 3 ) بيانات IHWSTR / 4 HHELL , 4 HO WO , 3 HRLD / C كتابة ( 6 , 100 ) IHWSTR إيقاف  100 تنسيق ( 3 A4 ) نهاية

إلى جانب DATAالعبارات، سُمح أيضًا باستخدام ثوابت هوليريث كوسائط فعلية في استدعاءات الدوال الفرعية. مع ذلك، لم يكن بإمكان الدالة المستدعاة معرفة عدد الأحرف المُمرَّرة. كان على المبرمج تمرير هذه المعلومة صراحةً. يمكن كتابة برنامج " مرحباً بالعالم" على النحو التالي - على جهاز يُخزِّن أربعة أحرف في الكلمة: 

برنامج HELLO2 CALL WRTOUT (11HHELLO WORLD, 11) STOP END ج روتين فرعي WRTOUT (IARRAY, NCHRS) ج INTEGER IARRAY(1) [ ملاحظات 1 ] عدد صحيح NCHRS ج عدد صحيح ICPW بيانات ICPW/4/ [ ملاحظات 2 ] عدد صحيح I، NWRDS ج NWRDS = (NCHRS + ICPW - 1) /ICPW اكتب (6,100) (IARRAY(I), I=1,NWRDS) إرجاع 100 بتنسيق (100A4) [ ملاحظات 3 ] نهاية

على الرغم من أنها ليست ثابتة هوليريث من الناحية الفنية، إلا أنه كان مسموحًا باستخدام صيغة هوليريث نفسها كمُعرِّف تحرير في FORMATالعبارات. ويمكن كتابة برنامج "مرحباً بالعالم" أيضًا على النحو التالي:

برنامج HELLO3 اكتب ( 6 ، 100 ) توقف  100 تنسيق ( 11 HHELLO WORLD ) نهاية

من أبرز الميزات المفاجئة سلوك مُعرّفات تحرير هوليريث عند استخدامها كمدخلات. البرنامج التالي سيتغير أثناء التشغيل HELLO WORLDليُطابق الأحرف الأحد عشر التالية في دفق الإدخال، ثم يطبعها:

برنامج WHAT1 اقرأ ( 5 ، 100 ) اكتب ( 6 ، 100 ) توقف  100 تنسيق ( 11 HHELLO WORLD ) نهاية

ملحوظات

  1. لم تكن لغة فورتران 66 تحتوي على طريقة للإشارة إلى مصفوفة ذات حجم متغير. لذلك كان يُستخدم الرقم '1' عادةً للإشارة إلى أن الحجم غير معروف.
  2. أربعة أحرف لكل كلمة.
  3. يُعتبر العدد 100 قيمةً "كبيرةً بما يكفي" لكتابة أي عدد معقول من الأحرف. لاحظ أيضًا أن أربعة أحرف لكل كلمة مُبرمجة مسبقًا هنا.

مراجع

  • المعيار الأمريكي FORTRAN . جمعية المعايير الأمريكية، X3.9-1966. ص  38.