Fortran
आंतरिक प्रक्रियाओं
खोज…
टिप्पणियों
उपलब्ध आंतरिक प्रक्रियाओं में से कई में तर्क प्रकार आम हैं। उदाहरण के लिए:
- एक तार्किक तर्क
MASK
जो संसाधित किए जाने वाले इनपुट सरणियों के तत्वों का चयन करता है - पूर्णांक स्केलर तर्क
KIND
जो फ़ंक्शन परिणाम के प्रकार को निर्धारित करता है - कमी वाले फ़ंक्शन के लिए पूर्णांक तर्क
DIM
, जो उस आयाम को नियंत्रित करता है जिस पर कटौती की जाती है
एक शर्त को पूरा करने वाले तत्वों का चयन करने के लिए पैक का उपयोग करना
आंतरिक pack
फ़ंक्शन एक सरणी को वेक्टर में pack
करता है, किसी दिए गए मास्क के आधार पर तत्वों का चयन करता है। फ़ंक्शन के दो रूप हैं
PACK(array, mask)
PACK(array, mask, vector)
(अर्थात, vector
तर्क वैकल्पिक है)।
दोनों ही मामलों में array
एक सरणी है, और तार्किक प्रकार का mask
और array
अनुरूप (या तो एक अदिश या समान आकृति का एक सरणी)।
पहले मामले में परिणाम के प्रकार और प्रकार पैरामीटर की रैंक -1 सरणी है array
तत्वों नकाब में सच तत्वों की संख्या जा रहा है की संख्या के साथ।
integer, allocatable :: positive_values(:)
integer :: values(5) = [2, -1, 3, -2, 5]
positive_values = PACK(values, values>0)
में परिणाम positive_values
सरणी जा रहा है [2, 3, 5]
।
vector
रैंक -1 तर्क प्रस्तुत करने के साथ परिणाम अब vector
का आकार है (जो कि कम से कम कई तत्वों के रूप में होना चाहिए क्योंकि mask
में सच्चे मूल्य mask
।
साथ प्रभाव vector
कि सरणी के नकाबपोश तत्वों द्वारा ओवरराइट की प्रारंभिक तत्वों के साथ कि सरणी वापस जाने के लिए है array
। उदाहरण के लिए
integer, allocatable :: positive_values(:)
integer :: values(5) = [2, -1, 3, -2, 5]
positive_values = PACK(values, values>0, [10,20,30,40,50])
positive_values
परिणाम में परिणाम सरणी [2,3,5,40,50]
।
यह ध्यान दिया जाना चाहिए कि तर्क array
के आकार की परवाह किए बिना परिणाम हमेशा रैंक -1 सरणी होता है।
सरणी की बैठक की स्थिति के तत्वों का चयन करने के अलावा, यह अक्सर सूचकांकों को निर्धारित करने के लिए उपयोगी होता है, जिसके लिए मास्किंग स्थिति पूरी होती है। इस सामान्य मुहावरे को व्यक्त किया जा सकता है
integer, allocatable :: indices(:)
integer i
indices = PACK([(i, i=1,5)], [2, -1, 3, -2, 5]>0)
indices
परिणामस्वरूप सरणी [1,3,5]
।