IBM Mainframe Forum Index
 
Log In
 
IBM Mainframe Forum Index Mainframe: Search IBM Mainframe Forum: FAQ Register
 

Parameter of ILBOABN0 routine


IBM Mainframe Forums -> COBOL Programming
Post new topic   Reply to topic
View previous topic :: View next topic  
Author Message
pawasthi

New User


Joined: 08 Mar 2010
Posts: 15
Location: India

PostPosted: Wed Jun 05, 2013 4:32 pm
Reply with quote

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
View user's profile Send private message
Robert Sample

Global Moderator


Joined: 06 Jun 2008
Posts: 8696
Location: Dubuque, Iowa, USA

PostPosted: Wed Jun 05, 2013 4:57 pm
Reply with quote

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
View user's profile Send private message
Ranjithkumar

New User


Joined: 10 Sep 2008
Posts: 93
Location: India

PostPosted: Wed Jun 05, 2013 4:58 pm
Reply with quote

CALL 'ILBOABN0' USING WS-ABEND-CODE

Move the user abend code to WS-ABEND-CODE before calling.
Back to top
View user's profile Send private message
pawasthi

New User


Joined: 08 Mar 2010
Posts: 15
Location: India

PostPosted: Wed Jun 05, 2013 5:56 pm
Reply with quote

Thanks..Robert and Ranjith
I was looking for the same..:-)
Back to top
View user's profile Send private message
Gary McDowell

Active User


Joined: 15 Oct 2012
Posts: 139
Location: USA

PostPosted: Wed Jun 05, 2013 5:58 pm
Reply with quote

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
View user's profile Send private message
Bill Woodger

Moderator Emeritus


Joined: 09 Mar 2011
Posts: 7309
Location: Inside the Matrix

PostPosted: Wed Jun 05, 2013 11:26 pm
Reply with quote

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
View user's profile Send private message
Bill O'Boyle

CICS Moderator


Joined: 14 Jan 2008
Posts: 2501
Location: Atlanta, Georgia, USA

PostPosted: Wed Jun 05, 2013 11:37 pm
Reply with quote

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
View user's profile Send private message
Robert Sample

Global Moderator


Joined: 06 Jun 2008
Posts: 8696
Location: Dubuque, Iowa, USA

PostPosted: Wed Jun 05, 2013 11:51 pm
Reply with quote

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
View user's profile Send private message
Gary McDowell

Active User


Joined: 15 Oct 2012
Posts: 139
Location: USA

PostPosted: Thu Jun 06, 2013 12:09 am
Reply with quote

Thanks Robert.
Back to top
View user's profile Send private message
pawasthi

New User


Joined: 08 Mar 2010
Posts: 15
Location: India

PostPosted: Fri Jun 07, 2013 2:27 pm
Reply with quote

Thanks to All...:-)
Respect...!!!
Back to top
View user's profile Send private message
View previous topic :: :: View next topic  
Post new topic   Reply to topic View Bookmarks
All times are GMT + 6 Hours
Forum Index -> COBOL Programming

 


Similar Topics
Topic Forum Replies
No new posts Using the Jobname parameter in a Qual... ABENDS & Debugging 1
No new posts Demand with DEADLINE TIME parameter CA Products 4
No new posts Option DYNALLOC second parameter. DFSORT/ICETOOL 11
No new posts ACS exit routine JCL & VSAM 0
No new posts Writing the output file name from a p... JCL & VSAM 7
Search our Forums:

Back to Top