IBM PCOMM初始设置的最佳实践 for zOS and IBM i
1.显示标尺Cross-rule
Edit-->Preferences-->Appearance-->Display Setup...-->Rule Line
在Setting里面把Rule Line选上 :
2.修改复制粘贴为Windows格式
PCOMM默认的复制粘贴操作丑得很,改成Windows Style好多了。
方法:Preferences ->Edit->Trim->Windows Style
3.使用自定义键盘来支持Ctrl+C/Ctrl+V复制粘贴
Preferences -> Keyboard ->
选User-Defined
C:\Users\Mainframer\AppData\Roaming\IBM\Personal Communications\mykeyboard.kmp
关于mykeyboard.kmp的设置,参考我的上一篇文章: IBM PCOMM实现Ctrl+C, Ctrl+V复制粘贴
4 ...
more ...IBM PCOMM实现Ctrl+C, Ctrl+V复制粘贴
PCOMM默认不支持Ctrl+C, Ctrl+V复制粘贴,这个可以通过自定义键盘和宏脚本(Macro)来完美实现。
Ctrl+C实现复制
Edit –-> Preferences –-> Keyboard…-->Customize…
- 点击界面上的C`键,然后在左下区域的Function下拉列表中,选中Edit Copy,之后再点击右边区域中Ctrl那一行的箭头, 这时候会发现Ctrl行的值变为Edit-Copy。
点击File-–>Save
保存配置。
C:\Users\Mainframer\AppData\Roaming\IBM\Personal Communications\mykeyboard.kmp
同样的方法,点击界面上的V键,然后在左下区域的Function下拉列表中,选中Edit Paste,之后再点击右边区域中Ctrl
那一行的箭头,点击File-->Save
保存配置。
more ...C:\Users\Mainframer\AppData\Roaming ...
用INTRDR在job中submit第二个job
今天学到的,如何在当前job
当中trigger
另外一个job
?答案就是利用Internal Reader
例如:
//*******************************************************************
//* Submit an DUMMY job MYJOB2 from current job card
//* Submit to the Internal Reader
//*******************************************************************
//STEP04 EXEC PGM=IEBGENER
//SYSUT1 DD DISP=SHR,DSN=IBMUSER.TEST.CNTL(MYJOB2)
//SYSUT2 DD SYSOUT=(*,INTRDR)
//SYSPRINT DD SYSOUT=*
//SYSIN DD DUMMY
这种技术经常被用来发送notification ...
Mainframer版本的程序猿吐槽
下面这段JCL挺有意思的,之前见过其它版本的,今天在一个国外网站看到的mainframe
版本的,记下,纯属娱乐。
//MYWALLET EXEC PGM=SPOUSE
//SYSIN DD DSN=MYWALLET.ALL,DISP=SHR
//SYSOUT DD DUMMY
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 ...JCL中执行如何SQL
平常我们用第三方软件来对DB2操作,比如eclipse,比如DBedit,又或者是mainframe上面的软件,如Filemanager
,SPUFI
等。
那怎么在JCL里面运行SQL呢?答案是利用IKJEFT01
。
//***************************************************************
//*UNLOAD: unload data using IKJEFT01 via dynamic SQL in JCL *
//***************************************************************
//UNLOAD EXEC PGM=IKJEFT01,DYNAMNBR=20
// INCLUDE MEMBER=XXXXSRUN
// INCLUDE MEMBER=XXXXLOAD
//SYSTSPRT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSREC00 DD DSN=IBMUSER.SQL.OUTPUT,
// DISP=(NEW ...
SYNCSORT将PD格式转换成CSF(FS)格式
客户要求看实时报表,可是从数据库导出来的数据却包含如下所示的显示不怎么友好的数据,这时可以用SORT来转换成客户想要的格式。
转换之前的文件用HEX ON
命令显示如下。可以看出后面三个字段都是PD类型的,并且都占据8位长度。
VIEW IBMUSER.DFSORT.PDTOCSF.SORTIN Columns 00001 00045
Command ===> HEX ON Scroll ===> CSR
=COLS> ----+----1----+----2----+----3----+----4----+
****** ***************************** Top of Data ******************************
000001 AAAA,20130102,1,MD, à? , é , ? & i
CCCC6FFFFFFFF6F6DC600001670600512110600705380
1111B20130102B1B44B0000440CB0013100CB0003049C
----------------------------------------------------
000002 BBBB,20130102,2,MD, , è?íaà ...
Rexx调用Skeleton JCL提交job的例子
这个例子一共包含3个部分
Rexx主程序:IBMUSER.REXX.EXEC(MYSKELE)
带参数的sekleton JCL:IBMUSER.REXX.SKELL(JCLSKEL)
最终生成的Dynamic JCL:IBMUSER.DYNAM.JCL(SUBJCL)
File Edit Edit_Settings Menu Utilities Compilers Test Help
VIEW IBMUSER.REXX.SKELL(JCLSKEL) - 01.06 Columns 00001 00072
Command ===> Scroll ===> CSR
****** ***************************** Top of Data ******************************
000001 //&JOBNAME JOB '000000000000000000CMP',
000002 // CLASS=3,NOTIFY ...
ISPF Dialog 开发知识点
需要用ISPF来开发带界面的自动化工具,从0开始。记下些很有用的知识点:
- 执行命令
Panelid
可以得到当前ISPF panel的名字 - 执行
7.2
这个命令输入panel名字,可以用来刷新你新写的panel,使改 动动态生效,这样就不需要重启TN3270 terminal达到测试panel改动的目的 - ISPF中用
option 7.3
可以查看Z
开头ISPF系统预留的变量 - 执行命令
3.9
查看ISPF所有可用的command - 知道任意一个panel的名字,如何得到其定义的路径?这里是很好的方法
- To assign a null value or blank value to a dialog variable, use the system variable &Z.
)SET D = &Z ...
IBM DebugTool中巧用GOTO调试程序
最近接触IBM DebugTool
比较多,再说一个在mainframe上面调试COBOL或者PL/I程序的技巧吧。
经常在用IBM DebugTool
或者DTCN调试程序的时候,造测试数据很不容易。如果调试过程中发现这次数据没有造成功,我们没有必要每次都退出全部程序重新造数据,可以巧妙地利用“GOTO”语句,随心所欲地在程序里面跳转。
比如下面这一个程序段,在调试过程中我们可以在Call黑盒子程序BLACKBOX
的前后都设置一个断点,即9178行以及9202行都设置一个断点,如果我们发现程序跑到了9202行但是返回码不是我们想要的结果,那么运行“GOTO 9178”
即可重新回到Call黑盒子之前,无限反复尝试,重新造数据,直到成功!
SOURCE: TESTPGM1 --1----+----2----+----3----+----4----+----5 LINE: 9178 OF 15895
0020 01 WS-FIELDS.
0021 05 WS-CALLED-PGM ...