Progress query call not working as expected

Thanks that worked great with a few tweaks. Still learning progress, and completely overlooked a function... Thanks! Finished code below for any interested.

/* FUNCTION AREA FIRST BEFORE MAIN CODE */

/*CalPrice Function*/
FUNCTION calcPrice RETURNS DECIMAL (INPUT GroupCode AS CHAR, INPUT codePart AS CHAR, INPUT currPrice AS DECIMAL).

DEF VAR addPrice AS DECIMAL NO-UNDO.

Find First Udcodes where udcodes.company = "#####" and Udcodes.codetypeID = "0001" and Udcodes.shortchar01 = codePart no-lock no-error.

IF available Udcodes THEN DO:
CASE GroupCode:
WHEN "STAN" THEN
addPrice = UdCodes.Number01.
WHEN "OEM3" THEN
addPrice = UdCodes.Number02.
WHEN "OEM4" THEN
addPrice = UdCodes.Number03.
WHEN "OEM5" THEN
addPrice = UdCodes.Number04.
WHEN "OEM6" THEN
addPrice = UdCodes.Number05.
WHEN "OEM7" THEN
addPrice = UdCodes.Number06.
OTHERWISE
DO:
addPrice = 0.
END.
END CASE.
END.

RETURN (addPrice + currPrice).
END FUNCTION.


/* MAIN CODE BODY */

/* Inputs DEFINED */
DEF INPUT PARAM ChrGroupCode AS CHAR NO-UNDO.
DEF INPUT PARAM ChrSuffix AS CHAR NO-UNDO.
DEF INPUT PARAM ChrPart AS CHAR NO-UNDO.

/* outputs DEFINED */
DEF OUTPUT PARAM DecAccPrice AS DECIMAL NO-UNDO.

/* VARIABLES */



/* RUN PROGRAM BELOW */


IF ChrSuffix MATCHES "*A*" THEN DO:
DecAccPrice = calcPrice(ChrGroupCode, ChrPart + "-A", DecAccPrice).
END.
IF ChrSuffix MATCHES "*U*" THEN DO:
DecAccPrice = calcPrice(ChrGroupCode, ChrPart + "-U", DecAccPrice).
END.
IF ChrSuffix MATCHES "*EY*" THEN DO:
DecAccPrice = calcPrice(ChrGroupCode, ChrPart + "-EY", DecAccPrice).
END.
IF ChrSuffix MATCHES "*H*" THEN DO:
DecAccPrice = calcPrice(ChrGroupCode, ChrPart + "-H", DecAccPrice).
END.

/* END MAIN CODE BODY */

--- In vantage@yahoogroups.com, "Kirstin Brandt" <kirstin.brandt@...> wrote:
>
> Function?
>
> IF ChrSuffix MATCHES "*A*" THEN DO:
> DecAccPrice = calcPrice(ChrPart + "-A", DecAccPrice).
> END.
> /* etc. */
>
> FUNCTION calcPrice RETURNS DECIMAL (INPUT codePart AS CHAR, INPUT currPrice AS DECIMAL).
OKay thought this would work, but it does not. The code snippet below shows my case statement and the working query that is hardcoded. I want to replace the the hardcoded section in the query with the DUMMY-CODE-NUM variable. But when I do that it doesn't work (Realized of course it is not...) so how can I do this without having a case statement in each of my query lines as I don't want to do that if I don't have to since I have many many more then the two shown.

