IBM DebugTool的Source Identification Panel
IBM DebugTool,在debug过程中可以按PF4键,或者输入命令:
SOURCE or LIST
这时就会显示Source Identification Panel
面板,在这里即可得知您当前正在debug的所有程序(Compile Unit)的详细路径。知道了它们都是从哪一个loadlib
取到的,这确实对调试很有帮助。
Source Identification Panel
Command ===>
Compile Unit Listing/Source File Display
------------------------- -------------------------------------------- -------
TESTPGM1 IBMUSER.TEST.LOAD.LIB1(TETPGM1) Y
TESTPGM2 IBMUSER.TEST.LOAD.LIB2(TETPGM2) Y
TESTPGM3 IBMUSER.TEST.LOAD.LIB3(TETPGM3 ...
PL/I和COBOL如何取得当天的日期
在Mainframe上做开发会经常遇到用PL/I或者COBOL取得当天的日期,对于PL/I,一般的公司都采取如下的做法:
DCL PIC_TODAY PIC'999999' INIT(0);
PIC_TODAY = DATE;
IF SUBSTR(DATE,1,2) > '50'
THEN TODAYS_DATE = 19000000 + PIC_TODAY;
ELSE TODAYS_DATE = 20000000 + PIC_TODAY;
我所在的公司也是这种写法来获得YYYYMMDD
格式的当日日期,很明显这种写法代码的寿命只有几十年了,相比之下COBOL获得YYYYMMDD
格式的当日日期就显得方便得多,一个ACCEPT
语句即可:
WORKING-STORAGE SECTION.
01 TODAYS-DATE PIC 9(08).
.
.
.
PROCEDURE DIVISION.
ACCEPT TODAYS ...
COBOL程序编译报错GYDS1145-S
今天编译一个COBOL老程序的时候报错:IGYDS1145-S
IGYDS1145-S More than 18 digit positions were specified in a "PICTURE" string for a numeric or numeric edited item.
A "PICTURE" string of "S9(18)" was assumed.
原因是老的编译器不支持超过18位的长度变量,但是新的编译器支持。这个帖子里有讨论得更多。 http://ibmmainframes.com/post-9087.html
more ...COBOL Compiler restricts me defining a PIC 9() variable not more than of ...
Mainframe上随时查看任意库代码Rexx实现
Mainframe上面工作经常需要临时查看Production代码库当中的代码,又不希望输入长长的库名称。可以用REXX写一个Retrieve功能的脚本,放在
USERID.REXX.EXEC
这个pds下面。运行的时候TSO RET your_program_name
即可随时查看。这里是这个RET程序的实现方法,原本是公司内部用的,由前辈们积累下来的财产,我见它有通用性和扩展性,故稍作修改简化后贴这里:
EDIT IBMUSER.REXX.EXEC(RET) - 01.02 Columns 00001 00072
Command ===> Scroll ===> CSR
****** ***************************** Top of Data ******************************
000001 /* rexx */
000002 /*********** ret - retrieve specific member from multiple libs*********/
000003 arg ...
JCL批量注释
在JCL里面一次如何注释掉一整段连续的Statement? 下面这个替换思想的方法不错,不妨一试!
命令:C '//' '//*' ALL .X .Y
File Edit Edit_Settings Menu Utilities Compilers Test Help
VIEW IBMUSER.TEST.JCL(SORT) - 01.99 Columns 00001 00072
Command ===> C '//' '//*' ALL .X .Y Scroll ===> CSR
******** Top of Data *********************************************************
000001 //IBMUSERS JOB '000000000000000000CMP',
000002 // CLASS=0,NOTIFY=&SYSUID,MSGCLASS=R,TIME=NOLIMIT
000003 ...
Local FTP Trigger JES job
随便写了一个搜索ABC字符串的JCL,保存到桌面:
C:\Documents and Settings\Foo\Desktop\IBMUSERJ.txt
//IBMUSERJ JOB '000000000000000000CMP',
// CLASS=0,NOTIFY=IBMUSER,TIME=NOLIMIT,MSGCLASS=R
//ONLINE EXEC PGM=ISRSUPC,
// PARM=(SRCHCMP,
// 'ANYC')
//NEWDD DD DSN=IBMUSER.PROCLIB,DISP=SHR
//OUTDD DD SYSOUT=*
//SYSIN DD *
SRCHFOR 'ABC'
//*
用ftp的方式将jcl送入JES系统执行。win+R
打开cmd
C:\Documents and Settings ...
FTP from windows to Mainframe
win+R
打开cmd:
C:\Documents and Settings\Foo\Desktop>ftp ftpserver
/*Here please input username/password*/
ftp> ascii
200 Representation type is Ascii NonPrint
ftp> quote site lrecl=80 blksize=16000 recfm=fb
200 SITE command was accepted
ftp> put test.txt 'ibmuser.test.psfile(+1)'
200 Port request OK ...
CICS的TOR,AOR,FOR概念
CICS当中TOR,AOR,FOR
还有其它*OR什么意思?
TOR
是TERMINAL OWNING REGION,TOR上只定义TERMINAL,在TOR上定义PCT,REMOTE到AOR。当交易进入TOR后会被路由到对应的AOR去执行。AOR
是APPLICATION OWNING REGION,AOR上跑交易和应用程序。FOR
是FILE OWNING REGION
网上搜到老外的解释:Tor is where the terminals are defined, Aor is where the applications are defined and FOR where the files are defined.
Generally, TORs are the regions ...
SuperC SRCHFOR高级选项
在ISPF 3.4
选项下面使用SRCHFOR其实可以有高级选项功能的:比如能一次search多个string,比如能选择是否searchn那些已经被MIGRATE的那些dataset等等。
这里,要在IBMUSER.TEST.GDGRPT
的所有世代里面查找:shehui
, zhuyi
,hao
这三个字符串,包括那些已经被migrate的。
DSLIST - Data Sets Matching IBMUSER.TEST.GDGRPT Row 1 of 11
Command ===> Scroll ===> CSR
Command - Enter "/" to select action Message Volume
-------------------------------------------------------------------------------
IBMUSER.TEST.GDGRPT Not searched ??????
IBMUSER.TEST ...