You can use:
//STEPXXXX EXEC PGM=ICETOOL
//TOOLMSG DD SYSOUT=*
//DFSMSG DD SYSOUT=*
//IN DD DSN=VSAM...
//TOOLIN DD DATA
COUNT FROM(IN) EMPTY
/*
or
//STEPXXXX EXEC PGM=ICETOOL
//TOOLMSG DD SYSOUT=*
//DFSMSG DD SYSOUT=*
//IN DD DSN=VSAM...
//TOOLIN DD DATA
COUNT FROM(IN) NOTEMPTY
/*
or
//STEPXXXX EXEC PGM=IDCAMS
//IN DD DSN=VSAM..
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
PRINT INFILE(IN) COUNT(1)
/*
However, I don't get this statement
In either case , the first step should return ZERO return code.
It's either going to have to give an RC=0 if it's empty, and a non-zero RC if it's not, or vice-versa. Both conditions can't result in the same RC.