Re: Calling RPGILE program from C++

Aaron Albertson <albertaa-r/[email protected]>
Newsgroups gmane.comp.lang.as400.c
Message-ID <OFAC530E74.4F704A2D-ON85257DB3.00501405-86257DB3.00506582@us.ibm.com>
Hi Jevgeni,

	Since you are calling a program object you want to use 'extern "OS"'
instead of 'extern "RPG"'.  It doesn't matter what language a program
object is written in, the calling convention for a program call is always
'extern "OS"'.  'extern "RPG"' is for calling a service program entry point
or an export from a module that is bound into your program.

					Thanks,

Aaron Albertson
CUBE-3 WCode/NMI translator development,
OX Translator Development, and MI Architecture owner
Dept. 47W 030-2/E102,  IBM   Rochester, MN 55901
albertaa-r/[email protected]
(507) 253-5173, T/L 8-553-5173




From:	Jevgeni Astanovski <[email protected]>
To:	"Bare Metal Programming IBM i (AS/400 and iSeries)"
            <c400-l-Zwy7GipZuJhWk0Htik3J/[email protected]>
Date:	12/19/2014 06:59 AM
Subject:	[C400-L] Calling RPGILE program from C++
Sent by:	"C400-L" <c400-l-bounces-Zwy7GipZuJhWk0Htik3J/[email protected]>



Hi, folks.
There was a similar discussion recently, but for C.
I know how to call an RPG program from my C program.
I write
....
#pragma map(RetrSC, "RSC10R")
#pragma linkage(RetrSC, OS)
void RetrSC (char *, char *, scpf *, char *) ;

main()
{
...
RetrSC(Key, "CHAIN", &Account, &Ind).

}

works fine.

Decided to experiment with C++
Manual says that #pragma linkage is not supported.
In an example I found that it should look like this:

#pragma map(RetrSC, "RSC10R")
extern "RPG" void RetrSC (char *, char *, scpf *, char *) ;

main()
{
...
RetrSC(Key, "CHAIN", &Account, &Ind).

}

RSC10R is not a service program, just a *PGM object.
Create module works fine, however CRTPGM generates CPD5D02:
No definition was found for reference RSC10R in *MODULE

What should I do to be able to call an RPG program from C++ the same
way I do it from C?

I believe that it should be pretty simple, but I've already spent 3
hours searching in the manuals and googling....

TIA,

Jevgeni.
--
This is the Bare Metal Programming IBM i (AS/400 and iSeries) (C400-L)
mailing list
To post a message email: C400-L-Zwy7GipZuJhWk0Htik3J/[email protected]
To subscribe, unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/c400-l
or email: C400-L-request-Zwy7GipZuJhWk0Htik3J/[email protected]
Before posting, please take a moment to review the archives
at http://archive.midrange.com/c400-l.

-- 
This is the Bare Metal Programming IBM i (AS/400 and iSeries) (C400-L) mailing list
To post a message email: C400-L-Zwy7GipZuJhWk0Htik3J/[email protected]
To subscribe, unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/c400-l
or email: C400-L-request-Zwy7GipZuJhWk0Htik3J/[email protected]
Before posting, please take a moment to review the archives
at http://archive.midrange.com/c400-l.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.