{"id":1742,"date":"2025-03-10T09:05:00","date_gmt":"2025-03-10T09:05:00","guid":{"rendered":"https:\/\/marketaylor.synology.me\/?p=1742"},"modified":"2025-03-10T09:08:51","modified_gmt":"2025-03-10T09:08:51","slug":"mq-aix-compiler-support","status":"publish","type":"post","link":"https:\/\/marketaylor.synology.me\/?p=1742","title":{"rendered":"AIX compiler support for MQ"},"content":{"rendered":"\n<p>One person asking a question will get an answer; two people asking the same question will probably prompt a post. So here&#8217;s the latest: MQ listed the XLC\/C++ 16 compiler for AIX as <a href=\"https:\/\/www.ibm.com\/docs\/en\/ibm-mq\/9.3?topic=935-deprecated-stabilized-removed-features-in-mq\" target=\"_blank\" rel=\"noreferrer noopener\">deprecated<\/a> in 2024 and support for it was removed in version 9.4.2. What does that mean for new development or existing applications?<\/p>\n\n\n\n<!--more-->\n\n\n\n<h3 class=\"wp-block-heading\">Introduction<\/h3>\n\n\n\n<p>The original <a href=\"https:\/\/www.ibm.com\/docs\/en\/ibm-mq\/9.4?topic=942-deprecated-stabilized-removed-features-in-mq\" target=\"_blank\" rel=\"noreferrer noopener\">deprecation <\/a>notice read:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>Support for the XL C\/C++ for AIX 16 compiler on AIX is deprecated from IBM MQ 9.3.5. From IBM MQ 9.3.5, you can compile AIX programs using the XLC 17 compiler alongside the XLC 16 compiler.<\/p>\n<cite>From the MQ documentation<\/cite><\/blockquote>\n\n\n\n<p>And then, <a href=\"https:\/\/www.ibm.com\/docs\/en\/ibm-mq\/9.4?topic=942-deprecated-stabilized-removed-features-in-mq\" target=\"_blank\" rel=\"noreferrer noopener\">with 9.4.2<\/a> we get:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>For Continuous Delivery, the IBM XL C\/C++ for AIX 16 compiler is removed from the product at IBM MQ 9.4.2. Compile AIX programs by using the IBM Open XL C\/C++ for AIX 17 compiler instead.<\/p>\n<\/blockquote>\n\n\n\n<p>The reason this gets special mention is because AIX have decided to switch from their own compiler technology to a system based on the <strong>clang <\/strong>compiler. And that has had a number of knock-on effects.<\/p>\n\n\n\n<p>So how does this really affect developers and application programs?<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">C Applications<\/h3>\n\n\n\n<p>For C programs, this should have no effect. Any existing MQ applications will continue to run unchanged. You can build new or rebuild older applications with the new compiler and still run on systems with older versions of MQ installed. There is no requirement to rebuild.<\/p>\n\n\n\n<p>C programs for a given architecture have a well-established ABI (Application Binary Interface). This means that programs and libraries agree on the interfaces between them. The loader\/linker processing can ensure that a program compiled with, say, <strong>gcc <\/strong>can work with a shared library compiled with an old version of XLC. While the XLC 16 compiler has reached its end-of-life, it is a normal and expected evolution to move to a new version of a C compiler. And if you prefer, even though MQ doesn&#8217;t officially list it as supported, you can even use <strong>gcc <\/strong>as another alternative compiler.<\/p>\n\n\n\n<p>As always there are constraints about building on one level of the OS and trying to run on an older level (which is not really anything to do with MQ). Switching to the newer compiler will likely need changes to Makefiles. And it might mean you see different error messages. But again that&#8217;s not really anything MQ-specific.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">C++ Applications<\/h3>\n\n\n\n<p>For C++, it&#8217;s a very different story. <\/p>\n\n\n\n<p>If you have a C++ program that is using the <em><a href=\"https:\/\/www.ibm.com\/docs\/en\/ibm-mq\/latest?topic=reference-mq-c-classes\" target=\"_blank\" rel=\"noreferrer noopener\">imq<\/a> <\/em>classes to work with MQ, then it will have to be recompiled. If the program is using the C MQI libraries alone, even though it is written in C++ itself, then there should again be no effects &#8211; just the same as C programs. ACE, for example, is primarily a C++ program, but it accesses MQ via the C libraries like <em>libmqm<\/em>. It is not affected by this deprecation\/removal.<\/p>\n\n\n\n<p>The C++ issues come about because of the way that C++ handles external symbols such as function names and makes them available to the linker\/loader. Each compiler takes a number of aspects of the name and <a href=\"https:\/\/en.wikipedia.org\/wiki\/Name_mangling#C++\" target=\"_blank\" rel=\"noreferrer noopener\">mangles it<\/a>. Usually there is some combination of a class name, function name, parameters and member types that gets mashed together. This mixture is then turned into a simple flat symbol that can be dealt with when libraries are combined. There is no agreed standard between compilers as to how the flattened name gets generated. It&#8217;s even claimed that this lack of standardisation is a <a href=\"https:\/\/en.wikipedia.org\/wiki\/Name_mangling#Standardized_name_mangling_in_C.2B.2B\" target=\"_blank\" rel=\"noreferrer noopener\">good thing<\/a>.<\/p>\n\n\n\n<p>AIX has, up to now, been very well-behaved with regards to keeping binary compatibility through multiple versions of its C++ compiler. But the move to the clang-based V17 has brought a different name-mangling algorithm. And there is no option to  use the original scheme. Some compatibility approaches exist, but they are very limited. See <a href=\"https:\/\/www.ibm.com\/docs\/en\/SSRZSMX_17.1.1\/pdf\/migrate.pdf\" target=\"_blank\" rel=\"noreferrer noopener\">this document<\/a> for all the V16 to V17 migration details.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">The MQ library changes<\/h4>\n\n\n\n<p>MQ C++ applications using the <em>imq <\/em>classes will link against one of the corresponding libraries. For example, <em>libimqs23ia.a<\/em>. The MQ product build process compiled that library using the V16 name-mangling scheme. But for <em>libimqs23ca.a<\/em>, the build used the V17 compiler and its scheme. We can see the symbol difference using the <strong>nm <\/strong>command. The <code>-C<\/code> flag says to print the real name rather than a C++-decoded form. Looking for one randomly-chosen method:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"># The C++ name shows in the default nm format\n$ nm libimqs23ia.a | grep backoutRequeueName\nImqQue::backoutRequeueName()         D 536881436   12\nImqQue::backoutRequeueName(ImqStr&amp;)  D 536881424   12\n# The V16 mangled names\n$ nm -C libimqs23ia.a | grep backoutRequeueName\nbackoutRequeueName__6ImqQueFR6ImqStr D 8204 12\nbackoutRequeueName__6ImqQueFv        D 8216 12\n# The V17 equivalent mangled names\n$ nm -C libimqs23ca.a | grep backoutRequeueName\n_ZN6ImqQue18backoutRequeueNameER6ImqStr D 536881424 12\n_ZN6ImqQue18backoutRequeueNameEv        D 536881436 12<\/pre>\n\n\n\n<p>We can immediately see different forms for the mangled names. We can also see how methods with the same name but different parameters have different symbols as well.<\/p>\n\n\n\n<p>MQ 9.4.2 does not ship the V16-compatible libraries; the <code>*ia.a<\/code> files were removed. Which means that an application that is relying on that version of the name-mangling scheme cannot find the symbols and cannot run. Even tricks with LD_LIBRARY_PATH cannot help unless you have stashed a copy of the old libraries somewhere else. <a href=\"https:\/\/www.ibm.com\/docs\/en\/ibm-mq\/latest?topic=programs-building-c-aix\" target=\"_blank\" rel=\"noreferrer noopener\">Rebuilding the C++ application<\/a> against the V17 libraries is the only option.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">$ cd \/mq_install\/mqm.941\/usr\/mqm\/lib64\n$ ls libimq*\nlibimqb23ca.a    libimqb23ia.a    libimqc23ca.a\nlibimqc23ia.a    libimqs23ca.a    libimqs23ia.a\nlibimqb23ca_r.a  libimqb23ia_r.a  libimqc23ca_r.a\nlibimqc23ia_r.a  libimqs23ca_r.a  libimqs23ia_r.a\n$ cd \/mq_install\/mqm.942\/usr\/mqm\/lib64\n$ ls libimq*\nlibimqb23ca.a    libimqb23ca_r.a  libimqc23ca.a\nlibimqc23ca_r.a  libimqs23ca.a    libimqs23ca_r.a<\/pre>\n\n\n\n<p>There should be no need to change the application source code as the API itself is not modified. But in your Makefiles, the compiler itself has a new name. And you need to change the library names from <code>*ia.a<\/code> to <code>*ca.a<\/code>. Possibly other flags to the compiler will be affected.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Other platforms<\/h4>\n\n\n\n<p>Although this has hit AIX for the first time, it&#8217;s not actually the first occurrence of the issue. Clearly there was no way to use the <strong>g++<\/strong> compiler on that platform as it had yet another mangler.<\/p>\n\n\n\n<p>But at one time on Windows, I think we shipped three different copies of the libraries to deal with various Visual C++ levels. Each of them had a different mangling algorithm. Microsoft eventually realised they had to do something and froze the compiler&#8217;s implementation. <\/p>\n\n\n\n<p>The Gnu CC compiler has also gone through multiple ABI\/mangling approaches, though I suspect we didn&#8217;t even think about that and shipped whichever level of the symbol table came out of the default compiler on the MQ build machines. And at most, one person I&#8217;ve heard of has asked about that. The <code>g++<\/code> compiler has also apparently settled down relatively recently.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Other symbol table issues<\/h4>\n\n\n\n<p>The MQ <em>imq <\/em>classes have been frozen in function to match the MQI as it was in MQ V6. One of the reasons for that was because the name mangling is not controlled solely by the compiler version. Changing almost any aspect of a class, including adding new public members, can modify the output from the same compiler. MQ V7 had many new API calls and options that would have resulted in lots of changes to the C++ classes. And it could not be done without changing the signatures, breaking existing applications even without changing compilers. <\/p>\n\n\n\n<p>Some of these enforced rebuilding situations could have been a theoretical opportunity to update the <em>imq <\/em>classes for the newer MQI function.  But doing it one platform at a time, when\/if that system&#8217;s ABI changed, was not really feasible.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Why C++ is an awful choice for API libraries<\/h3>\n\n\n\n<p>I made a veiled reference to this in a <a href=\"https:\/\/marketaylor.synology.me\/?p=1658\" target=\"_blank\" rel=\"noreferrer noopener\">previous article<\/a>, but it wasn&#8217;t really the best place for details. This seems a much better place.<\/p>\n\n\n\n<p>While C++ may be a perfectly good choice for application programs, I think it is a dreadful choice for API libraries. The variety of compilers and environments make it incredibly hard to support all the options that an application might work with. One product might ship XLC V16-compatible API libraries; another product might ship XLC V17-compatible libraries. Or the package might have been compiled with g++. There is no way an application can work if it needs to use functions from mixed-build libraries.<\/p>\n\n\n\n<p>If you must ship a product where the API library is written in C++, ensure that it really only exposes a C API via <code>extern \"C\"<\/code>. All C++ symbol resolution can then remain inside the API library and not need to go outside. Though that can also mean not using &#8220;standard&#8221; external class libraries unless they are embedded (statically linked?) into your product library. That is an approach I took for <a href=\"https:\/\/github.com\/ibm-messaging\/mq-exits\/apix\/otel\" target=\"_blank\" rel=\"noreferrer noopener\">this API exit<\/a>, which had to use C++, but present a C interface to the calling environment.<\/p>\n\n\n\n<p>This is not a new thing; I remember having similar discussions back when MQ was a baby.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">What about providing Open Source libraries? <\/h4>\n\n\n\n<p>At least you then have the possibility of recompiling the entire stack. But the build process for C++ applications can be complex. There&#8217;s no equivalent of <code>npm install<\/code> or <code>go mod<\/code> to automatically get the components. One reason, among others, that the MQ C++ libraries were not made Open Source (and we did discuss it) was the cost of needing to create appropriate standalone cross-platform Makefiles or equivalent.<\/p>\n\n\n\n<p>I&#8217;ve been looking recently at the OpenTelemetry C++ libraries and their build process is horrible. It requires a bunch of extra tools, making sure you have the right flags. And then making a choice of which ABI version to build for. The entire application stack has to use either their ABI1 or ABI2 variant. Which again makes it really hard to have pre-built instrumented libraries because we can&#8217;t know what the application is going to use. <\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Conclusion<\/h3>\n\n\n\n<p>I suspect that this will, in the end, not affect many people. I know that I&#8217;ve recommended for many years that C++ apps use the C MQI directly. And given the stabilised function, the <em>imq <\/em>classes are not particuarly attractive anyway. So I suspect that there are not a lot of active users for it.<\/p>\n\n\n\n<p>But the product documentation and the deprecation notices are perhaps more scary than they need to be.<\/p>\n\n\n\n<p>Hopefully, this has cleared up some of the issues.<\/p>\n<p class=\"last-modified\" style=\"border:1px solid;padding: 10px;\">This post was last updated on March 10th, 2025 at 09:08 am<\/p>","protected":false},"excerpt":{"rendered":"<p>One person asking a question will get an answer; two people asking the same question will probably prompt a post. So here&#8217;s the latest: MQ listed the XLC\/C++ 16 compiler for AIX as deprecated in 2024 and support for it was removed in version 9.4.2. What does that mean for new development or existing applications? &hellip; <a href=\"https:\/\/marketaylor.synology.me\/?p=1742\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;AIX compiler support for MQ&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":1748,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[5],"tags":[141,117,35,20],"class_list":["post-1742","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-mq","tag-aix","tag-compiler","tag-ibmmq","tag-mqseries"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>AIX compiler support for MQ - Mark Taylor&#039;s Blog<\/title>\n<meta name=\"description\" content=\"The XLC\/C++ compiler for AIX was marked as deprecated in 9.3.5, and support for it was removed by MQ in 9.4.2. What does that mean?\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/marketaylor.synology.me\/?p=1742\" \/>\n<meta property=\"og:locale\" content=\"en_GB\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"AIX compiler support for MQ - Mark Taylor&#039;s Blog\" \/>\n<meta property=\"og:description\" content=\"The XLC\/C++ compiler for AIX was marked as deprecated in 9.3.5, and support for it was removed by MQ in 9.4.2. What does that mean?\" \/>\n<meta property=\"og:url\" content=\"https:\/\/marketaylor.synology.me\/?p=1742\" \/>\n<meta property=\"og:site_name\" content=\"Mark Taylor&#039;s Blog\" \/>\n<meta property=\"article:published_time\" content=\"2025-03-10T09:05:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-03-10T09:08:51+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/marketaylor.synology.me\/wp-content\/uploads\/2025\/03\/c_logo-e1741342125359.png\" \/>\n\t<meta property=\"og:image:width\" content=\"64\" \/>\n\t<meta property=\"og:image:height\" content=\"64\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Mark\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@marketaylor\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Mark\" \/>\n\t<meta name=\"twitter:label2\" content=\"Estimated reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/marketaylor.synology.me\\\/?p=1742#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/marketaylor.synology.me\\\/?p=1742\"},\"author\":{\"name\":\"Mark\",\"@id\":\"https:\\\/\\\/marketaylor.synology.me\\\/#\\\/schema\\\/person\\\/2d6f4113ff54187023e20c20186bbb3c\"},\"headline\":\"AIX compiler support for MQ\",\"datePublished\":\"2025-03-10T09:05:00+00:00\",\"dateModified\":\"2025-03-10T09:08:51+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/marketaylor.synology.me\\\/?p=1742\"},\"wordCount\":1617,\"commentCount\":1,\"image\":{\"@id\":\"https:\\\/\\\/marketaylor.synology.me\\\/?p=1742#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/marketaylor.synology.me\\\/wp-content\\\/uploads\\\/2025\\\/03\\\/c_logo-e1741342125359.png\",\"keywords\":[\"aix\",\"compiler\",\"ibmmq\",\"mqseries\"],\"articleSection\":[\"IBM MQ\"],\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/marketaylor.synology.me\\\/?p=1742#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/marketaylor.synology.me\\\/?p=1742\",\"url\":\"https:\\\/\\\/marketaylor.synology.me\\\/?p=1742\",\"name\":\"AIX compiler support for MQ - Mark Taylor&#039;s Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/marketaylor.synology.me\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/marketaylor.synology.me\\\/?p=1742#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/marketaylor.synology.me\\\/?p=1742#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/marketaylor.synology.me\\\/wp-content\\\/uploads\\\/2025\\\/03\\\/c_logo-e1741342125359.png\",\"datePublished\":\"2025-03-10T09:05:00+00:00\",\"dateModified\":\"2025-03-10T09:08:51+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/marketaylor.synology.me\\\/#\\\/schema\\\/person\\\/2d6f4113ff54187023e20c20186bbb3c\"},\"description\":\"The XLC\\\/C++ compiler for AIX was marked as deprecated in 9.3.5, and support for it was removed by MQ in 9.4.2. What does that mean?\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/marketaylor.synology.me\\\/?p=1742#breadcrumb\"},\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/marketaylor.synology.me\\\/?p=1742\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/marketaylor.synology.me\\\/?p=1742#primaryimage\",\"url\":\"https:\\\/\\\/marketaylor.synology.me\\\/wp-content\\\/uploads\\\/2025\\\/03\\\/c_logo-e1741342125359.png\",\"contentUrl\":\"https:\\\/\\\/marketaylor.synology.me\\\/wp-content\\\/uploads\\\/2025\\\/03\\\/c_logo-e1741342125359.png\",\"width\":64,\"height\":64,\"caption\":\"C++ logo\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/marketaylor.synology.me\\\/?p=1742#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/marketaylor.synology.me\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"AIX compiler support for MQ\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/marketaylor.synology.me\\\/#website\",\"url\":\"https:\\\/\\\/marketaylor.synology.me\\\/\",\"name\":\"Mark Taylor&#039;s Blog\",\"description\":\"Messaging, Music and Moving Around\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/marketaylor.synology.me\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-GB\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/marketaylor.synology.me\\\/#\\\/schema\\\/person\\\/2d6f4113ff54187023e20c20186bbb3c\",\"name\":\"Mark\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/9a5ae091c43730194cba7cabb5d65c1dc3f48d05caaddec6ff2319a1ce66376f?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/9a5ae091c43730194cba7cabb5d65c1dc3f48d05caaddec6ff2319a1ce66376f?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/9a5ae091c43730194cba7cabb5d65c1dc3f48d05caaddec6ff2319a1ce66376f?s=96&d=mm&r=g\",\"caption\":\"Mark\"},\"sameAs\":[\"https:\\\/\\\/x.com\\\/marketaylor\"],\"url\":\"https:\\\/\\\/marketaylor.synology.me\\\/?author=1\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"AIX compiler support for MQ - Mark Taylor&#039;s Blog","description":"The XLC\/C++ compiler for AIX was marked as deprecated in 9.3.5, and support for it was removed by MQ in 9.4.2. What does that mean?","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/marketaylor.synology.me\/?p=1742","og_locale":"en_GB","og_type":"article","og_title":"AIX compiler support for MQ - Mark Taylor&#039;s Blog","og_description":"The XLC\/C++ compiler for AIX was marked as deprecated in 9.3.5, and support for it was removed by MQ in 9.4.2. What does that mean?","og_url":"https:\/\/marketaylor.synology.me\/?p=1742","og_site_name":"Mark Taylor&#039;s Blog","article_published_time":"2025-03-10T09:05:00+00:00","article_modified_time":"2025-03-10T09:08:51+00:00","og_image":[{"width":64,"height":64,"url":"https:\/\/marketaylor.synology.me\/wp-content\/uploads\/2025\/03\/c_logo-e1741342125359.png","type":"image\/png"}],"author":"Mark","twitter_card":"summary_large_image","twitter_creator":"@marketaylor","twitter_misc":{"Written by":"Mark","Estimated reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/marketaylor.synology.me\/?p=1742#article","isPartOf":{"@id":"https:\/\/marketaylor.synology.me\/?p=1742"},"author":{"name":"Mark","@id":"https:\/\/marketaylor.synology.me\/#\/schema\/person\/2d6f4113ff54187023e20c20186bbb3c"},"headline":"AIX compiler support for MQ","datePublished":"2025-03-10T09:05:00+00:00","dateModified":"2025-03-10T09:08:51+00:00","mainEntityOfPage":{"@id":"https:\/\/marketaylor.synology.me\/?p=1742"},"wordCount":1617,"commentCount":1,"image":{"@id":"https:\/\/marketaylor.synology.me\/?p=1742#primaryimage"},"thumbnailUrl":"https:\/\/marketaylor.synology.me\/wp-content\/uploads\/2025\/03\/c_logo-e1741342125359.png","keywords":["aix","compiler","ibmmq","mqseries"],"articleSection":["IBM MQ"],"inLanguage":"en-GB","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/marketaylor.synology.me\/?p=1742#respond"]}]},{"@type":"WebPage","@id":"https:\/\/marketaylor.synology.me\/?p=1742","url":"https:\/\/marketaylor.synology.me\/?p=1742","name":"AIX compiler support for MQ - Mark Taylor&#039;s Blog","isPartOf":{"@id":"https:\/\/marketaylor.synology.me\/#website"},"primaryImageOfPage":{"@id":"https:\/\/marketaylor.synology.me\/?p=1742#primaryimage"},"image":{"@id":"https:\/\/marketaylor.synology.me\/?p=1742#primaryimage"},"thumbnailUrl":"https:\/\/marketaylor.synology.me\/wp-content\/uploads\/2025\/03\/c_logo-e1741342125359.png","datePublished":"2025-03-10T09:05:00+00:00","dateModified":"2025-03-10T09:08:51+00:00","author":{"@id":"https:\/\/marketaylor.synology.me\/#\/schema\/person\/2d6f4113ff54187023e20c20186bbb3c"},"description":"The XLC\/C++ compiler for AIX was marked as deprecated in 9.3.5, and support for it was removed by MQ in 9.4.2. What does that mean?","breadcrumb":{"@id":"https:\/\/marketaylor.synology.me\/?p=1742#breadcrumb"},"inLanguage":"en-GB","potentialAction":[{"@type":"ReadAction","target":["https:\/\/marketaylor.synology.me\/?p=1742"]}]},{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/marketaylor.synology.me\/?p=1742#primaryimage","url":"https:\/\/marketaylor.synology.me\/wp-content\/uploads\/2025\/03\/c_logo-e1741342125359.png","contentUrl":"https:\/\/marketaylor.synology.me\/wp-content\/uploads\/2025\/03\/c_logo-e1741342125359.png","width":64,"height":64,"caption":"C++ logo"},{"@type":"BreadcrumbList","@id":"https:\/\/marketaylor.synology.me\/?p=1742#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/marketaylor.synology.me\/"},{"@type":"ListItem","position":2,"name":"AIX compiler support for MQ"}]},{"@type":"WebSite","@id":"https:\/\/marketaylor.synology.me\/#website","url":"https:\/\/marketaylor.synology.me\/","name":"Mark Taylor&#039;s Blog","description":"Messaging, Music and Moving Around","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/marketaylor.synology.me\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-GB"},{"@type":"Person","@id":"https:\/\/marketaylor.synology.me\/#\/schema\/person\/2d6f4113ff54187023e20c20186bbb3c","name":"Mark","image":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/secure.gravatar.com\/avatar\/9a5ae091c43730194cba7cabb5d65c1dc3f48d05caaddec6ff2319a1ce66376f?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/9a5ae091c43730194cba7cabb5d65c1dc3f48d05caaddec6ff2319a1ce66376f?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/9a5ae091c43730194cba7cabb5d65c1dc3f48d05caaddec6ff2319a1ce66376f?s=96&d=mm&r=g","caption":"Mark"},"sameAs":["https:\/\/x.com\/marketaylor"],"url":"https:\/\/marketaylor.synology.me\/?author=1"}]}},"jetpack_featured_media_url":"https:\/\/marketaylor.synology.me\/wp-content\/uploads\/2025\/03\/c_logo-e1741342125359.png","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/marketaylor.synology.me\/index.php?rest_route=\/wp\/v2\/posts\/1742","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/marketaylor.synology.me\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/marketaylor.synology.me\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/marketaylor.synology.me\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/marketaylor.synology.me\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1742"}],"version-history":[{"count":14,"href":"https:\/\/marketaylor.synology.me\/index.php?rest_route=\/wp\/v2\/posts\/1742\/revisions"}],"predecessor-version":[{"id":1757,"href":"https:\/\/marketaylor.synology.me\/index.php?rest_route=\/wp\/v2\/posts\/1742\/revisions\/1757"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/marketaylor.synology.me\/index.php?rest_route=\/wp\/v2\/media\/1748"}],"wp:attachment":[{"href":"https:\/\/marketaylor.synology.me\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1742"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/marketaylor.synology.me\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1742"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/marketaylor.synology.me\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1742"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}