home *** CD-ROM | disk | FTP | other *** search
- /*
- Listing 9.14. Print a listing of database structure and index key
- information based on contents of an array.
- Author: Craig Yellick
- Excerpted from "Clipper 5: A Developer's Guide"
- Copyright (c) 1991 M&T Books
- 501 Galveston Drive
- Redwood City, CA 94063-4728
- (415) 366-3600
- */
-
- #include "dbfsytem.ch"
-
- function ListStru(sys_, which)
-
- local n
- if which <> nil
- n := ascan(sys_, ;
- { |d_| upper(d_[SYS_DBFNAME]) == upper(which)})
- if n > 0
- ListStru1(sys_, n)
- else
- // Error handler?
- endif
-
- else
- for n := 1 to len(sys_)
- ListStru1(sys_, n)
- next n
- endif
-
- return nil
-
- static function ListStru1(sys_, n)
- local i
- ?
- ? "Database: " +upper(rtrim(sys_[n, SYS_DBFNAME]))
- ?? ", " +sys_[n, SYS_COMMENT]
- ?
-
- for i := 1 to len(sys_[n, SYS_STRU])
- ? str(i, 4) +space(2)
- ?? padr(sys_[n, SYS_STRU, i, STRU_NAME], 10)
- ?? space(2) +sys_[n, SYS_STRU, i, STRU_TYPE]
- ?? space(2) +str(sys_[n, SYS_STRU, i, STRU_LEN], 3)
-
- // Only numeric fields need the decimals listed
- if sys_[n, SYS_STRU, i, STRU_TYPE] = "N"
- ?? "." +str(sys_[n, SYS_STRU, i, STRU_DEC], 1)
- else
- ?? space(2)
- endif
-
- // Field comments are optional
- if len(sys_[n, SYS_STRU, i]) = STRU_COMMENT
- ?? space(2) +sys_[n, SYS_STRU, i, STRU_COMMENT]
- endif
- next i
-
- ?
- for i := 1 to len(sys_[n, SYS_NTX])
- ? space(3)
- ?? upper(rtrim(sys_[n, SYS_NTX, i, NTX_NAME]))
- ?? ", " +sys_[n, SYS_NTX, i, NTX_COMMENT]
- ? space(5) +"key: "
- ?? sys_[n, SYS_NTX, i, NTX_KEY]
- next i
- ?
- return nil
-
- // end of file CHP0914.PRG
-