EMS Manual
Retrieving Event Messages Programmatically
EMS Manual—426909-005
4-14
Obtaining an Event Message (GETEVENT)
! Save an image of this buffer for later GETEVENT commands
spibuffer^image ':=' spibuffer for ZEMS^VAL^BUFLEN Bytes;
! Determine how many bytes of spibuffer have been used
spi^error := SSGETTKN(spibuffer,
 ZSPI^TKN^USEDLEN,
 buffer^length);
! Handle any error from SPI procedure
IF spi^error <> ZSPI^ERR^OK THEN ...
! And send the command message
CALL WRITEREAD(fnum,
 spibuffer,
 buffer^length,
 ZEMS^VAL^BUFLEN,
 count^read);
IF <> THEN ... ! Handle the error
! The SPI response is now in spibuffer.
! Reset buffer length to what you declared for spibuffer
spi^error := SSPUTTKN(spibuffer,
 ZSPI^TKN^RESET^BUFFER,
 ZEMS^VAL^BUFLEN);
! See if anything wrong with response buffer
IF spi^error <> ZSPI^ERR^OK THEN ...
! Buffer ok. Was distributor command message ok?
spi^error := SSGETTKN(spibuffer,
 ZSPI^TKN^RETCODE,
 error,
 1);
! Handle any error from SPI procedure
IF spi^error <> ZSPI^ERR^OK THEN ...
IF error = 0 THEN
 BEGIN
 ! Command completed OK, but might have reached EOF
 IF SSGETTKN(spibuffer,
 ZEMS^TKN^EVENT,
 emsbuffer, !an integer array
 1) = ZSPI^ERR^OK THEN
 BEGIN
 ! Event message returned, stored in emsbuffer ...
 END ELSE
 BEGIN
 ! EOF reached, no event message returned
 END;










