温馨提示:
本文所述内容具有依赖性,可能因软硬条件不同而与预期有所差异,故请以实际为准,仅供参考。
部分源代码:
......
DEFINE i,l_len,l_split LIKE type_file.num5
DEFINE l_str LIKE type_file.chr1000
......
LET l_len = l_str.getLength()
FOR i = 1 TO l_len
IF l_str.subString(i,i) MATCHES '[,;]' THEN
LET l_split = i
EXIT FOR
END IF
END FOR
......
编译时出现如下错误:
<toptest:/u1/toptest/topcust/csf/4gl> r.c2 csft900
csft900 ..............
../42m/csf_csft900.4gl:1984:23:1984:39:error:(-6606) No member function 'getLength' for class 'Field' defined.
../42m/csf_csft900.4gl:1986:18:1986:37:error:(-6606) No member function 'subString' for class 'Field' defined.
../42m/csf_csft900.4gl:1998:19:1998:38:error:(-6606) No member function 'subString' for class 'Field' defined.
The compilation was not successful. Errors found: 3.
The file '../42m/csf_csft900.err' has been written.
出现此问题原因是 l_str 的类型定义错误,getLength、subString 只能处理 STRING 类型,不能处理 varchar2 类型。
修改后源代码:
......
DEFINE i,l_len,l_split LIKE type_file.num5
DEFINE l_str STRING
......
LET l_len = l_str.getLength()
FOR i = 1 TO l_len
IF l_str.subString(i,i) MATCHES '[,;]' THEN
LET l_split = i
EXIT FOR
END IF
END FOR
......
编译无报错:
<toptest:/u1/toptest/topcust/csf/4gl> r.c2 csft900
csft900 ..............
<toptest:/u1/toptest/topcust/csf/4gl> r.l2 csft900
/u1/genero/fgl.dev/bin/fgl2p -o csft900.42r libgre.42x WSHelper.42m lib.42x sub.42x qry.42x csf_csft900.42m
csft900.42r has been generated successfully!
网上的 TIPTOP 4GL 中文资源真不好找......