ING_DB
This commit is contained in:
parent
1a0ccd106e
commit
adb2585319
|
|
@ -0,0 +1,109 @@
|
||||||
|
# include <stdio.h>
|
||||||
|
# include "gen.h"
|
||||||
|
# include "../h/dbs.h"
|
||||||
|
# include "../h/symbol.h"
|
||||||
|
# include "../h/pipes.h"
|
||||||
|
# include "IIglobals.h"
|
||||||
|
|
||||||
|
char *IIproc_name; /* file name */
|
||||||
|
int IIline_no; /* line no */
|
||||||
|
int IIdebug = 0; /* debug flag */
|
||||||
|
|
||||||
|
int IIerrflag; /* error flag. Set in IIerror, */
|
||||||
|
/* cleared in IIsync */
|
||||||
|
extern int IIret_err();
|
||||||
|
int (*IIprint_err)() = IIret_err;
|
||||||
|
int (*IIo_print)(); /* a one value stack for */
|
||||||
|
/* temporarily turned off printing */
|
||||||
|
/* of errors. Done in [IIw_left.c */
|
||||||
|
/* and IIw_right.c]. */
|
||||||
|
|
||||||
|
/*
|
||||||
|
** IIerror -- std. EQL error reporting routine.
|
||||||
|
**
|
||||||
|
** IIerror is called either directly by a
|
||||||
|
** routine detecting an error or by
|
||||||
|
** IIrdpipe where DBS returns an error.
|
||||||
|
**
|
||||||
|
** In the case of an appropriate error, IIerrflag is set to
|
||||||
|
** prevent the reading of the ovqp data pipe. This happens
|
||||||
|
** on errors that happen during retrieves to C vars.
|
||||||
|
**
|
||||||
|
** Errno is the error number: 1??? is an EQL error
|
||||||
|
** others are DBS errors.
|
||||||
|
**
|
||||||
|
** Argc and argv are structured as in BS main program calls.
|
||||||
|
**
|
||||||
|
** The error is printed if the call (*IIprint_err)()
|
||||||
|
** returns > 0. Otherwise no error message is printed.
|
||||||
|
** The error message that is printed is the one corresponding
|
||||||
|
** to the number returned by (*IIprint_err)().
|
||||||
|
*/
|
||||||
|
IIerror(errno, argc, argv)
|
||||||
|
int errno;
|
||||||
|
int argc;
|
||||||
|
char *argv[];
|
||||||
|
{
|
||||||
|
register int i;
|
||||||
|
extern char *IIp_err();
|
||||||
|
|
||||||
|
# ifdef xETR1
|
||||||
|
if (IIdebug > 1)
|
||||||
|
printf("ERROR: errno %d argc %d\n", errno, argc);
|
||||||
|
# endif
|
||||||
|
|
||||||
|
IIerrflag = errno;
|
||||||
|
if (!(errno = (*IIprint_err)(errno)))
|
||||||
|
{
|
||||||
|
# ifdef xETR2
|
||||||
|
if (IIdebug > 1)
|
||||||
|
printf("ERROR: IIprint_err returned 0\n");
|
||||||
|
# endif
|
||||||
|
/* if must restore printing turned off in IIw_left()
|
||||||
|
* or IIw_right(), then do so.
|
||||||
|
*/
|
||||||
|
if (IIo_print)
|
||||||
|
{
|
||||||
|
IIprint_err = IIo_print;
|
||||||
|
IIo_print = 0;
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (errno > 2000)
|
||||||
|
printf("DBS ERROR: ");
|
||||||
|
else
|
||||||
|
printf("EQL ERROR: ");
|
||||||
|
|
||||||
|
if (!IIp_err(errno, argc, argv))
|
||||||
|
{
|
||||||
|
/* couldn't process error in IIp_err() */
|
||||||
|
printf("%d mit den Argumenten:", errno);
|
||||||
|
for (i = 0; i < argc; )
|
||||||
|
printf(" %s", argv[i++]);
|
||||||
|
putchar('\n');
|
||||||
|
}
|
||||||
|
if (IIproc_name)
|
||||||
|
printf("Zeile %4d file %s\n\n", IIline_no, IIproc_name);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
** IIret_err -- returns its single argument for IIerror.
|
||||||
|
*/
|
||||||
|
IIret_err(err)
|
||||||
|
register int err;
|
||||||
|
{
|
||||||
|
return (err);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
** IIno_err -- returns 0. Called from IIerror
|
||||||
|
** (through (*IIprint_err)())
|
||||||
|
** to supress error message printing.
|
||||||
|
*/
|
||||||
|
IIno_err()
|
||||||
|
{
|
||||||
|
return (0);
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue