Guardian Programmer's Guide

Table Of Contents
Managing Time
Guardian Programmer’s Guide 421922-014
18 - 9
Working With 64-Bit Julian Timestamps
ITEM^LIST;
INT LENGTH,
NUMBER^OF^ITEMS,
RESULTMAX,
ERROR,
NODE^NAME[0:3],
NODE^NUMBER,REMOTE^ERROR,
.S^PTR;
FIXED TIME^OF^LAST^UPDATE = RESULT;
FIXED TIME^BEFORE,
REMOTE^TIME,
TIME^AFTER,
DELAY^TIME,
REMOTE^GMT,
TIME^SINCE^LAST^UPDATE;
STRING FILENAME[0:ZSYS^VAL^LEN^FILENAME - 1];
.
.
!Get time of last update:
FILENAME ':=' "\SYS2.$APPLS.FILES.DFILE" -> @S^PTR;
LENGTH := @S^PTR '-' @FILENAME;
ITEM^LIST := GET^TIME^OF^LAST^UPDATE;
NUMBER^OF^ITEMS := 1;
RESULTMAX := 8;
ERROR := FILE_GETINFOLISTBYNAME_(FILENAME:LENGTH,
ITEMLIST,NUMBER^OF^ITEMS,
RESULT,RESULTMAX);
IF ERROR <> 0 THEN CALL ERROR^HANDLER;
!Get remote node number:
NODE^NAME ':=' "\SYS2 ";
CALL LOCATESYSTEM(NODE^NUMBER,
NODE^NAME);
!Get time on local node:
TIME^BEFORE := JULIANTIMESTAMP(SINCE^COLD^LOAD);
!Get time on remote node:
REMOTE^TIME := JULIANTIMESTAMP(CURRENT^GMT,
!time^update^id!,
REMOTE^ERROR,NODE^NUMBER);
IF REMOTE^ERROR <> 0 THEN CALL ERROR^HANDLER;
!Get time again on local node:
TIME^AFTER := JULIANTIMESTAMP(SINCE^COLD^LOAD);
!Compute remote timestamp:
IF TUID1 = TUID2 THEN
BEGIN
DELAY^TIME := TIME^AFTER - TIME^BEFORE;
REMOTE^GMT := REMOTE^TIME + (DELAY^TIME/2F);