IBM MQ V9.1.5 Announced

IBM has announced IBM MQ V9.1.5 for Multiplatforms:
https://www-01.ibm.com/common/ssi/ShowDoc.wss?docURL=/common/ssi/rep_ca/9/877/ENUSZP20-0119/index.html
Planned availability for IBM MQ V9.1.5 is April 2, 2020 for Electronic software delivery.

Ian Harwood of IBM wrote a blog posting summarizing the IBM V9.1.5 CD release.
https://community.ibm.com/community/user/imwuc/blogs/ian-harwood1/2020/04/02/mq915ga

IBM MQ (aka WebSphere MQ) homepage
https://www.ibm.com/products/mq

Regards,
Roger Lacroix
Capitalware Inc.

Fix Packs for MQ, IBM MQ, IBM MQ Appliance, Linux, Unix, Windows, z/OS Comments Off on IBM MQ V9.1.5 Announced

Working from Home – Loneliness / Self-Isolation

Chris Hadfield is a retired astronaut. You may remember him from his rendition of Space Oddity on the International Space Station (ISS) in 2013.

He spent 166 days in space. So, if you are feeling lonely, depressed or don’t know how you will handle working from home then watch the following:

Regards,
Roger Lacroix
Capitalware Inc.

Education, General Comments Off on Working from Home – Loneliness / Self-Isolation

New: Capitalware Software Lifecycle Pages

Earlier this week, a customer asked if we could publish a software lifecycle page for MQAUSX. Since, I wasn’t knee deep into fixing a bug, I figured I would create a Software Lifecycle page for each commercial product.

Each lifecycle page has 3 columns: version, general availability and end of support. The version number is clickable that will take the user to the particular product’s announcement page.

Note: I started the blog in December 2010. Hence, the announcement pages only go back to then.

Regards,
Roger Lacroix
Capitalware Inc.

Capitalware, MQ Auditor, MQ Authenticate User Security Exit, MQ Batch Toolkit, MQ Channel Connection Inspector, MQ Channel Encryption, MQ Channel Throttler, MQ Enterprise Security Suite, MQ Message Encryption, MQ Message Replication, MQ Standard Security Exit, MQ Visual Browse, MQ Visual Edit Comments Off on New: Capitalware Software Lifecycle Pages

Nerd PSA on Coronavirus aka COVID-19

The other day I wrote about Coronavirus aka COVID-19 and my wife, Cynthia (a pharmacist) has found out more information that I’ll share with the rest of the nerds out there. 🙂

New information:

  • If you have blood type ‘A’, then hide, hide, hide. You can read these articles: here and here.
  • Do not take ibuprofen – take Tylenol instead. You can read this article.

Attention young people: In USA, 40% of the people in ICU are between the age of 20 and 54!!!

Recap from other posting:

  • There is a strong link between people with cardiac diseases, hypertension, diabetes and COVID-19. You can read these articles: here, here and here.
  • There is a strong link between people with vitamin D deficiency (northern people) and COVID-19. You can read these articles: here and here.

So, the cardiac diseases, hypertension and diabetes link explains why it appears to affect older people because young people tend not to have these issues.

Basically, if you are on drugs for cardiac diseases, hypertension, diabetes then you have 3 to 5 times more receptors, hence, a greater probably of getting COVID-19 and with more receptors means more attachment of the virus. i.e. It is like comparing cheap glue with Krazy or Gorilla glue. You don’t want to have COVID-19 make a strong bond to you!! Hence, if you don’t know what medicine you are taking ask your doctor or pharmacist. I just happen to be lucky that my wife is a pharmacist.

Regards,
Roger Lacroix
Capitalware Inc.

General Comments Off on Nerd PSA on Coronavirus aka COVID-19

Working from Home – Open Source Software

The other day I wrote about working from home, since I recently upgraded both my desktop and laptop to Windows 10 64-bit, I thought I should review/list the open source software I use to get the job done.

You don’t need to go broke setting up your PC/laptop with software. Here is a list of open source (or free) software that I use:

