home *** CD-ROM | disk | FTP | other *** search
- *******************
-
- FUNCTION Array_size
-
- PARAMETERS _arraya, _arrayb, _arrayc
-
- * _arraya is the name of the file or select area
- * _arrayb is the name of the field or the field number
- * _arrayc is the number of fields to calculate for
-
- PRIVATE _retto, _start, _bfields, _arraynumb, _qaz
-
- IF EMPTY(PCOUNT())
- _arraya = ""
- ENDIF
-
- _start = 1
-
- IF !EMPTY(_arraya)
- _retto = SELECT()
- IF LEN(_arraya) = 1
- SELECT &_arraya.
- ELSE
- SELECT 0
- IF !FILE(_arraya)
- SELECT (_retto)
- RETURN(0)
- ENDIF
- USE (_arraya)
- ENDIF
- ENDIF
-
- _arraynumb = 1
- DO CASE
- CASE PCOUNT() = 1 .OR. PCOUNT() = 0 && Only the file area/name
- _arraynumb = FCOUNT()
- CASE PCOUNT() = 3
- _arraynumb = _arrayc
- OTHERWISE
- IF TYPE("_arrayb") = "C" && IF a field name ELSE a field number
- _bfields = ""
- FOR _qaz = 1 TO FCOUNT()
- _bfields = _bfields + Fill_out(FIELDNAME(_qaz), 10)
- NEXT
- _start = (AT(UPPER(Fill_out(_arrayb, 10)), _bfields) + 9) / 10
- IF _start <= 1
- _start = 1
- ENDIF
- ELSE
- _start = _arrayb
- ENDIF
-
- _arraynumb = FCOUNT() - _start + 1
-
- ENDCASE
-
- IF !EMPTY(_arraya)
- IF LEN(_arraya) > 1
- CLOSE DATABASE
- ENDIF
- SELECT (_retto)
- ENDIF
- RETURN(_arraynumb)
-
- * End of File