ফোরট্রানে Error এবং Exception Handling
ফোরট্রান, যেমন অন্যান্য প্রোগ্রামিং ভাষায়, তেমন শক্তিশালী বা বিল্ট-ইন exception handling মেকানিজম সরবরাহ করে না, তবে ফোরট্রান ত্রুটি (error) পরিচালনা করার জন্য কিছু পদ্ধতি এবং কৌশল প্রদান করে। এর মধ্যে অন্যতম হলো I/O Error Handling, Error Codes, এবং TRY-CATCH মত পদ্ধতি।
১. ফোরট্রানে I/O Error Handling
ফোরট্রানে ইনপুট বা আউটপুট (I/O) অপারেশন করার সময় ত্রুটি হতে পারে (যেমন, ফাইল না খোলা, অথবা অবৈধ ডেটা ইনপুট)। এর জন্য IERR বা IOMSG অপশন ব্যবহার করা যেতে পারে যা ত্রুটি ধরতে সাহায্য করে।
সিনট্যাক্স:
READ(unit, *, IOSTAT=status) variableএখানে IOSTAT=status ভেরিয়েবলটি ইনপুট/আউটপুট অপারেশনের সময় ত্রুটি বা সফলতা সম্পর্কে জানাবে।
উদাহরণ:
PROGRAM error_handling_example
INTEGER :: unit, status
CHARACTER(LEN=100) :: filename, input_line
filename = 'data.txt'
OPEN(UNIT=10, FILE=filename, STATUS='OLD', IOSTAT=status)
IF (status /= 0) THEN
PRINT *, 'Error opening the file.'
ELSE
PRINT *, 'File opened successfully.'
END IF
! ফাইল থেকে পড়া
READ(10, *, IOSTAT=status) input_line
IF (status /= 0) THEN
PRINT *, 'Error reading the file.'
ELSE
PRINT *, 'Data read successfully: ', input_line
END IF
CLOSE(UNIT=10)
END PROGRAM error_handling_exampleএখানে:
IOSTAT=statusত্রুটি সনাক্ত করে, এবং এটি যদি শূন্য না হয় (অর্থাৎ ত্রুটি ঘটে), তবে কোড ত্রুটির বার্তা প্রিন্ট করে।
২. Error Codes (ত্রুটি কোড)
ফোরট্রানে সাধারণভাবে বিভিন্ন ফাংশন বা সাবরুটিনের জন্য ত্রুটি কোড ব্যবহৃত হয়। এই কোডগুলির মাধ্যমে আপনার প্রোগ্রামটি জানাতে পারে কোন ধরনের ত্রুটি ঘটেছে।
উদাহরণ:
PROGRAM error_codes_example
INTEGER :: result
result = my_function()
IF (result /= 0) THEN
PRINT *, 'Error in function: ', result
ELSE
PRINT *, 'Function executed successfully.'
END IF
END PROGRAM error_codes_example
FUNCTION my_function()
INTEGER :: my_function
! কিছু কাজ যা ত্রুটি ঘটাতে পারে
my_function = 1 ! ১ মানে ত্রুটি
END FUNCTION my_functionএখানে:
my_functionফাংশন ত্রুটি কোড ফিরিয়ে দেয়, এবং প্রোগ্রাম সেই কোড অনুসারে পরবর্তী পদক্ষেপ নেয়।
৩. Program Termination (প্রোগ্রাম সমাপ্তি)
ফোরট্রানে প্রোগ্রামটি স্বাভাবিকভাবে সমাপ্ত না হলে, STOP স্টেটমেন্ট ব্যবহার করে প্রোগ্রামটি বন্ধ করা যেতে পারে। এটি সাধারণত ত্রুটির ক্ষেত্রে ব্যবহৃত হয়।
উদাহরণ:
PROGRAM stop_example
INTEGER :: i
DO i = 1, 10
IF (i == 5) THEN
PRINT *, 'An error occurred, stopping program.'
STOP
END IF
END DO
PRINT *, 'This will not be printed.'
END PROGRAM stop_exampleএখানে:
- যখন
iমান ৫ হয়, তখনSTOPস্টেটমেন্ট প্রোগ্রাম বন্ধ করে দেয় এবং পরবর্তী কোড এক্সিকিউট হবে না।
৪. TRY-CATCH স্টাইল Exception Handling
ফোরট্রানে সরাসরি TRY-CATCH স্টাইলের এক্সসেপশন হ্যান্ডলিং নেই, তবে কিছু পদ্ধতিতে সিমুলেট করা যায়। এর মধ্যে ERR= আই/O স্টেটমেন্ট ব্যবহার করে ত্রুটি ধরার একটি পদ্ধতি ব্যবহৃত হতে পারে।
উদাহরণ:
PROGRAM try_catch_simulation
INTEGER :: i, divisor, result
divisor = 0
! ডিভাইড করতে গিয়ে ত্রুটি ঘটবে
READ *, i
IF (divisor == 0) THEN
PRINT *, 'Error: Division by zero.'
ELSE
result = i / divisor
PRINT *, 'Result: ', result
END IF
END PROGRAM try_catch_simulationএখানে:
IF (divisor == 0)শর্ত ব্যবহার করে ডিভিশন বাই জিরো ত্রুটি সিমুলেট করা হয়েছে, এবং ত্রুটি থাকলে নির্দিষ্ট বার্তা প্রদর্শন করা হয়।
৫. TRAP এবং SIGNAL Handling
ফোরট্রানে সিগন্যাল এবং সিগন্যাল ট্র্যাপিংয়ের জন্য বিল্ট-ইন সমর্থন নেই, তবে কিছু প্ল্যাটফর্মে, যেমন লিনাক্সে, আপনি সিগন্যাল হ্যান্ডলিংয়ের জন্য C এবং Fortran এর মিশ্রণ ব্যবহার করতে পারেন।
উপসংহার
ফোরট্রানে Error এবং Exception Handling সিস্টেম সরাসরি থাকা না সত্ত্বেও কিছু পদ্ধতিতে কোডের ত্রুটি নির্ধারণ এবং তা পরিচালনা করা সম্ভব। এর মধ্যে:
- IOSTAT এর মাধ্যমে ইনপুট/আউটপুট ত্রুটি সনাক্তকরণ।
- Error codes ব্যবহার করে ত্রুটি কোডের মাধ্যমে ত্রুটি সনাক্তকরণ।
- STOP কমান্ডের মাধ্যমে প্রোগ্রাম বন্ধ করা।
- TRY-CATCH স্টাইল সিমুলেশন।
এই পদ্ধতিগুলি ত্রুটি পরিচালনা করতে সাহায্য করে এবং প্রোগ্রামিং এ ত্রুটির জন্য সঠিক পদক্ষেপ গ্রহণ করতে সহায়ক।
Read more