Re: Call a C program from RPG with variables & a return

Charles Wilt <[email protected]>
Newsgroups gmane.comp.lang.as400.c
Message-ID <CAJ=Tnc6WP0eRAp9QZSXBE5=kMvC5QCp3Qr9z-_=wVu2a_o3CVg@mail.gmail.com>
Why bother with C?

RPGLE can do it quite easily.

gMean = (a*b*c*d*e*f*g*h*i*j*k*l) ** (1/12);

Charles



On Tue, Feb 16, 2016 at 5:07 PM, Stephen Mooney <stephenmmooney-/[email protected]>
wrote:

> Greetings,
> I am looking for some example 'C' code that will allow me to pass 12
> numeric variables from an SQLRPGLE program to a 'C' program that will
> calculate the geometric mean for them and return the value to the SQLRPGLE
> program.
> I found an example where an RPG program will pass two character fields to
> a 'C' program which will concatenate and return them, however I know
> nothing of 'C', its syntax, or setting it up with an 'int' or 'void' to get
> my example to do what I want.
> Currently, this is the 'C' code example I am working with:
> #include <stdio.h>
>
>                                       /* Main program. */
>
>
>   int main(int argc, char *argv[])
>                      {
>
>                                                             /* Display
> parameters sent to the program. */
>         printf("Incoming parameter 1 = %s\n", argv[1]);
>                           printf("Incoming parameter 2 = %s\n", argv[2]);
>
>                                                               /*
> Concatenate the two incoming parameters into the third parameter. */
>                 strcpy(argv[3],argv[1]);
>                                    strcat(argv[3],argv[2]);
>
>                                                                         /*
> End of program.  Returning with concatenation of parameters 1 and 2 into
> parameter 3. */   return;
>
>                                                     }
>
> I have found a 'C' program example that calculates the geometric mean I am
> looking for, but it is set up as follows:
>     #include<stdio.h>                                #include<math.h>
>                             int main(void)
>   {                                                    //
> ((X1)(X2)(X3)........(XN))1/N                 double
> x1=2,x2=4,x3=6,x4=7,x5=6;                 double x,N=5;
>                x=(x1*x2*x3*x4*x5);
> x=pow(x,(1/N));                                  printf("Geometric Mean for
> Xn: %lf",x);          return 0;                                    }
>
> I believe I would need to set up x1=argv[1], x2=argv[2] and so on, but I
> do not believe I am setting up the variables correctly to pass back what I
> am looking for.
> Any suggestions would be greatly appreciated.  Thanks. Regards, Stephen
> Mooney
> --
> 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.