كيفية التحقق مما إذا كان الملف مفتوح بالفعل في COBOL؟

StackOverflow https://stackoverflow.com/questions/2227995

  •  19-09-2019
  •  | 
  •  

سؤال

أحاول معرفة طريقة للتحقق مما إذا كان الملف مفتوح بالفعل في COBOL، بحيث يمكنني فتحه إذا تم إغلاقه أو إغلاقه إذا تم فتحه.

thnx.

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

المحلول

افحص ال FILE STATUS والتصرف وفقا لذلك.

حاول القيام بما يلي:

أضف FILE-STATUS تحت FILE-CONTROL, ، علي سبيل المثال:

    FILE-CONTROL.
        SELECT  MYFILE ASSIGN MYDD
                ORGANIZATION SEQUENTIAL
                ACCESS       SEQUENTIAL
                FILE STATUS  MYFILE-STATUS.

أعلن أ FILE STATUS متغير في WORKING-STORAGEك PIC X(2) القيمة، على سبيل المثال:

           01 MYFILE-STATUS   PIC X(2).
              88 MYFILE-ALREADY-OPEN   VALUE '41'.

ثم في PROCEDURE DIVISIONالقضية OPEN لملفك. مباشرة بعد ذلك، اختبار قيمة FILE STATUSكما هو الحال في:

    OPEN MYFILE....
    IF MYFILE-ALRADY-OPEN
       CLOSE MYFILE...
    END-IF
    IF MYFILE-STATUS <> '00'
       perform some sort of general error routine
    END-IF

قيم FILE STATUS حيث لا تكون الحرف الأول "9"، فهي قيم قياسية COBOL لذا فإن اختبار "41" للكشف عن ملف مفتوح بالفعل يجب أن يعمل على جميع تطبيقات COBOL. احذر عندما تكون الشخصية الأولى هي "9"، فهذه هي رموز حالة الملفات الخاصة بائع البائعين. تحقق من الرابط التالي مقدمة جيدة لاستخدام COBOL FILE STATUS: http://www.simotime.com/vsmfsk01.htm.

نصائح أخرى

قد يوفر برنامج التحويل البرمجي الخاص بك أيضا واجهة برمجة تطبيقية خارجية، مثل CBL_Check_File_Exist والذي يمكن العثور عليه على Micro Focus Cobol و Acucobol و Fujutsu Cobol.

على سبيل المثال، على Micro Focus Cobol:

 copy "cblproto.cpy".

 program-id. MYMAIN.
 working-storage section.
 01  .
     05  file-details    cblt-fileexist-buf.

 procedure division.
     call 'CBL_CHECK_FILE_EXIST' using 'mymain.cbl '
                                       file-details
     if  return-code not = 0
       display "File mymain.cbl does not exist (or error)"
     else
       display "File mymain.cbl size is " cblt-fe-filesize
       of file-details
     end-if
 end program MYMAIN.
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top