|
Hi Peter, here is an ile c++ function that will return a mutable pointer to an rpg const variable: #include <stdio.h> #include <errno.h> void* GetPtrToArg( char& cIn ) { void* pVoid ; pVoid = &cIn ; return pVoid ; } ** ----------------------- fGetPtrToConst ------------------------- d fGetPtrToConst pr * extproc('GetPtrToArg__FRc') d InChar 32767a const options(*VarSize) ** ---------------------- fIfsWrite ----------------------------- ** fIfsWrite - write string to IFS file ** hInFile fComRef.hFile open ifs file handle ** InData vstr(*) string to write to file. pfIfsWrite b export dfIfsWrite pi 10i 0 d hInFile value like(fComRef.hFile) d InData 32767a const varying options(*VarSize) d WriteCx s 10i 0 d pData s * /free pData = fGetPtrToConst( InData ) ; WriteCx = IfsWrite( hInFile: pData: %len(InData)) ; return WriteCx ; /end-free p e ( curious to know how else to write the proc that uses this const breaking function ) -Steve Richter -----Original Message----- From: rpg400-l-bounces@xxxxxxxxxxxx [mailto:rpg400-l-bounces@xxxxxxxxxxxx]On Behalf Of Peter Dow Sent: Saturday, August 09, 2003 9:52 PM To: RPG programming on the AS400 / iSeries Subject: Re: Value vs. Const Hi Hans, That's what I suspected. Also, afaik, there is no such thing as a read-only pointer, correct? So how sophisticated is the compiler's checking for someone modifying a CONST parm? Obviously a direct reference to the parm would be easy to detect. Would it also catch a reference to %addr(MyConstParm) as well? Or some attempt to copy the pointer that is actually passed and use it with a based variable to modify the parm? Peter Dow Dow Software Services, Inc. 909 793-9050 voice 909 793-4480 fax 909 522-3214 cell >Hans wrote: >optimized to passing a pointer to the original value. >Otherwise, the value is copied to a compiler-generated >temporary, and the address of that is passed. Peter wrote: >Can you clarify whether the temporary variable is in the caller or the >procedure? Hans wrote: >The caller doesn't have access to the procedure's local automatic storage, >which isn't even allocated yet! So the storage for the temp is taken from >the caller's automatic storage. --- Outgoing mail is certified Virus Free. Checked by AVG anti-virus system (http://www.grisoft.com). Version: 6.0.507 / Virus Database: 304 - Release Date: 8/4/2003 _______________________________________________ This is the RPG programming on the AS400 / iSeries (RPG400-L) mailing list To post a message email: RPG400-L@xxxxxxxxxxxx To subscribe, unsubscribe, or change list options, visit: http://lists.midrange.com/mailman/listinfo/rpg400-l or email: RPG400-L-request@xxxxxxxxxxxx Before posting, please take a moment to review the archives at http://archive.midrange.com/rpg400-l.
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].
Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.