I have created user defined functions in DB2 that call c libraries. I
understand how the C return type maps to the SQL return type.

I am now trying to create a procedure that calls a C program....I am a
little confused becasue it looks like the return values are passed back
using argv. How can a C stored procedure return a Float ?

Here is the code I am trying to work with:

CREATE PROCEDURE sysStats( OUT APS FLOAT,
OUT CPU FLOAT,
OUT JOBS INTEGER )
EXTERNAL NAME PGMRPGMLIB/SYSSTATS
LANGUAGE C GENERAL WITH NULLS



#include <stdio.h>
#include <string.h>
#include <qwcrssts.h>

int main ( int argc, char *argv[] )
{
Qwc_SSTS0200_t info;
double aspPercent;
double cpupct;
int jobs;

QWCRSSTS(&info, sizeof(info), "SSTS0200", "*NO ", "\0\0\0\0\0\0\0\0");
aspPercent = (double)info.Pct_System_ASP_used / 10000;
cpupct = (double)info.Pct_Processing_Unit_Used / 10;
jobs = info.Jobs_In_System;

// What to do here ????
sprintf( argv[1], "%2.1f", aspPercent );
sprintf( argv[2], "%2.1f", cpupct );
sprintf( argv[3], "%d", jobs );

}

-Thanks
Steve More

This thread ...

Follow-Ups:

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2019 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].