ING_DB
This commit is contained in:
parent
61d1ec1ff6
commit
aa15655252
|
|
@ -0,0 +1,166 @@
|
||||||
|
/*
|
||||||
|
** --- RC.H ------------ BASIC DECLARATIONS ---------------------------------
|
||||||
|
**
|
||||||
|
** Report Compiler Definitions
|
||||||
|
**
|
||||||
|
** contains the global structures and variable
|
||||||
|
** declarations needed by the lexical analyzer.
|
||||||
|
** This includes Manifest constants and certain
|
||||||
|
** variables for internal communication purposes.
|
||||||
|
** Therefore, extreme care should be exercised
|
||||||
|
** when modifying this file.
|
||||||
|
**
|
||||||
|
** Version: @(#)rc.h 4.0 02/05/89
|
||||||
|
**
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
# include "r_code.h"
|
||||||
|
|
||||||
|
|
||||||
|
/* SYSTEM VARIABLES */
|
||||||
|
|
||||||
|
# define SYS_COL 1
|
||||||
|
# define SYS_LINE 2
|
||||||
|
# define SYS_ALL_LINE 3
|
||||||
|
# define SYS_PAGE 4
|
||||||
|
# define SYS_TUPL 5
|
||||||
|
|
||||||
|
|
||||||
|
/* CHARACTER TYPES */
|
||||||
|
|
||||||
|
# define ALPHA 1
|
||||||
|
# define NUMBR 2
|
||||||
|
# define OPATR 3
|
||||||
|
# define PUNCT 4
|
||||||
|
# define CNTRL 5
|
||||||
|
|
||||||
|
|
||||||
|
/* character type mapping */
|
||||||
|
|
||||||
|
extern char Cmap[];
|
||||||
|
|
||||||
|
# ifdef EBCDIC
|
||||||
|
|
||||||
|
# ifdef ESER_PSU
|
||||||
|
extern char _etoa_[];
|
||||||
|
# define ETOA(c) _etoa_[(c) & BYTE_MASK]
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# define CMAP(c) Cmap[(ETOA(c)) & ASCII_MASK]
|
||||||
|
|
||||||
|
# else
|
||||||
|
|
||||||
|
# define CMAP(c) Cmap[(c) & ASCII_MASK]
|
||||||
|
|
||||||
|
# endif
|
||||||
|
|
||||||
|
|
||||||
|
/* INTEGER CONSTANT */
|
||||||
|
|
||||||
|
# define GOVAL -1
|
||||||
|
|
||||||
|
|
||||||
|
/* SYMBOL TABLE ENTRY */
|
||||||
|
|
||||||
|
struct s_entry
|
||||||
|
{
|
||||||
|
struct s_entry *nextsym;
|
||||||
|
char symbl[1];
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* KEYWORD AND OPERATOR TABLE */
|
||||||
|
|
||||||
|
struct optab
|
||||||
|
{
|
||||||
|
char *term;
|
||||||
|
int token;
|
||||||
|
int opcode;
|
||||||
|
};
|
||||||
|
typedef struct optab OPTAB;
|
||||||
|
|
||||||
|
/* in rc_tables.y */
|
||||||
|
extern struct optab Optab[]; /* operator table */
|
||||||
|
extern struct optab Keyword[]; /* keyword table */
|
||||||
|
extern int Keyent; /* # of entries in the Keyword table */
|
||||||
|
|
||||||
|
|
||||||
|
/* SPECIAL TOKENS FOR SCANNER */
|
||||||
|
|
||||||
|
struct special
|
||||||
|
{
|
||||||
|
int name;
|
||||||
|
int sconst;
|
||||||
|
int bgncmnt;
|
||||||
|
int endcmnt;
|
||||||
|
int iconst;
|
||||||
|
int lconst;
|
||||||
|
int rconst;
|
||||||
|
};
|
||||||
|
|
||||||
|
/* in rc_tables.y */
|
||||||
|
extern struct special Tokens; /* special tokens for scanner */
|
||||||
|
|
||||||
|
|
||||||
|
/* FORMAT STRUCTURE (formatted output) */
|
||||||
|
|
||||||
|
struct format
|
||||||
|
{
|
||||||
|
int data;
|
||||||
|
int length;
|
||||||
|
double scale;
|
||||||
|
int str_len;
|
||||||
|
char *str_adr;
|
||||||
|
int before;
|
||||||
|
int point;
|
||||||
|
int ignore;
|
||||||
|
int norm;
|
||||||
|
char *fr_to[2];
|
||||||
|
int batch_len;
|
||||||
|
int fr_to_v[2];
|
||||||
|
double fr_to_8[2];
|
||||||
|
};
|
||||||
|
|
||||||
|
/* PROCEDURE handling */
|
||||||
|
|
||||||
|
# define MAX_PROCS 128
|
||||||
|
|
||||||
|
extern char *Proc[];
|
||||||
|
|
||||||
|
|
||||||
|
/* CASE HANDLING */
|
||||||
|
|
||||||
|
# define MAX_CASES 50
|
||||||
|
|
||||||
|
extern int Case_no;
|
||||||
|
extern char *Case[];
|
||||||
|
|
||||||
|
|
||||||
|
/* MACRO HANDLING */
|
||||||
|
|
||||||
|
# define MAX_MACROS 500
|
||||||
|
|
||||||
|
struct macro
|
||||||
|
{
|
||||||
|
char *templt;
|
||||||
|
int subst;
|
||||||
|
};
|
||||||
|
|
||||||
|
extern int Macro_no;
|
||||||
|
extern struct macro Macro[];
|
||||||
|
|
||||||
|
|
||||||
|
/* DECLARATIONS */
|
||||||
|
|
||||||
|
extern struct desc_t Desc[MAX_DOM]; /* domain desriptions */
|
||||||
|
extern int Line; /* source line counter */
|
||||||
|
extern int Lcase; /* UPPER->lower conversion flag */
|
||||||
|
extern int Compile; /* FALSE for only compilation */
|
||||||
|
extern int Iflag; /* read from standard input */
|
||||||
|
extern int Oflag; /* write to file "r_code" */
|
||||||
|
extern int Sflag; /* be silent if FALSE */
|
||||||
|
extern int S_error; /* # of errors found */
|
||||||
|
extern char *S_name; /* name of R_CODE file */
|
||||||
|
extern char *S_desc; /* name of DESC file */
|
||||||
|
|
@ -0,0 +1,211 @@
|
||||||
|
/*
|
||||||
|
** --- RC_MAIN.C ------- MAIN -----------------------------------------------
|
||||||
|
**
|
||||||
|
** Version: @(#)rc_main.c 4.0 02/05/89
|
||||||
|
**
|
||||||
|
*/
|
||||||
|
|
||||||
|
# include <stdio.h>
|
||||||
|
# include "rc.h"
|
||||||
|
|
||||||
|
# define FLAG '-'
|
||||||
|
|
||||||
|
# define COMPILE 'c'
|
||||||
|
# define INPUT 'i'
|
||||||
|
# undef LCASE
|
||||||
|
# define LCASE 'l'
|
||||||
|
# define OUTPUT 'o'
|
||||||
|
# define SILENT 's'
|
||||||
|
# define VERBOSE 'v'
|
||||||
|
|
||||||
|
# ifdef RC_TRACE
|
||||||
|
# define YYPARSE 'Y'
|
||||||
|
# define YYLEX 'L'
|
||||||
|
# define YYINPUT 'I'
|
||||||
|
# define YYOUTPUT 'O'
|
||||||
|
# define YYR_CODE 'R'
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/* SETEXIT | RESET */
|
||||||
|
# ifdef P8000
|
||||||
|
ret_buf AAjmp_buf;
|
||||||
|
# else
|
||||||
|
jmp_buf AAjmp_buf;
|
||||||
|
# endif
|
||||||
|
|
||||||
|
extern FILE *Input;
|
||||||
|
static int catch;
|
||||||
|
|
||||||
|
rc_catch()
|
||||||
|
{
|
||||||
|
signal(2, rc_catch);
|
||||||
|
signal(3, rc_catch);
|
||||||
|
catch++;
|
||||||
|
if (Sflag)
|
||||||
|
{
|
||||||
|
printf("\n----------------\n");
|
||||||
|
printf("COMPILING aborted\n");
|
||||||
|
}
|
||||||
|
if (Iflag)
|
||||||
|
Iflag = FALSE;
|
||||||
|
else
|
||||||
|
fclose(Input);
|
||||||
|
reset();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
main(argc, argv)
|
||||||
|
int argc;
|
||||||
|
char *argv[];
|
||||||
|
{
|
||||||
|
register char *p;
|
||||||
|
register int i;
|
||||||
|
register int files;
|
||||||
|
# ifdef SETBUF
|
||||||
|
char out_buf[BUFSIZ];
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# ifdef SETBUF
|
||||||
|
setbuf(stdout, out_buf);
|
||||||
|
# endif
|
||||||
|
PQR_system = "compiler";
|
||||||
|
signal(2, rc_catch);
|
||||||
|
signal(3, rc_catch);
|
||||||
|
files = 0;
|
||||||
|
setexit();
|
||||||
|
|
||||||
|
while (--argc > 0)
|
||||||
|
{
|
||||||
|
++argv;
|
||||||
|
if (**argv == FLAG)
|
||||||
|
{
|
||||||
|
p = *argv;
|
||||||
|
p++;
|
||||||
|
while (*p)
|
||||||
|
{
|
||||||
|
switch (*p)
|
||||||
|
{
|
||||||
|
# ifdef RC_TRACE
|
||||||
|
case YYPARSE:
|
||||||
|
setbit(01, rc_debug);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case YYLEX:
|
||||||
|
setbit(02, rc_debug);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case YYINPUT:
|
||||||
|
setbit(04, rc_debug);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case YYOUTPUT:
|
||||||
|
setbit(010, rc_debug);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case YYR_CODE:
|
||||||
|
setbit(020, rc_debug);
|
||||||
|
break;
|
||||||
|
# endif
|
||||||
|
|
||||||
|
case COMPILE:
|
||||||
|
case 'C':
|
||||||
|
Compile = FALSE;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case INPUT:
|
||||||
|
Iflag = TRUE;
|
||||||
|
Input = stdin;
|
||||||
|
goto compile;
|
||||||
|
|
||||||
|
case LCASE:
|
||||||
|
Lcase = FALSE;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case OUTPUT:
|
||||||
|
Oflag = TRUE;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case SILENT:
|
||||||
|
case 'S':
|
||||||
|
Sflag = FALSE;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case VERBOSE:
|
||||||
|
case 'V':
|
||||||
|
Sflag = TRUE;
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
printf("? Option: -%c\n", *p);
|
||||||
|
}
|
||||||
|
p++;
|
||||||
|
}
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (!(Input = fopen(*argv, "r")))
|
||||||
|
{
|
||||||
|
printf("Cannot open *** %s ***\n", *argv);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
compile:
|
||||||
|
Doms = 0;
|
||||||
|
Line = 1;
|
||||||
|
S_error = 0;
|
||||||
|
|
||||||
|
R_cols = D_COLS;
|
||||||
|
R_lines = D_LINES;
|
||||||
|
R_all_lines = D_ALL_LINES;
|
||||||
|
R_for_all = D_FOR_ALL;
|
||||||
|
R_first_page = D_FIRST_PAGE;
|
||||||
|
R_last_page = D_LAST_PAGE;
|
||||||
|
R_from_tuple = D_FROM_TUPLE;
|
||||||
|
R_to_tuple = D_TO_TUPLE;
|
||||||
|
R_big = FALSE;
|
||||||
|
R_rc = &R_code[1];
|
||||||
|
|
||||||
|
Macro_no = 0;
|
||||||
|
for (i = 0; i < MAX_PROCS; i++)
|
||||||
|
Proc[i] = (char *) 0;
|
||||||
|
if (Sflag)
|
||||||
|
{
|
||||||
|
if (!files)
|
||||||
|
PQR();
|
||||||
|
printf("\nCompiling REPORT ");
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("%s:\n", *argv);
|
||||||
|
|
||||||
|
if (Sflag)
|
||||||
|
{
|
||||||
|
printf("----------------\n");
|
||||||
|
printf("%4d: ", Line);
|
||||||
|
}
|
||||||
|
files++;
|
||||||
|
|
||||||
|
rc_parse();
|
||||||
|
rc_freesym();
|
||||||
|
if (Iflag)
|
||||||
|
Iflag = FALSE;
|
||||||
|
else
|
||||||
|
fclose(Input);
|
||||||
|
|
||||||
|
if (Sflag)
|
||||||
|
{
|
||||||
|
printf("\n----------------\n");
|
||||||
|
printf("ERRORS\treported\t%d\n", S_error);
|
||||||
|
printf("R_CODE\ton file\t\t\"%s\"\n", S_name);
|
||||||
|
if (Doms && S_desc)
|
||||||
|
printf("DESC\ton file\t\t\"%s\"\n", S_desc);
|
||||||
|
}
|
||||||
|
sync();
|
||||||
|
Oflag = FALSE;
|
||||||
|
}
|
||||||
|
if (Sflag && files > 1)
|
||||||
|
{
|
||||||
|
printf("\nTOTAL\tfiles\t\t%d\n", files);
|
||||||
|
printf("\tinterrupts\t%d\n", catch);
|
||||||
|
}
|
||||||
|
fflush(stdout);
|
||||||
|
exit (S_error);
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue