use*_*848 21 cobol mainframe jcl
我在数据文件定义文档中遇到过这些术语,这些术语是我从大型机系统获得的一些数据.
我没有在任何词汇表或谷歌搜索中找到这些术语的定义 - 只是提到它们.
任何人都可以对这些术语的确切含义有所了解吗?
Bil*_*ger 40
忘记您对Windows或Unix/Linux下硬盘数据的了解.
固定长度记录(对于未阻塞可以是记录格式(RECFM)F,对于阻塞可以是FB(它们也可以是FBS,它是固定块标准,但对于简单的一次性数据集(文件),它相当于FB )只包含数据,以及已知且不可更改的数据量.
它们包含的数据可以是256位值中的任何一个.没有记录分隔符.
可变长度记录,(RECFM V或VB(VBS是可变阻塞跨区,不是简单记录),前缀为四个字节(记录描述符字(RDW)),前两个字节表示长度因此它们包含控制信息和数据.没有记录分隔符(因为长度是已知的).
VB数据集的块也以块描述符字(BDW)为前缀,四个字节,前两个字节包含块的长度.
数据仅以块的形式写入和读取,并通过io例程完成解块.块大小越大,ios越少.但是,因为最大块大小小于磁盘上磁道的大小,所以最有效的阻塞是"半磁道阻塞",块大小达到一个记录小于27,998或等于它.
固定块记录的开销较小,因为提供了唯一的信息(blocksize(BLKSIZE)和最大记录长度(LRECL)(在目录中,或JCL中,或由程序提供,特别是如果用汇编程序编写),而不是存储在数据中.
对于可变块记录,有两种类型的控制信息(BDW和RDW)嵌入数据,以及其他信息.
大型机上的程序员不需要了解这一点.一个程序将处理记录,阻止细节可以在程序外部.
这是一个FB Block:
DATADATADATADATA
Run Code Online (Sandbox Code Playgroud)
该块如何分解为固定长度的记录保存在数据外部.可以计算块中第三个记录的位置.有一种使用这一事实的低级访问方法.
这是一个VB块:
BDWRDWDATARDWDATARDWDATA
Run Code Online (Sandbox Code Playgroud)
块中第三个记录的位置只知道io例程处理之前的记录.
选择错误的类型,错误的记录长度或错误的块大小会严重影响程序性能.
当数据从大型机传输出来时,有一些选项可以删除RDW(如果存在),插入分隔符,删除尾随空白等类似内容,以便数据现在看起来像本机文件.转移到大型机会经历相反的过程.
如果要从大型机接收数据或将数据发送到大型机,请仅以字符格式执行此操作.没有"二进制"或"打包"字段,并使用显式符号,显式小数位或缩放因子.你会为自己省下这么多麻烦,让自己成为审计师的好书.