سؤال

أنا بدأت تعلم عن كوبول. لدي بعض برامج كتابة الخبرة التي تتعامل مع قواعد بيانات SQL وأعتقد أنني مرتبك كيف تخزن كوبول واسترداد البيانات التي يتم تخزينها في الإطار الرئيسي على سبيل المثال. أعلم أنه لا يشبه قواعد البيانات العلائقية ولكن كل برنامج مثال رأيته يأخذ البيانات مباشرة من سطر الأوامر وأعلم أن هذه ليست كيفية معالجة برامج Cobol العالمية الحقيقية البيانات. هل يمكن لأي شخص أن يفسر أو أرني موردا جيدا يمكنه أن يفسر ذلك؟

هل كانت مفيدة؟

المحلول

COBOL هي مجرد لغة أخرى للكمبيوتر الجيل الثالث. إنه لأمر أكبر سنا قليلا من معظمها لا يعني أنه غير مكتمل بطريقة أو بأخرى (في الواقع يأتي مع قليل من الأمتعة - ولكن هذه قصة أخرى).

كما هو الحال مع أي لغة جيل ثالثة أخرى، يتلاعب COBOL بملفات البيانات بنفس الطريقة التي تقوم بها في برنامج C. لا شيء غريب أو غامض أو سحري حيال ذلك. يتم فتح الملفات، وقراءة، مكتوبة وأغلق باستخدام ميزات الملف I / O للغة.

يتم استخدام آليات مختلفة لتشكيل رابط بين الملف الفعلي والبرنامج. غالبا ما تكون التفاصيل هنا محددة لنظام التشغيل الذي تعمل عليه. بشكل عام، تحاول تطبيقات COBOL عزل أنفسهم من بيئة التشغيل من خلال اسم ملف منطقي بدلا من الاسم الفعلي. هذا غير مباشر مضبوط مهم عند كتابة برامج سيتم نقلها إلى منصات مختلفة (مثل الكتابة والاختبار داخل IDE على نظام Windows، ثم قم بتشغيله على المركزية).

تتصل الأمثلة التالية ببيئة الإطار الرئيسي IBM.

ضمن World IBM MainFrame، ستجد أن البرامج يتم تشغيلها كدفعة أو عبر الإنترنت (مثل CICS). لن أصف كيفية إعداد الملف I / O تحت CICS (هذه قصة طويلة). البرامج التي تستخدم لمعالجة الملفات هي عادة دفعة. فيما يلي توضيح تقريبي لكيفية يعمل برنامج الدفعات:

  1. يتم تشغيل البرامج الدفعية عبر JCL. يستخدم JCL لتحديد البرنامج لتشغيل (بيان "Exec") وتحديد الملفات التي سيشجعها البرنامج باستخدام بيانات "DD". تتمثل وظيفة عبارة DD في تشكيل اتصال منطقي بين الملف الفعلي والاسم سيتم الرجوع إليه برنامج COBOL الخاص بك عندما يريد الرجوع إلى الملف (هذه هي آلية العزلة المذكورة مسبقا). علي سبيل المثال،

    JCLDDNAM DD DSN='HLQ.MY.FILE'...
    

    من شأنه أن يربط اسم "DD" "JCLDDAM" إلى الملف المسمى "hlq.my.file". هذا الجزء يعتمد على النظام الأساسي لذلك التفاصيل محددة لبيئة التشغيل.

  2. في قسم "التحكم في الملفات" من برنامج COBOL الخاص بك، تقوم بتوصيل اسم "DD" المحدد في JCL الخاص بك باسمك الذي سيستخدمه في بيان I / O للإشارة إلى هذا الملف. يتم تعريف هذا الاتصال باستخدام عبارة "تحديد".
    علي سبيل المثال،

    SELECT MYFILE
    ASSIGN JCLDDNAM
    remainder of select
    

    يجعل العلاقة بين أي ملف مرتبط ب "JCLDDAM" في "JCL" الخاص بك "MyFile" الذي ستشير إليه لاحقا في بيانات COBOL I / O. ال SELECT البيان نفسه جزء من معيار ISO COBOL. ومع ذلك، فإن العديد من تطبيقات COBOL تحدد بعض التبعيد غير المعياري لتسهيل العديد من النظم الفرعية لملفاتهم.

  3. فتح، قراءة، الكتابة، ملفات إغلاق ضمن برنامج "قسم الإجراء" من برنامجك باستخدام اسم "MyFile" كما في:

    OPEN MYFILE  
    READ MYFILE  
    CLOSE MYFILE  
    

ما سبق مبسطة للغاية، وهناك العديد من الطرق للقيام بذلك داخل كوبول. فهم الصورة الكاملة سوف يستغرق بعض الجهد الحقيقي والوقت والممارسة. تعد بيانات I / O التي توضح أعلاه جزءا من معيار COBOL، ولكن كل بائع سيحصل على وإبعاده الخاص.

يدعم IBM COBOL مجموعة واسعة من مؤسسات الملفات وأساليب الوصول. يمكنك مراجعة دليل مرجع لغة IBM Enterprise Cobol هنا للحصول على بناء الجملة والقواعد لمعالجة الملفات، ومع ذلك، دليل المستخدم يوفر الكثير من الأمثلة الجيدة لملفات القراءة / الكتابة (سيتعين عليك حفر بعض الشيء - لكن كل ذلك وضعت لك).

