置換文字
LET l_wc=change_string(l_wc,"ima01","tlf01")
FUNCTION change_string(old_string, old_sub, new_sub)
DEFINE query_text VARCHAR(300)
DEFINE AA VARCHAR(1)
DEFINE old_string VARCHAR(300) ,
xxx_string VARCHAR(300) ,
old_sub VARCHAR(128) ,
new_sub VARCHAR(128) ,
first_byte VARCHAR(01),
nowx_byte VARCHAR(01),
next_byte VARCHAR(01),
this_byte VARCHAR(01),
length1, length2, length3 smallint,
pu1, pu2 smallint,
ii, jj, kk, ff, tt smallint
LET length1 = length(old_string)
LET length2 = length(old_sub)
LET length3 = length(new_sub)
LET first_byte = old_sub[1,1]
LET xxx_string = " "
let pu1 = 0
FOR ii = 1 TO length1
LET this_byte = old_string[ii, ii]
LET nowx_byte = this_byte
IF this_byte = first_byte THEN
FOR jj = 2 TO length2
let this_byte = old_string[ ii + jj - 1, ii + jj - 1]
let next_byte = old_sub[ jj, jj]
IF this_byte <> next_byte THEN
let jj = 29999
exit for
END IF
END FOR
IF jj < 29999 THEN
let pu1 = pu1 + 1
let pu2 = pu1 + length3 - 1
LET xxx_string[pu1, pu2] = new_sub CLIPPED
LET ii = ii + length2 - 1
LET pu1 = pu2
ELSE
let pu1 = pu1 + 1
LET xxx_string[pu1,pu1] = nowx_byte
END IF
ELSE
LET pu1 = pu1 + 1
LET xxx_string[pu1,pu1] = nowx_byte
END IF
end for
let query_text = xxx_string
#DISPLAY QUERY_TEXT CLIPPED AT 10,1
# PROMPT " " FOR CHAR AA
RETURN query_text
end function
FUNCTION change_string(old_string, old_sub, new_sub)
DEFINE query_text VARCHAR(300)
DEFINE AA VARCHAR(1)
DEFINE old_string VARCHAR(300) ,
xxx_string VARCHAR(300) ,
old_sub VARCHAR(128) ,
new_sub VARCHAR(128) ,
first_byte VARCHAR(01),
nowx_byte VARCHAR(01),
next_byte VARCHAR(01),
this_byte VARCHAR(01),
length1, length2, length3 smallint,
pu1, pu2 smallint,
ii, jj, kk, ff, tt smallint
LET length1 = length(old_string)
LET length2 = length(old_sub)
LET length3 = length(new_sub)
LET first_byte = old_sub[1,1]
LET xxx_string = " "
let pu1 = 0
FOR ii = 1 TO length1
LET this_byte = old_string[ii, ii]
LET nowx_byte = this_byte
IF this_byte = first_byte THEN
FOR jj = 2 TO length2
let this_byte = old_string[ ii + jj - 1, ii + jj - 1]
let next_byte = old_sub[ jj, jj]
IF this_byte <> next_byte THEN
let jj = 29999
exit for
END IF
END FOR
IF jj < 29999 THEN
let pu1 = pu1 + 1
let pu2 = pu1 + length3 - 1
LET xxx_string[pu1, pu2] = new_sub CLIPPED
LET ii = ii + length2 - 1
LET pu1 = pu2
ELSE
let pu1 = pu1 + 1
LET xxx_string[pu1,pu1] = nowx_byte
END IF
ELSE
LET pu1 = pu1 + 1
LET xxx_string[pu1,pu1] = nowx_byte
END IF
end for
let query_text = xxx_string
#DISPLAY QUERY_TEXT CLIPPED AT 10,1
# PROMPT " " FOR CHAR AA
RETURN query_text
end function