This page is for general questions about Fortran. If you’re searching for something, such as a library or routine to perform a particular task, feel free to ask here.
Q: Hi! I’m quite new in FORTRAN, and I´m using Microsoft Visual 2008 as IDE and Intel Fortran as compiler. I’d like to know how I can creat a fortran library using them and how I can link my code to the library. Thanks.
Q: Hi! I have a quite simple question: if I have an array of integers as A = (/1,2,3,4,5/), how do I convert this array in the number 12345? Thank you very much in advanced for your help Regards
A: There are a number of ways you could go about doing this. Perhaps the simplest is to create a loop over the array index and use integer arithmatic operations.
number = 0 DO i=1,SIZE(A) number = number + A(i)*10**(SIZE(A)-i) END DONote that I have not tested this to confirm it’s correctness, but it should be correct. If not, you could easily figure out where I made a typo or went wrong. One could also write the array elements to a character variable and then read the character variable back as an integer.
Q: Does anyone know how to overload intrinsic functions? Preeferably using f95 comnpliant syntax if possible. Thanks.
A: It’s actually simple. You just overload the function you want. For example, you can overload ABS:
module myabs implicit none type vector real :: x, y, z end type vector interface ABS module procedure absvector end interface ABS contains real function absvector(vec) type(vector), intent(in) :: vec absvector = sqrt(vec%x ** 2 + vec%y ** 2 + vec%z ** 2) end function absvector end module myabs
If you test this, you’ll see that you can now call ABS with REAL, INTEGER, COMPLEX, and even vector.