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;