home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 7 / 07.iso / c / c017 / 36.ddi / DBTOC.ZIP / BROWSE.C < prev    next >
Encoding:
C/C++ Source or Header  |  1987-11-18  |  4.5 KB  |  184 lines

  1. #include "\lc\header\stdlib.h"
  2. #include "\switch\c\dbase.h"
  3.  
  4. #ifndef NULL
  5.      #define  NULL 0
  6. #endif
  7.  
  8. #define  ERROR -1
  9.  
  10. void     main()
  11.  
  12. {
  13.  
  14.     void printstr();
  15.  
  16.     char strbuf[15],
  17.          asccode,
  18.          scancode;
  19.  
  20.     DBF  *opendbf(),
  21.          *dbf_ptr;
  22.  
  23.     int  readrec();
  24.  
  25.  
  26.     long rec;
  27.  
  28.     scrollup(0,0,24,79,0,7);
  29.  
  30.     dbf_ptr = opendbf("test.dbf");          /* open the DBF and get the ptr */
  31.  
  32. if(dbf_ptr){
  33.  
  34.     sprintf(strbuf,"%02d/%02d/%02d",(int)dbf_ptr->header.mm,(int)dbf_ptr->header.dd,(int)dbf_ptr->header.yy);
  35.     printstr(0,0,"Last Update: ");
  36.     printstr(0,13,strbuf);
  37.  
  38.     sprintf(strbuf,"%ld",dbf_ptr->header.no_recs);
  39.     printstr(0,40,"Number Of Records: ");
  40.     printstr(0,59,strbuf);
  41.  
  42.     sprintf(strbuf,"%ld",dbf_ptr->curr_rec);
  43.     printstr(1,0,"Current Record: ");
  44.     printstr(1,16,strbuf);
  45.  
  46.     sprintf(strbuf,"%d",dbf_ptr->header.rec_len);
  47.     printstr(1,40,"Record Length: ");
  48.     printstr(1,55,strbuf);
  49.  
  50.     sprintf(strbuf,"%d",dbf_ptr->header.head_len);
  51.     printstr(1,60,"Head Len:");
  52.     printstr(1,70,strbuf);
  53.  
  54.     scrollup(3,0,3,79,0,112);
  55.     scrollup(4,0,24,79,0,15);
  56.     scrollup(23,0,24,79,0,120);
  57.  
  58.     printstr(23,0,"  F1 -Next │ F2 -Prev │ F3 -Bott │ F4 -Top │ F5 -Dele │ F6 -Undel │ F7 -Append");
  59.     printstr(24,0,"  F8 -     │ F9 -     │ F10 - Zap│ ");
  60.  
  61.     printstr(3,0,"   Name           Type         Length                     Value");
  62.  
  63.     scancode = 0;
  64.     rec = 1;
  65.     asccode = 0;
  66.  
  67.     while(scancode != 1){
  68.  
  69.          readrec(dbf_ptr,rec);
  70.  
  71.          printstr(1,16,"     ");                      /* clear old rec no */
  72.          sprintf(strbuf,"%ld",dbf_ptr->curr_rec);
  73.          printstr(1,16,strbuf);
  74.  
  75.          if(dbf_ptr->deleted)
  76.               printstr(2,0,"DELETED");
  77.          else
  78.               printstr(2,0,"       ");
  79.  
  80.          showflds(dbf_ptr->fields);
  81.  
  82.          keyboard(&asccode,&scancode);
  83.  
  84.          switch(scancode){
  85.               case 59:       /* F1 */
  86.                    ++rec;
  87.                    break;
  88.               case 60:       /* F2 */
  89.                    --rec;
  90.                    break;
  91.               case 61:       /* F3 */
  92.                    rec = dbf_ptr->header.no_recs;
  93.                    break;
  94.               case 62:       /* F4 */
  95.                    rec = 1;
  96.                    break;
  97.               case 63:       /* F5 */
  98.                    delete(dbf_ptr,rec);
  99.                    break;
  100.               case 64:       /* F6 */
  101.                    undelete(dbf_ptr,rec);
  102.                    break;
  103.               case 65:       /* F7 */
  104.                    if(append(dbf_ptr) < 1)
  105.                         printstr(0,0,"I/O ERROR APPENDING TO FILE !!");
  106.                    sprintf(strbuf,"%ld",dbf_ptr->header.no_recs);
  107.                    printstr(0,59,strbuf);
  108.                    rec = dbf_ptr->curr_rec;
  109.                    break;
  110.               case 68:       /* F10 */
  111.                    if(zap(dbf_ptr) < 1)
  112.                         printstr(0,0,"ERROR ZAPPING FILE !!!");
  113.                    rec = 0;
  114.                    break;
  115.          }
  116.          if(rec == 0 && dbf_ptr->header.no_recs > 0){
  117.               snd(1500,10);
  118.               rec = 1;
  119.          }
  120.          if(rec > dbf_ptr->header.no_recs){
  121.               snd(400,15);
  122.               rec = dbf_ptr->header.no_recs;
  123.          }
  124.     }
  125.  
  126.     closedbf(dbf_ptr); 
  127.  
  128.     scrollup(0,0,24,79,0,7);
  129. }
  130.  
  131. exit(0);
  132.  
  133. }
  134.  
  135. /*-----------------------------------------------------------------------------
  136.     Name:     SHOWFLDS()
  137.  
  138.     Description:   Displays fields and values on the screen
  139.  
  140. ----------------------------------------------------------------------------*/
  141.  
  142. int showflds(tmpfield)
  143.  
  144.     FIELD     *tmpfield;
  145.  
  146. {
  147. void     printstr();
  148. int cntr;
  149. char     strbuf[15];
  150.  
  151.  
  152.     for(cntr=4;cntr<23;++cntr){
  153.          printstr(cntr,0,tmpfield->name);
  154.          switch(tmpfield->type){
  155.               case 'C':
  156.                    printstr(cntr,15,"Character");
  157.                    break;
  158.               case 'N':
  159.                    printstr(cntr,15,"Numeric");
  160.                    break;
  161.               case 'D':
  162.                    printstr(cntr,15,"Date");
  163.                    break;
  164.               case 'L':
  165.                    printstr(cntr,15,"Logical");
  166.                    break;
  167.          }
  168.  
  169.          sprintf(strbuf,"%d",tmpfield->fld_len);
  170.          printstr(cntr,33,strbuf);
  171.  
  172.          printstr(cntr,40,tmpfield->fld_val);
  173.  
  174.          if(tmpfield->next)
  175.               tmpfield=tmpfield->next;
  176.          else
  177.               cntr=99;
  178.  
  179.     }
  180.  
  181.     return(1);
  182.  
  183. }
  184.