EMS Manual

Retrieving Event Messages Programmatically
EMS Manual426909-005
4-11
Log File Position
greenwich^time := CONVERTTIMESTAMP(local^time, 2);
! Initialize spibuffer for distributor CONTROL command
! message
IF (error := SSINIT(spibuffer,
ZEMS^VAL^BUFLEN,
ZEMS^VAL^SSID,
ZSPI^VAL^CMDHDR,
ZEMS^CMD^CONTROL)) THEN ...
! Place token--with time token-value--in spibuffer
spi^error := SSPUTTKN(spibuffer,
ZEMS^TKN^GMTTIME,
greenwich^time);
! Handle any error from SPI procedure
IF spi^error <> ZSPI^ERR^OK THEN ...
! Determine how many bytes of spibuffer have been used
spi^error := SSGETTKN(spibuffer,
ZSPI^TKN^USEDLEN,
buffer^length);
! And send the command message
CALL WRITEREAD(fnum,
spibuffer,
buffer^length,
ZEMS^VAL^BUFLEN,
count^read);
IF <> THEN ...
! 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);
! Check if anything wrong with response buffer
IF spi^error <> ZSPI^ERR^OK THEN ...
! Buffer ok. Was distributor CONTROL command 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 ...
! Log file positioned !