John, Have you done threaded COBOL...?
Sent from my iPad Scott Ford Senior Systems Engineer www.identityforge.com On Mar 30, 2012, at 10:27 AM, "McKown, John" <[email protected]> wrote: > Thank you very much for the example code. I'm learning quite a bit from > reading the LE and Binder manuals. I'm doing all my work from a UNIX shell, > using UNIX command such as "as" and "ld". One thing that I've learned that > was non-obvious to me was that the binder needs the parameters "DYNAM(DLL)" > and "CASE(MIXED)" in order to work properly for my testing. > > I don't know why I'm bothering. As you indicated, this does not seem to be of > much interest. I guess the "real UNIX" programmers are all using C. I would > be too, if I had access to a z/OS C compiler (and don't mention MVSGCC to me, > I'm just not capable of getting it to work as I want it to). > > -- > John McKown > Systems Engineer IV > IT > > Administrative Services Group > > HealthMarkets(r) > > 9151 Boulevard 26 * N. Richland Hills * TX 76010 > (817) 255-3225 phone * > [email protected] * www.HealthMarkets.com > > Confidentiality Notice: This e-mail message may contain confidential or > proprietary information. If you are not the intended recipient, please > contact the sender by reply e-mail and destroy all copies of the original > message. HealthMarkets(r) is the brand name for products underwritten and > issued by the insurance subsidiaries of HealthMarkets, Inc. -The Chesapeake > Life Insurance Company(r), Mid-West National Life Insurance Company of > TennesseeSM and The MEGA Life and Health Insurance Company.SM > > > >> -----Original Message----- >> From: IBM Mainframe Assembler List >> [mailto:[email protected]] On Behalf Of Steve Comstock >> Sent: Friday, March 30, 2012 9:06 AM >> To: [email protected] >> Subject: Re: curiosity question: How much interest in writing >> / using DLLs in assembler? >> >> 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/m52 >> 5descr.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 >> >>
