Peter

John McKown and Matthew Stitt have almost certainly provided the explanation
of what has happened.

It's always worth taking a good close look at the explanation of the message
which is puzzling you before panicking.

Since this is a "user" program it's almost certain that the user was unaware
of the requirement to put something sensible in register 15 before exiting
back to MVS. The bottom 12 bits of the binary number that just happens to be
sitting in register 15 when the program branches on register 14 back to MVS
gets presented as a return code in the IEF142I message.

This is the explanation of the condition code field of message IEF142I:

<quote>

cde
The condition code from the contents of general purpose register 15 at the
end of the step. If the last task of the step did not set a completion code
in register 15, the cde in the message is meaningless. In the event of
multiple failures in the same job step, the contents of register 15 refer
only to the last failure.

</quote>

I bet that "last task of the step did not set a completion code in register
15" and so "the cde in the message is meaningless". Maybe the program was
converted from VSE which, in the days when it was DOS anyhow, used an SVC
macro to "end the job". A "user program" is most unlikely to have a
complicated return code value like 3592 - or - if it did, the programmer
would surely have made sure there was an explanation of such complexity
available.

Contrary to what Tom says, it is also almost certain that the program ran
perfectly correctly - according to its own lights - and you have nothing to
worry about. You can, of course, adjust the neck size of the programmer down
one size while explaining that he (if it's "she" you might adopt a more
subtle approach) should pay attention to his (her) register 15s on exit - or
make sure "operations" has an explanation of his (her) exotic return codes.

I appreciate you assumed there was some general convention on return codes
which even got you Googling. Indeed there is a convention for such numbers
but there's every likelihood any one programmer will invent his/her own
standards. The convention is as follows:

0 is everything is perfect
4 there's something not quite right but, in principle, the program
functioned successfully; for example, there was no data to process
8 the program will need to be re-run once the problem or problems, one hopes
separately identified, has/have been sorted out

In other words 0 is good, 4 is "warning" and 8 or higher spells disaster. If
the return code number follows the convention of increasing (by 4
conventionally) with severity, I hate to think what Armageddon 3592 is
describing.

Chris Mason

----- Original Message ----- 
From: "Peter Ten Eyck" <[EMAIL PROTECTED]>
Newsgroups: bit.listserv.ibm-main
To: <[email protected]>
Sent: Friday, 03 November, 2006 10:32 PM
Subject: COND CODE 3592


> I have a job on z/OS 1.4 which uses tape (3490). The step runs a user
> program which appears to run to competition OK, but the job steps ends as
> follows:
>
> IEF142I USTXISOP USTXISOP ISOATEDG - STEP WAS EXECUTED - COND CODE 3592
>
>
> I am having difficulty finding what this condition codes means. It does
not
> help matters that 3592 also happens to be a tape drive model number. A
> search through all message books on the z/OS 1.4 site does not yield a
> meaningful answer. Google is not to helpful either. What is a 3592?

----- Original Message ----- 
From: "McKown, John" <[EMAIL PROTECTED]>
Newsgroups: bit.listserv.ibm-main
To: <[email protected]>
Sent: Friday, 03 November, 2006 10:40 PM
Subject: Re: COND CODE 3592

>
> What program is it running? Each program is free to issue any return
> code from 0 to 4095 that it wants to.
>
> However, it is likely that somebody simply forgot to zero register 15
> before returning back to z/OS. I've seen this happen with COBOL that
> calls assembler. The assembler program does not set the return code, so
> register 15 contains the address of the assembler program upon return to
> COBOL. COBOL then copies this into RETURN-CODE and the programmer never
> does a MOVE ZERO TO RETURN-CODE to reset it because "I never modified
> RETURN-CODE, so that can't be the problem!". Well, it was modified,
> implicitly, by calling the assembler subroutine.
>
> --
> John McKown
> Senior Systems Programmer
> HealthMarkets
> Keeping the Promise of Affordable Coverage
> Administrative Services Group
> Information Technology
>

----- Original Message ----- 
From: "Matthew Stitt" <[EMAIL PROTECTED]>
Newsgroups: bit.listserv.ibm-main
To: <[email protected]>
Sent: Friday, 03 November, 2006 10:57 PM
Subject: Re: COND CODE 3592


> Is it possible the program is not clearing register 15 to zero before
> returning to the operating system?

----- Original Message ----- 
From: "Tom Marchant" <[EMAIL PROTECTED]>
Newsgroups: bit.listserv.ibm-main
To: <[email protected]>
Sent: Saturday, 04 November, 2006 2:49 AM
Subject: Re: COND CODE 3592

> A program can set any condition code.  The only place where you can
> find it is in the documentation for the user program.  Or perhaps
> you can figure it out from the source.
>
> I assume that you have no documentation for the program.  If it's an
> in-house written program, you could ask the programmer.
>
> The program was obviously not adequately tested.  I would conclude
> from that that it did not run correclty.
>
> Tom Marchant

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html

Reply via email to