كوبول
لغة كوبول ( لغة الأعمال المشتركة ؛ / ˈkoʊbɒl , -bɔːl / ) [ 11 ] هي لغة برمجة حاسوبية مُجمّعة تُشبه اللغة الإنجليزية، مُصممة للاستخدامات التجارية. وهي لغة إجرائية ، ومنهجية ، ومنذ عام 2002، أصبحت لغة كائنية التوجه . تُستخدم كوبول بشكل أساسي في أنظمة الأعمال والمالية والإدارية للشركات والحكومات. ولا تزال كوبول تُستخدم على نطاق واسع في التطبيقات المُشغّلة على الحواسيب المركزية ، مثل عمليات المعالجة الدفعية والمعاملات واسعة النطاق . وقد قامت العديد من المؤسسات المالية الكبيرة بتطوير أنظمة جديدة بهذه اللغة حتى عام 2006، [ 12 ] ولكن معظم البرمجة بلغة كوبول اليوم تقتصر على صيانة التطبيقات الحالية. ويجري نقل البرامج إلى منصات جديدة، أو إعادة كتابتها بلغات حديثة، أو استبدالها ببرامج أخرى. [ 13 ]
بدأ تصميم لغة كوبول عام 1959 على يد شركة كوداسيل ، واستند جزئيًا إلى لغة البرمجة فلوماتيك التي صممتها غريس هوبر . وقد أُنشئت ضمن جهود وزارة الدفاع الأمريكية لإنشاء لغة برمجة محمولة لمعالجة البيانات. في البداية، نُظر إليها كحل مؤقت، لكن وزارة الدفاع ضغطت سريعًا على مصنعي الحواسيب لتوفيرها، مما أدى إلى انتشارها على نطاق واسع. [ 14 ] تم توحيد معاييرها عام 1968، وخضعت لخمس مراجعات. تشمل التوسعات دعم البرمجة الهيكلية والبرمجة كائنية التوجه . المعيار الحالي هو ISO / IEC 1989:2023. [ 15 ]
تتميز عبارات لغة كوبول ببنية نحوية نثرية ، مثل تلك المصممة لتكون موثقة ذاتيًا وسهلة القراءة. ومع ذلك، فهي مطولة وتستخدم أكثر من 300 كلمة محجوزة مقارنةً بالبنية النحوية الموجزة والمستوحاة من الرياضيات في لغات أخرى.MOVExTOy
ينقسم كود لغة كوبول إلى أربعة أقسام (التعريف، البيئة، البيانات، والإجراءات)، ويحتوي على تسلسل هرمي صارم من المقاطع والفقرات والجمل. ونظرًا لافتقارها إلى مكتبة قياسية كبيرة ، فإن المعيار يحدد 43 عبارة، و87 دالة، وفئة واحدة فقط.
تعرضت لغة كوبول لانتقادات بسبب إسهابها، وعملية تصميمها، وضعف دعمها للبرمجة الهيكلية . غالبًا ما تؤدي نقاط الضعف هذه إلى برامج ضخمة يصعب فهمها ككل، على الرغم من سهولة قراءتها محليًا.
لسنوات، اعتُبرت لغة كوبول لغة برمجة لعمليات الأعمال في الحواسيب المركزية، [ 16 ] على الرغم من أنه في السنوات الأخيرة، تم نقل العديد من عمليات كوبول إلى الحوسبة السحابية . [ 17 ]
التاريخ والمواصفات
| سنة | اسم غير رسمي | المعيار الرسمي |
|---|---|---|
| 1960 | كوبول-60 | غير متوفر |
| 1961 | كوبول-61 | غير متوفر |
| 1963 | COBOL-61 الموسع | غير متوفر |
| 1965 | كوبول-65 | غير متوفر |
| 1968 | كوبول-68 | ANSI INCITS X3.23-1968 |
| 1974 | كوبول-74 | ANSI INCITS X3.23-1974 ISO 1989:1978 |
| 1985 | كوبول-85 | ANSI INCITS X3.23-1985 ISO 1989:1985 |
| 1989 | ANSI INCITS X3.23a-1989 ISO 1989:1985/AMD 1:1992 | |
| 1993 | ANSI INCITS X3.23b-1993 ISO 1989:1985/AMD 2:1994 | |
| 2002 | كوبول-2002 | ISO/IEC 1989:2002 |
| 2006 | ISO/IEC 1989:2002/Cor 1:2006 | |
| ISO/IEC 1989:2002/Cor 2:2006 | ||
| 2009 | ISO/IEC 1989:2002/Cor 3:2009 | |
| 2014 | كوبول-2014 | ISO/IEC 1989:2014 |
| 2023 | كوبول-2023 | ISO/IEC 1989:2023 |
خلفية
في أواخر خمسينيات القرن العشرين، بدأ مستخدمو الحواسيب ومصنّعوها يشعرون بالقلق إزاء ارتفاع تكلفة البرمجة. فقد أظهر مسحٌ أُجري عام ١٩٥٩ أن تكلفة البرمجة في أي نظام لمعالجة البيانات تبلغ ٨٠٠ ألف دولار أمريكي في المتوسط، وأن ترجمة البرامج لتشغيلها على أجهزة جديدة ستُكلّف ٦٠٠ ألف دولار أمريكي. وفي الوقت الذي كانت فيه لغات البرمجة الجديدة تنتشر بكثرة ، أشار المسح نفسه إلى أنه في حال استخدام لغة برمجة شائعة موجهة للأعمال، ستكون عملية التحويل أرخص وأسرع بكثير. [ ١٨ ]
في 8 أبريل 1959، دعت ماري ك. هاوز ، عالمة الحاسوب في شركة بوروز ، إلى اجتماع ضم ممثلين عن الأوساط الأكاديمية ومستخدمي الحاسوب والمصنعين في جامعة بنسلفانيا لتنظيم اجتماع رسمي حول لغات الأعمال المشتركة. [ 19 ] وشمل الممثلون غريس هوبر (مخترعة لغة معالجة البيانات الشبيهة باللغة الإنجليزية FLOW-MATIC )، وجين ساميت ، وساول غورن . [ 20 ] [ 21 ]
في اجتماع أبريل، طلبت المجموعة من وزارة الدفاع الأمريكية رعاية مبادرة لإنشاء لغة أعمال موحدة. وقد أثار الوفد إعجاب تشارلز أ. فيليبس، مدير قسم أبحاث أنظمة البيانات في وزارة الدفاع، [ 22 ] الذي رأى أنهم "فهموا تمامًا" مشاكل الوزارة. كانت وزارة الدفاع تُشغّل 225 جهاز كمبيوتر، ولديها 175 جهازًا آخر قيد الطلب، وقد أنفقت أكثر من 200 مليون دولار على تنفيذ برامج لتشغيلها عليها. من شأن البرامج المحمولة أن توفر الوقت، وتقلل التكاليف، وتسهل عملية التحديث. [ 23 ]
وافق تشارلز فيليبس على رعاية الاجتماع، وكلف الوفد بصياغة جدول الأعمال. [ 24 ]
كوبول 60
في 28 و29 مايو 1959، عُقد اجتماع في البنتاغون لمناقشة إنشاء لغة برمجة مشتركة للأعمال (بعد عام واحد بالضبط من اجتماع ALGOL 58 في زيورخ ). حضر الاجتماع 41 شخصًا وترأسه فيليبس. [ 25 ] كانت وزارة الدفاع قلقة بشأن إمكانية تشغيل برامج معالجة البيانات نفسها على أجهزة كمبيوتر مختلفة. كانت لغة FORTRAN ، اللغة السائدة الوحيدة آنذاك، تفتقر إلى الميزات اللازمة لكتابة مثل هذه البرامج. [ 26 ]
وصف الممثلون بحماس لغةً قابلةً للتطبيق في بيئات متنوعة، من الخدمات المصرفية والتأمين إلى المرافق العامة وإدارة المخزون. واتفقوا بالإجماع على ضرورة تمكين المزيد من الأشخاص من البرمجة، وألا تُقيّد اللغة الجديدة بقيود التكنولوجيا المعاصرة. واتفقت الأغلبية على ضرورة أن تستفيد اللغة إلى أقصى حد من اللغة الإنجليزية، وأن تكون قابلةً للتغيير، ومستقلةً عن الآلات، وسهلة الاستخدام، حتى لو كان ذلك على حساب استهلاك الطاقة. [ 27 ]
أسفر الاجتماع عن تشكيل لجنة توجيهية ولجان قصيرة ومتوسطة وطويلة المدى. مُنحت اللجنة قصيرة المدى مهلة حتى سبتمبر (ثلاثة أشهر) لوضع مواصفات لغة مؤقتة، على أن تُطوّرها اللجان الأخرى لاحقًا. [ 28 ] [ 29 ] إلا أن مهمتها الرسمية كانت تحديد نقاط القوة والضعف في لغات البرمجة الحالية، ولم تُوجّهها صراحةً إلى إنشاء لغة جديدة. [ 26 ]
قوبل الموعد النهائي بالتشكيك من قبل اللجنة قصيرة المدى. [ 30 ] وصفت إحدى العضوات، بيتي هولبرتون ، مهلة الثلاثة أشهر بأنها "تفاؤل مفرط"، وشككت في أن اللغة ستكون حلاً مؤقتاً بالفعل. [ 31 ] اجتمعت اللجنة التوجيهية في 4 يونيو، ووافقت على تسمية النشاط بأكمله " لجنة لغات أنظمة البيانات" ( CODASYL) ، وتشكيل لجنة تنفيذية. [ 32 ]
ضمّت اللجنة قصيرة المدى ممثلين عن ست شركات مصنّعة للحواسيب وثلاث وكالات حكومية. وشملت الشركات المصنّعة: بوروز كوربوريشن ، وآي بي إم ، ومينيابوليس-هانيويل (مختبرات هانيويل)، وآر سي إيه ، وسبري راند ، وسيلفانيا إلكتريك برودكتس . أما الوكالات الحكومية فكانت: القوات الجوية الأمريكية ، وحوض ديفيد تايلور النموذجي التابع للبحرية الأمريكية ، والمكتب الوطني للمعايير (الذي يُعرف الآن باسم المعهد الوطني للمعايير والتكنولوجيا). [ 33 ] وترأس اللجنة جوزيف ويغستين من المكتب الوطني للمعايير الأمريكي. وبدأ العمل بدراسة أوصاف البيانات، والبيانات، والتطبيقات الحالية، وتجارب المستخدمين. [ 34 ]
ركزت اللجنة بشكل أساسي على دراسة لغات البرمجة FLOW-MATIC و AIMACO و COMTRAN . [ 26 ] [ 35 ] وكانت لغة FLOW-MATIC مؤثرة بشكل خاص نظرًا لتطبيقها الفعلي، ولأن لغة AIMACO كانت مشتقة منها مع تغييرات طفيفة فقط. [ 36 ] [ 37 ] كما عملت غريس هوبر، مخترعة FLOW-MATIC، مستشارةً فنيةً للجنة. [ 30 ] تمثلت إسهامات FLOW-MATIC الرئيسية في لغة COBOL في أسماء المتغيرات الطويلة، والكلمات الإنجليزية للأوامر، وفصل أوصاف البيانات عن التعليمات. [ 38 ] يُطلق على هوبر أحيانًا لقب "أم COBOL" أو "جدة COBOL"، [ 39 ] [ 40 ] [ 41 ] على الرغم من أن جان ساميت ، المصمم الرئيسي للغة COBOL، صرّح بأن هوبر "لم تكن أم COBOL أو مبتكرتها أو مطورتها". [ 42 ] [ 1 ]
اعتُبرت لغة COMTRAN من IBM، التي ابتكرها بوب بيمر ، منافسةً للغة FLOW-MATIC [ 43 ] [ 44 ] من قِبل لجنة قصيرة المدى مؤلفة من زملاء غريس هوبر. [ 45 ] لم تُدمج بعض ميزاتها في لغة COBOL حتى لا يبدو أن IBM قد سيطرت على عملية التصميم، [ 28 ] وصرحت جين ساميت في عام 1981 بوجود "تحيز قوي ضد IBM" من قِبل بعض أعضاء اللجنة (بمن فيهم هي نفسها). [ 46 ] في إحدى الحالات، بعد أن حضر روي غولدفينغر، مؤلف دليل COMTRAN وعضو اللجنة متوسطة المدى، اجتماعًا للجنة فرعية لدعم لغته وتشجيع استخدام التعبيرات الجبرية، أرسلت غريس هوبر مذكرة إلى اللجنة قصيرة المدى تُعيد فيها التأكيد على جهود سبيري راند لإنشاء لغة قائمة على اللغة الإنجليزية. [ 47 ]
في عام 1980، علّقت غريس هوبر قائلةً: "إن لغة كوبول 60 هي 95% من لغة فلوماتيك"، وأن تأثير لغة كومتران كان "ضئيلاً للغاية". وأضافت أنها ستدّعي أن عملها تأثر بكلتا اللغتين فلوماتيك وكومتران فقط "لإرضاء الآخرين [حتى] لا يحاولوا إقصاءنا". [ 48 ]
تضمنت الميزات المُدمجة من لغة COMTRAN في لغة COBOL الصيغ، [49] والعبارة ، [ 50 ] وعبارة مُحسّنة تُغني عن الحاجة إلى عبارات GO TO ، ونظام إدارة ملفات أكثر قوة. [ 43 ]PICTUREIF
كانت جدوى عمل اللجنة موضع نقاش حاد. فبينما رأى بعض الأعضاء أن اللغة تتضمن الكثير من التنازلات وأنها نتاج تصميم جماعي ، رأى آخرون أنها أفضل من اللغات الثلاث التي تم فحصها. ورأى البعض أن اللغة معقدة للغاية، بينما رأى آخرون أنها بسيطة للغاية. [ 51 ]
تضمنت الميزات المثيرة للجدل تلك التي اعتبرها البعض عديمة الفائدة أو متقدمة للغاية بالنسبة لمستخدمي معالجة البيانات. وشملت هذه الميزات التعبيرات المنطقية ، والصيغ ، وفهرسة الجداول . [ 52 ] [ 53 ] وكانت نقطة خلاف أخرى هي ما إذا كان ينبغي جعل الكلمات المفتاحية حساسة للسياق وتأثير ذلك على سهولة القراءة. [ 52 ] على الرغم من رفض الكلمات المفتاحية الحساسة للسياق، فقد تم استخدام هذا النهج لاحقًا في لغة PL/I وجزئيًا في لغة COBOL منذ عام 2002. [ 54 ] لم يُولَ اهتمام يُذكر للتفاعلية ، والتفاعل مع أنظمة التشغيل (التي كانت قليلة في ذلك الوقت)، والدوال (التي اعتُبرت رياضية بحتة وغير مفيدة في معالجة البيانات). [ 55 ] [ 56 ]
عُرضت المواصفات على اللجنة التنفيذية في 4 سبتمبر. ولم ترقَ إلى مستوى التوقعات: فقد أشار جوزيف ويغستين إلى أنها "تحتوي على نقاط ضعف وتحتاج إلى بعض الإضافات"، ووصفها بوب بيمر لاحقًا بأنها "مزيج غير متجانس". مُنحت اللجنة مهلة حتى ديسمبر لتحسينها. [ 30 ]
في اجتماع عُقد منتصف سبتمبر، ناقشت اللجنة اسم اللغة الجديدة. وشملت الاقتراحات "BUSY" (نظام الأعمال)، و"INFOSYL" (لغة نظم المعلومات)، و"COCOSYL" (لغة أنظمة الحاسوب المشتركة). [ 57 ] من غير الواضح من الذي اقترح اسم "COBOL"، [ 58 ] [ 59 ] على الرغم من أن بوب بيمر ادعى لاحقًا أنه هو من اقترحه. [ 60 ] [ 61 ] [ 62 ]
في أكتوبر، تلقت لجنة النطاق المتوسط نسخًا من مواصفات لغة FACT التي وضعها روي نوت . وقد أعجبت اللجنة بميزاتها لدرجة أنها أصدرت قرارًا بجعل لغة COBOL مبنية عليها. [ 63 ]
كان هذا بمثابة ضربة للجنة قصيرة المدى، التي أحرزت تقدمًا ملحوظًا في وضع المواصفات. فعلى الرغم من تفوقها التقني، لم تُصمم FACT مع مراعاة قابلية النقل أو من خلال توافق آراء المصنّعين والمستخدمين. كما افتقرت إلى تطبيق عملي قابل للإثبات، [ 30 ] مما سمح لمؤيدي COBOL القائم على FLOW-MATIC بإلغاء القرار. وقد عرقل هوارد برومبيرغ، ممثل شركة RCA، مشروع FACT أيضًا، حتى لا يذهب جهد RCA في تطوير تطبيق COBOL سدىً. [ 64 ]
سرعان ما اتضح أن اللجنة كانت كبيرة جدًا بحيث لا يمكنها إحراز أي تقدم سريع. فاشترى هوارد برومبيرغ، المحبط، شاهد قبر بقيمة 15 دولارًا (عام 1959؛ ما يعادل 170 دولارًا عام 2025 ) [ 65 ] منقوشًا عليه كلمة "كوبول"، وأرسله إلى تشارلز فيليبس ليُظهر استياءه. [ ب ] [ 67 ] [ 68 ]
تم تشكيل لجنة فرعية لتحليل اللغات الموجودة وتألفت من ستة أفراد: [ 26 ] [ 69 ]
- ويليام سيلدن وجيرترود تيرني من شركة آي بي إم،
- هوارد برومبيرغ وهوارد ديسكاونت من شركة آر سي إيه،
- فيرنون ريفز وجين إي. ساميت من شركة سيلفانيا للمنتجات الكهربائية.
أنجزت اللجنة الفرعية معظم العمل في وضع المواصفات، تاركةً للجنة قصيرة المدى مهمة مراجعة وتعديل عملها قبل إصدار المواصفات النهائية. [ 26 ]
تمت الموافقة على المواصفات من قبل اللجنة التنفيذية في 8 يناير 1960، وأُرسلت إلى مطبعة الحكومة التي طبعتها باسم COBOL 60. وكانت الأهداف المعلنة للغة هي تمكين كتابة برامج فعالة وقابلة للنقل بسهولة، وتمكين المستخدمين من الانتقال إلى أنظمة جديدة بأقل جهد وتكلفة، وأن تكون مناسبة للمبرمجين عديمي الخبرة. [ 70 ]
أنشأت اللجنة التنفيذية لـ CODASYL لاحقًا لجنة صيانة COBOL للإجابة على أسئلة المستخدمين والبائعين ولتحسين وتوسيع المواصفات. [ 71 ]
خلال عام 1960، ازداد عدد الشركات المصنعة التي تخطط لبناء مترجمات لغة كوبول. وبحلول سبتمبر، انضمت خمس شركات أخرى إلى كوداسيل ( بينديكس ، وشركة كونترول داتا ، وجنرال إلكتريك ، وناشونال كاش ريجستر ، وفيلكو )، وأعلنت جميع الشركات الممثلة عن مترجمات كوبول. وخططت جنرال إلكتريك وآي بي إم لدمج كوبول في لغتيهما، جيكوم وكومتران على التوالي. في المقابل، خططت شركة إنترناشونال كمبيوترز آند تابوليتورز لاستبدال لغتها، كودل، بلغة كوبول. [ 72 ]
في غضون ذلك، عملت شركتا RCA وSperry Rand على تطوير مُجمِّعات لغة كوبول. تم تشغيل أول برنامج كوبول في 17 أغسطس على جهاز RCA 501. [ 73 ] وفي 6 و7 ديسمبر، تم تشغيل البرنامج نفسه (مع بعض التعديلات الطفيفة) على جهاز كمبيوتر من RCA وجهاز كمبيوتر من Remington-Rand Univac ، مما أثبت إمكانية تحقيق التوافق. [ 74 ]
لا يزال التأثير النسبي للغات المستخدمة موضحًا في التوصيات المطبوعة في جميع أدلة مرجعية لغة كوبول:
لغة COBOL هي لغة صناعية وليست ملكًا لأي شركة أو مجموعة شركات، أو لأي منظمة أو مجموعة منظمات.
لا يقدم أي مساهم أو لجنة CODASYL COBOL أي ضمان، صريحًا كان أم ضمنيًا، بشأن دقة نظام البرمجة ولغته أو أدائهما. كما لا يتحمل أي مساهم أو اللجنة أي مسؤولية في هذا الشأن. وفيما يلي أسماء مؤلفي ومالكي حقوق الطبع والنشر للمواد المستخدمة هنا:
FLOW-MATIC (علامة تجارية لشركة Unisys Corporation )، برمجة لأنظمة أتمتة البيانات UNIVAC (R) I و II، حقوق الطبع والنشر 1958، 1959، لشركة Unisys Corporation؛ نموذج المترجم التجاري لشركة IBM رقم F28-8013، حقوق الطبع والنشر 1959 لشركة IBM؛ FACT، DSI 27A5260-2760، حقوق الطبع والنشر 1960 لشركة Minneapolis-Honeywell.لقد أذنوا صراحةً باستخدام هذه المادة، كلياً أو جزئياً، في مواصفات لغة كوبول. ويشمل هذا الإذن إعادة إنتاج مواصفات كوبول واستخدامها في أدلة البرمجة أو المنشورات المماثلة. [ 75 ]
من COBOL-61 إلى COBOL-65
من غير المرجح أن تبقى لغة كوبول موجودة بحلول نهاية العقد.
تم اكتشاف العديد من العيوب المنطقية في لغة كوبول 60 ، مما دفع تشارلز كاتز من شركة جنرال إلكتريك إلى التحذير من عدم إمكانية تفسيرها بشكل قاطع. قامت لجنة مؤقتة مترددة بتنقيح شامل، وبحلول مارس 1963، أفيد بأن بنية لغة كوبول أصبحت قابلة للتحديد مثل لغة ألغول ، على الرغم من بقاء بعض الغموض الدلالي. [ 72 ]
كانت مُجمِّعات لغة كوبول المبكرة بدائية وبطيئة. تُعدّ كوبول لغةً صعبةً لكتابة مُجمِّع لها، نظرًا لبنية تركيبها المعقدة وكثرة العناصر الاختيارية ضمنها، فضلًا عن الحاجة إلى توليد شيفرة فعّالة للغة ذات تمثيلات بيانات متعددة، وتحويلات ضمنية للأنواع، وإعدادات ضرورية لعمليات الإدخال والإخراج. [ 77 ] أظهر تقييم أجرته البحرية الأمريكية عام 1962 أن سرعات التجميع تتراوح بين 3 و11 عبارة في الدقيقة. وبحلول منتصف عام 1964، ارتفعت هذه السرعات إلى ما بين 11 و1000 عبارة في الدقيقة. ولوحظ أن زيادة الذاكرة تُحسّن السرعة بشكل كبير، وأن تكاليف التجميع تتفاوت بشكل كبير: حيث تتراوح تكلفة العبارة الواحدة بين 0.23 دولار و18.91 دولار. [ 78 ]
في أواخر عام 1962، أعلنت شركة IBM أن لغة COBOL ستكون لغة التطوير الأساسية لديها وأن تطوير لغة COMTRAN سيتوقف. [ 78 ]
خضعت مواصفات لغة كوبول للمراجعة ثلاث مرات خلال السنوات الخمس التي تلت نشرها. استُبدلت لغة كوبول-60 في عام 1961 بلغة كوبول-61، ثم استُبدلت هذه الأخيرة بمواصفات كوبول-61 الموسعة في عام 1963، والتي أضافت وظائف الفرز وكتابة التقارير. [ 79 ] وقد صححت هذه الوظائف المضافة عيوبًا حددتها شركة هانيويل في أواخر عام 1959 في رسالة إلى اللجنة قصيرة المدى. [ 73 ] وجاء إصدار كوبول لعام 1965 بمزيد من التوضيحات للمواصفات، وقدم وظائف للتعامل مع ملفات وجداول التخزين الضخمة . [ 80 ]
كوبول-68
بدأت الجهود لتوحيد لغة كوبول للتغلب على عدم التوافق بين الإصدارات. في أواخر عام 1962، شكلت كل من المنظمة الدولية للمقاييس (ISO) ومعهد المعايير الأمريكي ( ANSI حاليًا ) مجموعات لوضع المعايير. أصدر معهد المعايير الأمريكي معيار كوبول X3.23 في أغسطس 1968، والذي أصبح حجر الزاوية للإصدارات اللاحقة. [ 81 ] عُرف هذا الإصدار باسم معيار كوبول الوطني الأمريكي (ANS)، واعتمدته المنظمة الدولية للمقاييس في عام 1972. [ 82 ]
كوبول-74
بحلول عام 1970، أصبحت لغة البرمجة كوبول اللغة الأكثر استخدامًا في العالم. [ 83 ]
بشكل مستقل عن لجنة ANSI، كانت لجنة لغة البرمجة CODASYL تعمل على تحسين اللغة. وقد وصفت إصدارات جديدة في أعوام 1968 و1969 و1970 و1973، تضمنت تغييرات مثل إمكانيات جديدة للتواصل بين البرامج، وتصحيح الأخطاء، ودمج الملفات، بالإضافة إلى تحسينات في معالجة السلاسل النصية وميزات تضمين المكتبات . [ 84 ]
على الرغم من أن CODASYL كانت مستقلة عن لجنة ANSI، إلا أن ANSI استخدمت مجلة CODASYL للتطوير لتحديد الميزات الشائعة بما يكفي لتبرير تطبيقها. [ 85 ] كما تواصلت لجنة لغات البرمجة مع ECMA ولجنة معيار COBOL اليابانية. [ 84 ]
مع ذلك، لم تكن لجنة لغات البرمجة معروفة على نطاق واسع. فقد اشتكى نائب الرئيس، ويليام راينهولز، من أن ثلثي مجتمع لغة كوبول لم يكونوا على دراية بوجود اللجنة. كما كانت اللجنة تفتقر إلى التمويل اللازم لجعل الوثائق العامة، مثل محاضر الاجتماعات ومقترحات التغيير، متاحة مجانًا. [ 86 ]
في عام 1974، نشرت ANSI نسخةً مُنقّحة من لغة COBOL (ANS)، تضمنت ميزات جديدة مثل تنظيم الملفات ، DELETEوعبارة [ 87 ] ، ووحدة التجزئة . [ 88 ] وشملت الميزات المحذوفة NOTEعبارة، EXAMINEوعبارة (التي استُبدلت بـ INSPECT)، ووحدة الوصول العشوائي المُعرّفة من قِبل المُنفّذ (التي حلّت محلها وحدات الإدخال/الإخراج التسلسلية والنسبية الجديدة). وشكّلت هذه التغييرات 44 تغييرًا، جعلت العبارات الموجودة غير متوافقة مع المعيار الجديد. [ 89 ] وكان من المُقرر إزالة مُنشئ التقارير من COBOL، ولكن أُعيد إدراجه قبل نشر المعيار. [ 90 ] [ 91 ] واعتمدت ISO لاحقًا المعيار المُحدّث في عام 1978. [ 82 ]
كوبول-85
في يونيو 1978، بدأ العمل على مراجعة لغة COBOL-74. وقد اختلف المعيار المقترح (المعروف باسم COBOL-80) اختلافًا كبيرًا عن المعيار السابق، مما أثار مخاوف بشأن عدم التوافق وتكاليف التحويل. في يناير 1981، هدد جوزيف تي. بروفي، نائب الرئيس الأول لشركة Travelers Insurance ، بمقاضاة لجنة المعايير لعدم توافقها مع COBOL-74. ووصف بروفي عمليات التحويل السابقة لقاعدة بياناتهم البرمجية التي تبلغ 40 مليون سطر بأنها "غير منتجة" و"إهدار كامل لموارد المبرمجين". [ 92 ] وفي وقت لاحق من ذلك العام، أعلنت جمعية إدارة معالجة البيانات (DPMA) معارضتها الشديدة للمعيار الجديد، مشيرةً إلى تكاليف التحويل "الباهظة" والتحسينات "المفروضة على المستخدم". [ 93 ] [ 94 ]
خلال فترة المراجعة العامة الأولى، تلقت اللجنة 2200 ردًا، منها 1700 ردًا سلبيًا. [ 95 ] أما الردود الأخرى فكانت عبارة عن تحليلات مفصلة لتأثير لغة كوبول-80 على أنظمتهم؛ حيث قُدِّرت تكاليف التحويل بما لا يقل عن 50 سنتًا لكل سطر من التعليمات البرمجية. وكان أقل من اثني عشر ردًا مؤيدًا للمعيار المقترح. [ 96 ]
أنشأت اللجنة الفرعية 97-97 التابعة للمنظمة الدولية للمعايير (ISO TC97-SC5) في عام 1979 فريق خبراء لغة كوبول الدولي، بمبادرة من ويم إيبينكهاوزن . ضمّ الفريق خبراء كوبول من دول عديدة، من بينها الولايات المتحدة. وكان هدفه تحقيق التفاهم والاحترام المتبادل بين المعهد الوطني الأمريكي للمعايير (ANSI) وبقية دول العالم فيما يتعلق بالحاجة إلى ميزات جديدة في لغة كوبول. بعد ثلاث سنوات، حوّلت المنظمة الدولية للمعايير (ISO) وضع الفريق إلى فريق عمل رسمي: فريق العمل 4 كوبول (WG 4 COBOL) . تولى الفريق المسؤولية الرئيسية عن تطوير معيار كوبول، حيث قدّم المعهد الوطني الأمريكي للمعايير (ANSI) معظم المقترحات.
في عام ١٩٨٣، سحبت جمعية مصنعي ومطوري برامج الحاسوب (DPMA) معارضتها للمعيار، مشيرةً إلى استجابة اللجنة لمخاوف الجمهور. وفي العام نفسه، خلصت دراسة أجراها المكتب الوطني للمعايير إلى أن المعيار المقترح لن يطرح سوى القليل من المشاكل. [ ٩٤ ] [ ٩٧ ] وبعد عام، أصدرت شركة DEC برنامج VAX/VMSEVALUATE COBOL-80، ولاحظت أن تحويل برامج COBOL-74 لم يطرح سوى القليل من المشاكل. وقد لاقت عبارات التصريح والعبارات المضمنة الجديدة PERFORMاستحسانًا كبيرًا، وحسّنت الإنتاجية بفضل تبسيط تدفق التحكم وتصحيح الأخطاء . [ ٩٨ ]
استقطبت المراجعة العامة الثانية 1000 رد (معظمها سلبي)، بينما لم تستقطب المراجعة الأخيرة سوى 25 رداً، وبحلول ذلك الوقت تمت معالجة العديد من المخاوف. [ 94 ]
في عام 1985، قبلت مجموعة العمل الرابعة التابعة للمنظمة الدولية للمقاييس (ISO) النسخة آنذاك من معيار ANSI المقترح، وأجرت عدة تغييرات عليه، وجعلته معيار ISO الجديد COBOL 85. وقد تم نشره في أواخر عام 1985.
تم تغيير أو إيقاف ستين ميزة وإضافة 115 ميزة [ 99 ] ، مثل: [ 100 ] [ 101 ]
- محددات النطاق (
END-IF,END-PERFORM,END-READ, إلخ.) - البرامج الفرعية المتداخلة
CONTINUEبيان عدم القيام بأي عمليةEVALUATEعبارة التبديلINITIALIZEبيان يمكنه تعيين مجموعات البيانات إلى قيمها الافتراضية- أجسام الحلقات المضمنة
PERFORM- سابقًا، كان يجب تحديد أجسام الحلقات في إجراء منفصل - تعديل المرجع، الذي يسمح بالوصول إلى السلاسل الفرعية
- رموز حالة الإدخال/الإخراج.
تم اعتماد المعيار الجديد من قبل جميع هيئات التقييس الوطنية، بما في ذلك المعهد الوطني الأمريكي للمعايير (ANSI). [ 82 ]
تلا ذلك تعديلان في عامي 1989 و1993. أدخل التعديل الأول وحدة الوظائف الجوهرية ، وقدم التعديل الثاني تصحيحات. [ 82 ]
COBOL 2002 و COBOL الموجهة للكائنات
في عام 1997، قدّرت مجموعة غارتنر أن إجمالي عدد أسطر لغة كوبول بلغ 200 مليار سطر، والتي كانت تُشغّل 80% من جميع برامج الأعمال. [ ج ] [ 102 ]
في أوائل التسعينيات، بدأ العمل على إضافة البرمجة كائنية التوجه في المراجعة الكاملة التالية للغة كوبول. وقد تم استخلاص ميزات البرمجة كائنية التوجه من لغتي سي++ وسمول توك . [ 4 ] [ 5 ]
كان التقدير الأولي هو إتمام هذه المراجعة بحلول عام 1997، وقد توفرت مسودة لجنة ISO (CD) بحلول ذلك العام. وقد أدخل بعض الموردين (بما في ذلك مايكرو فوكس ، وفوجيتسو ، وآي بي إم ) بنيةً برمجيةً كائنية التوجه استنادًا إلى مسودات المراجعة الكاملة. وتمت الموافقة على معيار ISO النهائي ونشره في أواخر عام 2002. [ 103 ]
Fujitsu/GTSoftware، [ 104 ] قدمت Micro Focus مترجمات COBOL الموجهة للكائنات والتي تستهدف إطار عمل .NET .
كانت هناك العديد من الميزات الجديدة الأخرى، والتي كان الكثير منها موجودًا في مجلة CODASYL COBOL للتطوير منذ عام 1978، ولم تُتح لها الفرصة لإدراجها في COBOL-85. [ 105 ] وشملت هذه الميزات الأخرى ما يلي: [ 106 ] [ 107 ]
- رمز حر الشكل
- الدوال المعرفة من قبل المستخدم
- التكرار
- المعالجة المستندة إلى اللغة المحلية
- دعم مجموعات الأحرف الموسعة مثل يونيكود
- أنواع البيانات ذات الفاصلة العائمة والبيانات الثنائية (حتى ذلك الحين، كانت العناصر الثنائية تُقتطع بناءً على مواصفات الأساس 10 لإعلانها )
- نتائج العمليات الحسابية المحمولة
- أنواع البيانات الثنائية والبوليانية
- المؤشرات والصيغة اللازمة للحصول على مساحة التخزين وتحريرها
- واجهات المستخدم
SCREEN SECTIONالنصية - المنشأة
VALIDATE - تحسين قابلية التشغيل البيني مع لغات البرمجة الأخرى وبيئات الأطر البرمجية مثل .NET و Java .
تم نشر ثلاثة تصحيحات للمعيار: اثنان في عام 2006 وواحد في عام 2009. [ 108 ]
كوبول 2014
بين عامي 2003 و 2009، تم إعداد ثلاثة تقارير فنية تصف إنهاء الكائنات ومعالجة XML وفئات التجميع لـ COBOL. [ 108 ]
عانى إصدار COBOL 2002 من ضعف الدعم، إذ لم يدعم أيٌّ من المترجمات المعيار بشكل كامل. وقد خلصت شركة مايكرو فوكس إلى أن ذلك يعود إلى قلة طلب المستخدمين على الميزات الجديدة، وإلى إلغاء مجموعة اختبارات المعهد الوطني للمعايير والتكنولوجيا (NIST) التي كانت تُستخدم لاختبار توافق المترجمات. كما تبيّن أن عملية التقييس كانت بطيئة وتعاني من نقص الموارد. [ 109 ]
يتضمن COBOL 2014 التغييرات التالية: [ 110 ]
- أصبحت الميزات الرئيسية اختيارية، مثل المرفق
VALIDATE، وكاتب التقارير، ومرفق معالجة الشاشة. - جداول السعة الديناميكية (ميزة تم إسقاطها من مسودة COBOL 2002) [ 111 ]
- تم استبدال نتائج العمليات الحسابية المحمولة بأنواع بيانات IEEE 754
- التحميل الزائد للأساليب
كوبول 2023
أضاف معيار COBOL 2023 بعض الميزات الجديدة:
- صيغة المراسلة غير المتزامنة باستخدام عبارات "
SENDو" [ 112 ]RECEIVE - مرفق لمعالجة المعاملات مع
COMMIT[ROLLBACK112 ] XORعامل منطقي [ 112 ]- يمكن توسيع نطاق البيان
CONTINUEليشمل إيقاف البرنامج مؤقتًا لمدة محددة [ 113 ] - بيان [ 113 ]
DELETE FILE LINE SEQUENTIALتنظيم الملفات [ 114 ]- تم تعريف التكرار اللانهائي باستخدام
PERFORM UNTIL EXIT[ 113 ] SUBSTITUTEوظيفة جوهرية تسمح باستبدال السلاسل الفرعية ذات الأطوال المختلفة [ 113 ]CONVERTدالة لتحويل الأساس [ 113 ]- عوامل الإزاحة المنطقية [ 115 ]
إرث
تُستخدم برامج كوبول عالميًا في الحكومات وقطاعات متنوعة، تشمل تجارة التجزئة والسفر والتمويل والرعاية الصحية. وأشارت شهادة أمام لجنة الرقابة والإصلاح الحكومي بمجلس النواب الأمريكي عام 2016 إلى أن كوبول لا تزال قيد الاستخدام من قبل العديد من الوكالات الفيدرالية، مثل وزارة الزراعة الأمريكية ، ووزارة الأمن الداخلي ، ووزارة الصحة والخدمات الإنسانية ، ووزارة العدل الأمريكية ، ووزارة الخزانة الأمريكية ، ووزارة شؤون المحاربين القدامى الأمريكية ، [ 117 ] بالإضافة إلى دائرة الإيرادات الداخلية الأمريكية . [ 118 ]
يعمل برنامج كوبول حاليًا على أنظمة تشغيل متنوعة مثل z/OS و z/VSE و VME و Unix و NonStop OS و OpenVMS و Windows . في عام 1997، أفادت مجموعة غارتنر أن 80% من الأعمال التجارية في العالم كانت تُدار باستخدام كوبول، مع أكثر من 200 مليار سطر برمجي [ c ]، و5 مليارات سطر إضافي تُكتب سنويًا. [ 119 ] اعتبارًا من عام 2020، كان كوبول يُشغّل عمليات في الخلفية في 95% من عمليات تمرير بطاقات الائتمان أو الخصم. [ 120 ]
مشكلة عام 2000
مع اقتراب نهاية القرن العشرين، شكّلت مشكلة عام 2000 (Y2K) محور اهتمام كبير في برمجة لغة كوبول، حتى من قِبل المبرمجين أنفسهم الذين صمموا الأنظمة قبل عقود. يُعزى هذا الجهد الكبير المطلوب لتصحيح أكواد كوبول إلى الكم الهائل من تطبيقات كوبول الموجهة للأعمال، حيث تعتمد هذه التطبيقات بشكل كبير على التواريخ، وإلى حقول البيانات ذات الطول الثابت. [ 121 ] تُشير بعض الدراسات إلى أن ما يصل إلى 24% من تكاليف إصلاح برامج Y2K تعود إلى كوبول. [ 122 ] بعد الجهود المبذولة لتنظيف هذه البرامج لمواجهة مشكلة Y2K، كشف استطلاع رأي أُجري عام 2003 أن العديد منها لا يزال قيد الاستخدام. [ 123 ] وذكر الباحثون أن بيانات الاستطلاع تُشير إلى "تراجع تدريجي في أهمية كوبول في تطوير التطبيقات خلال السنوات العشر التالية، ما لم يتم اعتماد التكامل مع لغات وتقنيات أخرى". [ 124 ]
جهود التحديث
في عامي 2006 و2012، كشفت استطلاعات رأي أجرتها مجلة Computerworld (شملت 352 قارئًا) أن أكثر من 60% من المؤسسات تستخدم لغة كوبول (أكثر من لغتي C++ و Visual Basic .NET )، وأن نصف هذه المؤسسات تستخدم كوبول في غالبية برامجها الداخلية. [ 12 ] [ 125 ] وأفاد 36% من المديرين أنهم يخططون للانتقال من كوبول، بينما قال 25% إنهم سيفعلون ذلك لولا تكلفة إعادة كتابة البرامج القديمة . في المقابل، قامت بعض الشركات بنقل برامج كوبول الخاصة بها من الحواسيب المركزية إلى أجهزة أرخص وأسرع. [ 12 ]
بحلول عام 2019، كان عدد مبرمجي لغة كوبول يتناقص بسرعة بسبب التقاعد، مما أدى إلى فجوة وشيكة في المهارات لدى مؤسسات الأعمال والحكومة التي لا تزال تستخدم أنظمة الحواسيب المركزية لمعالجة كميات هائلة من المعاملات. وقد أثبتت الجهود المبذولة لإعادة كتابة أنظمة كوبول بلغات أحدث أنها مكلفة ومعقدة، وكذلك الاستعانة بمصادر خارجية لصيانة الشفرة، ولذلك تُنادى بمقترحات لتدريب المزيد من الأشخاص على لغة كوبول. [ 126 ]
قامت العديد من البنوك بجهود تحديث متعددة السنوات باستخدام لغة كوبول، مما أدى في بعض الأحيان إلى انقطاعات واسعة النطاق في الخدمة نتج عنها غرامات. [ 127 ]
خلال جائحة كوفيد-19 وما تبعها من ارتفاع حاد في معدلات البطالة، أبلغت عدة ولايات أمريكية عن نقص في مبرمجي لغة كوبول المهرة لدعم الأنظمة القديمة المستخدمة في إدارة إعانات البطالة. وكانت العديد من هذه الأنظمة قد بدأت عملية تحويلها إلى لغات برمجة أكثر حداثة قبل الجائحة، إلا أن هذه العملية توقفت مؤقتًا. [ 128 ] وبالمثل، سارعت مصلحة الضرائب الأمريكية إلى تحديث ملفها الرئيسي للأفراد المبني على لغة كوبول لصرف عشرات الملايين من المدفوعات التي نص عليها قانون الإغاثة والمساعدة الاقتصادية لمواجهة فيروس كورونا . [ 129 ]
في عام 2024، أعلنت مصلحة الضرائب الأمريكية عن الانتقال من لغة كوبول إلى لغة جافا بفضل مبادرة "الرقمية أولاً" . [ 118 ]
سمات
بناء الجملة
تتميز لغة كوبول ببنية نحوية شبيهة باللغة الإنجليزية، تُستخدم لوصف كل شيء تقريبًا في برامج كوبول. على سبيل المثال، يمكن التعبير عن شرط ما على النحو التالي: `$` أو بشكل أكثر اختصارًا: `$` أو ` $ `. ويمكن اختصار الشروط الأكثر تعقيدًا بحذف الشروط والمتغيرات المتكررة. على سبيل المثال، يمكن اختصار `$` إلى `$ `. لدعم هذه البنية النحوية، تحتوي كوبول على أكثر من 300 كلمة مفتاحية . [ 130 ] [ d ] بعض هذه الكلمات المفتاحية عبارة عن تهجئات بديلة أو جمع بسيطة لنفس الكلمة، مما يوفر عبارات وجملًا أكثر ملاءمة من الناحية النحوية؛ على سبيل المثال، يمكن استخدام الكلمتين المفتاحيتين `$` و` $ ` بشكل متبادل، وكذلك `$` و` $` و`$ `. xISGREATERTHANy xGREATERy x>y a>bANDa>cORa=d a>bANDcOR =dINOFTIMETIMESVALUEVALUES
يتكون كل برنامج COBOL من أربعة عناصر معجمية أساسية : الكلمات، والقيم الحرفية، وسلاسل الأحرف المصورة، والفواصل. تشمل الكلمات الكلمات المحجوزة والمعرفات التي يُعرّفها المستخدم. يصل طولها إلى 31 حرفًا، وقد تتضمن حروفًا وأرقامًا وواصلات وشرطات سفلية. تشمل القيم الحرفية الأرقام (مثل 1 12) والسلاسل النصية (مثل 1 'Hello!'). [ 132 ] تشمل الفواصل المسافة والفاصلة والفاصلة المنقوطة متبوعة بمسافة. [ 133 ]
ينقسم برنامج COBOL إلى أربعة أقسام: قسم التعريف، وقسم البيئة، وقسم البيانات، وقسم الإجراءات. يحدد قسم التعريف اسم ونوع عنصر المصدر، وهو المكان الذي تُحدد فيه الفئات والواجهات. يحدد قسم البيئة أي ميزات للبرنامج تعتمد على النظام الذي يُشغّله، مثل الملفات ومجموعات الأحرف . يُستخدم قسم البيانات لتعريف المتغيرات والمعاملات . يحتوي قسم الإجراءات على عبارات البرنامج . ينقسم كل قسم إلى أقسام فرعية، تتكون كل منها من فقرات.
لغة وصفية
عادةً ما يتم وصف بنية لغة كوبول بلغة وصفية فريدة باستخدام الأقواس المعقوفة والأقواس المربعة والخطوط السفلية. [ 134 ] وقد طُوّرت هذه اللغة الوصفية وفقًا لمواصفات كوبول الأصلية.
| عنصر | مظهر | وظيفة |
|---|---|---|
| جميع الأحرف كبيرة | مثال | كلمة محجوزة |
| التسطير | مثال | الكلمة المحجوزة إلزامية |
| تقويم الأسنان | { } | لا يمكن اختيار سوى خيار واحد |
| الأقواس | [] | يمكن اختيار صفر أو خيار واحد |
| الحذف | ... | يمكن تكرار العنصر السابق |
| الحانات | {| |} | يمكن اختيار خيار واحد أو أكثر. ولا يمكن اختيار أي خيار إلا مرة واحدة. |
| [ | | ] | يمكن اختيار صفر أو أكثر من الخيارات. لا يمكن اختيار أي خيار إلا مرة واحدة. |
كمثال على ذلك، انظر إلى الوصف التالي للعبارة ADD:
يسمح هذا الوصف بالصيغ التالية:
أضف 1 إلى x ، أضف 1 ، a ، b إلى x (مقربًا) ، y ، z (مقربًا)أضف a و b إلى c عند ظهور خطأ في الحجم ، اعرض "خطأ" . نهاية الإضافةأضف أ إلى ب، لا تعرض خطأ في الحجم، اعرض "لا يوجد خطأ"، عند ظهور خطأ في الحجم، اعرض "خطأ".تنسيق الكود


