gfortran question about optional subroutine arguments

Mark Hounschell markh@compro.net
Thu Mar 14 12:02:00 GMT 2013


 From what I read, what I need to do is doable in f90/f95 using optional 
arguments? But I am porting some very old fortran77 stuff and am using 
the -std=legacy switch. I'm basically trying to figure out how to call a 
subroutine with fewer arguments than the subroutine was declared with. 
The call works but in the code below I get a segfault when the 
subroutine attempts to access the unpassed argument. The old fortan77 
had no problems with this, I assume because even when not passed in, the 
subroutine declaration gave the argument a valid address??

       program test
       implicit none

       integer*4 arg1 /10/
       integer*4 arg2 /20/

       call sub1(arg1)
c    the old fortran77 call would have been
c    call sub1(arg1,)
       stop
       end

       subroutine sub1(arg1, arg2)
       implicit none

       integer*4 arg1
       integer*4 arg2

       arg2 = 0     ! causes segfault in gfortran
c
c    A segfault also occurs in some_other_sub if arg2 is accessed.
c
       call some_other_sub(arg1,arg2)  !

       return
       end

Yet a loc(arg2) any where is the line _seems_ to provide a valid address???

Is there a way this be done using -std=legacy switch


Thanks and Regards
Mark



More information about the Gcc-help mailing list