[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