Thanks Steve for the info on the C++ manuals for the mainframe. Been looking/learning C to write a more portable version of our product than the IBM assembler. version Although I sure love assembler :)
Duffy www.soundsoftware.us On Fri, Mar 30, 2012 at 7:05 AM, Steve Comstock <[email protected]>wrote: > On 3/30/2012 7:35 AM, McKown, John wrote: > >> This question is the outgrowth from my writing UNIX programs which are >> > designed to be run from a UNIX shell prompt in HLASM. The first > "outgrowth" was > LE enabling all my UNIX HLASM code. The main reason was to be able to > easily use > some selected C language routines, especially sprintf(). Normally, in > HLASM, if > we want to dynamically invoke a subroutine, we do with with a LOAD/BALR or > LINK > function. However, that does not work well for UNIX programs because, as > best as > I can tell, you cannot LOAD or LINK to a program which resides in a UNIX > file. > You must put the subroutine in a PDS or PDSE which is accessable to the > UNIX > process. Which normally means the LINKLIST or via a dataset referenced in > the > STEPLIB environment variable. I am a bit of a "purist". When I'm wrting a > UNIX > command, I want everything to be accessable via normal UNIX facilities. > >> >> I have written a "do nothing" dll in HLASM just to try to learn how to >> write >> a >> > DLL in HLASM. I have something that appears to work. Now, I need to write > some > HLASM which attempts to actually use that code. > >> >> Has anybody else done anything with DLLs in HLASM? If so, what did you >> think >> > of it? Another use for DLLs that I find interesting is to have data fields > in > them be EXPORTed and referenced from other programs. What is interesting, > to me, > is that all references to a DLL in an LE enclave refer to the same copy. > So any > data which is EXPORTed is, in effect, "global" to the LE enclave. This > seems a > reason way to share data. What say ye? > > -- >> John McKown >> Systems Engineer IV >> IT >> >> Administrative Services Group >> >> HealthMarkets(r) >> > > > Yes, well we cover writing and using DLLs written in Assembler > in our course "Creating and Using DLLs in z/OS"; the course > is multi-lingual in that it discusses creating and invoking > DLLs with C, PL/I, COBOL, and Assembler. > > See http://www.trainersfriend.com/**Language_Environment_courses/** > m525descr.htm<http://www.trainersfriend.com/Language_Environment_courses/m525descr.htm> > for details. > > But it seems to be a non-starter: no one has ever requested > that we teach it. Judging by that, I would say there is not > much interest. But, there may be pockets of usage out there. > > > Note that you can load a module from the HFS using the > BPX1LOD callable service, which may be a simpler solution > to the problem you are describing. > > As for invoking a DLL from Assembler, here's some snippets from > code in that course: > > LOAD alias c'dllload' > QUERYF alias c'dllqueryfn' > QUERYV alias c'dllqueryvar > . > . > . > > * Load DLL load module CDLL12 > * > CALL LOAD,(DLL_NAME),MF=(E,GENCALL) > . > . > . > * Locate DLL function CDSUB4; if successful, call the function > * > l 2,dll_tok > CALL QUERYF,((2),F2_NAME),MF=(E,**GENCALL) > st 15,f2_ptr > c 15,f0 > be outa_here > CALL (15),(STRING),MF=(E,GENCALL) > . > . > . > * Locate DLL variable data_area; if successful, change it > l 2,dll_tok > CALL QUERYV,((2),VAR_NAME),MF=(E,**GENCALL) > st 15,v_ptr > c 15,f0 > be outa_here > mvc 0(l'new_str+1,15),new_str - change value > . > . > . > GENCALL CALL ,(,,,),MF=L > > dll_tok ds f > > dll_name dc c'CDLL12' > dc x'00' > > f2_name dc c'CDSUB4' > dc x'00' > > var_name dc c'data_area' > dc x'00' > > string dc c'Data from me' > dc x'00' > > new_str dc c'funny little string' > dc x'00' > > > -- > > Kind regards, > > -Steve Comstock > The Trainer's Friend, Inc. > > 303-355-2752 > http://www.trainersfriend.com > > * To get a good Return on your Investment, first make an investment! > + Training your people is an excellent investment > > * Try our tool for calculating your Return On Investment > for training dollars at > > http://www.trainersfriend.com/**ROI/roi.html<http://www.trainersfriend.com/ROI/roi.html> >
