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

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

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

COBOL Compiler restricts me defining a PIC 9() variable not more than of ...

more ...

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

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

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

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

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

more ...

DB2 SQLcode


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