> -----Original Message-----
> From: IBM Mainframe Assembler List <ASSEMBLER-LIST@LISTSERV.UGA.EDU>
> On Behalf Of David S.
> Sent: Saturday, November 11, 2023 1:59 PM
> To: ASSEMBLER-LIST@LISTSERV.UGA.EDU
> Subject: Is True Skip-Sequential Processing Possible with RECFM=FB,DSORG=PS?
> 
> To help resolve a question posted to a LinkedIn group I manage:
> www.linkedin.com/feed/update/urn:li:groupPost:910927-
> 7128598004344786944
> ... I'd like to find out if there's any way to achieve *true* Skip-Sequential
> processing with a Fixed Block Sequential File with a fairly short record 
> length (i.e.
> DCB=(DSORG=PS,RECFM=FB,LRECL=80)?

You don't say what the block size is. You don't say what the access methos is 
QSAM/BSAM 

> For example: Begin sequential processing at record number 100, *without*
> having to read the first 99 records.

Probably not. The data transfer is driven/implemented by a "channel program" 
and from what I remember a channel program can only read "blocks" from a disk, 
not parts of a block. So if the block size is 8000 bytes each read reads 100 80 
byte records. The POINT  MACRO does allow positioning.....

However this is a more complex question. Whilst with an "OS" type operating 
system allows an arbitrary physical record size to be defined for a dataset, on 
any current disk type, this is achieved by mapping this onto fixed size blocks 
which are what is actually written to the disk. So reading an 8k block will 
generally involve reading multiple blocks from the disk media.... 

> Note: We already know certain VSAM formats can do this, but the file in
> question is a DSORG=PS *Sequential* file, *not* VSAM. 

Well again VSAM only reads BLOCKS so if we are talking large block sizes, you 
can only position to the block containing the record you want.

> This is a rock-solid
> requirement and cannot be changed. We also already know how certain utilities
> such as SORT and REXX can *mimic* skip-sequential functionality by
> *discarding* unwanted records until the specified record number is reached.
> This is a likewise rock-solid requirement. Sequential processing
> *must* begin at specified starting point and there can be *no* reading of any
> records prior to that point.

> My gut feeling is it *cannot* be done - at least not with RECFM=FB.  It
> *might* be possible with RECFM=F, but efficiency would then be so
> compromised it would  probably outweigh any advantage from *true* skip-
> sequential processing.

Like I say POINT can do this but you are then limited to BSAM...
... YOU DIDN'T SAY QSAM ONLY NOT VSAM....

Dave

Reply via email to