Re: Need UPPER( ) function
Posted in 1996
In reply to Chris Simpson's email about Need UPPER( ) function, on 9 Oct
96
Hi Chris,
> I need a function to do the following:
>
> select upper(column) from table
>
I think there is ( are ??? ) some articles available on www.iiug.org
archives on this topic ( a real hot one , if one may add ).
Anyways, I tested your procedure on OnLine 7.10.UC1 and lo and behold, it
works. I did however, some modifications.
<<Snip>>
> IF str[l,1] BETWEEN "a" AND "z" THEN
^
Is this typo or does it work for you ??? My OnLine barfed at this point.
So I changed l ( small L ) to 1 ( one ).
> IF str[1,1] = 'a' THEN
> LET retstr = retstr || 'A';
> ...
> ELIF str[1,1] = 'z' THEN
> LET retstr = retstr || 'Z';
I put an "END IF" here so that if the character is none of these then it
goes to the ELSE part below.
> ELSE
> LET retstr = retstr || str[1,1];
> END IF
>
> LET str = str[2,255];
> END FOR
>
> RETURN retstr;
> END PROCEDURE;
Here is the modified procedure.
DROP PROCEDURE upper ;
CREATE PROCEDURE upper (str CHAR(255))
RETURNING CHAR(255);
DEFINE i INTEGER;
DEFINE l INTEGER;
DEFINE retstr VARCHAR(255);
LET l = LENGTH(str);
LET retstr = '';
FOR i = 1 to l
IF str[1,1] BETWEEN "a" AND "z" THEN
IF str[1,1] = 'a' THEN
LET retstr = retstr || 'A';
ELIF str[1,1] = b' THEN
LET retstr = retstr || 'B';
....
ELIF str[1,1] = 'z' THEN
LET retstr = retstr || 'Z';
END IF
ELSE
LET retstr = retstr || str[1,1];
END IF
LET str = str[2,255];
END FOR
RETURN retstr;
END PROCEDURE;
HTH and works :^) ,
Ravi...
--
Ravi Joseph Pinto, mailto:ravi@in.dhl.com
Consultant, Astra Infotech, voice :91-22-8503000
Mumbai, India extn. 1531
Standard disclaimers apply.