View previous topic :: View next topic
|
Author |
Message |
abdulrafi
Active User
Joined: 14 Sep 2009 Posts: 184 Location: Coimbatore
|
|
|
|
Hi,
I have searched in this forum and could not find the relevant answer for my question.
I do have a file. If the file has only one record it has to give me a return code of 0 else if it has more records then a return code of greater than 0.
I use the below code, but it always returns me 0 for how many ever records I have.
Code: |
//T040D5ZX JOB (P904030,T040,99,99),'EMPTY-TEST1',
// NOTIFY=&SYSUID,MSGCLASS=Q,TIME=(02,00),REGION=0M
//STEP01 EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//DD01 DD DSN=T040D5Z.INPUT.CSV,DISP=SHR
//SYSIN DD *
PRINT INFILE(DD01) COUNT(1)
/* |
Please advice. |
|
Back to top |
|
|
enrico-sorichetti
Superior Member
Joined: 14 Mar 2007 Posts: 10872 Location: italy
|
|
|
|
Quote: |
I do have a file. If the file has only one record it has to give me a return code of 0 else if it has more records then a return code of greater than 0.
|
use a bit of logic, please
averybody can tell about the past, nobody about the future
the same stands for IDCAMS
if You tell it to print 10 record it will tell back if there are less
it will stop at the 10th record ignoring what comes after
but You can easily do it Yourself using Your neurons and a bit of imagination
print ..... count(1)
AND
print ..... count(2)
and set LASTCC and MAXCC accordingly |
|
Back to top |
|
|
enrico-sorichetti
Superior Member
Joined: 14 Mar 2007 Posts: 10872 Location: italy
|
|
|
|
some more hints ...
test for success of
print ..... count(1)
the dataset is not empty
AND
test for failure of
print ..... count(2)
the dataset will contain just one record |
|
Back to top |
|
|
Marso
REXX Moderator
Joined: 13 Mar 2006 Posts: 1353 Location: Israel
|
|
|
|
or, if you have SYNCSORT:
Code: |
//SORT1 EXEC PGM=SYNCTOOL
//IN1 DD DISP=SHR,DSN=some.data.set name
//TOOLMSG DD SYSOUT=*
//SSMSG DD SYSOUT=*
//TOOLIN DD *
COUNT FROM(IN1) RC4 NOTEQUAL(1)
/*
|
If the file is empty or if there is more than 1 record, result will be:
Code: |
COUNT FROM(IN) RC4 NOTEQUAL(1)
SYT020I SYNCSORT CALLED WITH IDENTIFIER "0001"
SYT075I CONDITION FOR RECORD COUNT SATISFIED - RC=4 SET
SYT030I OPERATION COMPLETED WITH RETURN CODE 4 |
If there is exactly 1 record:
Code: |
COUNT FROM(IN) RC4 NOTEQUAL(1)
SYT020I SYNCSORT CALLED WITH IDENTIFIER "0001"
SYT056I CONDITION FOR RECORD COUNT NOT SATISFIED - RC=0 SET
SYT030I OPERATION COMPLETED WITH RETURN CODE 0 |
|
|
Back to top |
|
|
Bill Woodger
Moderator Emeritus
Joined: 09 Mar 2011 Posts: 7309 Location: Inside the Matrix
|
|
|
|
There's an implication that one record, no more, nor less, is what OP wants to know. If that is so, then NOTEQUAL(1) is what is required with ICETOOL.
The undocumented product (the entire product, not just this operand of a command) SyncTOOL does have NOTEQUAL for COUNT. |
|
Back to top |
|
|
abdulrafi
Active User
Joined: 14 Sep 2009 Posts: 184 Location: Coimbatore
|
|
|
|
Hi,
I got it as I needed using ICETOOL. Thanks a lot for your kind help. |
|
Back to top |
|
|
|