View previous topic :: View next topic
|
Author |
Message |
pawasthi
New User
Joined: 08 Mar 2010 Posts: 15 Location: India
|
|
|
|
Hi All,
What are the parameter used for the ILBOABN0 abend routine,can anyone help me on this.
I have search it in google but not able to found. |
|
Back to top |
|
|
Robert Sample
Global Moderator
Joined: 06 Jun 2008 Posts: 8696 Location: Dubuque, Iowa, USA
|
|
|
|
The parameter is the return code you want set. This paraemter is a half-word binary value (PIC S9(04) COMP-5 in COBOL)
ILBOABN0 has been replaced by the LE program CEE3ABD and you should be using the LE program instead. |
|
Back to top |
|
|
Ranjithkumar
New User
Joined: 10 Sep 2008 Posts: 93 Location: India
|
|
|
|
CALL 'ILBOABN0' USING WS-ABEND-CODE
Move the user abend code to WS-ABEND-CODE before calling. |
|
Back to top |
|
|
pawasthi
New User
Joined: 08 Mar 2010 Posts: 15 Location: India
|
|
|
|
Thanks..Robert and Ranjith
I was looking for the same..:-) |
|
Back to top |
|
|
Gary McDowell
Active User
Joined: 15 Oct 2012 Posts: 139 Location: USA
|
|
|
|
Example code...
Code: |
01 WS-USER-ABEND-CODE PIC S9(04) COMP.
*--- EDIT PARM ---
IF LS-MONTH-VALUES
CONTINUE
ELSE
DISPLAY ' '
DISPLAY '*************************************'
DISPLAY '*** <program> INVALID PARM ***'
DISPLAY '*** ***'
DISPLAY '*** PARM MONTH (MUST BE 01 - 12).....'
LS-MONTH
DISPLAY '*** ***'
DISPLAY '*************************************'
MOVE +40 TO WS-USER-ABEND-CODE
CALL 'ILBOABN0' USING WS-USER-ABEND-CODE
END-IF. |
Notes: The above code will stop the program with a user abend code of 40 {U0040}.
Make all user abend codes unique in program so that it is easy to identify exactly where the abend occurred. Do NOT use codes greater that 4095 (system ignores - I think). |
|
Back to top |
|
|
Bill Woodger
Moderator Emeritus
Joined: 09 Mar 2011 Posts: 7309 Location: Inside the Matrix
|
|
|
|
As Robert has pointed out, IBM has recommended the CEE programs over ILBOABN0 since the inception of Language Environment.
CEE3ABD and CEE3AB2 are z/OS-specific modules.
CEE3DMP produces a dump, but no abend.
CEEABND is the LE-module for non-z/OS environments.
If moving (finally) from ILBO to CEE, be aware of the changed parameter lengths. |
|
Back to top |
|
|
Bill O'Boyle
CICS Moderator
Joined: 14 Jan 2008 Posts: 2501 Location: Atlanta, Georgia, USA
|
|
|
|
IIRC, "ILBOABN0" is AMODE 24. So, dynamically calling it from an AMODE 31 program (compiled using the default DATA(31) option) will raise a S0C4. The only way around this is the Caller must be compiled using the DATA(24) option, which allocates below-the-line storage, unless of course, it is statically-linked. Then, it would take on the Caller's characteristics.
Or, the Caller can CALL an Assembler sub-program which obtains 24-Bit storage via a z/OS GETMAIN (LOC=24) and returns the address to the Caller in a fword-parm. You would need a COBOL DSECT in LINKAGE for addressability. |
|
Back to top |
|
|
Robert Sample
Global Moderator
Joined: 06 Jun 2008 Posts: 8696 Location: Dubuque, Iowa, USA
|
|
|
|
Quote: |
Do NOT use codes greater that 4095 (system ignores - I think). |
Gary -- actually, the system does not ignore them. JES interprets the code modulo 4096 so the value is always between 0 and 4095. This becomes relevant when using batch FTP, as the FTP return code (if passed to the JCL) can be something like 27500 (27 means PUT, 500 means syntax error in command) which becomes step return code 2924 when 27500 is divided by 4096, or 16550 (16 means GET, 550 means file not found) becomes step return code 0166 when 16550 is divided by 4096. |
|
Back to top |
|
|
Gary McDowell
Active User
Joined: 15 Oct 2012 Posts: 139 Location: USA
|
|
|
|
Thanks Robert. |
|
Back to top |
|
|
pawasthi
New User
Joined: 08 Mar 2010 Posts: 15 Location: India
|
|
|
|
Thanks to All...:-)
Respect...!!! |
|
Back to top |
|
|
|