createWordIndex.p 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. DEF VAR cwords AS CHAR NO-UNDO.
  2. DEF VAR ii AS INT NO-UNDO.
  3. DEF BUFFER bBuffer FOR labeltexte.
  4. DEF VAR hbBuffer AS HANDLE NO-UNDO.
  5. hbBuffer = BUFFER bBuffer:HANDLE.
  6. DEF VAR cDatatype AS CHAR NO-UNDO.
  7. DEF VAR cchar AS CHAR NO-UNDO.
  8. FOR EACH bBuffer:
  9. cwords = ''.
  10. DO ii = 1 TO hbBuffer:NUM-FIELDS:
  11. IF hbBuffer:BUFFER-FIELD(ii):BUFFER-VALUE = ? THEN NEXT.
  12. IF hbBuffer:BUFFER-FIELD(ii):BUFFER-VALUE = '' THEN NEXT.
  13. IF hbBuffer:BUFFER-FIELD(ii):BUFFER-VALUE = '0' THEN NEXT.
  14. IF INDEX(hbBuffer:BUFFER-FIELD(ii):NAME, 'SHA') > 0 THEN NEXT.
  15. IF INDEX(hbBuffer:BUFFER-FIELD(ii):NAME, 'word') > 0 THEN NEXT.
  16. cDatatype = hbBuffer:BUFFER-FIELD(ii):DATA-TYPE.
  17. CASE cDatatype:
  18. WHEN 'logical' THEN NEXT.
  19. WHEN 'character' THEN cWords = cWords + ' ' + hbBuffer:BUFFER-FIELD(ii):BUFFER-VALUE.
  20. WHEN 'integer' THEN DO:
  21. cchar = TRIM(STRING(INTEGER(hbBuffer:BUFFER-FIELD(ii):BUFFER-VALUE),'zzzzzzzz9-')).
  22. cwords = cWords + ' ' + CHR(01) + cChar + CHR(01).
  23. END.
  24. WHEN 'decimal' THEN DO:
  25. cchar = TRIM(STRING(DECIMAL(hbBuffer:BUFFER-FIELD(ii):BUFFER-VALUE),'zzzzzzzz9.9<<<-')).
  26. cwords = cWords + ' ' + CHR(01) + cChar + CHR(01).
  27. END.
  28. WHEN 'date' THEN DO:
  29. cchar = STRING(DATE(hbBuffer:BUFFER-FIELD(ii):BUFFER-VALUE),'99.99.9999').
  30. cwords = cWords + ' ' + cChar.
  31. END.
  32. END CASE.
  33. END.
  34. bBuffer.wordindex = ''.
  35. cwords = TRIM(cwords).
  36. DO ii = 1 TO NUM-ENTRIES(cwords, ' '):
  37. cchar = ENTRY(ii, cwords, ' ').
  38. IF LOOKUP(cchar, bBuffer.wordindex) > 0 THEN NEXT.
  39. bBuffer.wordindex = bBuffer.wordindex + ' ' + cchar.
  40. END.
  41. bBuffer.wordindex = TRIM(bBuffer.wordindex).
  42. END.