This is really vague and I think there may be some misunderstanding of 
terminology. 
Why are you asking about Metal/C? Is there some importance to this? MetalC may 
be missing functions you need. MetalC is an implementation of C that can be 
used within z/OS (e.g. SMF routines). Several functions are missing because 
they are not compatible within the OS (e.g. dllload because it does an MVS 
load).
Why are you discussing DLL? MetalC can be part of a DLL but a MetalC program is 
not designed to call a DLL. Other than implementation and benefits of how a 
specific function is called, this information may be more co ?
You mention #IFDEF to exclude/include C code but you do not mention how it's 
important. The information too vague to recommend alternatives. Maybe a C++ 
object would eliminate the need for it. Maybe a structure with callback 
addresses would work. 
You mention I/O and TCP. Also vague as to their importance to your question. 
I'm guessing that you are asking how to get assembler and C working together. 
You seem to be saying a z/OS assembler program will call different C functions 
and a Windows program will call those same C functions. Or maybe you are saying 
you have a C program that calls different functions based on some data (where 
z/OS will use an assembler program to get that data).
If you didn't get the answer you need, then maybe you could restate the 
question. 
Regards, Jon.
  On Monday, July 1, 2019, 02:40:21 PM PDT, Joseph Reichman 
<reichman...@gmail.com> wrote:  
 
 I have most of it written in Assembler as .a TCP/IP server 

With Windows being the client it issues command to the tcp/ip server 
Each command is in a CSECT 


In this Assembler CSECT I would like to call the C DLL to open read the file 

In Windows I would be displaying it in a rich edit 

The stream in callback would call the DLL to do the same seems like most of the 
code is similar besides the actual I/O




> On Jul 1, 2019, at 5:26 PM, Charles Mills <charl...@mcn.org> wrote:
> 
> Can you do the whole process in C? When I first tried to move myself from
> doing everything in assembler I kept hoping to dimp my toe into doing little
> bits and pieces in C, and that never worked out. What worked out was writing
> the whole darned thing in C, and then using assembler for a few little bits
> and pieces where necessary.
> 
> Something AMODE 31 C does wonderfully is dataset I/O, and does it in a way
> that is for the most part -- depending on exactly what you are trying to
> accomplish -- compatible with Windows C.
> 
> Charles
> 
> 
> -----Original Message-----
> From: IBM Mainframe Assembler List [mailto:ASSEMBLER-LIST@LISTSERV.UGA.EDU]
> On Behalf Of Joseph Reichman
> Sent: Monday, July 1, 2019 2:04 PM
> To: ASSEMBLER-LIST@LISTSERV.UGA.EDU
> Subject: Re: C DLL Code from Assembler
> 
> I am trying to read a VB file 
> 
> First of my Assembler code is RMODE31 
> So I anyway have to call something below the line to open to read to close
> so each of these could be a DLL export 
> 
> The Z/os data I hope to save in a data space 
> The windows in the global heap 
> 
> The processing is similar outside of the I/O
> Can I use Metal C for this 
> 
> 
> Thanks 
> 
> 
> 
> 
>> On Jul 1, 2019, at 4:56 PM, Charles Mills <charl...@mcn.org> wrote:
>> 
>> I have written a bunch of Z and Windows "system" software in C++ so I
> think
>> I am qualified to answer this question.
>> 
>> I don't think I know enough to judge the overall practicality of this
>> approach. Some things are nearly identical on Z and Windows: TCP comes to
>> mind. Some things are radically different: panel-based user interface
> comes
>> to mind.
>> 
>> I am not crazy about #ifdef's. I am a C outlier in that regard. I use
> #ifdef
>> where I have to but prefer (a.) two different libraries with common
>> functionality and prototypes; and (b.) a run-time switch (assuming the
>> bypassed code compiles on both machines and providing the code path is not
>> super time-critical).
>> 
>> I would not preclude the use of "real" (LE) C. One could argue that it is
>> Metal C that has no equivalent on Windows. The equivalents of the services
>> of LE are available from the Windows runtime and OS. Whether it is
> "doable"
>> without LE would depend on what functionality you are trying to
> accomplish.
>> 
>> Charles
>> 
>> 
>> -----Original Message-----
>> From: IBM Mainframe Assembler List
> [mailto:ASSEMBLER-LIST@LISTSERV.UGA.EDU]
>> On Behalf Of Joseph Reichman
>> Sent: Monday, July 1, 2019 1:25 PM
>> To: ASSEMBLER-LIST@LISTSERV.UGA.EDU
>> Subject: C DLL Code from Assembler
>> 
>> Hi
>> 
>> 
>> 
>> I have some code the majority of which I would like to duplicate on a
>> Windows platform. It occurred to me that if I write the code as  a  C/C++
>> DLL the changes most of which I can segregate with a #ifdef.
>> 
>> Is this doable using Metal C or do I have to use language environment. I
> am
>> looking to call the DLL entry points from assembler 
>> 
>> 
>> 
>> Thanks     

Reply via email to