IBM PCOMM初始设置的最佳实践 for zOS and IBM i

1.显示标尺Cross-rule

Edit-->Preferences-->Appearance-->Display Setup...-->Rule Line 在Setting里面把Rule Line选上 :

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实现复制

  1. Edit –-> Preferences –-> Keyboard…-->Customize…
  2. 点击界面上的C`键,然后在左下区域的Function下拉列表中,选中Edit Copy,之后再点击右边区域中Ctrl那一行的箭头, 这时候会发现Ctrl行的值变为Edit-Copy。

ctrl_c

点击File-–>Save保存配置。

C:\Users\Mainframer\AppData\Roaming\IBM\Personal Communications\mykeyboard.kmp

同样的方法,点击界面上的V键,然后在左下区域的Function下拉列表中,选中Edit Paste,之后再点击右边区域中Ctrl 那一行的箭头,点击File-->Save保存配置。

C:\Users\Mainframer\AppData\Roaming ...

more ...

用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 ...

more ...

Mainframer版本的程序猿吐槽

下面这段JCL挺有意思的,之前见过其它版本的,今天在一个国外网站看到的mainframe版本的,记下,纯属娱乐。

//MYWALLET EXEC PGM=SPOUSE
//SYSIN DD DSN=MYWALLET.ALL,DISP=SHR
//SYSOUT DD DUMMY 
more ...

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 ...
more ...

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à ...
more ...

Rexx调用Skeleton JCL提交job的例子

这个例子一共包含3个部分

Rexx主程序IBMUSER.REXX.EXEC(MYSKELE)
带参数的sekleton JCLIBMUSER.REXX.SKELL(JCLSKEL)
最终生成的Dynamic JCLIBMUSER.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 ...
more ...

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 ...
more ...

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 ...
more ...