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-提高效率少用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 ...

转战octopress

博客从wordpress转到octopress了,将原来的博客导过来修复了下格式什么的。
没有了后台和数据库什么的,纯静态的,用Sublime Text 2 + Git + MarkDown + Terminal的方式写博客,更有兴致了。更重要的是看起来的确清爽了很多!博客部署在著名的Heroku上面,免费的~

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