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.