On 2/2/23 21:25, Joseph Reichman wrote:
Thanks

First off, I am assembler programmer by trade I did learn C/C++ doing some 
TCP/IP stuff from an Assembler Server Started task.

There's a skill to reading documentation. For XL C++ C++11 compatability see https://www.ibm.com/docs/en/zos/2.3.0?topic=xcle-c11-compatibility. Note that the C++ standard library is *not* mentioned. We'll get to that later.



It would display the data program listing from a sysadata on Windows.

Why? Are you writing a GUI? I can understand you wanting to use an IDE as opposed to ISPF but why run anything on Windows that can run on z/OS?


I would like to use that code on z/os.

If you say clang, is the way to go okay.

You also say use the clang compiler instead of MSVC I hope I don’t end up with 
a millon more compile errors using clang as everything compiles cleanly using 
MSVC.

How can you write a cross platform program using MSVC++ without having to resort to #ifdef pre-processor nonsense? That's just bonkers.



I debug under Unix.

You are not making any sense. You want to edit/compile/run on windows and then debug on Unix? What Unix, z/OS Unix?



Since I am going to run this from z/os its going to be LE with runtime option 
POSIX(ON) ? right ?

Now as far as the doc for OPEN XL C++

I got a compile error using map::insert invalid call.

CCN5218 (S) The call does not match any parameter list for "insert".

Is referenced the following statement.
auto ret = procpointer->extsymcollector->insert({ *s, *exsympointer });

You are attempting to insert a record using an rvalue-reference with an initializer list. That's not supported by the XL C++ standard library which does not support C++11. I already told you that two posts back. The function prototype is like so:

template< class P >
std::pair<iterator, bool> insert( P&& value );

Check the doc https://en.cppreference.com/w/cpp/container/map/insert


the compiler initially gave me a problem with '{'

I took it out.

auto ret = procpointer->extsymcollector->insert( *s, *exsympointer );

That's also wrong. You need to pass a single lvalue-reference such as std::pair (please read the docs).

auto ret = procpointer->extsymcollector->insert( std::pair(*s, *exsympointer) );

I'm not picking holes but the code snippet you posted concerns me. It's heavy on pointers and the de-referencing alone makes me think it's poor quality. C++ is not C, it has reference types which are absolutely essential for RAII. If you have found you are using raw pointers allocated with "new" then that's a code smell.


then I got the above error

My question is if I got to Open XL C++

Regarding documentation for let's say map::inset I would reference Clang/LLVM 
link you sent me earlier.
I hope I don’t open a pandoras box if I change to clang and re-compile all my 
windows code.

The question you should be asking yourself is "should I use C++?". C++ is a large and complex language and in my experience with colleagues of mine who are excellent assembler programmers it can be a struggle to become proficient. Why don't you use a simpler language like Python which is easy to use and doesn't have portability issues? I'm an experienced C/C++ programmer and I certainly wouldn't entertain using C++ to process ADATA, when I can do it faster, with less code and less bugs in Python.

----------------------------------------------------------------------
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