******************************************************************** * Description.......: non case-sensitive string translation * Calling Samples...: * Parameter List....: * Created by........: Steven Black * Modified by.......: Nadya Nosonovsky 05/09/2001 03:54:52 PM ******************************************************************** ******************************************* FUNCTION STRTRANC lPARAMETERS Expc1, Expc2, Expc3, Expn1, Expn2 LOCAL lcExpr, lnat_pos, lnat_pos2, lnI, lnJ if vartype(m.Expc1)<>"C" or vartype(m.Expc2)<>"C" or vartype(m.Expc3)<>"C" return "" endif IF EMPTY(m.Expc1) OR EMPTY(m.Expc2) RETURN m.Expc1 ENDIF m.lcExpr=m.Expc1 IF varTYPE(m.Expn1)#'N' m.Expn1=1 ENDIF IF varTYPE(m.Expn2)#'N' m.Expn2=LEN(m.Expc1) ENDIF IF m.Expn1<1 OR m.Expn2<1 RETURN m.Expc1 ENDIF m.lnI=0 m.lnJ=0 m.lnat_pos2=1 DO WHILE .T. m.lnat_pos=ATC(m.Expc2,SUBSTR(m.lcExpr,m.lnat_pos2)) IF m.lnat_pos=0 EXIT ENDIF m.lnI=m.lnI+1 IF m.lnI<m.Expn1 m.lnat_pos2=m.lnat_pos+m.lnat_pos2+LEN(m.Expc2)-1 LOOP ENDIF m.lcExpr=LEFT(m.lcExpr,m.lnat_pos+m.lnat_pos2-2)+m.Expc3+; SUBSTR(m.lcExpr,m.lnat_pos+m.lnat_pos2+LEN(m.Expc2)-1) m.lnJ=m.lnJ+1 IF m.lnJ>=m.Expn2 EXIT ENDIF m.lnat_pos2=m.lnat_pos+m.lnat_pos2+LEN(m.Expc3)-1 IF m.lnat_pos2>LEN(m.lcExpr) EXIT ENDIF ENDDO RETURN m.lcExpr