يعد الإعداد المرجنا لقاعدة بيانات SQL عبر برنامج COBOL مختلفا إلى حد ما ولكنه ينطوي على إعداد اتصال بين البرنامج ونظام قاعدة البيانات الفرعية. ضمن World IBM، يتم ذلك Throug JCL، وسوف تستخدم البيئات الأخرى آليات مختلفة.

يستخدم IBM COBOL معالجا مسبقا أو معالج مشارك لدمج الوصول إلى قاعدة البيانات وتبادل البيانات. على سبيل المثال، سيسترد التعليمات البرمجية التالية بعض البيانات من قاعدة بيانات DB2:

MOVE 1234 TO PERSON-ID
EXEC SQL
  SELECT  FIRST_NAME,  LAST_NAME
  INTO   :FIRST-NAME, :LAST-NAME
  FROM PERSON
  WHERE PERSON_ID = :PERSON-ID
END-EXEC
DISPLAY PERSON-ID FIRST-NAME LAST-NAME

الاشياء بين EXEC SQL و END-EXEC هو بيان SQL بسيط جدا SQL. الأسماء التي تسبقها COLONS هي متغيرات مضيف COBOL المستخدمة لتمرير البيانات إلى DB2 أو استلامها مرة أخرى. إذا كنت قد ترميز إجراءات الوصول إلى قاعدة بيانات مشفرة من أي وقت مضى قبل أن يبدو هذا مألوفا للغاية بالنسبة لك. هذه حلقة الوصل يوفر مقدمة بسيطة لإدماج بيانات SQL في برنامج IBM Enterpirse Cobol.

بالمناسبة، IBM Enterprise Cobol قادر على العمل مع مستندات XML أيضا. آسف على مائل IBM الثقيلة، لكن هذه هي البيئة وأنا الأكثر دراية بها.

آمل أن تبدأ هذا في الاتجاه الصحيح.

نصائح أخرى

من قال أنك لا تستطيع استخدام SQL لاسترداد البيانات من تطبيق COBOL، ربما دون إنفاق المال؟

قامت شركة اعتدت أن تعمل من أجلها، فعلت ذلك - مع SQLite. تقوم هذه الأحجار الكريمة الصغيرة في مكتبة المجال العام بتجميع بيانات SQL إلى ByTecode، ثم تنفذها.

من خلال استبدال مستوى SQLite "الخلفي" مع واجهة مخصصة إلى مكتبة C التي تتعامل مع ملفات COBOL، كان من الممكن الاستعلام عن بيانات COBOL من لغات أخرى، Python في هذه الحالة. عملت - ضمن حدود SQLite بالطبع، لكنها كانت مستقرة، بدت علائقا بما فيه الكفاية ولم تتطلب حتى خادم DB :-)

تستخدم البيئات الدفاعية التقليدية COBOL "قسم بيانات" لبرنامج COBOL لإعلان اتصالات قاعدة البيانات مباشرة، والتي يتم إعدادها بدورها في JCL. نظرا لأن COBOL يسرد SQL، فإن تلك كانت قد تميل إلى أن تكون أنواعا أخرى مختلفة من قواعد البيانات، ولكن من المحتمل أن تعمل شركة IBM SQL مع DB / 2. أتصور أنك ستحصل على إجابة أخرى من شخص أقرب إلى هذه الأشياء. إذا نظرت إلى Preprocessors SQL المتاحة للاستخدام مع لغات أخرى، فستحصل على الفكرة - يصبح المؤشر نموذج بيانات أصلي ويوفر نتائج الاستعلام إلى المتغيرات الأصلية.

يستخدم المركز الدولي Cobol SQL مضمن (كيندا مثل SQLJ)، على سبيل المثال:

قسم الإجراءات.

   Exec SQL
        Select col1, col2
          from myTable
        into :ws-col1, :ws-col2
        where col0 = :col0
   End-Exec

في هذه الحالة، يتم تعريف المتغيرات المضيفة WS-COL0 و WS-COL1 و WS-COL2 في قسم تخزين العمل. تدير واجهة قاعدة البيانات الحصول على هذه البيانات في المكان المناسب.

من السهل جدا مقارنة بالأشياء الموزعة في الواقع.

استخدم كل متجر IBM MainFrame لقد عملت في COBOL التي تحدثت مع قاعدة بيانات علنية. عموما كان ذلك DB2 IBM. يرجى ملاحظة أن DB2 هي قاعدة بيانات علائقية تعمل على المركزية. يمكن أيضا تشغيله على Windows أو Linux.

قبل عشرين عاما، كانت طريقة سداد البيانات في قاعدة بيانات DB2 المركزية لاستخدام CICS. CICS هو برنامج "مستوى العرض التقديمي" الذي يتنقل بشاشات إدخال البيانات القائمة على الأحرف. النظر في CICS HAVELATTIAT وظيفية من PHP أو ASP.NET.

اليوم هناك العديد من الخيارات للحصول على البيانات في DB2. لا يزال CICS خيارا ولكن "طبقة العرض التقديمي" يمكن أن تكون PHP و ASP.NET و Win Fors، Java JSF، PowerBuilder. الشيء الرئيسي هو أن منصة التنمية الخاصة بك ستحتاج إلى أن تكون قادرا على العمل مع برنامج تشغيل قاعدة بيانات DB2. يمكن أن تكون المنصة Windows و Linux وربما غيرها.

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top