![]() |
![]() HP OpenVMS Systemsask the wizard |
![]() |
The Question is: I'm porting some code that we had running on VMS 5.5-2. The original programmer made many calls to SMG$ functions. One such call was made to SMG$SET_BROADCAST_TRAPPING with the parameters 'paste' and 'message'. Now, I understand that 'paste' is the id of a virtual pasteboard created earlier in the program. However, I'm a bit confused on 'message'. I've looked through the on-line help and found that 'message' is an AST routine, but I've been able to find out just what exactly this routine does. Could you point me in the direction of some documentation, that will answer my question. Thanks The Answer is : SMG$SET_BROADCAST_TRAPPING defines an AST routine to be called when a broadcast message is sent to the device to which the specified pasteboard is mapped. What the AST routine does is entirely up to you (the programmer). Typically it will set some kind of flag to indicate to the application that a message has been received. The application may then use SMG$GET_BROADCAST_MESSAGE to retrieve the message and take appropriate action. Note that since you cannot mix AST and non AST level calls to SMG without proper synchronisation, you usually cannot call SMG$GET_BROADCAST_MESSAGE from the AST routine itself. The common design is to set a flag and call SMG$CANCEL_INPUT (the only SMG$ routine you can always call from AST level). This will cancel any SMG$READ_xxx call in progress with a CANCEL status. The application can then check the flags to see what asynchronous event has occurred, action it, then reissue the I/O.
|