Eclipse (for Java and C development) is, in my opinion, the best IDE for programmers.
Microsoft Visual Studio Community 2015
AdoptOpenJDK
Open Object REXX
Apache HTTP Server
Inno Setup is an installer for Windows programs.
LibreOffice (alternative to Microsoft Office)
Thunderbird is an email client (alternative to Outlook)
Firefox is a web browser
Adobe Reader is a PDF viewer
WinAmp is a great music player
Irfanview is a graphic viewer
Kee Pass 2 a tool for managing your passwords
PuTTY for logging into Unix / Linux servers
TN5250J for logging into IBM i (OS/400) servers
x3270 for logging into z/OS (mainframe) servers
TightVNC for controlling other servers (Windows, Linux or Unix)
FAR is a great file manager
Visual Diff is a really good program that compares the contents of 2 files
7-Zip is a file archiver
Virtual CloneDrive allows you to mount ISO, BIN & CCD files
Cobian and RoboCopy are great programs to backup / synchronize your files (BACKUP YOUR FILES!!!)

Even though I have Microsoft Visual Studio Community IDE installed, I don’t use it. I use Eclipse and makefiles for my C development. I rarely do any GUI development in C, so switching back and forth between Visual Studio IDE and Eclipse just slows me down. Hence, I can code much faster if I just stay in Eclipse and do all of my development in it. And yes, I said I use makefiles. Developers get so freaked-out when you say makefiles. But there is nothing wrong with using makefiles. All it means is that the developer needs to understand what components his/her project uses. I have to use makefiles on AIX, HP-UX, Linux, Solaris, IBM i (OS/400) and z/OS (JCL actually), so what is wrong with using makefiles on Windows? Absolutely nothing.

I create/update all of the product manuals (open source, licensed as free and commercial) using LibreOffice. I currently have roughly 100 product manuals and I have no issues using LibreOffice. It works really well and I like the 1-click button to create a PDF.

Finally, if you are a developer or not, make sure you backup your stuff. Besides, Cobian and RoboCopy, there are lots of open source programs to backup your important files, pictures, code, documents, etc. It doesn’t matter what you use, just use something.

Regards,
Roger Lacroix
Capitalware Inc.

.NET, C, C#, C++, Capitalware, Java, JMS, Open Source, Programming, Rexx, Windows Comments Off on Working from Home – Open Source Software

Customer Requested Enhancement to MQMR

MQ Message Replication (MQMR) is an MQ API Exit. An MQ API Exit is configured to run within the queue manager’s address space (or the application’s address space if the application connects in bindings mode to the queue manager).

For MQMR v1.1.0, a customer requested that information be added to the replicated messages, so that the consumer application would know what the source queue manager names and source queue names were. This was done with via MQ’s named properties.

In MQMR v2.0.0, 2 auxiliary programs were added: mq2sdb and sdb2mq. These programs allowed the customer to offload replicated messages to an SQLite database and the ability to reload the message to a queue.

I also published the format of the tables in the SQLite database.

Recently, a customer requested that the source queue manager names and source queue names be written to the SQLite database. At first, I was a little reluctant to do it because I had published the format of the table in the SQLite database but then I realize that I could add 2 columns to the end of the table plus add 2 new tables to handle the information without affecting other customer’s applications.

(1) mq2sdb program has a new keyword called: IncludeSourceInfo. IncludeSourceInfo specifies whether or not the source queue manager name and queue name (if present) be written to the SQLite database. The default value is N.

(2) sdb2mq program has 3 new keywords: UseSelect, SelectQMgrName & SelectQName. UseSelect specifies whether or not the rows of the IBM_MQ_MESSAGES table will be selected by either queue manager name or queue name or both. The default value is N.

For those 3rd party applications that customers use to offload replicated messages from a target queue, here are the new tables in the SQLite database:

CREATE TABLE IBM_MQ_MESSAGES(Version            INT,
                             Report             INT,
                             MsgType            INT,
                             Expiry             INT,
                             Feedback           INT,
                             Encoding           INT,
                             CodedCharSetId     INT,
                             Priority           INT,
                             Persistence        INT,
                             BackoutCount       INT,
                             PutApplType        INT,
                             MsgSeqNumber       INT,
                             Offset             INT,
                             MsgFlags           INT,
                             OriginalLength     INT,
                             Format             CHAR(8),
                             ReplyToQ           CHAR(48),
                             ReplyToQMgr        CHAR(48),
                             UserIdentifier     CHAR(12),
                             ApplIdentityData   CHAR(32),
                             PutApplName        CHAR(28),
                             PutDate            CHAR(8),
                             PutTime            CHAR(8),
                             ApplOriginData     CHAR(4),
                             MsgId              BLOB,
                             CorrelId           BLOB,
                             AccountingToken    BLOB,
                             GroupId            BLOB,
                             Data               BLOB,
                             Source_QMgr_Id     INT,
                             Source_Queue_Id    INT );

