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 ...
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 ...
转战octopress
博客从wordpress
转到octopress
了,将原来的博客导过来修复了下格式什么的。
没有了后台和数据库什么的,纯静态的,用Sublime Text 2 + Git + MarkDown + Terminal
的方式写博客,更有兴致了。更重要的是看起来的确清爽了很多!博客部署在著名的Heroku上面,免费的~
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=(...))
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的第 ...
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‘
当然,可以限定在特定几列替换 ...
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 ...
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 ...
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 ...
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 ...