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@xxxxxxxxxx
(507) 253-5173, T/L 8-553-5173
From: Jevgeni Astanovski <jevgeniast@xxxxxxxxx>
To: "Bare Metal Programming IBM i (AS/400 and iSeries)"
<c400-l@xxxxxxxxxxxx>
Date: 12/19/2014 06:59 AM
Subject: [C400-L] Calling RPGILE program from C++
Sent by: "C400-L" <c400-l-bounces@xxxxxxxxxxxx>
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@xxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit:
http://lists.midrange.com/mailman/listinfo/c400-l
or email: C400-L-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives
at
http://archive.midrange.com/c400-l.
As an Amazon Associate we earn from qualifying purchases.