CREATE TABLE SOURCE_QMGR_NAMES(Id               INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE,
                               QMgrName         CHAR(48) NOT NULL UNIQUE );

CREATE TABLE SOURCE_QUEUE_NAMES(Id              INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE,
                                QueueName       CHAR(48) NOT NULL UNIQUE );

I have completed a wide variety of tests and everything looks good. The customer is now also testing the latest release of MQMR.

If anyone would like to test out the latest release then send the email to support@capitalware.com

Regards,
Roger Lacroix
Capitalware Inc.

Capitalware, Database, IBM i (OS/400), IBM MQ, Linux, MQ Message Replication, Unix, Windows Comments Off on Customer Requested Enhancement to MQMR

memmem() Function for a C Program

Last week, I needed a function for a C program that would search a string not null terminated for a string not null terminated. Hence, I could not use strstr() function because it requires the strings to be null terminated. So, I checked my trusty C Runtime Library Reference and found nothing that matched.

Now most people would hit the internet and do a search for what they need. But for these kinds of functions, I always check the Snippets archive that I have first. A long time ago, there used to be a Snippets web site run by Bob Stout. Unfortunately, he died in 2011 and his web site disappeared a little while later. Luckily, the Way Back Machine has a full archive of his Snippets web site. A lot of people have posted/hosted his Snippets ‘97 archive but really everyone should be using the Snippets 2003 archive (latest release). I have the Snippets 2003 archive available to download here. The great feature of Bob Stout’s Snippets archive is that he licensed all code as public domain. Over the years, I have used many functions from Bob Stout’s Snippets archive and it has been truly helpful.

In the Snippets archive, there is an important file that describes each program/function called ‘snippets.ndx’. I did a quick search of the file and found the perfect function that matched my needs called memmem(). I copied the function to my program, tested it on Windows and it worked perfectly.

Life was great then I went to do a build on Linux and got the follow error:

error: conflicting types for ‘memmem’
void *memmem(const void *buf, const void *pattern, size_t buflen, size_t len)

I immediately shock my head and said WTF! I did “man memmem” command and sure enough, there is a memmem() function on Linux that does what I want. The parameter list is different but really it is just the order of the parameters.

I then did some internet searches and noticed a lot of people were doing searches for “memmem on Windows”. So, I got the bright idea of rearranging the parameter list for Snippets memmem() function (and use the same variable names as Linux) and post the updated code as public domain in Bob Stout’s name.

So here you go, a cross-platform version of memmem() function with defines to handle Linux:

#if !defined(__linux__)
/**
 * Function Name
 *  memmem
 *
 * Description
 *  Like strstr(), but for non-text buffers that are not NULL delimited.
 *
 *  public domain by Bob Stout
 *
 * Input parameters
 *  haystack    - pointer to the buffer to be searched
 *  haystacklen - length of the haystack buffer
 *  needle      - pointer to a buffer that will be searched for
 *  needlelen   - length of the needle buffer
 *
 * Return Value
 *  pointer to the memory address of the match or NULL.
 */
void *memmem(void *haystack, size_t haystacklen, void *needle, size_t needlelen)
{
   /* --------------------------------------------
    * Variable declarations.
    * --------------------------------------------
    */
   char *bf = (char*) haystack, *pt = (char*) needle, *p = bf;

   /* --------------------------------------------
    * Code section
    * --------------------------------------------
    */
   while (needlelen <= (haystacklen - (p - bf)))
   {
      if (NULL != (p = memchr(p, (int)(*pt), haystacklen - (p - bf))))
      {
         if (0 == memcmp(p, needle, needlelen))
            return p;
         else
            ++p;
      }
      else
         break;
   }

   return NULL;
}
#endif

Regards,
Roger Lacroix
Capitalware Inc.

C, HPE NonStop, IBM i (OS/400), Linux, macOS (Mac OS X), Open Source, Programming, Unix, Windows, z/OS Comments Off on memmem() Function for a C Program

Working from Home and Coronavirus aka COVID-19

