Joined: 28 Mar 2005 Posts: 1448 Location: Chicago, IL
Hi All,
One of my job using IKJEFT01, executing REXX code. This step is returning RC=12 most of the time. And due to Cond Check job gets abended.
After abend, simply restarting job from the same step goes fine.
I m getting the Error Messages
Code:
IGD104I PDS.NAME.HAVING.REXX
IEC130I SYSPRINT DD STATEMENT MISSING
UNABLE TO OPEN SYSPRINT - ABNORMAL TERMINATION
IEF142I <JOBNAME> <STEPNAME> - STEP WAS EXECUTED - COND CODE 0012
Also in SYSOUT of the concerned step I find this messages.
Code:
READY
EX 'PDS.HAVING.REXX(MEMBER)'
System abend code 213, reason code 00000048.
Abend in host command EXECIO or address environment routine TSO.
EXECIO error while trying to GET or PUT a record.
System abend code 213, reason code 00000048.
Abend in host command EXECIO or address environment routine TSO.
EXECIO error while trying to GET or PUT a record.
COMMAND LIMIT NOT FOUND
COMMAND FROM NOT FOUND
COMMAND WHERE NOT FOUND
READY
END
Kindly suggest how can I get rid of job getting abended.
You've got what appears to be more than one problem here.
One, the SYSPRINT DD is not allocated in the job step, either in JCL or via a TSO ALLOCATE command, leading to the OPEN failure and the resulting IEC130I message being issued. The EXECIO S213 abend is probably a result of the SYSPRINT DD being missing from the JCL, but it could also be that EXECIO failed trying to read or write to another file. In addition, you're getting 'COMMAND NOT FOUND' on the command names 'LIMIT', 'FROM', and 'WHERE'. This is probably due to a REXX syntax error, like a missing comma or quote somewhere in the REXX exec
You need to take a clear look at the REXX code, then find and fix the problem. At a minimum, add a //SYSPRINT DD SYSOUT=* DD statement to the JCL for the IKJEFT01 job step.
I hope you are invoking IKJEFT01 via its alternate entry point name, IKJEFT1B. (i.e., PGM=IKJEFT1B on the JCL EXEC statement). This will make return codes from failing TSO commands invoked under the TMP propogate to the JCL COND CODE value for the job step if such a failure occurs.
Joined: 28 Mar 2005 Posts: 1448 Location: Chicago, IL
Thanking you both for the replies.
Quote:
At a minimum, add a //SYSPRINT DD SYSOUT=* DD statement to the JCL for the IKJEFT01 job step.
I m currently using this two statements in my job.
//SYSTSPRT DD SYSOUT=*
//SYSTSIN DD *
Quote:
I hope you are invoking IKJEFT01 via its alternate entry point name, IKJEFT1B. (i.e., PGM=IKJEFT1B on the JCL EXEC statement).
It is EXEC PGM=IKJEFT01 in my job.
I have a doubt here, If missing the SYSPRINT statement on EXEC statement is causing the problem, why the job is getting fine, when restarted from the same step after some time.
If your job invokes a REXX exec in batch, and that REXX exec, a program it calls, or some system utility it indirectly invokes needs to write to the SYSPRINT DD statement, and that DD statement is either NOT in the job's JCL or was NOT dynamically allocated after the job started, then you will see precisely this error: IEC130I SYSPRINT DD STATEMENT MISSING.
When the job was restarted, it may not have needed to write to SYSPRINT. Perhaps SYSPRINT is only needed under certain conditions.
You have to look at the REXX exec(s) this job invokes, study their logic and flow, and then decide how and when SYSPRINT is needed in order to understand this failure completely.
Joined: 10 Mar 2005 Posts: 432 Location: Milan, Italy
If your program is too long try to catch some information of your prog and put them in a display to surround your problem.
Rexx doesn't need SYSPRINT...and so I'm in accord with IronMike.... in some part of your source you call something(that you wish or not)
If you call some program be carefully that allocation of sysprint is before the call of the program and its free is after that.
As I learn from some batch/tp of rexx if you don't free all the file you alloc, when you restart after an abend, you can have some problem or magic resolution(i.e. you can have a file pending)