home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / SRPI.ZIP / SRPI / SRPI_C / CSAMPL.C next >
Encoding:
C/C++ Source or Header  |  1991-09-04  |  8.7 KB  |  159 lines

  1. /*********************-PROLOGUE-*********************************
  2. *                                                               *
  3. * MODULE NAME = CSAMPL.C                                        *
  4. *                                                               *
  5. * DESCRIPTIVE NAME = C Sample Program                           *
  6. *                                                               *
  7. * STATUS=    Extended Services Version 1.0 Modification 0       *
  8. *                                                               *
  9. * COPYRIGHT=  (C) COPYRIGHT IBM CORP. 1988, 1991                *
  10. *             LICENSED MATERIAL - PROGRAM PROPERTY OF IBM       *
  11. *             ALL RIGHTS RESERVED                               *
  12. *                                                               *
  13. * FUNCTION = Invoke a hypothetical server via the C interface   *
  14. *            routines.                                          *
  15. *                                                               *
  16. *            This sample program reads a customer record        *
  17. *            from a data base, examines the customer's          *
  18. *            balance and writes the customer record to          *
  19. *            a file containing customer records if the          *
  20. *            balance is greater than zero.                      *
  21. *                                                               *
  22. * NOTES =                                                       *
  23. *                                                               *
  24. *   RESTRICTIONS = This sample program is provided solely as    *
  25. *                  an example of how the C interface routines   *
  26. *                  can be used to invoke a server.              *
  27. *                                                               *
  28. * MODULE TYPE = Microsoft C Compiler Version 6.0                *
  29. *********************-END PROLOGUE-*****************************/
  30. /*********************-DEFINITIONS-*****************************/
  31. #include <uuccprb.h>
  32. char    cserver[9] = "IBMabase"; /* Server Name                 */
  33.  
  34. char    coper[9] = "ADMIN   ";   /* Default operator name       */
  35.  
  36. main()                           /* PROC (MAIN)                 */
  37. {
  38. UERCPRB ccprb;                   /* CPRB structure              */
  39. struct  {                        /* Customer Record Structure   */
  40.  
  41.         char     cusname[25];    /* Customer Name               */
  42.         char     cusaddr[25];    /* Street Address              */
  43.         char     cuscity[15];    /* City                        */
  44.         char     cusstat[15];    /* State                       */
  45.         char     cuszip[9];      /* Zip Code                    */
  46.         char     cusacct[16];    /* Account Number              */
  47.         long int cusbal;         /* Balance                     */
  48.  
  49.         }       ccustrec;
  50.  
  51. struct  {                       /* Request Parameters Structure */
  52.  
  53.         char    qpaflags;       /* Processing Flags             */
  54. #define QPALOG 0x01             /* Log the transaction          */
  55. #define QPACOM 0x02             /* Commit the transaction       */
  56.         char    qpaoper[8];     /* Requesting operator's        */
  57.                                 /* sign-on ID                   */
  58.         }       cqparms;
  59. #define CFUNC1 1              /* Func Code: Get Record          */
  60. #define CFUNC2 2              /* Func Code: Update accounts     */
  61.                               /* receivable file                */
  62. #define CRCOK 0x00000000      /* Server Return Code OK          */
  63. #define CLSTR 0x00000004      /* Last Record                    */
  64.  
  65.         int     cctr;         /* general purpose counter        */
  66.         long int cretcod;     /* SRPI return code               */
  67.  
  68. /*******************-END DEFINITIONS-***************************/
  69. /**********************-PSEUDOCODE-*****************************/
  70. /*+                     PROC (MAIN)                                   */
  71. /*+                    1. INITIALIZE SERVER RETURN CODE               */
  72. /*+                    1. INITIALIZE SRPI RETURN CODE                 */
  73. /*+                    1. SET PROCESSING OPTION = COMMIT              */
  74. /*+                         TRANSACTION                               */
  75. /*+                    1. SET REQUESTING OPERATOR ID                  */
  76. /*+                    1. DO WHILE SERVER RETURN CODE IS NOT LAST     */
  77. /*+                         RECORD AND SRPI RETURN CODE IS GOOD       */
  78. /*+                    2. . INITIALIZE THE CPRB STRUCTURE             */
  79. /*+                           <INIT_SEND_REQ_PARMS>                   */
  80. /*+                    2. . MOVE SERVER NAME ADDRESS AND FUNCTION     */
  81. /*+                           (GET RECORD) INTO CPRB STRUCTURE        */
  82. /*+                    2. . SET CPRB REQUEST PARAMETERS BUFFER        */
  83. /*+                           INFORMATION                             */
  84. /*+                    2. . SET CPRB REPLY DATA BUFFER INFORMATION    */
  85. /*+                    2. . SEND THE REQUEST TO THE SERVER            */
  86. /*+                    2. . IF THE SRPI RETURN CODE IS GOOD           */
  87. /*+                    3. . . IF THE SERVER RETURN CODE IS GOOD       */
  88. /*+                    4. . . . IF THE ACCOUNT BALANCE IS POSITIVE    */
  89. /*+                    5. . . . . SET CPRB FUNCTION = UPDATE          */
  90. /*+                                 ACCOUNTS RECEIVABLE               */
  91. /*+                    5. . . . . SET CPRB REQUEST DATA = CUSTOMER    */
  92. /*+                                 RECORD                            */
  93. /*+                    5. . . . . UPDATE THE ACCOUNTS RECEIVABLE      */
  94. /*+                                 FILE <SEND_REQUEST>               */
  95. /*+                    4. . . . ENDIF                                 */
  96. /*+                    3. . . ENDIF                                   */
  97. /*+                    2. . ENDIF                                     */
  98. /*+                    1. ENDWHILE                                    */
  99. /*+                     ENDPROC (MAIN)                                */
  100. /********************-END PSEUDOCODE-***************************/
  101. /*************************-PROCEDURE****************************/
  102.  
  103. ccprb.uerservrc = CRCOK;            /* INITIALIZE SERVER RETURN CODE  */
  104.  
  105. cretcod = UERERROK;                 /* INITIALIZE SRPI RETURN CODE    */
  106.  
  107. cqparms.qpaflags = QPACOM;          /* SET PROCESSING OPTION =        */
  108.                                     /* COMMIT TRANSACTION             */
  109.  
  110. for (cctr = 0; cctr <= (sizeof cqparms.qpaoper) - 1; cctr++)
  111.   cqparms.qpaoper[cctr] = coper[cctr];
  112.                                     /* SET REQUESTING OPERATOR ID */
  113.  
  114. while (ccprb.uerservrc != CLSTR && cretcod == UERERROK)
  115. {                                   /* DOWHILE SERVER RETURN CODE IS  */
  116.                                     /* NOT LAST RECORD AND SRPI       */
  117.                                     /* RETURN CODE IS GOOD            */
  118.  
  119.   init_send_req_parms(&ccprb);      /* INITIALIZE CPRB STRUCTURE      */
  120.  
  121.   ccprb.uerserver = cserver;        /* MOVE SERVER NAME & FUNCTION    */
  122.   ccprb.uerfunct = CFUNC1;          /* INTO CPRB STRUCTURE            */
  123.  
  124.   ccprb.uerqparml = sizeof cqparms; /* SET CPRB REQUEST PARAMETER     */
  125.   ccprb.uerqparmad = (char far *) &cqparms;/* BUFFER INFORMATION      */
  126.  
  127.   ccprb.uerrdatal = sizeof ccustrec;/* SET CPRB REPLY DATA BUFFER     */
  128.   ccprb.uerrdataad =  (char far *) &ccustrec;/* INFORMATION           */
  129.  
  130.   cretcod = send_request(&ccprb);   /* SEND REQUEST TO SERVER         */
  131.  
  132.   if (cretcod == UERERROK)          /* IF THE SRPI RETURN CODE IS GOOD*/
  133.  
  134.     if (ccprb.uerservrc == CRCOK)   /* IF THE SERVER RETURN CODE      */
  135.                                     /* IS GOOD                        */
  136.     {
  137.  
  138.       if (ccustrec.cusbal > 0)      /* IF THE ACCOUNT BALANCE IS      */
  139.                                     /* POSITIVE                       */
  140.       {
  141.  
  142.         ccprb.uerfunct = CFUNC2;    /* SET CPRB FUNCTION = UPDATE     */
  143.                                     /* ACCOUNTS RECEIVABLE            */
  144.         ccprb.uerqdatal = sizeof ccustrec; /* SET CPRB REQUEST        */
  145.         ccprb.uerqdataad = (char far *) &ccustrec; /* DATA = CUSTOMER RECORD*/
  146.  
  147.         cretcod = send_request(&ccprb); /* UPDATE ACCNT RECEIVABLE    */
  148.                                         /* FILE <SEND_REQUEST>        */
  149.       }                             /* ENDIF                          */
  150.  
  151.     }                               /* ENDIF                          */
  152.  
  153.   }                                 /* ENDIF                          */
  154.  
  155. }                                   /* ENDWHILE                       */
  156.  
  157.                                     /* ENDPROC (MAIN)                 */
  158. /***********************-END PROCEDURE-*************************/
  159.