home *** CD-ROM | disk | FTP | other *** search
/ Complete Linux / Complete Linux.iso / docs / apps / database / ingres04.lzh / source / monitor / go.c < prev    next >
Encoding:
C/C++ Source or Header  |  1985-01-23  |  1.3 KB  |  79 lines

  1. # include    "monitor.h"
  2. # include    <ingres.h>
  3. # include    <aux.h>
  4. # include    <resp.h>
  5. # include    <symbol.h>
  6. # include    <pv.h>
  7. # include    <pipes.h>
  8. # include    <setjmp.h>
  9. # include    <sccs.h>
  10.  
  11. SCCSID(@(#)go.c    8.2    1/22/85)
  12.  
  13.  
  14.  
  15. /*
  16. **  PROCESS QUERY
  17. **
  18. **    The appropriate messages are printed, and the query is scanned.
  19. **    Tokens are passed to the parser.  A parser response is then
  20. **    expected.
  21. **
  22. **    Trace Flags:
  23. **        5
  24. */
  25.  
  26. # define    QRYTRAP        "{querytrap}"
  27.  
  28. jmp_buf        GoJmpBuf;
  29.  
  30. go()
  31. {
  32.     FILE        *iop;
  33.     auto char    c;
  34.     register char    *p;
  35.     extern int    fgetc();
  36.     pb_t        pb;
  37.     extern char    *macro();
  38.  
  39.     clrline(1);
  40.     fflush(Qryiop);
  41.     if ((iop = fopen(Qbname, "r")) == NULL)
  42.         syserr("go: open 1");
  43.     if (Nodayfile >= 0)
  44.         printf("Executing . . .\n\n");
  45.  
  46.  
  47.     if (!Nautoclear)
  48.         Autoclear = 1;
  49.  
  50.     /* arrange to call the parser */
  51.     initp();
  52.     call_setup(&pb, mdPARSER, NULL);
  53.     pb_prime(&pb, PB_REG);
  54.     pb.pb_proc = 1;        /**** PARSER MUST BE IN PROC ONE ****/
  55.     send_off(&pb, 0, NULL);
  56.     pb_tput(PV_EOF, "", 0, &pb);
  57.     macinit(fgetc, iop, 1);
  58.     while ((c = macgetch()) > 0)
  59.         pb_put(&c, 1, &pb);
  60.     pb_flush(&pb);
  61.     fclose(iop);
  62.  
  63.     /* wait for the response */
  64.     setjmp(GoJmpBuf);
  65.     readinput(&pb);
  66.  
  67.     if (Resp.resp_tups >= 0)
  68.         macdefine("{tuplecount}", locv(Resp.resp_tups), TRUE);
  69.     
  70.     if (Error_id == 0 && (p = macro(QRYTRAP)) != NULL)
  71.         trapquery(&Resp, p);
  72.     
  73.     resetp();
  74.  
  75.     mcall("{continuetrap}");
  76.  
  77.     prompt("\ncontinue");
  78. }
  79.