में सबराउटिन के लिए आवंटित सरणी कैसे पास करें निम्न कोड एक सेगमेंटेशन फॉल्ट लौटा रहा है क्योंकि आवंटित सरणी जिसे मैं पास करने का प्रयास कर रहा हूं उसे ठीक से पहचाना नहीं जा रहा है (आकार रिटर्न 1, जब यह 3 होना चाहिए)। इस पृष्ठ में (http://www.eng-tips.com/viewthread.cfm?qid=170599) एक समान उदाहरण यह इंगित करता है कि इसे F95 में ठीक काम करना चाहिए; मेरी कोड फ़ाइल में एक एफ 0 9 0 एक्सटेंशन है, लेकिन मैंने इसे F95 में बदलने की कोशिश की, और मैं संकलन करने के लिए gfortran का उपयोग कर रहा हूँ।फोरट्रान
मेरा अनुमान है कि समस्या इस तरह से होनी चाहिए कि मैं subroutine को आवंटित सरणी को पार कर रहा हूं; मैं क्या गलत कर रहा हूं?
!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%!
PROGRAM test
!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%!
IMPLICIT NONE
DOUBLE PRECISION,ALLOCATABLE :: Array(:,:)
INTEGER :: iii,jjj
ALLOCATE(Array(3,3))
DO iii=1,3
DO jjj=1,3
Array(iii,jjj)=iii+jjj
PRINT*,Array(iii,jjj)
ENDDO
ENDDO
CALL Subtest(Array)
END PROGRAM
!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%!
SUBROUTINE Subtest(Array)
DOUBLE PRECISION,ALLOCATABLE,INTENT(IN) :: Array(:,:)
INTEGER :: iii,jjj
PRINT*,SIZE(Array,1),SIZE(Array,2)
DO iii=1,SIZE(Array,1)
DO jjj=1,SIZE(Array,2)
PRINT*,Array(iii,jjj)
ENDDO
ENDDO
END SUBROUTINE
!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%!
ध्यान दें कि आवंटित डमी तर्क वास्तव में एक हैं (व्यापक रूप से समर्थित - कुछ वर्षों के लिए gfortran सहित) फोरट्रान 2003 सुविधा। – IanH