home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / pc3270sa.zip / srpsmp / srpsmp.c < prev    next >
Text File  |  2002-02-28  |  10KB  |  148 lines

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