It is funny that everyone is freaking out about working from home. I always found I got less done at the office than at home because I was always being interrupted every 2 minutes.

For most of my career, I have worked part-time at home. In 2001, I incorporated Capitalware and went out on my own. I liked how I could set my own rules on how much work I did from home. In 2007, I stopped all consulting work and gave it 110% to creating and supporting my own (Capitalware) software.

I had a desk and chair but the desk was really a 6 foot (2 meter) banquet table and the chair was very basic item. I ended up getting carpal tunnel syndrome in both wrist (it was really in right wrist) – in 2007 I believe. I found a good doctor who gave me a set of wrist exercises and a brace but the big thing he wanted me to do was get a proper desk and chair and set my arm alignment to the keyboard, so that the pressure would be removed from nerves. So, I went out and purchased a really nice mahogany desk and a proper multi-adjustable chair. It took about a year for the carpal tunnel to clear up and it is something I NEVER EVER want to go through again.

So, my advice to everyone working from home is get yourself a proper desk and chair to do your work at!!! Take it from someone who’s been there, done that.

The other comment I hear people make is about being bored or lonely at home. I play music while I work. I also have a TV tuner (USB) plugged into my PC, so when there is a business show I want to listen to, I put it on and put the display in the background. I would strongly suggest that people not play games or watch movies because you will never get any work done. 🙂

Many of you have met my wife, Cynthia, at the MQ Technical Conferences. She is a pharmacist. I had a heart attack back in 2010. So, she has been doing a lot of research about coronavirus aka COVID-19.

    Here’s what she has found out:

  • there is a strong link between people with cardiac diseases, hypertension, diabetes and COVID-19
  • there is a strong link between people with vitamin D deficiency (northern people) and COVID-19

So, the cardiac diseases, hypertension and diabetes link explains why it appears to affect older people because young people tend not to have these issues.

Basically, if you are on those drugs then you have 3 to 5 times more receptors, hence, a greater probably of getting COVID-19 and with more receptors means more attachment of the virus. i.e. It is like comparing cheap glue with Krazy or Gorilla glue. You don’t want to have COVID-19 make a strong bond to you!! Hence, if you don’t know what medicine you are taking ask your doctor or pharmacist. I just happen to be lucky that my wife is a pharmacist.

The funny part was when Cynthia read the articles about vitamin D deficiency, she ran upstairs grab a bottle of vitamin D pills and then handed me 1 and said I need to take 1 vitamin D pill every day. Now luckily, I am off all of the drugs I was on after my heart attack except for a statin drug and baby aspirin.

Finally, I wish the “experts” (BNN, Bloomberg, CNBC & Fox Business) would stop comparing coronavirus aka COVID-19 to the 2008 Financial Crisis – it is NOTHING like it. If you need to compare it to something then compare coronavirus aka COVID-19 to dust bowl from the Great Depression – that is a proper comparison!!!!

Regards,
Roger Lacroix
Capitalware Inc.

General Comments Off on Working from Home and Coronavirus aka COVID-19

IBM MQ Fix Pack 9.0.0.9 Released

IBM has just released Fix Pack 9.0.0.9 for IBM MQ V9.0 LTS
https://www.ibm.com/support/pages/node/3255381?myns=swgws&mynp=OCSSYHRD

Regards,
Roger Lacroix
Capitalware Inc.

Fix Packs for MQ, IBM i (OS/400), IBM MQ, Linux, Unix, Windows Comments Off on IBM MQ Fix Pack 9.0.0.9 Released

IBM Integration Technical Conference 2020

After I received David La Rose of IBM’s email, I replied asking about the IBM Integration Technical Conference 2020 and I copied Ray Daniel of IBM on the email.

Ray Daniel replied with an official statement of:

Thank you for your interest in the Integration Technical Conference 2020 on March 16-19. Due to participant travel concerns related to COVID-19, IBM is postponing the conference. We will share the new dates once the conference reschedule is finalized. Thank you for your understanding and being a part of our community.

and he include the following comment:

The important take away is that we are postponing until August, but it will still be face to face and in Dallas!

Regards,
Roger Lacroix
Capitalware Inc.

IBM i (OS/400), IBM MQ, Linux, Programming, Security, Unix, Windows, z/OS Comments Off on IBM Integration Technical Conference 2020