If a buffer list (BUFFLST) is being used, the application
program must modify the APPCCMD AREA field to point to the entry that
was being processed at the time of the shortage. That entry might
need to be modified so that the address field points to RPL6STBF plus
RPL6STDS, with the length field in the entry modified to reflect the
amount of data remaining.
- RPLAREA
- Indicates the beginning of the buffer list.
- RECLEN
- Indicates the size of the buffer list.
- RPL6STBF
- Indicates the address of the current buffer.
- RPL6STDS
- Indicates the displacement into the current buffer.
To continue processing the data:
- Point RPLAREA to the entry that contains the current buffer address.
Save "old" RPLAREA value
Find buffer list entry where (BLEAREA = RPL6STBF)
RPLAREA = address of found buffer list entry
- Decrement RECLEN by the number of entries preceding the entry
containing the current buffer address.
RPLRLEN = RPLRLEN - (RPLAREA - saved
"old" RPLAREA value)
- Update the "new" first entry in the updated buffer list so
that the pointer to the buffer is equal to the current pointer plus
RPL6STDS.
BLEAREA = BLEAREA + RPL6STDS
- Update the length field in the first buffer list entry so that
the length is equal to the current length minus RPL6STDS.
BLERLEN = BLERLEN - RPL6STDS
Use the APPCCMD CONTROL=SEND, QUALIFY=DATA macroinstruction
with the AREA and RECLEN fields updated appropriately.
If the APPCCMD was one of the APPCCMD CONTROL=DEALLOC
macroinstructions for abnormal terminations, use the APPCCMD CONTROL=DEALLOC,
QUALIFY=DATAFLU macroinstruction with the RPL fields updated. Or deallocate
the conversation with one of the abnormal deallocation macroinstructions
or the APPCCMD CONTROL=REJECT, QUALIFY=CONV macroinstruction.
Note: A logical record length error can result if the application
program issues an APPCCMD other than the macroinstructions suggested.