الانتقال إلى المحتوى الرئيسي
الوحدة 5 · الدرس 2 من 210/10 في الدورة~15 min
دروس الوحدة (2/2)

عمليات إدخال/إخراج الملفات

بمجرد ربط الملف والإعلان عنه في DATA DIVISION، يمكننا معالجته داخل PROCEDURE DIVISION. في COBOL، تتبع إدارة دورة حياة الملفات تدفقًا قياسيًا وحتميًا: فتح وتنفيذ العمليات (القراءة أو الكتابة) والإغلاق.


1. فتح الملفات: البيان المفتوح

قبل أن تتمكن من القراءة من ملف أو الكتابة إليه، يجب فتحه عن طريق تحديد وضع الوصول المناسب:

COBOL
       OPEN INPUT SALES-FILE.

الأوضاع الرئيسية هي:

  • INPUT: يتم فتح الملف في وضع القراءة فقط. يجب أن يكون الملف موجودا على القرص، وإلا فسوف يفشل البرنامج.
  • OUTPUT: يتم فتح الملف في وضع الكتابة. إذا كان الملف موجودًا بالفعل، فسيتم حذف محتواه السابق (الكتابة فوقه). إذا لم يكن موجودا، يتم إنشاؤه.
  • EXTEND: يتم فتح الملف لإلحاق البيانات. سيتم كتابة السجلات الجديدة بدءًا من نهاية الملف الموجود.
  • I-O: يتم فتح الملف للقراءة والكتابة (يُستخدم غالبًا لملفات الوصول النسبية أو المفهرسة، وليس الملفات المتسلسلة الخطية).

2. قراءة البيانات: بيان القراءة

لقراءة سجل من ملف متسلسل، نستخدم العبارة READ. نظرًا لأننا لا نعرف مسبقًا عدد السجلات التي يحتوي عليها الملف، فيجب علينا دائمًا التعامل مع شرط نهاية الملف (EOF) باستخدام جملة AT END :

COBOL
       READ SALES-FILE
           AT END MOVE "Y" TO WS-EOF
       END-READ.
  • READ SALES-FILE: لاحظ أن العبارة تشير إلى اسم الملف المنطقي (المحدد في العبارات SELECT وFD)، وليس اسم السجل.
  • AT END: يحدد الإرشادات التي سيتم تشغيلها عند محاولة القراءة بعد آخر سجل متاح. عادةً، تقوم بتعيين متغير العلامة (مثل WS-EOF) إلى "Y".
  • END-READ: ينهي بيان القراءة بشكل صريح.

3. كتابة البيانات: بيان الكتابة

لإدراج البيانات في ملف، نستخدم العبارة WRITE.

[!تحذير] في COBOL، تقرأ ملفًا (READ SALES-FILE)، لكنك تكتب سجلًا (WRITE SALES-RECORD). تعد كتابة WRITE SALES-FILE خطأً شائعًا في بناء الجملة يمنع الترجمة.

COBOL
       MOVE 1001 TO EMP-ID.
       MOVE "MARIO ROSSI" TO EMP-NAME.
       WRITE SALES-RECORD.

قبل تنفيذ عبارة WRITE، يجب ملء الحقول الثانوية لبنية سجل FD (في هذه الحالة، SALES-RECORD) في الذاكرة.


4. إغلاق الملفات: بيان الإغلاق

عند اكتمال المعالجة، يجب إغلاق كل ملف مفتوح لتحرير موارد النظام والتأكد من كتابة جميع البيانات على القرص:

COBOL
       CLOSE SALES-FILE.

لاحظ أن عبارة CLOSE تأخذ اسم الملف المنطقي كوسيطة لها، وليس اسم السجل.


جربه

تمرين#cobol.m5.l2.e1
المحاولات: 0جارٍ التحميل…

أكمل قسم الإجراءات عن طريق فتح ملف المبيعات في وضع الإدخال، وقراءة السجل الأول، وتعيين متغير التحكم WS-EOF على "Y" عند الوصول إلى نهاية الملف. وأخيرًا، تذكر إغلاق الملف قبل التوقف.

جارٍ تحميل المحرر…
إظهار التلميح

اكتب بالترتيب: افتح ملف مبيعات المدخلات. ثم اقرأ ملف المبيعات في النهاية، ثم انقل "Y" إلى WS-EOF END-READ. ثم أغلق ملف المبيعات. وأخيرًا توقف عن التشغيل.

الحل متاح بعد 3 من المحاولات

تمرين#cobol.m5.l2.e2
المحاولات: 0جارٍ التحميل…

أكمل قسم الإجراءات عن طريق فتح ملف المبيعات في وضع الإخراج. انقل القيمة 1001 إلى معرف المبيعات و250.50 إلى مبلغ المبيعات، ثم اكتب سجل المبيعات في الملف. وأخيرا، أغلق الملف قبل إيقاف البرنامج.

جارٍ تحميل المحرر…
إظهار التلميح

افتح الملف باستخدام OPEN OUTPUT SALES-FILE.، استخدم MOVE لتعيين قيم لمعرف المبيعات وSALES-AMOUNT، ثم قم بتنفيذ WRITE SALES-RECORD. (كتابة السجل، وليس الملف!)، أغلقه بإغلاق ملف المبيعات. وينتهي بـ STOP RUN.

الحل متاح بعد 3 من المحاولات