
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.