Re: Is True Skip-Sequential Processing Possible with RECFM=FB,DSORG=PS?

2023-11-13 Thread Seymour J Metz
What is a physical block? Even without taking into accounnt that contemporary 
DASD subsystems are cached, on old CKD DASD you could read any of count, key 
and data without reading the others.


-- 
Shmuel (Seymour J.) Metz
http://mason.gmu.edu/~smetz3
עַם יִשְׂרָאֵל חַי




From: IBM Mainframe Assembler List  on behalf 
of Bob Raicer 
Sent: Monday, November 13, 2023 5:59 PM
To: ASSEMBLER-LIST@LISTSERV.UGA.EDU
Subject: Re: Is True Skip-Sequential Processing Possible with RECFM=FB,DSORG=PS?

There have been a few posts in this thread that more or less stated
that only complete physical blocks could be read into storage from a
device.

This is not strictly true.

There is the obvious case of truncation, where the number of bytes
the device has been requested to transfer is less than the actual
physical size of the block.

For CCW types of I/O operations (as opposed to TCW types) there is
also the possibility of exploiting the "Skip" feature of the
channel.

Bit 35 (format-0 CCWs) or bit 11 (format-1 CCWs) of the CCW is
referred to as the Skip Flag Bit.  When this bit is one, the channel
suppresses the transfer of data into storage.  This flag bit is
valid ONLY for read, read-backward, sense ID, or sense operations.
Note that the storage device still engages with the data transfer to
the channel and all of the data error checking functions (such as
ECC) still occur.  It is the channel that suppresses the storage of
data into memory.  When combined with Data Chaining this can be used
to store subsets of a data block into potentially discontiguous
areas of memory.

I do not believe that any of the access methods exploit this,
however.

OPEN/CLOSE/EOV at one time used this feature when processing
Standard User Label tapes.  The interesting portion of the channel
program was a Read with the Skip Bit on, command chained to a
Transfer In Channel back to the Read.  When no errors occurred, the
channel program ended with Unit Exception status when the Tape Mark
at the end of the label set was encountered.

Bob


Re: Is True Skip-Sequential Processing Possible with RECFM=FB,DSORG=PS?

2023-11-13 Thread Paul Gilmartin

On 11/13/23 15:59:45, Bob Raicer wrote:

There have been a few posts in this thread that more or less stated
that only complete physical blocks could be read into storage from a
device.

This is not strictly true.> 

We don't know the OP's objective: performance, security, or other.


--
gil


Re: Is True Skip-Sequential Processing Possible with RECFM=FB,DSORG=PS?

2023-11-13 Thread Bob Raicer

There have been a few posts in this thread that more or less stated
that only complete physical blocks could be read into storage from a
device.

This is not strictly true.

There is the obvious case of truncation, where the number of bytes
the device has been requested to transfer is less than the actual
physical size of the block.

For CCW types of I/O operations (as opposed to TCW types) there is
also the possibility of exploiting the "Skip" feature of the
channel.

Bit 35 (format-0 CCWs) or bit 11 (format-1 CCWs) of the CCW is
referred to as the Skip Flag Bit.  When this bit is one, the channel
suppresses the transfer of data into storage.  This flag bit is
valid ONLY for read, read-backward, sense ID, or sense operations.
Note that the storage device still engages with the data transfer to
the channel and all of the data error checking functions (such as
ECC) still occur.  It is the channel that suppresses the storage of
data into memory.  When combined with Data Chaining this can be used
to store subsets of a data block into potentially discontiguous
areas of memory.

I do not believe that any of the access methods exploit this,
however.

OPEN/CLOSE/EOV at one time used this feature when processing
Standard User Label tapes.  The interesting portion of the channel
program was a Read with the Skip Bit on, command chained to a
Transfer In Channel back to the Read.  When no errors occurred, the
channel program ended with Unit Exception status when the Tape Mark
at the end of the label set was encountered.

Bob


Re: Is True Skip-Sequential Processing Possible with RECFM=FB,DSORG=PS?

2023-11-13 Thread Ed Jaffe

On 11/13/2023 7:23 AM, Schmitt, Michael wrote:

As long no one ever uses DISP=MOD

...or checkpoints. Checkpoints can cause short blocks to be written.


What about CLOSE TYPE=T? Would that flush the current block?

--
Phoenix Software International
Edward E. Jaffe
831 Parkview Drive North
El Segundo, CA 90245
https://www.phoenixsoftware.com/



This e-mail message, including any attachments, appended messages and the
information contained therein, is for the sole use of the intended
recipient(s). If you are not an intended recipient or have otherwise
received this email message in error, any use, dissemination, distribution,
review, storage or copying of this e-mail message and the information
contained therein is strictly prohibited. If you are not an intended
recipient, please contact the sender by reply e-mail and destroy all copies
of this email message and do not otherwise utilize or retain this email
message or any or all of the information contained therein. Although this
email message and any attachments or appended messages are believed to be
free of any virus or other defect that might affect any computer system into
which it is received and opened, it is the responsibility of the recipient
to ensure that it is virus free and no responsibility is accepted by the
sender for any loss or damage arising in any way from its opening or use.


Re: Is True Skip-Sequential Processing Possible with RECFM=FB,DSORG=PS?

2023-11-13 Thread Seymour J Metz
At one time there was a component called Actual Block Processor that was used 
both by VSAM and paging, and the paging data sets were CI format.  I have no 
idea how much of that, if any, remains in z/OS, but essentially my question was 
whether pages were now stored in 4 KiB physical records.


--
Shmuel (Seymour J.) Metz
http://mason.gmu.edu/~smetz3
עַם יִשְׂרָאֵל חַי




From: IBM Mainframe Assembler List  on behalf 
of Bob Raicer 
Sent: Monday, November 13, 2023 2:14 PM
To: ASSEMBLER-LIST@LISTSERV.UGA.EDU
Subject: Re: Is True Skip-Sequential Processing Possible with RECFM=FB,DSORG=PS?

A PDSE is essentially a form of VSAM Linear, where the physical data
set is a collection of 4K-byte blocks.  It does not have the notion
of CA's and CI's like other VSAM data sets.  The notion of BLKSIZE
is synthesized and mapped onto the internal PDSE structures; the
BLKSIZE value is not the physical unit of transfer size as is the
typical case for a traditional Physical Sequential data set.

Here is a URL for a SHARE presentation that provides a nice
explanation of how a PDSE is put together:

https://share.confex.com/share/124/webprogram/Handout/Session16956/PDSE%20Nuts%20and%20Bolts.pdf

Bob

On 2023-11-13 7:48 AM, Seymour J Metz wrote:
>
> Does anybody know whether CI size = block size for PDSE and zFS (linear) data 
> sets? VSAM used to use multiple blocks for a CI.
>
>
>


Re: Is True Skip-Sequential Processing Possible with RECFM=FB,DSORG=PS?

2023-11-13 Thread Bob Raicer

A PDSE is essentially a form of VSAM Linear, where the physical data
set is a collection of 4K-byte blocks.  It does not have the notion
of CA's and CI's like other VSAM data sets.  The notion of BLKSIZE
is synthesized and mapped onto the internal PDSE structures; the
BLKSIZE value is not the physical unit of transfer size as is the
typical case for a traditional Physical Sequential data set.

Here is a URL for a SHARE presentation that provides a nice
explanation of how a PDSE is put together:

https://share.confex.com/share/124/webprogram/Handout/Session16956/PDSE%20Nuts%20and%20Bolts.pdf

Bob

On 2023-11-13 7:48 AM, Seymour J Metz wrote:


Does anybody know whether CI size = block size for PDSE and zFS (linear) data 
sets? VSAM used to use multiple blocks for a CI.





Re: Is True Skip-Sequential Processing Possible with RECFM=FB,DSORG=PS?

2023-11-13 Thread Paul Gilmartin

On 11/13/23 11:54:07, Schmitt, Michael wrote:

That I don't know. I've only dealt with GSAM checkpoints (which may not support 
RECFM=VBS). And one other: checkpoints in z/OS FTP.

My *guess* is that since a checkpoint has to flush the buffers to disk before 
you fill up the block, even VBS would have a short block.



I stand corrected.  I intended to inquire about RECFM=FBS.


-Original Message-
From: IBM Mainframe Assembler List  On Behalf 
Of Paul Gilmartin
Sent: Monday, November 13, 2023 12:50 PM
To: ASSEMBLER-LIST@LISTSERV.UGA.EDU
Subject: Re: Is True Skip-Sequential Processing Possible with RECFM=FB,DSORG=PS?

On 11/13/23 08:23:44, Schmitt, Michael wrote:

