كيفية التحقق مما إذا كان الملف مفتوح بالفعل في COBOL؟
سؤال
أحاول معرفة طريقة للتحقق مما إذا كان الملف مفتوح بالفعل في 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.