Re: Concatination Procedure for ACE / SQL
Posted in 1996
greate procedure! but be careful on this, what if you send it two strings which
are both 30 characters long? also, what is the tempstr variable for? declared
but never used....
as an aside, when is informix going to support real string manipulation/array
subscripting (with variables) in SPL?
regards,
bob baskett
_______________________________________________________________________________
Subject: Concatination Procedure for ACE / SQL
From: jkormann@castle.net@EMAILWACC at #EMAIL
Date: 08/30/1996 08:17 AM
Apparently-To: RZBJ40@email.sps.mot.com
Here's a little something whipped up with the help of Neal Degregorio
(neald@informix.com - thanks!) to solve a very annoying problem of
concatinating values in ACE programs (you can't! you can't use ||
[double-pipe] in ACE).
Enjoy.
-Joseph
jkormann@castle.net
jkormann@rfbd.org - grunt programmer
create procedure concat (str1 char(30), str2 char(30)) returning char(60); define retstr char(60);
define tempstr char(60);
define i1 integer;
define i2 integer;
define s1 integer;
define s2 integer;
let s1 = length(str1);
let s2 = length(str2);
let retstr = '';
for i1 = 1 to s1
let retstr[60,60] = str1[1,1];
let retstr = retstr[2,60];
let str1 = str1[2,30];
end for;
for i1 = 1 to s2
let retstr[60,60] = str2[1,1];
let retstr = retstr[2,60];
let str2 = str2[2,30];
end for;
let i2 = 60 - (s1 + s2) - 1;
while (i2 > 0)
if i2 between 1 and 5 then
let retstr = retstr[2,60];
let i2 = i2 - 1;
elif i2 between 6 and 10 then
let retstr = retstr[7,60];
let i2 = i2 - 6;
elif i2 between 11 and 20 then
let retstr = retstr[12,60];
let i2 = i2 - 11;
elif i2 between 21 and 30 then
let retstr = retstr[22,60];
let i2 = i2 - 21;
else
let retstr = retstr[31,60];
let i2 = i2 - 30;
end if;
end while
return retstr;
end procedure;