Send requests using a buffer list

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:

  1. 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
  2. Decrement RECLEN by the number of entries preceding the entry containing the current buffer address.
    RPLRLEN = RPLRLEN - (RPLAREA - saved
    "old" RPLAREA value)
  3. 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
  4. 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.