ING_DB
This commit is contained in:
parent
4dc8f2e3a3
commit
9ae91f30e5
|
|
@ -0,0 +1,72 @@
|
|||
/*
|
||||
** --- R_DBS.H --------- BASIC DECLARATIONS ---------------------------------
|
||||
**
|
||||
** INTERFACE between
|
||||
** DBS and
|
||||
** REPORT (compiler/interpreter)
|
||||
**
|
||||
** All declarations must match the
|
||||
** corresponding entries in DBS
|
||||
**
|
||||
** Version: @(#)r_dbs.h 4.0 02/05/89
|
||||
**
|
||||
*/
|
||||
|
||||
# ifdef SINGLE
|
||||
|
||||
# define MAX_NAME 12 /* h/dbs.h: MAXNAME */
|
||||
# define MAX_FIELD 255 /* h/aux.h: MAXFIELD */
|
||||
# define INT 30 /* h/dbs.h: INT */
|
||||
# define FLOAT 31 /* h/dbs.h: FLOAT */
|
||||
# define CHAR 32 /* h/dbs.h: CHAR */
|
||||
|
||||
# ifdef MSDOS
|
||||
# define SETBUF
|
||||
# define SIGN_EXT
|
||||
# define AA_atof v6_atof
|
||||
# define AA_atoi v6_atoi
|
||||
# define AA_atol v6_atol
|
||||
# define AAbequal bequal
|
||||
# define AAbmove bmove
|
||||
# define AAi1toi2(x) (x)
|
||||
# define AAlength length
|
||||
# define AAscompare scompare
|
||||
# define AAsequal sequal
|
||||
# define ctoi(x) (x)
|
||||
# define ctou(x) ((x) & 0377)
|
||||
# define sync()
|
||||
# endif
|
||||
|
||||
/* SETEXIT | RESET */
|
||||
/* In version 7, setexit is not defined, reset too: */
|
||||
/* this fakes it. */
|
||||
# ifdef P8000
|
||||
# include <setret.h>
|
||||
extern ret_buf AAjmp_buf;
|
||||
# define setexit() setret(AAjmp_buf)
|
||||
# define reset() longret(AAjmp_buf, 1)
|
||||
# else
|
||||
# include <setjmp.h>
|
||||
extern jmp_buf AAjmp_buf;
|
||||
# define setexit() setjmp(AAjmp_buf)
|
||||
# define reset() longjmp(AAjmp_buf, 1)
|
||||
# endif
|
||||
|
||||
# else
|
||||
|
||||
# include "../conf/conf.h"
|
||||
# include "../h/dbs.h"
|
||||
# include "../h/aux.h"
|
||||
# include "../h/symbol.h"
|
||||
# include "../h/bs.h"
|
||||
|
||||
# define MAX_NAME MAXNAME
|
||||
# define MAX_FIELD MAXFIELD
|
||||
# endif
|
||||
|
||||
# define MAX_TUP 7000
|
||||
# define MAX_DOM 300
|
||||
# define BIN 33 /* no match */
|
||||
|
||||
/* IDENTIFICATION STUFF */
|
||||
extern char *PQR_system;
|
||||
|
|
@ -0,0 +1,665 @@
|
|||
/*
|
||||
** --- RP.C ------------ R_CODE PRINTER -------------------------------------
|
||||
**
|
||||
** Version: @(#)rp.c 4.0 02/05/89
|
||||
**
|
||||
*/
|
||||
|
||||
# include <stdio.h>
|
||||
# include "r_code.h"
|
||||
# ifdef MSDOS
|
||||
# include <fcntl.h>
|
||||
# endif
|
||||
|
||||
|
||||
static short Count;
|
||||
static short Length;
|
||||
static short Return;
|
||||
static FILE *Input;
|
||||
|
||||
|
||||
bytes(rc, len)
|
||||
register char *rc;
|
||||
register int len;
|
||||
{
|
||||
register int c;
|
||||
|
||||
Count += len;
|
||||
while (--len >= 0)
|
||||
{
|
||||
if ((c = getc(Input)) < 0)
|
||||
{
|
||||
printf("\nUNEXPECTED *** EOF ***\n");
|
||||
fflush(stdout);
|
||||
exit(1);
|
||||
}
|
||||
*rc++ = c;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
byte()
|
||||
{
|
||||
char c;
|
||||
|
||||
bytes(&c, sizeof (char));
|
||||
return (ctou(c));
|
||||
}
|
||||
|
||||
|
||||
word()
|
||||
{
|
||||
register int w;
|
||||
|
||||
w = byte() << BYTE_LOG2;
|
||||
return (w | byte());
|
||||
}
|
||||
|
||||
|
||||
i2_4(msg)
|
||||
register char *msg;
|
||||
{
|
||||
int i;
|
||||
|
||||
bytes(&i, sizeof (int));
|
||||
printf(" %s=%d", msg, Length = i);
|
||||
}
|
||||
|
||||
|
||||
i4()
|
||||
{
|
||||
long i;
|
||||
|
||||
bytes(&i, sizeof (long));
|
||||
printf(" long=%ld", i);
|
||||
}
|
||||
|
||||
|
||||
f8(msg)
|
||||
register char *msg;
|
||||
{
|
||||
double i;
|
||||
|
||||
bytes(&i, sizeof (double));
|
||||
printf(" %s=%10.3f", msg, i);
|
||||
}
|
||||
|
||||
|
||||
c0(msg)
|
||||
register char *msg;
|
||||
{
|
||||
char i[MAX_FIELD + 1];
|
||||
|
||||
bytes(i, Length);
|
||||
i[Length] = '\0';
|
||||
printf(" %s=|%s|", msg, i);
|
||||
}
|
||||
|
||||
|
||||
var(msg)
|
||||
register char *msg;
|
||||
{
|
||||
register int v;
|
||||
register int var;
|
||||
|
||||
printf(" %s", msg);
|
||||
v = word();
|
||||
var = v & VAR_MASK;
|
||||
if ((v & VAR_VAR_MASK) == VAR_VAR_MASK)
|
||||
printf(".var$var");
|
||||
else if (var)
|
||||
printf(".var");
|
||||
printf("=%d", Length = v & VAR_VALUE);
|
||||
return (var);
|
||||
}
|
||||
|
||||
|
||||
main(argc, argv)
|
||||
int argc;
|
||||
char **argv;
|
||||
{
|
||||
# ifdef SETBUF
|
||||
char buf[BUFSIZ];
|
||||
|
||||
setbuf(stdout, buf);
|
||||
# endif
|
||||
|
||||
PQR_system = "r_code decoder";
|
||||
PQR();
|
||||
|
||||
if (argc == 1)
|
||||
*argv = "r_code";
|
||||
else
|
||||
argv++;
|
||||
|
||||
# ifdef MSDOS
|
||||
Input = fopen(*argv, "rb");
|
||||
# else
|
||||
Input = fopen(*argv, "r");
|
||||
# endif
|
||||
if (!Input)
|
||||
{
|
||||
printf("Cannot open *** %s ***\n", *argv);
|
||||
fflush(stdout);
|
||||
exit(2);
|
||||
}
|
||||
|
||||
printf("R_CODE HEADER:\n");
|
||||
printf("--------------\n");
|
||||
Length = sizeof R_res - 1;
|
||||
c0("R_reserved");
|
||||
putchar('\n');
|
||||
i2_4("R_cols");
|
||||
putchar('\n');
|
||||
i2_4("R_lines");
|
||||
putchar('\n');
|
||||
i2_4("R_all_lines");
|
||||
putchar('\n');
|
||||
i2_4("R_for_all");
|
||||
putchar('\n');
|
||||
i2_4("R_first_page");
|
||||
putchar('\n');
|
||||
i2_4("R_last_page");
|
||||
putchar('\n');
|
||||
i2_4("R_from_tuple");
|
||||
putchar('\n');
|
||||
i2_4("R_to_tuple");
|
||||
printf("\n R_big=");
|
||||
if (byte())
|
||||
printf("TRUE");
|
||||
else
|
||||
printf("FALSE");
|
||||
|
||||
printf("\n\nR_CODE: file %s\n-------", *argv);
|
||||
Count = 1;
|
||||
interp();
|
||||
printf("\nUNEXPECTED R_CODE FORMAT\n");
|
||||
}
|
||||
|
||||
|
||||
interp()
|
||||
{
|
||||
register int code;
|
||||
register int i;
|
||||
register int rc;
|
||||
|
||||
for ( ; ; )
|
||||
{
|
||||
fflush(stdout);
|
||||
printf("\n%4d\t", Count);
|
||||
printf("%4d\t", code = byte());
|
||||
switch (code)
|
||||
{
|
||||
case bdLT:
|
||||
printf("bdLT");
|
||||
continue;
|
||||
|
||||
case bdEQ:
|
||||
printf("bdEQ");
|
||||
continue;
|
||||
|
||||
case bdLE:
|
||||
printf("bdLE");
|
||||
continue;
|
||||
|
||||
case bdGT:
|
||||
printf("bdGT");
|
||||
continue;
|
||||
|
||||
case bdNE:
|
||||
printf("bdNE");
|
||||
continue;
|
||||
|
||||
case bdGE:
|
||||
printf("bdGE");
|
||||
continue;
|
||||
|
||||
case pushFALSE:
|
||||
printf("pushFALSE");
|
||||
continue;
|
||||
|
||||
case pushTRUE:
|
||||
printf("pushTRUE");
|
||||
continue;
|
||||
|
||||
case pushNULL:
|
||||
printf("pushNULL");
|
||||
continue;
|
||||
|
||||
case push1INT:
|
||||
printf("push1INT integer=%d", ctoi(byte()));
|
||||
continue;
|
||||
|
||||
case push2INT:
|
||||
printf("push2INT");
|
||||
printf(" integer=%d", Length = word());
|
||||
continue;
|
||||
|
||||
case push4INT:
|
||||
printf("push4INT");
|
||||
i4();
|
||||
continue;
|
||||
|
||||
case pushREAL:
|
||||
printf("pushREAL");
|
||||
f8("real");
|
||||
continue;
|
||||
|
||||
case pushSTRING:
|
||||
printf("pushSTRING");
|
||||
var("length");
|
||||
c0("string");
|
||||
continue;
|
||||
|
||||
case pushCONST:
|
||||
printf("pushCONST = ");
|
||||
konst:
|
||||
switch (code = byte())
|
||||
{
|
||||
case SECOND:
|
||||
printf("SECOND");
|
||||
break;
|
||||
|
||||
case MINUTE:
|
||||
printf("MINUTE");
|
||||
break;
|
||||
|
||||
case HOUR:
|
||||
printf("HOUR");
|
||||
break;
|
||||
|
||||
case M_DAY:
|
||||
printf("M_DAY");
|
||||
break;
|
||||
|
||||
case MONTH:
|
||||
printf("MONTH");
|
||||
break;
|
||||
|
||||
case YEAR:
|
||||
printf("YEAR");
|
||||
break;
|
||||
|
||||
case W_DAY:
|
||||
printf("W_DAY");
|
||||
break;
|
||||
|
||||
case Y_DAY:
|
||||
printf("Y_DAY");
|
||||
break;
|
||||
|
||||
case IS_DST:
|
||||
printf("IS_DST");
|
||||
break;
|
||||
|
||||
default:
|
||||
printf(" unknown CONST %d", code);
|
||||
}
|
||||
continue;
|
||||
|
||||
case pushCOL:
|
||||
printf("pushCOL");
|
||||
continue;
|
||||
|
||||
case pushLINE:
|
||||
printf("pushLINE");
|
||||
continue;
|
||||
|
||||
case pushALLINES:
|
||||
printf("pushALLINES");
|
||||
continue;
|
||||
|
||||
case pushPAGE:
|
||||
printf("pushPAGE");
|
||||
continue;
|
||||
|
||||
case pushTUPLE:
|
||||
printf("pushTUPLE");
|
||||
continue;
|
||||
|
||||
case pushLAST:
|
||||
printf("pushLAST");
|
||||
push_tuple:
|
||||
var("dom");
|
||||
var("from");
|
||||
var("to");
|
||||
continue;
|
||||
|
||||
case pushVALUE:
|
||||
printf("pushVALUE");
|
||||
goto push_tuple;
|
||||
|
||||
case pushNEXT:
|
||||
printf("pushNEXT");
|
||||
goto push_tuple;
|
||||
|
||||
case pushVAR:
|
||||
printf("pushVAR");
|
||||
var("#");
|
||||
continue;
|
||||
|
||||
case pushSWITCH:
|
||||
printf("pushSWITCH");
|
||||
var("#");
|
||||
continue;
|
||||
|
||||
case rcNOT:
|
||||
printf("rcNOT");
|
||||
continue;
|
||||
|
||||
case rcOR:
|
||||
printf("rcOR");
|
||||
continue;
|
||||
|
||||
case rcAND:
|
||||
printf("rcAND");
|
||||
continue;
|
||||
|
||||
case rcEND_SET:
|
||||
printf("rcEND_SET");
|
||||
continue;
|
||||
|
||||
case rcMIN:
|
||||
printf("rcMIN");
|
||||
continue;
|
||||
|
||||
case rcADD:
|
||||
printf("rcADD");
|
||||
continue;
|
||||
|
||||
case rcSUB:
|
||||
printf("rcSUB");
|
||||
continue;
|
||||
|
||||
case rcMUL:
|
||||
printf("rcMUL");
|
||||
continue;
|
||||
|
||||
case rcDIV:
|
||||
printf("rcDIV");
|
||||
continue;
|
||||
|
||||
case rcDIV_R:
|
||||
printf("rcDIV_R");
|
||||
continue;
|
||||
|
||||
case rcMOD:
|
||||
printf("rcMOD");
|
||||
continue;
|
||||
|
||||
case rcRC_END:
|
||||
printf("rcRC_END\n");
|
||||
fflush(stdout);
|
||||
exit(0);
|
||||
|
||||
case rcRETURN:
|
||||
printf("rcRETURN");
|
||||
if (Return)
|
||||
{
|
||||
--Return;
|
||||
return;
|
||||
}
|
||||
continue;
|
||||
|
||||
case rcRTTS:
|
||||
printf("rcRTTS");
|
||||
continue;
|
||||
|
||||
case rcEOTUP:
|
||||
printf("rcEOTUP");
|
||||
continue;
|
||||
|
||||
case rcALL:
|
||||
printf("rcALL");
|
||||
continue;
|
||||
|
||||
case rcONE:
|
||||
printf("rcONE");
|
||||
continue;
|
||||
|
||||
case rcDATE:
|
||||
printf("rcDATE");
|
||||
continue;
|
||||
|
||||
case rcTIME:
|
||||
printf("rcTIME");
|
||||
continue;
|
||||
|
||||
case prCOL:
|
||||
printf("prCOL");
|
||||
continue;
|
||||
|
||||
case prLINE:
|
||||
printf("prLINE");
|
||||
continue;
|
||||
|
||||
case prALLINES:
|
||||
printf("prALLINES");
|
||||
continue;
|
||||
|
||||
case prNEWPAGE:
|
||||
printf("prNEWPAGE");
|
||||
continue;
|
||||
|
||||
case prPAGE:
|
||||
printf("prPAGE");
|
||||
continue;
|
||||
|
||||
case prTUPLE:
|
||||
printf("prTUPLE");
|
||||
continue;
|
||||
|
||||
case prVAR:
|
||||
printf("prVAR");
|
||||
var("#");
|
||||
continue;
|
||||
|
||||
case prCONST:
|
||||
printf("prCONST = ");
|
||||
goto konst;
|
||||
|
||||
case prSPACE:
|
||||
printf("prSPACE");
|
||||
var("#");
|
||||
continue;
|
||||
|
||||
case prNEWLINE:
|
||||
printf("prNEWLINE");
|
||||
var("#");
|
||||
continue;
|
||||
|
||||
case prNEWCOL:
|
||||
printf("prNEWCOL");
|
||||
var("col");
|
||||
continue;
|
||||
|
||||
case prLAST:
|
||||
printf("prLAST");
|
||||
print_tuple:
|
||||
var("dom");
|
||||
continue;
|
||||
|
||||
case prVALUE:
|
||||
printf("prVALUE");
|
||||
goto print_tuple;
|
||||
|
||||
case prNEXT:
|
||||
printf("prNEXT");
|
||||
goto print_tuple;
|
||||
|
||||
case fmtB_BIT:
|
||||
printf("fmtB_BIT");
|
||||
format:
|
||||
var("length");
|
||||
continue;
|
||||
|
||||
case fmtW_BIT:
|
||||
printf("fmtW_BIT");
|
||||
goto format;
|
||||
|
||||
case fmtB_OCT:
|
||||
printf("fmtB_OCT");
|
||||
goto format;
|
||||
|
||||
case fmtW_OCT:
|
||||
printf("fmtW_OCT");
|
||||
goto format;
|
||||
|
||||
case fmtB_DEC:
|
||||
printf("fmtB_DEC");
|
||||
goto format;
|
||||
|
||||
case fmtW_DEC:
|
||||
printf("fmtW_DEC");
|
||||
goto format;
|
||||
|
||||
case fmtB_HEX:
|
||||
printf("fmtB_HEX");
|
||||
goto format;
|
||||
|
||||
case fmtW_HEX:
|
||||
printf("fmtW_HEX");
|
||||
goto format;
|
||||
|
||||
case prSTRING:
|
||||
printf("prSTRING");
|
||||
goto input;
|
||||
|
||||
case prINPUT:
|
||||
printf("prINPUT");
|
||||
input:
|
||||
var("length");
|
||||
code = Length;
|
||||
var("batch_length");
|
||||
Length = code;
|
||||
c0("string");
|
||||
continue;
|
||||
|
||||
case fmtINT:
|
||||
printf("fmtINT");
|
||||
var("length");
|
||||
f8("scale");
|
||||
printf(" pic_length=%d", Length = word());
|
||||
c0("pic_string");
|
||||
continue;
|
||||
|
||||
case fmtREAL:
|
||||
printf("fmtREAL");
|
||||
var("length");
|
||||
f8("scale");
|
||||
var("before");
|
||||
var("point");
|
||||
var("ignore");
|
||||
var("norm");
|
||||
printf(" exp_length=%d", Length = word());
|
||||
c0("exp_string");
|
||||
continue;
|
||||
|
||||
case fmtCHAR:
|
||||
printf("fmtCHAR");
|
||||
var("length");
|
||||
var("from");
|
||||
var("to");
|
||||
var("batch_length");
|
||||
continue;
|
||||
|
||||
case fmtGRAPH:
|
||||
printf("fmtGRAPH");
|
||||
var("length");
|
||||
if (!var("from"))
|
||||
f8("value");
|
||||
if (!var("to"))
|
||||
f8("value");
|
||||
printf(" with char=%c", byte());
|
||||
continue;
|
||||
|
||||
case rcCASE:
|
||||
printf("rcCASE");
|
||||
var("#");
|
||||
i = Length;
|
||||
printf(" jumptable %d", Count + word());
|
||||
for (code = 0; code < i; code++)
|
||||
{
|
||||
printf("\n\tCASE %d CODE", code);
|
||||
Return++;
|
||||
interp();
|
||||
}
|
||||
printf("\n\tOUT CODE");
|
||||
Return++;
|
||||
interp();
|
||||
printf("\n\tJUMP_TABLE");
|
||||
rc = Count;
|
||||
for (code = 0; code < i; code++)
|
||||
{
|
||||
printf("\n%4d\t", Count);
|
||||
printf("CASE %d on %d", code, rc + word());
|
||||
}
|
||||
printf("\n%4d\t", Count);
|
||||
printf("OUT on %d", rc + word());
|
||||
continue;
|
||||
|
||||
case rcREPEAT:
|
||||
printf("rcREPEAT");
|
||||
var("#");
|
||||
printf(" jump to %d", Count + word());
|
||||
continue;
|
||||
|
||||
case onBATCH:
|
||||
printf("onBATCH");
|
||||
jump_over:
|
||||
printf(" jump over to %d", Count + word());
|
||||
Return++;
|
||||
interp();
|
||||
continue;
|
||||
|
||||
case onB_LINE:
|
||||
printf("onB_LINE");
|
||||
goto jump_over;
|
||||
|
||||
case onE_LINE:
|
||||
printf("onE_LINE");
|
||||
goto jump_over;
|
||||
|
||||
case onB_PAGE:
|
||||
printf("onB_PAGE");
|
||||
goto jump_over;
|
||||
|
||||
case onE_PAGE:
|
||||
printf("onE_PAGE");
|
||||
goto jump_over;
|
||||
|
||||
case rcJUMP:
|
||||
printf("rcJUMP");
|
||||
printf(" to %d", Count + word());
|
||||
continue;
|
||||
|
||||
case rcCALL:
|
||||
printf("rcCALL");
|
||||
printf(" procedure on %d", Count + word());
|
||||
continue;
|
||||
|
||||
case setVAR:
|
||||
printf("setVAR");
|
||||
expr_end:
|
||||
printf(" end of expression on %d", Count + word());
|
||||
continue;
|
||||
|
||||
case setSWITCH:
|
||||
printf("setSWITCH");
|
||||
goto expr_end;
|
||||
|
||||
case rcIF:
|
||||
printf("rcIF");
|
||||
printf(" then on %d", Count + word());
|
||||
continue;
|
||||
|
||||
case rcTHEN:
|
||||
printf("rcTHEN");
|
||||
printf(" else on %d", Count + word());
|
||||
continue;
|
||||
|
||||
default:
|
||||
printf("unknown code %d", code);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,76 @@
|
|||
/*
|
||||
** --- RP_DESC.C ------- DESCRITION PRINTER ---------------------------------
|
||||
**
|
||||
** Version: @(#)rp_desc.c 4.0 02/05/89
|
||||
**
|
||||
*/
|
||||
|
||||
# include <stdio.h>
|
||||
# include "r_code.h"
|
||||
# ifdef MSDOS
|
||||
# include <fcntl.h>
|
||||
# endif
|
||||
|
||||
|
||||
main(argc, argv)
|
||||
int argc;
|
||||
char **argv;
|
||||
{
|
||||
register int f;
|
||||
register int c;
|
||||
register char *p;
|
||||
struct desc_t d;
|
||||
# ifdef SETBUF
|
||||
char out_buf[BUFSIZ];
|
||||
|
||||
setbuf(stdout, out_buf);
|
||||
# endif
|
||||
PQR_system = "description printer";
|
||||
PQR();
|
||||
|
||||
if (argc == 1)
|
||||
p = "desc";
|
||||
else
|
||||
p = argv[1];
|
||||
|
||||
# ifdef MSDOS
|
||||
if ((f = open(p, 0 | O_BINARY)) < 0)
|
||||
# else
|
||||
if ((f = open(p, 0)) < 0)
|
||||
# endif
|
||||
{
|
||||
printf("Cannot open *** %s ***\n", p);
|
||||
fflush(stdout);
|
||||
exit(-1);
|
||||
}
|
||||
|
||||
c = 1;
|
||||
printf("| field | type | len | off |\n");
|
||||
printf("+-------+-------+-------+-------+\n");
|
||||
while (read(f, &d, sizeof (struct desc_t)) == sizeof (struct desc_t))
|
||||
{
|
||||
printf("! %2d\t", c++);
|
||||
switch (d.domfrmt)
|
||||
{
|
||||
case INT:
|
||||
printf("| int\t", d.domfrmt);
|
||||
break;
|
||||
|
||||
case FLOAT:
|
||||
printf("| real\t", d.domfrmt);
|
||||
break;
|
||||
|
||||
case CHAR:
|
||||
printf("| char\t", d.domfrmt);
|
||||
break;
|
||||
|
||||
default:
|
||||
printf("| %3d\t", ctou(d.domfrmt));
|
||||
}
|
||||
printf("| %3d\t", ctou(d.domfrml));
|
||||
printf("| %3d\t|\n", d.domoff);
|
||||
fflush(stdout);
|
||||
}
|
||||
printf("+-------+-------+-------+-------+\n");
|
||||
fflush(stdout);
|
||||
}
|
||||
Loading…
Reference in New Issue