As long no one ever uses DISP=MOD


...or checkpoints. Checkpoints can cause short blocks to be written.

(My knowledge is with IMS/DB GSAM checkpoints.)


How does checkpoint interact with RECFM=VBS?

--
gil


Re: Is True Skip-Sequential Processing Possible with RECFM=FB,DSORG=PS?

2023-11-13 Thread Schmitt, Michael
That I don't know. I've only dealt with GSAM checkpoints (which may not support 
RECFM=VBS). And one other: checkpoints in z/OS FTP.

My *guess* is that since a checkpoint has to flush the buffers to disk before 
you fill up the block, even VBS would have a short block.

-Original Message-
From: IBM Mainframe Assembler List  On Behalf 
Of Paul Gilmartin
Sent: Monday, November 13, 2023 12:50 PM
To: ASSEMBLER-LIST@LISTSERV.UGA.EDU
Subject: Re: Is True Skip-Sequential Processing Possible with RECFM=FB,DSORG=PS?

On 11/13/23 08:23:44, Schmitt, Michael wrote:
>>> As long no one ever uses DISP=MOD
>
> ...or checkpoints. Checkpoints can cause short blocks to be written.
>
> (My knowledge is with IMS/DB GSAM checkpoints.)

How does checkpoint interact with RECFM=VBS?

--
gil




Re: Is True Skip-Sequential Processing Possible with RECFM=FB,DSORG=PS?

2023-11-13 Thread Steve Smith
Same as above.

On Mon, Nov 13, 2023 at 1:50 PM Paul Gilmartin <
0014e0e4a59b-dmarc-requ...@listserv.uga.edu> wrote:

> On 11/13/23 08:23:44, Schmitt, Michael wrote:
> >>> As long no one ever uses DISP=MOD
> >
> > ...or checkpoints. Checkpoints can cause short blocks to be written.
> >
> > (My knowledge is with IMS/DB GSAM checkpoints.)
>
> How does checkpoint interact with RECFM=VBS?
>
> --
> gil
>


Re: Is True Skip-Sequential Processing Possible with RECFM=FB,DSORG=PS?

2023-11-13 Thread Steve Smith
While the original question isn't really about assembler, it is at least
about programming.  This tangent has nothing to do with either... if you
want uninformed speculation on random topics, that's what IBM-MAIN is for.

sas

On Mon, Nov 13, 2023 at 9:48 AM Seymour J Metz  wrote:

> I believe that the OP wanted a solution for BSAM. If VSAM is an option
> then it's a nobrainer.
>
> Does anybody know whether CI size = block size for PDSE and zFS (linear)
> data sets? VSAM used to use multiple blocks for a CI.
>
>


Re: Is True Skip-Sequential Processing Possible with RECFM=FB,DSORG=PS?

2023-11-13 Thread Paul Gilmartin

On 11/13/23 08:23:44, Schmitt, Michael wrote:

As long no one ever uses DISP=MOD


...or checkpoints. Checkpoints can cause short blocks to be written.

(My knowledge is with IMS/DB GSAM checkpoints.)


How does checkpoint interact with RECFM=VBS?

--
gil


Re: Is True Skip-Sequential Processing Possible with RECFM=FB,DSORG=PS?

2023-11-13 Thread Schmitt, Michael
>> As long no one ever uses DISP=MOD

...or checkpoints. Checkpoints can cause short blocks to be written.

(My knowledge is with IMS/DB GSAM checkpoints.)

-Original Message-
From: IBM Mainframe Assembler List  On Behalf 
Of Jon Perryman
Sent: Sunday, November 12, 2023 5:18 PM
To: ASSEMBLER-LIST@LISTSERV.UGA.EDU
Subject: Re: Is True Skip-Sequential Processing Possible with RECFM=FB,DSORG=PS?

Everyone is making this far more complicated than it needs to be. Positioning a 
file is about you designing a method that can calculate a position on the disk 
that meets your requirements. z/OS, Unix, CMS, z/VSE and MS-Windows have file / 
dataset positioning because it greatly reduces I/O. There are many designs to 
available to calculate position.

Specifically asked was z/OS RECFM=FB. As long no one ever uses DISP=MOD, then 
the calculation is simple because number of records per block and blocks per 
track is consistent. You simply divide record number by records per block 
giving the block number used in the point and remainder is the number of 
records you must read after the point. Not quite correct but you get the idea.

