|
|
1.1 ! root 1: # include <ingres.h> ! 2: # include <aux.h> ! 3: # include <symbol.h> ! 4: # include <tree.h> ! 5: # include "../decomp/globs.h" ! 6: # include <sccs.h> ! 7: ! 8: SCCSID(@(#)prsym.c 7.2 3/6/81) ! 9: ! 10: prsym(s) ! 11: register SYMBOL *s; ! 12: { ! 13: register union symvalue *p; ! 14: register int type; ! 15: register int len; ! 16: union symvalue temp; ! 17: ! 18: type = s->type; ! 19: len = s->len & 0377; ! 20: p = &s->value; ! 21: if (type == S_VAR) ! 22: { ! 23: /* actually, S_VAR's are rendered the same as VAR's ! 24: * by call_ovqp70.c's ovqpnod() ! 25: */ ! 26: printf("s_"); /* first part of "s_var" message */ ! 27: type = VAR; /* execute var portion */ ! 28: } ! 29: if (type == VAR) ! 30: { ! 31: printf("var:att#=%d:", p->sym_var.attno); ! 32: type = p->sym_var.varfrmt; ! 33: len = p->sym_var.varfrml; ! 34: if (type != CHAR) ! 35: { ! 36: /* move anytype to symvalue boundary */ ! 37: bmove((char *)p->sym_var.valptr, (char *)&temp, sizeof *p); ! 38: p = &temp; ! 39: } ! 40: } ! 41: xputchar(type); ! 42: printf("%d:value='", len); ! 43: switch (type) ! 44: { ! 45: case AND: ! 46: case AOP: ! 47: case BOP: ! 48: case OR: ! 49: case RESDOM: ! 50: case UOP: ! 51: case COP: ! 52: printf("%d (operator)", p->sym_op.opno); ! 53: break; ! 54: ! 55: case INT: ! 56: switch (len) ! 57: { ! 58: case 1: ! 59: printf("%d", p->sym_data.i1type); ! 60: break; ! 61: ! 62: case 2: ! 63: printf("%d", p->sym_data.i2type); ! 64: break; ! 65: ! 66: case 4: ! 67: printf("%ld", p->sym_data.i4type); ! 68: } ! 69: break; ! 70: ! 71: case FLOAT: ! 72: printf("%10.3f", p->sym_data.f4type); ! 73: break; ! 74: ! 75: case RESULTID: ! 76: case SOURCEID: ! 77: case CHAR: ! 78: printf("%x=", p->sym_data.c0type); ! 79: prstr(p->sym_data.c0type, len); ! 80: break; ! 81: ! 82: case AGHEAD: ! 83: case BYHEAD: ! 84: case QLEND: ! 85: case ROOT: ! 86: case TREE: ! 87: printf(" (delim)"); ! 88: break; ! 89: ! 90: case CHANGESTRAT: ! 91: case REOPENRES: ! 92: case EXIT: ! 93: case QMODE: ! 94: case RETVAL: ! 95: case USERQRY: ! 96: if (len) ! 97: printf("%d", p->sym_op.opno); ! 98: printf(" (status)"); ! 99: break; ! 100: ! 101: default: ! 102: printf("\nError in prsym: bad type= %d\n", type); ! 103: } ! 104: printf("'\n"); ! 105: } ! 106: ! 107: ! 108: prstack(s) ! 109: register SYMBOL *s; ! 110: { ! 111: if (s->type == CHAR) ! 112: { ! 113: printf("c%d:value='%x=", s->len,s->value.sym_data.cptype); ! 114: prstr(s->value.sym_data.cptype, s->len & 0377); ! 115: printf("'\n"); ! 116: } ! 117: else ! 118: prsym(s); ! 119: } ! 120: ! 121: ! 122: ! 123: prstr(p, l) ! 124: register char *p; ! 125: register int l; ! 126: { ! 127: while (--l >= 0) ! 128: putchar(*p++); ! 129: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.