× The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.



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

Follow-Ups:
Replies:

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

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.