ING_DB
This commit is contained in:
parent
0b221adf7a
commit
b902e91e35
|
|
@ -0,0 +1,203 @@
|
||||||
|
/*
|
||||||
|
** --- RG_CHECK.C ------ SEVERAL SYNTAX CHECKS ------------------------------
|
||||||
|
**
|
||||||
|
** Version: @(#)rg_check.c 4.0 02/05/89
|
||||||
|
**
|
||||||
|
*/
|
||||||
|
|
||||||
|
# include "rg_int.h"
|
||||||
|
|
||||||
|
|
||||||
|
char *rc_word(rc)
|
||||||
|
register char *rc;
|
||||||
|
{
|
||||||
|
R_word = RC_BYTE << BYTE_LOG2;
|
||||||
|
R_word += RC_BYTE;
|
||||||
|
return (rc);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
var_to_int()
|
||||||
|
/* if VAR is a variable, VAR_TO_INT() returns its */
|
||||||
|
/* contents as integer, else value of VAR */
|
||||||
|
{
|
||||||
|
return ((R_word & VAR_MASK)? Var[ck_var()].f8type: R_word);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
ck_var()
|
||||||
|
/* returns the var#, if it's a legal no, */
|
||||||
|
/* else A_VAR (standard variable) */
|
||||||
|
{
|
||||||
|
register int var;
|
||||||
|
|
||||||
|
if ((var = R_word) & VAR_MASK)
|
||||||
|
{
|
||||||
|
if ((var & VAR_VAR_MASK) == VAR_VAR_MASK)
|
||||||
|
var = Var[var & VAR_VALUE].f8type;
|
||||||
|
else
|
||||||
|
var &= VAR_VALUE;
|
||||||
|
if (var >= 0 && var < MAX_VAR)
|
||||||
|
return (var);
|
||||||
|
}
|
||||||
|
rg_error( "ILLEGAL VAR `%d'\n\tassume VAR %d", var, A_VAR);
|
||||||
|
return (A_VAR);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
ck_bvar()
|
||||||
|
/* returns the switch#, if it's a legal no, */
|
||||||
|
/* else A_BVAR (standard switch) */
|
||||||
|
{
|
||||||
|
register int bvar;
|
||||||
|
|
||||||
|
if ((bvar = R_word) & VAR_MASK)
|
||||||
|
bvar = Var[ck_var(bvar)].f8type;
|
||||||
|
if (bvar >= 0 || bvar < MAX_BVAR)
|
||||||
|
return (bvar);
|
||||||
|
rg_error("ILLEGAL SWITCH `%d'\n\tassume SWITCH %d", bvar, A_BVAR);
|
||||||
|
return (A_BVAR);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
ck_len(len, from, to)
|
||||||
|
register int *len;
|
||||||
|
int from;
|
||||||
|
int to;
|
||||||
|
/* returns the start position of substring in string, */
|
||||||
|
/* the length LEN is modified too */
|
||||||
|
{
|
||||||
|
register int f;
|
||||||
|
register int t;
|
||||||
|
|
||||||
|
f = from;
|
||||||
|
if (--f < A_FROM)
|
||||||
|
f = A_FROM;
|
||||||
|
|
||||||
|
if (!(t = to))
|
||||||
|
t = A_TO;
|
||||||
|
|
||||||
|
if (t > *len)
|
||||||
|
t = *len;
|
||||||
|
|
||||||
|
if (f >= t)
|
||||||
|
{
|
||||||
|
rg_error("ILLEGAL SUBSTRING [`%d'..`%d']\n\tassume [1..%d]",
|
||||||
|
from, to, *len);
|
||||||
|
return (0);
|
||||||
|
}
|
||||||
|
|
||||||
|
*len = t - f;
|
||||||
|
return (f);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
ck_frm(s, frmt, frml)
|
||||||
|
register SYMBOL *s;
|
||||||
|
register int frmt;
|
||||||
|
register int frml;
|
||||||
|
/* returns 0 (FALSE) for ok */
|
||||||
|
/* else 1 (TRUE) */
|
||||||
|
{
|
||||||
|
extern char *print_type();
|
||||||
|
|
||||||
|
if (s->sy_frmt == frmt && ctou(s->sy_frml) == frml)
|
||||||
|
return (FALSE);
|
||||||
|
|
||||||
|
rg_error("WRONG FORMAT %s%d, expected %s%d",
|
||||||
|
print_type(s->sy_frmt), ctou(s->sy_frml), print_type(frmt), frml);
|
||||||
|
return (TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
ck_2_frm(s1, s2, frmt, frml, msg)
|
||||||
|
register SYMBOL *s1;
|
||||||
|
SYMBOL *s2;
|
||||||
|
register int frmt;
|
||||||
|
register int frml;
|
||||||
|
char *msg;
|
||||||
|
/* returns 0 (FALSE) for ok */
|
||||||
|
/* else 1 (TRUE) */
|
||||||
|
{
|
||||||
|
if (ck_frm(s1, frmt, frml) || ck_frm(s2, frmt, frml))
|
||||||
|
{
|
||||||
|
rg_error("%s: expression aborted", msg);
|
||||||
|
return (TRUE);
|
||||||
|
}
|
||||||
|
return (FALSE);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
ck_val1(new_val)
|
||||||
|
register int new_val;
|
||||||
|
/* check if R_val in RANGE[1 .. MAX_FIELD] */
|
||||||
|
/* returns NEW_VAL if R_val out of range */
|
||||||
|
/* else R_val */
|
||||||
|
{
|
||||||
|
register int v;
|
||||||
|
|
||||||
|
if ((v = R_val) < 1 || v > MAX_FIELD)
|
||||||
|
R_val = v = new_val;
|
||||||
|
return (v);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
DESC_T *ck_dom(dom)
|
||||||
|
register int dom;
|
||||||
|
{
|
||||||
|
register DESC_T *d;
|
||||||
|
register int frmt;
|
||||||
|
extern char *print_type();
|
||||||
|
|
||||||
|
if (dom <= 0 || dom > Doms)
|
||||||
|
{
|
||||||
|
rg_error("ILLEGAL DOMAIN [1..`%d'..%d]\n\tassume DOMAIN %d",
|
||||||
|
dom, Doms, A_DOM + 1);
|
||||||
|
dom = A_DOM;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
--dom;
|
||||||
|
|
||||||
|
dom = ctou((d = &Desc[dom])->domfrml);
|
||||||
|
switch (frmt = d->domfrmt)
|
||||||
|
{
|
||||||
|
case INT:
|
||||||
|
switch (dom)
|
||||||
|
{
|
||||||
|
case sizeof (char):
|
||||||
|
case sizeof (short):
|
||||||
|
case sizeof (long):
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
goto ill_type;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case FLOAT:
|
||||||
|
switch (dom)
|
||||||
|
{
|
||||||
|
# ifndef NO_F4
|
||||||
|
case sizeof (float):
|
||||||
|
# endif
|
||||||
|
case sizeof (double):
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
goto ill_type;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case CHAR:
|
||||||
|
if (dom)
|
||||||
|
break;
|
||||||
|
/* fall through */
|
||||||
|
|
||||||
|
default:
|
||||||
|
ill_type:
|
||||||
|
rg_error("ILLEGAL TYPE %s%d", print_type(frmt), dom);
|
||||||
|
rg_exit(EXIT_DESC);
|
||||||
|
}
|
||||||
|
|
||||||
|
return (d);
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue