File Utility Program (FUP) Management Programming Manual

FUP Commands and Responses
File Utility Program (FUP) Management Programming Manual523322-001
3-8
CHECKSUM Command
index, ! Index variable
number^returned; ! Tokens returned
INT(32) token^code; ! Token codes
! Variables to extract a map token from the buffer
INT .checksum^par^def
[0: (ZFUP^MAP^PAR^CHECKSUM^WLN - 1)]
:= ZFUP^MAP^PAR^CHECKSUM;
STRUCT .params (ZFUP^DDL^PAR^CHECKSUM^DEF);
STRUCT .fup^ssid (ZSPI^DDL^SSID^DEF); ! FUP SSID
numberdone := 0D; ! Set files processed to zero
! Format buffer for CHECKSUM command
fup^ssid ':=' [ZSPI^VAL^TANDEM,ZSPI^SSN^ZFUP,
ZFUP^VAL^VERSION];
CALL SSINIT (buffer, ZFUP^VAL^BUFLEN, fup^ssid,
ZSPI^VAL^CMDHDR, ZFUP^CMD^CHECKSUM,
ZFUP^OBJ^FILE);
! Put parameters into buffer
CALL SSPUTTKN (buffer, ZFUP^TKN^FILE, file);
CALL SSNULL (checksum^par^def, params);
params.zpart^only := partonly;
CALL SSPUT (buffer, checksum^par^def, params);
! Ask FUP to return as many responses as will fit in buffer
token^val := -1;
CALL SSPUTTKN (buffer, ZSPI^TKN^MAXRESP, token^val);
! Check for SPI error
CALL SSGETTKN (buffer, ZSPI^TKN^LASTERR, spi^error);
IF spi^error THEN RETURN ss^error (spi^error);
! Save the buffer for continuation requests
save^buffer ':=' buffer FOR 1 ELEMENTS;
done := FALSE;
WHILE NOT done DO
BEGIN
! Send request to FUP
error := send^to^spi^process (fup^file^number, buffer);
IF error THEN RETURN error;
! Index through responses
token^code := ZSPI^TKN^DATALIST;
spi^error := SSGETTKN (buffer, ZSPI^TKN^COUNT,
token^code, 1, number^returned);
Figure 3-1. TAL Example of a CHECKSUM Procedure (page 2 of 3)