home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 5 / 05.iso / a / a013 / 1.ddi / SOURCE.EXE / F_CHKKEY.PRG < prev    next >
Encoding:
Text File  |  1991-01-25  |  2.2 KB  |  87 lines

  1. *****************************************************************
  2. FUNCTION CHKKEY
  3. *****************************************************************
  4.  
  5. * Verify key data in specified file and optionally displays it
  6.  
  7. * Copyright(c) 1991 -- James Occhiogrosso
  8.  
  9. LOCAL old_color := SETCOLOR(colhelp1), ret_value := .F.
  10. PRIVATE old_file := ALIAS()
  11.       
  12. PARAMETERS lookfile, lookdata, udf_name, showrow, startcol, ;
  13.            donecol, showfld1, showfld2, spac_char
  14.  
  15. * Check for valid parameters
  16.  
  17. IF PCOUNT()=2 .OR. PCOUNT()=3 .OR. PCOUNT()=7 .OR. PCOUNT()=9
  18.  
  19.     IF PCOUNT() > 3
  20.  
  21.         * Display external data. Check passed row and column
  22.         * for validity. Error message needs 12 characters
  23.         IF startcol > MAXCOL() - 12 .OR. showrow > MAXROW()
  24.             RETURN(.F.)
  25.         ELSE
  26.             @ showrow, startcol CLEAR TO showrow, donecol
  27.         ENDIF
  28.     ENDIF
  29.  
  30. ELSE
  31.     RETURN(.F.)
  32. ENDIF
  33.  
  34. * Verify data exists in selected file
  35. SELECT (lookfile)
  36. SEEK (&lookdata)
  37.  
  38. IF FOUND()
  39.    ret_value := .T.
  40.    DO CASE
  41.  
  42.       CASE PCOUNT() = 2
  43.          * No screen display. Return.
  44.          SETCOLOR(old_color)
  45.          SELECT (old_file)
  46.          RETURN ret_value
  47.  
  48.       CASE PCOUNT() = 7
  49.          * Trim first field for display
  50.          showdata = LTRIM(TRIM(&showfld1))
  51.  
  52.       CASE PCOUNT() = 9
  53.          * Trim and space both fields for display
  54.          showdata = LTRIM(TRIM(&showfld1)) + spac_char + ;
  55.                     LTRIM(TRIM(&showfld2))
  56.    ENDCASE
  57.  
  58.    * Trim data to match the passed number of columns
  59.    IF PCOUNT() = 7 .OR. PCOUNT() = 9
  60.        showlen = LEN(showdata)
  61.        IF showlen + startcol > donecol
  62.            showdata = SUBSTR(showdata,1, donecol - startcol)
  63.        ENDIF
  64.        @ showrow, startcol SAY showdata
  65.    ENDIF
  66. ELSE
  67.    * Data was not found. Display "Not found!"
  68.    SETCOLOR(colblink)
  69.    ?? CHR(7)
  70.    IF PCOUNT() > 3
  71.       @ showrow, startcol SAY ' Not found! '
  72.    ENDIF
  73. ENDIF
  74.  
  75. * Call user defined procedure if one was passed.
  76.  
  77. IF TYPE('udf_name') != 'U' .AND. .NOT. EMPTY(udf_name)
  78.     ret_value = &udf_name()
  79. ENDIF
  80.  
  81. SETCOLOR(old_color)
  82. SELECT (old_file)
  83.  
  84. * Called function can alter return value if desired.
  85. RETURN ret_value
  86.  
  87.