[Search for users]
[Overall Top Noters]
[List of all Conferences]
[Download this site]
Title: | DECWINDOWS 26-JAN-89 to 29-NOV-90 |
Notice: | See 1639.0 for VMS V5.3 kit; 2043.0 for 5.4 IFT kit |
Moderator: | STAR::VATNE |
|
Created: | Mon Oct 30 1989 |
Last Modified: | Mon Dec 31 1990 |
Last Successful Update: | Fri Jun 06 1997 |
Number of topics: | 3726 |
Total number of notes: | 19516 |
3664.0. "SMG, & debugger" by TAV02::DORON (Doing my BEST !!!) Thu Nov 15 1990 01:18
Hi,
I am getting a strange behaviuor while running and SMG program with DECwindows
debugger. I have enclosed a simple fortran SMG program that can reproduce the
behaviuor in the following way:
When running ($R/debug SMG) it works fine. When doing it in synchronous
SUBPROCESS, ($Spawn R/debug SMG) it also works O.K.! But when issuing an
asynchronous subporcess command ($Spawn/Nowait R/debug SMG), the process hungs
(and I could not say if it's the program or the debugger) when the
SMG$CREATE_VIRTUAL_KEYBOARD is executed. The problem occurd on VS3100 running
VMS 5.3-1.
Any help will be appreciated,
*-Doron-*
Enclosed:
program scroll_display
C This program puts up a large virtual display. Since the pasteboard
C can only contain a portion of the display at any one time, it is
C necessary to scroll the display to see all parts of it. To do this
C use the arrow keys.
implicit integer (a-z)
C This output_array is created to load the virtual display.
character*5 output_array(52,26)
character*130 out_line
include '($smgdef)'
do i=1,52
do j=1,26
output_array(i,j)(1:1) = char(64+i)
output_array(i,j)(2:2) = char(64+i)
output_array(i,j)(3:3) = char(64+j)
output_array(i,j)(4:4) = char(64+j)
output_array(i,j)(5:5) = ' '
end do
end do
status = smg$create_pasteboard( pid,,,)
if (.not. status) call lib$stop(%val(status))
status = smg$create_virtual_display( 52, 130, vdisp, , , )
if (.not. status) call lib$stop(%val(status))
do i=1,52
C Use an internal write to load the character variable used to write to
C the virtual display.
write (out_line,10) (output_array(i,j),j=1,26)
10 format (26a)
status = smg$put_line(vdisp,out_line,,,,,,)
if (.not.status) call lib$stop(%val(status))
end do
status = smg$paste_virtual_display(vdisp, pid, 1, 1)
if (.not. status) call lib$stop(%val(status))
status = smg$create_virtual_keyboard(keyid,,,,)
if (.not.status) call lib$stop(%val(status))
line = 1
column = 1
100 status = smg$set_cursor_abs(vdisp, line, column)
if (.not.status) call lib$stop(%val(status))
C Since no prompt string is specified, the display id is left blank.
C Enter an upper case Q (for quit) to terminate the program.
status = smg$read_keystroke(keyid,term_code,,,,,)
if (.not.status) call lib$stop(%val(status))
if (term_code .eq. smg$k_trm_up) then
if (line .gt. 1) then
line = line - 1
else
status = smg$ring_bell(vdisp,1)
if (.not. status) call lib$stop(%val(status))
endif
elseif (term_code .eq. smg$k_trm_down) then
if (line .lt. 52 ) then
line = line + 1
else
status = smg$ring_bell(vdisp,1)
if (.not. status) call lib$stop(%val(status))
endif
elseif (term_code .eq. smg$k_trm_left) then
if (column .gt. 1) then
column = column - 5
else
status = smg$ring_bell(vdisp,1)
if (.not. status) call lib$stop(%val(status))
endif
elseif (term_code .eq. smg$k_trm_right) then
if (column .lt. 126) then
column = column + 5
else
status = smg$ring_bell(vdisp,1)
if (.not. status) call lib$stop(%val(status))
endif
elseif (term_code .eq. smg$k_trm_uppercase_q) then
goto 999
endif
status = smg$move_virtual_display(vdisp, pid, 2-line, 2-column, )
if (.not.status) call lib$stop(%val(status))
goto 100
999 end
T.R | Title | User | Personal Name | Date | Lines |
---|
3664.1 | Seems fixed in 5.4 | TLE::ZANZERKIA | | Wed Nov 21 1990 11:41 | 8 |
| I just tried your program on VMS 5.4 debugger. It seems to run fine so
wait for the next release.
Do send a QAR if you still have a problem after 5.4
thanks
Robert
(Debug developer)
|