home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 5 / 05.iso / a / a007 / 1.ddi / RECAPP.C < prev    next >
Encoding:
C/C++ Source or Header  |  1992-10-15  |  2.2 KB  |  90 lines

  1. /* The SETUP.C program must be compiled and run before this example */
  2. /* can be executed. */
  3.  
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6. #ifndef __TURBOC__
  7.   #define randomize() srand(3)
  8.   #define random(x)   rand() % x
  9. #endif
  10.  
  11. #include "pxengine.h"
  12.  
  13. #define TABLENAME  "numbers"
  14.  
  15. FIELDHANDLE hFldsPrimary[] = { 1 };
  16.  
  17. int main(void)
  18. {
  19.   TABLEHANDLE   tblHandle;
  20.   RECORDHANDLE  recHandle;
  21.   RECORDNUMBER  recNum;
  22.   PXCODE        pxErr;
  23.   long          recValue;
  24.   int           i;
  25.  
  26.   /* Attempt to initialize the Engine for local use. */
  27.  
  28.   pxErr = PXInit();
  29.   if (pxErr != PXSUCCESS)
  30.   {
  31.     printf("%s\n", PXErrMsg(pxErr));
  32.     return pxErr;
  33.   }
  34.  
  35.   /* Delete contents of table if they exist. */
  36.  
  37.   PXTblEmpty(TABLENAME);
  38.  
  39.   /* Delete all indexes for table. */
  40.  
  41.   PXKeyDrop(TABLENAME, 0);
  42.  
  43.   /* Create a primary index on field 1. */
  44.  
  45.   if ((pxErr = PXKeyAdd(TABLENAME, 1, hFldsPrimary, PRIMARY))
  46.     != PXSUCCESS)
  47.     printf("0 %s\n", PXErrMsg(pxErr));
  48.  
  49.   /* Open the table on the primary index. */
  50.  
  51.   PXTblOpen(TABLENAME, &tblHandle, 0, 0);
  52.  
  53.   /* Open a record buffer for use in appending records. */
  54.  
  55.   PXRecBufOpen(tblHandle, &recHandle);
  56.  
  57.   /* Loop and add 20 records to the table. */
  58.  
  59.   for (i = 0; i < 20; i++)
  60.   {
  61.     /* Put a long value into field one. */
  62.  
  63.     recValue = (long) random(1959);
  64.     PXPutLong(recHandle, 1, recValue);
  65.  
  66.     /* Append this new record to the table. */
  67.  
  68.     if ((pxErr = PXRecAppend(tblHandle, recHandle)) != PXSUCCESS)
  69.         printf("1 %s\n", PXErrMsg(pxErr));
  70.  
  71.     /* Get the current record number (may not reflect current record
  72.        number if users update table on a network). */
  73.  
  74.     PXRecNum(tblHandle, &recNum);
  75.  
  76.     /* Print out the record number of the added record. It should be    */
  77.     /* clear from the result that a record append operation does not    */
  78.     /* necessarily add a record to the end of a table if the table      */
  79.     /* is opened with an index. When an ordered table, a record append  */
  80.     /*  operation is equivalent to inserting a record.                  */
  81.     
  82.     printf("Record added at position %d\n", recNum);
  83.   }
  84.  
  85.   PXRecBufClose(recHandle);
  86.   PXTblClose(tblHandle);
  87.   PXExit();
  88.   return(pxErr);
  89. }
  90.