If you need DISP=MOD functionality, then you must create the functionality. All 
programs needing DISP=MOD must open the file for update, position to the last 
block and read until EOF.

The simpler solution is VSAM RRDS or ESDS which allows you to position to a 
specific record number without the worry of DISP=MOD problems.

As I said before, there are many solutions and your requirements will determine 
which solution best fits your needs.

Suggestions have been made for a USS file. The advantage is that positioning is 
at the byte level instead of block. The calculation is greatly simplified to 
records times record size and DISP=MOD is greatly simplified because Unix does 
an append to the end of the file. The drawback is that the read record size 
must be handled by the programmer.

Most of the suggestions are viable solutions. You could even maintain an index 
file but then RRDS already does this for you. The important thing is a 
consistent method for POINT is determining the block and record for positioning.

On Sun, 12 Nov 2023 12:17:12 -0700, Paul Gilmartin  wrote:
>what does the EXECIO linenum option do?
>
>EXECIO arose on CMS and antedates REXX.  CMS files are indexed by
>line number.  I'd expect EXECIO on CMS to do True Skip-Sequential
>Processing.  Less likely on z/OS, even for RECFM=FBS.

As for CMS files, It's very doubtful they are indexed because there is no real 
benefit when the majority of files are processed sequentially. Records in a CMS 
file are probably stored in what z/OS people would think of as RECFM=VBS where 
blocksize is probably track size.

I doubt that CMS files have line number associations. CMS edit has number 
on/off but it has a different use. More likely is that CMS keeps a counter with 
the record number.




Re: Is True Skip-Sequential Processing Possible with RECFM=FB,DSORG=PS?

2023-11-13 Thread Seymour J Metz
I believe that the OP wanted a solution for BSAM. If VSAM is an option then 
it's a nobrainer.

Does anybody know whether CI size = block size for PDSE and zFS (linear) data 
sets? VSAM used to use multiple blocks for a CI.



-- 
Shmuel (Seymour J.) Metz
http://mason.gmu.edu/~smetz3
עַם יִשְׂרָאֵל חַי




From: IBM Mainframe Assembler List  on behalf 
of Jon Perryman 
Sent: Sunday, November 12, 2023 8:27 PM
To: ASSEMBLER-LIST@LISTSERV.UGA.EDU
Subject: Re: Is True Skip-Sequential Processing Possible with RECFM=FB,DSORG=PS?

On Sun, 12 Nov 2023 17:14:49 -0700, Paul Gilmartin  wrote:

>RECFM=FBS prevents that.

That is certainly a partial solution but the correct solution is VSAM RRDS or 
ESDS which eliminates the special handling.

>That's mostly how the Divide instruction works.

Division is not the hard part. Implementation is what's being discussed which 
involves division..

>... Fill the block with additional records and rewrite in place.

What ever floats your boat. If the OP wants to fully implement that logic, it's 
available.

>Why, in this 21st Century hasn't that function been added to the
>access methods!?  UNIX does it, as you say below.

What makes you falsely claim that function doesn't exist. There is no 
difference between z/OS and Unix files in this respect. Your programs must deal 
with those extra records by ignoring them. Both must retain a pointer to the 
first available instead of using EOF.

>I think that can be done by the Multiply instruction, provided
>by most modern computer hardware.

Wow, the computers you use can't multiply? I stated "times" which is another 
word for multiply.

> But fixed-length records are
>alien to UNIX -- I think they're a relic of UR-device practice.

RECFM=FB & VB are not relics. It's a vital concept used by databases. A max 
length is required by VARCHAR for a reason. They know it's more efficient to 
add a number instead of scanning for X'00'. Databases encourage you to supply 
max length for everything and truly unknown lengths are avoided.  Just because 
a basic concept is not understood by Unix programmers doesn't mean it doesn't 
have great value.


Re: Is True Skip-Sequential Processing Possible with RECFM=FB,DSORG=PS?

2023-11-13 Thread Jonathan Scott
Someone mentioned the CMS file system in a recent post.

The CMS file system uses a hierarchical block map system for
each file, which gives very efficient direct access by record
number (both for fixed-length and varying-length records)
avoiding the need to read any previous file data blocks
(although it may be necessary to read higher-level map blocks,
which are likely to be cached anyway).

Jonathan Scott, HLASM
IBM Hursley, UK