Wednesday, 31 August 2016

How to check whether a file is empty using JCL?

We can check whether a file is empty using the below methods,

USING IDCAMS

//STEP01 EXEC PGM=IDCAMS                          
//SYSPRINT DD  SYSOUT=*                            
//SYSOUT   DD  SYSOUT=*                            
//DDIN     DD  DSN=&TEST.DATA.FILE,DISP=SHR
//SYSIN    DD*
    PRINT INFILE(DDIN) COUNT(1) CHAR
/*    


IF RETURN CODE IS EQUAL TO 4 THE FILE IS EMPTY


USING SELCOPY

//STEP01 EXEC PGM=SELCOPY                          
//SYSPRINT DD  SYSOUT=*                            
//SYSOUT   DD  SYSOUT=*                            
//DDIN     DD  DSN=&TEST.DATA.FILE,DISP=SHR
//DDOUT    DD  DUMMY
//SYSIN    DD*
     READ DDIN
     WRITE DDOUT
/*    

IF THE RETURN CODE IS = 16 THEN THE FILE IS EMPY

USING ICETOOL

//STEP01 EXEC PGM=ICETOOL                          
//TOOLMSG  DD  SYSOUT=*                            
//DFSMSG   DD  SYSOUT=*                            
//DDIN     DD  DSN=&TEST.DATA.FILE,DISP=SHR
//TOOLIN   DD  DATA
     COUNT FROM(DDIN) EMPTY
/*    

IF THE RETURN CODE IS = 0 THEN THE FILE IS NOT EMPY ELSE EMPTY


USING IKJEFT01

//STEP01  EXEC PGM=IKJEFT01,DYNAMNBR=25

COUNTS THE NUMBER OF RECORDS IN THE FEED FILE

IF RETURN CODE IS LESS THEN 4 THE FILE IS EMPTY ELSE THE FILE HAS DATA.

COND in JCL

COND=(0,EQ) OR COND=(0,EQ,STEP01) OR COND=ONLY OR COND=EVEN

0             = RETURN CODE 
EQ         = LOGICAL OPERATOR (WE CAN GIVE CONDITIONS LIKE (GT - GREATER THEN,                  LT - LESSER THEN, GE - GREATER THEN OR EQUAL TO, LE - LESSER THEN OR                  EQUAL TO, EQ - EQUAL TO, NE - NOT EQUAL TO)
STEP01 = STEP NAME WHICH RETURN CODE HAS TO BE CONSIDERED.


EQUAL TO & NOT EQUAL TO

Eg:
//STEP01  EXCE  PGM=IKJEFT01
//
//STEP02  EXEC  PGM=IDCAMS,     
//              COND=(0,EQ,STEP01)


HERE THE STEP02 WILL BE BY PASSED IF THE STEP01 ENDS WITH RETURN CODE 0
IF THE CONDITION IS TRUE THEN THE STEP WILL GET BY PASSED IF THE CONDITION IS FALSE THEN THE STEP WILL GET EXECUTED.

Eg:
//STEP01  EXEC  PGM=IKJEFT01
//
//STEP02  EXEC  PGM=IDCAMS,     
//              COND=(0,NE,STEP01) 

HERE THE STEP02 WILL GET EXECUTED IF THE STEP01 ENDS WITH RETURN CODE > 0

LESS THEN & GREATER THEN

Eg:
//STEP01  EXEC  PGM=IKJEFT01
//
//STEP02  EXEC  PGM=IDCAMS,     
//              COND=(04,LT,STEP01)


HERE THE STEP02 WILL BE BY PASSED IF THE STEP01 ENDS WITH RETURN CODE 0
IF THE CONDITION IS TRUE THEN THE STEP WILL GET BY PASSED IF THE CONDITION IS FALSE THEN THE STEP WILL GET EXECUTED.

Eg:
//STEP01  EXEC  PGM=IKJEFT01
//
//STEP02  EXEC  PGM=IDCAMS,     
//              COND=(0,GT,STEP01) 

HERE THE STEP02 WILL GET EXECUTED IF THE STEP01 ENDS WITH RETURN CODE < 0

EVEN & ONLY
Eg:
//STEP01  EXEC  PGM=IKJEFT01
//
//STEP02  EXEC  PGM=IDCAMS,     
//              COND=EVEN 

HERE THE STEP02 WILL GET EXECUTED EVEN IF THE PREVIOUS STEP ABENDS OR SUCCESSFUL

Eg:
//STEP01  EXEC  PGM=IKJEFT01
//
//STEP02  EXEC  PGM=IDCAMS,    
//              COND=ONLY 

HERE THE STEP02 WILL GET EXECUTED ONLY IF THE PREVIOUS STEPS ABENDS

Tuesday, 30 August 2016

Overriding only one dataset in 3 concatenated datasets

Mention the override step with specific DD names with spaces for which we are not going to specify with any overrides from JCL.

For eg:

//STEP1.PRC   DD DSN=
//DDF1              DD DSN=MLOGI.DATA.FILE2,DISP=SHR
//DDF2              DD DSN=

Do not specify DD names with DUMMY as the datasets will be considered as DUMMY.

For eg:

//STEP1.PRC   DD DUMMY
//DDF1              DD DSN=MLOGI.DATA.FILE2,DISP=SHR
//DDF2              DD DUMMY

Expense Handler Application with advance technologies

Budget Planner  One of the application developed with Ionic 4 and Python-Flask.  Ionic 4 code:  https://github.com/logeshbuiltin/Expense...