>DEFINE CLASS parseclass AS custom > > > Name = "parseclass" > > > PROCEDURE parse > LPARAMETERS tcText > LOCAL ix > LOCAL ARRAY aWork[1] > lnLines = ALINES(aWork,m.tcText) > THIS.ADDPROPERTY('aWorked['+TRANSFORM(m.lnLines)+']') > > palias = ALIAS() > CREATE CURSOR _dummy_ (ID I,vl I,vlState I,vlYEar I,Location I,Comments I) > FOR ix=1 TO ALINES(aWork,m.tcText) > SCATTER NAME THIS.aWorked[m.ix] BLANK > IF TYPE('aWork(m.ix)') = "C" > THIS.aWorked[m.ix].ID = ALLTRIM(aWork[m.ix]) > ELSE > THIS.aWorked(m.ix).ID = '' > ENDIF > THIS.ProcessLine(aWork[m.ix],m.ix) > ENDFOR > USE IN _dummy_ > IF !EMPTY(palias) .AND. USED(palias) > SELECT (palias) > ENDIF > ENDPROC > > > PROCEDURE processline > LPARAMETERS tcLine, tnObjectID > LOCAL lcParsePhrase,lnWords,ix > IF TYPE('tcLine') = "C" > m.lcParsePhrase = UPPER(ALLTRIM(tcLine)) > ELSE > m.lcParsePhrase = '' > ENDIF > lnWords = GETWORDCOUNT( m.lcParsePhrase,',' ) > LOCAL ARRAY aWorkings[Max(m.lnWords,5)] > aWorkings = '' > FOR ix=1 TO m.lnWords > aWorkings[m.ix] = ALLTRIM(GETWORDNUM( m.lcParsePhrase,m.ix,',' )) > ENDFOR > THIS.parseItems(@aWorkings,m.tnObjectID) > ENDPROC > > > PROCEDURE parseitems > LPARAMETERS taValues, tnObjectID > > WITH THIS.aWorked[m.tnObjectID] > .vlYEar = THIS.GetYear(@taValues) > .vlState = THIS.GetState(@taValues) > .Location = THIS.GetLocation(@taValues) > .vl = THIS.GetLicenseTag(@taValues) > .Comments = THIS.GetComments(@taValues) > ENDWITH > ENDPROC > > > PROCEDURE getyear > LPARAMETERS taValues > LOCAL ix,lnYear > IF TYPE('alen(taValues,1)') = "N" .and. ALEN(taValues,1) > 0 > FOR ix=1 TO ALEN(taValues,1) > IF THIS.IsYear(taValues[m.ix]) > lnYear = YEAR(CTOD('1/1/'+taValues[m.ix])) > ADEL(taValues,m.ix) > IF Alen[taValues] > 1 > DIMENSION taValues[Alen(taValues)-1] > ENDIF > lcYear = ALLTRIM(STR(m.lnYear)) > RETURN m.lcYear > ENDIF > ENDFOR > ENDIF > RETURN 0 > ENDPROC > > > PROCEDURE getstate > LPARAMETERS taValues > > LOCAL ix,lcState > m.lcState = '' > > IF TYPE('alen(taValues,1)') = "N" .and. ALEN(taValues,1) > 0 > FOR ix=1 TO ALEN(taValues,1) > IF TYPE('taValues[m.ix]') = "C" > taValues[m.ix]=ALLTRIM(UPPER(taValues[m.ix])) > IF LEN(taValues[m.ix]) = 2 .AND. VAL(taValues[m.ix]) = 0 .AND. Statever(taValues[m.ix]) > lcState = taValues[m.ix] > ADEL(taValues,m.ix) > IF Alen[taValues] > 1 > DIMENSION taValues[Alen(taValues)-1] > ENDIF > ENDIF > ENDIF > ENDFOR > ENDIF > RETURN m.lcState > ENDPROC > > > PROCEDURE getlocation > LPARAMETERS taValues > LOCAL ix,lcLocation > > IF TYPE('alen(taValues,1)') = "N" .and. ALEN(taValues,1) > 0 > FOR ix=1 TO ALEN(taValues,1) > IF TYPE('taValues[m.ix]') = "C" > IF ( ISDIGIT(LEFT(taValues[m.ix],1)) AND OCCURS(' ', taValues[m.ix]) > 0 ) OR ; > ( '/' $ taValues[m.ix] ) OR ( '\' $ taValues[m.ix] ) > lcLocation = taValues[m.ix] > ADEL(taValues,m.ix) > IF Alen[taValues] > 1 > DIMENSION taValues[Alen(taValues)-1] > ENDIF > RETURN m.lcLocation > ENDIF > ENDIF > ENDFOR > ENDIF > RETURN '' > ENDPROC > > > PROCEDURE getlicensetag > LPARAMETERS taValues > > LOCAL ix,lcTag > IF TYPE('alen(taValues,1)') = "N" .and. ALEN(taValues,1) > 0 > FOR ix=1 TO ALEN(taValues,1) > IF ( OCCURS(' ', taValues[m.ix]) = 0 ) > lcTag = taValues[m.ix] > ADEL(taValues,m.ix) > IF Alen[taValues] > 1 > DIMENSION taValues[Alen(taValues)-1] > ENDIF > RETURN m.lcTag > ENDIF > ENDFOR > ENDIF > RETURN '' > ENDPROC > > > PROCEDURE getcomments > LPARAMETERS taValues > > LOCAL ix,lcComments > lcComments = '' > IF TYPE('alen(taValues,1)') = "N" .and. ALEN(taValues,1) > 0 > FOR ix=1 TO ALEN(taValues,1) > IF ( !EMPTY(taValues[m.ix]) ) > lcComments = lcComments + taValues[m.ix] + SPACE(1) > ENDIF > ENDFOR > ENDIF > RETURN TRIM(m.lcComments) > ENDPROC > > > PROCEDURE isalldigit > LPARAMETERS tcValue > RETURN EMPTY(CHRTRAN(tcValue,'0123456789','')) > ENDPROC > > > PROCEDURE isyear > LPARAMETERS tcValue > RETURN THIS.IsAllDigit(tcValue) AND ; > INLIST(LEN(tcValue),2,4) AND ; > BETWEEN(YEAR(CTOD('1/1/'+tcValue)),YEAR(DATE())-3,YEAR(DATE())+1) > ENDPROC > > >ENDDEFINE >* >*-- EndDefine: parseclass >