https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96486

--- Comment #6 from kargl at gcc dot gnu.org ---
I do note there are other problems with get_environment_variable.

1) Neither length nor status can be integer(1).  gfortran should issue
   an error.

2) Fortran 2018 has added an optional errmsg argument.  This is not
   supported.

3) gfortran is issuing errors that don't make sence (to me).

program foo
   integer( 1) i01
   integer( 2) i02
   integer( 4) i04
   integer( 8) i08
#ifdef __GFC_INT_16__
   integer(16) i16
#endif
   character(len=20) name

   print '(A,I0)', 'range(i01) = ', range(i01)
   print '(A,I0)', 'range(i02) = ', range(i02)
   print '(A,I0)', 'range(i04) = ', range(i04)
   print '(A,I0)', 'range(i08) = ', range(i08)
#ifdef __GFC_INT_16__
   print '(A,I0)', 'range(i16) = ', range(i16)
#endif

   name = ''
   ! Although valid Fortran, this should probably raise a warning.
   call get_environment_variable(name);

   name = 'FOO'
   call get_environment_variable(name,length=i01);  ! Should be an error
   call get_environment_variable(name,length=i02);  ! Should be ok
   call get_environment_variable(name,length=i04);  ! Should be ok
   call get_environment_variable(name,length=i08);  ! Should be ok
#ifdef __GFC_INT_16__
   call get_environment_variable(name,length=i16);  ! Should be ok
#endif

end program foo

mobile:kargl[256] gfcx -o z a.F90 && ./z
a.F90:29:45:

   29 |    call get_environment_variable(name,length=i01);  ! Should be an
error
      |                                             1
Error: In call to 'get_environment_variable' at (1), type mismatch in argument
length'; pass 'INTEGER(1)' to 'INTEGER(4)'
a.F90:30:45:

   30 |    call get_environment_variable(name,length=i02);
      |                                             1
Error: In call to 'get_environment_variable' at (1), type mismatch in argument
length'; pass 'INTEGER(2)' to 'INTEGER(4)'
a.F90:32:45:

   32 |    call get_environment_variable(name,length=i08);
      |                                             1
Error: In call to 'get_environment_variable' at (1), type mismatch in argument
length'; pass 'INTEGER(8)' to 'INTEGER(4)'

Reply via email to