This is the line I want to alter in the code snippet below:
"DecAccPrice = DecAccPrice + Udcodes.Number01." To something like this:"DecAccPrice = DecAccPrice + DUMMY-CODE-NUM." (That doesn't work btw.)
-------------------------------------------------------------


/* ---Set the Dummy Value for code number--- */
CASE ChrGroupCode:
WHEN "STAN" THEN
DUMMY-CODE-NUM = "Udcodes.Number01".
WHEN "OEM3" THEN
DUMMY-CODE-NUM = "Udcodes.Number02".
WHEN "OEM4" THEN
DUMMY-CODE-NUM = "Udcodes.Number03".
WHEN "OEM5" THEN
DUMMY-CODE-NUM = "Udcodes.Number04".
WHEN "OEM6" THEN
DUMMY-CODE-NUM = "Udcodes.Number05".
WHEN "OEM7" THEN
DUMMY-CODE-NUM = "Udcodes.Number06".
OTHERWISE
DO:
DUMMY-CODE-NUM = "".
END.
END CASE.

/* ---Acc & Handle Price Options Below--- */
IF ChrSuffix MATCHES "*A*" THEN DO:
Find First Udcodes where udcodes.company = "MW68222" and Udcodes.codetypeID = "0001" and Udcodes.shortchar01 = ChrPart + "-A" no-lock no-error.
IF available Udcodes THEN DO:
DecAccPrice = DecAccPrice + Udcodes.Number01.
END.
END.

If ChrSuffix MATCHES "*U*" THEN DO:
Find First Udcodes where udcodes.company = "MW68222" and Udcodes.codetypeID = "0001" and Udcodes.shortchar01 = ChrPart + "-U" no-lock no-error.
IF available Udcodes THEN DO:
DecAccPrice = DecAccPrice + Udcodes.Number01.
END.
Take the quotes off your field names.
On May 15, 2012 11:44 AM, "Gibby" <guyguy50@...> wrote:

> **
>
>
> OKay thought this would work, but it does not. The code snippet below
> shows my case statement and the working query that is hardcoded. I want to
> replace the the hardcoded section in the query with the DUMMY-CODE-NUM
> variable. But when I do that it doesn't work (Realized of course it is
> not...) so how can I do this without having a case statement in each of my
> query lines as I don't want to do that if I don't have to since I have many
> many more then the two shown.
>
> This is the line I want to alter in the code snippet below:
> "DecAccPrice = DecAccPrice + Udcodes.Number01." To something like
> this:"DecAccPrice = DecAccPrice + DUMMY-CODE-NUM." (That doesn't work btw.)
> ----------------------------------------------------------
>
>
> /* ---Set the Dummy Value for code number--- */
> CASE ChrGroupCode:
> WHEN "STAN" THEN
> DUMMY-CODE-NUM = "Udcodes.Number01".
> WHEN "OEM3" THEN
> DUMMY-CODE-NUM = "Udcodes.Number02".
> WHEN "OEM4" THEN
> DUMMY-CODE-NUM = "Udcodes.Number03".
> WHEN "OEM5" THEN
> DUMMY-CODE-NUM = "Udcodes.Number04".
> WHEN "OEM6" THEN
> DUMMY-CODE-NUM = "Udcodes.Number05".
> WHEN "OEM7" THEN
> DUMMY-CODE-NUM = "Udcodes.Number06".
> OTHERWISE
> DO:
> DUMMY-CODE-NUM = "".
> END.
> END CASE.
>
> /* ---Acc & Handle Price Options Below--- */
> IF ChrSuffix MATCHES "*A*" THEN DO:
> Find First Udcodes where udcodes.company = "MW68222" and
> Udcodes.codetypeID = "0001" and Udcodes.shortchar01 = ChrPart + "-A"
> no-lock no-error.
> IF available Udcodes THEN DO:
> DecAccPrice = DecAccPrice + Udcodes.Number01.
> END.
> END.
>
> If ChrSuffix MATCHES "*U*" THEN DO:
> Find First Udcodes where udcodes.company = "MW68222" and
> Udcodes.codetypeID = "0001" and Udcodes.shortchar01 = ChrPart + "-U"
> no-lock no-error.
> IF available Udcodes THEN DO:
> DecAccPrice = DecAccPrice + Udcodes.Number01.
> END.
>
>
>


[Non-text portions of this message have been removed]
Sorry posted wrong stuff... here is what portion of the finished code looks like, the removing field quotes didn't work with what I was doing either. Seems like the code below which does work could have been done in a more elogant fashion and I can't figure out how.
Just food for thought and any suggestions?

/* Inputs DEFINED */
DEF INPUT PARAM ChrGroupCode AS CHAR NO-UNDO.
DEF INPUT PARAM ChrSuffix AS CHAR NO-UNDO.
DEF INPUT PARAM ChrPart AS CHAR NO-UNDO.

/* outputs DEFINED */
DEF OUTPUT PARAM DecAccPrice AS DECIMAL NO-UNDO.

/* VARIABLES */



/* RUN PROGRAM BELOW */


/* ---Acc & Handle Price Options Below--- */
IF ChrSuffix MATCHES "*A*" THEN DO:
Find First Udcodes where udcodes.company = "######" and Udcodes.codetypeID = "0001" and Udcodes.shortchar01 = ChrPart + "-A" no-lock no-error.
IF available Udcodes THEN DO:
CASE ChrGroupCode:
WHEN "STAN" THEN
DecAccPrice = DecAccPrice + UdCodes.Number01.
WHEN "OEM3" THEN
DecAccPrice = DecAccPrice + UdCodes.Number02.
WHEN "OEM4" THEN
DecAccPrice = DecAccPrice + UdCodes.Number03.
WHEN "OEM5" THEN
DecAccPrice = DecAccPrice + UdCodes.Number04.
WHEN "OEM6" THEN
DecAccPrice = DecAccPrice + UdCodes.Number05.
WHEN "OEM7" THEN
DecAccPrice = DecAccPrice + UdCodes.Number06.
OTHERWISE
DO:
DecAccPrice = DecAccPrice + 0.
END.
END CASE.
END.
END.

If ChrSuffix MATCHES "*U*" THEN DO:
Find First Udcodes where udcodes.company = "#####" and Udcodes.codetypeID = "0001" and Udcodes.shortchar01 = ChrPart + "-U" no-lock no-error.
IF available Udcodes THEN DO:
CASE ChrGroupCode:
WHEN "STAN" THEN
DecAccPrice = DecAccPrice + UdCodes.Number01.
WHEN "OEM3" THEN
DecAccPrice = DecAccPrice + UdCodes.Number02.
WHEN "OEM4" THEN
DecAccPrice = DecAccPrice + UdCodes.Number03.
WHEN "OEM5" THEN
DecAccPrice = DecAccPrice + UdCodes.Number04.
WHEN "OEM6" THEN
DecAccPrice = DecAccPrice + UdCodes.Number05.
WHEN "OEM7" THEN
DecAccPrice = DecAccPrice + UdCodes.Number06.
OTHERWISE
DO:
DecAccPrice = DecAccPrice + 0.
END.
END CASE.
END.
END.

If ChrSuffix MATCHES "*EY*" THEN DO:
Find First Udcodes where udcodes.company = "#####" and Udcodes.codetypeID = "0001" and Udcodes.shortchar01 = ChrPart + "-EY" no-lock no-error.
IF available Udcodes THEN DO:
CASE ChrGroupCode:
WHEN "STAN" THEN
DecAccPrice = DecAccPrice + UdCodes.Number01.
WHEN "OEM3" THEN
DecAccPrice = DecAccPrice + UdCodes.Number02.
WHEN "OEM4" THEN
DecAccPrice = DecAccPrice + UdCodes.Number03.
WHEN "OEM5" THEN
DecAccPrice = DecAccPrice + UdCodes.Number04.
WHEN "OEM6" THEN
DecAccPrice = DecAccPrice + UdCodes.Number05.
WHEN "OEM7" THEN
DecAccPrice = DecAccPrice + UdCodes.Number06.
OTHERWISE
DO:
DecAccPrice = DecAccPrice + 0.
END.
END CASE.
END.
END.

If ChrSuffix MATCHES "*H*" THEN DO:
Find First Udcodes where udcodes.company = "#####" and Udcodes.codetypeID = "0001" and Udcodes.shortchar01 = ChrPart + "-H" no-lock no-error.
IF available Udcodes THEN DO:
CASE ChrGroupCode:
WHEN "STAN" THEN
DecAccPrice = DecAccPrice + UdCodes.Number01.
WHEN "OEM3" THEN
DecAccPrice = DecAccPrice + UdCodes.Number02.
WHEN "OEM4" THEN
DecAccPrice = DecAccPrice + UdCodes.Number03.
WHEN "OEM5" THEN
DecAccPrice = DecAccPrice + UdCodes.Number04.
WHEN "OEM6" THEN
DecAccPrice = DecAccPrice + UdCodes.Number05.
WHEN "OEM7" THEN
DecAccPrice = DecAccPrice + UdCodes.Number06.
OTHERWISE
DO:
DecAccPrice = DecAccPrice + 0.
END.
END CASE.
END.
END.
Function?

IF ChrSuffix MATCHES "*A*" THEN DO:
DecAccPrice = calcPrice(ChrPart + "-A", DecAccPrice).
END.
/* etc. */

FUNCTION calcPrice RETURNS DECIMAL (INPUT codePart AS CHAR, INPUT currPrice AS DECIMAL).
Find First Udcodes where udcodes.company = "MW68222" and Udcodes.codetypeID = "0001" and Udcodes.shortchar01 = codePart no-lock no-error.
DEF VAR addPrice AS DECIMAL NO-UNDO.
IF available Udcodes THEN DO:
CASE ChrGroupCode:
WHEN "STAN" THEN
addPrice = UdCodes.Number01.
WHEN "OEM3" THEN
addPrice = UdCodes.Number02.
WHEN "OEM4" THEN
addPrice = UdCodes.Number03.
WHEN "OEM5" THEN
addPrice = UdCodes.Number04.
WHEN "OEM6" THEN
addPrice = UdCodes.Number05.
WHEN "OEM7" THEN
addPrice = UdCodes.Number06.
OTHERWISE
DO:
addPrice = 0.
END.
END CASE.

RETURN (addPrice + currPrice).
END FUNCTION.

--- In vantage@yahoogroups.com, "Gibby" <guyguy50@...> wrote:
>
> Sorry posted wrong stuff... here is what portion of the finished code looks like, the removing field quotes didn't work with what I was doing either. Seems like the code below which does work could have been done in a more elogant fashion and I can't figure out how.
> Just food for thought and any suggestions?
>
> /* Inputs DEFINED */
> DEF INPUT PARAM ChrGroupCode AS CHAR NO-UNDO.
> DEF INPUT PARAM ChrSuffix AS CHAR NO-UNDO.
> DEF INPUT PARAM ChrPart AS CHAR NO-UNDO.
>
> /* outputs DEFINED */
> DEF OUTPUT PARAM DecAccPrice AS DECIMAL NO-UNDO.
>
> /* VARIABLES */
>
>
>
> /* RUN PROGRAM BELOW */
>
>
> /* ---Acc & Handle Price Options Below--- */
> IF ChrSuffix MATCHES "*A*" THEN DO:
> Find First Udcodes where udcodes.company = "######" and Udcodes.codetypeID = "0001" and Udcodes.shortchar01 = ChrPart + "-A" no-lock no-error.
> IF available Udcodes THEN DO:
> CASE ChrGroupCode:
> WHEN "STAN" THEN
> DecAccPrice = DecAccPrice + UdCodes.Number01.
> WHEN "OEM3" THEN
> DecAccPrice = DecAccPrice + UdCodes.Number02.
> WHEN "OEM4" THEN
> DecAccPrice = DecAccPrice + UdCodes.Number03.
> WHEN "OEM5" THEN
> DecAccPrice = DecAccPrice + UdCodes.Number04.
> WHEN "OEM6" THEN
> DecAccPrice = DecAccPrice + UdCodes.Number05.
> WHEN "OEM7" THEN
> DecAccPrice = DecAccPrice + UdCodes.Number06.
> OTHERWISE
> DO:
> DecAccPrice = DecAccPrice + 0.
> END.
> END CASE.
> END.
> END.
>
> If ChrSuffix MATCHES "*U*" THEN DO:
> Find First Udcodes where udcodes.company = "#####" and Udcodes.codetypeID = "0001" and Udcodes.shortchar01 = ChrPart + "-U" no-lock no-error.
> IF available Udcodes THEN DO:
> CASE ChrGroupCode:
> WHEN "STAN" THEN
> DecAccPrice = DecAccPrice + UdCodes.Number01.
> WHEN "OEM3" THEN
> DecAccPrice = DecAccPrice + UdCodes.Number02.
> WHEN "OEM4" THEN
> DecAccPrice = DecAccPrice + UdCodes.Number03.
> WHEN "OEM5" THEN
> DecAccPrice = DecAccPrice + UdCodes.Number04.
> WHEN "OEM6" THEN
> DecAccPrice = DecAccPrice + UdCodes.Number05.
> WHEN "OEM7" THEN
> DecAccPrice = DecAccPrice + UdCodes.Number06.
> OTHERWISE
> DO:
> DecAccPrice = DecAccPrice + 0.
> END.
> END CASE.
> END.
> END.
>
> If ChrSuffix MATCHES "*EY*" THEN DO:
> Find First Udcodes where udcodes.company = "#####" and Udcodes.codetypeID = "0001" and Udcodes.shortchar01 = ChrPart + "-EY" no-lock no-error.
> IF available Udcodes THEN DO:
> CASE ChrGroupCode:
> WHEN "STAN" THEN
> DecAccPrice = DecAccPrice + UdCodes.Number01.
> WHEN "OEM3" THEN
> DecAccPrice = DecAccPrice + UdCodes.Number02.
> WHEN "OEM4" THEN
> DecAccPrice = DecAccPrice + UdCodes.Number03.
> WHEN "OEM5" THEN
> DecAccPrice = DecAccPrice + UdCodes.Number04.
> WHEN "OEM6" THEN
> DecAccPrice = DecAccPrice + UdCodes.Number05.
> WHEN "OEM7" THEN
> DecAccPrice = DecAccPrice + UdCodes.Number06.
> OTHERWISE
> DO:
> DecAccPrice = DecAccPrice + 0.
> END.
> END CASE.
> END.
> END.
>
> If ChrSuffix MATCHES "*H*" THEN DO:
> Find First Udcodes where udcodes.company = "#####" and Udcodes.codetypeID = "0001" and Udcodes.shortchar01 = ChrPart + "-H" no-lock no-error.
> IF available Udcodes THEN DO:
> CASE ChrGroupCode:
> WHEN "STAN" THEN
> DecAccPrice = DecAccPrice + UdCodes.Number01.
> WHEN "OEM3" THEN
> DecAccPrice = DecAccPrice + UdCodes.Number02.
> WHEN "OEM4" THEN
> DecAccPrice = DecAccPrice + UdCodes.Number03.
> WHEN "OEM5" THEN
> DecAccPrice = DecAccPrice + UdCodes.Number04.
> WHEN "OEM6" THEN
> DecAccPrice = DecAccPrice + UdCodes.Number05.
> WHEN "OEM7" THEN
> DecAccPrice = DecAccPrice + UdCodes.Number06.
> OTHERWISE
> DO:
> DecAccPrice = DecAccPrice + 0.
> END.
> END CASE.
> END.
> END.
>