bobguo wrote:...abviously, in the programs we don't create these 2 files' DCBs, can you explain it? ...
DCB macros in a program can create the DCB attributes. Most of my batch programs have
PRINT DCB DSORG=PS,MACRF=PM,DDNAME=SYSPRINT,RECFM=VBA,LRECL=125
When done this way OPEN will fill in BLKSIZE, hopefully with something appropriate.
OPEN sets data set attributes in this order.
- The DCB macro.
- DCB attributes specified in the JCL DD statement.
- DCB attributes specified in the data set label.
This is discussed in more detail in MVS JCL User's Guide
for your z/OS release.
The SYSUDUMP data set has very restricted DCB attributes. These DCB attributes are discussed in the discussion of the SNAP macro in MVS Assembler Services Guide
and MVS Assembler Services Reference IAR-XCT
for your z/OS release. ABEND processing will make sure the appropriate DCB attributes are used.
Another way to store DCB attributes is in the DCB open exit. This is discussed in more detail in DFSMS Using Data Sets
. Before System Determined Blksize, many of my production programs had elaborate DCB OPEN exits to perform the equivalent of System Determined Blksize, but now it's not worth the effort.
If you are wondering about the LRECL value many programs use, there is a reason. The IBM 1403 line printer was the most common printing device used in the 1960s and early 1970s, and the IBM 3203 (I think I have the correct model number), which used the printing mechanism of the 1403 was often encountered in the 1980s and 1990s. The 1403 came in a variety of line sizes. The most common were 120 characters and 132 characters. When carriage control characters are used an extra, non printing carriage control character is specified, which makes the LRECL 121 or 133. When variable length records are specified, you add 4 additional bytes for the RDW, which makes the LRECL 125 or 137. Now, of course, these values are in the nature of historical artifacts, but they are still commonly used, especially by dinosaurs like me.