Returns how much of the Universal Buffer currently contains data.
The $Buffer_Used function returns the following values:
|Value returned is...
|Universal Buffer is not in use or MQ/204 is not linked in.
MODIFY BUFFER CLEAR
|At the start of a request running in an APSY subsystem with
|Same as the value at the end of the previous request, or 0, if this is the first request.
|After an MQGET
|Number of bytes of the message.
|After an MQGET that returned a truncated message or failed
|Less than the actual message length.
|After a successful MQGET, but data was truncated when copying into the target %variable or image truncated
|Greater than the length of data in the target.
|After an MQPUT/MQPUT1 %variable/image
|Number of bytes copied into the BUFFER area.
WRITE IMAGE ON BUFFER
|Point written to by the WRITE IMAGE, if data was written past the previous $Buffer_Used: otherwise, it is unchanged.
MODIFY BUFFER NOPRESERVE
MODIFY BUFFER PRESERVE
|New size of the BUFFER area, if the size was reduced, or unchanged if the size stayed the same or increased.
|Any other SOUL or MQ/204 statement
Most operations that access the BUFFER area, implicitly or explicitly, only access the buffer up to the $Buffer_Used point. For example, when executing:
READ IMAGE FROM BUFFER POSITION=%pvariable MAXLEN=%lvariable
Only data up to the $Buffer_Used position is returned to the image. If the starting position plus the length refers to data past the $Buffer_Used position, the full length requested is not returned, because not that much data is available.
The only exception to this rule is when executing the following:
WRITE IMAGE ON BUFFER POSITION=%pvariable MAXLEN=%lvariable
The starting position plus the length can refer to the part of the BUFFER area past the $Buffer_Used position. The data is copied to the nominated part of the BUFFER area, and $Buffer_Used is adjusted accordingly.