|
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-2025 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.