Re: Need UPPER( ) function
Posted in 1996
Ravi Joseph Pinto writes:
*
* In reply to Chris Simpson's email about Need UPPER( ) function, on 9 Oct
* 96
<<Snip>>
* 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...
I made one more mod since it seems to append a blank at the beginning of
the returned value.
Here is the result:
DROP PROCEDURE upper ;
CREATE PROCEDURE upper (str CHAR(255)) RETURNING CHAR(255);
DEFINE i INTEGER;
DEFINE l INTEGER;
DEFINE retstr VARCHAR(255);
DEFINE char CHAR;
LET l = LENGTH(str);
LET retstr = '';
FOR i = 1 to l
IF str[1] MATCHES "[a-z]" THEN
IF str[1] = 'a' THEN
LET char = 'A';
ELIF str[1,1] = b' THEN
LET char = 'B';
....
ELIF str[1,1] = 'z' THEN
LET char = 'Z';
END IF
ELSE
LET char = retstr[1];
END IF
IF i = 1 THEN
LET retstr = char;
ELSE
LET retstr = retstr || char;
END IF
LET str = str[2,255];
END FOR
RETURN retstr;
END PROCEDURE;
HTH,
-----------------------------------------------------------------------------
Robert Minter Data Systems Support
Senior Software Engineer A Client Technologies Company
E-Mail: rob@dssmktg.com Tel: 714.771.0454
Fax: 714.771.3028
#include <std_disclaimer.h> http://www.dssny.com