Enabling CTRL+C and CTRL+BREAK by Using PeekcharQQ (123687)



The information in this article applies to:

  • Microsoft FORTRAN PowerStation for MS-DOS 1.0
  • Microsoft FORTRAN PowerStation for MS-DOS 1.0a

This article was previously published under Q123687

SUMMARY

To break out of a long running program, it is customary to use CTRL+C or CTRL+BREAK. However, MS-DOS only checks for CTRL+C or CTRL+BREAK when processing keyboard input. If there is no keyboard input in a loop (it contains only calculations), the program is likely to ignore CTRL+C and CTRL+BREAK.

The PeekcharQQ() function performs keyboard input processing and should not significantly slow down your program, if used cautiously.

MORE INFORMATION

When you call PeekcharQQ() in a long loop, MS-DOS checks the keyboard for input. If CTRL+C or CTRK+BREAK was pressed, the program terminates.

In the sample code in this article, PeekcharQQ() is called thousands of times a second. In an actual application, this would noticeably slow the program. It is usually sufficient to place calls to PeekcharQQ() so that it is called at most a few times a second.

NOTE: Sometimes the following simple code will break on a CTRL+C even without the call to PeekcharQQ(). However, more complex code will require adding calls to PeekcharQQ() to allow CTRL+C or CTRL+BREAK processing.

Sample Code

C Compile Options needed: none

      include'flib.fi'
      include'flib.fd'

      logical l

      do i=1,1000000
         x = sqrt(i)
         l = peekcharqq()
      end do
      end
				

Modification Type:MajorLast Reviewed:10/2/2003
Keywords:KB123687