それはおそらく、少し複雑なソリューションですが、1つのオプションncurses
ライブラリを使用することです - http://genepi.qimr.edu.au/staff/davidD/以下
は、リンク先のページからダウンロードできるプログラムtestcurs.f90
の変形例です。プログレッシブに更新されている進捗メッセージが表示されます。それをテストするために、あなたもncurses.f90
モジュールが必要になりますし、その後
gfortran -c ncurses.f95
gfortran -o test testcurs.f95 -lncurses
例、すなわち、-lncurses
とリンク(単にプログラム自体を示し、testcurs.f90
はinitTest
などの定義も含まれています):
program testcurses
use curses
use commands
type (C_PTR) :: iwin = C_NULL_PTR
integer (C_INT) :: key
integer :: istat, new_option=1, old_option=0
CHARACTER(LEN=1024) :: msg
call initTest(iwin, istat)
if (istat /= 0) then
write(*,'(a)') 'ERROR: initscr failed!'
stop
end if
ierr = wbkgd(iwin, curses_a_reverse)
ierr = erase()
ierr = attrset(curses_a_bold)
DO i = 10, 100, 10
WRITE(msg, '(''Progress '', I0, ''%'')') i
ierr = mvaddstr(20, 20, TRIM(msg) // C_NULL_CHAR)
ierr = refresh()
CALL SLEEP(1)
END DO
key = getch()
ierr = delwin(iwin)
ierr = endwin()
end program testcurses
@francescalusが正しく記述しているように、解決策は参考リンクに記載されています。しかし、最も簡単なものは選択されたものではありません。 @tony rollettによって与えられたものはより便利です。 '(A、i、A \)')char(13)// '反復'、iter、 '精度'、正確。 – MuKeP