كوبول
المحتويات
- INVOKE my-class "foo" RETURNING var
- البنية النحوية
- كوبول 2014
- // 00220000
- كوبول 2002 وكوبول الموجهة للكائنات
- مرفق
- كوبول 60
- كوبول-61 إلى كوبول-65
- ON SIZE ERROR
- تنظيم الملفات LINE SEQUENTIAL
- EVALUATE TRUE ALSO desired-speed ALSO current-speed
- أهلًا بالعالم
- NOT SIZE ERROR
- نقص الهيكلية
- كوبول 60
- التأثير على لغات البرمجة الأخرى
- 10 the-day PIC 99. *> عنصر أولي
- عبارة بيكتشر
- العبارات
- العامل المنطقي XOR
- معالجة البيانات
- IF x
- تنسيق الشيفرة
- عوامل التحويل المنطقي أو الانزياح المنطقي
- EVALUATE، وهي حالة تبديل
- جهود التحديث
- أنواع البيانات
- الإرث
- الكود الحر التنسيق
- PERFORM speed-up-machine
- END-IF
- EVALUATE ، عبارة تبديل
- PERFORM LABEL
- عامل XOR المنطقي
- Sales on 30/05/2014 were $0.00
- COBOL 2002 و COBOL الموجهة للكائنات
- PERFORM ALPHA THRU GAMMA
- Seller: Howard Discount
- CLOSE sales, report-out
- READ record-file
- الإجراءات
- دعم مجموعات الأحرف الموسعة مثل يونيكود
- تنظيم الملفات LINE SEQUENTIAL
- كوبول-74
- DISPLAY '2'
- كوبول 2023
- ADD 1 TO x
- كوبول 2023
- ON SIZE ERROR
- مشكلة سنة 2000
- مرفق
- الملفات
- الإدخال والإخراج
- البرمجة الكائنية
- مستويات البيانات الأخرى
- FIRST DETAIL 3
- مشكلات التوافق
- PERFORM LABEL2 THRU LABEL3
- دعم لمجموعات الأحرف الموسعة مثل الترميز الموحد
- END-EVALUATE
- المخاوف بشأن عملية التصميم
- قسم البيئة
- أنواع البيانات الثنائية والبوليانية
- ELSE
- إنهاء النطاق
- تدفق التحكم
- البيانات المجمعة
- الخلفية
- كاتب التقارير
- كوبول-74
- الكود المعدل ذاتياً
- اللغة الوصفية
- قسم التعريف
- 19.52.48 JOB 3 $HASP395 COBUCLG ENDED
- كوبول-68
- END-IF
- قسم البيانات
- خلفية
- البنية النحوية المطولة
- كوبول-68
- 19.52.48 JOB 3 +HELLO, WORLD
- كوبول 2014
- كوبول-85
- كوبول-85

