IOSTAT এবং ERR স্টেটমেন্ট এর ব্যবহার

Error Handling (এরর হ্যান্ডলিং) - ফোরট্রান (Fortran) - Computer Programming

341

ফোরট্রানে IOSTAT এবং ERR স্টেটমেন্টের ব্যবহার

IOSTAT এবং ERR স্টেটমেন্টগুলি ফাইল ইনপুট/আউটপুট (I/O) অপারেশনের সময় ত্রুটি (error) বা বিশেষ অবস্থা (status) ট্র্যাক করতে ব্যবহৃত হয়। এগুলি বিশেষত ডাটা রিডিং, রাইটিং এবং ফাইল অপারেশন করার সময় ত্রুটি হ্যান্ডলিং এবং ডিবাগিংয়ে সহায়ক।

১. IOSTAT

IOSTAT স্টেটমেন্ট একটি আউটপুট ভ্যারিয়েবল প্রদান করে যা ইনপুট/আউটপুট অপারেশনের সফলতা বা ত্রুটির তথ্য প্রদান করে। এটি ফাইল রিড/রাইট অপারেশনগুলির শেষে ফিরে আসে এবং আপনি যদি কোনো ত্রুটি বা বিশেষ অবস্থা চান, তবে এটি ব্যবহার করা হয়।

IOSTAT স্টেটমেন্টের সাধারণ গঠন:

READ(unit, *, IOSTAT=status_variable) variable
WRITE(unit, *, IOSTAT=status_variable) variable
  • unit: ফাইল ইউনিট নম্বর যা ইনপুট/আউটপুট অপারেশন পরিচালনা করে।
  • status_variable: একটি ইন্টিজার ভ্যারিয়েবল যা I/O অপারেশনের ফলাফল ধারণ করবে।
  • variable: ফাইল থেকে পড়তে বা লিখতে থাকা ডেটা।

IOSTAT ব্যবহার করার উদাহরণ:

program iostat_example
  implicit none
  integer :: iunit, ios, num
  character(len=20) :: filename

  filename = 'data.txt'

  ! ফাইল খোলা
  open(unit=iunit, file=filename, status='old')

  ! ফাইল থেকে ডেটা পড়া
  read(iunit, *, IOSTAT=ios) num

  ! যদি কোনো ত্রুটি না ঘটে, তাহলে ios হবে 0
  if (ios == 0) then
     print *, 'Read successful: ', num
  else
     print *, 'Error in reading file. IOSTAT = ', ios
  end if

  ! ফাইল বন্ধ করা
  close(iunit)

end program iostat_example

এখানে:

  • IOSTAT=ios: ios ভ্যারিয়েবলটি স্ট্যাটাস ফেরত দেবে। যদি কোনো ত্রুটি না ঘটে, তবে ios এর মান হবে 0
  • যদি ios এর মান ০ না হয়, তবে এটি নির্দেশ করে যে কোনো ত্রুটি ঘটেছে এবং সেই ত্রুটির তথ্য পাওয়া যাবে।

IOSTAT এর মান:

  • ios = 0: সফল I/O অপারেশন।
  • ios < 0: I/O ত্রুটি (এটি বিভিন্ন কারণে হতে পারে, যেমন ফাইল না পাওয়া, ফাইল শেষ হয়ে যাওয়া, ইত্যাদি)।
  • ios > 0: বিশেষ অবস্থা (যেমন, ফাইলের শেষে পৌঁছানো, অথবা EOF (End of File))।

২. ERR

ERR স্টেটমেন্ট একটি আউটপুট প্যারামিটার হিসেবে ব্যবহার করা হয় যা I/O অপারেশনগুলির জন্য ত্রুটি সনাক্ত করতে সাহায্য করে। এটি ফাইল রিডিং বা রাইটিংয়ের সময় ত্রুটি ঘটলে একটি লেবেল বা কোডে প্রোগ্রামকে ডাইরেক্ট করতে পারে।

ERR স্টেটমেন্টের সাধারণ গঠন:

READ(unit, *, ERR=label) variable
WRITE(unit, *, ERR=label) variable
  • unit: ফাইল ইউনিট নম্বর।
  • label: ত্রুটি ঘটলে কোডটি যেখানে চলে যাবে (এই লেবেলটি একটি লেবেল স্টেটমেন্ট বা কোন নির্দিষ্ট স্টেটমেন্ট হতে হবে)।
  • variable: যেটি ইনপুট বা আউটপুট হচ্ছে।

ERR স্টেটমেন্টের উদাহরণ:

program err_example
  implicit none
  integer :: iunit, num
  character(len=20) :: filename

  filename = 'data.txt'

  ! ফাইল খোলা
  open(unit=iunit, file=filename, status='old')

  ! ফাইল থেকে ডেটা পড়া, যদি কোনো ত্রুটি ঘটে তাহলে error_label এ চলে যাবে
  read(iunit, *, ERR=error_label) num

  ! সফলভাবে ডেটা পড়া হলে এটি চলে যাবে এখানে
  print *, 'Read value: ', num

  ! ত্রুটি ঘটলে এই লেবেলে চলে যাবে
  error_label:
     print *, 'Error reading file.'

  ! ফাইল বন্ধ করা
  close(iunit)

end program err_example

এখানে:

  • ERR=error_label: যদি read অপারেশনে কোনো ত্রুটি ঘটে, তাহলে এটি error_label নামক লেবেলে চলে যাবে এবং Error reading file. বার্তা প্রদর্শন করবে।
  • যদি কোনো ত্রুটি না ঘটে, তবে সফলভাবে ডেটা পড়ার পর num প্রিন্ট হবে।

৩. IOSTAT এবং ERR এর মধ্যে পার্থক্য

ফিচারIOSTATERR
ব্যবহারI/O অপারেশনের ফলাফল ট্র্যাক করতে ব্যবহৃত।I/O ত্রুটি সনাক্ত করলে নির্দিষ্ট লেবেলে ডাইরেক্ট করতে ব্যবহৃত।
মূল কাজI/O অপারেশনের স্ট্যাটাস (সাফল্য বা ত্রুটি) পাওয়া।ত্রুটির ক্ষেত্রে নির্দিষ্ট স্টেটমেন্ট বা লেবেল চালনা।
রিটার্ন ভ্যালুইন্টিজার ভ্যালু (0 = সাফল্য, < 0 = ত্রুটি)।লেবেল বা স্টেটমেন্ট যেখানে প্রোগ্রাম ত্রুটির পর চলে যাবে।
ত্রুটি ধরার জন্যI/O স্ট্যাটাস ইন্টারনালভাবে ফেরত দেয়।ত্রুটি হলে কোডটি একটি নির্দিষ্ট লেবেলে পরিচালিত হয়।

উপসংহার

ফোরট্রানে IOSTAT এবং ERR স্টেটমেন্টগুলো ফাইল I/O অপারেশনগুলির সময় ত্রুটি শনাক্ত করতে ব্যবহৃত হয়। IOSTAT অপারেশনের ফলাফল বা ত্রুটির তথ্য প্রদান করে, এবং ERR নির্দিষ্ট লেবেলে কোডটি ডাইরেক্ট করতে সাহায্য করে, যা ত্রুটি হ্যান্ডলিং এবং ডিবাগিংয়ে সহায়ক। এই দুটি স্টেটমেন্ট ব্যবহার করে আপনি কোডের মধ্যে I/O ত্রুটি সঠিকভাবে পরিচালনা করতে পারেন এবং প্রোগ্রামের স্থিতিশীলতা নিশ্চিত করতে পারেন।

Content added By
Promotion

Are you sure to start over?

Loading...