Varchar bug
Posted in 1997
We've discovered, with help from Felix Koshy of DHL, that there
actually is a problem with Varchars in the INFORMIX running at
my site.
ONLINE - 7.20.UC4
4GL - 6.04.UC1 (pcode 602)
If some of you could give me feedback on the results of running
the following program at your site, I'd be grateful.
N.B. Change the database name as required. You will need to create 'junk'
before compiling the program (because of the LIKE statements).
TIA.
DATABASE test
#****
MAIN
#****
{
CREATE TABLE junk (
ownr_srv_area_cd CHAR(3),
accnt_nm VARCHAR(50,10)
);
INSERT INTO junk VALUES ('HKG','ABC COMPANY LTD');
INSERT INTO junk VALUES ('HKG','EFG COMPANY LTD');
INSERT INTO junk VALUES ('HKG','QRS COMPANY LTD');
INSERT INTO junk VALUES ('HKG','XYZ COMPANY LTD');}
DEFINE l_rcount SMALLINT
DEFINE l_nc_accnt_nm CHAR(45)
DEFINE l_vc_accnt_nm LIKE junk.accnt_nm
DEFINE l_accnt_nm LIKE junk.accnt_nm
DEFINE lr_bact RECORD LIKE junk.*
LET l_nc_accnt_nm = "ABC COMPANY LTD"
LET l_vc_accnt_nm = "ABC COMPANY LTD"
LET lr_bact.ownr_srv_area_cd = "HKG"
SELECT accnt_nm INTO l_accnt_nm FROM junk
WHERE ownr_srv_area_cd = lr_bact.ownr_srv_area_cd
AND accnt_nm = l_nc_accnt_nm
DISPLAY "1-- Slt. Name Using Normal-char : ",l_accnt_nm clipped,
" SQLCODE = ",sqlca.sqlcode USING '##&'
SELECT accnt_nm INTO l_accnt_nm FROM junk
WHERE ownr_srv_area_cd = lr_bact.ownr_srv_area_cd
AND accnt_nm = l_vc_accnt_nm
DISPLAY "2-- Slt. Name Using Var-char : ",l_accnt_nm clipped,
" SQLCODE = ",sqlca.sqlcode USING '##&'
SELECT * INTO lr_bact.* FROM junk
WHERE ownr_srv_area_cd = lr_bact.ownr_srv_area_cd
AND accnt_nm = l_nc_accnt_nm
DISPLAY "3-- Slt. Rcd. Using Normal-char : ",lr_bact.accnt_nm clipped," SQLCODE = ",sqlca.sqlcode USING '##&'
SELECT * INTO lr_bact.* FROM junk
WHERE ownr_srv_area_cd = lr_bact.ownr_srv_area_cd
AND accnt_nm = l_vc_accnt_nm
DISPLAY "4-- Slt. Rcd. Using Var-char : ",lr_bact.accnt_nm clipped," SQLCODE = ",sqlca.sqlcode USING '##&'
SELECT count(*) INTO l_rcount FROM junk
WHERE ownr_srv_area_cd = lr_bact.ownr_srv_area_cd
AND accnt_nm = l_nc_accnt_nm
DISPLAY "5-- Slt. Count Using Normal-char: "," SQLCODE = ",sqlca.sqlcode USING '##&', ' Rows found = ', l_rcount USING
'<&'
SELECT count(*) INTO l_rcount FROM junk
WHERE ownr_srv_area_cd = lr_bact.ownr_srv_area_cd
AND accnt_nm = l_vc_accnt_nm
DISPLAY "6-- Slt. Count Using Var-char : "," SQLCODE = ",sqlca.sqlcode USING '##&', ' Rows found = ', l_rcount USING
'<&'
END MAIN
# Versions
# ONLINE - 7.20.UC4
# 4GL - 6.04 UC1, pcode 602
{ Results on my machine are as follows
1-- Slt. Name Using Normal-char : ABC COMPANY LTD SQLCODE = 0
2-- Slt. Name Using Var-char : ABC COMPANY LTD SQLCODE = 100
3-- Slt. Rcd. Using Normal-char : ABC COMPANY LTD SQLCODE = 0
4-- Slt. Rcd. Using Var-char : ABC COMPANY LTD SQLCODE = 100
5-- Slt. Count Using Normal-char: SQLCODE = 0 Rows found = 1
6-- Slt. Count Using Var-char : SQLCODE = 0 Rows found = 0
}
----------------------
Rudy Fernandes
GIC, Kuwait
----------------------