File Utility Program (FUP) Management Programming Manual

FUP Programmatic Interface
File Utility Program (FUP) Management Programming Manual523322-001
2-7
Sending a Buffer to FUP (TAL Example)
Sending a Buffer to FUP (TAL Example)
Figure 2-3 shows an example of a TAL integer procedure that sends and receives a
buffer using the WRITEREADX procedure.
After FUP returns the buffer, the TAL integer procedure in this example checks for a
file-system error and verifies that the entire buffer was read.
Figure 2-3. TAL Procedure to Send a Buffer to FUP
!---------------------------------------------------------
! Procedure SEND^TO^SPI^PROCESS sends and receives a buffer
! using the WRITEREAD procedure. The FUP process must al-
! ready be started and opened. The buffer must be at least
! ZFUP^VAL^BUFLEN bytes. This procedure returns 0 if it is
! successful, or an error number if it is not successful.
!----------------------------------------------------------
INT PROC SEND^TO^SPI^PROCESS (file^num, buffer);
INT file^num; ! FUP server process file number
! SPI message buffer
STRUCT .EXT buffer (ZFUP^DDL^MSG^BUFFER^DEF);
BEGIN
! Local definitions
INT .EXT buffer^header (ZSPI^DDL^HEADER^DEF) = buffer;
INT usedlen,
initial^buffer^position;
! Get the used length token value in usedlen
CALL SSGETTKN (buffer, ZSPI^TKN^USEDLEN, usedlen);
! Send the buffer to FUP and check for a file-system error
CALL WRITEREADX (file^num, buffer, usedlen,
ZFUP^VAL^BUFLEN);
IF < THEN RETURN io^error (file^num);
! Check that all of the buffer was read
CALL SSGETTKN (buffer, ZSPI^TKN^USEDLEN, usedlen);
IF usedlen > ZFUP^VAL^BUFLEN THEN RETURN an^error;
! Reset length, position, and last error
buffer^header.Z^BUFLEN := ZFUP^VAL^BUFLEN;
initial^buffer^position := ZSPI^VAL^INITIAL^BUFFER;
CALL SSPUTTKN (buffer, ZSPI^TKN^INITIAL^POSITION,
initial^buffer^position);
CALL SSPUTTKN (buffer, ZSPI^TKN^CLEARERR);
RETURN 0; ! Return with no errors
END; ! End of procedure
Note. For more information on creating checks, see Receiving and Decoding a Response
Buffer on page 2-13.