ISPF-提高效率少用PF3和START

同一个PDS下,记得多用BROWSE, VIEW,EDIT,COMP这些命令。比如BROWSE TEST02 或者EDIT TEST03 或者VIEW TEST04 或者COMP 'IBMUSER.PROJ.TEST.JCL1((TEST01)' 这样,不需要另外PF3或者START开一个窗口。 比如需要在同一个PDS下的TEST02这个JCL中拷贝一些东西到当前的TEST01的时候,经常用到。

File  Edit  Edit_Settings  Menu  Utilities  Compilers  Test  Help            
 ```````````````````````````````````````````````````````````````````````````````
 VIEW       IBMUSER.PROJ.TEST.JCL ...
more ...

ICETOOL: 大小写转换

TRAN=UTOL : uppercase to lowercase
TRAN=LTOU : lowercase to uppercase
例子:

//CTL1CNTL DD *                                           
  INREC IFTHEN=(WHEN=INIT,OVERLAY=(1:1,3,TRAN=LTOU)),   :对input的进来处理的每一条数据的前3位先转为大写再说
              IFTHEN=(WHEN=(...),BUILD=(...)), 
              IFTHEN=(WHEN=(...),BUILD=(...))
more ...

ICETOOL:数据类型转换

//STEP001 EXEC PGM=ICETOOL,REGION=4096K,COND=(0,NE)           
//TOOLMSG  DD SYSOUT=*                                        
//DFSMSG   DD SYSOUT=*                                        
//SYSOUT   DD SYSOUT=*                                        
//SYSPRINT DD SYSOUT=*                                        
//IN                DD DSN=MYINPUT,DISP=SHR                           
//OUT           DD DSN=OUTFILE,DISP=SHR                             
//TOOLIN    DD *                                                
  COPY FROM(IN) TO(OUT)     USING(CTL1)                       
/*                                                            
//CTL1CNTL DD *                                               
  OUTFIL FNAMES=OUT,    MYINPUT的第 ...
more ...

ICEMAN:字符替换

用于替换dataset中出现的字符串:

//STEP001  EXEC  PGM=ICEMAN,REGION=4000K                    
//SORTIN  DD  DSN=MYINPUT,DISP=SHR                          
//SORTOUT DD  DSN=MYOUTPUT,DISP=SHR                         
//SYSIN  DD *                                               
  OPTION COPY                                               
  INREC FINDREP=(INOUT=(C'0000',C'AAAA',C'1111',C'BBBB'))   
//SYSOUT   DD  SYSOUT=*                                     
//SYSPRINT DD  SYSOUT=*                                     
//*                                                         

将出现的'0000'替换成'AAAA','1111'替换成‘BBBB‘ 当然,可以限定在特定几列替换 ...

more ...

ICETOOL: 多文件输出

取一个文件MYINPUT中的有用字段,组装成多个不同LRECL的输出文件。这个也是项目中用到的,我再这里简化了好多!

//STEP001 EXEC PGM=ICETOOL,REGION=4096K,COND=(0,NE)         
//TOOLMSG  DD SYSOUT=*                                      
//DFSMSG   DD SYSOUT=*                                      
//SYSOUT   DD SYSOUT=*                                      
//SYSPRINT DD SYSOUT=*                                      
//SORTWK01 DD UNIT=SYSDA,SPACE=(CYL,(30,3),RLSE)            
//IN      DD DSN=MYINPUT,DISP=SHR :LRECL=05                 
//OUT1    DD DSN ...
more ...

SORT: JOINKEY 文件连接

//STEP002 EXEC  PGM=SYNCSORT,REGION=4096K,COND=(0,NE)        
//SYSOUT   DD SYSOUT=*                                       
//SYSPRINT DD  SYSOUT=*                                      
//SORTJNF1 DD  DSN=FILE1,DISP=SHR                            
//SORTJNF2 DD  DSN=FILE2,DISP=SHR                            
//SORTOUT  DD  DSN=JOINOUT,DISP=SHR                          
//SYSIN DD *                                                 
  JOINKEYS FILE=F1,FIELDS=(1,5,A)                            
  JOINKEYS FILE=F2,FIELDS=(1,5,A ...
more ...

SORT:VB变长转FB定长,输出对齐

最近接触的项目,用的SORT的地方较多,准备写几篇sort的:

//STEP001  EXEC PGM=SYNCSORT,REGION=4096K                      
//SYSOUT   DD  SYSOUT=*                                        
//SYSPRINT DD  SYSOUT=*                                        
//SORTIN   DD  DSN=SORTIN,DISP=SHR                           
//SORTOUT  DD DSN=&&SORTOUT,DISP=(NEW,PASS),                   
//            DCB=(DSORG=PS,RECFM=FB,LRECL=80,BLKSIZE=0),      
//            UNIT=SYSDA,SPACE=(CYL,(5,5),RLSE)                
//SYSIN DD *                                                   
  SORT FIELDS=COPY ...
more ...

PLI 动态数组的例子

新写了一个PL/I程序,需要在程序里面用到动态数组来提高效率,所以总结了一下PL/I中动态数组(Dynamic Array)的用法:
1.申明一个Controlled的数组叫做WT_TMPARRAY_INFO,此时并不知道该数组的长度:

DCL  INPUTFIL FILE RECORD INPUT;
DCL  TMPARRAY_CTR         FIXED BIN(31)   INIT(0);                             
DCL  TMPARRAY_SUB         FIXED BIN(31)   INIT(1);  
DCL 01 TMPARRAY_RECORD,                                                        
        05 INPUT_CUR     CHAR(03)             INIT(' '),                          
        05 INPUT_ACCT    CHAR(05)             INIT(' '); 

/*******定义未知长度的动态数组WT_TMPARRAY_INFO*************************/
DCL ...
more ...

IBM DebugTool: 主动终止调试

在debug程序的过程中,如果已经知道了出错的原因不想再继续debug下去,但是又不希望按PF9使程序继续正常执行完(因为这样程序会把你辛辛苦苦造好的测试数据给消耗掉)。这时候,你可以在COMMAND栏输入:

trigger overflow

这样程序就会被当成正常溢出抛异常处理,你的测试数据就不会被消耗掉。除了overflow,其他异常终止的event也可以,比如数据转换异常这样的event。

more ...

CICS中查看TSQ的命令:CEBR

可以用CEBR这个transaction来查看和删除TSQ信息。这里:

  • CEBR#0VJTSQ的名字;
  • Z300 是当前CICS region的名字。
    ```ruby CEBR TSQ CEBR#0VJ SYSID Z300 REC 1 OF 0 COL 1 OF 0 ENTER COMMAND ===>
    **** TOP OF QUEUE *****

    **** BOTTOM OF QUEUE ****

TS QUEUE CEBR#0VJ DOES NOT EXIST
PF1 : HELP PF2 : SWITCH HEX/CHAR PF3 : TERMINATE ...

more ...