home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Interactive Guide / c-cplusplus-interactive-guide.iso / c_ref / csource1 / chint / useful06.hnt < prev    next >
Text File  |  1992-06-10  |  6KB  |  206 lines

  1. /***************************************************************************
  2.   Example of how to pass parameter from one program to the next.
  3.  
  4.   Includes :  i)   Modulr "GlobalV" defining and setting up global vars.
  5.               ii)  Test1, set values and passes to Test2
  6.               iii) Test2, display the parameters pass to it by Test1
  7.  
  8. ***************************************************************************/
  9.  
  10.  
  11. 1)  The header file GLOBALV.H
  12.  
  13. /***************************************************************************
  14.  * Module  -  globalv.h,  Global Variables Between Programs module header  *
  15.  ***************************************************************************/
  16.  
  17. typedef struct {
  18.     byte   variable1;      /* List all bits of info that you want shared */
  19.     int    variable2;      /* between programs.  Use whatever variable   */
  20.     long   variable3;      /* names and types you like.                  */
  21.     double variable4;
  22.     string variable5;
  23. } globallyKnown;           /* Type defining Inter Program Global Variable */
  24.  
  25. extern grecptr globallyKnownH;     /* Pointer to global recognition header */
  26. extern globallyKnown *globalVPtr;  /* Pointer to Global Variable */
  27. extern bool calledBy;              /* Was this program called by a another */
  28.                                    /* that also uses this unit and passed  */
  29.                                    /* the inter program variable address.  */
  30.  
  31. void     globalv_init(void);
  32.  
  33. /***************************************************************************
  34.  *                       END OF HEADER FILE  globalv.h                     *
  35.  ***************************************************************************/
  36.  
  37.  
  38. 2)  The module GLOBALV.C
  39.  
  40. /**************************************************************************
  41.  * Module  -  globalv.c,  Global Variables Between Programs source        *
  42.  **************************************************************************/
  43.  
  44. #ifdef __TURBOC__
  45.     #include <conio.h>
  46. #else
  47.     #include <graph.h>
  48. #endif
  49. #include <stdio.h>
  50. #include <stdlib.h>
  51. #include <string.h>
  52. #include "db_lsc.h"
  53. #include "db_types.h"
  54. #include "db_conio.h"
  55. #include "db_dos.h"
  56. #include "db_dmem.h"
  57. #include "db_file.h"
  58. #include "db_str.h"
  59. #include "db_gvar.h"
  60. #include "globalv.h"
  61.  
  62. uchar unitIdentifier[] = "_GLOBAL1";
  63.  
  64. grecptr globallyKnownH;     /* Pointer to global recognition header */
  65. globallyKnown *globalVPtr;  /* Pointer to Global Variable */
  66. bool calledBy;              /* Was this program called by a another */
  67.  
  68. static bool initialized = False;
  69.  
  70. void initGlobals(grecptr dgv) /* Set up inter program global variables */
  71. {
  72.     globalVPtr = (globallyKnown *) &(dgv->gdata);
  73.     if (i_alloc) {
  74.     globalVPtr->variable1 = 0;
  75.     globalVPtr->variable2 = 0;
  76.     globalVPtr->variable3 = 0;
  77.     globalVPtr->variable4 = 0.0;
  78.     strcpy(globalVPtr->variable5,"");
  79.     calledBy = False;
  80.   }
  81.   else
  82.     calledBy = True;
  83. }
  84.  
  85. void gvar_Exit(void)
  86. /*
  87.   If this module allocated some of memory then it should free up that memory
  88.   block as the unit closes.
  89. */
  90. {
  91.     if (i_alloc)
  92.         dosfree(globalVPtr);
  93. }
  94.  
  95. void globalv_init(void)
  96. {
  97.     if (!initialized) {
  98.         initialized = True;
  99.     if (!(initgvar(unitIdentifier,sizeof(globallyKnown),&globallyKnownH,&i_alloc))) {
  100.       cwrite(_NoGlobalSpace);
  101.       cwrite("\n\r");
  102.       exit(0);
  103.     }
  104.           else {
  105.       initGlobals(globallyKnownH);
  106.       atexit(gvar_Exit);
  107.     }
  108.   }
  109. }
  110.  
  111. /***************************************************************************
  112.  *                       END OF MODULE SOURCE  globalv.c                   *
  113.  ***************************************************************************/
  114.  
  115.  
  116. 3)  The first test program  TEST1.C
  117.  
  118. /***************************************************************************
  119.  *                       Test Module TEST1.C                               *
  120.  ***************************************************************************/
  121.  
  122. #ifdef __TURBOC__
  123.     #include <conio.h>
  124. #else
  125.     #include <graph.h>
  126. #endif
  127. #include <stdio.h>
  128. #include <process.h>
  129. #include <stdlib.h>
  130. #include <string.h>
  131. #include "db_lsc.h"
  132. #include "db_types.h"
  133. #include "db_conio.h"
  134. #include "db_dos.h"
  135. #include "db_dmem.h"
  136. #include "db_file.h"
  137. #include "db_str.h"
  138. #include "db_gvar.h"
  139. #include "globalv.h"
  140.  
  141. string commandLine, ts;
  142. int i;
  143.  
  144. void main(void)
  145. {
  146.   db_gvar_init();
  147.   globalv_init();
  148.  
  149.   globalVPtr->variable1 = 1;
  150.   globalVPtr->variable2 = 2;
  151.   globalVPtr->variable3 = 3;
  152.   globalVPtr->variable4 = 4.0;
  153.   strcpy(globalVPtr->variable5,"Pass this string to the next program");
  154.  
  155.   strconcat(commandLine," ",recog,pointer2string(ts,dgvar),NULL);
  156.   /* Standard inter program globals provided by the DB_GVar unit. */
  157.  
  158.   strconcat(commandLine,commandLine," ",recog,pointer2string(ts,globallyKnownH),NULL);
  159.   /* Inter program globals provided by your GlobalV unit. */
  160.  
  161.   i = spawnlp(P_WAIT,"TEST2.EXE","TEST2.EXE",commandLine,NULL);
  162. }
  163.  
  164. /***************************************************************************
  165.  *                       END Test Module TEST1.C                           *
  166.  ***************************************************************************/
  167.  
  168.  
  169. 4)  The second test program  TEST2.C
  170.  
  171. /***************************************************************************
  172.  *                       Test Module TEST2.C                               *
  173.  ***************************************************************************/
  174.  
  175. #ifdef __TURBOC__
  176.     #include <conio.h>
  177. #else
  178.     #include <graph.h>
  179. #endif
  180. #include <stdio.h>
  181. #include <stdlib.h>
  182. #include "db_types.h"
  183. #include "db_conio.h"
  184. #include "db_dos.h"
  185. #include "db_dmem.h"
  186. #include "db_file.h"
  187. #include "db_str.h"
  188. #include "db_gvar.h"
  189. #include "globalv.h"
  190.  
  191. string ts;
  192.  
  193. void main(void)
  194. {
  195.   db_gvar_init();
  196.   globalv_init();
  197.  
  198.   printf("%6i\n\r",globalVPtr->variable1);
  199.   printf("%6i\n\r",globalVPtr->variable2);
  200.   printf("%6i\n\r",globalVPtr->variable3);
  201.   printf("%6.2f\n\r",globalVPtr->variable4);
  202.   printf("%s\n\r",globalVPtr->variable5);
  203.  
  204.   getch();
  205. }
  206.