! hello.f90 module mykinds implicit none integer, parameter :: ik4 = selected_int_kind(9) integer, parameter :: ik8 = selected_int_kind(18) end module mykinds module Win32 use mykinds implicit none interface function GetStdHandle(nStdHandle) bind(C,name='GetStdHandle') use mykinds use ISO_C_BINDING implicit none integer(C_INTPTR_T) GetStdHandle integer(C_LONG), VALUE :: nStdHandle end function GetStdHandle end interface interface function WriteConsoleA(hConsoleOutput,lpBuffer, & nNumberOfCharsToWrite,lpNumberOfCharsWritten, & lpReserved) bind(C,name='WriteConsoleA') use mykinds use ISO_C_BINDING implicit none integer(C_LONG) WriteConsoleA integer(C_INTPTR_T), VALUE :: hConsoleOutput character(kind=C_CHAR) lpBuffer*(1) integer(C_LONG), VALUE :: nNumberOfCharsToWrite integer(C_LONG) lpNumberOfCharsWritten integer(C_INTPTR_T) lpReserved end function WriteConsoleA end interface end module Win32 program hello use mykinds use Win32 implicit none integer(ik4) nStdHandle integer(ik8) hConsoleOutput integer(ik4) status character(80) Buffer integer(ik4) nNumberOfCharsToWrite integer(ik4) NumberOfCharsWritten integer(ik8) Reserved nStdHandle = -11 hConsoleOutput = GetStdHandle(nStdHandle) Buffer = 'Hello, world!'//achar(13)//achar(10) nNumberOfCharsToWrite = len_trim(Buffer) Reserved = 0 status = WriteConsoleA(hConsoleOutput,Buffer, & nNumberOfCharsToWrite,NumberOfCharsWritten, & Reserved) end program hello