home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / VSCPPv7.zip / VACPP / IBMCPP / smarts / DAX / DAXSOM / DAXBASIC.CPP next >
Text File  |  1995-06-02  |  6KB  |  149 lines

  1.  
  2. %PROLOG%
  3.  
  4. /***************************************************************************/
  5. /*                                                                         */
  6. /* %FILE_NAME% - Skeleton of a basic DAX SOM application.                  */
  7. /*           It can serve as a starting point for a program that uses      */
  8. /*           Data Access services.                                         */
  9. /*                                                                         */
  10. /***************************************************************************/
  11.  
  12. #include <iostream.h>
  13. #include "sdsmcon.xh"
  14. #include "%DAX_FILE%i.xh"
  15.  
  16. static int exceptionCheck(void);
  17. Environment                *ev        = somGetGlobalEnvironment();
  18. DatastoreFactory           *pidFactDSObject = DatastoreNewClass (0,0);
  19. %DAX_CLASS%Factory         *DAXMgrObject = %DAX_CLASS%NewClass(0,0);
  20.  
  21. void main()
  22. {
  23.   Datastore           *DSObject     = pidFactDSObject->create_object(ev);
  24.   %DAX_CLASS%         *DAXObject    = DAXMgrObject->create_object(ev);
  25.  
  26.   _IDL_SEQUENCE_PersistentObject DAXObjectList;
  27.   int rc;
  28.  
  29.   // Establish connection to a datastore
  30.   DSObject->connect(ev, "%DATASTORE_NAME%", "USERID", "PASSWORD");
  31.   rc = exceptionCheck();
  32.  
  33.   // Add a row
  34.   // Take away the comment and set the values of all the fields for the add.
  35.   // Replace <Attribute> with the attribute name you use in the DAX IDL.
  36.   // Please make sure that the value for the key field is unique.
  37.   // DAXObject->_set_<Attribute>(ev, value);
  38.   DAXObject->add(ev);
  39.   rc = exceptionCheck();
  40.  
  41.   // Update a row
  42.   // Take away the comment and set the values of all the fields for the update.
  43.   // Replace <Attribute> with the attribute name you use in the DAX IDL.
  44.   // You should do a retrieve to refresh the values kept in the object with the
  45.   // row you want to update. 
  46.   // WARNING: Do not change the values of the key fields. If you do, you will
  47.   // update a wrong row.
  48.   // DAXObject->_set_<Attribute>(ev, value);
  49.   DAXObject->update(ev);
  50.   rc = exceptionCheck();
  51.  
  52.   // Update a row
  53.   // Take away the comment and set the values of all the fields for the update.
  54.   // Replace <Attribute> with the attribute name you use in the DAX IDL.
  55.   // You should do a retrieve to refresh the values kept in the object with the
  56.   // row you want to update. 
  57.   // WARNING: Do not change the values of the key fields. If you do, you will
  58.   // update a wrong row.
  59.   // DAXObject->_set_<Attribute>(ev, value);
  60.   DAXObject->update(ev);
  61.   rc = exceptionCheck();
  62.  
  63.   // Retrieve a row
  64.   // Take away the comment and set the value of the key field for the retrieve
  65.   // Replace <Attribute> with the attribute name you use in the DAX IDL.
  66.   // If you have more than one key attributes, you need to set them all.
  67.   // DAXObject->_set_<Attribute>(ev, value);
  68.   DAXObject->retrieve(ev);
  69.   rc = exceptionCheck();
  70.   // Get the attribute value by using _get method.
  71.   // Replace <Attribute> with the attribute name you use in the DAX IDL.
  72.   // temp = DAXObject->_get_<Attribute>(ev);
  73.  
  74.   // Delete a row
  75.   // Take away the comment and set the value of the key field for the delete.
  76.   // Replace <Attribute> with the attribute name you use in the DAX Class.
  77.   // If you have more than one key attribute, you need to set them all.
  78.   // DAXObject->_set_<Attribute>(ev, value);
  79.   DAXObject->del(ev);
  80.   rc = exceptionCheck();
  81.  
  82.   // Retrieve all the rows from a table
  83.   DAXObjectList = DAXMgrObject->retrieveAll(ev);
  84.   rc = exceptionCheck();
  85.   if (rc == 0) {
  86.  
  87.     // Process all the rows in a for loop
  88.     for (int j=0; j < sequenceLength(DAXObjectList); j++) {
  89.       // Get the item from the sequence
  90.       DAXObject = (%DAX_CLASS% *) sequenceElement(DAXObjectList,j);
  91.  
  92.       // Process the DAXObject ...
  93.  
  94.     }
  95.   } /* endif */
  96.  
  97.   // select some rows from a table
  98.   char selectArg[100];
  99.  
  100.   // Put the SQL where clause in the selectArg before calling select.
  101.   DAXObjectList = DAXMgrObject->select(ev, selectArg);
  102.   rc = exceptionCheck();
  103.   if (rc == 0) {
  104.     // Process all the selected rows in a for loop
  105.     for (int j=0; j < sequenceLength(DAXObjectList); j++) {
  106.       // Get the item from the sequence
  107.       DAXObject = (%DAX_CLASS% *) sequenceElement(DAXObjectList,j);
  108.  
  109.       // Process the DAXObject ...
  110.     } /* endfor */
  111.   } /* endif */
  112.  
  113.   // commit the work by calling transact with OCLI_COMMIT
  114.   DSObject->commit(ev);
  115.   rc = exceptionCheck();
  116.  
  117.   // commit the work by calling transact with OCLI_ROLLBACK
  118.   DSObject->rollback(ev);
  119.   rc = exceptionCheck();
  120.  
  121.   // disconnect from a datastore
  122.   DSObject->disconnect(ev);
  123.   rc = exceptionCheck();
  124.  
  125. }
  126.  
  127. int exceptionCheck(void ) {
  128.    char *exId;                                                        
  129.    int rc = 0;
  130.                                                                       
  131.    switch (ev->_major) {                                                                  
  132.    case SYSTEM_EXCEPTION:                                        
  133.       cout << "system exception" << endl;
  134.       rc = 1;
  135.       break;                                                
  136.    case USER_EXCEPTION:                                          
  137.       rc ++;
  138.       exId = somExceptionId(ev);                            
  139.       cout << "Exception ID: " << somExceptionId(ev) << endl;
  140.       somExceptionFree(ev);                              
  141.       break;                                                
  142.    case NO_EXCEPTION:
  143.       break;
  144.    }
  145.    return rc;
  146. }
  147.  
  148.  
  149.