Boost logo

Boost :

Subject: Re: [boost] Build boot 1.40.0 on IBM z/OS (EBCDIC)
From: Vladimir Prus (vladimir_at_[hidden])
Date: 2009-10-22 08:00:52


norbert.hanke_at_[hidden] wrote:

> Hi folks,
>
> I am trying to build boost on the IBM Mainframe on z/OS USS.
>
> I successfully modified the jam bootstrap script and have a running bjam binary now.
> But when trying to build the boost libraries, I get the error below.
> Does anybody have a hint what to look for? EBCDIC character encoding on my machine might be the
> reason: digits 0-9 are encoded as character values 240-249, but I have no idea where to start
> looking.
>
>
>
> regards,
>
> Norbert
>
>
>
>> ./bjam
>
> /home/u250672/boost_1_40_0/tools/build/v2/util/numbers.jam:22: in numbers.check from module
> numbers
>
> error: 03 in 03 1 17
>
> error: is not a number

Fun. The most relevant code is probably in tools/jam/src/regexp.c, and looks like this:

        case ANYBUT:
            if (*reginput == '\0' || strchr(OPERAND(scan), *reginput) != NULL)
                return(0);
            reginput++;
            break;

you might want to modify it like this:

        case ANYBUT:
            if (strcmp (reginput, "03") == 0)
                printf ("you were supposed to break here\n");
            if (*reginput == '\0' || strchr(OPERAND(scan), *reginput) != NULL)
                return(0);
            reginput++;
            break;

then rebuild bjam and set breakpoint on the printf. I am not aware of any assumptions
that 0-9 range is <0x80, but apparently something does not like this, or something else

- Volodya


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk