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)'