بلغت لغة كوبول ذروة شعبيتها في عصر آلات تثقيب المفاتيح والبطاقات المثقبة . كان البرنامج نفسه يُكتب على بطاقات مثقبة، ثم يُقرأ ويُجمّع، وكانت البيانات المُدخلة إلى البرنامج أحيانًا موجودة على بطاقات أيضًا. [ 135 ]
يمكن كتابة لغة كوبول بصيغتين: ثابتة (الصيغة الافتراضية) أو حرة. في الصيغة الثابتة، يجب محاذاة الكود ليناسب مساحات محددة (وهو أمر متبقٍ من استخدام البطاقات المثقبة). وحتى إصدار كوبول 2002، كانت هذه المساحات كالتالي:
| اسم | العمود (الأعمدة) | الاستخدام |
|---|---|---|
| منطقة أرقام التسلسل | 1-6 | كانت هذه المنطقة تُستخدم في الأصل لأرقام البطاقات/الأسطر (لتسهيل فرز البطاقات المثقبة ميكانيكيًا لضمان تسلسل رمز البرنامج المقصود بعد التحرير/المعالجة اليدوية)، ولكن المترجم يتجاهلها |
| منطقة المؤشر | 7 | الأحرف التالية مسموح بها هنا:
|
| المنطقة أ | 8–11 | يحتوي هذا على: رؤوس الإجراءات DIVISION، SECTIONوأرقام المستويات 01 و77، ومُعرّفات الملفات/التقارير. |
| المنطقة ب | 12–72 | أي رمز آخر غير مسموح به في المنطقة أ |
| منطقة أسماء البرامج | 73– | تاريخياً، وحتى العمود 80 بالنسبة للبطاقات المثقبة، يتم استخدامه لتحديد البرنامج أو التسلسل الذي تنتمي إليه البطاقة |
في لغة كوبول 2002، تم دمج المنطقتين A و B لتشكيل منطقة نص البرنامج، والتي تنتهي الآن عند عمود يحدده المبرمج. [ 136 ]
قدمت لغة كوبول 2002 أيضًا ميزة كتابة الكود الحر. يمكن وضع الكود الحر في أي عمود من الملف، كما هو الحال في لغات البرمجة الحديثة. تُحدد التعليقات باستخدام *>، والتي يمكن وضعها في أي مكان، ويمكن استخدامها أيضًا في الكود المصدري ذي التنسيق الثابت. لا توجد أسطر استمرار، >>PAGEويحل التوجيه محل /المؤشر. [ 136 ]
قسم تحديد الهوية
يُحدد قسم التعريف كيان الكود التالي ويحتوي على تعريف فئة أو واجهة.
البرمجة الكائنية التوجه
تُستخدم الأصناف والواجهات في لغة كوبول منذ عام ٢٠٠٢. تحتوي الأصناف على كائنات مصنع، تتضمن أساليب ومتغيرات الصنف، وكائنات مثيل، تتضمن أساليب ومتغيرات المثيل. [ ١٣٧ ] يوفر التوريث والواجهات تعدد الأشكال . يُدعم البرمجة العامة من خلال الأصناف المُعاملة، والتي يمكن إنشاء مثيل لها لاستخدام أي صنف أو واجهة. تُخزن الكائنات كمراجع، ويمكن تقييدها بنوع معين. هناك طريقتان لاستدعاء الأسلوب: إما باستخدام INVOKEعبارة `require`، التي تعمل بشكل مشابه لـ CALL`require`، أو من خلال استدعاء الأسلوب المضمن، وهو مشابه لاستخدام الدوال. [ ١٣٨ ]
*> هذان متكافئان. استدعاء الدالة my-class "foo" وإرجاع القيمة var، ثم نقل القيمة my-class :: "foo" إلى var. *> استدعاء دالة مضمنةلا توفر لغة كوبول طريقة لإخفاء الدوال. مع ذلك، يمكن إخفاء بيانات الصنف بتعريفها دون PROPERTYشرط، مما يمنع أي كود خارجي من الوصول إليها. [ 139 ] أُضيفت خاصية تحميل الدوال الزائد في كوبول 2014. [ 140 ]
قسم البيئة
يحتوي قسم البيئة على قسم التكوين وقسم الإدخال والإخراج. يُستخدم قسم التكوين لتحديد خصائص متغيرة مثل رموز العملات واللغات ومجموعات الأحرف. أما قسم الإدخال والإخراج فيحتوي على معلومات متعلقة بالملفات.
الملفات
يدعم COBOL ثلاثة تنسيقات للملفات، أو ما يُعرف بالهياكل : التسلسلية، والمفهرسة، والنسبية. في الملفات التسلسلية، تكون السجلات متجاورة ويجب تصفحها بالتسلسل ، على غرار القائمة المرتبطة . أما الملفات المفهرسة، فلها فهرس واحد أو أكثر يسمح بالوصول العشوائي إلى السجلات ، ويمكن فرزها بناءً عليه. يجب أن يكون لكل سجل مفتاح فريد ، ولكن ليس بالضرورة أن تكون مفاتيح السجلات البديلة فريدة. تختلف تطبيقات الملفات المفهرسة بين الموردين، على الرغم من أن التطبيقات الشائعة، مثل C-ISAM و VSAM ، تعتمد على ISAM من IBM . ومن التطبيقات الأخرى خدمات إدارة السجلات على OpenVMS و Enscribe على HPE NonStop (Tandem). أما الملفات النسبية، مثل الملفات المفهرسة، فلها مفتاح سجل فريد، ولكنها لا تحتوي على مفاتيح بديلة. مفتاح السجل النسبي هو ترتيبه؛ على سبيل المثال، السجل العاشر له مفتاح 10. هذا يعني أن إنشاء سجل بمفتاح 5 قد يتطلب إنشاء سجلات سابقة (فارغة). تسمح الملفات النسبية أيضًا بالوصول المتسلسل والعشوائي. [ 141 ]
يُعدّ تنظيم الأسطر المتسلسل أحد الامتدادات غير القياسية الشائعة ، ويُستخدم لمعالجة الملفات النصية. تُنهى السجلات في الملف بسطر جديد ، وقد تختلف أطوالها. [ 142 ]
قسم البيانات
ينقسم قسم البيانات إلى ستة أقسام تعلن عن عناصر مختلفة: قسم الملفات، لسجلات الملفات؛ قسم التخزين المؤقت، للمتغيرات الثابتة ؛ قسم التخزين المحلي، للمتغيرات التلقائية ؛ قسم الربط، للمعلمات وقيمة الإرجاع؛ قسم التقارير وقسم الشاشة، لواجهات المستخدم النصية .
البيانات المجمعة
تُعرَّف عناصر البيانات في لغة كوبول بشكل هرمي باستخدام أرقام المستويات التي تُشير إلى ما إذا كان عنصر البيانات جزءًا من عنصر آخر. العنصر ذو رقم المستوى الأعلى يكون تابعًا للعنصر ذي رقم المستوى الأدنى. تُسمى عناصر البيانات ذات المستوى الأعلى، والتي تحمل رقم المستوى 1، بالسجلات . تُسمى العناصر التي تحتوي على بيانات تجميعية تابعة بعناصر المجموعة ، بينما تُسمى العناصر التي لا تحتوي على بيانات تجميعية تابعة بالعناصر الأولية . تتراوح أرقام المستويات المستخدمة لوصف عناصر البيانات القياسية بين 1 و49. [ 143 ] [ 144 ]
01 بعض السجلات . *> عنصر سجل المجموعة المجمعة 05 رقم PIC 9(10) . *> عنصر أساسي 05 التاريخ . *> عنصر سجل المجموعة (الفرعية) المجمعة 10 السنة PIC 9(4) . *> عنصر أساسي 10 الشهر PIC 99. * > عنصر أساسي 10 اليوم PIC 99. * > عنصر أساسيفي المثال أعلاه، يكون العنصر الأساسي numوعنصر المجموعة the-dateتابعين للسجل some-record، بينما تكون العناصر الأساسية the-yearو the-monthو the-dayجزءًا من عنصر المجموعة the-date.
يمكن تمييز العناصر التابعة باستخدام الكلمة المفتاحية IN(أو OF). على سبيل المثال، انظر إلى مثال الكود أعلاه مع المثال التالي:
01 تاريخ البيع . 05 السنة PIC 9(4) . 05 الشهر PIC 99. 05 اليوم PIC 99 .the-yearتُعدّ الأسماء the-monthو و the-dayغامضةً بحد ذاتها، إذ يُعرّف بها أكثر من عنصر بيانات. لتحديد عنصر بيانات مُعيّن، كأحد العناصر الموجودة ضمن المجموعة sale-date، يستخدم المُبرمج the-year IN sale-date(أو ما يُعادله the-year OF sale-date). يُشبه هذا التركيب "تدوين النقطة" الذي تدعمه مُعظم لغات البرمجة الحديثة.
مستويات البيانات الأخرى
يُستخدم رقم المستوى 66 لإعادة تجميع العناصر المُعرَّفة سابقًا، بغض النظر عن هيكلة هذه العناصر. هذا المستوى من البيانات، والذي يُشار إليه أيضًا بالعبارة المرتبطة RENAMES، نادر الاستخدام [ 145 ] ، وكان شائعًا في البرامج القديمة حوالي عام 1988. ونظرًا لقدرته على تجاهل البيانات الهرمية والمنطقية، لم يُنصح باستخدامه، بل إن العديد من الأنظمة حظرت استخدامه [ 146 ] .
01 سجل العميل . 05 مفتاح العميل PIC X(10) . 05 اسم العميل . 10 اسم العميل الأول PIC X(30) . 10 اسم عائلة العميل PIC X(30) . 05 تاريخ ميلاد العميل PIC 9(8) . 05 رصيد العميل PIC 9(7)V99 . 66 تفاصيل العميل الشخصية RENAMES اسم العميل حتى تاريخ ميلاد العميل . 66 جميع تفاصيل العميل RENAMES اسم العميل حتى رصيد العميل .يشير رقم المستوى 77 إلى أن العنصر مستقل، وفي مثل هذه الحالات يكون مكافئًا لرقم المستوى 01. على سبيل المثال، يُعلن الكود التالي عن عنصرين من عناصر البيانات من المستوى 77، property-nameوهما sales-regionعنصران من عناصر البيانات غير الجماعية مستقلان عن (غير تابعين لـ) أي عناصر بيانات أخرى:
77 اسم العقار PIC X(80) . 77 منطقة المبيعات PIC 9(5) .يُعرّف رقم المستوى 88 اسم شرط (يُسمى مستوى 88) يكون صحيحًا عندما يحتوي عنصر البيانات الأصل على إحدى القيم المحددة في عبارته VALUE. [ 147 ] على سبيل المثال، يُعرّف الكود التالي عنصرين من نوع اسم الشرط 88، ويكونان صحيحين أو خاطئين بناءً على قيمة بيانات الحرف الحالية لعنصر wage-typeالبيانات. عندما يحتوي عنصر البيانات على القيمة 'H'، يكون اسم الشرط wage-is-hourlyصحيحًا، بينما عندما يحتوي على القيمة 'S'أو 'Y'، يكون اسم الشرط wage-is-yearlyصحيحًا أيضًا. إذا احتوى عنصر البيانات على قيمة أخرى، يكون كلا اسمي الشرط خاطئين.
01 نوع الأجر PIC X . 88 الأجر بالساعة VALUE "H" . 88 الأجر السنوي VALUE " S" , "Y" .أنواع البيانات
توفر لغة COBOL القياسية أنواع البيانات التالية: [ 148 ]
| نوع البيانات | نموذج الإعلان | ملحوظات |
|---|---|---|
| أبجدي | PIC A(30) | قد يحتوي على أحرف أو مسافات فقط. |
| أبجدي رقمي | PIC X(30) | قد يحتوي على أي أحرف. |
| منطقي | PIC 1USAGEBIT | البيانات المخزنة على شكل أصفار وواحدات، كرقم ثنائي. |
| فِهرِس | USAGEINDEX | تُستخدم للإشارة إلى عناصر الجدول. |
| وطني | PIC N(30) | يشبه الأبجدية الرقمية، ولكنه يستخدم مجموعة أحرف موسعة، على سبيل المثال UTF-8 . |
| رقمي | PIC 9(5)V9(2) | يحتوي على 7 أرقام بالضبط (7=5+2). يشير الحرف 'V' إلى موضع الفاصلة العشرية الضمنية في عدد ذي فاصلة ثابتة. |
| هدف | USAGEOBJECTREFERENCE | قد يشير إلى كائن أو NULL. |
| مؤشر | USAGEPOINTER |
تختلف معايير أمان أنواع البيانات في لغة كوبول. تُحوّل البيانات الرقمية بين تمثيلات وأحجام مختلفة تلقائيًا، ويمكن وضع البيانات الأبجدية الرقمية في أي عنصر بيانات يُمكن تخزينه كسلسلة نصية، بما في ذلك البيانات الرقمية وبيانات المجموعات. [ 149 ] في المقابل، لا يُمكن إسناد مراجع الكائنات والمؤشرات إلا من عناصر من النوع نفسه، وقد تُقيّد قيمها بنوع مُحدد. [ 150 ]
بند الصورة
عبارة PICTURE(أو PIC) هي سلسلة من الأحرف، يُمثل كل حرف منها جزءًا من عنصر البيانات ومحتوياته. تُحدد بعض الأحرف نوع العنصر وعدد الأحرف أو الأرقام التي يشغلها في الذاكرة. على سبيل المثال، 9يُشير الحرف إلى رقم عشري، بينما Sيُشير الحرف إلى أن العنصر مُوقّع . تُحدد أحرف أخرى (تُسمى أحرف الإدراج والتحرير ) كيفية تنسيق العنصر. على سبيل المثال، تُحدد سلسلة من الأحرف مواضع الأحرف ،+ بالإضافة إلى كيفية وضع حرف الإشارة في بداية بيانات الأحرف الأخيرة؛ سيحتوي الحرف غير الرقمي الأقصى على اليمين على إشارة العنصر، بينما +ستحتوي مواضع الأحرف الأخرى المقابلة للحرف على يسار هذا الموضع على مسافة. يُمكن تحديد الأحرف المُكررة بشكل أكثر إيجازًا عن طريق تحديد رقم بين قوسين بعد حرف الصورة؛ على سبيل المثال، 9(7)يُعادل 9999999. تُحدد مواصفات الصور التي تحتوي على أحرف رقمية ( 9) وأحرف إشارة ( ) فقط عناصر بيانات رقميةS بحتة ، بينما تُحدد مواصفات الصور التي تحتوي على أحرف أبجدية ( ) أو أبجدية رقمية ( ) عناصر بيانات أبجدية رقمية . يُحدد وجود أحرف تنسيق أخرى عناصر البيانات الرقمية المحررة أو عناصر البيانات الأبجدية الرقمية المحررة . [ 151 ]AX
PICTUREبند | القيمة في | القيمة الخارجة |
|---|---|---|
PIC 9(5) | 100 | 00100 |
"Hello" | "Hello"(هذا قانوني، ولكنه يؤدي إلى سلوك غير محدد ) [ 149 ] | |
PIC +++++ | -10 | " -10"(لاحظ المسافات البادئة) |
PIC 99/99/9(4) | 30042003 | "30/04/2003" |
PIC *(4)9.99 | 100.50 | "**100.50" |
0 | "****0.00" | |
PIC X(3)BX(3)BX(3) | "ABCDEFGHI" | "ABC DEF GHI" |
بند الاستخدام
تُحدد هذه USAGEالعبارة تنسيق تخزين البيانات. وبحسب نوع البيانات، يُمكن استخدامها إما كبديلٍ عن PICTUREعبارة أخرى أو كمكملٍ لها. ورغم إمكانية استخدامها لتحديد المؤشرات ومراجع الكائنات، إلا أنها مُصممةٌ في الغالب لتحديد الأنواع الرقمية. وهذه التنسيقات الرقمية هي: [ 152 ]
- في النظام الثنائي، يتم تحديد الحد الأدنى للحجم إما بواسطة
PICTUREالشرط أو بواسطةUSAGEشرط مثلBINARY-LONG USAGECOMPUTATIONALحيث يمكن تخزين البيانات بأي تنسيق يوفره التطبيق؛ وغالبًا ما يكون ذلك مكافئًا لـUSAGEBINARYUSAGEDISPLAY، وهو التنسيق الافتراضي، حيث يتم تخزين البيانات كسلسلة نصية- الفاصلة العائمة، إما بتنسيق يعتمد على التنفيذ أو وفقًا لمعيار IEEE 754
USAGENATIONALحيث يتم تخزين البيانات كسلسلة نصية باستخدام مجموعة أحرف موسعةUSAGEPACKED-DECIMAL، حيث يتم تخزين البيانات بأصغر تنسيق عشري ممكن (عادةً ما يكون تنسيقًا عشريًا ثنائيًا مضغوطًا )
كاتب تقارير
يُعدّ برنامج كتابة التقارير أداةً تعريفيةً لإنشاء التقارير. كل ما يحتاجه المبرمج هو تحديد تخطيط التقرير والبيانات المطلوبة لإنتاجه، مما يُغنيه عن كتابة التعليمات البرمجية للتعامل مع أمور مثل فواصل الصفحات وتنسيق البيانات والعناوين والتذييلات. [ 153 ]
ترتبط التقارير بملفات التقارير، وهي ملفات لا يمكن الكتابة إليها إلا من خلال عبارات كتابة التقارير.
تقرير المبيعات الصادر عن المدير المالي .يُعرَّف كل تقرير في قسم التقارير ضمن قسم البيانات. يُقسَّم التقرير إلى مجموعات تقارير تُحدِّد عناوين التقرير وتذييلاته وتفاصيله. وتعتمد التقارير على فواصل التحكم الهرمية . تحدث فواصل التحكم عندما تتغير قيمة متغير رئيسي؛ على سبيل المثال، عند إنشاء تقرير يُفصِّل طلبات العملاء، قد يحدث فاصل تحكم عندما يصل البرنامج إلى طلبات عميل آخر. فيما يلي مثال على وصف تقرير يُظهر مبيعات مندوب مبيعات ويُحذِّر من أي سجلات غير صالحة:
تقرير مبيعات RD ، حدود الصفحة 60 سطرًا، التفاصيل الأولى 3 عناصر تحكم، اسم البائع .01 اكتب عنوان الصفحة . 03 العمود 1 القيمة "تقرير المبيعات" . 03 العمود 74 القيمة "الصفحة" . 03 العمود 79 الصورة Z9 مصدر عداد الصفحات .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 .يصف التقرير أعلاه التخطيط التالي:
تقرير المبيعات - الصفحة 1البائع: هوارد برومبيرغ. المبيعات بتاريخ 10/12/2008: 1000.00 دولار. المبيعات بتاريخ 12/12/2008: 0.00 دولار. المبيعات بتاريخ 13/12/2008: 31.47 دولار. سجل غير صالح: هوارد برومبيرغ XXXXYYالبائع: هوارد ديسكاونت ... تقرير المبيعات، الصفحة ١٢ بلغت المبيعات في 08/05/2014 مبلغ 543.98 دولارًا أمريكيًا. سجل غير صالح: ويليام سيلدن 12052014FOOFOO. بلغت المبيعات في 30/05/2014 مبلغ 0.00 دولارًا أمريكيًا.تتحكم أربع عبارات في برنامج كتابة التقارير: INITIATEالأولى تُهيئ البرنامج للطباعة، GENERATEوالثانية تطبع مجموعة التقارير، SUPPRESSوالثالثة تمنع طباعة مجموعة التقارير، والرابعة TERMINATEتُنهي معالجة التقرير. بالنسبة لمثال تقرير المبيعات المذكور أعلاه، قد يبدو تقسيم الإجراءات كما يلي:
افتح مدخلات المبيعات ، مخرجات التقرير، ابدأ تقرير المبيعات، نفذ حتى 1 <> 1 ، اقرأ المبيعات عند النهاية ، اخرج، نفذ نهاية القراءة ، تحقق من صحة سجل المبيعات ، إذا كان السجل صالحًا ، أنشئ مبيعات اليوم ، وإلا أنشئ مبيعات غير صالحة، نهاية الشرط، نهاية التنفيذ، أنهِ تقرير المبيعات، أغلق المبيعات ، تقرير الإخراج .يتباين استخدام خاصية كتابة التقارير بشكل كبير؛ فبعض المؤسسات تستخدمها بكثافة، بينما لا تستخدمها مؤسسات أخرى على الإطلاق. [ 154 ] إضافةً إلى ذلك، تفاوتت جودة تطبيقات كتابة التقارير، حيث استهلكت التطبيقات الأقل جودةً كميات كبيرة من الذاكرة أثناء التشغيل. [ 154 ]
قسم الإجراءات
إجراءات
يمكن استخدام الأقسام والفقرات في قسم الإجراءات (والتي تُسمى مجتمعةً بالإجراءات) كعلامات وكإجراءات فرعية بسيطة . على عكس الأقسام الأخرى، لا يلزم أن تكون الفقرات داخل أقسام. [ 155 ]
يتم تنفيذ البرنامج من خلال إجراءاته حتى يتم إنهاؤه. [ 156 ] لاستخدام الإجراءات كبرامج فرعية، PERFORMيُستخدم الفعل.
تُشبه عبارة ` PERFORMrequire` إلى حدٍ ما استدعاء إجراء في اللغات الحديثة، حيث يعود التنفيذ إلى الكود الذي يلي العبارة PERFORMفي نهاية الكود المُستدعى؛ إلا أنها لا تُوفر آلية لتمرير المعاملات أو لإرجاع قيمة نتيجة. إذا تم استدعاء روتين فرعي باستخدام عبارة بسيطة مثل `require` ، فإن التحكم يعود في نهاية الإجراء المُستدعى. مع ذلك، تُعد `require` غير عادية، إذ يُمكن استخدامها لاستدعاء نطاق يمتد عبر سلسلة من عدة إجراءات متجاورة. ويتم ذلك باستخدام البنية `require`.PERFORMsubroutinePERFORMPERFORMsub-1THRUsub-n
الإجراء كذا وكذا . تنفيذ ألفا. تنفيذ ألفا حتى جاما . إيقاف . تشغيل . ألفا . عرض 'أ' . بيتا . عرض 'ب' . جاما . عرض 'ج' .ستكون مخرجات هذا البرنامج كالتالي: "AABC".
PERFORMيختلف هذا الأسلوب أيضًا عن استدعاءات الإجراءات التقليدية في أنه لا يوجد، على الأقل تقليديًا، مفهوم مكدس الاستدعاءات. ونتيجة لذلك، يصبح الاستدعاء المتداخل ممكنًا ( PERFORMقد يُنفذ تسلسل التعليمات البرمجية المُستدعى PERFORMعبارةً ما بنفسه)، ولكنه يتطلب عنايةً إضافيةً إذا نُفذت أجزاء من نفس التعليمات البرمجية بواسطة كلا الاستدعاءين. تظهر المشكلة عندما تصل التعليمات البرمجية في الاستدعاء الداخلي إلى نقطة خروج الاستدعاء الخارجي. وبشكلٍ أدق، إذا مرّ التحكم عبر نقطة خروج استدعاءٍ PERFORMتم استدعاؤه سابقًا ولكنه لم يكتمل بعد، فإن معيار COBOL 2002 ينص على أن السلوك غير مُحدد .
السبب هو أن لغة كوبول، بدلاً من "عنوان العودة"، تتعامل مع ما يُمكن تسميته بعنوان الاستمرار. عندما يصل مسار التحكم إلى نهاية أي إجراء، يتم البحث عن عنوان الاستمرار، وينتقل التحكم إلى ذلك العنوان. قبل تشغيل البرنامج، يُهيأ عنوان الاستمرار لكل إجراء إلى عنوان بداية الإجراء التالي في نص البرنامج، بحيث إذا لم PERFORMتُنفذ أي تعليمات، ينتقل التحكم من أعلى البرنامج إلى أسفله. ولكن عند PERFORMتنفيذ تعليمة، فإنها تُعدل عنوان الاستمرار للإجراء المُستدعى (أو الإجراء الأخير في النطاق المُستدعى، إذا PERFORM THRUتم استخدامه)، بحيث يعود التحكم إلى موقع الاستدعاء في النهاية. تُحفظ القيمة الأصلية وتُستعاد لاحقًا، ولكن يوجد موقع تخزين واحد فقط. إذا كان استدعاءان متداخلان يعملان على جزء من التعليمات البرمجية، فقد يتداخلان في إدارة عنوان الاستمرار بطرق مختلفة. [ 157 ] [ 158 ]
يوضح المثال التالي (المأخوذ من Veerman & Verhoeven 2006 ) المشكلة:
LABEL1 . اعرض '1'، نفّذ LABEL2 حتى LABEL3، أوقف التشغيل . LABEL2 . اعرض '2' ، نفّذ LABEL3 حتى LABEL4 . LABEL3 . اعرض '3' . LABEL4 . اعرض '4' .قد يتوقع المرء أن تكون مخرجات هذا البرنامج هي "1 2 3 4 3": بعد عرض "2"، الأسباب الثانية PERFORM"3" و "4"يتم عرضها، ثم يستمر الاستدعاء الأول مع "3في تطبيقات COBOL التقليدية، لا يحدث هذا. بل إن PERFORMالعبارة الأولى تُحدد عنوان الاستمرار في نهاية العبارة LABEL3بحيث يعود البرنامج إلى موقع الاستدعاء داخلها LABEL1. أما العبارة الثانية PERFORMفتُحدد عنوان الإرجاع في نهاية العبارة، LABEL4لكنها لا تُغير عنوان الاستمرار LABEL3، إذ تتوقع أن يكون هو عنوان الاستمرار الافتراضي. وبالتالي، عندما يصل الاستدعاء الداخلي إلى نهاية العبارة LABEL3، فإنه يعود إلى PERFORMالعبارة الخارجية، ويتوقف البرنامج بعد طباعة "1 2 3من ناحية أخرى، في بعض تطبيقات لغة كوبول مثل مُصرّف TinyCOBOL مفتوح المصدر، PERFORMلا تتعارض العبارتان مع بعضهما البعض، ويكون الناتج بالفعل "1 2 3 4 3لذلك، فإن السلوك في مثل هذه الحالات ليس مفاجئاً فحسب (ربما)، بل إنه غير قابل للتطبيق على نطاق واسع أيضاً. [ 158 ]
من النتائج الخاصة لهذا القيد أنه PERFORMلا يمكن استخدامه لكتابة التعليمات البرمجية التكرارية. لكتابة إجراءات تكرارية، يجب استخدام برنامج فرعي متداخل. مثال بسيط آخر لتوضيح ذلك (مبسط قليلاً من فيرمان وفيرهوفن 2006 ):
انقل 1 إلى A، نفّذ التسمية، أوقف التشغيل . التسمية . اعرض A إذا كان A < 3 ، أضف 1 إلى A، نفّذ التسمية، نهاية الشرط، اعرض 'نهاية' .قد يتوقع المرء أن تكون النتيجة "1 2 3 نهاية نهاية نهاية"، وفي الواقع هذا ما تنتجه بعض مترجمات لغة كوبول. لكن مترجمات أخرى، مثل IBM COBOL، تنتج رمزًا يطبع "1 2 3 نهاية نهاية نهاية نهاية ...وهكذا، الطباعةنهاية" مرارًا وتكرارًا في حلقة لا نهائية. نظرًا لوجود مساحة محدودة لتخزين عناوين استمرار النسخ الاحتياطي، يتم استبدال النسخ الاحتياطية أثناء الاستدعاءات المتكررة، وكل ما يمكن استعادته هو القفز إلى الوراء DISPLAY 'END'. [ 158 ]
البيانات
تحتوي لغة كوبول 2014 على 47 عبارة (تُسمى أيضًا أفعالًا )، [ 159 ] والتي يمكن تصنيفها ضمن الفئات الرئيسية التالية: التحكم في التدفق، والإدخال/الإخراج، ومعالجة البيانات، وكتابة التقارير. تُغطى عبارات كتابة التقارير في قسم كتابة التقارير .
تدفق التحكم
تُعدّ عبارات COBOL الشرطية IFعبارةً عن عبارةٍ تُشبه عبارة switchEVALUATE ، مع إمكانية إضافية لتقييم قيم وشروط متعددة. يُمكن استخدام هذه العبارة لتنفيذ جداول القرار . على سبيل المثال، يُمكن استخدام ما يلي للتحكم في مخرطة CNC :EVALUATE
قيّم القيمة "صحيح" بالإضافة إلى السرعة المطلوبة والسرعة الحالية عند إغلاق الغطاء، بالإضافة إلى الحد الأدنى للسرعة وحتى الحد الأقصى للسرعة، وأيضًا إذا كانت السرعة أقل من السرعة المطلوبة. نفّذ عملية زيادة سرعة الآلة عند إغلاق الغطاء، بالإضافة إلى الحد الأدنى للسرعة وحتى الحد الأقصى للسرعة، وأيضًا إذا كانت السرعة أكبر من السرعة المطلوبة . نفّذ عملية إبطاء سرعة الآلة عند فتح الغطاء، بالإضافة إلى أي قيمة، وأيضًا إذا كانت القيمة ليست صفرًا. نفّذ عملية إيقاف الطوارئ عند أي قيمة أخرى . استمر . أنهِ التقييم.تُستخدم هذه PERFORMالعبارة لتعريف الحلقات التي تُنفَّذ حتى يتحقق شرطٌ ما (وليس طالما أن الشرط صحيح، وهو الأكثر شيوعًا في لغات أخرى). كما تُستخدم لاستدعاء الإجراءات أو نطاقات الإجراءات (انظر قسم الإجراءات لمزيد من التفاصيل). CALLوتُستخدم أيضًا INVOKEلاستدعاء البرامج الفرعية والأساليب، على التوالي. يُضمَّن اسم البرنامج الفرعي/الأسلوب في سلسلة نصية قد تكون قيمة حرفية أو عنصر بيانات. [ 160 ] يمكن تمرير المعاملات بالمرجع ، أو بالمحتوى (حيث تُمرَّر نسخة بالمرجع)، أو بالقيمة (ولكن فقط إذا كان النموذج الأولي متاحًا). [ 161 ]CANCEL تُفرِّغ البرامج الفرعية من الذاكرة. GO TOوتتسبب في انتقال البرنامج إلى إجراء مُحدَّد.
هذه GOBACKالعبارة هي عبارة إرجاع ، وهي STOPتُوقف البرنامج. EXITولها ستة أشكال مختلفة: يمكن استخدامها كعبارة إرجاع، أو عبارة توقف ، أو عبارة استمرار ، أو علامة نهاية، أو للخروج من إجراء. [ 162 ]
تُثار الاستثناءاتRAISE بواسطة عبارة ويتم التقاطها باستخدام معالج، أو إجراء تصريحي ، مُعرَّف في DECLARATIVESجزء من قسم الإجراءات. الإجراءات التصريحية هي أقسام تبدأ بعبارة USEتُحدد الأخطاء التي يجب معالجتها. يمكن أن تكون الاستثناءات أسماءً أو كائنات. RESUMEيُستخدم `-----` في إجراء تصريحي للانتقال إلى العبارة التي تلي العبارة التي أثارت الاستثناء أو إلى إجراء خارج هذا القسم DECLARATIVES. على عكس لغات البرمجة الأخرى، قد لا تؤدي الاستثناءات غير المُعالجة إلى إنهاء البرنامج، ويمكن للبرنامج أن يستمر دون أي تأثير.
الإدخال/الإخراج
يتم التعامل مع عمليات الإدخال/الإخراج للملفات بواسطة العبارات ذاتية الوصف OPEN، CLOSEو، READو، WRITEبالإضافة إلى ثلاث عبارات أخرى: REWRITE، والتي تقوم بتحديث سجل؛ START، والتي تحدد السجلات اللاحقة للوصول إليها من خلال العثور على سجل بمفتاح معين؛ و UNLOCK، والتي تقوم بتحرير القفل على آخر سجل تم الوصول إليه.
يتم التفاعل مع المستخدم باستخدام ACCEPTو DISPLAY.
معالجة البيانات
الأفعال التالية تعالج البيانات:
INITIALIZE، مما يؤدي إلى تعيين عناصر البيانات إلى قيمها الافتراضية.MOVE، والتي تقوم بتعيين القيم لعناصر البيانات ؛ MOVE CORRESPONDING تقوم بتعيين الحقول المقابلة ذات الأسماء المتشابهة .SET، والذي يحتوي على 15 تنسيقًا: يمكنه تعديل الفهارس، وتعيين مراجع الكائنات، وتغيير سعات الجداول، من بين وظائف أخرى. [ 163 ]ADD،SUBTRACT،MULTIPLY،DIVIDE، وCOMPUTE، والتي تتعامل مع العمليات الحسابية (معCOMPUTEتعيين نتيجة الصيغة لمتغير).ALLOCATEوFREE، التي تتعامل مع الذاكرة الديناميكية .VALIDATE، والتي تقوم بالتحقق من صحة البيانات وتوزيعها كما هو محدد في وصف العنصر في قسم البيانات.STRINGوUNSTRING، اللتان تقومان بدمج وتقسيم السلاسل ، على التوالي.INSPECT، والتي تقوم بحساب أو استبدال حالات السلاسل الفرعية المحددة داخل سلسلة نصية.SEARCH، والتي تبحث في جدول عن أول إدخال يحقق شرطًا معينًا.
يتم فرز الملفات والجداول باستخدام الأمر SORT، ويقوم هذا MERGEالأمر بدمج الملفات وفرزها. RELEASEكما يقوم بتوفير السجلات المراد فرزها RETURNواسترجاع السجلات المفرزة بالترتيب.
إنهاء النطاق
قد تحتوي بعض العبارات، مثل IF`and` READ، على عبارات أخرى. ويمكن إنهاء هذه العبارات بطريقتين: إما بنقطة ( إنهاء ضمني )، والتي تُنهي جميع العبارات غير المنتهية الموجودة فيها، أو بمُنهي نطاق، والذي يُنهي أقرب عبارة مفتوحة مطابقة.
*> نقطة إنهاء ("إنهاء ضمني") إذا كان السجل غير صالح، إذا لم تكن هناك سجلات أخرى، انتقل إلى الجملة التالية ، وإلا اقرأ ملف السجل في النهاية، واضبط قيمة no-more-records على صحيح .*> محددات النطاق ("إنهاء صريح") إذا كان السجل غير صالح إذا لم تكن هناك سجلات أخرى تابع وإلا اقرأ ملف السجل عند النهاية عيّن قيمة no-more-records إلى صحيح نهاية القراءة نهاية الشرط نهاية الشرطتُعدّ العبارات المتداخلة المنتهية بنقطة مصدرًا شائعًا للأخطاء البرمجية. [ 164 ] [ 165 ] على سبيل المثال، انظر إلى الكود التالي:
إذا كانت قيمة x تساوي y ، فاعرض y . اعرض z .الهدف هنا هو عرض قيمة yمعينة zإذا كان الشرط xصحيحًا. مع ذلك، zسيتم عرض قيمة أخرى بغض النظر عن قيمة الشرط، xلأن IFالعبارة تنتهي بنقطة خاطئة بعد النقطة .DISPLAYy
هناك خطأ آخر ناتج عن مشكلة else المعلقة ، عندما IFيمكن أن ترتبط عبارتان بـ ELSE.
إذا كان x إذا كان y اعرض a وإلا اعرض b .في الجزء أعلاه، ELSEيرتبط العنصر بالعبارة بدلاً من العبارة، مما يتسبب في خطأ برمجي. قبل إدخال محددات النطاق الصريحة، كان منع ذلك يتطلب وضعه بعد العنصر الداخلي . [ 165 ] IFy IFx ELSENEXTSENTENCE IF
كود ذاتي التعديل
دعمت مواصفات لغة كوبول الأصلية (1960) العبارة سيئة السمعة، والتي ولّد العديد من المترجمات شيفرة ذاتية التعديل لها . و عبارة عن تسميات للإجراءات، والعبارة الوحيدة في الإجراء التي تُنفذ بعد هذه العبارة تعني بدلاً من ذلك. لا تزال العديد من المترجمات تدعمها، [ 166 ] ولكن تم اعتبارها قديمة في معيار كوبول 1985 وحُذفت في عام 2002. [ 167 ] ALTERXTOPROCEEDTOY XY GOTO XALTER GOTOY
لم يُنظر إلى هذا ALTERالبيان بعين الرضا لأنه قوّض "مبدأ السياق المحلي" وجعل فهم المنطق العام للبرنامج صعبًا. [ 168 ] وكما كتب مؤلف الكتب الدراسية دانيال د. مكراكين عام 1976، عندما "يُضطر شخص لم يسبق له رؤية البرنامج إلى الإلمام به بأسرع وقت ممكن، وأحيانًا تحت ضغط زمني حرج بسبب فشل البرنامج... فإن رؤية عبارة GO TO في فقرة بمفردها، والتي تشير إلى وجود عدد غير معروف من عبارات ALTER في مواقع غير معروفة في جميع أنحاء البرنامج، تُثير الخوف في قلب أشجع المبرمجين." [ 168 ]
مرحبا بالعالم
برنامج "مرحباً بالعالم!" بلغة كوبول:
قسم التعريف . معرف البرنامج . مرحباً بالعالم . قسم الإجراءات . عرض "مرحباً بالعالم!" .عندما نُشر مثال برنامج "Hello, World!" الشهير في كتاب "لغة البرمجة C" لأول مرة عام 1978، كان من المرجح أن يتم تقديم نموذج برنامج COBOL مماثل للحاسوب المركزي عبر JCL ، باستخدام قارئ بطاقات مثقبة وبطاقات مثقبة ذات 80 عمودًا على الأرجح. تم اختبار القائمة أدناه، مع حقل فارغDATA DIVISION ، باستخدام نظام Linux ومحاكي System/370 Hercules الذي يعمل بنظام MVS 3.8J. تم اشتقاق JCL، الذي كُتب في يوليو 2015، من دروس Hercules التعليمية ونماذجها التي استضافها جاي موسلي. [ 169 ] تماشيًا مع برمجة COBOL في تلك الحقبة،مرحبا بالعالميتم عرضها بأحرف كبيرة.
// COBUCLG JOB ( 001 ), 'اختبار قاعدة كوبول' ,// CLASS = A , MSGCLASS = A , MSGLEVEL = ( 1 , 1 )// BASETEST EXEC COBUCLG// COB . SYSIN DD *00000 * التحقق من صحة تثبيت برنامج كوبول الأساسي01000 قسم تحديد الهوية .01100 معرف البرنامج . 'مرحباً' .02000 قسم البيئة .02100 قسم التكوين .02110 SOURCE-COMPUTER . GNULINUX .02120 حاسوب كائني . هرقل .02200 أسماء خاصة .02210 وحدة التحكم هي CONSL .03000 قسم البيانات .04000 قسم الإجراءات .04100 00 - MAIN .04110 عرض عبارة "مرحباً بالعالم" عند الاتصال .04900 توقف تشغيل .// LKED . SYSLIB DD DSNAME = SYS1 . COBLIB , DISP = SHR// DD DSNAME = SYS1 . LINKLIB , DISP = SHR// GO . SYSPRINT DD SYSOUT = A//بعد إرسال JCL، عرضت وحدة تحكم MVS ما يلي:
19.52.48 المهمة 3 $HASP100 COBUCLG على القارئ 1 اختبار قاعدة كوبول 19.52.48 المهمة 3 IEF677I رسائل تحذيرية للمهمة COBUCLG 19.52.48 تم بدء المهمة 3 $HASP373 COBUCLG - تهيئة 1 - الفئة أ - SYS BSP1 19.52.48 المهمة 3 IEC130I بيان DD مفقود 19.52.48 المهمة 3: بيان DD الخاص بمكتبة نظام IEC130I مفقود 19.52.48 المهمة 3 IEC130I بيان DD مفقود 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 19.52.48 JOB 3 +مرحباً بالعالم 19.52.48 JOB 3 COBUCLG BASETEST GO PGM=*.DD RC= 0000 19.52.48 انتهت المهمة رقم 3 $HASP395 COBUCLGتم تمييز السطر 10 من قائمة وحدة التحكم أعلاه لأغراض التوضيح فقط؛ التمييز ليس جزءًا من مخرجات وحدة التحكم الفعلية .
وقد أنتجت قائمة المترجم المرتبطة أكثر من أربع صفحات من التفاصيل الفنية ومعلومات تشغيل المهمة، وذلك لسطر واحد من المخرجات من 14 سطرًا من لغة COBOL.
استقبال
غياب الهيكلية
في سبعينيات القرن العشرين، أصبح تبني نموذج البرمجة الهيكلية أكثر انتشارًا. كتب إدسكار ديكسترا ، عالم الحاسوب البارز، رسالة إلى محرر مجلة "اتصالات رابطة آلات الحوسبة " ( Communications of the ACM) ، نُشرت عام 1975 بعنوان "كيف نخبر بالحقائق التي قد تكون مؤلمة؟"، انتقد فيها لغة كوبول (COBOL) والعديد من اللغات المعاصرة الأخرى، مشيرًا إلى أن "استخدام كوبول يُعيق العقل". [ 170 ]
في رأي مخالف منشور لملاحظات ديكسترا، ادعى عالم الحاسوب هوارد إي. تومبكينز أن لغة كوبول غير المهيكلة تميل إلى أن "يكتبها مبرمجون لم يسبق لهم الاستفادة من تعليم لغة كوبول المهيكلة بشكل جيد"، بحجة أن المشكلة تكمن أساسًا في التدريب. [ 171 ]
كان أحد أسباب شيفرة "سباغيتي" هو GO TOعبارة `s`. إلا أن محاولات إزالة GO TO`s` من شيفرة كوبول أدت إلى برامج معقدة وانخفاض جودة الشيفرة. [ 172 ]GO TO تم استبدال `s` إلى حد كبير بعبارة PERFORM`requirements` والإجراءات، مما عزز البرمجة المعيارية [ 172 ] ووفر وصولاً سهلاً إلى إمكانيات التكرار القوية. مع ذلك، PERFORMكان لا يمكن استخدام `s` إلا مع الإجراءات، لذا لم تكن أجسام الحلقات موجودة في أماكن استخدامها، مما جعل فهم البرامج أكثر صعوبة. [ 173 ] منذ اعتماد معيار 1985، GO TOتم الاستغناء تمامًا عن `s` بفضل الميزات الغنية للفعل `requirements` PERFORM؛ ومع ذلك، GO TOلا تزال `s` موجودة للتوافق مع الإصدارات السابقة، كما هو الحال في العديد من اللغات الأخرى.
اشتهرت برامج كوبول بكونها متجانسة وتفتقر إلى التجزئة. [ 174 ] لم يكن بالإمكان تجزئة كود كوبول إلا من خلال الإجراءات، والتي وُجد أنها غير كافية للأنظمة الكبيرة. وإلا، كان من الضروري CALLتجميع البرامج بشكل منفصل لتحقيق التجزئة. كان من المستحيل تقييد الوصول إلى البيانات حتى صدور معيار كوبول-85، مما يعني أن الإجراء كان بإمكانه الوصول إلى أي عنصر بيانات وتعديله. علاوة على ذلك، لم تكن هناك طريقة لتمرير المعاملات إلى الإجراء، وهو إغفال اعتبره جان ساميت أكبر خطأ ارتكبته اللجنة. [ 175 ] تم حل هذه المشكلة في معيار كوبول-85 مع إدخال البرنامج الفرعي المتداخل الذي سمح بالتجزئة وعزل عناصر البيانات محليًا.
وثمة تعقيد آخر نشأ من القدرة على تنفيذ PERFORM THRUتسلسل محدد من الإجراءات. هذا يعني أن التحكم يمكن أن ينتقل إلى أي إجراء ويعود منه، مما يخلق تدفق تحكم معقدًا ويسمح للمبرمج بخرق قاعدة الدخول والخروج الأحادي . [ 176 ]
تحسّن هذا الوضع مع إضافة المزيد من الميزات إلى لغة كوبول. فقد أضافت كوبول 74 البرامج الفرعية، مما منح المبرمجين القدرة على التحكم في البيانات التي يمكن لكل جزء من البرنامج الوصول إليها. ثم أضافت كوبول 85 البرامج الفرعية المتداخلة، مما سمح للمبرمجين بإخفاء البرامج الفرعية. [ 177 ] وزاد التحكم في البيانات والتعليمات البرمجية في عام 2002 مع تضمين البرمجة كائنية التوجه، والدوال المعرفة من قبل المستخدم، وأنواع البيانات المعرفة من قبل المستخدم. [ 178 ]
مع ذلك، لا تزال العديد من برامج كوبول القديمة الهامة تستخدم شفرة غير منظمة، مما يجعل صيانتها شبه مستحيلة. وقد يكون تعديل حتى جزء بسيط من الشفرة محفوفًا بالمخاطر ومكلفًا للغاية، نظرًا لاحتمالية استخدامه من أماكن غير معروفة وبطرق غير معروفة. [ 179 ]
مشاكل التوافق
كان الهدف من لغة كوبول أن تكون لغةً "شائعة" سهلة النقل. مع ذلك، وبحلول عام 2001، تم ابتكار حوالي 300 لهجة. [ 180 ] كان أحد مصادر هذه اللهجات هو المعيار نفسه: فقد تألف معيار عام 1974 من نواة إلزامية واحدة وإحدى عشرة وحدة وظيفية، تحتوي كل منها على مستويين أو ثلاثة مستويات من الدعم. وقد أتاح ذلك 104,976 متغيرًا محتملاً. [ 181 ]
لم يكن COBOL-85 متوافقًا تمامًا مع الإصدارات السابقة، وكان تطويره مثيرًا للجدل. قاد جوزيف تي. بروفي، مدير قسم تكنولوجيا المعلومات في شركة Travelers Insurance ، جهودًا لإطلاع مستخدمي COBOL على التكاليف الباهظة لإعادة برمجة تطبيق المعيار الجديد. [ 182 ] ونتيجةً لذلك، تلقت لجنة ANSI COBOL أكثر من 2200 رسالة من الجمهور، معظمها سلبية، مما استدعى إجراء تغييرات. من جهة أخرى، كان يُعتقد أن التحول إلى COBOL-85 سيزيد الإنتاجية في السنوات اللاحقة، مما يبرر تكاليف التحول. [ 183 ]
بناء جملة مطوّل
لغة ضعيفة، مطولة، وواهية، يستخدمها مبرمجو البرامج لإنجاز مهام مملة لا معنى لها على حواسيب مركزية قديمة. [...] نادرًا ما يُنطق اسمها دون تعبيرات طقوسية عن الاشمئزاز أو الرعب.
كثيراً ما وُجهت انتقادات لبنية لغة كوبول بسبب إسهابها. ويقول المؤيدون إن هذا كان يهدف إلى جعل الكود موثقاً ذاتياً ، مما يُسهّل صيانة البرنامج. [ 185 ] كما صُممت كوبول لتكون سهلة التعلم والاستخدام للمبرمجين، [ 186 ] مع الحفاظ على سهولة قراءتها من قِبل الموظفين غير التقنيين، مثل المديرين. [ 187 ] [ 188 ] [ 189 ] [ 190 ]
أدى السعي إلى سهولة القراءة إلى استخدام بنية نحوية وعناصر هيكلية شبيهة باللغة الإنجليزية، مثل الأسماء والأفعال والجمل والفقرات والفواصل. ومع ذلك، بحلول عام 1984، كان مطورو برامج كوبول يواجهون صعوبة في التعامل مع التعليمات البرمجية "غير المفهومة" [ 189 ] ، وكانت التغييرات الرئيسية في كوبول-85 تهدف إلى تسهيل الصيانة. [ 95 ]
لاحظت جين ساميت، وهي عضوة في اللجنة قصيرة المدى، أنه "لم تُبذل سوى محاولات قليلة لتلبية احتياجات المبرمج المحترف، بل إن الأشخاص الذين يهتمون بالبرمجة بشكل أساسي يميلون إلى أن يكونوا غير راضين تمامًا عن لغة كوبول"، وهو ما عزته إلى تركيبها النحوي المطول. [ 191 ]
يميل الوسط الأكاديمي إلى اعتبار لغة كوبول لغةً مطولة، معقدة، وغير أنيقة، ويحاول تجاهلها، على الرغم من أن عدد برامج ومبرمجي كوبول في العالم ربما يفوق عدد مبرمجي فورتران، وألغول، وPL/I مجتمعة. في الغالب، لا تُدرَّس لغة كوبول إلا في المدارس التي تهدف مباشرةً إلى توفير فرص عمل مباشرة.
لاحقًا، عانى كوبول من نقص في المواد التي تغطيه؛ ولم تظهر كتب تمهيدية عنه إلا في عام 1963 (مع نشر ريتشارد د. إيروين كتابًا جامعيًا عن كوبول في عام 1966). [ 193 ] صرّح دونالد نيلسون، رئيس لجنة كوبول التابعة لـ CODASYL، في عام 1984 بأن "الأكاديميين... يكرهون كوبول" وأن خريجي علوم الحاسوب "قد غُرست فيهم كراهية كوبول". [ 194 ]
بحلول منتصف الثمانينيات، كان هناك أيضًا استخفاف كبير تجاه لغة كوبول في أوساط مجتمع الأعمال من قبل مستخدمي لغات أخرى، مثل فورتران أو لغة التجميع ، مما يعني ضمناً أنه لا يمكن استخدام كوبول إلا في حل المشكلات غير المعقدة. [ 195 ]
في عام 2003، كانت لغة كوبول مُدرجة في 80% من مناهج نظم المعلومات في الولايات المتحدة، وهي النسبة نفسها التي كانت تُدرج فيها لغتا سي++ وجافا . [ 196 ] بعد عشر سنوات، أظهر استطلاع رأي أجرته شركة مايكرو فوكس أن 20% من الأكاديميين الجامعيين يعتقدون أن لغة كوبول قديمة أو منقرضة، وأن 55% منهم يعتقدون أن طلابهم يعتقدون ذلك أيضًا. كما أظهر الاستطلاع نفسه أن 25% فقط من الأكاديميين يُدرّسون برمجة كوبول ضمن مناهجهم الدراسية، على الرغم من أن 60% منهم يرون ضرورة تدريسها. [ 197 ]
مخاوف بشأن عملية التصميم
أُثيرت شكوك حول كفاءة لجنة المعايير. فقد صرّح هوارد برومبيرغ، العضو المؤقت في اللجنة، بأنّ عملية التطوير "تعاني من ضعف الرقابة" وأنّها "تشوبها عدم استقرار في أعضاء اللجنة ونقص في الكفاءات". [ 83 ] كما أشار كلٌّ من جان ساميت وجيروم غارفونكل إلى أنّ التغييرات التي أُدخلت في إحدى مراجعات المعيار تُعاد في المراجعة التالية، ويعود ذلك إلى حدٍّ كبير إلى تغييرات في أعضاء لجنة المعايير، فضلاً عن نقص الأدلة الموضوعية. [ 198 ]
عانت معايير لغة كوبول مرارًا وتكرارًا من التأخير: فقد صدرت كوبول 85 بعد خمس سنوات من الموعد المأمول، [ 199 ] وكوبول 2002 بعد خمس سنوات، [ 4 ] وكوبول 2014 بعد ست سنوات. [ 103 ] [ 200 ] ولمواجهة هذا التأخير، سمحت لجنة المعايير بإنشاء ملاحق اختيارية تُضيف ميزات جديدة بسرعة أكبر من انتظار المراجعة التالية للمعيار. ومع ذلك، أعرب بعض أعضاء اللجنة عن مخاوفهم بشأن عدم التوافق بين التطبيقات والتعديلات المتكررة على المعيار. [ 201 ]
التأثيرات على اللغات الأخرى
أثرت هياكل بيانات لغة كوبول على لغات البرمجة اللاحقة. فقد أثر هيكل السجلات والملفات فيها على لغتي PL/I وباسكال ، وكانت عبارة "السجلات المتغيرة" سابقةً لسجلات باسكال المتغيرة. وسبقت تعريفات هيكل الملفات الصريحة تطوير أنظمة إدارة قواعد البيانات ، وشكّلت البيانات المجمعة تقدماً كبيراً على مصفوفات فورتران. [ 202 ]REDEFINES
PICTUREتم دمج إعلانات البيانات في لغة PL/I، مع تغييرات طفيفة.
COPYعلى الرغم من اعتبارها "بدائية"، [ 203 ] إلا أن مرفق COBOL أثر على تطوير توجيهات التضمين . [ 202 ]
إن التركيز على قابلية النقل والتوحيد القياسي يعني أن البرامج المكتوبة بلغة كوبول يمكن نقلها، مما سهّل انتشار اللغة على نطاق واسع من منصات الأجهزة وأنظمة التشغيل. [ 204 ] بالإضافة إلى ذلك، فإن بنية التقسيم المحددة جيدًا تقيد تعريف المراجع الخارجية بقسم البيئة، مما يبسط تغييرات المنصة على وجه الخصوص. [ 205 ]
انظر أيضاً
ملحوظات
- ↑ أثر بشكل خاص على ميزات البرمجة الكائنية في لغة كوبول 2002. [ 4 ] [ 5 ] [ 6 ]
- ↑ يوجد شاهد القبر حاليًا في متحف تاريخ الحاسوب . [ 66 ]
- يجب تنبيه القارئ إلى أنه على الرغم من شيوع الإشارة إلى دراسة مجموعة غارتنر لعام 1997 مع اقتباس شهير عن "200 مليار سطر من لغة كوبول"، إلا أن التقرير الأصلي يصعب العثور عليه. [ 206 ] علاوة على ذلك، يتكهن البعض [ 207 ] بأن "مشاركة غارتنر الوحيدة في هذه الأرقام" كانت في دراسة عام 1995 [ 208 ] التي "توقعت أن تكلفة إصلاح خطأ عام 2000 ستبلغ دولارًا واحدًا لكل سطر أو 300 مليار دولار إجمالاً"، مما أدى إلى سوء فهم التقرير.
- ↑ تؤدي الإضافات الخاصة بالبائعين إلى وجود عدد أكبر بكثير من الكلمات المفتاحية في العديد من التطبيقات: إذ يتعرف أحد التطبيقات على أكثر من 1100 كلمة مفتاحية. [ 131 ]
مراجع
الاقتباسات
- 1 2 ساميت، جان إي. (مارس 2000). "المبتكرون الحقيقيون للغة كوبول". مجلة IEEE للبرمجيات . 17 (2): 30-32 . Bibcode : 2000ISoft..17b..30S . doi : 10.1109/52.841602 . ISSN 1937-4194 .
عملت اللجنة قصيرة المدى بجدٍّ منذ يونيو 1959، ولكن واجهت صعوبات جمة في محاولة لجنة كبيرة نسبيًا إنشاء لغة برمجة. في نوفمبر، عيّن رئيس اللجنة قصيرة المدى ستة أشخاص لوضع مواصفات للنظر فيها: ويليام سيلدن وجيرترود تيرني (IBM)، وهوارد برومبيرج ونورمان ديسكاونت (RCA)، وفيرنون ريفز وجان إي. ساميت (Sylvania Electric Products). عملنا لمدة أسبوعين كاملين (بما في ذلك بعض الجلسات المتواصلة) في نوفمبر 1959، وأرسلنا المواصفات المقترحة إلى لجنة المدى القصير بكامل أعضائها، والتي قبلت معظمها. بعد بعض التعديلات (من قِبل الأشخاص الستة أنفسهم)، قدمنا المواصفات كتقرير نهائي في ديسمبر إلى اللجنة التنفيذية، التي قبلتها في يناير 1960. بعد مزيد من التعديلات، أصدر مكتب الطباعة الحكومي برنامج كوبول 60. [...] لم تشارك [غريس هوبر] في أعمال اللجنة إلا من خلال التوجيهات العامة التي قدمتها لموظفيها الذين كانوا أعضاءً مباشرين فيها. وبالتالي، فبينما كان تأثيرها غير المباشر بالغ الأهمية، إلا أنه من المؤسف أن العبارات المتكررة بأن "غريس هوبر طورت كوبول" أو "غريس هوبر كانت من مطوري كوبول" أو "غريس هوبر هي أم كوبول" غير صحيحة.
- ↑ "سلسلة إصدارات GCC 15 - التغييرات والميزات الجديدة والإصلاحات" . GCC، مجموعة مترجمات GNU . تم الاطلاع عليه بتاريخ 28 مارس 2026 .
- ↑ المعيار الفني، لغة كوبول (ملف PDF) . شركة X/Open المحدودة، المملكة المتحدة، ديسمبر 1991. رقم ISBN 1-872630-09-X.
- 1 2 3 سعد، هنري؛ والاس، آن (أكتوبر 1995). "كوبول 97: تقرير حالة" . مجلة دكتور دوبز . مؤرشف من الأصل في 22 أبريل 2014. تم الاسترجاع في 21 أبريل 2014 .
- 1 2 أرانغا، إدموند سي؛ كويل، فرانك بي (فبراير 1998). كوبول الموجهة للكائنات . مطبعة جامعة كامبريدج . ص 15. ISBN 978-0132611404.
يعكس أسلوب لغة COBOL الموجهة للكائنات تأثير لغتي Smalltalk و C++.
- ↑ أرانغا، إدموند سي؛ كويل، فرانك بي (مارس 1997). "كوبول: الإدراك والواقع". مجلة الكمبيوتر . 30 (3): 127. doi : 10.1109/2.573683 . ISSN 0018-9162 .
- ↑ إيماجو، تيتسوجي؛ وآخرون . (سبتمبر 2000). لغة برمجة كوبول: لغة برمجة موجهة للأعمال . مؤتمر الحوسبة الموزعة للكائنات المؤسسية . ماكوهاري، اليابان: معهد مهندسي الكهرباء والإلكترونيات. doi : 10.1109/EDOC.2000.882363 . ISBN 0769508650.
- ↑ هو، وينغ هونغ (7 مايو 2007). "مقدمة إلى EGL" (ملف PDF) . مجموعة برامج IBM. مؤرشف من الأصل (ملف PDF) في 13 يناير 2019. تم الاطلاع عليه في 12 يناير 2019 .
- ↑ رادين، جورج (1978). ويكسلبلات، ريتشارد ل. (محرر). التاريخ المبكر وخصائص لغة PL/I . تاريخ لغات البرمجة. دار النشر الأكاديمية (نُشر عام 1981). ص 572. doi : 10.1145/800025.1198410 . ISBN 0127450408.
- ↑ "ما هي لغة PL/B - لغة البرمجة للأعمال؟" . sysmaker.com . شركة Infopro . تم الاطلاع عليه بتاريخ 22 أبريل 2022.
... يُعد التحويل إلى لغة COBOL بديلة أو موسعة أو إلى ANSI COBOL أمرًا بالغ الصعوبة، إن لم يكن مستحيلاً
. - ↑ "جديد في لغة كوبول" .
- 1 2 3 ميتشل، روبرت ل. (4 أكتوبر 2006). "كوبول: لم تمت بعد" . كمبيوتر وورلد . تم الاسترجاع في 10 ديسمبر 2024 .
- ↑ ميتشل، روبرت ل. (14 مارس 2012). "هجرة العقول: إلى أين تتجه أنظمة كوبول من هنا؟" . كمبيوتر وورلد . تم الاسترجاع في 9 فبراير 2015 .
- ↑ إنسمنجر، ناثان ل. (2009). سيطرة فتيان الحاسوب: الحواسيب، والمبرمجون، وسياسات الخبرة التقنية . مطبعة معهد ماساتشوستس للتكنولوجيا . ص 100. ISBN 978-0262050937. إل سي سي إن 2009052638 .
- ^ ISO/IEC JTC 1/SC 22/WG 4 2023 .
- ↑ "برمجة كوبول على الحواسيب المركزية" .
- ↑ غرونفيلدت، توم. "كوفيد يُسرّع انتقال البنوك من الحواسيب المركزية إلى الحوسبة السحابية" . فوربس .
- ↑ باير 2009 ، ص 282.
- ↑ غورير، دينيس (1 يونيو 2002). "النساء الرائدات في علوم الحاسوب". نشرة SIGCSE . 34 (2): 175-180 . doi : 10.1145/543812.543853 . ISSN 0097-8418 . S2CID 2577644 .
- ↑ باير 2009 ، ص 281-282.
- ↑ ساميت 1978 أ، ص 200.
- ↑ فلاهيف، بول (24 مايو 2019). "كيف لا تزال لغة كوبول تُشغّل الاقتصاد العالمي بعد 60 عامًا" . إذاعة تكساس العامة . مؤرشف من الأصل في 24 مايو 2019. تم الاطلاع عليه في 19 يوليو 2019. (غريس هوبر) كانت هذه الشفرة، التي لُقّبت بـ"جدة كوبول "
، مبنية على بعض أعمالها السابقة. قالت - بعد سماع الشائعات - إن أحد المتعاونين معها ذهب واشترى شاهد قبر من الجرانيت. "قام بنقش كلمة كوبول على مقدمته. ثم أرسله عبر البريد السريع إلى السيد فيليبس في البنتاغون." لفتت هذه المزحة التي طُبّقت على تشارلز فيليبس، أحد قادة المشروع في وزارة الدفاع، انتباه المسؤولين، وكانت نقطة تحول، كما قالت. ستصبح كوبول فيما بعد لغة البرمجة الأكثر استخدامًا والأطول عمرًا في التاريخ.
- ↑ باير 2009 ، ص 283.
- ↑ باير 2009 ، ص 284.
- ↑ "الاجتماعات المبكرة لمؤتمر لغات أنظمة البيانات". حوليات IEEE لتاريخ الحوسبة . 7 (4): 316-325 . 1985. Bibcode : 1985IAHC....7d.316. . doi : 10.1109/MAHC.1985.10047 . S2CID 35625728 .
- 1 2 3 4 5 سامت 2004 ، ص. 104.
- ↑ باير 2009 ، ص 286.
- 1 2 كونر 1984 ، ص. ID/9.
- ↑ ساميت 1978أ ، ص 201.
- 1 2 3 4 Bemer 1971 ، ص 132.
- ↑ باير 2009 ، ص 288.
- ↑ ساميت 1978 أ، ص 203.
- ↑ CODASYL 1969 ، § I.2.1.1.
- ↑ ساميت 1978 أ، ص 204.
- ↑ CODASYL 1969 ، § I.1.2.
- ↑ باير 2009 ، ص 290.
- ↑ ساميت، جان (1978). "التاريخ المبكر للغة كوبول". إشعارات ACM SIGPLAN . 13 (8): 121-161 . doi : 10.1145/960118.808378 . S2CID 10743643 .
- ↑ ساميت 1978 أ، ص 217.
- ↑ آدامز، فيكي بورتر (5 أكتوبر 1981). "الكابتن غريس إم. هوبر: أم لغة كوبول" . إنفوورلد . المجلد 3، العدد 20. ص 33. الرقم الدولي الموحد للدوريات 0199-6649 .
- ↑ بيتس، ميتش (6 يناير 1992). "وفاة غريس هوبر، أم لغة كوبول" . مجلة كمبيوتر وورلد . المجلد 26، العدد 1. ص 14.
- ↑ لور، ستيف (2008). اذهب إلى: قصة خريجي الرياضيات، ولاعبي البريدج، والمهندسين، وعباقرة الشطرنج، والعلماء المتميزين، والمبدعين - المبرمجين الذين صنعوا ثورة البرمجيات . دار بيسيك بوكس . ص 52. ISBN 978-0786730766.
- ↑ "مهندس برمجيات رائد ومصمم مشارك للغة كوبول" . صحيفة ذا آيريش تايمز .
- 1 2 باير 2009 ، ص. 292.
- ↑ بيمر 1971 ، ص 131.
- ↑ باير 2009 ، ص 296.
- ↑ ساميت 1978 أ، ص 221.
- ↑ باير 2009 ، ص 291.
- ↑ "التاريخ الشفوي للكابتن غريس هوبر" (ملف PDF) . متحف تاريخ الحاسوب . ديسمبر 1980. ص 37. مؤرشف من الأصل (ملف PDF) في 25 ديسمبر 2017. تم الاطلاع عليه في 28 يونيو 2014 .
- ↑ ساميت 1978 أ، ص 218.
- ↑ ماركوتي 1978 أ، ص 268.
- ^ سامت 1978 أ، ص 205-206.
- 1 2 Sammet 1978a ، الشكل 8.
- ^ ساميت 1978 أ، ص 230-231.
- ^ ISO/IEC JTC 1/SC 22/WG 4 2001 ، ص. 846.
- ↑ ساميت 1978 أ، ص 220.
- ↑ ساميت 1978 أ، ص 228.
- ↑ ساميت 1978 أ، ص 210.
- ↑ بيمر 1971 ، ص 132: لا يمكننا العثور على فرد واحد يعترف بصياغة الاختصار "COBOL" .
- ↑ ساميت 1978أ ، ص 210: في اليوم التالي، تم الاتفاق أخيرًا على اسم كوبول كاختصار لـ "لغة الأعمال التجارية المشتركة". للأسف، لا تُظهر ملاحظاتي من اقترح ذلك .
- ↑ سوليفان، باتريشيا (25 يونيو 2004). "رائد الحوسبة بوب بيمر، 84 عامًا" . صحيفة واشنطن بوست . ص. B06 . تاريخ الاطلاع: 28 يونيو 2014 .
- ↑ "تقرير كوبول - مقابلة مع بوب بيمر - أبو لغة كوبول" . مؤرشف من الأصل في 2 أبريل 2018.
- ↑ "تقرير كوبول - مقابلة مع بوب بيمر - أبو لغة كوبول" . مؤرشف من الأصل في 23 ديسمبر 2003.
- ↑ باير 2009 ، ص 293.
- ↑ باير 2009 ، ص 294.
- ↑ ١٦٣٤–١٦٩٩: مكوسكر، جيه جيه (١٩٩٧). كم يساوي ذلك بالمال الحقيقي؟ مؤشر أسعار تاريخي لاستخدامه كمُعامل لانكماش قيم النقود في اقتصاد الولايات المتحدة: إضافات وتصويبات (ملف PDF) . الجمعية الأمريكية للآثار .1700–1799: مكوسكر، جيه جيه (1992). كم يساوي ذلك بالمال الحقيقي؟ مؤشر أسعار تاريخي لاستخدامه كمُعامل لانكماش قيمة النقود في اقتصاد الولايات المتحدة (ملف PDF) . الجمعية الأمريكية للآثار .من عام 1800 حتى الآن: بنك الاحتياطي الفيدرالي في مينيابوليس. "مؤشر أسعار المستهلك (تقديري) 1800–" . تم الاطلاع عليه بتاريخ 29 فبراير 2024 .
- ↑ شاهد قبر كوبول . متحف تاريخ الحاسوب. 1960. تم الاطلاع عليه بتاريخ 29 يونيو 2014 .
- ↑ "قصة شاهد قبر كوبول" (ملف PDF) . تقرير متحف الحاسوب . 13 : 8-9 . صيف 1985. مؤرشف (ملف PDF) من الأصل في 3 أبريل 2014. تم الاطلاع عليه في 29 يونيو 2014 .
- ↑ بيمر 1971 ، ص 130.
- ↑ باير 2009 ، ص 289.
- ↑ CODASYL 1969 ، § I.1.1.
- ↑ براون 1976 ، ص 47.
- 1 2 Bemer 1971 ، ص 133.
- 1 2 باير 2009 ، ص. 297.
- ↑ ويليامز، كاثلين بروم (10 نوفمبر 2012). غريس هوبر: أميرة البحر السيبراني . مطبعة المعهد البحري الأمريكي. ISBN 978-1612512655. OCLC 818867202 .
- ↑ شركة كومباك للكمبيوتر: دليل كومباك المرجعي للغة كوبول ، رقم الطلب: AA–Q2G0F–TK، أكتوبر 2000، الصفحة 18؛ شركة فوجيتسو: مرجع لغة نت كوبول ، الإصدار 15، يناير 2009؛ شركة آي بي إم: مرجع لغة إنتربرايز كوبول لنظام التشغيل z/OS ، الإصدار 4، الإصدار 1، SC23-8528-00، ديسمبر 2007
- ↑ غارفانكل، جيروم (11 نوفمبر 1984). "دفاعًا عن لغة كوبول" . مجلة كمبيوتر وورلد . المجلد 18، العدد 24. ص. ID/19.
- ↑ برات، تيرينس و. (1975). لغات البرمجة: التصميم والتنفيذ . إنجلوود كليفس، نيو جيرسي: برنتيس هول. الصفحات 361-362 ، 381-382 . ISBN 0-13-730432-3.
- 1 2 Bemer 1971 ، ص 134.
- ↑ براون 1976 ، ص 48.
- ↑ CODASYL 1969 ، § I.2.2.4.
- ↑ CODASYL 1969 ، § I.2.3.
- 1 2 3 4 فوليت، روبرت هـ؛ ساميت، جان إي. (2003). "معايير لغة البرمجة" . في رالستون، أنتوني؛ رايلي، إدوين د. هيمندينجر، ديفيد (محرران). موسوعة علوم الكمبيوتر (الطبعة الرابعة ). وايلي. ص. 1467. ردمك 978-0470864128.
- 1 2 باير 2009 ، ص. 301.
- 1 2 براون 1976 ، ص 49.
- ↑ براون 1976 ، ص 52.
- ↑ تايلور، آلان (2 أغسطس 1972). "قلة من الناس يدركون الموارد المهدرة لمدارس برنامج الدبلوم المحلية" . مجلة كمبيوتر وورلد . المجلد 6، العدد 31، ص 11.
- ↑ تراينس، جيه إم (1974). البرمجة بلغة كوبول: دورة من اثنتي عشرة محاضرة تلفزيونية . مطبعة جامعة مانشستر. ص 87. ISBN 978-0719005923.
- ↑ كلاين 2010 ، ص 16.
- ↑ بيرد، جورج ن.؛ أوليفر، بول (مايو 1977). "معيار 1974 (X3.23–1974)". معايير لغات البرمجة - من يحتاجها؟ (ملف PDF) (تقرير). وزارة البحرية . الصفحات 19-21 . مؤرشف (ملف PDF) من الأصل في 7 يناير 2014. تم الاطلاع عليه في 7 يناير 2014 .
- ^ كوليتون ، جون ر. جونيور (23 يوليو 1975). ""التوفر المتقطع يمثل مشكلة..." Computerworld . 9 (30): 17.
- ↑ سيمونز، ويليامز ب. (18 يونيو 1975). "هل يخطئ برنامج كتابة التقارير في لغة كوبول الهدف حقًا؟" . مجلة كمبيوتر وورلد . 9 (25): 20.
- ↑ شور، ريتا (26 يناير 1981). "مستخدم يهدد برفع دعوى قضائية بسبب معيار ANSI كوبول-80" . مجلة كمبيوتر وورلد . المجلد 15، العدد 4. الصفحات 1، 8.
- ↑ شور، ريتا (26 أكتوبر 1981). "DPMA تتخذ موقفًا ضد مسودة كوبول" . كمبيوتر وورلد . المجلد 15، العدد 43. الصفحات 1-2 .
- 1 2 3 غالانت، جون (16 سبتمبر 1985). "قد يكون معيار كوبول المنقح جاهزًا في أواخر عام 1985" . كمبيوتر وورلد . المجلد 19، العدد 37. الصفحات 1، 8.
- 1 2 "خبير يتناول معيار كوبول 85" . مجلة كمبيوتر وورلد . المجلد 19، العدد 37. 16 سبتمبر 1985. الصفحات 41، 48.
- ↑ بول، لويس (15 مارس 1982). "ردود الفعل على لغة كوبول-80 سلبية للغاية" . مجلة كمبيوتر وورلد . المجلد 16، العدد 11. الصفحات 1، 5.
- ↑ بول، لويس (25 أبريل 1983). "دراسة تُظهر قلة المشاكل في التحول إلى لغة كوبول-8X" . مجلة كمبيوتر وورلد . المجلد 17، العدد 17، الصفحات 1، 6.
- ↑ جيلين، بول (19 نوفمبر 1984). "مستخدمو DEC يحصلون على بداية مبكرة في تطبيق لغة كوبول-80" . مجلة كمبيوتر وورلد . المجلد 18، العدد 47. الصفحات 1، 6.
- ↑ خوادم ClearPath Enterprise (أبريل 2015). "دليل مرجعي لبرمجة COBOL ANSI-85" (ملف PDF) . public.support.unisys.com . Unisys . تاريخ الاسترجاع: 29 أبريل 2022 .
- ↑ غارفانكل 1987 ، ص 150.
- ↑ روي، إم كيه؛ داستيدار، دي. غوست (1 يونيو 1989). "ميزات كوبول-85". برمجة كوبول: مشاكل وحلول ( الطبعة الثانية). ماكجرو هيل للتعليم. الصفحات 438-451 . ISBN 978-0074603185.
- ↑ روبنسون، برايان (9 يوليو 2009). "لا تزال لغة كوبول خيارًا تقليديًا في الوكالات رغم ظهور علامات التقادم عليها" . FCW . مجموعة الإعلام بالقطاع العام. مؤرشف من الأصل في 27 أبريل 2014. تم الاطلاع عليه في 26 أبريل 2014 .
- 1 2 "معايير كوبول" . مايكرو فوكس. مؤرشف من الأصل في 31 مارس 2004. تم الاطلاع عليه في 2 سبتمبر 2014 .
- ↑ "NetCOBOL for .Net" . netcobol.com . GTSoftware. 2013. مؤرشف من الأصل في 8 يوليو 2014. تم الاطلاع عليه في 29 يناير 2014 .
- ↑ "قائمة بميزات كوداسيل كوبول" . مجلة كمبيوتر وورلد . المجلد 18، العدد 37. 10 سبتمبر 1984. ص. ID/28 . تاريخ الاسترجاع: 8 يونيو 2014 .
- ^ ISO/IEC JTC 1/SC 22/WG 4 2001 ، المرفق واو.
- ↑ كلاين 2010 ، ص 21.
- 1 2 "JTC1/SC22/WG4 – COBOL" . المنظمة الدولية للمقاييس. 30 يونيو 2010. مؤرشف من الأصل في 14 فبراير 2014. تم الاطلاع عليه في 27 أبريل 2014 .
- ↑ بيلمان، جون؛ كلينك، هوييب (27 فبراير 2008). "أفكار حول مستقبل توحيد لغة كوبول" (ملف PDF) . مؤرشف من الأصل (ملف PDF) في 11 يوليو 2009. تم الاطلاع عليه في 14 أغسطس 2014 .
- ^ ISO/IEC JTC 1/SC 22/WG 4 2014 ، الملحق هـ.
- ↑ شريكر، دون (2 ديسمبر 1998). "J4: توحيد لغة كوبول" . مايكرو فوكس. مؤرشف من الأصل في 24 فبراير 1999. تم الاطلاع عليه في 12 يوليو 2014 .
- 1 2 3 ISO/IEC JTC 1/SC 22/WG 4 2023 ، الفقرة E.3.1.
- 1 2 3 4 5 ISO/IEC JTC 1/SC 22/WG 4 2023 ، القسم E.3.2.
- ^ ISO/IEC JTC 1/SC 22/WG 4 2023 ، § 12.4.4.9.
- ^ ISO/IEC JTC 1/SC 22/WG 4 2023 ، § 8.7.2.
- ↑ "GCOBOL(1) (مترجم gcc cobol)" . gcc.gnu.org . المعايير.
- ↑ باونر، ديفيد أ . (25 مايو 2016). "الوكالات الفيدرالية بحاجة إلى معالجة الأنظمة القديمة" (ملف PDF) . مكتب محاسبة الحكومة . ص 18. مؤرشف من الأصل (ملف PDF) في 15 يونيو 2016. تم الاطلاع عليه في 19 يوليو 2019.
أفادت عدة وكالات، مثل وزارة الزراعة الأمريكية، ووزارة الأمن الداخلي، ووزارة الصحة والخدمات الإنسانية، ووزارة العدل، ووزارة الخزانة، ووزارة شؤون المحاربين القدامى، باستخدام لغة البرمجة كوبول (COBOL) - وهي لغة برمجة طُوّرت في أواخر الخمسينيات وأوائل الستينيات - لبرمجة أنظمتها القديمة. ومن المعروف على نطاق واسع أن الوكالات بحاجة إلى الانتقال إلى لغات برمجة أكثر حداثة وقابلة للصيانة، كلما كان ذلك مناسبًا وممكنًا.
- 1 2 ليهي، أندرو. "من لغة كوبول ولغة التجميع إلى لغة جافا - تحديث مصلحة الضرائب الأمريكية" . فوربس . تم الاطلاع عليه بتاريخ 29 سبتمبر 2025 .
- ↑ كيزيور، رونالد جيه؛ كار، دونالد؛ هالبرن، بول. "هل للغة كوبول مستقبل؟" (ملف PDF) . وقائع مؤتمر تعليم نظم المعلومات 2000. 17 ( 126). مؤرشف من الأصل (ملف PDF) في 17 أغسطس 2016. تم الاطلاع عليه في 30 سبتمبر 2012 .
- ↑ تومسون، كلايف (10 نوفمبر 2020). "الشفرة التي تتحكم بأموالك" . www.wealthsimple.com . تم الاطلاع عليه بتاريخ 19 أبريل 2025 .
{{cite web}}: CS1 maint: deprecated archiveal service ( link ) - ↑ وايت، دوغ (12 يوليو 1998). "الأسئلة الشائعة حول مشكلة عام 2000" . homepages.wmich.edu . مؤرشف من الأصل في 7 نوفمبر 2021. تم الاطلاع عليه في 29 أبريل 2022.
وبالتالي، فإن المشكلة الرئيسية لعام 2000 هي مشكلة النتائج غير الصحيحة عند إجراء العمليات الحسابية المتعلقة بالتواريخ.
- ↑ كابلمان، ليون أ. (2000). "بعض المزايا الاستراتيجية لمشكلة عام 2000". مجلة IEEE للبرمجيات . 17 (2): 42-46 . رمز Bibcode : 2000ISoft..17b..42K . doi : 10.1109/52.841605 .
- ↑ كار وكيزيور 2003 ، ص 16.
- ↑ كار وكيزيور 2003 ، ص 10.
- ↑ "هجرة العقول من لغة كوبول: نتائج استطلاع رأي" . مجلة كمبيوتر وورلد . 14 مارس 2012. مؤرشف من الأصل في 27 أبريل 2014. تم الاطلاع عليه في 27 أبريل 2014 .
- ↑ تيبليتزكي، فيل (25 أكتوبر 2019). "سد فجوة مهارات برمجة كوبول" . مجلة أنظمة آي بي إم، آي بي إم زد . مؤرشف من الأصل في 13 أبريل 2020. تم الاطلاع عليه في 11 يونيو 2020 .
- ↑ ميغاو، نيكولاس (25 أبريل 2018). "تحول عملية نقل تكنولوجيا المعلومات "المثالية" لبنك TSB إلى فوضى لعملائه" . فايننشال تايمز . تم الاطلاع عليه بتاريخ 19 أبريل 2025 .
- ↑ لي، أليسيا (8 أبريل 2020). "مطلوب بشكل عاجل: أشخاص يجيدون لغة برمجة عمرها نصف قرن حتى تتمكن الولايات من معالجة طلبات إعانة البطالة" . سي إن إن . تم الاطلاع عليه بتاريخ 8 أبريل 2020 .
- ↑ لونغ، هيذر؛ شتاين، جيف؛ رين، ليزا؛ روم، توني (17 أبريل 2020). "شيكات التحفيز وغيرها من مساعدات فيروس كورونا تعرقلها التكنولوجيا القديمة والتنفيذ الحكومي المتعثر" . صحيفة واشنطن بوست . تم الاطلاع عليه بتاريخ 19 أبريل 2020 .
- ^ ISO/IEC JTC 1/SC 22/WG 4 2014 ، § 8.9.
- ↑ "جدول الكلمات المحجوزة" . مركز تطوير Visual COBOL 7.0 . شركة Rocket Software . تم الاطلاع عليه بتاريخ 16 مارس 2026 .
- ^ ISO/IEC JTC 1/SC 22/WG 4 2014 ، § 8.3.1.2.
- ^ ISO/IEC JTC 1/SC 22/WG 4 2014 ، § 8.3.2.
- ↑ "مقدمة إلى لغة كوبول" . جامعة جيمس ماديسون . تم الاطلاع عليه بتاريخ 10 ديسمبر 2024 .
- ↑ McCracken 1976 ، ص 2، 6–9.
- 1 2 ISO/IEC JTC 1/SC 22/WG 4 2001 ، § F.2.
- ^ ISO/IEC JTC 1/SC 22/WG 4 2014 ، § D.18.2.
- ^ ISO/IEC JTC 1/SC 22/WG 4 2014 ، § د.18.
- ^ ISO/IEC JTC 1/SC 22/WG 4 2014 ، ص. 108.
- ^ ISO/IEC JTC 1/SC 22/WG 4 2014 ، ص. 896.
- ^ ISO/IEC JTC 1/SC 22/WG 4 2014 ، § D.2.1.
- ↑ "تنظيم الملفات" . معالجة الملفات . مايكرو فوكس. 1998. مؤرشف من الأصل في 4 مارس 2016. تم الاطلاع عليه في 27 يونيو 2014 .
- ^ ISO/IEC JTC 1/SC 22/WG 4 2014 ، § 8.5.1.2.
- ↑ كتلر 2014 ، الملحق أ.
- ↑ هابل، ثين (1999). سامز: تعلم لغة كوبول بنفسك في 24 ساعة . دار نشر سامز . ص 40. ISBN 978-0672314537. إل سي سي إن 98087215 .
- ↑ McCracken & Golden 1988 , § 19.9.
- ↑ كتلر 2014 ، § 5.8.5.
- ^ ISO/IEC JTC 1/SC 22/WG 4 2014 ، § 8.5.2.
- 1 2 ISO/IEC JTC 1/SC 22/WG 4 2014 ، الفقرة 14.9.24.
- ^ ISO/IEC JTC 1/SC 22/WG 4 2014 ، § 14.9.35.
- ^ ISO/IEC JTC 1/SC 22/WG 4 2014 ، § 13.18.40.
- ^ ISO/IEC JTC 1/SC 22/WG 4 2014 ، § 13.18.60.3.
- ^ ISO/IEC JTC 1/SC 22/WG 4 2014 ، ص. 855.
- 1 2 ماكراكين 1976 ، ص 338.
- ^ ISO/IEC JTC 1/SC 22/WG 4 2014 ، § 14.4.
- ^ ISO/IEC JTC 1/SC 22/WG 4 2014 ، § 14.6.3.
- ↑ فيلد، جون؛ رامالينجام، جي. (سبتمبر 1999). تحديد البنية الإجرائية في برامج كوبول (ملف PDF) . PASTE '99 . doi : 10.1145/381788.316163 . ISBN 1581131372تمت أرشفة (PDF) من الأصل في 24 ديسمبر 2010.
- 1 2 3 فيرمان، نيلز؛ فيرهوفن، إرنست-يان (نوفمبر 2006). "الكشف عن حقول الألغام باستخدام لغة كوبول" (ملف PDF) . البرمجيات: الممارسة والخبرة . 36 (14). doi : 10.1002/spe.v36:14 . S2CID 18619757. مؤرشف من النسخة الأصلية (ملف PDF) في 6 مارس 2007.
- ^ ISO/IEC JTC 1/SC 22/WG 4 2014 ، § 14.9.
- ^ ISO/IEC JTC 1/SC 22/WG 4 2014 ، §§ 14.9.4, 14.9.22.
- ^ ISO/IEC JTC 1/SC 22/WG 4 2014 ، § D.6.5.2.2.
- ^ ISO/IEC JTC 1/SC 22/WG 4 2014 ، § 14.9.13.1.
- ^ ISO/IEC JTC 1/SC 22/WG 4 2014 ، §14.9.35.1.
- ^ ISO/IEC JTC 1/SC 22/WG 4 2014 ، ص. 899.
- 1 2 McCracken & Golden 1988 ، § 8.4.
- ↑ يمكن الاطلاع على أمثلة لدعم المترجم
ALTERفيما يلي:- تيفين، برايان (18 سبتمبر 2013). "سبتمبر 2013" . جنو كوبول . مؤرشف من الأصل في 5 مايو 2014. تم الاسترجاع في 5 يناير 2014 .
- "عبارة ALTER" . مرجع لغة COBOL لبرنامج Micro Focus Visual COBOL 2.2 لـ Visual Studio 2013. Micro Focus . تاريخ الاطلاع: 5 يناير 2014 .
- "عبارة ALTER (Nucleus)" (ملف PDF) . دليل مرجعي للغة COBOL85 . فوجيتسو. نوفمبر 1996. صفحة 555. مؤرشف من النسخة الأصلية (ملف PDF) بتاريخ 6 يناير 2014. تم الاطلاع عليه بتاريخ 5 يناير 2014 .
- عبارة "ALTER" . مرجع لغة Enterprise COBOL لنظام التشغيل z/OS . شركة IBM. يونيو 2013. تم الاطلاع عليه في 5 يناير 2014 .
- ^ ISO/IEC JTC 1/SC 22/WG 4 2001 ، § F.1.
- 1 2 ماكراكين 1976 ، ص 355.
- ↑ موسلي، جاي (17 يناير 2015). "مترجم لغة كوبول من MVT" . تم الاطلاع عليه بتاريخ 19 يوليو 2015 .
- ↑ ديكسترا، إدسكار دبليو. (18 يونيو 1975). "كيف نخبر بالحقائق التي قد تكون مؤلمة؟" . جامعة تكساس في أوستن. EWD498. مؤرشف من الأصل في 2 مايو 2017. تم الاطلاع عليه في 29 أغسطس 2007 .
- ↑ تومبكينز، هـ. إي. (1983). "دفاعًا عن تدريس لغة كوبول المهيكلة كجزء من علوم الحاسوب" . إشعارات ACM SIGPLAN . 18 (4): 86-94 . doi : 10.1145/948176.948186 . S2CID 33803213 .
- 1 2 Riehle 1992 ، ص. 125.
- ↑ شنايدرمان 1985 ، ص 349-350.
- ↑ كوفلان، مايكل (16 مارس 2014). مقدمة في لغة كوبول للمبرمجين . دار نشر أبريس. ص 4. رقم ISBN 978-1430262534تم الاطلاع عليه بتاريخ 13 أغسطس 2014 .
- ↑ ساميت 1978ب ، ص 258.
- ↑ Riehle 1992 ، ص 126.
- ↑ Riehle 1992 ، ص 127.
- ↑ شريكر 2000 ، ص 51.
- ↑ "لغة كوبول والبرمجيات القديمة كمخاطرة نظامية | الرأسمالية العارية" . ١٩ يوليو ٢٠١٦. تم الاطلاع عليه بتاريخ ٢٣ يوليو ٢٠١٦ .
- ↑ لاميل، رالف؛ فيرهوف، كريس (نوفمبر-ديسمبر 2001). "حل مشكلة 500 لغة" (ملف PDF) . مجلة IEEE للبرمجيات . 18 (6): 79. رمز Bibcode : 2001ISoft..18f..78L . doi : 10.1109/52.965809 . hdl : 1871/9853 . مؤرشف من النسخة الأصلية (ملف PDF) بتاريخ 19 أغسطس 2014.
- ↑ هاوكينز، تي جيه؛ هاراندي، إم تي (أبريل 1979). "نحو لغة كوبول أكثر قابلية للنقل" . مجلة الكمبيوتر . 22 (4): 290. doi : 10.1093/comjnl/22.4.290 .
- ↑ غارفانكل 1987 ، ص 11.
- ↑ غارفانكل 1987 ، ص 15.
- ↑ ريموند، إريك س. (1 أكتوبر 2004). "كوبول" . ملف المصطلحات، الإصدار 4.4.8 . مؤرشف من الأصل في 30 أغسطس 2014. تم الاطلاع عليه في 13 ديسمبر 2014 .
- ↑ براون 1976 ، ص 53.
- ↑ CODASYL 1969 ، § II.1.1.
- ↑ شنايدرمان 1985 ، ص 350.
- ↑ ساميت 1961 ، ص 381.
- 1 2 كونر 1984 ، ص. ID/10.
- ↑ ماركوتي 1978 أ، ص 263.
- ↑ كونر 1984 ، ص. ID/14.
- ↑ كونواي، ريتشارد؛ غريس، ديفيد (1973). مقدمة في البرمجة: منهج منظم باستخدام PL/1 وPL/C . كامبريدج، ماساتشوستس: وينثروب للنشر. ص 341. ISBN 0-87626-405-4.
- ↑ "منطق وبرمجة لغة كوبول، الطبعة الثالثة 1974" . مؤرشف من الأصل في 5 مارس 2016. تم الاطلاع عليه في 25 فبراير 2016 .
- ↑ "مقابلة: مدافع عن لغة كوبول" . مجلة كمبيوتر وورلد . المجلد 18، العدد 37. 10 سبتمبر 1984. الصفحات ID/29–ID/32 . تاريخ الاطلاع: 8 يونيو 2014 .
- ↑ برات، تيرينس دبليو؛ زيلكوفيتز، مارفن في. (1984). لغات البرمجة: التصميم والتنفيذ ( الطبعة الثانية). إنجلوود كليفس، نيوجيرسي : برنتيس هول. ISBN 0136780121.
- ↑ كار وكيزيور 2003 ، ص 13.
- ↑ «الأوساط الأكاديمية بحاجة إلى مزيد من الدعم لمعالجة فجوة مهارات تكنولوجيا المعلومات» (بيان صحفي). مايكرو فوكس. 7 مارس 2013. تم الاطلاع عليه بتاريخ 4 أغسطس 2014 .
- ↑ ساميت، جان؛ غارفونكل، جيروم (أكتوبر 1985). "ملخص التغييرات في لغة كوبول، 1960-1985". حوليات تاريخ الحوسبة . 7 (4): 342. Bibcode : 1985IAHC....7d.342S . doi : 10.1109/MAHC.1985.10033 . S2CID 17940092 .
- ↑ كوك، مارغريت م. (يونيو 1978). غوش، ساكتي ب.؛ ليو، ليونارد ي. (محررون). مرفق قاعدة البيانات لـ COBOL 80 (ملف PDF) . المؤتمر الوطني للحاسوب لعام 1978. أنهايم، كاليفورنيا: مطبعة AFIPS. الصفحات 1107-1112 . doi : 10.1109/AFIPS.1978.63 . LCCN 55-44701 . تاريخ الاسترجاع: 2 سبتمبر 2014.
أقرب تاريخ يمكن فيه تطوير معيار جديد لـ COBOL واعتماده هو عام 1980 [...].
- ↑ "قرارات اجتماع فريق العمل الرابع المنعقد في الفترة من 24 إلى 28 يونيو 2003، لاس فيغاس، نيفادا، الولايات المتحدة الأمريكية" . 11 يوليو 2003، صفحة 1. مؤرشف من الأصل (ملف doc) بتاريخ 8 مارس 2016. تم الاطلاع عليه بتاريخ 29 يونيو 2014.
مراجعة لمعيار كوبول (COBOL)
صدرت في يونيو 2008 . - ↑ بابكوك، تشارلز (14 يوليو 1986). "الإضافات القياسية في لغة كوبول تتعرض لانتقادات لاذعة" . مجلة كمبيوتر وورلد . المجلد 20، العدد 28. الصفحات 1، 12.
- 1 2 شنايدرمان 1985 ، ص 349.
- ↑ ماركوتي 1978ب ، ص 274.
- ↑ يمكن رؤية ذلك في:
- " Visual COBOL" . IBM PartnerWorld . IBM . 21 أغسطس 2013. مؤرشف من الأصل في 12 يوليو 2014. تم الاطلاع عليه في 5 فبراير 2014.
تقدم Micro Focus Visual COBOL الجيل التالي من تطوير ونشر لغة COBOL لأنظمة Linux x86-64 وLinux for System z وAIX وHP/UX وSolaris وWindows.
- "عائلة مُجمِّعات لغة كوبول من آي بي إم" . آي بي إم . 16 مايو 2024. تم الاطلاع عليه بتاريخ 11 سبتمبر 2024 .
- "GnuCOBOL - مشروع جنو" . تم الاطلاع عليه بتاريخ 11 سبتمبر 2024 .
- " Visual COBOL" . IBM PartnerWorld . IBM . 21 أغسطس 2013. مؤرشف من الأصل في 12 يوليو 2014. تم الاطلاع عليه في 5 فبراير 2014.
- ↑ كوفلان، مايكل (2002). "مقدمة إلى لغة كوبول" . مؤرشف من الأصل في 5 مارس 2023.
- "دراسات مجموعة غارتنر" . 1997-2001.state.gov . مكتب إدارة البرامج لعام 2000. 2000. تم الاطلاع عليه بتاريخ 23 أبريل 2022 .
- إنجلمان، فيكتور (8 أبريل 2021). "التحقق من الحقائق حول لغة كوبول" . cobsolete.de . كوبسوليت . تم الاطلاع عليه بتاريخ 23 أبريل 2022 .
- "ماذا يخبئ لنا المستقبل؟" مجلة CIO . مجموعة البيانات الدولية. 15 ديسمبر 1995 - 1 يناير 1996. ص 82.
مصادر
- بيمر، بوب (1971). "نظرة على تاريخ لغة كوبول" (ملف PDF) . مجلة هانيويل للحاسوب . 5 (3). مؤرشف من الأصل (ملف PDF) بتاريخ 22 يناير 2016. تم الاطلاع عليه بتاريخ 28 يونيو 2014 .
- باير، كورت (2009). غريس هوبر واختراع عصر المعلومات . مطبعة معهد ماساتشوستس للتكنولوجيا. ISBN 978-0262013109. إل سي سي إن 2008044229 .
- براون، ويليام ر. (1 ديسمبر 1976). "كوبول". في: بيلزر، جاك؛ هولزمان، ألبرت ج.؛ كينت، ألين (محررون). موسوعة علوم وتكنولوجيا الحاسوب: المجلد 5. مطبعة سي آر سي . رقم ISBN 978-0824722555.
- كار، دونالد إي.؛ كيزيور، رونالد جيه. (31 ديسمبر 2003). "استمرار أهمية لغة كوبول في مجال الأعمال والأوساط الأكاديمية: الوضع الراهن ومقارنة بدراسة عام 2000" ( ملف PDF) . مجلة تعليم نظم المعلومات . 1 (52). ISSN 1545-679X . S2CID 62485945. مؤرشف (ملف PDF) من الأصل في 5 مارس 2023. تم الاطلاع عليه في 4 أغسطس 2014 .
- CODASYL (يوليو 1969). CODASYL COBOL مجلة التطوير 1968. المكتب الوطني للمعايير . ISSN 0591-0218 . LCCN 73601243. OL 14204153M .
- كونر، ريتشارد ل. (14 مايو 1984). "كوبول، لقد بدأ عمرك يظهر" . مجلة كمبيوتر وورلد . المجلد 18، العدد 20. الصفحات ID/7–ID/18. الرقم الدولي الموحد للدوريات 0010-4841 .
- كاتلر، غاري (9 أبريل 2014). دليل مبرمج GNU COBOL (ملف PDF) ( الطبعة الثالثة) . تم الاطلاع عليه بتاريخ 25 فبراير 2014 .
- غارفانكل، جيروم (1987). كتاب أمثلة كوبول 85. وايلي . ISBN 978-0471804611.
- ISO/IEC JTC 1/SC 22/WG 4 (4 ديسمبر 2001). "ISO/IEC IS 1989:2001 – لغة البرمجة كوبول" . ISO . مؤرشف من الأصل (ملف مضغوط بصيغة PDF) بتاريخ 24 يناير 2002. تاريخ الاطلاع: 2 سبتمبر 2014 .(الرابط يؤدي إلى المسودة رقم 0147)
- ISO/IEC JTC 1/SC 22/WG 4 (31 أكتوبر 2014). INCITS/ISO/IEC 1989:2014 [2014] – لغة البرمجة كوبول . INCITS .
- ISO/IEC JTC 1/SC 22/WG 4 (يناير 2023). ISO/IEC 1989:2023 – لغة البرمجة كوبول . ISO .
- كلاين، ويليام م. (4 أكتوبر 2010). "تاريخ لغة كوبول" (ملف PDF) . مؤرشف من النسخة الأصلية (ملف PDF) بتاريخ 7 يناير 2014. تم الاطلاع عليه بتاريخ 7 يناير 2014 .
- ماركوتي، مايكل (1978أ). ويكسلبلات، ريتشارد ل. (محرر). نص جلسة الأسئلة والأجوبة . تاريخ لغات البرمجة. دار النشر الأكاديمية (نُشر عام 1981). ص 263. doi : 10.1145/800025.1198370 . ISBN 0127450408.
- ماركوتي، مايكل (1978ب). ويكسلبلات، ريتشارد ل. (محرر). النص الكامل لجميع الأسئلة المقدمة . تاريخ لغات البرمجة. دار النشر الأكاديمية (نُشر عام 1981). ص 274. doi : 10.1145/800025.1198371 . ISBN 0127450408.
- مكراكين، دانيال د. (1976). دليل مبسط لبرمجة كوبول المهيكلة . وايلي. ISBN 0-471-58284-0. إل سي سي إن 75044399 .
- مكراكين، دانيال د.؛ جولدن، دونالد ج. (1988). دليل مبسط لبرمجة كوبول المهيكلة (الطبعة الثانية ). وايلي. ISBN 978-0471610540. إل سي سي إن 87034608 .
- ريل، ريتشارد ل. (أغسطس 1992). "يُعتبر برنامج PERFORM ضارًا" . مجلة اتصالات رابطة آلات الحوسبة . 35 (8): 125-128 . doi : 10.1145/135226.376106 . S2CID 18845698 .
- ساميت، جان إي. (مايو 1961). طريقة لدمج لغتي ALGOL وCOBOL . أوراق بحثية قُدّمت في المؤتمر المشترك الغربي للحاسوب، الذي عُقد في الفترة من 9 إلى 11 مايو 1961، والذي ضمّ منظمات IRE وAIEE وACM . ACM . الصفحات 379-387 . doi : 10.1145/1460690.1460734 .
- ساميت، جان إي. (1978أ). ويكسلبلات، ريتشارد إل. (محرر). التاريخ المبكر للغة كوبول . تاريخ لغات البرمجة. دار النشر الأكاديمية (نُشر عام 1981). doi : 10.1145/800025.1198367 . ISBN 0127450408.
- ساميت، جان إي. (1978ب). ويكسلبلات، ريتشارد إل. (محرر). نص العرض التقديمي . تاريخ لغات البرمجة. دار النشر الأكاديمية (نُشر عام 1981). doi : 10.1145/800025.1198368 . ISBN 0127450408.
- ساميت ، جان إي. (23 يوليو 2004). "كوبول". في رايلي، إدوين د. (محرر). موسوعة موجزة لعلوم الكمبيوتر . وايلي. رقم ISBN 978-0470090954. OCLC 249810423 .
- شريكر، د. (أبريل 2000). "كوبول للألفية القادمة". مجلة IEEE للبرمجيات . 17 (2): 48-52 . رمز Bibcode : 2000ISoft..17b..48S . doi : 10.1109/52.841606 .
- شنايدرمان، ب. (أكتوبر 1985). "العلاقة بين لغة كوبول وعلوم الحاسوب". حوليات تاريخ الحوسبة . 7 (4): 348-352 . Bibcode : 1985IAHC....7d.348S . doi : 10.1109/MAHC.1985.10041 . S2CID 1009406 .
روابط خارجية
- COBOLStandard.info على موقع Wayback Machine (تمت أرشفته في 10 يناير 2017)
- ISO/IEC JTC1/SC22/WG4 - COBOL في Wayback Machine (تمت أرشفته في 22 أغسطس 2016)
- معيار لغة كوبول (1991؛ كوبول-85 مع التعديل 1)، من مجموعة أوبن جروب
- كوبول
- لغات برمجة .NET
- برنامج عام 1959
- لغات البرمجة القائمة على الفئات
- لغات البرمجة المترجمة
- مقدمات متعلقة بالحاسوب في عام 1959
- برامج متعددة المنصات
- لغات البرمجة الكائنية التوجه
- لغات البرمجة الإجرائية
- لغات البرمجة التي ابتكرتها النساء
- لغات البرمجة التي تم ابتكارها عام 1959
- لغات البرمجة ذات معيار ISO
- لغات البرمجة ذات الكتابة الثابتة
- لغات البرمجة الهيكلية
