home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 5 / 05.iso / a / a012 / 1.ddi / CHAP09.EXE / CHP0914.PRG < prev    next >
Encoding:
Text File  |  1991-06-01  |  1.7 KB  |  72 lines

  1. /*
  2.    Listing 9.14. Print a listing of database structure and index key
  3.                  information based on contents of an array.
  4.    Author: Craig Yellick
  5.    Excerpted from "Clipper 5: A Developer's Guide"
  6.    Copyright (c) 1991 M&T Books
  7.                       501 Galveston Drive
  8.                       Redwood City, CA 94063-4728
  9.                       (415) 366-3600
  10. */
  11.  
  12. #include "dbfsytem.ch"
  13.  
  14. function ListStru(sys_, which)
  15.  
  16. local n
  17.   if which <> nil
  18.     n := ascan(sys_, ;
  19.          { |d_| upper(d_[SYS_DBFNAME]) == upper(which)})
  20.     if n > 0
  21.       ListStru1(sys_, n)
  22.     else
  23.       //  Error handler?
  24.     endif
  25.  
  26.   else
  27.     for n := 1 to len(sys_)
  28.       ListStru1(sys_, n)
  29.     next n
  30.   endif
  31.  
  32. return nil
  33.  
  34. static function ListStru1(sys_, n)
  35. local i
  36.   ?
  37.   ? "Database: " +upper(rtrim(sys_[n, SYS_DBFNAME]))
  38.   ?? ", " +sys_[n, SYS_COMMENT]
  39.   ?
  40.  
  41.   for i := 1 to len(sys_[n, SYS_STRU])
  42.     ? str(i, 4) +space(2)
  43.     ?? padr(sys_[n, SYS_STRU, i, STRU_NAME], 10)
  44.     ?? space(2) +sys_[n, SYS_STRU, i, STRU_TYPE]
  45.     ?? space(2) +str(sys_[n, SYS_STRU, i, STRU_LEN], 3)
  46.  
  47.     //  Only numeric fields need the decimals listed
  48.     if sys_[n, SYS_STRU, i, STRU_TYPE] = "N"
  49.       ?? "." +str(sys_[n, SYS_STRU, i, STRU_DEC], 1)
  50.     else
  51.       ?? space(2)
  52.     endif
  53.  
  54.     //  Field comments are optional
  55.     if len(sys_[n, SYS_STRU, i]) = STRU_COMMENT
  56.       ?? space(2) +sys_[n, SYS_STRU, i, STRU_COMMENT]
  57.     endif
  58.   next i
  59.  
  60.   ?
  61.   for i := 1 to len(sys_[n, SYS_NTX])
  62.     ? space(3)
  63.     ?? upper(rtrim(sys_[n, SYS_NTX, i, NTX_NAME]))
  64.     ?? ", " +sys_[n, SYS_NTX, i, NTX_COMMENT]
  65.     ? space(5) +"key: "
  66.     ?? sys_[n, SYS_NTX, i, NTX_KEY]
  67.   next i
  68.  ?
  69. return nil
  70.  
  71. // end of file CHP0914.PRG
  72.