of course, all those problems are easily solved when coding some small ASSEMBLER subprograms. I did this in fact, when we had some problems in the past with the 0C8 abends due to high order bits set in passed addresses (call an ASSEMBLER subprogram to switch OFF the PSW mask bit for 0C8 on entry to the C module - which the site wanted to be ON in the normal case - and switch it ON again, when leaving the C module).
The solution with ASSEMBLER subprograms of course has the drawback that you have to link the subprogram, that is, you have some impact on the compile and link JCL, which is not always desirable, and: you have to provide at least minimal linkage conventions, while a C solution, as I provided it in my other post, can be inlined in the generated C code without this overhead. The key is indeed, as Andrew Rowley pointed it out: if you don't tell the C compiler that the pointer coming from PL/1 is a pointer, the C compiler will not treat it as a 31 bit value, so you can manipulate it before casting it to a pointer ... at least I hope so. I see no reason, why the solution proposed by Andrew should not work. Kind regards Bernd Am 01.04.2014 16:44, schrieb Charles Mills:
Perhaps write the cleanup function in assembler? This is obviously a trivial problem in assembler. None of the inconvenience of strong typing to get in your way LOL. Charles
---------------------------------------------------------------------- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [email protected] with the message: INFO IBM-MAIN
