View previous topic :: View next topic
|
Author |
Message |
gregory oakes
New User
Joined: 21 Jan 2021 Posts: 8 Location: Canada
|
|
|
|
CICS COBOL Program tries to read a VSAM file and since the file is not setup correctly the program reports this error:
Transaction I001 failed with abend ????
After some small changes, I got the following error that is a bit more helpful:
Transaction I001 failed with abend AEIL
I looked up AEIL and
the explanation is 'FILENOTFOUND condition not handled'.
I know that when the file is present, and setup correctly in CICS, then I don't get this error.
After some checking I figured out that AEIL - FILENOTFOUND is RESP code 12.
Is there a method in CICS programming to convert things like EIBRESP=12 to 'FILENOTFOUND' without having to custom code the translation of 12 to appropriate text?
I have the same question for other fields in the Exec Interface Block (EIB): EIBFN, EIBRCODE, EIBRESP2.
I have spent much time searching online, and browsing through the CICS manuals, and have not come across a solution. In fact, the only reference I found was mentions about 'EIBFN_NAME' in discussions about EIBFN, but there was no mention of where this NAME field is, or how to access it. I suspected there must be a method or function or utility or something else that might do the conversion from a code to a literal for the code. Still no luck finding it.
My guess is that if it exists then it is under a name or acronym that I have not thought of so far.
Thanks,
Greg |
|
Back to top |
|
|
Rohit Umarjikar
Global Moderator
Joined: 21 Sep 2010 Posts: 3076 Location: NYC,USA
|
|
|
|
You can create your own copybook and use that for custom translations to any text you want based on the error codes. |
|
Back to top |
|
|
gregory oakes
New User
Joined: 21 Jan 2021 Posts: 8 Location: Canada
|
|
|
|
Are you saying that there is no generic method or utility to convert codes to text in this case, and that custom code is the only way to do this?
I was hoping that with all the tables in the documentation that show the codes and corresponding text, that there was some generic method or utility for this versus custom code.
Custom coding always is risky due to normal evolution of the platform. Any changes to codes, or addition of codes would then be always missing from the custom coding, and could cause problems in the future. |
|
Back to top |
|
|
prino
Senior Member
Joined: 07 Feb 2009 Posts: 1315 Location: Vilnius, Lithuania
|
|
|
|
Automate the creation of the copybook.
I have an edit macro that decodes error messages from the z/OS XML parser. It accepts, be it with just a bit of manual massaging, the Cut & Paste'd section of the IBM PDF and spits out the message-text when given the returncode. I'm sure it wouldn't be much harder to do something similar for CICS messages, and it would just be included in the script executed upon the upgrade to a new version of CICS. |
|
Back to top |
|
|
gregory oakes
New User
Joined: 21 Jan 2021 Posts: 8 Location: Canada
|
|
|
|
Interesting idea Robert, but it sounds like there is no generic method or utility to convert codes to text in this case, and that custom code is the only way to do this. Is that correct? |
|
Back to top |
|
|
prino
Senior Member
Joined: 07 Feb 2009 Posts: 1315 Location: Vilnius, Lithuania
|
|
|
|
And you can always file an RFE suggesting that IBM creates a member in (one of) the CICS samplib(s) containing the messages.
In a grey(ish) past (2015) I've suggested that IBM adds similar members to the Enterprise PL/I samplib with the compiler options and those of still, in-service, older versions so that users can compare changes and update their site-set-up. It was accepted. This would be just as useful. |
|
Back to top |
|
|
Rohit Umarjikar
Global Moderator
Joined: 21 Sep 2010 Posts: 3076 Location: NYC,USA
|
|
|
|
gregory oakes wrote: |
Are you saying that there is no generic method or utility to convert codes to text in this case, and that custom code is the only way to do this?
I was hoping that with all the tables in the documentation that show the codes and corresponding text, that there was some generic method or utility for this versus custom code.
Custom coding always is risky due to normal evolution of the platform. Any changes to codes, or addition of codes would then be always missing from the custom coding, and could cause problems in the future. |
1. I missed to understand why do you need to translate it ?
2. IBM Manual has the Code Vs Text mapping already and you can always refer that when you know the error code.
3. If you still require to translate it then I don't remember of anything CICS provides by it own other than customizing the creation of copybook.
EXEC interface block fields |
|
Back to top |
|
|
enrico-sorichetti
Superior Member
Joined: 14 Mar 2007 Posts: 10888 Location: italy
|
|
|
|
Quote: |
Any changes to codes, or addition of codes would then be always missing from the custom coding, and could cause problems in the future. |
unless the developers in Your organisation are plain morons
I do not see what kind of problems your organisation might face
changes in the RESP codes, certainly NOT
new codes probably yes , but I do not see the problem
as soon as a developer gets a numeric representation instead of the pseudo clear text
somebody will just have to add the entry
anyway the addition/changes in the return codes is ALWAYS Cleary documented in the migration guides |
|
Back to top |
|
|
gregory oakes
New User
Joined: 21 Jan 2021 Posts: 8 Location: Canada
|
|
|
|
Hello,
My interest was in trying to make the error codes more meaningful by translating them to appropriate text. Having custom code to do this is one option, but having system method or utility or function to do this is always better.
I did some testing and it seems that the CICS default error handling does convert numeric codes to literals. In Test 1 example below, if the EXEC CICS READ does not have RESP or NOHANDLE clause then the default error handling is used. The abort shows code AEIL, which is translated from code 12 that means 'FILENOTFOUND'. This implies that CICS has routines that translate numeric codes into literals, but I have yet to find samples of this coding to see if I can utilize it versus writing custom code.
======================
Test 1 - CMF000 file does not exist
and no error handling logic
*
EXEC CICS
READ FILE ('CMF000')
INTO (CUSTOMER-MASTER-RECORD)
RIDFLD(CUSTNOI)
END-EXEC.
*
CICS sent this message:
DFHAC2206 15:46:01 CICSTS54 Transaction I000 failed with abend AEIL.
AEIL is FILENOTFOUND error
=====================
In Test 6 example below, it shows that using user defined error handling with RESP clause on EXEC READ, that the RESPONSE-CODE is a numeric 12.
Test 6 - use RESPONSE-CODE-X-5-8 for ABCODE in ABEND
In Working-Storage:
01 RESPONSE-CODE PIC S9(8) COMP.
01 RESPONSE-CODE-9 PIC 9(8).
01 RESPONSE-CODE-X REDEFINES
RESPONSE-CODE-9.
05 RESPONSE-CODE-X-1-4 PIC X(4).
05 RESPONSE-CODE-X-5-8 PIC X(4).
In Procedure Division:
*
EXEC CICS
READ FILE ('CMF000')
INTO (CUSTOMER-MASTER-RECORD)
RIDFLD(CUSTNOI)
RESP (RESPONSE-CODE)
END-EXEC.
*
MOVE RESPONSE-CODE TO RESPONSE-CODE-9.
IF RESPONSE-CODE = DFHRESP(NORMAL)
MOVE 'READ - NORMAL' TO MESSAGEO
ELSE
EXEC CICS
ABEND ABCODE (RESPONSE-CODE-X-5-8)
END-EXEC
END-IF.
*
CICS sent this message:
DFHAC2206 16:58:50 CICSTS54 Transaction I000 failed with abend 0012.
'0012' is from ABCODE on ABEND
=====================
I have written a copy library containing the table to convert EIBRESP number to a literal. See RESPT002.txt.
And suggested lines for Procedure Division that may need some customization for individual programs. See RESPH002.txt. |
|
Back to top |
|
|
gregory oakes
New User
Joined: 21 Jan 2021 Posts: 8 Location: Canada
|
|
|
|
Missing attachments that were discard during previous post. |
|
Back to top |
|
|
|