ViewPoint Manual
Sample Custom Status Server
ViewPoint Manual—426801-001
D-9
Custom Server Code
?PAGE "SAMPLE^FILE^USAGE"
INT PROC Sample^File^Usage ( Request, Reply );
INT .EXT Request ( Zvpt^Sample^Item^Request^Def ); ! Input
INT .EXT Reply  ( Zvpt^Sample^Item^Reply^Def );  ! Output
BEGIN
-----------------------------------------------------------------------------
--
-- Compute File Usage for this file ......
--
-----------------------------------------------------------------------------
INT(32) Current^File^Size;
INT(32) Maximum^File^Size;
STRUCT .Item^Name    ( Zvpt^Item^Name^Def );
INT   Temp^Fname    [ 0:Fname^Wsz - 1 ];
INT   Internal^File^Name [ 0:Fname^Wsz - 1 ];
INT Length;
INT File^error;
 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, Internal^File^Name,
           Temp^Fname );
 IF Length = 0 THEN RETURN ( Zerr^Stat^No^Such^Object );
 CALL FILEINFO ( , File^Error, Internal^File^Name,,,, Current^File^Size,
        ,,,,,,,,,, Maximum^File^Size );
 IF <> THEN
 BEGIN
 Return^Error^Detail := File^Error;
  RETURN ( Zerr^Stat^Object^Unavailable );
 END ELSE
 BEGIN
  Reply.Z^Maximum^Value := $DFIX ( Maximum^File^Size, 0);
  Reply.Z^Status^Value := $DFIX ( Current^File^Size, 0);
 Reply.Z^Timestamp := Juliantimestamp;
 END;
 RETURN ( Z^All^Ok^Code );
END; ! Sample^File^Usage
?PAGE "SAMPLE^DISK^USAGE"
INT PROC Sample^Disk^Usage ( Request, Reply );
INT .EXT Request ( Zvpt^Sample^Item^Request^Def ); ! Input
INT .EXT Reply  ( Zvpt^Sample^Item^Reply^Def );  ! Output
BEGIN
-------------------------------------------------------------------------------
--
-- Compute Disk Usage or using the INVERSE SIGNIFIANCE flag Disk Free !!!!
--
-------------------------------------------------------------------------------
STRUCT .Item^Name ( Zvpt^Item^Name^Def );
INT .Disk^Name [ 0:Fname^wsz - 1 ];
INT DevType;
INT DevRecSize;
INT(32) Capacity;
INT(32) Free;
INT(32) Numfrag;
INT(32) Biggest;
 Zerow ( Reply );
 Return^Error := 0;
 Return^Error^Detail := 0;
 Item^Name ':=' Request.Z^Item^Name FOR Len^Wsz ( Item^Name ) WORDS;
 Disk^Name ':=' " " & Disk^Name FOR 11 WORDS;
 Disk^Name ':=' Item^Name.Z^Object^Name FOR 24 BYTES;
 CALL DEVICEINFO ( Disk^Name, DevType, DevRecSize );
 IF DevType.<4:9> <> 3 THEN RETURN ( Zerr^Stat^No^Such^Object );
 Return^Error^Detail := DISKINFO ( Disk^Name, Capacity,
              Free, Numfrag, Biggest );
 IF Return^Error^Detail <> 0 THEN
 BEGIN
  RETURN ( Zerr^Stat^Object^Unavailable );
 END;
 Reply.Z^Maximum^Value := $DFIX ( Capacity * 2048D , 0 );
 Reply.Z^Status^Value := $DFIX ( ( Capacity * 2048D - Free * 2048D ) , 0 );
 Reply.Z^Timestamp := Juliantimestamp;










