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




-----Original Message-----
From: rpg400-l-bounces@xxxxxxxxxxxx
[mailto:rpg400-l-bounces@xxxxxxxxxxxx]On Behalf Of Peter Dow
Sent: Monday, August 11, 2003 12:59 PM
To: RPG programming on the AS400 / iSeries
Subject: Re: Value vs. Const

>Thanks for the reply.  I didn't know the iSeries had C++.  Otoh, given what
>little I know about C or C++, the code you posted looks like C.

I dont think C allows pass by reference which is what the "&" in "char&"
means.

> The problem
>is how you use it.  Isn't your RPG code just getting the pointer to InChar,
>not InData?  Or is it just that it's Monday a.m. and my brain isn't ticking
>over yet?

InChar is just the name used in the prototype. It doesnt matter to the
calling rpg proc.  The prototype says the proc receives a const reference to
the 1st argument.  But C++ does not compile with ILE prototypes so the C++
reference parm does not have to be const.  it just has to be a reference.

>And what's a "mutable" pointer?

that is fancy C++ speak for non const, that is changeable.

-Steve

>From: "Steve Richter"
> 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 )



---
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/6/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.