1: # include   <ingres.h>
   2: # undef MAXNAME
   3: # include   "../equel/constants.h"
   4: # include   "IIglobals.h"
   5: # include   <sccs.h>
   6: # include   <errors.h>
   7: 
   8: SCCSID(@(#)IIw_left.c	8.2	2/8/85)
   9: 
  10: /*
  11: **	IIw_left -- writes down a "tupret's" target list.
  12: **
  13: **	Parameters:
  14: **		string -- a char * to a string containing everything
  15: **			inside the equivalent "retrieve" statement,
  16: **			but instead of result domain names, the string
  17: **			should have '%<ingres_type>', where <ingres_type>
  18: **			is the ingres type of the resulting C variable.
  19: **			To escape a '%' use 2 ("%%").
  20: **			'String' is left unchanged after the call.
  21: **		argv -- a vector of pointers to the
  22: **			corresponding C variables.
  23: **
  24: **	Usage:
  25: **		argv [0] = &double_var;
  26: **		argv [1] = &int_var;
  27: **		IIw_left("%f8 = i.double, %i2=i.ifield", argv);
  28: **
  29: **	Required by:
  30: **		parametrized retrieves without a target relation
  31: **
  32: **	Requires:
  33: **		Uses the ret_sym array IIretsym, and the old equel
  34: **		method for doing tuprets. NOTE that this does not
  35: **		allow dynamic (before each tuple) resolution of
  36: **		the result C variables as does the new tupret method.
  37: **
  38: **	Error numbers:
  39: **		1003 -- 1 parameter, the erroneous string.
  40: **			"Bad format for a domain in a param retrieve
  41: **			without a result relation"
  42: */
  43: 
  44: 
  45: IIw_left(string, argv)
  46: char    *string;
  47: char    **argv;
  48: {
  49:     register char   *b_st, *e_st;
  50:     register char   **av;
  51:     int     type;
  52:     char        *IIitos();
  53: 
  54:     if (IIdebug)
  55:         printf("ent IIw_left : string \"%s\"\n",
  56:         string);
  57:     av = argv;
  58:     for (b_st = e_st = string; *e_st; )
  59:     {
  60:         if (*e_st != '%')
  61:         {
  62:             e_st++;
  63:             continue;
  64:         }
  65: 
  66:         /* provide escape method */
  67:         if (e_st [1] == '%')
  68:         {
  69:             e_st [1] = '\0';
  70:             IIwrite(b_st);
  71:             /* leave string intact */
  72:             e_st [1] = '%';
  73:             b_st = e_st = &e_st [2];
  74:             continue;
  75:         }
  76:         *e_st = '\0';
  77:         IIwrite(b_st);
  78:         *e_st++ = '%';
  79:         IIwrite(" RET_VAR ");
  80: 
  81:         switch (*e_st)
  82:         {
  83: 
  84:           case 'f' :
  85:             switch (*++e_st)
  86:             {
  87: 
  88:               case '8' :
  89:                 type = opDOUBLE;
  90:                 break;
  91: 
  92:               case '4' :
  93:                 type = opFLOAT;
  94:                 break;
  95: 
  96:               default :
  97:                 goto error_label;
  98:             }
  99:             break;
 100: 
 101:           case 'i' :
 102:             switch (*++e_st)
 103:             {
 104: 
 105:               case '4' :
 106:                 type = opLONG;
 107:                 break;
 108: 
 109:               case '2' :
 110:                 type = opSHORT;
 111:                 break;
 112: 
 113:               default :
 114:                 goto error_label;
 115:             }
 116:             break;
 117: 
 118:           case 'c' :
 119:             type = opSTRING;
 120:             break;
 121:         }
 122:         IIretrieve(*av++, type);
 123:         b_st = ++e_st;
 124:     }
 125:     IIwrite(b_st);
 126:     return;
 127: 
 128: 
 129: error_label :
 130:     IIerror(BADRET, 1, &string);
 131:     IIerrflag = 1003;
 132:     /* make sure that part already written down will
 133: 	 * cause an error, and ignore that error
 134: 	 */
 135:     IIwrite(",");
 136:     IIo_print = IIprint_err;
 137:     IIprint_err = IIno_err;
 138: }

Defined functions

IIw_left defined in line 8; never used
Last modified: 1986-04-17
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 938
Valid CSS Valid XHTML 1.0 Strict