Bernd Oppolzer wrote:

Thank you all for your valuable suggestions.

The compiler is z/OS XL/C V1.13 and V1.11 -
well, in fact, I didn't test it with the 1.11. version.
I observed the problem on the site with the 1.13 version.

This is part of the PL/1 interface for my XML parser.
I had to do a rollout today on three different sites of my
customers; that's why there are different versions of the compiler.
The site with the 1.11. compiler is on z/OS v1.13, but still uses
the old compiler.

I found a workaround in the meantime, this way:


/**********************************************************/
/* */
/*   PLI/1 NULL () => SYSNULL ()                          */
/* */
/**********************************************************/

static void pli_null_to_sysnull (void *pptr)

{
   char *cp = pptr;

   if (memcmp (cp, "\xff\x00\x00\x00", 4) == 0)
   {
      *cp = 0x00;
   }
}

Hi Bernd,

I think that's incorrect - it's comparing what cp _points to_ with
0xff000000 - instead of the value of cp.

If you wanted to do the comparison suggested from your original
post, wouldn't it correctly be this:

   memcmp(&cp, "\xff\x0\x0\x0", 4);

That would compare the value of cp with 0xff000000.

It's a rather round-a-bout way to make it happen..,  I'm kinda still
of the opinion that "something else" is going on.


  - Dave Rivers -

--
riv...@dignus.com                        Work: (919) 676-0847
Get your mainframe programming tools at http://www.dignus.com

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN

Reply via email to