ISPF中使用Ctrl+Z来执行UNDO命令

今天研究的成果,教你们如何在大机上用Windows下用惯了的Ctrl+Z来执行UNDO命令。
首先,ISPF里面UNDO命令默认是没有开启的。我们需要自己写一个Edit Initial Macro来默认开启。方法如下:

step1:在usrid.REXX.EXEC下面新建一个宏EDITMAC,内容如下,保存退出。
/*****************************REXX***********************************/
/* This macro load automaticly when you open a dataset for edit.    */      
 Address  ispexec                                                     
 "ISREDIT MACRO"                                                      
 "ISREDIT RECOVERY ON"                                                                                                  
exit                                                                  
step2: 随便Edit ...
more ...

ISPF-只显示含关键字的所有行

命令:

X ALL; FIND keyword ALL;

比如,只显示所有含DT0907的行,可以这么做,先X ALL;再FIND DT0907 ALL;

VIEW       IBMUSER.TESTJCL(TESTJOB) - 01.9         4 CHARS 'DT0907' 
 Command ===> find dt0907 all                                  Scroll ===> CSR  
 ****** ***************************** Top of Data ******************************
 - - -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -   524 Line(s) not Displayed 
 000525 //SORTOUT  DD  DSN=IBMUSER.CREATERT.FILEOUTS.DT0907,DISP ...
more ...

ISPF下如何去掉程序的第72至80列

个人不是很喜欢ISPF 3.13提供的两个Dataset比较的功能,总觉得看得不是很直观。平时还是比较习惯用windows下面的winmerge这个软件来比较。但是有个问题,就是比较的两个程序经常在第72列至80列的行号不一致,导致没法比较。所以这里就来总结一下如何去掉DATASET的中烦人的第72列至80列内容。

方法一:直接在ISPF下面用命令去掉

这是最直接最快的办法。去掉第72列至80列的命令有下面两个:

NUM ON; UNNUMB
C P'^'   73 80 ALL    /* Changes all non-space characters to spaces in col 73 to 80*/

方法二:用第三方脚本实现

上面的方法如果是只有少数几个程序,那么手动命令去掉第72列至80列没什么。但是如果你一下子需要对几百个dataset或者同一个PDS下面的所有member去掉第72列至80列,则最好最快的办法是将所有代码通过FTP下载到本地,然后用第三方脚本语言(如VB,Phthon,Ruby,JS等)来解决。
这里是一段自己的Ruby脚本,作用是将C:\prod ...

more ...

介绍几个比较有用的ISPF命令(续一)

接上次讲的,这里继续介绍几个常用的有用的命令。

COMP

这是比较文件的命令,功能类似于ISPF 3.13选项。如果你正打开自己PDS下面的DMSID01.TESTLIB.PRGM(MYPGM01)编辑,你想跟你同事(DMSID02)PDS下面的一个MYPGM02比较看看有什么不同的话,你可以直接在Command栏上输入命令: COMP 'DMSID02.TESTLIB.PRGM(MYPGM02)'

COMP EXC

这是COMP的高级选项,再后面加上EXC让比较结果中只显示不同的行。当然,为了不失关联性和便于理解,它还额外保留了不同处的前后各5行,显得特别人性化。可以简化成'COMP X'

F1 twice

很经常会有你想编辑某个DATASET或者Member的时候提示"Member in use",这时候你可以连续按两次F1,就能知道谁当前正在使用这个DATASET或者Member了。

HEX ON/OFF

文件中经常有些字符在普通的View ...

more ...

介绍几个有用的ISPF命令(续二)

M+F7 和 M+F8

命令行上输M,接着按F7, 表示回到文件最顶端
命令行上输M,接着按F8, 表示回到文件最低端

COL

显示列号,这个命令特别是在对齐的时候很有用。因为在JCl语法中,很多关键字必须规定从第几列开始写,不然会出错的,比如JCLLIB ORDER一定要从第四列开始写,所以用COL命令显示行号是很有必要的。

HI

语法高亮用HI,比如可以用HI PLI来高亮PL/I代码,用HI COBOl高亮COBOl代码,用HI JCL来高亮JCL语法,用HI REXX来高亮REXX语法,用HI ASM来高亮汇编代码,一共支持18种语言。可以HI ...

more ...

常见的TSO ISPF命令

几个概念

TSO

TSO(Time Sharing Option),时分操作,可以同时让多个用户登录到大机上。一般我们认为的TSO是命令行模式,像一些LOGON,LOGOFF,之类的命令与大机交互。

ISPF

ISPF(Interactive System Programming Facility),它提供了一个menu菜单系统来与大机交互,可以说就是一个简单的menu system。
好了,言归正传。下面是必须知道的ISPF命令:

ISPF功能键

PF1: HELP帮助键
PF2: SPLIT键,改变分屏位置
PF3: END键,结束并退回上级菜单
PF4: RETURN键,结束并退回主菜单
PF5: REFIND键,重复最近一次FIND命令
PF6: RECHANGE键,重复最近一次CHANGE命令
PF7: UP键,向上滚屏
PF8: DOWN键,向下滚屏
PF9: SWAP键 ...

more ...

介绍几个比较有用的ISPF命令

上一篇讲的是常见的TSO/ISPF命令,这篇来讲讲我收集到的日常比较有用的ISPF命令。

HRECALL

大机上的Dataset比较久了没有被访问的话会自动被迁移(migrate)到tape中保存的,根据时间的长短,Dataset会被migrate到不同的level,比如MIGRAT1,MIGRAT2等等。这时,如果你想把这个Dataset 召(Recall)回来的话,平常我们都在这个Dataset前面打个Call命令。这样做有个不好的地方,就是如果这个Dataset需要很长时间才能被RECALL回来的话(比如30分钟),那这30分钟之内你只能看着屏幕发呆而啥都干不了了。所以这种情况下你可以试试后台Call的命令HRECALL,它在后台操作,结束后会有提示,完全不影响你做其他事情

NUM OFF

有时你在编辑一个Dataset的行末尾的时候,每次保存都会提示:Some input dataignored。这时因为默认情况下末尾的行号显示是开着占了8位,这8位是不可修改的,这时你可以试试在命令行上打个NUM OFF把行号显示关了。

XDC

这是一个SDSF(系统显示与查询工具 的命令,如果你想把一个JOB的输出Log保存到某个地方,比如自己的PDS,那么你可以在SDSF里面在这个JOB的Log前面打上XDC,然后写上你要保存的地方即可 ...

more ...