Example 5: skip-sequential insertion (KSDS, variable-length RRDS)

In this example, one PUT macro is used to insert multiple fixed-length, 100-byte records. Records are to be moved asynchronously from a work area.
OUTPUT   ACB   MACRF=(KEY,SKP,                                        x
         .     OUT)
         .
         GENCB BLK=RPL,         Generate 5 request parameter lists    x
               COPIES=5,        at execution.                         x
               ACB=OUTPUT,                                            x
               AREALEN=100,                                           x
               OPTCD=(KEY,SKP,                                        x
               ASY,NUP,MVE),                                          x
               RECLEN=100
 
         LTR   15,15
         BNZ   CHECKO
Calculate length of each list and use register notation with the MODCB macro to complete each list:
         MODCB RPL=(2),                                                x
               AREA=(3),                                               x
               NXTRPL=(4)
         LTR   15,15
         BNZ   CHECKO
Increase the value in each register and repeat the MODCB until all 5 request parameter lists have been completed. The last time, register 4 must be set to 0:
          .
LOOP     ...                    Restore address of first list in       x
                                register 2. Build 5 records in WORK.
 
         PUT   RPL=(2)          Register 2 points to the first RPL in  x
                                the chain.  The 5 records in WORK      x
                                are stored with this one PUT request.
         LTR   15,15
         BNZ   NOTACCEP
         .
         CHECK RPL=(2)
         LTR   15,15
         BNZ   ERRO
         B     LOOP
CHECKO   ...                    Generation or modification failed.
 
NOTACCEP ...
 
ERROR    ...                    Display the feedback field in each     x
                                RPL to determine which one had error.
 
WORK     DS    CL500            Contains five 100-byte work areas.

You give no search argument for storage: VSAM knows the position of the key field in each record and extracts the key from it. Skip-sequential insertion differs from keyed-direct insertion in the sequence in which records may be inserted (ascending non-consecutive sequence versus random sequence) and in performance.

With skip-sequential insertion, if you insert two or more records into a control interval, VSAM does not write the contents of the buffer to direct-access storage until you have inserted all the records. With direct insertion, VSAM writes the contents of the buffer after you have inserted each record.