في البداية، كوبول (؛ وهي لفظة أوائلية للجملة الإنجليزية: "common business-oriented language"، أي «لغة الأعمال الشائعة التوجه»)، هي لغة مجمعة تشبه اللغة الإنجليزية صُمّمت للاستخدام في الأعمال. تُعد كوبول برمجة أمرية وبرمجة إجرائية، ومنذ عام 2002 أضيف لها دعم برمجة كائنية التوجه. تُستعمل كوبول بشكل أساسي في مجالات الأعمال والمالية والأنظمة الإدارية في الشركات والحكومات. لا تزال كوبول مستعملة على نطاق واسع في التطبيقات التي تُنشر على حاسوب مركزي، مثل مهام معالجة بالدفعات ونظام معالجة المعاملات واسعة النطاق. كانت الكثير من المؤسسات المالية الكبرى تطور أنظمة جديدة بهذه اللغة حتى عام 2006، لكن أغلب البرمجة بلغة كوبول اليوم تقتصر على صيانة التطبيقات القائمة. ويتم نقل البرامج إلى منصات جديدة، أو إعادة كتابتها بلغات حديثة، أو استبدالها ببرمجيات أخرى. وفيما يلي تفاصيل أوسع عن ذلك.
علاوةً على ذلك، تم تصميم كوبول عام 1959 من قبل كوداسيل، واستندت جزئيًا إلى لغة البرمجة "فلو-ماتيك" التي صممتها جريس هوبر. وقد أُنشئت ضمن جهود وزارة الدفاع لابتكار لغة برمجة قابلة للنقل لمعالجة البيانات. ورغم أنها كانت تُعد حلاً مؤقتًا في البداية، فقد مارست وزارة الدفاع ضغطًا على مصنعي الحواسيب لتوفيرها، مما أدى إلى اعتمادها على نطاق واسع. تم توحيد المعايير في عام 1968، وتمت مراجعتها خمس مرات. شملت التوسعات دعم برمجة مهيكلة وبرمجة كائنية التوجه. المعيار الحالي هو المنظمة الدولية للمعايير/اللجنة الكهرتقنية الدولية 1989:2023.
إضافةً إلى ذلك، لطالما اعتُبرت كوبول لغة برمجة مخصصة للعمليات التجارية على الحواسيب المركزية،، ولكن في السنوات الأخيرة، نُقلت الكثير من عمليات كوبول إلى حوسبة سحابية.
ومن ناحية أخرى، تتسم تعليمات كوبول بنمط نثري مثل ، وقد صُممت لتكون ذاتية التوثيق وسهلة القراءة. ومع ذلك، فهي مطولة وتستعمل أكثر من 300 كلمة مخصوصة، بالمقارنة مع لغات أخرى تعتمد على تراكيب مختصرة وملهمة رياضيًا.
من جانب آخر، تعرّضت كوبول لانتقادات بسبب مطولتها، وعملية تصميمها، وضعف دعمها لبرمجة مهيكلة. وغالبًا ما تؤدي هذه النواقص إلى إنشاء برامج ضخمة يصعب فهمها ككل، رغم أنها مقروءة محليًا.
التاريخ والمواصفات
في هذا الإطار، تنقسم شيفرة كوبول إلى أربع "أقسام" (التعريف، البيئة، البيانات، الإجراء)، وتحتوي على تسلسل صارم من المقاطع، والفقـرات، والجمل. ونظرًا لافتقارها إلى مكتبة معيارية كبيرة، يحدد المعيار 43 تعليمة، و87 دالة، وفئة واحدة فقط.
INVOKE my-class "foo" RETURNING var
MOVE my-class::"foo" TO var *> استدعاء طريقة مضمّن
ومن ناحية أخرى، لا توفر لغة كوبول طريقة لتحديد طرق الأصناف باستخدام كلمات محجوزة مثل الصنف. لكن يمكن إخفاء بيانات الصنف من خلال تعريفها بدون جملة ، مما يمنع الكود الخارجي من الوصول إليها. وقد أُضيف دعم إغراق الطرائق في كوبول 2014.
البنية النحوية
إضافةً إلى ذلك، يتكوّن كل برنامج كوبول من أربعة عناصر لغوية أساسية: الكلمات، والثوابت، وسلاسل الحروف الخاصة بالصور، والفواصل. وتشمل الكلمات الكلمات المحجوزة ومعرفات يتم تعريفها من قبل المستعمل، ويُمكن أن تصل الكلمة إلى 31 حرفًا، وتحتوي على أحرف وأرقام وواصلات سفلية وواصلة عادية. أما الثوابت فتشمل الأعداد (مثل ) والسلاسل النصية (مثل ). وتشمل الفواصل مسافات بيضاء، فضلًا عن الفواصل العشرية والمنقوطة متبوعة بمسافة.
إضافةً إلى ذلك، تمتاز لغة كوبول ببنية نحوية تُشبه اللغة الإنجليزية، وتُستعمل هذه البنية لوصف أغلب العناصر في برامج كوبول. فمثلًا، يمكن التعبير عن شرط ما بالصيغة أو بشكل أكثر اختصارًا: أو . ويمكن اختصار الشروط المعقدة من خلال إزالة التكرارات في الشروط والمتغيرات. فمثلًا، يمكن اختصار إلى . ولفهم هذه البنية، تحتوي لغة كوبول على أكثر من 300 كلمة مخصوصة. بعض هذه الكلمات المفتاحية ما هو إلا تهجئة بديلة أو صيغة جمع للكلمة ذاتها، وذلك لتقديم صيغ نحوية أكثر توافقًا مع قواعد اللغة، فمثلًا يمكن استخدام الكلمتين و بشكل متبادل، وكذلك و، و و.
من جانب آخر، يتم تقسيم برنامج كوبول إلى أربعة أقسام رئيسية: قسم التعريف، وقسم البيئة، وقسم البيانات، وقسم الإجراءات. يحدد قسم التعريف اسم ونوع عنصر المصدر، وهو المكان الذي تُعرَّف فيه الأصناف والواجهات. أما قسم البيئة فيُحدد الخصائص البرمجية التي تعتمد على النظام المشغّل، مثل الملفات الحاسوبية وترميز الأحرف. ويُستعمل قسم البيانات لتصريح المتغيرات والمعاملات. أما قسم الإجراءات، فيحتوي على عبارات البرنامج. وتنقسم كل وحدة من هذه الأقسام إلى أقسام فرعية تتكون من فقرات.
كوبول 2014
يتضمن COBOL 2014 التغييرات التالية:
وفي هذا السياق، بين عامي 2003 و 2009، تم إعداد ثلاثة تقارير فنية تصف إنهاء الكائنات ومعالجة XML وفئات التجميع لـ COBOL.
// 00220000
- بعد تقديم لغة التحكم في الوظائف، عرضت وحدة التحكم في إم في إس ما يلي:
- 19.52.48 JOB 3 $HASP100 COBUCLG ON READER1 كوبول BASE TEST
- 19.52.48 JOB 3 IEF677I WARNING MESSAGE(S) FOR JOB COBUCLG ISSUED
- 19.52.48 JOB 3 $HASP373 COBUCLG STARTED - INIT 1 - CLASS A - SYS BSP1
- 19.52.48 JOB 3 IEC130I SYSPUNCH DD STATEMENT MISSING
- 19.52.48 JOB 3 IEC130I SYSLIB DD STATEMENT MISSING
- 19.52.48 JOB 3 IEC130I SYSPUNCH DD STATEMENT MISSING
- 19.52.48 JOB 3 IEFACTRT - Stepname Procstep Program Retcode
- 19.52.48 JOB 3 COBUCLG BASETEST COB IKFCBL00 RC= 0000
- 19.52.48 JOB 3 COBUCLG BASETEST LKED IEWL RC= 0000
كوبول 2002 وكوبول الموجهة للكائنات
ومن جهة أخرى، في أوائل التسعينيات، بدأ العمل على إضافة برمجة كائنية التوجه في المراجعة الكاملة التالية لكوبول. تم اقتباس ميزات البرمجة الكائنية من سي++ وسمول توك.
وفي السياق ذاته، قدمت فوجيتسو/جي تي سوفتوير، ومايكرو فوكس، مترجمات كوبول الموجهة للكائنات تستهدف دوت نت فريموورك.
إضافةً إلى ذلك، كان التقدير الأولي هو إكمال هذه المراجعة بحلول عام 1997، وقد كان مسودة لجنة آيزو متاحة في ذلك العام. قدم بعض الموردين (بما في ذلك ميكرو فوكس، فوجيتسو، وآي بي إم) بناء جملة موجه للكائنات استنادًا إلى مسودات المراجعة الكاملة. وتمت الموافقة على المعيار النهائي من قبل ISO ونُشر في أواخر عام 2002.
إضافةً إلى ذلك، في سنة 1997، قدّرت مجموعة جارتنر جروب أن هناك ما مجموعه 200 مليار سطر من كود كوبول موجودة، وتشغل 80% من جميع برامج الأعمال.
من جانب آخر، كانت هناك الكثير من الميزات الجديدة الأخرى، العديد منها كان موجودًا في مجلة مجلة كوداسيل كوبول للتنمية منذ عام 1978، وقد فاتتها الفرصة لتضمينها في كوبول-85. تضمنت هذه الميزات الأخرى:
مرفق
كذلك، تحسين قابلية التشغيل البيني مع لغات البرمجة الأخرى وبيئات الأطر البرمجية مثل.NET و Java.
إضافةً إلى ذلك، نُشر ثلاثة تصحيحات للمعيار: اثنان في عام 2006 وواحد في عام 2009.
كوبول 60
إضافةً إلى ذلك، خضعت مواصفات لغة كوبول للمراجعة ثلاث مرات خلال السنوات الخمس التي تلت نشرها. استُبدلت لغة كوبول-60 في سنة 1961 بلغة كوبول-61، ثم استُبدلت هذه الأخيرة بمواصفات كوبول-61 الموسعة في سنة 1963، والتي أضافت وظائف الفرز وكتابة التقارير. وقد صححت هذه الوظائف المضافة عيوبًا حددتها شركة هانيويل في أواخر عام 1959 في رسالة إلى اللجنة قصيرة المدى. وجاء إصدار كوبول لعام 1965 بمزيد من التوضيحات للمواصفات، وقدم وظائف للتعامل مع ملفات وجداول التخزين الضخمة. تم اكتشاف الكثير من العيوب المنطقية في لغة كوبول 60، مما دفع تشارلز كاتز من شركة جنرال إلكتريك إلى التحذير من عدم إمكانية تفسيرها بشكل قاطع. قامت لجنة مؤقتة مترددة بتنقيح شامل، وبحلول مارس 1963، أفيد بأن بنية لغة كوبول أصبحت قابلة للتحديد مثل لغة ألغول، على الرغم من بقاء بعض الغموض الدلالي.
وفي السياق ذاته، أسفر الاجتماع عن تشكيل لجنة توجيهية ولجان قصيرة ومتوسطة وطويلة المدى. مُنحت اللجنة قصيرة المدى مهلة حتى سبتمبر (ثلاثة أشهر) لوضع مواصفات لغة مؤقتة، على أن تُطوّرها اللجان الأخرى لاحقًا. إلا أن مهمتها الرسمية كانت تحديد نقاط القوة والضعف في لغات البرمجة الحالية، ولم تُوجّهها صراحةً إلى إنشاء لغة جديدة.
وعلى صعيد آخر، سرعان ما اتضح أن اللجنة كانت كبيرة جدًا بحيث لا يمكنها إحراز أي تقدم سريع. اشترى هوارد برومبيرغ، المحبط، شاهد قبر بقيمة 15 دولارًا (عام 1959؛ ما يعادل نحو دولارًا الآن) محفورًا عليه كلمة "كوبول" وأرسله إلى تشارلز فيليبس ليُظهر استياءه.
في هذا الإطار، قوبل الموعد النهائي بالتشكيك من قبل اللجنة قصيرة المدى. وصفت إحدى العضوات، بيتي هولبرتون ، مهلة الثلاثة أشهر بأنها "تفاؤل مفرط"، وشككت في أن اللغة ستكون حلاً مؤقتاً بالفعل. اجتمعت اللجنة التوجيهية في 4 يونيو، ووافقت على تسمية النشاط بأكمله " لجنة لغات أنظمة البيانات" ( CODASYL)، وتشكيل لجنة تنفيذية.
وفي السياق ذاته، في اجتماع عُقد منتصف سبتمبر، ناقشت اللجنة اسم اللغة الجديدة. وشملت الاقتراحات "BUSY" (نظام الأعمال)، و"INFOSYL" (لغة نظم المعلومات)، و"COCOSYL" (لغة أنظمة الحاسوب المشتركة). من غير الواضح من الذي اقترح اسم "COBOL"، على الرغم من أن بوب بيمر ادعى لاحقًا أنه هو من اقترحه.
ومن جهة أخرى، ضمّت اللجنة قصيرة المدى ممثلين عن ست شركات مصنّعة للحواسيب وثلاث وكالات حكومية. وشملت الشركات المصنّعة: بوروز كوربوريشن، وآي بي إم، ومنيابولس-هانيويل (مختبرات هانيويل)، وآر سي إيه، ، وسيلفانيا إلكتريك برودكتس. أما الوكالات الحكومية فكانت: القوات الجوية الأمريكية، وحوض ديفيد تايلور النموذجي التابع للبحرية الأمريكية، والمكتب الوطني للمعايير (الذي يُعرف الآن باسم المعهد الوطني للمعايير والتكنولوجيا). وترأس اللجنة جوزيف ويغستين من المكتب الوطني للمعايير الأمريكي. وبدأ العمل بدراسة أوصاف البيانات، والبيانات، والتطبيقات الحالية، وتجارب المستعملين.
وفي السياق ذاته، تضمنت الميزات المُدمجة من لغة COMTRAN في لغة COBOL الصيغ، وعبارة ، وعبارة IF مُحسّنة تُغني عن الحاجة إلى عبارات GO TO، ونظام إدارة ملفات أكثر قوة.
علاوةً على ذلك، كانت جدوى عمل اللجنة موضع نقاش حاد. فبينما رأى بعض الأعضاء أن اللغة تتضمن الكثير من التنازلات وأنها نتاج تصميم جماعي، رأى آخرون أنها أفضل من اللغات الثلاث التي جرى فحصها. ورأى البعض أن اللغة معقدة للغاية، بينما رأى آخرون أنها بسيطة للغاية.
كذلك، وصف الممثلون بحماس لغةً قابلةً للتطبيق في بيئات متنوعة، من الخدمات المصرفية والتأمين إلى المرافق العامة وإدارة المخزون. واتفقوا بالإجماع على ضرورة تمكين المزيد من الأشخاص من البرمجة، وألا تُقيّد اللغة الجديدة بقيود التكنولوجيا المعاصرة. واتفقت الأغلبية على ضرورة أن تستفيد اللغة إلى أقصى حد من اللغة الإنجليزية، وأن تكون قابلةً للتغيير، ومستقلةً عن الآلات، وسهلة الاستخدام، حتى لو كان ذلك على حساب استهلاك الطاقة.
علاوةً على ذلك، في أواخر عام 1962، أعلنت شركة IBM أن لغة COBOL ستكون لغة التطوير الأساسية لديها وأن تطوير لغة COMTRAN سيتوقف.
وفي هذا الصدد، في عام 1980، علّقت غريس هوبر قائلةً: "إن لغة كوبول 60 هي 95% من لغة فلوماتيك"، وأن تأثير لغة كومتران كان "ضئيلاً للغاية". وأضافت أنها ستدّعي أن عملها تأثر بكلتا اللغتين فلوماتيك وكومتران فقط "لإرضاء الآخرين [حتى] لا يحاولوا إقصاءنا".
من جهة ثانية، عُرضت المواصفات على اللجنة التنفيذية في 4 سبتمبر. ولم ترقَ إلى مستوى التوقعات: فقد أشار جوزيف ويغستين إلى أنها "تحتوي على نقاط ضعف وتحتاج إلى بعض الإضافات"، ووصفها بوب بيمر لاحقًا بأنها "مزيج غير متجانس". مُنحت اللجنة مهلة حتى ديسمبر لتحسينها.
ومن جهة أخرى، سرعان ما اتضح أن اللجنة كانت كبيرة جدًا بحيث لا يمكنها إحراز أي تقدم سريع. اشترى هوارد برومبيرغ، المحبط، شاهد قبر بقيمة 15 دولارًا (عام 1959؛ ما يعادل قرابة دولارًا الآن) محفورًا عليه كلمة "كوبول" وأرسله إلى تشارلز فيليبس ليُظهر استياءه.
وفي هذا الصدد، ركزت اللجنة بشكل أساسي على دراسة لغات البرمجة FLOW-MATIC وAIMACO وCOMTRAN . وكانت لغة FLOW-MATIC مؤثرة بشكل خاص نظرًا لتطبيقها الفعلي، ولأن لغة AIMACO كانت مشتقة منها مع تعديلات طفيفة فقط. كما عملت غريس هوبر، مخترعة FLOW-MATIC، مستشارةً فنيةً للجنة. تمثلت إسهامات FLOW-MATIC الرئيسية في لغة COBOL في أسماء المتغيرات الطويلة، والكلمات الإنجليزية للأوامر، وفصل وصف البيانات عن التعليمات. يُطلق على هوبر أحيانًا لقب "أم COBOL" أو "جدة COBOL"، على الرغم من أن جان ساميت ، المصمم الرئيسي للغة COBOL، صرّح بأن هوبر "لم تكن أم COBOL أو مبتكرتها أو مطورتها".
ومن جهة أخرى، تضمنت الميزات المثيرة للجدل تلك التي اعتبرها البعض عديمة الفائدة أو متقدمة للغاية بالنسبة لمستعملي معالجة البيانات. وشملت هذه الميزات التعبيرات المنطقية، والصيغ، الجداول. وكانت نقطة خلاف أخرى هي ما إذا كان ينبغي جعل الكلمات المفتاحية حساسة للسياق وتأثير ذلك على سهولة القراءة. على الرغم من رفض الكلمات المفتاحية الحساسة للسياق، فقد تم استخدام هذا النهج لاحقًا في لغة PL/I وجزئيًا في لغة COBOL منذ عام 2002. لم يُولَ اهتمام يُذكر للتفاعلية، والتفاعل مع أنظمة التشغيل (التي كانت قليلة في ذلك الوقت)، والدوال (التي اعتُبرت رياضية بحتة وغير مفيدة في معالجة البيانات).
وفي هذا السياق، في أكتوبر، تلقت لجنة النطاق المتوسط نسخًا من مواصفات لغة FACT التي وضعها روي نوت. وقد أعجبت اللجنة بميزاتها لدرجة أنها أصدرت قرارًا بجعل لغة COBOL أساسًا لها.
وفي هذا الصدد، في 28 و29 مايو 1959، عُقد اجتماع في البنتاغون لمناقشة إنشاء لغة برمجة مشتركة للأعمال (بعد عام واحد بالضبط من اجتماع ALGOL 58 في زيورخ). حضر الاجتماع 41 شخصًا وترأسه فيليبس. كانت وزارة الدفاع قلقة بشأن إمكانية تشغيل برامج معالجة البيانات نفسها على أجهزة كمبيوتر مختلفة. كانت لغة FORTRAN، اللغة السائدة الوحيدة آنذاك، تفتقر إلى الميزات اللازمة لكتابة مثل هذه البرامج.
وفي هذا الصدد، كان هذا بمثابة ضربة للجنة قصيرة المدى، التي أحرزت تقدمًا ملحوظًا في وضع المواصفات. فعلى الرغم من تفوقها التقني، لم تُصمم FACT مع مراعاة قابلية النقل أو من خلال توافق آراء المصنّعين والمستعملين. كما افتقرت إلى تطبيق عملي قابل للإثبات، مما سمح لمؤيدي COBOL القائم على FLOW-MATIC بإلغاء القرار. وقد عرقل هوارد برومبيرغ، ممثل شركة RCA، مشروع FACT كذلك، حتى لا يذهب جهد RCA في تطوير تطبيق COBOL سدىً.
من جانب آخر، اعتُبرت لغة COMTRAN من IBM، التي ابتكرها بوب بيمر ، منافسةً للغة FLOW-MATIC من قِبل لجنة قصيرة المدى مؤلفة من زملاء غريس هوبر. لم تُدمج بعض ميزاتها في لغة COBOL حتى لا يبدو أن IBM قد سيطرت على عملية التصميم، وصرحت جين ساميت في عام 1981 بوجود "تحيز قوي ضد IBM" من قِبل بعض أعضاء اللجنة (بمن فيهم هي نفسها). في إحدى الحالات، بعد أن حضر روي غولدفينغر، مؤلف دليل COMTRAN وعضو اللجنة متوسطة المدى، اجتماعًا للجنة فرعية لدعم لغته وتشجيع استخدام التعبيرات الجبرية، أرسلت غريس هوبر مذكرة إلى اللجنة قصيرة المدى تُعيد فيها التأكيد على جهود سبيري راند لإنشاء لغة قائمة على اللغة الإنجليزية.
كوبول-61 إلى كوبول-65
من جهة ثانية، تم اكتشاف الكثير من العيوب المنطقية في كوبول 60، مما دفع تشارلز كاتس من شركة جنرال إلكتريك للتحذير من أنه لا يمكن تفسيرها بشكل لا لبس فيه. قامت لجنة المدى القصير المترددة بعملية تنظيف شاملة، وبحلول مارس 1963، تم الإبلاغ أن قواعد كوبول النحوية أصبحت قابلة للتعريف مثل لغة ألغول، رغم بقاء غموض في المعنى.
في هذا الإطار، تمت مراجعة مواصفات كوبول ثلاث مرات خلال الخمس سنوات التي تلت نشرها. تم استبدال كوبول-60 بـ كوبول-61 في سنة 1961. ثم تم استبداله بمواصفات ;كوبول-61 إكستينتد في سنة 1963، والتي قدمت تسهيلات الفرز وكتابة التقارير. حسّنت هذه التسهيلات العيوب التي حددتها شركة هونيويل في أواخر 1959 في رسالة موجهة إلى لجنة المدى القصير. قدم إصدار كوبول لعام 1965 المزيد من التوضيحات للمواصفات وأدخل تسهيلات للتعامل مع ملفات التخزين الكتلي والجداول.
من جهة ثانية، كانت المترجمات المبكرة لـ كوبول بدائية وبطيئة. تُعد كوبول لغة صعبة لبناء مترجم لها، بسبب قواعدها الكبيرة والكثير من العناصر الاختيارية داخل البُنى النحوية، فضلاً عن الحاجة لإنتاج رمز فعال للغة ذات تمثيلات بيانات متعددة، وتحويلات نوع ضمنية، وإعدادات ضرورية لعمليات الإدخال والإخراج. أظهرت تقييمات البحرية الأمريكية عام 1962 سرعات تجميع تتراوح بين 3 إلى 11 بيانًا في الدقيقة. وبحلول منتصف 1964، ارتفعت إلى 11–1000 بيان في الدقيقة. لوحظ أن زيادة الذاكرة تؤدي إلى زيادة كبيرة في السرعة، وأن تكاليف التجميع تختلف بشكل واسع: بين 0.23 و18.91 دولارًا لكل بيان.
وفي هذا الصدد، في أواخر 1962، أعلنت شركة آي بي إم أن كوبول ستكون لغتهم الأساسية للتطوير وأن تطوير لغة كومتران سيتوقف.
ON SIZE ERROR
- DISPLAY "Error"
- END-ADD
- ADD a TO b
تنظيم الملفات LINE SEQUENTIAL
كذلك، وظيفة SUBSTITUTE الجوهرية التي تسمح باستبدال السلاسل الفرعية ذات الأطوال المختلفة
دالة CONVERT لتحويل الأساس
عوامل الإزاحة المنطقية
تم تعريف التكرار اللانهائي باستخدام PERFORM UNTIL EXIT
EVALUATE TRUE ALSO desired-speed ALSO current-speed
وعلى صعيد آخر، WHEN lid-closed ALSO min-speed THRU max-speed ALSO LESS THAN desired-speed
أهلًا بالعالم
وفي السياق ذاته، عندما نُشر لأول مرة مثال البرنامج الشهير "أهلًا بالعالم!" في كتاب لغة البرمجة سي عام 1978، كان من المرجح أن يتم تقديم مثال برنامج رئيسي مشابه بلغة كوبول على الحواسيب الكبيرة عبر لغة التحكم في الوظائف، غالباً باستخدام قارئ بطاقات مثقوبة وبطاقات مثقوبة ذات 80 عموداً. القائمة التالية، مع وجود درجة بيانات فارغة، تم اختبارها باستخدام نظام لينوكس ومحاكي نظام/370 محاكي هيركولز يعمل بنظام إم في إس 3.8J. تم اشتقاق JCL، المكتوبة في يوليو 2015، من دروس وعينات هيركولز التي يستضيفها جاي موزلي. وبحسب أسلوب برمجة كوبول في تلك الحقبة، يتم عرض HELLO, WORLD بأحرف كبيرة.
- برنامج أهلا بالعالم بلغة كوبول:
- IDENTIFICATION DIVISION.
- PROGRAM-ID. hello-world.
- PROCEDURE DIVISION.
- DISPLAY "Hello, world!"
- .
- //COBUCLG JOB (001),'COBOL BASE TEST', 00010000
- // CLASS=A,MSGCLASS=A,MSGLEVEL=(1,1) 00020000
- //BASETEST EXEC COBUCLG 00030000
- //COB.SYSIN DD * 00040000
- 00000* VALIDATION OF BASE كوبول INSTALL 00050000
- 01000 IDENTIFICATION DIVISION. 00060000
- 01100 PROGRAM-ID. 'HELLO'. 00070000
- 02000 ENVIRONMENT DIVISION. 00080000
- 02100 CONFIGURATION SECTION. 00090000
- 02110 SOURCE-COMPUTER. GNULINUX. 00100000
- 02120 OBJECT-COMPUTER. HERCULES. 00110000
- 02200 SPECIAL-NAMES. 00120000
- 02210 CONSOLE IS CONSL. 00130000
- 03000 DATA DIVISION. 00140000
- 04000 PROCEDURE DIVISION. 00150000
- 04100 00-MAIN. 00160000
- 04110 DISPLAY 'HELLO, WORLD' UPON CONSL. 00170000
- 04900 STOP RUN. 00180000
- //LKED.SYSLIB DD DSNAME=SYS1.COBLIB,DISP=SHR 00190000
- // DD DSNAME=SYS1.LINKLIB,DISP=SHR 00200000
- //GO.SYSPRINT DD SYSOUT=A 00210000
NOT SIZE ERROR
DISPLAY "No error"
نقص الهيكلية
من جانب آخر، كانت برامج كوبول مشهورة بكونها متراصة وتفتقر إلى التقييس البنيوي. لم يكن من الممكن تنظيم كود كوبول إلا من خلال الإجراءات، والتي اعتُبرت غير كافية للأنظمة الكبيرة. كان من المستحيل تقييد الوصول إلى البيانات، مما يعني أن أي إجراء يمكنه الوصول إلى أي عنصر بيانات وتعديله. علاوة على ذلك، لم تكن هناك طريقة لتمرير وسائط إلى إجراء، وهو إغفال اعتبرته جان سامِت أكبر خطأ ارتكبته اللجنة.
وفي هذا الصدد، تحسّنت هذه الحالة مع تبني كوبول لمزيد من الميزات. أضاف كوبول-74 البرامج الفرعية، مما منح المبرمجين القدرة على التحكم في البيانات التي يمكن لكل جزء من البرنامج الوصول إليها. ثم أضاف كوبول-85 البرامج الفرعية المتداخلة، مما سمح للمبرمجين بإخفاء البرامج الفرعية. وجاء مزيد من التحكم في البيانات والكود في سنة 2002 عند تضمين البرمجة كائنية التوجه، والدوال المعرفة من قبل المستعمل، وأنواع البيانات المعرفة من قبل المستعمل.
من جانب آخر، ومع ذلك، لا تزال الكثير من برامج كوبول القديمة المهمة تحتوي على كود غير مهيكل، مما جعل صيانتها شبه مستحيلة. وقد يكون تعديل حتى قسم بسيط من الشيفرة محفوفًا بالمخاطر ومكلفًا، نظرًا لإمكانية استخدامه من أماكن غير معروفة وبطرق غير معروفة.
وفي هذا الصدد، كما أن تعقيدًا إضافيًا نشأ من القدرة على تنفيذ عبر تسلسل معين من الإجراءات. وهذا يعني أن التحكم يمكن أن يقفز إلى ويعود من أي إجراء، مما يخلق تدفق تحكم معقد ويسمح للمبرمج بكسر قاعدة مدخل واحد ومخرج واحد.
كذلك، كان أحد أسباب رماز متشابك هو عبارة . ومع ذلك، فإن محاولات إزالة تعليمات من كود كوبول أدت إلى برامج معقدة وانخفاض في جودة الشيفرة. تم استبدال إلى حد كبير بتعليمة والإجراءات، مما شجّع على برمجة تركيبية ووفّر وسيلة سهلة للوصول إلى مرافق التكرار القوية. ومع ذلك، لم يكن من الممكن استخدام إلا مع الإجراءات، لذا لم تكن أجسام الحلقات موجودة في أماكن استخدامها، مما جعل البرامج أكثر صعوبة في الفهم.
وفي السياق ذاته، في اعتراض منشور على تعليقات دايكسترا، زعم عالم الحاسوب هوارد إي. تومبكينز أن لغة كوبول غير المهيكلة تميل إلى أن تُكتب من قبل مبرمجين لم يحظوا بتعليم جيد في كوبول المهيكل، مشيرًا إلى أن المشكلة تتعلق أساسًا بالتدريب.
علاوةً على ذلك، في سبعينيات القرن العشرين، أصبحت تبني برمجة مهيكلة أكثر شيوعًا. كتب أيدسكر دايكسترا، وهو عالم حاسوب بارز، رسالة إلى المحرر في مجلة "اتصالات أيه سي إم" نُشرت في سنة 1975 بعنوان «كيف نقول الحقائق التي قد تؤذي؟»، انتقد فيها لغة كوبول وعدة لغات أخرى معاصرة؛ حيث علّق قائلًا إن «استخدام لغة كوبول يشلّ العقل».
كوبول 60
وفي هذا السياق، كانت لغة كومتران التابعة لآي بي إم، والتي اخترعها بوب بيمير، تُعتبر منافسة للغة فلو-ماتيك من قبل لجنة قصيرة المدى ضمت زملاء غريس هوبر. ولم تُدرج بعض ميزات كومتران في كوبول حتى لا يبدو أن آي بي إم قد هيمنت على عملية التصميم، وقالت جين ساميت عام 1981 إن بعض أعضاء اللجنة (ومنهم هي نفسها) كانوا يحملون "تحيزًا قويًا ضد آي بي إم". وفي إحدى الحالات، بعد أن حضر روي غولدفينغر، مؤلف دليل كومتران وعضو لجنة المدى المتوسط، اجتماعًا لإحدى اللجان الفرعية لدعم لغته وتشجيع استخدام التعبيرات الجبرية، أرسلت غريس هوبر مذكرة إلى اللجنة قصيرة المدى تؤكد فيها جهود شركة سبيري راند لإنشاء لغة تعتمد على اللغة الإنجليزية.
من جانب آخر، وصف الممثلون بحماس لغةً يمكنها العمل في مجموعة واسعة من البيئات، من المصارف وشركات التأمين إلى خدمات المرافق العامة والتحكم في المخزون. واتفقوا بالإجماع على أنه ينبغي أن يتمكن عدد أكبر من الأشخاص من البرمجة، وأن اللغة الجديدة يجب ألا تكون مقيّدة بقيود التكنولوجيا المعاصرة. وقد اتفقت الأغلبية على أن اللغة يجب أن تستعمل الإنجليزية إلى أقصى حد، وأن تكون قابلة للتغيير، ومستقلة عن الآلة، وسهلة الاستخدام، حتى ولو كان ذلك على حساب القوة.
ومن جهة أخرى، من الميزات التي أُدرجت من كومتران في كوبول: الصيغ الرياضية، عبارة ، تحسين عبارة IF بما يغني عن استخدام "قو تو"، ونظام إدارة ملفات أكثر قوة.
من جانب آخر، في عام 1980، علّقت غريس هوبر بأن «كوبول 60 هو 95٪ فلو-ماتيك»، وأن تأثير كومتران كان «ضئيلاً للغاية». وعلاوة على ذلك، قالت إنها كانت تدّعي أن العمل قد تأثر بكل من فلو-ماتيك وكومتران فقط من أجل «إرضاء الآخرين حتى لا يحاولوا إسقاطنا».
في هذا الإطار، درست اللجنة بشكل رئيسي لغات البرمجة فلو-ماتيك وأيماكو وكومتران. كانت لغة فلو-ماتيك مؤثرة بشكل خاص لأنها كانت قد طُبقت فعليًا، ولأن أيماكو كانت مشتقة منها مع تغييرات طفيفة فقط. كما عملت مخترعة فلو-ماتيك، غريس هوبر، مستشارة تقنية للجنة. ومن أبرز مساهمات فلو-ماتيك في تطوير كوبول: استخدام أسماء متغيرات طويلة، وكلمات إنجليزية للأوامر، وفصل أوصاف البيانات عن التعليمات. وغالبًا ما تُلقب هوبر بـ"أم كوبول" أو "جدة كوبول"، رغم أن جين ساميت، المصممة الرئيسية لكوبول، قالت إن هوبر "لم تكن الأم، ولا المنشئة، ولا المطورة للغة كوبول".
كذلك، أنجزت اللجنة الفرعية أغلب العمل المتعلق بإعداد المواصفات، بينما اقتصر دور لجنة المدى القصير على مراجعة وتعديل هذا العمل قبل إنتاج المواصفات النهائية.
وفي هذا الصدد، تم تشكيل لجنة فرعية لتحليل اللغات الموجودة، وتألفت من ستة أشخاص:
وفي السياق ذاته، كانت فائدة عمل اللجنة موضوعًا محل جدل كبير. فبينما رأى بعض الأعضاء أن اللغة مليئة بالتسويات ونتيجة لتصميم اللجنة، رأى آخرون أنها أفضل من اللغات الثلاث التي تم فحصها. شعر البعض أن اللغة معقدة للغاية؛ فيما رأى آخرون أنها بسيطة جدًا.
وفي السياق ذاته، لا يزال التأثير النسبي للغات المستعملة ظاهرًا في التوصية الإرشادية المطبوعة في جميع كتيّبات مرجعية كوبول:
وعلى صعيد آخر، سرعان ما أصبح واضحًا أن اللجنة كانت كبيرة جدًا بحيث لا يمكنها إحراز مزيد من التقدم بسرعة. فاشترى هوارد برومبرغ، وهو محبط، شاهد قبر بقيمة 15 دولارًا منقوش عليه "كوبول" وأرسله إلى تشارلز فيليبس ليُعبّر عن استيائه.
كذلك، في يومي 28 و29 مايو 1959، عُقد اجتماع في بنتاغون لمناقشة إنشاء لغة برمجة موحدة للأعمال (بعد مرور عام تمامًا على اجتماع خوارزم 58 في زيورخ). حضر الاجتماع 41 شخصًا وترأسه فيليبس. كانت وزارة الدفاع قلقة بشأن إمكانية تشغيل نفس برامج معالجة البيانات على حواسيب مختلفة. وكانت فورتران، وهي اللغة السائدة الوحيدة في ذلك الوقت، تفتقر إلى الميزات اللازمة لكتابة مثل هذه البرامج.
وفي السياق ذاته، قوبل الموعد النهائي بشكوك كبيرة من اللجنة قصيرة المدى. وقد وصفت إحدى العضوات، بيتي هولبرتون، المهلة الزمنية البالغة ثلاثة أشهر بأنها "تفاؤل مفرط"، وشككت في أن تكون اللغة مؤقتة بالفعل. اجتمعت اللجنة التوجيهية في 4 يونيو ووافقت على تسمية النشاط بأكمله باسم "لجنة لغات نظم البيانات" أو كوداسيل، وتشكيل لجنة تنفيذية.
من جانب آخر، تمت الموافقة على المواصفات من قبل اللجنة التنفيذية في 8 يناير 1960، وأُرسلت إلى مكتب الطباعة الحكومي، الذي طبعها تحت اسم كوبول 60. وقد تمثلت أهداف اللغة المعلنة في تمكين كتابة برامج فعّالة وقابلة للنقل بسهولة، وتمكين المستعملين من الانتقال إلى أنظمة جديدة بأقل جهد وتكلفة، وأن تكون مناسبة للمبرمجين غير المتمرسين.
فيرنون ريفز وجين ساميت من شركة منتجات سيلفانيا الكهربائية.
كذلك، ومن الميزات المثيرة للجدل تلك التي اعتبرها البعض عديمة الفائدة أو متقدمة جدًا لمستعملي معالجة البيانات، مثل عبارات بوليانية، وصيغ رياضية، ومؤشرات الجداول . ومن النقاط الخلافية الأخرى مسألة ما إذا كان ينبغي جعل الكلمات المحجوزة حساسة للسياق، وتأثير ذلك على قابلية القراءة. ورغم أن الكلمات الحساسة للسياق قد رُفضت، إلا أن هذا النهج استُخدم لاحقًا في بي إل/آي وجزئيًا في كوبول منذ عام 2002. ولم يُعطَ اهتمام يُذكر لـتفاعلية المستعمل، أو التفاعل مع نظام تشغيل (إذ كان عددها محدودًا آنذاك)، أو الدوال (التي كانت تُعد رياضية بحتة ولا فائدة لها في معالجة البيانات).
علاوةً على ذلك، في أكتوبر، تلقّت لجنة المدى المتوسط نسخًا من مواصفات لغة فاكت التي أنشأها روي نَت. وقد أُعجبت اللجنة بخصائصها لدرجة أنها أصدرت قرارًا بجعل كوبول مبنيًا عليها.
ومن ناحية أخرى، قُدمت المواصفات إلى اللجنة التنفيذية في 4 سبتمبر. لكنها لم ترقَ إلى التوقعات؛ فقد أشار جوزيف ويغستين إلى أنها «تحتوي على مواضع خشنة وتتطلب بعض الإضافات»، بينما وصفها بوب بيمير لاحقًا بأنها «خليط عشوائي». مُنحت اللجنة حتى ديسمبر لتحسينها.
هوارد برومبرغ وهوارد ديسكاونت من آر سي أيه،
ويليام سيلدن وغرتروود تيرني من شركة آي بي إم،
وفي السياق ذاته، في اجتماع منتصف سبتمبر، ناقشت اللجنة اسم اللغة الجديدة. شملت الاقتراحات أسماء مثل "بوسي" (نظام أعمال)، و"إنفوسيل" (لغة نظم المعلومات)، و"كوكوسيل" (لغة نظم الحوسبة المشتركة). ولا يُعرف على وجه التحديد من الذي صاغ اسم "كوبول"، رغم أن بوب بيمير ادّعى لاحقًا أنه هو من اقترحه.
من جهة ثانية، قامت اللجنة التنفيذية لكوداسيل لاحقًا بإنشاء لجنة صيانة كوبول للإجابة على استفسارات المستعملين والبائعين، ولتحسين وتوسيع المواصفات.
كذلك، وخلال عام 1960، ازداد عدد الشركات المصنعة التي تخطط لبناء مترجمات كوبول. وبحلول سبتمبر، انضمت خمس شركات مصنّعة أخرى إلى كوداسيل (بندكس، كونترول داتا، جنرال إلكتريك، ناشيونال كاش ريجستر، وفيلكو)، وقد أعلنت جميع الشركات الممثّلة عن تطويرها لمترجمات كوبول. خططت جي إي وآي بي إم لدمج كوبول في لغاتهما الخاصة: جيكوم وكمتران على التوالي. في المقابل، خططت شركة "أجهزة الكمبيوتر والجداول الدولية" لاستبدال لغتها كوديل بكوبول.
وفي هذا الصدد، كان أعضاء اللجنة قصيرة المدى يمثلون ستة من مصنعي الحواسيب وثلاث وكالات حكومية. شملت شركات تصنيع الحواسيب: شركة بوروز، آي بي إم، هانيويل (مختبرات هانيويل)، شركة راديو أمريكا، سبيري راند، وسيلفانيا إلكتريك برودكتس. أما الوكالات الحكومية فكانت القوات الجوية الأمريكية، وحوض النماذج ديفيد تايلور التابع للبحرية، والمعهد الوطني للمعايير والتقانة (المعروف في الوقت الحالي باسم المعهد الوطني للمعايير والتقنية). ترأس اللجنة جوزيف ويغستاين من المكتب الوطني للمعايير في الولايات المتحدة. وبدأ العمل بالتحقيق في أوصاف البيانات، والتعليمات، والتطبيقات الموجودة، وتجارب المستعملين.
وفي هذا السياق، كان هذا بمثابة ضربة للجنة المدى القصير، التي كانت قد أحرزت تقدمًا جيدًا في المواصفات. وعلى الرغم من أن فاكت كانت متفوقة تقنيًا، إلا أنها لم تُنشأ بغرض قابلية النقل أو عبر توافق بين المصنعين والمستعملين. كما أنها افتقرت إلى تطبيق قابل للتجربة، مما أتاح لمؤيدي كوبول المستند إلى فلو-ماتيك قلب القرار. كما قام ممثل آر سي أيه، هوارد برومبرغ، بحجب فاكت حتى لا تذهب جهود شركته في تطوير تطبيق كوبول سدى.
ومن جهة أخرى، أسفر الاجتماع عن إنشاء لجنة ولجان فرعية قصيرة ومتوسطة وطويلة المدى. أُعطيت اللجنة قصيرة المدى مهلة حتى سبتمبر (ثلاثة أشهر) لإنتاج مواصفات للغة مؤقتة، على أن يتم تحسينها لاحقًا من قبل اللجان الأخرى. ومع ذلك، فإن مهمتها الرسمية كانت تحديد نقاط القوة والضعف في لغات البرمجة الموجودة؛ ولم تُكلَّف صراحةً بإنشاء لغة جديدة.
في هذا الإطار، وفي هذه الأثناء، كانت شركتا آر سي أيه وسبيري راند تعملان على إنشاء مترجمات كوبول. وقد شُغّل أول برنامج كوبول في 17 أغسطس على جهاز RCA 501. وفي يومي 6 و7 ديسمبر، شُغّل نفس البرنامج (مع تغييرات طفيفة) على جهاز RCA وجهاز يونيفاك من ريمينغتون-راند، مما أظهر أن التوافق قابل للتحقيق.
التأثير على لغات البرمجة الأخرى
كذلك، كما أن آلية في كوبول، رغم اعتبارها "بدائية"، فقد أثّرت في تطوير تعليمات الاحتواء البرمجي.
من جهة ثانية، لقد أثّرت البنى البيانية في لغة كوبول على لغات البرمجة التي جاءت بعدها. فقد أثّر بناء السجلات والملفات فيها على لغتي بي إل/آي وباسكال. كما أن جملة REDEFINES كانت سابقة لمفهوم "السجلات المتغيرة" في لغة باسكال. أما تعريفات بنية الملفات الصريحة فقد سبقت ظهور قواعد البيانات، وكانت البيانات المجمّعة تطورًا كبيرًا مقارنةً بمصفوفات فورتران.
من جهة ثانية، وكان التركيز على قابلية النقل والتقييس يعني أن البرامج المكتوبة بلغة كوبول يمكن نقلها وتشغيلها على منصات عتادية وأنظمة تشغيل متنوعة، مما ساهم في انتشار اللغة على نطاق واسع. علاوةً على ذلك، فإن البنية المقسمة جيدًا للغة تُقيّد تعريف المراجع الخارجية على قسم البيئة، مما يُبسّط تغييرات المنصة بشكل خاص.
إضافةً إلى ذلك، وقد أُدرِجَت تعريفات البيانات باستخدام PICTURE في لغة بي إل/آي مع تغييرات طفيفة.
- انظر كذلك
- قائمة لغات البرمجة
- مقارنة بين لغات البرمجة
- الملاحظات
- المراجع
- الاستشهادات
10 the-day PIC 99. *> عنصر أولي
من جانب آخر، يمكن التمييز بين العناصر التابعة باستخدام الكلمة المفتاحية (أو ). مثلًا، بالنظر إلى الكود السابق والمثال التالي:
- 01 sale-date.
- 05 the-year PIC 9(4).
- 05 the-month PIC 99.
- 05 the-day PIC 99.
علاوةً على ذلك، تُعد الأسماء و و غامضة بحد ذاتها، نظرًا لأن هناك أكثر من عنصر بيانات يحمل هذه الأسماء. ولتحديد عنصر معين، مثل أحد العناصر الموجودة داخل المجموعة ، يستعمل المبرمج الصيغة (أو المعادلة لها ). تشبه هذه الصيغة "صيغة النقطة" (dot notation) المدعومة في أغلب لغات البرمجة الحديثة.
كذلك، في المثال أعلاه، فإن العنصر الأولي وعنصر المجموعة تابعان للسجل ، بينما العناصر الأولية و و هي جزء من عنصر المجموعة .
عبارة بيكتشر
وفي هذا السياق، عبارة (أو ) هي سلسلة من المحارف، يمثل كل منها جزءًا من عنصر البيانات وما قد يحتويه. بعض محارف الصورة تحدد نوع العنصر وعدد المحارف أو الأرقام التي يشغلها في الذاكرة. مثلًا، يشير إلى خانة عشرية، ويشير إلى أن العنصر يحتوي على الإشارة العددية. محارف الصورة الأخرى (وتُعرف باسم و) تحدد كيفية تنسيق العنصر. مثلًا، سلسلة من محارف تحدد مواضع المحارف وكذلك كيفية وضع إشارة العدد في الموضع النهائي؛ حيث ستحتوي المحرفة غير الرقمية الأقصى يمينًا على إشارة العنصر، بينما المحارف الأخرى المطابقة لـ يسار هذا الموضع ستحتوي على فراغ. يمكن اختصار تكرار المحارف عبر وضع رقم بين قوسين بعد المحرف؛ مثلًا، تعادل . تحدد مواصفات الصورة التي تحتوي فقط على محارف أرقام وإشارة عناصر بيانات خالصة، بينما المواصفات التي تحتوي على محارف أبجدية أو أبجدية-رقمية تحدد عناصر بيانات . أما وجود محارف تنسيق أخرى فيُعرّف عناصر بيانات أو .
وفي هذا السياق، ، حيث تُخزن البيانات بأصغر تنسيق عشري ممكن (غالبًا باستخدام نظام عشري مرمز ثنائياً)
وعلى صعيد آخر، ، حيث يمكن تخزين البيانات بأي تنسيق توفره بيئة التنفيذ؛ وغالبًا ما تكون مكافئة لـ
، وهو التنسيق الافتراضي، حيث تُخزن البيانات كسلسلة نصية
، حيث تُخزن البيانات كسلسلة باستخدام مجموعة محارف موسعة
من جهة ثانية، تُستعمل فقرة لتحديد التنسيق الذي يُخزن به البيانات. وبحسب نوع البيانات، يمكن أن تُكمل هذه الفقرة أو تُستعمل بدلاً من فقرة . وبينما يمكن استخدامها لتصريح المؤشرات والمراجع الكائنية، إلا أنها تُستعمل غالبًا لتحديد أنواع البيانات الرقمية. تشمل هذه التنسيقات الرقمية ما يلي:
فقرة "USAGE"
ومن ناحية أخرى، الثنائي "Binary"، حيث يتم تحديد الحد الأدنى للحجم إما عبر فقرة PICTURE أو عبر فقرة USAGE مثل BINARY-LONG
ومن جهة أخرى، الفاصلة العائمة (Floating-point)، إما بتنسيق يعتمد على بيئة التنفيذ أو وفق معيار IEEE 754
العبارات
ومن جهة أخرى، تحتوي كوبول 2014 على 47 عبارة (تُسمى كذلك ), يمكن تجميعها ضمن الفئات التالية: تدفق التحكم، الإدخال/الإخراج، معالجة البيانات، وكاتب التقارير. تُغطي عبارات كاتب التقارير في قسم كاتب التقارير.
العامل المنطقي XOR
تعليمة DELETE FILE
يمكن توسيع تعليمة CONTINUE لتوقف البرنامج لمدة محددة
معالجة البيانات
و، التي تتعامل مع إدارة الذاكرة.
وفي السياق ذاته، ، التي تتحقق من صحة البيانات وتوزعها حسب ما هو محدد في وصف العنصر في قسم البيانات.
من جهة ثانية، ، التي تقوم بـإسناد (حوسبة) القيم إلى عناصر البيانات؛ والتحرك المقابل تُسند الحقول المتناظرة التي تحمل نفس الاسم.
وفي هذا السياق، ، التي لها 15 صيغة: يمكنها تعديل الفهارس، وتعيين مراجع الكائنات، وتغيير سعات الجداول، من بين وظائف أخرى.
وفي السياق ذاته، يتم ترتيب الملفات والجداول باستخدام ، وتعليمة تدمج وتفرز الملفات. تعليمة توفر سجلات للفرز و تسترجع السجلات المرتبة حسب الترتيب.
وفي هذا السياق، ، ، ، ، و، التي تتعامل مع العمليات الحسابية (مع تعليمة التي تعين نتيجة صيغة إلى متغير).
- و، اللتان تقومان على التوالي بربط وتقسيم السلاسل.
- ، التي تعد أو تستبدل حالات سلسلة فرعية معينة داخل سلسلة نصية.
- ، التي تبحث في جدول عن أول مدخل يحقق شرطاً معيناً.
، التي تضبط عناصر البيانات على القيم الافتراضية لها.
الأفعال التالية تعالج البيانات:
IF x
- IF x
- IF y
- DISPLAY a
DISPLAY z.
من جانب آخر، خطأ آخر هو نتيجة لمشكلة "إيلس" المعلقة، حيث يمكن لتعليمتي IF أن ترتبطا بـELSE واحدة.
DISPLAY y.
في هذا الإطار، هنا، القصد هو عرض y وz إذا كانت الحالة x صحيحة. ومع ذلك، سيتم عرض z مهما كانت قيمة x لأن تعليمة IF تم إنهاؤها بخطأ بنقطة بعد .
تنسيق الشيفرة
ومن جهة أخرى، كما قدم كوبول 2002 تنسيقًا حرًا للشيفرة. يمكن وضع الشيفرة الحرة في أي عمود من الملف، كما في لغات البرمجة الأحدث. تُستعمل التعليقات بواسطة *>، ويمكن وضعها في أي مكان، كما يمكن استخدامها كذلك في الشيفرة بالتنسيق الثابت. لا توجد أسطر متابعة، وتستبدل التوجيه >>PAGE بدلًا من مؤشر /.
علاوةً على ذلك، في كوبول 2002، تم دمج المنطقتين A وB لتكوين "منطقة نص البرنامج" التي تنتهي الآن عند عمود تحدده جهة التنفيذ.
ومن ناحية أخرى، يمكن كتابة كوبول بتنسيقين: ثابت (وهو الافتراضي) أو حر. في التنسيق الثابت، يجب محاذاة الشيفرة لتناسب مناطق معينة (بسبب الإرث التاريخي لاستخدام البطاقات المثقبة). وحتى إصدار كوبول 2002، كانت هذه المناطق كما يلي:
من جانب آخر، بلغت شهرة كوبول ذروتها في عصر خرامة البطاقات والبطاقات المثقبة. كان البرنامج نفسه يُكتب على بطاقات مثقبة، ثم تُقرأ وتُترجم، وأحيانًا تُغذّى البيانات إلى البرنامج على بطاقات كذلك.
عوامل التحويل المنطقي أو الانزياح المنطقي
لا يوجد حتى الآن تطبيق كامل معروف لهذا المعيار.
التاريخ والمواصفات
EVALUATE، وهي حالة تبديل
وفي هذا السياق، أجسام حلقات PERFORM المضمنة – حيث كان من قبل يجب تحديد أجسام الحلقات في إجراء منفصل
- تعديل المرجع، الذي يسمح بالوصول إلى السلاسل الجزئية
- رموز حالة الإدخال/الإخراج.
- تم تبني المعيار الجديد من قبل جميع هيئات المعايير الوطنية، بما في ذلك ANSI.
ومن جهة أخرى، تبعت ذلك تعديلان في 1989 و1993. قدم التعديل الأول دوال ضمنية، وقدم الآخر تصحيحات.
وفي هذا الصدد، INITIALIZE، جملة تتيح تعيين مجموعات من البيانات إلى قيمها الافتراضية
جهود التحديث
ومن جهة أخرى، خلال جائحة فيروس كورونا والارتفاع المفاجئ في معدلات البطالة، أفادت عدة ولايات أمريكية بوجود نقص في المبرمجين المهرة في كوبول لدعم الأنظمة القديمة المستعملة في إدارة إعانات البطالة. وقد كانت هذه الأنظمة في طور التحويل إلى لغات برمجة أحدث قبل الجائحة، لكن العملية توقفت. وبالمثل، سارعت دائرة الإيرادات الداخلية في الولايات المتحدة إلى تعديل ملفها الرئيسي الخاص بالأفراد، المبني على كوبول، من أجل صرف عشرات الملايين من المدفوعات المنصوص عليها في قانون كيرز.
وفي السياق ذاته، بحلول عام 2019، كان عدد مبرمجي كوبول يتناقص بسرعة بسبب التقاعد، مما أدى إلى فجوة مهارية وشيكة في المؤسسات الحكومية والتجارية التي لا تزال تعتمد على أنظمة الحواسيب المركزية لمعالجة المعاملات عالية الحجم. وقد ثبت أن إعادة كتابة أنظمة كوبول بلغات أحدث مكلف ومليء بالمشاكل، وكذلك الحال مع الاستعانة بمصادر خارجية لصيانة الشيفرة، مما أدى إلى دعوات لتدريب المزيد من الأشخاص على كوبول.
السمات
من جانب آخر، في عامي 2006 و2012، أظهرت استطلاعات أجرتها مجلة كمبيوتر وورلد (شملت 352 قارئًا) أن أكثر من 60٪ من المؤسسات تستعمل كوبول (أكثر من سي++ وفيجوال بيسك دوت نت)، وأن كوبول تُستعمل في أغلب البرامج الداخلية لنصف تلك المؤسسات. وقد قال 36٪ من المدراء إنهم يخططون للانتقال من كوبول، بينما قال 25٪ إنهم سيفعلون ذلك لولا تكاليف إعادة كتابة النظام القديم (حاسوب). وبدلًا من ذلك، قامت بعض الشركات بترحيل برامج كوبول من الحواسيب المركزية إلى أجهزة أرخص وأسرع.
علاوةً على ذلك، وقد نفذت عدة بنوك جهود تحديث متعددة السنوات لكوبول، أدت أحيانًا إلى اضطرابات كبيرة في الخدمات نتج عنها فرض غرامات.
أنواع البيانات
من جهة ثانية، تختلف صرامة أنواع البيانات في كوبول. حيث يتم تحويل البيانات الرقمية بين تمثيلات وأحجام مختلفة دون إشعار، ويمكن إدراج بيانات أبجدية-رقمية في أي عنصر بيانات يمكن تخزينه كسلسلة نصية، بما في ذلك البيانات الرقمية والمجمعة. وعلى النقيض من ذلك، لا يمكن تخصيص مراجع الكائنات والمؤشرات إلا من عناصر من نفس النوع، وقد تكون قيمها مقيّدة بنوع معين.
يوفر معيار كوبول أنواع البيانات التالية:
الإرث
إضافةً إلى ذلك، تُستعمل برامج كوبول على نطاق عالمي في الحكومات وفي مختلف الصناعات مثل التجزئة، والسفر، والتمويل، والرعاية الصحية. وقد أُشير في شهادة أمام مجلس النواب الأمريكي في عام 2016 إلى أن الكثير من الوكالات الفيدرالية ما زالت تستعمل كوبول.
من جهة ثانية، تعمل كوبول في الوقت الحالي على أنظمة تشغيل متنوعة مثل z/OS، وz/VSE، وVME، ويونكس، ونونستوب، ونظام ذاكرة افتراضية مفتوح، ومايكروسوفت ويندوز. في عام 1997، أفادت مجموعة مجموعة غارتنر أن 80٪ من الأعمال التجارية العالمية تعتمد على كوبول، مع أكثر من 200 مليار سطر من الشيفرة البرمجية و5 مليارات سطر إضافي يُكتب سنويًا. واعتبارًا من عام 2020، كانت كوبول تدير العمليات الخلفية في 95٪ من حالات تمرير بطاقات الائتمان أو الخصم.
الكود الحر التنسيق
- وظائف محددة من قبل المستعمل (دوال معرفة من قبل المستعمل)
- عودية
- معالجة قائمة على الإقليمية
PERFORM speed-up-machine
- WHEN lid-closed ALSO min-speed THRU max-speed ALSO GREATER THAN desired-speed
- PERFORM slow-down-machine
- WHEN lid-open ALSO ANY ALSO NOT ZERO
- PERFORM emergency-stop
- WHEN OTHER
- CONTINUE
END-IF
وفي السياق ذاته، التعليمات المتداخلة المنتهية بنقطة هي مصدر شائع للأخطاء. مثلًا، افحص الشيفرة التالية:
EVALUATE ، عبارة تبديل
من جانب آخر، أجسام حلقات PERFORM المضمنة - سابقًا، كان يجب تحديد أجسام الحلقات في إجراء منفصل
ومن ناحية أخرى، تم اعتماد المعيار الجديد من قبل جميع هيئات التقييس الوطنية، بما في ذلك المعهد الوطني الأمريكي للمعايير (ANSI).
في هذا الإطار، تلا ذلك تعديلان في عامي 1989 و1993. أدخل التعديل الأول وحدة الوظائف الجوهرية، وقدم التعديل الثاني تصحيحات.
رموز حالة الإدخال/الإخراج.
تعديل المرجع، الذي يسمح بالوصول إلى السلاسل الفرعية
في هذا الإطار، INITIALIZE، عبارة يمكنها تعيين مجموعات البيانات إلى قيمها الافتراضية
PERFORM LABEL
- STOP RUN.
- LABEL.
- DISPLAY A
- IF A < 3
- ADD 1 TO A
- PERFORM LABEL
عامل XOR المنطقي
عبارة DELETE FILE
ومن جهة أخرى، يمكن توسيع عبارة CONTINUE بحيث يتم إيقاف البرنامج مؤقتًا لمدة محددة
Sales on 30/05/2014 were $0.00
ومن جهة أخرى، تتحكم أربع تعليمات في كاتب التقارير: ، التي تُجهز كاتب التقارير للطباعة؛ ، التي تطبع مجموعة تقريرية؛ ، التي تمنع طباعة مجموعة تقريرية؛ و، التي تُنهي معالجة التقرير. قد تبدو فقرة الإجراء (procedure division) لتقرير المبيعات السابق كما يلي:
- OPEN INPUT sales, OUTPUT report-out
- INITIATE sales-report
- PERFORM UNTIL 1 1
- READ sales
- AT END
- EXIT PERFORM
- END-READ
- VALIDATE sales-record
- IF valid-record
- GENERATE sales-on-day
- ELSE
- GENERATE invalid-sales
- END-IF
- END-PERFORM
- TERMINATE sales-report
COBOL 2002 و COBOL الموجهة للكائنات
وفي السياق ذاته، كانت هناك الكثير من الميزات الجديدة الأخرى، والتي كان الكثير منها موجودًا في مجلة CODASYL COBOL للتطوير منذ عام 1978، ولم تُتح لها الفرصة لإدراجها في COBOL-85. وشملت هذه الميزات الأخرى ما يلي:
وفي هذا السياق، في عام 1997، قدّرت مجموعة غارتنر أن إجمالي عدد أسطر لغة كوبول بلغ 200 مليار سطر، والتي كانت تُشغّل 80% من جميع برامج الأعمال. [ ج ]
من جهة ثانية، قدمت شركة Fujitsu/GTSoftware، Micro Focus مترجمات COBOL الموجهة للكائنات والتي تستهدف إطار عمل .NET .
ومن جهة أخرى، كان التقدير الأولي هو إتمام هذه المراجعة بحلول عام 1997، وقد توفرت مسودة لجنة ISO (CD) بحلول ذلك العام. وقد أدخل بعض الموردين (بما في ذلك مايكرو فوكس، وفوجيتسو، وآي بي إم ) بنيةً برمجيةً كائنية التوجه استنادًا إلى مسودات المراجعة الكاملة. وتمت الموافقة على معيار ISO النهائي ونشره في أواخر عام 2002.
علاوةً على ذلك، في أوائل التسعينيات، بدأ العمل على إضافة البرمجة الكائنية التوجه في المراجعة الكاملة التالية للغة كوبول. وقد تم استخلاص ميزات البرمجة الكائنية التوجه من لغتي سي++ وسمول توك.
- رمز حر الشكل
- الدوال المعرفة من قبل المستعمل
- التكرار
- المعالجة المستندة إلى اللغة المحلية
PERFORM ALPHA THRU GAMMA
- STOP RUN.
- ALPHA.
- DISPLAY 'A'.
- BETA.
- DISPLAY 'B'.
- GAMMA.
- DISPLAY 'C'.
- سيكون ناتج هذا البرنامج: "A A B C".
ومن جهة أخرى، تختلف كذلك عن استدعاءات الإجراءات التقليدية من حيث أنه، على الأقل تقليديًا، لا يوجد مفهوم لمكد الاستدعاءات. ونتيجة لذلك، يمكن أن تحدث استدعاءات متداخلة (قد ينفذ تسلسل كود يتم له عبارة أخرى بنفسه)، لكنها تتطلب حذرًا إضافيًا إذا تم تنفيذ أجزاء من نفس الكود بواسطة كلا الاستدعاءين. تنشأ المشكلة عندما يصل الكود في الاستدعاء الداخلي إلى نقطة الخروج من الاستدعاء الخارجي. وبشكل أكثر رسمية، إذا مر التحكم عبر نقطة خروج استدعاء تم استدعاؤه سابقًا لكنه لم يكتمل بعد، ينص معيار كوبول 2002 على أن السلوك يكون سلوك غير معرف.
- المثال التالي (مأخوذ من فيرمان وفيرهوفن 2006) يوضح المشكلة:
- LABEL1.
- DISPLAY '1'
وفي السياق ذاته، السبب هو أن كوبول، بدلًا من "عنوان العودة"، يعمل بما يمكن تسميته بعنوان الاستمرار. عندما يصل تدفق التحكم إلى نهاية أي إجراء، يتم البحث عن عنوان الاستمرار وينتقل التحكم إلى ذلك العنوان. قبل تشغيل البرنامج، يتم تهيئة عنوان الاستمرار لكل إجراء إلى عنوان البداية للإجراء الذي يليه في نص البرنامج بحيث إذا لم تحدث عبارات ، يتدفق التحكم من الأعلى إلى الأسفل عبر البرنامج. ولكن عند تنفيذ عبارة ، فإنها تعدل عنوان الاستمرار للإجراء المُستدعى (أو الإجراء الأخير في النطاق المُستدعى، إذا تم استخدام )، بحيث يعود التحكم إلى موقع الاستدعاء في النهاية. تُحفظ القيمة الأصلية وتُستعاد فيما بعد، لكن هناك موقع تخزين واحد فقط. إذا عمل استدعاءان متداخلان على كود متداخل، فقد يتداخلا في إدارة عنوان الاستمرار بطرق متعددة.
Seller: Howard Discount
- ...
- Sales Report Page 12
- Sales on 08/05/2014 were $543.98
- INVALID RECORD: William Selden 12052014FOOFOO
CLOSE sales, report-out
.
كذلك، يميل استخدام كاتب التقارير إلى التفاوت بدرجة كبيرة؛ فبعض المؤسسات تستعمله بكثافة بينما لا يستعمله البعض الآخر إطلاقًا. فضلًا عن ذلك، فقد اختلفت جودة تطبيقات كاتب التقارير، حيث كانت بعض التطبيقات الأقل جودة تستعمل كميات مفرطة من الذاكرة أثناء التنفيذ.
قسم الإجراءات
READ record-file
- AT END SET no-more-records TO TRUE.
- *> محددات النطاق ("الإنهاء الصريح")
- IF invalid-record
- IF no-more-records
- CONTINUE
- ELSE
- READ record-file
- AT END SET no-more-records TO TRUE
- END-READ
- END-IF
الإجراءات
وفي السياق ذاته، تشبه عبارة إلى حد ما استدعاء الإجراء في لغات أحدث من حيث أن التنفيذ يعود إلى الكود الذي يلي عبارة في نهاية الكود المستدعى؛ ومع ذلك، فهي لا توفر آلية لتمرير وسيط أو لإرجاع قيمة نتيجة. إذا تم استدعاء روتين فرعي باستخدام عبارة بسيطة مثل ، فإن التحكم يعود عند نهاية الإجراء المُستدعى. مع ذلك، غريبة بعض الشيء لأنها قد تُستعمل لاستدعاء نطاق يشمل تسلسل عدة إجراءات متجاورة. يتم ذلك باستخدام البناء :
وعلى صعيد آخر، الأقسام والفقرات في قسم الإجراءات (المُجمعة تُسمى إجراءات) يمكن استخدامها كتسميات وكدوال بسيطة. على عكس الأقسام الأخرى، لا تحتاج الفقرات لأن تكون داخل أقسام.
PERFORM ALPHA
PROCEDURE so-and-so.
وعلى صعيد آخر، يتم تنفيذ الإجراءات في البرنامج بشكل تسلسلي حتى يتم إنهاؤه. لاستخدام الإجراءات كروتينات فرعية، يُستعمل الفعل .
دعم مجموعات الأحرف الموسعة مثل يونيكود
نتائج العمليات الحسابية المحمولة
ومن ناحية أخرى، أنواع البيانات ذات الفاصلة العائمة والبيانات الثنائية (حتى ذلك الحين، كانت العناصر الثنائية تُقتطع بناءً على مواصفات الأساس 10 لإعلانها)
تنظيم الملفات LINE SEQUENTIAL
- تعريف حلقة حلقة لامتناهية باستخدام PERFORM UNTIL EXIT
- دالة داخلية SUBSTITUTE تتيح استبدال جزء نصي بأطوال مختلفة
- دالة CONVERT لتحويل القواعد العددية
كوبول-74
ومن جهة أخرى، بشكل مستقل عن لجنة أنسي، كانت لجنة لغة البرمجة كوداسيل تعمل على تحسين اللغة. وصفت هذه اللجنة نسخًا جديدة في أعوام 1968، 1969، 1970، و1973، تضمنت تغييرات مثل وسائل جديدة للتواصل بين البرامج، وتصحيح الأخطاء، ودمج الملفات، إلى جانب تحسين التعامل مع السلاسل النصية وميزات إدراج المكتبات البرمجية.
من جانب آخر، بحلول عام 1970، أصبحت لغة كوبول أكثر لغات البرمجة استخدامًا في العالم.
ومن جهة أخرى، في سنة 1974، نشرت أنسي نسخة منقحة من معيار كوبول، تضمنت ميزات جديدة مثل تنظيمات الملفات، وأمر ووحدة تقسيم الذاكرة. وشملت الميزات المحذوفة أمر ، وأمر (الذي تم استبداله بـ )، ووحدة الوصول العشوائي المعرفة من قبل المنفذ (والتي تم استبدالها بوحدات الإدخال/الإخراج التسلسلي والنسبية الجديدة). شكّلت هذه التعديلات 44 تغييرًا، جعلت الأوامر الحالية غير متوافقة مع المعيار الجديد. كان من المقرر إزالة كاتب التقارير من كوبول لكنه أُعيد قبل نشر المعيار. تبنت ISO المعيار المنقح لاحقًا في سنة 1978.
وعلى صعيد آخر، مع ذلك، لم تكن لجنة لغة البرمجة معروفة جيدًا. فقد اشتكى نائب الرئيس، ويليام رينهولز، من أن ثلثي مجتمع كوبول لم يكن على علم بوجود اللجنة. كما افتقرت اللجنة إلى الأموال لجعل الوثائق العامة، مثل محاضر الاجتماعات ومقترحات التغيير، متاحة بحرية.
وعلى صعيد آخر، على الرغم من استقلالية كوداسيل عن لجنة أنسي، استعملت أنسي مجلة مجلة كوداسيل للتنمية لتحديد الميزات التي كانت شائعة بما يكفي لتبرير تنفيذها. كما نسقت لجنة لغة البرمجة مع منظمة "إمكا" واللجنة اليابانية لمعيار كوبول.
DISPLAY '2'
وفي السياق ذاته، قد يتوقع المرء أن ناتج هذا البرنامج سيكون "1 2 3 4 3": بعد عرض "2"، تتسبب العبارة الثانية في عرض "3" و "4"، ثم يستمر الاستدعاء الأول بعرض "3". في تنفيذات كوبول التقليدية، هذا ليس صحيحًا. بدلاً من ذلك، تقوم العبارة الأولى بتعيين عنوان الاستمرار في نهاية بحيث تقفز مرة أخرى إلى موقع الاستدعاء داخل . بينما تقوم العبارة الثانية بتعيين العودة في نهاية لكنها لا تعدل عنوان الاستمرار الخاص بـ، متوقعة أن يكون عنوان الاستمرار الافتراضي. لذا، عندما يصل الاستدعاء الداخلي إلى نهاية ، يقفز إلى عبارة الخارجية، ويتوقف البرنامج بعد طباعة "1 2 3" فقط. من ناحية أخرى، في بعض تنفيذات كوبول مثل المترجم المفتوح المصدر TinyCOBOL، لا تتداخل العبارتان مع بعضهما البعض، ويكون الناتج بالفعل "1 2 3 4 3". لذلك، فإن السلوك في مثل هذه الحالات ليس فقط (ربما) مفاجئًا، بل إنه غير قابل للنقل كذلك.
MOVE 1 TO A
- PERFORM LABEL3 THRU LABEL4.
- LABEL3.
- DISPLAY '3'.
- LABEL4.
- DISPLAY '4'.
وفي هذا السياق، نتيجة خاصة لهذه القيود هي أن لا يمكن استخدامها لكتابة كود تكراري (recursive). مثال بسيط آخر لتوضيح ذلك (مبسط قليلاً من ):
كوبول 2023
- أضاف معيار COBOL 2023 بعض الميزات الجديدة:
- صيغة المراسلة غير المتزامنة باستخدام عبارات SEND RECEIVE
- مرفق لمعالجة المعاملات مع COMMIT و ROLLBACK
ADD 1 TO x
ADD 1, a, b TO x ROUNDED, y, z ROUNDED
ADD a, b TO c
كوبول 2023
- أضاف معيار كوبول 2023 بعض الميزات الجديدة:
- صياغة المراسلة غير المتزامنة باستخدام التعليمات SEND وRECEIVE
- مرفق نظام معالجة المعاملات مع التضمين والإرجاع
ON SIZE ERROR
DISPLAY "Error"
مشكلة سنة 2000
علاوةً على ذلك، قُرب نهاية القرن العشرين، كانت مشكلة سنة 2000 "Y2K" محور جهد برمجي كبير باستخدام كوبول، أحيانًا من قِبل نفس المبرمجين الذين صمموا الأنظمة قبل عقود. وقد نُسبت كثافة الجهد المطلوب لتعديل شيفرة كوبول إلى الاعتماد الكبير لتطبيقات الأعمال على التواريخ، وإلى استخدام الحقول الثابتة الطول للبيانات. وقد نسبت بعض الدراسات ما يصل إلى "24٪ من تكاليف إصلاح البرمجيات لمشكلة Y2K إلى كوبول". وبعد جهود التنظيف التي بُذلت في هذه البرامج لمعالجة Y2K، وجدت دراسة استقصائية أُجريت عام 2003 أن العديد منها ظل قيد الاستخدام. وذكر المؤلفون أن بيانات الدراسة تُشير إلى "انحدار تدريجي في أهمية كوبول في تطوير التطبيقات خلال السنوات العشر التالية ما لم يتم تبني تكاملها مع لغات وتقنيات أخرى".
مرفق
وفي هذا السياق، تحسين التوافق مع لغات البرمجة الأخرى وأطر العمل مثل .نت وجافا.
وفي هذا السياق، نُشرت ثلاثة جدول الخطأ والصواب للمعيار: اثنان في 2006 وواحد في 2009.
الملفات
علاوةً على ذلك، تدعم لغة كوبول ثلاثة تنسيقات ملفات، أو ما يُعرف بـ: تسلسلية، وفهرسية، ونسبية. في الملفات التسلسلية، تكون السجلات متجاورة ويجب تصفحها باستخدام وصول متتابع، على غرار قائمة متصلة. أما الملفات الفهرسية، فتحتوي على فهرس واحد أو أكثر يسمح بالوصول وصول عشوائي إلى السجلات ويمكن فرزها بناءً على هذه الفهارس. يجب أن يحتوي كل سجل على مفتاح فريد، لكن لا يُشترط أن تكون المفاتيح الأخرى، أي ، فريدة. تختلف تطبيقات الملفات الفهرسية بين البائعين، إلا أن بعض التطبيقات الشائعة، مثل سي-آيسام وفسام، تستند إلى نظام آيسام الخاص بشركة آي بي إم. وتشمل التطبيقات الأخرى خدمات إدارة السجلات على نظام ذاكرة افتراضية مفتوح وإنسكرايب على أجهزة إتش بي إي نونستوب. أما الملفات النسبية، فتماثل الملفات الفهرسية من حيث احتوائها على مفتاح فريد لكل سجل، لكنها لا تحتوي على مفاتيح بديلة. يكون مفتاح السجل النسبي هو ترتيبه العددي؛ فمثلًا، السجل العاشر له مفتاح بقيمة 10. ويعني ذلك أن إنشاء سجل بمفتاح 5 قد يتطلب إنشاء سجلات (فارغة) سابقة. كما تتيح الملفات النسبية كلاً من الوصول المتسلسل والعشوائي.
إضافةً إلى ذلك، من الامتدادات غير المعيارية الشائعة ما يُعرف بتنظيم ، ويُستعمل لمعالجة ملفات النصوص. تنتهي السجلات في هذا النوع من الملفات بـسطر جديد وقد تختلف أطوالها.
الإدخال والإخراج
يتم التفاعل مع المستعمل باستخدام تعليمتي و.
ومن جهة أخرى، يتم التعامل مع إدخال وإخراج الملفات بواسطة تعليمات ذات وصف ذاتي ، ، ، و إلى جانب ثلاث تعليمات إضافية: التي تحدث السجل؛ التي تختار السجلات التالية للوصول عبر إيجاد سجل بمفتاح معين؛ و التي تحرر قفل على آخر سجل تم الوصول إليه.
البرمجة الكائنية
*> كلاهما يعادل الآخر.
إضافةً إلى ذلك، توجد الأصناف والواجهات في لغة كوبول منذ عام 2002. تحتوي الأصناف على كائنات مصنع، والتي تضم طرائق وبيانات (متغيرات) خاصة بالصنف، فضلًا عن كائنات مثيل تحتوي على طرائق ومتغيرات خاصة بالمثيل. وتتيح الوراثة والواجهات تحقيق تعددية الأشكال. كما تدعم اللغة برمجة عامة من خلال الأصناف المُعممة، التي يمكن تهيئتها لاستخدام أي صنف أو واجهة. تُخزن الكائنات كمرجع، وقد تُقيَّد لتكون من نوع معين. هناك طريقتان لاستدعاء الطرائق: الأمر ، الذي يعمل بشكل مشابه لـ، أو عبر استدعاء الطرائق المضمّن، والذي يُشبه استخدام الدوال.
مستويات البيانات الأخرى
- 01 wage-type PIC X.
- 88 wage-is-hourly VALUE "H".
- 88 wage-is-yearly VALUE "S", "Y".
77 property-name PIC X(80).
وعلى صعيد آخر، أما رقم المستوى 88 فيُستعمل لتعريف (ما يُعرف بمستوى 88)، وهو يكون صحيحًا عندما يحتوي عنصر البيانات الرئيسي على إحدى القيم المحددة في عبارة الخاصة به. فمثلًا، يُعرّف الكود التالي عنصرين من نوع اسم شرط من المستوى 88، ويعتمدان في صحتهما أو خطئهما على القيمة الحالية لعنصر البيانات . عندما يحتوي العنصر على القيمة ، فإن اسم الشرط يكون صحيحًا، أما إذا كانت القيمة أو ، فإن يكون صحيحًا. وإذا كانت القيمة مختلفة، فإن كلا اسمي الشرط يكونان غير صحيحين.
كذلك، يُستعمل رقم المستوى 66 للإشارة إلى إعادة تجميع لعناصر سبق تعريفها، بغض النظر عن طريقة تنظيمها. يُعرف هذا المستوى كذلك بوجود العبارة المرتبطة ، وهو نادر الاستخدام، وكان يُستعمل عادةً في البرامج القديمة في حدود عام 1988. وبما أنه يسمح بتجاهل الهيكلية الهرمية والمنطقية للبيانات، فقد نُصح بعدم استخدامه، بل إن الكثير من بيئات العمل كانت تحظره.
- 01 customer-record.
- 05 cust-key PIC X(10).
- 05 cust-name.
- 10 cust-first-name PIC X(30).
- 10 cust-last-name PIC X(30).
- 05 cust-dob PIC 9(8).
- 05 cust-balance PIC 9(7)V99.
- 66 cust-personal-details RENAMES cust-name THRU cust-dob.
- 66 cust-all-details RENAMES cust-name THRU cust-balance.
وفي السياق ذاته، يشير رقم المستوى 77 إلى أن العنصر مستقل بذاته، وفي هذه الحالة يعادل المستوى 01. فمثلًا، يُصرّح الكود التالي عن عنصرين من المستوى 77، و، وهما عنصران غير مجموعيين لا يتبعان أي عناصر بيانات أخرى:
77 sales-region PIC 9(5).
FIRST DETAIL 3
- CONTROLS seller-name.
- 01 TYPE PAGE HEADING.
- 03 COL 1 VALUE "Sales Report".
- 03 COL 74 VALUE "Page".
- 03 COL 79 PIC Z9 SOURCE PAGE-COUNTER.
- 01 sales-on-day TYPE DETAIL, LINE + 1.
- 03 COL 3 VALUE "Sales on".
- 03 COL 12 PIC 99/99/9999 SOURCE sales-date.
- 03 COL 21 VALUE "were".
- 03 COL 26 PIC $$$$9.99 SOURCE sales-amount.
- 01 invalid-sales TYPE DETAIL, LINE + 1.
- 03 COL 3 VALUE "INVALID RECORD:".
- 03 COL 19 PIC X(34) SOURCE sales-record.
- 01 TYPE CONTROL HEADING seller-name, LINE + 2.
- 03 COL 1 VALUE "Seller:".
- 03 COL 9 PIC X(30) SOURCE seller-name.
- يُنتج وصف التقرير أعلاه التخطيط التالي:
- Sales Report Page 1
- Seller: Howard Bromberg
- Sales on 10/12/2008 were $1000.00
- Sales on 12/12/2008 were $0.00
- Sales on 13/12/2008 were $31.47
- INVALID RECORD: Howard Bromberg XXXXYY
مشكلات التوافق
وفي هذا السياق، لم يكن كوبول-85 متوافقًا بالكامل مع الإصدارات السابقة، وكانت عملية تطويره مثار جدل. قاد جوزيف تي. بروفي، سي آي أو، في ترافيلرز، حملة لإعلام مستعملي كوبول بتكاليف إعادة البرمجة الكبيرة المترتبة على تنفيذ المعيار الجديد. ونتيجة لذلك، تلقّت لجنة معيار أنسي كوبول أكثر من 2,200 رسالة من الجمهور، أغلبها كانت سلبية، مما أجبر اللجنة على إدخال تغييرات. من ناحية أخرى، كان يُعتقد أن التحول إلى كوبول-85 سيزيد الإنتاجية في السنوات القادمة، مما يبرر تكاليف التحول.
ومن جهة أخرى، كان من المقصود أن تكون لغة كوبول محمولة بدرجة عالية و"مشتركة". ومع ذلك، بحلول عام 2001، كان قد تم إنشاء نحو 300 لهجة مختلفة. وكان أحد مصادر هذه اللهجات هو المعيار نفسه: فقد تألف معيار عام 1974 من نواة إلزامية واحدة وأحد عشر وحدة وظيفية، تحتوي كل منها على مستويين أو ثلاثة من الدعم، مما أتاح 104,976 متغيرًا ممكنًا.
PERFORM LABEL2 THRU LABEL3
STOP RUN.
LABEL2.
دعم لمجموعات الأحرف الموسعة مثل الترميز الموحد
علاوةً على ذلك، أنواع بيانات حسابات الفاصلة المتحركة ونظام عد ثنائي (حتى ذلك الحين، كانت العناصر الثنائية تُقتطع بناءً على مواصفات نظام عد عشري في إعلانها)
- نتائج حسابية محمولة
- أنواع بيانات بت ونوع البيانات المنطقية
- مؤشر (برمجة) وبناء جملة لاستدعاء وتحرير التخزين
- قسم لواجهات المستعمل النصية
END-EVALUATE
في هذا الإطار، تعليمة هي تعليمة إخراج ناتج وتعليمة توقف البرنامج. تحتوي تعليمة على ستة صيغ مختلفة: يمكن استخدامها كتعليمة إرجاع، أو انسياب التحكم، أو انسياب التحكم، أو علامة نهاية، أو للخروج من إجراء.
من جانب آخر، تدبير الحالات الاستثنائية يتم رفعها بواسطة تعليمة ويتم التقاطها بمعالج، أو ، يتم تعريفه في جزء من قسم الإجراءات. تبدأ الـ declaratives بقسم يحدد الأخطاء التي يجب معالجتها. يمكن أن تكون الاستثناءات أسماء أو كائنات. تستعمل تعليمة في declarative للقفز إلى التعليمة التي تلي تلك التي رفعت الاستثناء أو إلى إجراء خارج . على عكس لغات أخرى، قد لا تؤدي الاستثناءات غير الملتقطة إلى إنهاء البرنامج، ويمكن للبرنامج أن يستمر دون تأثر.
من جهة ثانية، تُستعمل عبارة لتعريف حلقات تُنفذ يتحقق شرط (وليس يتحقق، كما هو شائع في لغات أخرى). كما تُستعمل لاستدعاء إجراءات أو نطاقات من الإجراءات (انظر قسم الإجراءات لمزيد من التفاصيل). و تستدعيان برامج فرعية وطرقًا على التوالي. يحتوي اسم البرنامج الفرعي/الطريقة على سلسلة نصية قد تكون حرفية أو عنصر بيانات. يمكن تمرير المعاملات بطرق تقييم مختلفة، إما بالمحتوى (حيث يتم تمرير نسخة بالإشارة) أو بالتقييم (ولكن فقط إذا كان نموذج متاحًا). تقوم عبارة بإزالة البرامج الفرعية من الذاكرة. تؤدي عبارة إلى قفز البرنامج إلى إجراء محدد.
المخاوف بشأن عملية التصميم
وفي هذا السياق، أُثيرت شكوك حول كفاءة لجنة المعايير. قال عضو اللجنة على المدى القصير هوارد برومبرغ إن هناك "تحكماً ضئيلاً" في عملية التطوير وأنها كانت "مليئة بانقطاع الأفراد و... نقص في المواهب." كما لاحظ كل من جان ساميت وجيروم غارفنكل أن التغييرات التي أُدخلت في إحدى مراجعات المعيار كانت تُعاد في المراجعة التالية، وذلك بسبب التغيرات في أعضاء لجنة المعيار بقدر ما هو بسبب الأدلة الموضوعية.
في هذا الإطار، عانت معايير كوبول مراراً من التأخيرات: فقد وصل كوبول-85 بعد خمس سنوات من الموعد المتوقع, وتأخر كوبول 2002 خمس سنوات, وتأخر كوبول 2014 ست سنوات. لمكافحة التأخيرات، سمحت لجنة المعيار بإنشاء ملحقات اختيارية تضيف ميزات بسرعة أكبر من انتظار المراجعة التالية للمعيار. ومع ذلك، أثار بعض أعضاء اللجنة مخاوف بشأن التوافق بين التنفيذات والتعديلات المتكررة على المعيار.
قسم البيئة
علاوةً على ذلك، يحتوي قسم البيئة على قسم التهيئة وقسم الإدخال والإخراج. يُستعمل قسم التهيئة لتحديد الخصائص المتغيرة مثل رموز العملات، والإعدادات المحلية، ومجموعات المحارف. أما قسم الإدخال والإخراج فيحتوي على معلومات متعلقة بالملفات.
أنواع البيانات الثنائية والبوليانية
لواجهات المستعمل النصية
المؤشرات والصيغة اللازمة للحصول على مساحة التخزين وتحريرها
ELSE
وفي السياق ذاته، في المقطع أعلاه، ترتبط تعليمة ELSE بتعليمة بدلاً من تعليمة ، مما يسبب خطأ. قبل إدخال محددات النطاق الصريحة، كان منع ذلك يتطلب وضع بعد التعليمة الداخلية IF.
DISPLAY b.
إنهاء النطاق
- *> نقطة النهاية ("الإنهاء الضمني")
- IF invalid-record
- IF no-more-records
- NEXT SENTENCE
- ELSE
وفي هذا الصدد، بعض التعليمات، مثل و، قد تحتوي على تعليمات بداخلها. يمكن إنهاء هذه التعليمات بطريقتين: بواسطة نقطة ، التي تنهي كل التعليمات غير المنتهية المحتواة، أو بواسطة محدد نطاق، الذي ينهي أقرب تعليمة مفتوحة مطابقة.
تدفق التحكم
ومن ناحية أخرى، التعبيرات الشرطية في كوبول هي و. هو حالة تبديل مع القدرة الإضافية على تقييم عدة قيم وشروط. يمكن استخدامه لتنفيذ جدول قرارات. مثلًا، قد يُستعمل التالي للتحكم في مخرطة سي إن سي:
البيانات المجمعة
- 01 some-record. *> عنصر سجل مجموعة مجمعة
- 05 num PIC 9(10). *> عنصر أولي
- 05 the-date. *> عنصر مجموعة فرعية مجمعة
- 10 the-year PIC 9(4). *> عنصر أولي
- 10 the-month PIC 99. *> عنصر أولي
ومن جهة أخرى، يتم التصريح عن عناصر البيانات في كوبول بشكل هرمي باستخدام أرقام المستويات التي تشير إلى ما إذا كان عنصر البيانات جزءًا من عنصر آخر. العنصر الذي له رقم مستوى أعلى يكون تابعًا لعنصر ذي رقم مستوى أدنى. تُسمّى عناصر البيانات من المستوى الأعلى، ذات رقم المستوى 1، بـ. تُسمّى العناصر التي تحتوي على بيانات مجمعة تابعة بـ، أما العناصر التي لا تحتوي على بيانات مجمعة فتُسمى بـ. تُستعمل أرقام المستويات من 1 إلى 49 لوصف عناصر البيانات القياسية.
الخلفية
ومن جهة أخرى، في أواخر خمسينيات القرن العشرين، بدأ مستعملو الحواسيب ومصنّعوها يشعرون بالقلق من تزايد تكلفة البرمجة. وقد أظهرت دراسة أُجريت عام 1959 أن متوسط تكلفة البرمجة في أي منشأة لمعالجة البيانات بلغ 800,000 دولار أمريكي، وأن ترجمة البرامج لتعمل على أجهزة جديدة قد كلّفت 600,000 دولار أمريكي. وفي وقتٍ كانت تظهر فيه لغات برمجة جديدة، أشارت الدراسة ذاتها إلى أنه إذا تم استخدام لغة موحدة موجهة للأعمال، فإن تحويل البرامج سيكون أقل تكلفة وأسرع بكثير.
ومن ناحية أخرى، في اجتماع أبريل، طلبت المجموعة من وزارة الدفاع رعاية مشروع لإنشاء لغة موحدة للأعمال. وقد أثارت هذه المبادرة إعجاب تشارلز أ. فيليبس، مدير طاقم بحوث أنظمة البيانات في الوزارة، الذي رأى أنهم "فهموا تمامًا" مشاكل الوزارة. إذ كانت وزارة الدفاع تُشغّل 225 حاسوبًا، وتنتظر تسلّم 175 آخر، وقد أنفقت أكثر من 200 مليون دولار على تنفيذ برامج لتشغيل تلك الأجهزة. وكانت البرامج القابلة للنقل ستوفر الوقت، وتقلّل التكاليف، وتسهّل التحديث.
كذلك، وافق تشارلز فيليبس على رعاية الاجتماع، وكلف الوفد بصياغة جدول الأعمال.
كذلك، في 8 أبريل 1959، دعت ماري ك. هاوس، وهي عالمة حاسوب في شركة بوروز، إلى اجتماع ضم ممثلين عن الأوساط الأكاديمية، ومستعملي الحواسيب، والمصنّعين، وذلك في جامعة بنسلفانيا، لتنظيم اجتماع رسمي بشأن لغات الأعمال الموحدة. وكان من بين الحضور جريس هوبر (مخترعة لغة معالجة البيانات الشبيهة بالإنجليزية فلو-ماتيك)، وجين ساميت، وسول غورين.
كاتب التقارير
في هذا الإطار، يُعد كاتب التقارير أسلوبًا في برمجة تصريحية لإنشاء التقارير. لا يحتاج المبرمج إلا لتحديد تخطيط التقرير والبيانات المطلوبة لإنتاجه، مما يجعله في غنى عن كتابة تعليمات للتعامل مع فواصل الصفحات وتنسيق البيانات والعناوين العلوية والسفلية.
FD report-out REPORT sales-report.
من جانب آخر، ترتبط التقارير بملفات تقارير، وهي ملفات لا يمكن الكتابة فيها إلا من خلال تعليمات كاتب التقارير.
RD sales-report
وفي هذا السياق، يتم تعريف كل تقرير في قسم التقرير ضمن قسم البيانات. ويُقسم التقرير إلى مجموعات تقريرية تُعرّف رؤوس التقارير وتذييلاتها وتفاصيلها. وتُبنى التقارير حول "فواصل تحكم" هرمية . تحدث فواصل التحكم عندما يتغير متغير مفتاح؛ مثلًا، عند إنشاء تقرير يوضح طلبات العملاء، يمكن أن يحدث فاصل تحكم عندما تصل المعالجة إلى طلبات عميل مختلف. فيما يلي مثال على وصف تقرير يعرض مبيعات موظف مبيعات ويُحذّر من أي سجلات غير صالحة:
PAGE LIMITS 60 LINES
كوبول-74
وفي هذا الصدد، في سنة 1974، نشرت ANSI نسخةً مُنقّحة من لغة COBOL (ANS)، تضمنت ميزات جديدة مثل تنظيم الملفات ، وعبارة ، ووحدة التجزئة. وشملت الميزات المحذوفة عبارة ، وعبارة (التي استُبدلت بعبارة )، ووحدة الوصول العشوائي المُعرّفة من قِبل المُنفّذ (التي حلّت محلها وحدات الإدخال/الإخراج التسلسلية والنسبية الجديدة). وشكّلت هذه التغييرات 44 تغييرًا، جعلت العبارات الموجودة غير متوافقة مع المعيار الجديد. وكان من المُقرر إزالة مُنشئ التقارير من COBOL، ولكن أُعيد إدراجه قبل نشر المعيار. واعتمدت ISO لاحقًا المعيار المُحدّث في سنة 1978.
ومن ناحية أخرى، على الرغم من أن CODASYL كانت مستقلة عن لجنة ANSI، إلا أن ANSI استعملت مجلة CODASYL للتطوير لتحديد الميزات الشائعة بما يكفي لتبرير تطبيقها. كما تواصلت لجنة لغات البرمجة مع ECMA ولجنة معيار COBOL اليابانية.
وفي السياق ذاته، مع ذلك، لم تكن لجنة لغات البرمجة معروفة على نطاق واسع. فقد اشتكى نائب الرئيس، ويليام راينهولز، من أن ثلثي مجتمع لغة كوبول لم يكونوا على دراية بوجود اللجنة. كما كانت اللجنة تفتقر إلى التمويل اللازم لجعل الوثائق العامة، مثل محاضر الاجتماعات ومقترحات التغيير، متاحة مجانًا.
الكود المعدل ذاتياً
من جهة ثانية، كانت تعليمة موضع نقد لأنها تقوض "محلية السياق" وتجعل منطق البرنامج العام صعب الفهم. كما كتب مؤلف الكتاب الدراسي دانيال د. ماكراكين في سنة 1976، عندما "يجب على شخص لم يرَ البرنامج من قبل أن يتعرف عليه بأسرع ما يمكن، أحيانًا تحت ضغط وقت حرج لأن البرنامج قد فشل ... فإن رؤية تعليمة "قو تو" في فقرة بمفردها، مما يشير إلى وجود عدد غير معروف من تعليمات في مواقع غير معروفة في جميع أنحاء البرنامج، يثير الخوف في قلب أشجع المبرمجين."
من جهة ثانية، دعم مواصف كوبول الأصلية (1959) التعليمة الشهيرة ، التي أنتجت في الكثير من المترجمات كود معدل ذاتياً. X وY هما ملصقا إجراء، وتعليمة الوحيدة في الإجراء X التي تنفذ بعد مثل هذه التعليمة تعني تنفيذ بدلاً من ذلك. لا تزال الكثير من المترجمات تدعم ذلك، لكن تم اعتباره قديم في معيار كوبول 1985 وحُذف في 2002.
اللغة الوصفية
من جانب آخر، عادةً ما تُوصَف بنية كوبول باستخدام لغة معرفة مميزة تعتمد على الأقواس المعقوفة والمربعة والخطوط الرأسية والتسطير. وقد طُوّرت هذه اللغة الوصفية لأول مواصفات لغة كوبول.
يسمح هذا الوصف بالصيغ التالية:
كمثال على ذلك، لاحظ الوصف التالي لعبارة ADD:
قسم التعريف
وفي هذا السياق، يُستعمل قسم التعريف لتحديد كيان الشيفرة التالي، ويحتوي على تعريف الصنف أو الواجهة.
19.52.48 JOB 3 $HASP395 COBUCLG ENDED
وفي السياق ذاته، أنتجت قائمة المترجم المرتبطة أكثر من أربع صفحات من التفاصيل التقنية ومعلومات تشغيل الوظيفة، مقابل السطر الواحد فقط من الإخراج الناتج عن 14 سطراً من كود كوبول.
ومن ناحية أخرى، السطور العاشرة من قائمة وحدة التحكم أعلاه مُظللة للتأثير، والتظليل ليس جزءًا من إخراج وحدة التحكم الفعلي.
الاستقبال
كوبول-68
وعلى صعيد آخر، بدأت الجهود لتوحيد لغة كوبول لتجاوز حالات عدم التوافق بين الإصدارات المختلفة. في أواخر عام 1962، شكل كل من المنظمة الدولية للتوحيد القياسي (آيزو) والمعهد الأمريكي للمعايير الوطنية (أنسي) مجموعات عمل لإنشاء معايير. أصدرت أنسي معيار معيار الولايات المتحدة الأمريكية كوبول X3.23 في أغسطس 1968، والذي أصبح حجر الأساس للإصدارات اللاحقة. عُرف هذا الإصدار باسم المعيار الوطني الأمريكي لكوبول، وتم تبنيه لاحقًا من قبل آيزو في سنة 1972.
END-IF
في هذا الإطار، قد يتوقع المرء أن يكون الناتج "1 2 3 END END END"، وهذا بالفعل ما قد تنتجه بعض مترجمات كوبول. لكن مترجمات أخرى، مثل آي بي إم كوبول، ستنتج كودًا يطبع "1 2 3 END END END END ..." وهكذا، تطبع "END" مرارًا وتكرارًا في حلقة لا نهائية. نظرًا لوجود مساحة محدودة لتخزين عناوين الاستمرار الاحتياطية، يتم الكتابة فوق النسخ الاحتياطية أثناء الاستدعاءات التكرارية، وكل ما يمكن استعادته هو القفز مرة أخرى إلى .
DISPLAY 'END'.
قسم البيانات
من جانب آخر، ينقسم قسم البيانات إلى ستة أقسام تُصرّح بأنواع مختلفة من العناصر: قسم الملف لتسجيلات الملفات، وقسم مساحة العمل للمتغيرات الثابتة، وقسم التخزين المحلي للمتغيرات التلقائية، وقسم الربط للوسائط وقيمة الإرجاع، وقسم التقارير وقسم الشاشة للواجهات النصية.
خلفية
إضافةً إلى ذلك، وافق تشارلز فيليبس على رعاية الاجتماع، وكلف الوفد بصياغة جدول الأعمال.
وفي هذا الصدد، في أواخر خمسينيات القرن العشرين، بدأ مستعملو الحواسيب ومصنّعوها يشعرون بالقلق إزاء ارتفاع تكلفة البرمجة. فقد أظهر مسحٌ أُجري عام 1959 أن تكلفة البرمجة في أي نظام لمعالجة البيانات تبلغ 800 ألف دولار أمريكي في المتوسط، وأن ترجمة البرامج لتشغيلها على أجهزة جديدة ستُكلّف 600 ألف دولار أمريكي. وفي الوقت الذي كانت فيه لغات البرمجة الجديدة تنتشر بكثرة، أشار المسح نفسه إلى أنه في حال استخدام لغة برمجة شائعة موجهة للأعمال، ستكون عملية التحويل أرخص وأسرع بكثير.
ومن جهة أخرى، في 8 أبريل 1959، دعت ماري ك. هاوز، عالمة الحاسوب في شركة بوروز، إلى اجتماع ضم ممثلين عن الأوساط الأكاديمية ومستعملي الحاسوب والمصنعين في جامعة بنسلفانيا لتنظيم اجتماع رسمي حول لغات الأعمال المشتركة. وشمل الممثلون غريس هوبر (مخترعة لغة معالجة البيانات الشبيهة باللغة الإنجليزية FLOW-MATIC )، وجين ساميت، وساول غورن.
ومن ناحية أخرى، في اجتماع أبريل، طلبت المجموعة من وزارة الدفاع الأمريكية رعاية مبادرة لإنشاء لغة أعمال موحدة. وقد أثار الوفد إعجاب تشارلز أ. فيليبس، مدير قسم أبحاث أنظمة البيانات في وزارة الدفاع، الذي رأى أنهم "فهموا تمامًا" مشاكل الوزارة. كانت وزارة الدفاع تُشغّل 225 جهاز كمبيوتر، ولديها 175 جهازًا آخر قيد الطلب، وقد أنفقت أكثر من 200 مليون دولار على تنفيذ برامج لتشغيلها عليها. ومن شأن البرامج المحمولة أن توفر الوقت، وتقلل التكاليف، وتسهل عملية التحديث.
البنية النحوية المطولة
وعلى صعيد آخر، قاد هذا التوجه نحو القابلية للقراءة إلى استخدام بنية شبيهة بالإنجليزية والعناصر الهيكلية مثل الأسماء والأفعال والجمل والمقاطع والأقسام. ومع ذلك، بحلول عام 1984، كان القائمون على صيانة برامج كوبول يعانون في التعامل مع الشيفرات "التي لا تُفهم"، ولهذا جاءت التغييرات الرئيسة في كوبول-85 بهدف تسهيل الصيانة.
وفي هذا السياق، في وقت لاحق، عانى كوبول من نقص في المواد التعليمية التي تغطيه؛ إذ لم تظهر كتب تمهيدية عنه حتى عام 1963 (ونشرت دار "ريتشارد دي. إروين" كتابًا جامعيًا عن كوبول عام 1966). صرّح دونالد نيلسون، رئيس لجنة كوبول التابعة لـCODASYL، في سنة 1984 أن "الأكاديميين... يكرهون كوبول"، وأن خريجي علوم الحاسوب "تلقوا تعليمًا يغرس فيهم كراهية كوبول".
في هذا الإطار، تعرضت البنية النحوية للغة كوبول كثيرًا للنقد بسبب إطنابها. ويقول المؤيدون إن هذا كان مقصودًا لجعل الشيفرة موثقة ذاتيًا، مما يسهل صيانتها. كما كان من المفترض أن تكون كوبول سهلة التعلم والاستخدام من قبل المبرمجين، وقابلة للقراءة من قبل الموظفين غير التقنيين مثل المدراء.
من جهة ثانية، بحلول منتصف الثمانينيات، ساد كذلك قدر كبير من التعالي تجاه كوبول في مجتمع الأعمال من قبل مستعملي لغات أخرى، مثل فورتران أو لغة التجميع، ما يوحي بأن كوبول يمكن استخدامه فقط لحل المشكلات غير المعقدة.
علاوةً على ذلك، أشارت جان ساميت، عضو اللجنة قصيرة الأجل، إلى أنه "لم يُبذل سوى القليل من الجهد لإرضاء المبرمج المحترف، وفي الواقع، فإن الأشخاص الذين يهتمون بالبرمجة كهدف رئيسي غالبًا ما يكونون غير سعداء بلغة كوبول"، وعزت ذلك إلى بنية كوبول النحوية المطولة.
وعلى صعيد آخر، في عام 2003، ظهرت لغة كوبول في 80٪ من مناهج نظم معلومات في الولايات المتحدة، وهي نفس النسبة التي ظهرت بها سي++ وجافا (لغة برمجة). بعد عشر سنوات، أظهر استطلاع أجرته ميكرو فوكوس أن 20٪ من الأكاديميين الجامعيين يرون أن كوبول قديمة أو ميتة، وأن 55٪ يعتقدون أن طلابهم يظنون الشيء ذاته. كما أظهر الاستطلاع نفسه أن 25٪ فقط من الأكاديميين كانوا يدرجون برمجة كوبول ضمن مناهجهم الدراسية، رغم أن 60٪ منهم يعتقدون أنه ينبغي عليهم تدريسها.
كوبول-68
من جهة ثانية، بدأت الجهود لتوحيد لغة كوبول للتغلب على عدم التوافق بين الإصدارات. في أواخر عام 1962، شكلت كل من المنظمة الدولية للمقاييس (ISO) ومعهد المعايير الأمريكي ( ANSI في الوقت الحالي) مجموعات لوضع المعايير. أصدر معهد المعايير الأمريكي معيار كوبول X3.23 في أغسطس 1968، والذي أصبح حجر الزاوية للإصدارات اللاحقة. عُرف هذا الإصدار باسم معيار كوبول الوطني الأمريكي (ANS)، واعتمدته المنظمة الدولية للمقاييس في عام 1972.
19.52.48 JOB 3 +HELLO, WORLD
19.52.48 JOB 3 COBUCLG BASETEST GO PGM=*.DD RC= 0000
كوبول 2014
وفي هذا الصدد، تم استبدال النتائج الحسابية المحمولة بأنواع بيانات أي إي إي إي 754
يتضمن كوبول 2014 التغييرات التالية:
جداول السعة الديناميكية (ميزة تم حذفها من مسودة كوبول 2002)
وفي السياق ذاته، بين عامي 2003 و2009، تم إصدار ثلاثة تقارير فنية تصف الإنهاء الكائني، ومعالجة لغة التوصيف القابلة للتوسعة، والحاويات لكوبول.
التحميل الزائد للطريقة (تعدد التعريف للطُرق)
ومن جهة أخرى، جعلت الميزات الرئيسية اختيارية، مثل مرفق VALIDATE، وكتابة التقارير، ومرفق التعامل مع الشاشة
في هذا الإطار، عانى كوبول 2002 من دعم ضعيف: لم تدعم أي مترجمات المعيار بشكل كامل. وجدت مايكرو فوكس أن السبب يعود إلى نقص الطلب من المستعملين على الميزات الجديدة وإلى إلغاء مجموعة اختبارات المعهد الوطني للمعايير والتقانة التي كانت تُستعمل لاختبار توافق المترجمات مع المعيار. كما وُجد أن عملية التقييس كانت بطيئة وتعاني من نقص في الموارد.
كوبول-85
علاوةً على ذلك، في سنة 1979، أنشأت لجنة ISO TC97-SC5 مجموعة خبراء كوبول الدولية، بمبادرة من ويم إبنكهويزن. ضمت المجموعة خبراء كوبول من عدة دول، بما فيها الولايات المتحدة. وكان هدفها تحقيق التفاهم والاحترام المتبادل بين أنسي وبقية العالم فيما يتعلق بالحاجة إلى ميزات جديدة في كوبول. وبعد ثلاث سنوات، غيرت آيزو وضع المجموعة إلى مجموعة عمل رسمية: المنظمة الدولية للمعايير. تولت المجموعة الملكية الأساسية وتطوير معيار كوبول، حيث قدمت أنسي أغلب المقترحات.
في هذا الإطار، خلال فترة المراجعة العامة الأولى، تلقت اللجنة 2200 رد، كان منها 1700 رسائل سلبية نمطية. أما الردود الأخرى فكانت تحليلات مفصلة لتأثير كوبول-80 على أنظمتهم؛ حيث توقع أن تصل تكاليف التحويل إلى ما لا يقل عن 50 سنتًا لكل سطر شفرة. وكان أقل من اثني عشر ردًا فقط مؤيدًا للمعيار المقترح.
علاوةً على ذلك، في عام 1983، سحبت DPMA اعتراضها على المعيار، مشيرة إلى استجابة اللجنة لمخاوف الجمهور. وفي نفس العام، خلصت دراسة لمكتب المعايير الوطني إلى أن المعيار المقترح سيقدم مشاكل قليلة. وبعد عام، أصدرت ديجيتال إكوبمينت نظام ذاكرة افتراضية مفتوح كوبول-80، وذكرت أن تحويل برامج كوبول-74 يطرح مشاكل قليلة. كانت جملة EVALUATE وPERFORM المضمنة محل ترحيب خاص وعززتا الإنتاجية، بفضل تبسيط انسياب التحكم والتنقيح.
ومن جهة أخرى، في يونيو 1978، بدأ العمل على مراجعة كوبول-74. اختلف المعيار المقترح (المعروف عادة باسم كوبول-80) اختلافًا كبيرًا عن المعيار السابق، مما أثار مخاوف بشأن عدم التوافق وتكاليف التحويل. في يناير 1981، هدد جوزيف تي. بروفي، نائب الرئيس الأول لشركة ترافيلرز، بمقاضاة لجنة المعيار لأنها لم تكن توافقية مستقبلية مع كوبول-74. وصف السيد بروفي التحويلات السابقة لقاعدة الشيفرة التي تضم 40 مليون سطر بأنها "غير منتجة" و"إهدار كامل لموارد مبرمجينا". في وقت لاحق من ذلك العام، أعربت جمعية إدارة معالجة البيانات (DPMA) عن "معارضتها الشديدة" للمعيار الجديد، مشيرة إلى تكاليف التحويل "المفرطة" والتحسينات التي "فُرضت على المستعمل".
ومن ناحية أخرى، استقطبت المراجعة العامة الثانية قرابة 1000 رد (أغلبها سلبي)، في حين تلقى المراجعة الأخيرة 25 ردًا فقط، حيث تم معالجة الكثير من المخاوف.
- تم تغيير أو إلغاء ستين ميزة وأضيف 115 منها، مثل:
- محددات النطاق (END-IF، END-PERFORM، END-READ، وغيرها)
- البرامج الفرعية المتداخلة
- CONTINUE، وهي لا عملية
إضافةً إلى ذلك، في عام 1985، قبلت مجموعة العمل 4 التابعة لـ ISO النسخة المقترحة آنذاك من معيار أنسي، وأجرت عدة تغييرات وحددته كمعيار ISO الجديد كوبول 85. ونُشر في أواخر 1985.
كوبول-85
وفي هذا السياق، في يونيو 1978، بدأ العمل على مراجعة لغة COBOL-74. وقد اختلف المعيار المقترح (المعروف باسم COBOL-80) اختلافًا كبيرًا عن المعيار السابق، مما أثار مخاوف بشأن عدم التوافق وتكاليف التحويل. في يناير 1981، هدد جوزيف تي. بروفي، نائب الرئيس الأول لشركة Travelers Insurance ، بمقاضاة لجنة المعايير لعدم توافقها مع COBOL-74. ووصف بروفي عمليات التحويل السابقة لقاعدة بياناتهم البرمجية التي تبلغ 40 مليون سطر بأنها "غير منتجة" و"إهدار كامل لموارد المبرمجين". وفي وقت لاحق من ذلك العام، أعلنت جمعية إدارة معالجة البيانات (DPMA) معارضتها الشديدة للمعيار الجديد، مشيرةً إلى تكاليف التحويل "الباهظة" والتحسينات "المفروضة على المستعمل".
من جانب آخر، خلال فترة المراجعة العامة الأولى، تلقت اللجنة 2200 ردًا، منها 1700 ردًا سلبيًا. أما الردود الأخرى فكانت عبارة عن تحليلات مفصلة لتأثير لغة كوبول-80 على أنظمتهم؛ حيث قُدِّرت تكاليف التحويل بما لا يقل عن 50 سنتًا لكل سطر من التعليمات البرمجية. وكان أقل من اثني عشر ردًا مؤيدًا للمعيار المقترح.
وعلى صعيد آخر، في سنة 1983، سحبت جمعية مصنعي ومطوري برامج الحاسوب (DPMA) معارضتها للمعيار، مشيرةً إلى استجابة اللجنة لمخاوف الجمهور. وفي العام نفسه، خلصت دراسة أجراها المكتب الوطني للمعايير إلى أن المعيار المقترح لن يطرح سوى القليل من المشاكل. وبعد عام، أصدرت شركة دي إي سي برنامج VAX/VMS COBOL-80، ولاحظت أن تحويل برامج COBOL-74 لم يطرح سوى القليل من المشاكل. وقد لاقت عبارة EVALUATE الجديدة وعبارة PERFORM المضمنة استحسانًا كبيرًا، وحسّنت الإنتاجية بفضل تبسيط تدفق التحكم وتصحيح الأخطاء.
- تم تغيير أو إيقاف ستين ميزة وإضافة 115 ميزة ، مثل:
- محددات النطاق ( END-IF, END-PERFORM, END-READ, إلخ.)
- البرامج الفرعية المتداخلة
- CONTINUE ، بيان عدم القيام بأي عملية
من جانب آخر، في سنة 1985، قبلت مجموعة العمل الرابعة التابعة للمنظمة الدولية للمقاييس (ISO) النسخة آنذاك من معيار ANSI المقترح، وأجرت عدة تغييرات عليه، وجعلته معيار ISO الجديد COBOL 85. وقد تم نشره في أواخر عام 1985.
علاوةً على ذلك، أنشأت اللجنة الفرعية 97-97 التابعة للمنظمة الدولية للمعايير (ISO TC97-SC5) في عام 1979 فريق خبراء لغة كوبول الدولي، بمبادرة من ويم إيبينكهاوزن . ضمّ الفريق خبراء كوبول من دول عديدة، من بينها الولايات المتحدة. وكان هدفه تحقيق التفاهم والاحترام المتبادل بين المعهد الوطني الأمريكي للمعايير (ANSI) وبقية دول العالم فيما يتعلق بالحاجة إلى ميزات جديدة في لغة كوبول. بعد ثلاث سنوات، حوّلت المنظمة الدولية للمعايير (ISO) وضع الفريق إلى فريق عمل رسمي: فريق العمل 4 كوبول (WG 4 COBOL) . تولى الفريق المسؤولية الرئيسية عن تطوير معيار كوبول، حيث قدّم المعهد الوطني الأمريكي للمعايير (ANSI) أغلب المقترحات.
📝 هل في هذه المقالة خطأ؟
إذا وجدت معلومة تحتاج تصحيحاً أو إضافة، أو أردت حذف المقالة، أرسل لنا طلباً وسنراجعه.
ما رأيك في هذه المقالة؟