[next] [previous] [contents]
Example 20-4: Program Displaying the $QIOW System Service
Routine
10 !Declare SYS$QIOW as an EXTERNAL FUNCTION
EXTERNAL LONG FUNCTION SYS$QIOW(,WORD BY VALUE,LONG BY VALUE,WORD DIM() &
BY REF,,,STRING BY REF,LONG BY VALUE,, &
LONG BY VALUE,,)
!Declare SYS$ASSIGN as an EXTERNAL FUNCTION
EXTERNAL LONG FUNCTION SYS$ASSIGN(STRING,WORD,,)
EXTERNAL LONG CONSTANT IO$_WRITEVBLK
!Declare the parameters
DECLARE STRING my_term, out_str, &
WORD term_chan, counter, stat_block(3),&
LONG ret_status, msg_len, car_cntrl
out_str = "Successful $QIOW output!"
my_term = "SYS$COMMAND"
msg_len = LEN(out_str)
car_cntrl = 32%
!Assign a channel to the terminal
ret_status = SYS$ASSIGN(my_term, term_chan, ,)
CALL LIB$STOP(ret_status BY VALUE) IF (ret_status AND 1%) = 0%
!Output the message four times
FOR counter = 1% to 4%
ret_status = SYS$QIOW(,term_chan BY VALUE, IO$_WRITEVBLK BY VALUE, &
stat_block() BY REF,,,out_str BY REF, &
msg_len BY VALUE,,car_cntrl BY VALUE,,)
CALL LIB$STOP(ret_status BY VALUE) IF (ret_status AND 1%) = 0%
CALL LIB$STOP(stat_block(0%) BY VALUE) &
IF (stat_block(0%) and 1%) = 0%
NEXT counter
END