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 ...
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 ...
IBM DebugTool: 主动终止调试
在debug程序的过程中,如果已经知道了出错的原因不想再继续debug下去,但是又不希望按PF9使程序继续正常执行完(因为这样程序会把你辛辛苦苦造好的测试数据给消耗掉)。这时候,你可以在COMMAND
栏输入:
more ...trigger overflow
这样程序就会被当成正常溢出抛异常处理,你的测试数据就不会被消耗掉。除了
overflow
,其他异常终止的event也可以,比如数据转换异常这样的event。
CICS中查看TSQ的命令:CEBR
可以用CEBR这个transaction来查看和删除TSQ信息。这里:
CEBR#0VJ
是TSQ的名字;-
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 ...