Boost logo

Boost :

From: David Crayford (david_crayford_at_[hidden])
Date: 2005-09-22 02:09:50


> Hi all,
>
> I've recently downloaded boost to run on an IBM mainfram z/OS system
> (a port of vacpp). I'm trying to compile multi_index\example\hashed.
> cpp (which I called stuff.cpp)
> and I'm getting the following errors. I'm a relative newbie with C++
> so I'm completely bamboozled by the compiler errors. Help with this
> will be greatly appreciated as I am currently in the process of
> trying to convince management to switch to C++ from C, and boost is
> one of my big hitting selling points.
>
> "/FTS1/tmp/doc/boost/mpl/aux_/integral_wrapper.hpp", line 85.30:
> CCN5431 (S) The declarator cannot be qualified with the enclosing
> namespace "mpl_".

> "'DOC.USER.CPP(STUFF)'", line 47.60: CCN6281 (W) "offsetof" cannot
> be applied to "struct word_counter_entry". It is not a POD
> (plain old data) type.

> "'DOC.USER.CPP(STUFF)'", line 47.60: CCN6281 (W) "offsetof" cannot
> be applied to "struct word_counter_entry". It is not a POD
> (plain old data) type.

> "'DOC.USER.CPP(STUFF)'", line 47.60: CCN6281 (W) "offsetof" cannot
> be applied to "struct word_counter_entry". It is not a POD
> (plain old data) type.

> "'DOC.USER.CPP(STUFF)'", line 51.59: CCN6281 (W) "offsetof" cannot
> be applied to "struct word_counter_entry". It is not a POD
> (plain old data) type.

> "'DOC.USER.CPP(STUFF)'", line 51.59: CCN6281 (W) "offsetof" cannot
> be applied to "struct word_counter_entry". It is not a POD
> (plain old data) type.

> "'DOC.USER.CPP(STUFF)'", line 51.59: CCN6281 (W) "offsetof" cannot
> be applied to "struct word_counter_entry". It is not a POD
> (plain old data) type.

> "/FTS1/tmp/doc/boost/mpl/aux_/integral_wrapper.hpp", line 85.30:
> CCN5431 (S) The declarator cannot be qualified with the enclosing
> namespace "mpl_".

> "/FTS1/tmp/doc/boost/mpl/has_key.hpp", line 32.20: CCN5408 (S) The
> base class "apply<boost::mpl::set0<mpl_::na>,
> boost::multi_index::detail::duplicate_tag_mark>" is declared but not
> defined.
> "/FTS1/tmp/doc/boost/multi_index/detail/no_duplicate_tags.hpp", line
> 60.23: CCN5700 (I) The previous message was produced while
> processing "struct boost::mpl::has_key<boost::mpl::set0<mpl_::na>,
> boost::multi_index::detail::duplicate_tag_mark>".
> "/FTS1/tmp/doc/boost/type_traits/is_base_and_derived.hpp", line 200.
> 41: CCN5016 (S) The expression must be an integral constant
> expression.

> "/FTS1/tmp/doc/boost/type_traits/is_base_and_derived.hpp", line 200.
> 33: CCN5700 (I) The previous message was produced while
> processing "boost::detail::is_base_and_derived_impl<boost::
> multi_index::detail::tag_marker,boost::multi_index::tag<mpl_::na,
> mpl_::na,mpl_::na,mpl_::na,mpl_::na,mpl_::na,mpl_::na,mpl_::na,
> mpl_::na,mpl_::na,mpl_::na,mpl_::na,mpl_::na,mpl_::na,mpl_::na,
> mpl_::na,mpl_::na,mpl_::na,mpl_::na,mpl_::na> >::value".

> "/FTS1/tmp/doc/boost/type_traits/is_base_and_derived.hpp", line 188.
> 8: CCN5700 (I) The previous message was produced while
> processing "struct boost::detail::is_base_and_derived_impl<boost::
> multi_index::detail::tag_marker,boost::multi_index::tag<mpl_::na,
> mpl_::na,mpl_::na,mpl_::na,mpl_::na,mpl_::na,mpl_::na,mpl_::na,
> mpl_::na,mpl_::na,mpl_::na,mpl_::na,mpl_::na,mpl_::na,mpl_::na,
> mpl_::na,mpl_::na,mpl_::na,mpl_::na,mpl_::na> >".

> "/FTS1/tmp/doc/boost/type_traits/is_base_and_derived.hpp", line 209.
> 7: CCN6269 (S) The template argument for the non-type template
> parameter of type "bool" must be an integral constant expression.

> "/FTS1/tmp/doc/boost/multi_index/tag.hpp", line 61.37: CCN5700 (I)
> The previous message was produced while processing "struct
> boost::is_base_and_derived<boost::multi_index::detail::tag_marker,
> boost::multi_index::tag<mpl_::na,mpl_::na,mpl_::na,mpl_::na,
> mpl_::na,mpl_::na,mpl_::na,mpl_::na,mpl_::na,mpl_::na,mpl_::na,
> mpl_::na,mpl_::na,mpl_::na,mpl_::na,mpl_::na,mpl_::na,mpl_::na,
> mpl_::na,mpl_::na> >".

I think this problem is due to a difference in the version number in the
__IBMCPP__ macro.
Although the z/OS compiler is ported from VACPP the __IBMCPP__ macro has a
different version number.

>From the z/OS 1.6 programming reference:

__IBMCPP__ C ++ Only.

This macro indicates the version number of the z/OS C++ compiler. The
format of the version number that is provided by the macro is integer
PVRRM, where : P Represents the compiler product v 0 for C/370 v 1 for
AD/Cycle C/370 and C/C++ for MVS/ESA v 2 for OS/390 C/C++ and 4 for z/OS
C/C++ v 4 for z/OS C/C++ Release 2 and laterV Represents the version number
RR Represents the release number M Represents the modification numberIn
z/OS C/C++ Version 1 Release 6, the value of the macro is 41060.

I'm probably the first person to try to use boost on the big iron. The
macro __MVS__ is set to 1 if running on z/OS. I'm happy to assist in any
way possible in porting boost to z/OS.


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