Why every message is prefixed with a message id code (eg: IEF125I)?
I have seen the same convention in other software that has mainframe roots, such as IBM TSM and HDS HORCM, and was always interested in this question.
What is the original idea behind these message codes? The most obvious suggestion is probably to enable the user
to find every message in the documentation, but is it really the case? Maybe there is some interesting historical background behind these message codes?
Indeed, if the entire message text is printed along with the message id, the latter is completely redundant.
It's interesting that TSO messages are not prefixed with message ids.
Origin of IBM message codes
-
- Global moderator
- Posts: 2105
- Joined: Thu Jun 03, 2010 6:21 pm
- Skillset: Assembler, JCL, utilities
- Referer: zos.efglobe.com
Re: Origin of IBM message codes
Now I was just an observer at the time, so take this for what it's worth. There were two major goals.
There were several Assemblers. Similarly there were several Cobol and Fortran compilers. Usually, when you see a letter appended to something, like Fortran G, Assembler F or Assembler E, the letter referred to the storage on the smallest machine that could run the product: E 32K, F 64K, G 128K, H 256K. In OS/360 days this was very important. Storage in those days was very, very expensive.
Breaks in the scheme sometimes indicated mistakes. Fortran G, for example, was not envisioned in the original scheme. In fact, I understand IBM bought it from an outside supplier when they realized Fortran E wan't going to cut it and Fortran H was just too big for too many users. An H level Linkage Editor was in the original scheme, but they bought a Linkage Editor to supplant the E level linkage editor for the F and G users. The F level Linkage Editor was good enough they never produced the H level Linkage editor, though many would consider the Binder to be the "big" Linkage Editor even though OS/360 had been pretty much forgotten when it did finally appear.
Now, as I said there was some overlap. IEHIOSUP (long forgotten), for example was, in practice, a data set utility, though its only purpose was to be used by System Programmers to fiddle with SYS1.SVCLIB, so it got the IEH prefix.
- Figure out who issued the message. Most major components were issued a 3 character identifier by someone. Now there was some overlap, so some of this is shaky. I'll just give you a sample. I don't have it all memorized, anyway, so it's far from complete.
IEA - OS Supervisor
IEB - Data set utilities
IEH - "System" utilities
IEC - Data management
IET - An infrequently used Assembler
IEU - Assembler F
IEV - Assembler H
IEW - Linkage Editor
IEY - Fortran G
IHC - Fortran library - Combine messages so it was relatively easy to look up the message from the message code.
There were several Assemblers. Similarly there were several Cobol and Fortran compilers. Usually, when you see a letter appended to something, like Fortran G, Assembler F or Assembler E, the letter referred to the storage on the smallest machine that could run the product: E 32K, F 64K, G 128K, H 256K. In OS/360 days this was very important. Storage in those days was very, very expensive.
Breaks in the scheme sometimes indicated mistakes. Fortran G, for example, was not envisioned in the original scheme. In fact, I understand IBM bought it from an outside supplier when they realized Fortran E wan't going to cut it and Fortran H was just too big for too many users. An H level Linkage Editor was in the original scheme, but they bought a Linkage Editor to supplant the E level linkage editor for the F and G users. The F level Linkage Editor was good enough they never produced the H level Linkage editor, though many would consider the Binder to be the "big" Linkage Editor even though OS/360 had been pretty much forgotten when it did finally appear.
Now, as I said there was some overlap. IEHIOSUP (long forgotten), for example was, in practice, a data set utility, though its only purpose was to be used by System Programmers to fiddle with SYS1.SVCLIB, so it got the IEH prefix.
Re: Origin of IBM message codes
Thank you! Very interesting. I knew there should be some logic behind this.
It now makes much more sense to me.
It now makes much more sense to me.
-
- Global moderator
- Posts: 3006
- Joined: Fri Apr 18, 2008 11:25 pm
- Skillset: tso,rexx,assembler,pl/i,storage,mvs,os/390,z/os,
- Referer: www.ibmmainframes.com
Re: Origin of IBM message codes
see here for an explanation of the three letter message id
https://www.ibm.com/support/knowledgece ... msgpre.htm
https://www.ibm.com/support/knowledgece ... msgpre.htm
cheers
enrico
When I tell somebody to RTFM or STFW I usually have the page open in another tab/window of my browser,
so that I am sure that the information requested can be reached with a very small effort
enrico
When I tell somebody to RTFM or STFW I usually have the page open in another tab/window of my browser,
so that I am sure that the information requested can be reached with a very small effort
-
- Posts: 474
- Joined: Thu Mar 10, 2016 5:03 pm
- Skillset: assembler rexx zOS ispf racf smf
- Referer: saw it in the experts foprum thought I could help here
Re: Origin of IBM message codes
It's interesting that TSO messages are not prefixed with message ids.
But they are, you probably have NOMSGID set in on your TSO profile. Do command TSO PROFILE and check the displayed values.
-
- Global moderator
- Posts: 2105
- Joined: Thu Jun 03, 2010 6:21 pm
- Skillset: Assembler, JCL, utilities
- Referer: zos.efglobe.com
Re: Origin of IBM message codes
Mr. Jensen is correct. This mostly applies to messages for line mode TSO, not to ISPF.
PROFILE MSGID/NOMSGID applies to messages run through TSO I/O services (something few programmers know how to do), not to messages delivered to the terminal through other services.
Code: Select all
PROF
CHAR(0) LINE(0) PROMPT INTERCOM NOPAUSE NOMSGID NOMODE WTPMSG NORECO
VER PREFIX(xxxxxx) PLANGUAGE(ENU) SLANGUAGE(ENU)
DEFAULT LINE/CHARACTER DELETE CHARACTERS IN EFFECT FOR THIS TERMINAL
Code: Select all
prof msgid list
IKJ56688I CHAR(0) LINE(0) PROMPT INTERCOM NOPAUSE MSGID NOMODE WTPMS
G NORECOVER PREFIX(xxxxxx) PLANGUAGE(ENU) SLANGUAGE(ENU)
IKJ56689I DEFAULT LINE/CHARACTER DELETE CHARACTERS IN EFFECT FOR THIS TERMINAL
READY
ii badpgm '79' rc
II003A BADPGM NOT FOUND IN THE STANDARD SEARCH DOMAIN
IKJ56703A REENTER THIS OPERAND -
setcc
II001I SETCC RC = 79
READY
prof nomsgid list
CHAR(0) LINE(0) PROMPT INTERCOM NOPAUSE NOMSGID NOMODE WTPMSG NORECO
VER PREFIX(xxxxxx) PLANGUAGE(ENU) SLANGUAGE(ENU)
DEFAULT LINE/CHARACTER DELETE CHARACTERS IN EFFECT FOR THIS TERMINAL
READY
ii badpgm '97' rc
BADPGM NOT FOUND IN THE STANDARD SEARCH DOMAIN
REENTER THIS OPERAND -
setcc
SETCC RC = 97
READY
PROFILE MSGID/NOMSGID applies to messages run through TSO I/O services (something few programmers know how to do), not to messages delivered to the terminal through other services.
Re: Origin of IBM message codes
Yes, you are right. My TSO profile includes NOMSGID.
Thanks to everyone, it is a great help.
What I have understood now is that I should not look for any sense in these 3-letter message prefix, just take them as is
Thanks to everyone, it is a great help.
What I have understood now is that I should not look for any sense in these 3-letter message prefix, just take them as is

-
- Similar Topics
- Replies
- Views
- Last post
-
- 13
- 8376
-
by valeca
View the latest post
Fri Sep 30, 2022 11:22 pm
-
-
SYNCSORT DATASORT message SYT076E
by f1_lemaner » Thu Dec 23, 2021 11:12 pm » in DFSORT/ICETOOL/ICEGENER - 5
- 1849
-
by f1_lemaner
View the latest post
Fri Dec 24, 2021 2:23 pm
-
-
-
How can I copy message queue files (LGMSG,SHMSG) in V9R1
by futohomok » Thu Jul 27, 2023 5:54 pm » in IMS DB/DC - 6
- 1953
-
by futohomok
View the latest post
Thu Aug 03, 2023 1:21 pm
-