今天早些时候,我在z/OS 2.2中更改了PDSE中的一个源成员。我可以从数据集列表实用程序中看到,它今天被我更改了。
Name Prompt Size Created Changed ID
MYPROGRM 50 2021/09/08 2022/07/26 11:44:03 MYUSRID
当浏览源成员时,我可以看到一些行在屏幕的最右侧有日期,但它们似乎不一致。如果我手动更改一行,它并不总是更新该日期。
RUNSTATS TABLESPACE XXXX.YYYYYY
TABLE(ALL) INDEX(ALL) 00011004
SHRLEVEL REFERENCE
有没有办法告诉我的PDSE成员今天的哪些行发生了变化(例如)?
谢谢你的帮助!
Dave
您可以看到哪些行被更改或添加,但没有被删除。如果您为正在编辑的成员打开了"STATS ON">和序列号,则屏幕最右侧的序列号对应于该成员的MM值:
VV.MM版本号和修改级别。版本号已设置为1,并且当成员为创建。修改级别是此版本的次数已修改。例如,02.15表示版本2,修改15.如果一个成员名称只是另一个成员的备用名称,则ALIAS将显示在此字段中。
https://www.ibm.com/docs/en/zos/2.2.0?topic=statistics-成员列表显示面板字段
标准序列字段是固定长度的最后8个字符记录或可变长度记录的前8个字符,而与编程语言无关。使用NUMBER ON STD生成标准序列字段中的序列号。对于的成员分区数据集,标准序列号的格式取决于关于是否正在生成统计数据。如果统计数据生成的,标准序列号是6位数字,后面跟一个2位修改级别编号。级别编号标志反映创建线或最后一条线时成员的修改级别已更改。例如,如果序列号字段包含00040002,该行是在修改级别02添加或最后更改的。这个序列号是000400。
如果STATS模式关闭,或者您正在编辑顺序数据集,标准序列号是8位数字,在领域
https://www.ibm.com/docs/en/zos/2.1.0?topic=numbers-序列号格式修改级别
因此,如果您正在编辑的成员是这样的,并且您想知道上次编辑会话中发生了什么变化,那么在成员显示列表中检查有问题的成员的修改级别(您可能需要向左或向右滚动):
Name Prompt Size Init Mod VV MM ID
_________ TEST *Edited 8 7 2 01.02 JOCS065
**End**
aadn您可以在第79-80列中看到00、01、02等MM级别
****** ***************************** Top of Data ******************************
000100 my data 00010000
000200 my data 00020000
000300 my data 00030000
000400 my data 00040000
000500 my data 00050000
000510 more data 00051001
000600 my changed data 00060002
000700 my data 00070000
****** **************************** Bottom of Data ****************************
因此,要只查看上次更改的内容(在大型数据集中很有用),请获取MM级别(例如45),然后在编辑或查看时运行命令x all;f '45' 79 all
如果使用PDSE并且启用了成员生成,则可以将当前生成与上一代进行比较。您需要一个工具来做到这一点,因为ISPF本身并不支持这种世代比较的概念。
你可以获得一个名为PDSEGEN的免费开源工具,它可以让你在ISPF编辑命令行中输入"compare-1",然后你可以很容易地看到发生了什么变化。
PDSEGEN可在https://github.com/lbdyck/pdsegen或https://www.cbttape.org在文件969中(如果转到cbttape站点,请始终查看更新页面以获取最新信息)。
希望这能帮助
位置72-80中的字符不一定是日期。他们可能,但如果他们是,那是因为有人手动实现了这一点。ISPF Edit不强制执行此操作。
更有可能的是,在某个时刻,有人打开了成员上的NUMBER,或者某些行是从另一个打开了NUMBER的成员复制的。
对于您的问题,HSM备份在更改数据集时通常由数据集组成。您可以将PDSE的最新备份恢复为其他名称,然后使用compare
ISPF Edit主命令来比较这两个版本并确定更改的内容。
无法通过查看文件来判断哪些行被更改。屏幕最右边的数字可能是一个序列号。如果文件中的其他行没有类似的数值,则可能是您的配置文件设置为NUMEBR OFF
。
要在ISPF编辑器命令行上查看您的配置文件类型prof
命令,它应该显示类似以下的信息:
> Command ===> prof Scroll ===> CSR
****** ***************************** Top of Data ******************************
=PROF> ....C (FIXED - 80)....RECOVERY ON....NUMBER ON STD......................
=PROF> ....CAPS OFF....HEX OFF....NULLS ON STD....TABS OFF.....................
=PROF> ....AUTOSAVE ON....AUTONUM ON....AUTOLIST OFF....STATS ON...............
=PROF> ....PROFILE UNLOCK....IMACRO NONE....PACK OFF....NOTE ON................
=PROF> ....HILITE C LOGIC PAREN CURSOR FIND MARGINS(1,72)......................
这会告诉你序列号是开还是关。如果你想去掉序列号,你可以使用以下命令序列:num
,然后是unnum
命令,如果你想使用序列号,则只使用num
命令。