《大型机学习之具体技术之-数据集的具体操作》
数据集的创建:
数据集的创建有两种情况:1分区数据集的创建,2连续数据集的创建。
分区数据集的创建步骤如下:在ISPF主菜单下选择3-Utilitis,然后是2-Data Set,在面板最上面就会看到有8种操作可以进行,在选项区域输入字母 A,但是不要按 ENTER 键,然后在数据集名字区域中输入新数据集的名字,但是同样也不要按ENTER 键。名字可以用单引号引起来(例如,’yourid.LIB.SOURCE’)或不用引号引起来(LIB.SOURCE)以便TSO/ISPF 能够自动的把当前的 TSO用户ID 作为HLQ 使用。然后在卷序号区域输入 WORK02,按ENTER键。 完成指定的参数设置并且按 ENTER。
– Space Units = TRKS (这是一个为后面数据设置的单位,意为磁道)
– Primary quantity = 10 (为数据集分配 10 个磁道的主空间)
– Secondary quantity = 5 (5个磁道的追加空间)
– Directory blocks = 10 (10个目录空间足够了)
– Record format = FB (数据集的记录格式是 FB)
– Record length = 80 (逻辑记录的长度是 80 字节)
– Block size = 0 (this tells z/OS to select an optimum value) (在Record format为FB的情况下,这个区域如果要自定义的话一定要是上一个参数Record length的整数倍,至于原因,可以从上一篇文章中找)
– Data set type = PDS (PDS代表分区数据集,HFS代表分级文件系统,是Z/OS UNIX文件系统,LIBRARY表示库,BLANK表示什么不知道)
系统执行创建数据集的操作完毕以后,在屏幕的右上的角落,可以看到成功或者失败的 消息。
顺序数据集的创建与分区数据集的创建的不同之处在于填写参数的时候要在Directory blocks 项填0,因为顺序数据集中根本不需要目录,分配空间又要何用。然后还要把Data set type 保持为空,即BLANK,这样子创建出来的一个DATA SET就是一个顺序数据集。同样你会在右上角看到创建成功与否的提示信息。
数据集的列表总览:
我刚才学会了创建数据集,那么我如何去看我们的数据集在哪呢?其实我已经知道它就在创建数据集时指定的那个VOLUME中,但是,我还是想看一看VOLUME下倒底有哪些数据数据集呢?原来可以在ISPF下使用3.4即Dlist选项,在其中的Dsname level右边填上你的用户名,或者就是你的HLQ,然后回车,就可以得到一个数据集的列表,或者你不填写Dsname level,而是填写了下面那个Volume serial,那么得到的就是这个卷中的所有的数据集的列表,如下面这个图所示:
在这个界面中,用PF10和PF11左右翻动可以显示更多的信息,这种情况并不是真正的滚动;只有当使用PF11或 PF10 时才能获得额外的信息。 第一个 PF11 显示的内容包括磁道、使用百分比、分区和设备类型。分区值是用于获得显示磁道总数的分区数量。ISPF 实用程序可以看到数据集实际使用的空间的大小,且如果可能的话,它还可以作为一个百分比来显示。第二个 PF11 显示的内容包括 DCB 特性:数据集组织形式(DSORG)、数据集记录格式(RECFM)、逻辑记录长度(LRECL)和组块的长度(BLKSIZE)。PS 代表顺序数据集,PO 代表分区数据集,VS 代表 VSAM 数据集,BLANK 代表未知组织或者不存在数据集。
RECFM、LRECL 和 BLKSIZE 应该是比较熟悉的。在某些情况下,若没有使用一个标准的访问方法或没有写入数据时,这些参数是不能确定的。VSAM 数据集没有这些参数的直接数值,通常是以问号来表示。
在这个界面下按F1可以查看到可以对数据集进行的一些操作的命令,如S ,E ,B等等,这时在某一个要编辑的数据集左侧,对应于上方蓝色的Command列下面输入命令,然后回车就可以执行命令了。比如用E,就马上进入该数据集的编辑状态。
数据集的编辑:
如果是一个连续数据集,我们可以直接在ISPF主菜单的2选项EDIT里面,输入数据集名称,直接进行编辑状态,在编辑环境下,有两种命令格式,一种是主命令,就是在Command那一行输入来使用的命令,它们常见的有:
AUTOSAVE ON/OFF,打开关闭自动保存
AUTONUM ON/OFF,自动重新编号行号(SAVE后生效)
CANCLE:取消所做的编辑并退出编辑环境
CAPS ON/OFF:退出编辑环境后系统自动将所有字母转换为大写/小写
CHANGE(RCHANGE):替换字符,RCHANGE表示重复上次的替换。格式:CHANGE ** ** [ALL]
FIND(RFIND):查找字符串
RECOVERY ON/OFF:设置编辑方式,ON表示用户可以通过UNDO命令取消上一次编辑操作
RESET:重置编辑器,清除不需要的信息
SAVE:保存当前修改,并继续编辑
SORT:对文档行按字典顺序排序
SUBMIT:提交作业;若作业是一段JCL程序,则通过该命令可以提交作业程序
UNDO:取消上一次编辑(仅当在RECOVERY ON编辑方式下)
s(setup)+member:创建新成员(PDS)
CUT:复制当前内容(配合CC和MM来使用)
PASTE:粘贴当前内容(配合CUT来用 很常用)
COPY+member-name:复制同一DATASET下MEMBER内容(配合AB使用)
HEX ON/OFF,打开关闭十六进制编码形式;
HI+XXX:高亮显示某种语言(JCL COBOL REXX等等)
MEMBER+member-name:查询当前所有DATASET下该member是否存在(非常实用)
PROFILE:列出当前编辑环境的所有的editor profile
HEX ON/OFF:打开关闭十六进制编码形式
AUTOSAVE ON/OFF:打开关闭自动保存
AUTONUM ON/OFF:自动重新编号行号(SAVE后生效)
PROFILE, 列出当前编辑环境的所有的editor profile
PROFILE UNLOCK/LOCK:可以修改ISPF的editor profile
PACK ON/OFF:是否将该MEMBER保存成PACK格式(一种主机上标准的压缩格式)
TABS ON/OFF:编辑的时候是否允许用TAB键跳格
如果是编辑REXX,COBOL,JCL等,可以用 HI REXX, HI COBOL, HI JCL,让语言的关键字高亮显示。这个对阅读程序帮助很大
命令 COPY member1 就会把 member1 的内容拷贝到当前的文件中。
命令 CUT 可以把当前文件的内容拷贝到剪贴板中,然后到你要你要粘入的文件,使用PASTE 命令 拷贝到该文件。
CTRL+HOME显示隐藏十字光标(十字光标是干什么滴?)
另一种命令是行命令,是输入在文本行中的左侧EDIT下面列来使用的命令,常见的行命令如下:
C、CC、Cxx:拷贝命令。与其他行命令(A、B)或主命令 结合使用 C 拷贝当前行,CC拷贝多行,用两个CC来定位,Cxx拷贝多行,XX表示行数
I、IXX:插入命令。执行一次插入命令后,可直接按回车(ctrl)换行
D、DD、Dxx:删除
R、RR、Rxx:复制
O:覆盖当前内容(结合C和R来用)
A:定位于当前行之前
B:定位于当前行之后
X、XX、Xxx:隐藏
S、Sxx:显示隐藏的内容
COLS:屏幕的刻度标尺
UC、UCxx:转换成大写
LC、LCxx:转换成小写
(, (xx:将当前行左移一列或xx列(或者<)
), )xx :将当前行右移一列或xx列(或者>)
TS:将一行文本切分为两行
TF:将多行文本合并为一行
行命令还有O,配合A,B一起使用能够覆盖指定的行相同位置
还有列于最下行的功能键都有提示,就不说了。
编辑完了F3可保存退出。F12不保存退出。
如果数据集是一个分区数据集,如果是一个刚刚建立的分区数据集,我们按前述进行编辑的时候,右上角会提示 No member in data set,这个就是说明了,一个分区数据集是不能拿来直接编辑的,因为它是一个顺序数据集的集合,它相当于一个文件夹,怎么可以拿来直接编辑呢,所以要先在其中建立顺序数据集,这个顺序数据集一般被称为MEMBER,然后再对MEMBER进行相应的编辑。如何给分区数据集添加顺序数据集呢?很简单,就在如上的两处环境下在Data set name一项中填上数据集名称,然后在后面加上一个括号,其中写上要添加的成员的名字就可以了(例如LIB.COURCE(MEM1)),然后回车就直接进入编辑状态了。如果是一个已经有成员的分区数据集,填写好数据集名称,不用加什么括号然后直接回车,会出现一个成员列表,再在其中进行选择,然后选择一个数据集来编辑就可以了,编辑命令当然跟前面说过的那两种命令相同了。
数据集的删除:
数据集的删除可以在3.2下面用D命令进行,也可以在3.4下面用D命令进行。这个比较简单。
数据集的重命名:
数据集的重命名跟删除一样,可以在3.2下面用R命令进行,也可以在3.4下面用R命令进行。这个也比较简单。
数据集的移动和拷贝:
假定用户需要复制位于卷WORK02中的数据集 ZPROF.ZSCHOLAR.LIB.SOURCE,操作过程如下:
1. 选择ISPF选项3.3(实用程序移动/复制)。
2. 在第一个面板上:
- 在选项区域输入C。
- 在数据集名字区域输入’ZPROF.ZSCHOLAR.LIB.SOURCE’。这种情况需要用到单引号。
3.在第二个面板上:
- 在数据集名字区域中输入’yourid.LIB.SOURCE’并且按ENTER键 ,如果这个目标数据集不存在,会有一个创建新数据集的提示。
4. 操作后应该产生一个面板列出输入数据集中的所有成员:
-在每个成员名字前输入S,并且按ENTER键。 (如果源数据集中本身就没有成员,那么复制将自然会失败。)
这样就把所有显示出来的成员从源数据集复制到了目标数据集。
移动的做法跟复制差不多,只是移动过后源数据集就消失了,而复制不会消失。
数据集的编目:
先对数据集的编目进行一个概览:
在MVS中,数据集的管理主要是通过目录(CATALOG)来实现的。目录本身是一个数据集,它含有其它数据集的信息,提供一种能力,按数据集名去定位数据集的地址。MVS中最初没有目录,因此用户必须牢牢记住其数据集所在的卷,在访问数据集时,除了要指定数据集的名字外,还要指定数据集所在的卷。由于系统中的卷的个数非常多,用户使用很不方便。之后,随着操作系统的发展,实现了CVOL目录和VSAM目录。现在使用的目录是Integrated catalog。
这三种目录可以并存于同一个操作系统中,其中前两种只是因为考虑兼容性而存在,系统中如果没有早期的应用需求,可以完全不使用前两种目录 形式。
对数据集的编目实际上是对数据集的入口建立表格和索引。访问数据集时,系统通过查找目录来定位已编目的数据集。目录中包括数据集名,卷标(VOLUME)和设备类型(UNIT)。
当读取编目的数据集时,只需指定数据集名和数据集状态,无需指定VOLUME和UNIT参数,这时,系统通过数据集名(DSN)查找编目,从编目中获取UNIT和 VOLUME信息,然后再通过UNIT参数和VOLUME参数指定的VTOC获取数据集位置,大小等信息。
使用编目后,用户不再需要知道外存储器的详细设置,因此数据可以从一个地方移动到另一个地方而不必改变JCL中的DD语句,访问数据集时也不必知道数据集存放的卷。使用编目同时也简化了数据集的备份和恢复过程。所有VSAM数据集和SMS管理的数据集均需要编目。
如果你使用了SMS,或者为编目定义了别名(alias),则在JCL中不应该再使用JOBCAT或STEPCAT语句去指定catalog。
一个编目机制包含两种独立的数据集:一个基本的编目结构(BCS)和一个VSAM卷数据集(VVDS)。BCS可以认为是编目,而VVDS则可认为是VTOC的扩展。
BCS是一个VSAM KSDS数据集,它使用数据集的名字作为关键字。对于VSAM数据集,BCS含有卷、安全信息、拥有者及其它信息。对于非 VSAM数据集, BCS含有卷,拥有者及其它信息。
VVDS是一个VSAM ESDS数据集,其名字为:SYSI.VVDS.Vvolser。 VVDS存放在每
一个含有VSAM或SMS管理的数据集的卷上。它含有数据集的特性和扩展(extention)信息。
对于VSAM数据集来说,还含有卷的有关信息。因此,编目的数据集描述信息包含在VTOC,BCS和VVDS中,三者描述的信息应当一致。这种一致性由操作系统自动同步。
所有SMS管理的数据集在VVDS中都有登记项,对于VSAM数据集的VVDS记录被称之为VVR(VSAM Volume Record),而对于SMS管理的非VSAM数据集的VVDS记录则被称之为NVR(Non-VSAM Volume Record)。如果一个非VSAM数据集跨多个卷,则其NVR在第一个卷上。
由于BCS同样也是一个VSAM,它在 VVDS中也有一个VVR。临时的 VSAM数据集在VVDS中同样也有登记项,但在BCS中没有登记项。
在MVS系统中,有一个主目录(Master Catalog)及多个用户目录(User Catalog)。
主目录是整个外存系统管理的中心控制点,它描述系统的数据集和用户目录,而用户目录则描述用户的数据集。通常称在目录中有描述信息的数据集为编目的数据集。显然,主目录的信息非常重要,因此可以有一个或多个主目录的备份。但任何时候系统中只能有一个主目录在使用,形成一个以主目录为中心的两级层次式的数据集管理方式,主目录与用户目录的区别仅仅在于它使用的方式。
SYSI.NUCLEUS数据集的SYSCATXX成员(如果有的话)或SYSI.PARMLIB(或SYS1.IPLPARM)数据集的LOADXX成员指向主目录。在系统启动时,操作员也可指定使用另一个主目录。所有的用户目录均登记在主目录中。
从以上可以看出由用户直接进行数据集的编目还是比较不常见的,我也不会,所以先不管这个东东,以后再说。
关于数据集还有:
谁在使用数据集
环境 |
|
|
|
如果你在使用ISPF V4以上的版本,可尝试在3.4下删除它.当你得到"Data set in use" 的信息,连续按下两次PF1键,便可得到一个enque owner的清单. 如果上述方法不行,可再尝试MVS命令: D GRS,RES=(*,TCPIP.TCPIP.DATA). |
以及:
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|