ViewPoint Manual

Sample Custom Status Server
ViewPoint Manual426801-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;