$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
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