Ta funkce signal nastavuje obsluhu signálu a nemá nic společného se čtením standardního vstupu. Nevidím důvod používat Fortran, když ho znáš tak málo, že na tom příkladu nevidíš, že tam není žádné I/O.
Implementace náhrady ifbrk (nevím, jak přesně má fungovat) v Céčku může vypadat třeba takhle:
== keys.c
#include <unistd.h>
#include <termios.h>
static char readchar(int block)
{
	char c;
	struct termios oldtios, newtios;
	if (tcgetattr(STDIN_FILENO, &oldtios) < 0) return 0;
	newtios = oldtios;
	cfmakeraw(&newtios);
	newtios.c_cc[VTIME] = 0;
	newtios.c_cc[VMIN] = block ? 1 : 0;
	if (tcsetattr(STDIN_FILENO, TCSANOW, &newtios) < 0) return 0;
	if (read(STDIN_FILENO, &c, 1) != 1) c = 0;
	if (tcsetattr(STDIN_FILENO, TCSANOW, &oldtios) < 0) return 0;
	return c;
}
int getkey()
{
	return readchar(0);
}
int waitkey()
{
	return readchar(1);
}== main.f
      program main
      integer :: i
      interface
        integer(c_int) function ifbrk() bind(C, name="getkey")
          use, intrinsic :: iso_c_binding, only : c_int
        end function
      end interface
      i=0
      do while (i.eq.0)
	 i=ifbrk()
      end do
      if (i.eq.86.or.i.eq.118) then
	 write(*,*)'Vkladat'
      else if (i.eq.80.or.i.eq.112) then
	 write(*,*)'Prohlizet'
      end if
      end
Pokud máš i GCC, tak ten céčkový soubor jen přihodíš do kompilace
gfortran main.f keys.c -o test
Je to samozřejmě pro Linux, pro jiný systém to třeba přepíše někdo jiný. A nemá smysl, aby to čekání na klávesu valilo v cyklu a místo "getkey" v tomhle případě můžeš použít čekající "waitkey".