ViewPoint Manual
Sample Custom Status Server
ViewPoint Manual—426801-001
D-8
Custom Server Code
--
-------------------------------------------------------------------------------
FIXED Primary^Process^Time := 0F;
FIXED Backup^Process^Time := 0F;
INT   .Processname [ 0:Fname^Wsz - 1 ];   ! internal form of name.
INT .Temp^Fname [ 0:Fname^Wsz - 1 ];   ! temp file name.
STRUCT .Item^Name ( Zvpt^Item^Name^Def );
INT Cpu^Pin;
INT .PPD[0:8];
INT Length;
 Zerow(Reply);
 Return^Error := 0;
 Return^Error^Detail := 0;
 Item^Name ':=' Request.Z^Item^Name
       FOR Len^Wsz ( Item^Name ) WORDS;
 CALL PROGRAMFILENAME ( Temp^Fname );
 Length := FNAMEEXPAND ( Item^Name.Z^Object^Name, Processname, Temp^Fname );
 IF Length < 2 OR Length > 14
  THEN RETURN ( Zerr^Stat^No^Such^Object );
 Temp^Fname ':=' " " & Temp^Fname FOR 7;
 IF Processname[4] <> Temp^Fname FOR 8
  THEN RETURN ( Zerr^Stat^No^Such^Object );
 PPD ':=' Processname FOR 9 WORDS;
 CALL LOOKUPPROCESSNAME (PPD);
 IF <> THEN RETURN ( Zerr^Stat^Object^Unavailable );
 IF PPD <> 0 THEN Cpu^Pin := PPD[3];
 IF ( Primary^Process^Time := Processtime ( Cpu^Pin ) ) < 0F
   THEN RETURN ( Zerr^Stat^Object^Unavailable )
   ELSE IF PPD[4] <> 0 THEN
   BEGIN
    Cpu^Pin := PPD[4];
    IF ( Backup^Process^Time := Processtime ( Cpu^Pin ) ) < 0F
    THEN Backup^Process^Time := 0F;
   END;
 Reply.Z^Status^Value := Primary^Process^Time + Backup^Process^Time;
 Reply.Z^Timestamp := Juliantimestamp;
 RETURN ( Z^All^Ok^Code );
END; ! Sample^Process^Busy
?PAGE "SAMPLE^PROCESS^COUNT"
INT  PROC Sample^Process^Count ( Request, Reply );
INT .EXT Request ( Zvpt^Sample^Item^Request^Def ); ! Input
INT .EXT Reply  ( Zvpt^Sample^Item^Reply^Def );  ! Output
BEGIN
-------------------------------------------------------------------------------
--
-- Check to see if a process exist  Usefull    May be ...
--
-------------------------------------------------------------------------------
STRUCT .Item^Name ( Zvpt^Item^Name^Def );
INT   .Processname [ 0:Fname^Wsz - 1 ];   ! internal form of name.
INT   .Temp^Fname [ 0:Fname^Wsz - 1 ];   ! temp file name.
INT Cpu^Pin;
INT .PPD[0:8];
INT Length;
 Zerow ( Reply );
 Return^Error := 0;
 Return^Error^Detail := 0;
 Item^Name ':=' Request.Z^Item^Name
       FOR Len^Wsz ( Item^Name ) WORDS;
 CALL PROGRAMFILENAME ( Temp^Fname );
 Length := FNAMEEXPAND ( Item^Name.Z^Object^Name, Processname, Temp^Fname );
 IF Length < 2 OR Length > 14
  THEN RETURN ( Zerr^Stat^No^Such^Object );
 Temp^Fname ':=' " " & Temp^Fname FOR 7;
 IF Processname[4] <> Temp^Fname FOR 8
  THEN RETURN ( Zerr^Stat^No^Such^Object );
 PPD ':=' Processname FOR 9 WORDS;
 CALL LOOKUPPROCESSNAME ( PPD );
 IF <> THEN RETURN ( Zerr^Stat^Object^Unavailable );
 Reply.Z^Maximum^Value := 1F;
 Reply.Z^Status^Value := 1F;
 Reply.Z^Timestamp := Juliantimestamp;
 RETURN ( Z^All^Ok^Code );
END; ! Sample^Process^Count










