पर विचार करें:क्या एक स्पष्ट इंटरफ़ेस के बिना एक नियमित रूप से एक आवंटित सरणी को पार करने में कुछ गड़बड़ है?
program main
real, allocatable, dimension(:) :: foo
integer n
n=10
call dofoo(foo,n,1)
allocate(foo(n))
call dofoo(foo,n,0)
end program main
subroutine dofoo(foo,n,mode)
real foo(n)
integer i,n,mode
if(mode.eq.1)then
n=6
return
endif
do i=1,n
foo(i)=i
enddo
return
end subroutine dofoo
क्या इसके बाद के संस्करण कोड के साथ गलत है? (यह gfortran के साथ काम करता है) मैं पहली बार एक गैर आवंटित सरणी में गुजरता हूं, लेकिन मैं इसे छूता नहीं - क्या मानक में कुछ भी है जो इसे सिस्टम पर निर्भर तरीके से व्यवहार कर सकता है?
धन्यवाद। मैं चिंतित था कि यह मामला था। मुझे नहीं पता था कि मानक क्या कहना है (मैं f77 मानक से बहुत परिचित हूं, लेकिन मैंने वास्तव में अधिकांश f90 मानक नहीं पढ़ा है) – mgilson
एक साइड नोट के रूप में, उपरोक्त कोड gfortran के साथ काम करता है (मेरे बाद बग को संपादित किया गया) – mgilson
आवंटित सरणी के चारों ओर पास करने से एफ 5 मानक तक टीआर तक साफ़ नहीं किया गया था। आवंटित स्थिति और आयाम आवंटित सरणी चर के _part_ हैं। यह मायने रखता है क्योंकि इरादे (इन) या इरादे (आउट) जैसी चीजें आपको बताती हैं कि अगर सरणी का _values_ बदल सकता है लेकिन क्या इसका आकार या आवंटन स्थिति बदल सकती है। एक स्पष्ट इंटरफ़ेस के बिना, एक प्रोग्राम को आवंटित सरणी को पार करते समय सबसे खराब मानना होगा - यह बदले में आकार को और भी नहीं जान सकता है। सामान्य मामले में यह एक बड़ा प्रदर्शन जुर्माना है, इसलिए यह निर्णय लिया गया कि किसी के पास स्पष्ट इंटरफ़ेस होना चाहिए। –