home *** CD-ROM | disk | FTP | other *** search
- *****************************************************************
- FUNCTION MAKEID (name_var, id_var, look_ndx, id_row, id_col)
- *****************************************************************
-
- * Creates a six character unique ID code from a string
-
- * Copyright(c) 1991 -- James Occhiogrosso
-
- LOCAL old_ndx := old_recd := count1 := count2 := 0, id_char := ''
-
- * Use REQDDATA to force data entry in name variable
- IF .NOT. REQDDATA(name_var)
- RETURN(.F.)
- ENDIF
-
- * If help code undefined, define it for use below.
- IF TYPE('Helpcode') != 'C'
- helpcode = 'ADD'
- ENDIF
-
- * Generate ID codes in ADD mode
- IF UPPER(helpcode) == 'ADD'
-
- * Clear passed receiving variable
- id_var = SPACE(LEN(id_var))
-
- * Save current index order and record number
- old_ndx = INDEXORD()
- old_recd = RECNO()
- SET ORDER TO look_ndx
-
- * Set for three character positions
- FOR count1 = 1 TO 3
- DO WHILE count2++ <= LEN(TRIM(name_var))
-
- * Get next character in passed name variable
- id_char = UPPER(SUBSTR(name_var,count2,1))
-
- * Reject it if not a character
- IF id_char >= 'A' .AND. id_char <= 'Z'
- id_var = TRIM(id_var) + id_char
- EXIT
- ELSE
- LOOP
- ENDIF
- ENDDO
- NEXT
-
- * Pad to minimum of three alphabetical places
- id_var = PADR(id_var,3,'?') + '001'
-
- *
- DO WHILE count1 < 1000
- SEEK id_var
- IF FOUND()
- * ID code exists, increment counter and retry
- count1++
- id_var = SUBSTR(id_var,1,3) + PADL(count1)
-
- ELSE
- * No record with this key, exit the loop.
- EXIT
- ENDIF
- ENDDO WHILE count1 < 1000
-
- * Display data in GET color if row and column passed
- IF VALTYPE(id_row) = 'N' .AND. VALTYPE(id_col) = 'N'
- SWAPCOLOR(id_row, id_col, id_var)
- ENDIF
-
- GOTO old_recd
- SET ORDER TO old_ndx
- ENDIF
-
- * Return true if ID code is valid or no database in use
- RETURN IF(count1 < 1000 .OR. EMPTY(ALIAS()), .T., .F.)
-
-