I have a Z/os Assembler Started task acting as a TCP/IP Server to Windows TCP/IP Client the Windows API is in MFC I have the same basic functionality on the Assembler Server Start task as the on the Windows Client
I am hoping to have the Assembler Started task code call a C DLL, On the Windows end it would be C/C+ code calling the DLL obviously there are differences because of the platform but I am guessing hose call be handled by #IFDEF In Windows Loading the DLL is a LoadLibrary Api then GetProcAddress to get the exports I am not sure how to do this in Assembler is there a LoadLibrary Macro or a GetProcAddress macro to call the exported function Thanks -----Original Message----- From: IBM Mainframe Assembler List <ASSEMBLER-LIST@LISTSERV.UGA.EDU> On Behalf Of Jon Perryman Sent: Tuesday, July 2, 2019 4:56 PM To: ASSEMBLER-LIST@LISTSERV.UGA.EDU Subject: Re: C DLL Code from Assembler I assume your question has not been answered and you are asking a question because something is not plain and simple. Is this about how to call a C program/function from assembler? Is this about calling assembler from a C program? Is it about calling C++ object methods (functions) from assembler. Are you thinking there is a naming conflict or something about binder name resolution? On Tuesday, July 2, 2019, 01:20:24 PM PDT, Joseph Reichman <reichman...@gmail.com> wrote: Plain and simple I need to write code the majority of which is same in both a windows platform and z/os hence C/C++ I can encapsulate the different function and export them In z/os it would be called from Assembler in Windows from MFC C/C++ > On Jul 2, 2019, at 4:09 PM, Jon Perryman <jperr...@pacbell.net> wrote: > > 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