This commit is contained in:
Oliver Lehmann 1989-07-21 14:59:02 +00:00
parent e99344e17d
commit acc44032d0
15 changed files with 2001 additions and 0 deletions

View File

@ -0,0 +1,196 @@
/***********************
** IIOPEN()
***********************/
struct ro_dateibereich *iiopen(filename, modus, rc)
{
char *filename; /* PHYSISCHER DATEINAME */
char modus; /* 'R' => NUR LESEN */
/* 'U' => LESEN UND SCHREIBEN */
/* 'L' => -=- -=- MIT LOGFUEHRUNG */
int *rc; /* IM FEHLERFALL WIRD HIER EIN NUMER.CODE EINGETRAGEN */
RETURN: 0 => FEHLER , FEHLERCODE STEHT IN RC - LISTE DER FEHLER IN ROERR.H
AKTIONEN:
- DIE DATENBANKDATEI IST IM ANGEGEBN.MODUS ZU EROEFFNEN UND EIN
POINTER ZURUECKZUGEBEN, DER AUF EINEN DATEIBEREICH ZEIGT.
- DER DATEIBEREICH IST VON iiopen() ZU FUELLEN.
- FOLGENDE STRUKTURELEMENTE SIND EINZUTRAGEN
int lendateibereich; /* LAENGE DES BEREICHES */
long anzzeilen; /* Anzahl der zugewiesenen Zeilen */
long index; /* := 0 */
long indexalt; /* := -2 */
char modus; /* Modus der Eroeffnung R, U, L */
char filespec[RO_MAXFILSPEC]; /* phys. Name der TD */
int anzspalten; /* Anzahl der Spalten der TD */
struct ro_spalte *spalten; /* -> Liste aller Spalten der TD */
int lenfilepuffer; /* LAENGE DES PUFFERS FUER EINEN VOLLST. SATZ */
char *filepuffer; /* POINTER AUF DEN FILEPUFFER (MALLOC()) */
int anfdaten; /* Byteoffset zum ersten Datensatz */
struct spalte *markspalte; /* Datensaetze zum Loeschen markiert */
int eof_flag; /* := 0 */
- SPALTEN ZEIGT AUF EINEN BEREICH, DER NACHEINANDER DIE STRUKTUREN
RO_SPALTE FUER ALLE SPALTEN ENTHAELT.
FOLGENDE STRUKTURELEMENTE SIND EINZUTRAGEN
char name[9]; /* Spaltenname mit Blanks gefuellt */
struct ro_ded ded; /* Beschreibung der Spalte */
struct ro_ded charded; /* Beschreibung der Spalte in Zeichenkettenform*/
- FOLGENDE SPALTEN MUESSEN ENTHALTEN SEIN:
TQLRECNO: SATZNUMMER (PRIMAERINDEX) LONG
TQLMARK: LOESCHMARKIERUNG CHAR '*': ZUM LOESCHEN MARKIERT
ALLES ANDERE: NICHT MARKIERT
/***********************
** IICLOSE()
***********************/
int iiclose(dateibereich, rc)
{
struct ro_dateibereich *dateibereich; /* DATEIBEREICH DER DATEI */
int *rc; /* IM FEHLERFALL WIRD HIER EIN NUMER.CODE EINGETRAGEN */
RETURN: 0 => FEHLER , FEHLERCODE STEHT IN RC - LISTE DER FEHLER IN ROERR.H
AKTIONEN:
- ABSCHLIESSEN DER DATENBANKDATEI BEZUEGLICH ZUGRIFFSPROZESSOR
- DER DATEIBEREICH UND ALLE WEITEREN BEREICHE WERDEN VON TQL FREI-
GEGEBEN
/***********************
** IINEXT()
***********************/
int iinext(dateibereich, rc)
{
struct ro_dateibereich *dateibereich; /* DATEIBEREICH DER DATEI */
int *rc; /* IM FEHLERFALL WIRD HIER EIN NUMER.CODE EINGETRAGEN */
RETURN: 0 => FEHLER , FEHLERCODE STEHT IN RC - LISTE DER FEHLER IN ROERR.H
AKTIONEN:
- ES IST DER NAECHSTE SATZ IN DEN FILEPUFFER ZU UEBERTRAGEN.
- WURDE KEIN INDEX EINGESTELLT (MIT IISETI), IST DER NAECHSTE
SATZ ENTSPRECHEND PRIMAERINDEX ZU UEBERTRAGEN - SONST ENTSPR.
DEM EINGESTELLTEN INDEX
- IN DATEIBEREICH SIND EINZUTRAGEN:
INDEX := SATZNUMMER
EOF_FLAG := 1 WENN ENDE ERREICHT
INDEX := 1 WENN ENDE ERREICHT
- TQLMARK WIRD NICHT AUSGEWERTET => INNERHALB VON TQL
/***********************
** IISETI()
***********************/
int iiseti(dateibereich, indexname, rc)
{
struct ro_dateibereich *dateibereich; /* DATEIBEREICH DER DATEI */
char *indexname; /* NULL ODER NAME DES EINZUSTELLENEN INDEXES */
int *rc; /* IM FEHLERFALL WIRD HIER EIN NUMER.CODE EINGETRAGEN */
RETURN: 0 => FEHLER , FEHLERCODE STEHT IN RC - LISTE DER FEHLER IN ROERR.H
AKTIONEN:
- ES IST DER IN INDEXNAME ANGEGEBENE INDEX EINZUSTELLEN BZW. ZU VER-
MERKEN
- IST INDEXNAME GLEICH NULL, IST KEIN INDEX EINZUSTELLEN
- DIESER INDEX WIRD IN DEN FUNKTIONEN IINEXT() UND IIFIND() GENUTZT
- ALLE ANDEREN INDIZES WERDEN VON TQL NICHT BETRACHTES, ABER VOM
ZUGRIFFSPROZESSOR GEPFLEGT
/***********************
** IIFIND()
***********************/
int iifind(dateibereich, suchwert, rc)
{
struct ro_dateibereich *dateibereich; /* DATEIBEREICH DER DATEI */
char *suchwert; /* AUFZUFINDENER SATZ */
int *rc; /* IM FEHLERFALL WIRD HIER EIN NUMER.CODE EINGETRAGEN */
RETURN: 0 => FEHLER , FEHLERCODE STEHT IN RC - LISTE DER FEHLER IN ROERR.H
AKTIONEN:
- ES IST DER SATZ ZU SUCHEN BZW. ZU POSITIONIEREN, DER DEM SUCHWERT
IM EINGESTELLTEN INDEX (MIT IISETI) ENTSPRICHT
- DER SATZ IST IN DEN FILEPUFFER ZU UEBERTRAGEN, FALLS GEFUNDEN
- IN DATEIBEREICH SIND EINZUTRAGEN:
INDEX := SATZNUMMER
EOF_FLAG := 1 WENN ENDE ERREICHT
INDEX := 1 WENN ENDE ERREICHT
- TQLMARK WIRD NICHT AUSGEWERTET => INNERHALB VON TQL
/***********************
** IIGOTO()
***********************/
int iigoto(dateibereich, satznummer, rc)
{
struct ro_dateibereich *dateibereich; /* DATEIBEREICH DER DATEI */
long satznummer; /* EINZUSTELLENDER SATZ */
int *rc; /* IM FEHLERFALL WIRD HIER EIN NUMER.CODE EINGETRAGEN */
RETURN: 0 => FEHLER , FEHLERCODE STEHT IN RC - LISTE DER FEHLER IN ROERR.H
AKTIONEN:
- ES IST DER SATZ ENTSPR. PRIMAERINDEX EINZUSTELLEN , DASS BEIM
NAECHSTEN IINEXT() DER SATZ MIT DER ANGEGEB. SATZNUMMER GELESEN WIRD
(SOLLTE SO ARBEITEN, WIE LSEEK() )
- WENN SATZNUMMER -1 IST, SOLL BEGIN OF FILE EINGESTELLT WERDEN, D.H.
- WENN KEIN INDEX AKTIV IST (MIT IISETI): SATZ 0 ENTSPR.PRIMAERINDEX
EINSTELLEN
- WENN INDEX AKTIV IST (MIT IISETI) : ERTSTEN SATZ ENTSPR.
INDEX EINSTELLEN
/***********************
** IIWRITE()
***********************/
int iiwrite(dateibereich, rc)
{
struct ro_dateibereich *dateibereich; /* DATEIBEREICH DER DATEI */
int *rc; /* IM FEHLERFALL WIRD HIER EIN NUMER.CODE EINGETRAGEN */
RETURN: 0 => FEHLER , FEHLERCODE STEHT IN RC - LISTE DER FEHLER IN ROERR.H
AKTIONEN:
- DER FILEPUFFER WIRD AUF DEN ZULETZT GELESENEN SATZ GESCHRIEBEN
- ALLE INDIZES SIND ZU AKTUALISIEREN
/***********************
** IIAPPEND()
***********************/
int iiappend(dateibereich, rc)
{
struct ro_dateibereich *dateibereich; /* DATEIBEREICH DER DATEI */
int *rc; /* IM FEHLERFALL WIRD HIER EIN NUMER.CODE EINGETRAGEN */
RETURN: 0 => FEHLER , FEHLERCODE STEHT IN RC - LISTE DER FEHLER IN ROERR.H
AKTIONEN:
- HINZUFUEGEN EINES SATZES, DESSEN SATZNUMMER IN INDEX STEHT.
- IM FILEPUFFER STEHT DER SCHREIBENE SATZ
- ALLE INDIZES SIND ZU AKTUALISIEREN
/***********************
** IIDELETE()
***********************/
int iidelete(dateibereich, rc)
{
struct ro_dateibereich *dateibereich; /* DATEIBEREICH DER DATEI */
int *rc; /* IM FEHLERFALL WIRD HIER EIN NUMER.CODE EINGETRAGEN */
RETURN: 0 => FEHLER , FEHLERCODE STEHT IN RC - LISTE DER FEHLER IN ROERR.H
AKTIONEN:
- LOESCHEN EINES SATZES, DESSEN SATZNUMMER IN INDEX STEHT
- IM PRIMAERINDEX IST DIE SATZNUMMER ZU ENTFERNEN
- ALLE INDIZES SIND ZU AKTUALISIEREN

View File

@ -0,0 +1,16 @@
#define RM_MEMLEN sizeof(struct rm_memtab)
#define RM_HMEMTAB sizeof(struct rm_tabhead)
struct rm_memtab
{
char mname[10];
int moff;
short mlen;
};
struct rm_tabhead
{
char *zmemory;
int lenmemory;
int manz;
};

View File

@ -0,0 +1,326 @@
/* IDENT: 100359 - qdef */
/* Design: van Treek */
# ifndef TQLSYS
# include "TQLSYS.H" /* Systemdefinitionen */
# endif
/*
** Definition der Symbole fuer ausgelassene Funktionsargumente
*/
# ifndef G_NILA
# define G_NILA (char *)(-1) /* ausgelassener Adress-Parameter */
# endif
# ifndef G_NILI
# define G_NILI (-1) /* ausgelassener INT-Parameter */
# endif
# ifndef G_NILL
# define G_NILL (-1l) /* ausgelassener LONG-Parameter */
# endif
# ifndef G_NILC
# define G_NILC (char)0xFF /* ausgelassener CHAR-Parameter */
# endif
# ifndef G_NILF
# define G_NILF (FILE *)(-1) /* ausgelassener FILE-Pointer */
# endif
/*
** Definition des Macros DEBUG zum Ausschalten des Funktionsrufes
*/
# ifndef gdebug
# define gdebug(x,y) /* DEBUG ausschalten */ \
{ \
char *parm1, *parm2; \
parm1 = (char *)x; /* Zuweisung wird durch Optimierung entfernt*/ \
parm2 = (char *)y; /* Zuweisung wird durch Optimierung entfernt*/ \
}
# endif
/****************************************************************************
*
* Symbole der Kommandoschluesselwoerter, die in der ersten Position
* der Kommandozeile auftreten koennen.
*
****************************************************************************/
# define QT_ACC 0
# define QT_APP QT_ACC + 1
# define QT_AVE QT_APP + 1
# define QT_BRO QT_AVE + 1
# define QT_CAN QT_BRO + 1
# define QT_CAS QT_CAN + 1
# define QT_CHA QT_CAS + 1
# define QT_CLE QT_CHA + 1
# define QT_CLO QT_CLE + 1
# define QT_COT QT_CLO + 1
# define QT_COP 10
# define QT_COU QT_COP + 1
# define QT_CRE QT_COU + 1
# define QT_DBG QT_CRE + 1
# define QT_DEL QT_DBG + 1
# define QT_DIR QT_DEL + 1
# define QT_DIS QT_DIR + 1
# define QT_DO QT_DIS + 1
# define QT_EDI QT_DO + 1
# define QT_EJE QT_EDI + 1
# define QT_ELS 20
# define QT_ENC QT_ELS + 1
# define QT_ENI QT_ENC + 1
# define QT_END QT_ENI + 1
# define QT_ENT QT_END + 1
# define QT_ERA QT_ENT + 1
# define QT_EXI QT_ERA + 1
# define QT_FIN QT_EXI + 1
# define QT_GO QT_FIN + 1
# define QT_GRA QT_GO + 1 /* GRAPHIC */
# define QT_IF QT_GRA + 1
# define QT_IND 31
# define QT_INP QT_IND + 1
# define QT_INS QT_INP + 1
# define QT_JOI QT_INS + 1
# define QT_LAB QT_JOI + 1
# define QT_LIS QT_LAB + 1
# define QT_LOC QT_LIS + 1
# define QT_LOO QT_LOC + 1
# define QT_MOD QT_LOO + 1
# define QT_NOT QT_MOD + 1
# define QT_OTH 41
# define QT_PAC QT_OTH + 1
# define QT_PAR QT_PAC + 1
# define QT_PRI QT_PAR + 1
# define QT_PUB QT_PRI + 1
# define QT_QUI QT_PUB + 1
# define QT_REA QT_QUI + 1
# define QT_REC QT_REA + 1
# define QT_REI QT_REC + 1
# define QT_REL QT_REI + 1
# define QT_REN 51
# define QT_RPL QT_REN + 1
# define QT_REP QT_RPL + 1
# define QT_RST QT_REP + 1
# define QT_RTU QT_RST + 1
# define QT_RUN QT_RTU + 1
# define QT_SAV QT_RUN + 1
# define QT_SCA QT_SAV + 1
# define QT_SEE QT_SCA + 1 /* SEEK */
# define QT_SEL QT_SEE + 1
# define QT_SET QT_SEL + 1
# define QT_SKI 62
# define QT_SOR QT_SKI + 1
# define QT_STO QT_SOR + 1
# define QT_SUM QT_STO + 1
# define QT_TEX QT_SUM + 1
# define QT_TOT QT_TEX + 1
# define QT_TYP QT_TOT + 1
# define QT_UPD QT_TYP + 1
# define QT_USE QT_UPD + 1
# define QT_WAI QT_USE + 1
# define QT_ZAP 72
# define QT_FRA QT_ZAP + 1
# define QT_POS QT_FRA + 1
# define QT_PRO QT_POS + 1
# define QT_HEL QT_POS + 1
# define QT_ASS QT_HEL + 1
# define QT_EOF QT_ASS + 1
# define QT_PLO QT_EOF + 1
/****************************************************************************
*
* Symbole der Parameter-Schluesselworte
*
****************************************************************************/
# define QP_ADD 0501
# define QP_ALL 0502
# define QP_ALT 0503
# define QP_BEL 0504
# define QP_BEF 0505
# define QP_BLA 0506
# define QP_BOT 0507
# define QP_CAL 0510
# define QP_CAR 0511
# define QP_CAS 0512
# define QP_COL 0513
# define QP_CON 0514
# define QP_COS 0515
# define QP_DEB 0516
# define QP_DEF 0517
# define QP_DES 0520
# define QP_DLM 0521
# define QP_ECH 0522
# define QP_ERA 0523
# define QP_ESC 0524
# define QP_EXA 0525
# define QP_FIE 0526
# define QP_FOM 0527
# define QP_FOR 0530
# define QP_FRO 0531
# define QP_GET 0532
# define QP_HEA 0533
# define QP_IND 0534
# define QP_INE 0535
# define QP_LIK 0536
# define QP_LIN 0537
# define QP_MAR 0540
# define QP_MEM 0541
# define QP_NBU 0542
# define QP_NEX 0543
# define QP_NOT 0544
# define QP_OFF 0545
# define QP_ON 0546
# define QP_PRI 0547
# define QP_PRN 0550
# define QP_RAW 0551
# define QP_REA 0552
# define QP_REO 0553
# define QP_RNA 0554
# define QP_REP 0555
# define QP_RPO 0556
# define QP_RSE 0557
# define QP_SCR 0560
# define QP_SDF 0561
# define QP_SEO 0562
# define QP_SEG 0563
# define QP_STE 0564
# define QP_STU 0565
# define QP_SUM 0566
# define QP_TAL 0567
# define QP_TUT 0570
# define QP_TOP 0571
# define QP_TO 0572
# define QP_VOL 0573
# define QP_WHI 0574
# define QP_WIT 0575
# define QP_MDM 0576
# define QP_EXT 0577
# define QP_KEY 0600
# define QP_CMN 0601
# define QP_MST 0602
# define QP_MPO 0603
# define QP_DTE 0604
# define QP_KYU 0605
# define QP_MDP 0606
# define QP_MME 0607
# define QP_PRO 0610
# define QP_ALI 0611
# define QP_CLE 0612
# define QP_COR 0613
# define QP_COM 0614
# define QP_DTB 0615
# define QP_DEC 0616
# define QP_DEL 0617
# define QP_DLR 0620
# define QP_DEV 0621
# define QP_EXC 0622
# define QP_FIL 0623
# define QP_FLT 0624
# define QP_FIX 0625
# define QP_FRM 0626
# define QP_FUN 0627
# define QP_GTS 0630
# define QP_HEL 0631
# define QP_INT 0632
# define QP_LAB 0633
# define QP_MAS 0634
# define QP_MDS 0635
# define QP_MEN 0636
# define QP_NOE 0637
# define QP_PAT 0640
# define QP_PIC 0641
# define QP_PLA 0642
# define QP_RAD 0643
# define QP_RAG 0644
# define QP_REL 0645
# define QP_RPL 0646
# define QP_SAF 0647
# define QP_SAM 0650
# define QP_SVE 0651
# define QP_SAY 0652
# define QP_STA 0653
# define QP_UNI 0654
# define QP_GRA 0655
/********************************************************
*
* FEHLER-DEFINITIONEN
*
********************************************************/
# define QA_NOKDO 1
# define QA_SYNTAX 2
# define QA_NOTFOUND 3
# define QA_EXPRESSION 4
# define QA_KDOFILE 5
# define QA_OVERWHILE 6
# define QA_OVERIF 7
# define QA_OVERDOCASE 8
# define QA_NOSPACE 9
# define QA_NOTVARIALBLE 10
# define QA_NOTPRG 11
# define QA_NOTREC 12
# define QA_NOTALIAS 13
# define QA_NOTIMP 14
# define QA_PRGERROR 15
# define QA_NOTHELP 16
# define QA_BEREICH 17
# define QA_NOTOPEN 18
# define QA_INTERUPT 19
/*
** Sonstige Definitionen
*/
# define QS_NONAME '\176' /* keine Namenspruefung bei LEX */
/* Zeichenkettenzeichen */
# define QZ_ZKCH1 '\''
# define QZ_ZKCH2 '"'
# define QZ_ZKCH3 '['
# define QA_KLAA 06101
# define QA_KLAZ 06102
# define QA_KENDE 06106
# define QA_KOMMA 0200
# define QA_SONSTNAME 01003
# define QA_KONSTANTE 02000
# define QA_ZKONST 02010
# define QA_NKONST 02020
# define QA_LKONST 02030
# define QA_TRUE 02031
# define QA_FALSE 02032
# define QA_FUNKTION 03000
# define QA_OPERATOR 04000
# define QA_PRIORITAET 070
# define QA_NICHT 04061
# define QA_EINMINUS 04062 /* einseitiges Minus */
# define QA_MUL 04051
# define QA_DIV 04052
# define QA_PLUS 04041
# define QA_MINUS 04042
# define QA_GLEICH 04031
# define QA_UNGLEICH 04032
# define QA_GROESSER 04033
# define QA_KLEINER 04034
# define QA_GRGLEICH 04035
# define QA_KLGLEICH 04036
# define QA_UND 04021
# define QA_ODER 04011

View File

@ -0,0 +1,56 @@
/*------------------------------------------------------------------*/
/* M A K R O D E F I N I T I O N E N fuer Generierung T Q L */
/*------------------------------------------------------------------*/
/* 1= in Benutzung
0= nicht in Benutzung */
#ifdef psu
#define TOP /* TQL/ESER nur fuer TOPAS */
#endif
#ifndef TOP
#define GEN_TOP 1
#define GEN_SFI 1
#define GEN_FIX 1
#define GEN_INT 0
#else
#define GEN_TOP 1 /* Generierung nur TOPAS */
#define GEN_SFI 0
#define GEN_FIX 0
#define GEN_INT 0
#endif
/*------------------------------------------------------------------*/
#if (GEN_TOP + GEN_SFI + GEN_FIX + GEN_INT) > 1
#define GENIF(X) \
if(X)
#else
#define GENIF(X)
#endif
/*------------------------------------------------------------------*/
#if (GEN_TOP + GEN_SFI + GEN_FIX + GEN_INT) > 1
#define GENSWITCH(X) \
switch(X)
#else
#define GENSWITCH(X)
#endif
/*------------------------------------------------------------------*/
#if (GEN_TOP + GEN_SFI + GEN_FIX + GEN_INT) > 1
#define GENCASE(X) \
case (X):
#else
#define GENCASE(X)
#endif
/*------------------------------------------------------------------*/
#if (GEN_TOP + GEN_SFI + GEN_FIX + GEN_INT) > 1
#define GENBREAK \
break;
#else
#define GENBREAK
#endif
/*------------------------------------------------------------------*/

View File

@ -0,0 +1,252 @@
/* IDENT: 102159 - qstrd */
/* Design: van Treek */
/*
** Definition der Symbole fuer ausgelassene Funktionsargumente
*/
# ifndef G_NILA
# define G_NILA (char *)(-1) /* ausgelassener Adress-Parameter */
# endif
# ifndef G_NILI
# define G_NILI (-1) /* ausgelassener INT-Parameter */
# endif
# ifndef G_NILL
# define G_NILL (-1l) /* ausgelassener LONG-Parameter */
# endif
# ifndef G_NILC
# define G_NILC (char)0xFF /* ausgelassener CHAR-Parameter */
# endif
# ifndef G_NILF
# define G_NILF (FILE *)(-1) /* ausgelassener FILE-Pointer */
# endif
/*
** Definition des Macros DEBUG zum Ausschalten des Funktionsrufes
*/
# ifndef gdebug
# define gdebug(x,y) /* DEBUG ausschalten */ \
{ \
char *parm1, *parm2; \
parm1 = (char *)x; /* Zuweisung wird durch Optimierung entfernt*/ \
parm2 = (char *)y; /* Zuweisung wird durch Optimierung entfernt*/ \
}
# endif
/****************************************************************************
*
* Definition der Makros zur Arbeit mit Interface
*
****************************************************************************/
# ifdef SPSU
# define fopen(a,b) \
gu_fopen_eser(a,b)
# endif
/****************************************************************************
*
* Definition der Maximalen Feldgroessen bzw. Stackgroessen
*
****************************************************************************/
# ifndef NULL
# include <stdio.h> /* nur einziehen wenn nicht gleichzeitig rostrd.h */
# endif
/*********************** 32 BIT VARIANTE ANFANG ***************************/
# ifdef SSVP
# ifndef QC_MAXPGR
# define QC_MAXPGR 32 /* geschacht. Programmdatein */
# endif
/* HORN 13.1.89 Diese Definition wird auch in rostrd.h gebraucht, da sie
in einer Strukturdefinition verwendet wird. */
# define QC_MAXLOOP 32 /* geschacht. DO WHILE-Schleifen */
# define QC_MAXIF 32 /* geschacht. IF-Anweisungen */
# define QC_MAXCASE 32 /* geschacht. DO CASE-Anweisungen */
# define QC_MAXFILSPEC 100 /* max.Laenge einer File-Angabe */
# define QC_MAXBEREICH 256 /* Eingabepufferlaenge */
# define QC_MAXPROC 101 /* max.Anzahl an Prozeduren */
# define QC_MAXDO 33 /* max.Anzahl an Do-Dateien */
# define QC_MAXPARAMETER 17 /* max.Anzahl an DO-Parametern */
# else
/*********************** 16 BIT VARIANTE ANFANG ***************************/
# ifndef QC_MAXPGR
# define QC_MAXPGR 5 /* geschacht. Programmdatein */
# endif
/* HORN 13.1.89 Diese Definition wird auch in rostrd.h gebraucht, da sie
in einer Strukturdefinition verwendet wird. */
# define QC_MAXLOOP 5 /* geschacht. DO WHILE-Schleifen */
# define QC_MAXIF 5 /* geschacht. IF-Anweisungen */
# define QC_MAXCASE 5 /* geschacht. DO CASE-Anweisungen */
# define QC_MAXFILSPEC 40 /* max.Laenge einer File-Angabe */
# define QC_MAXBEREICH 256 /* Eingabepufferlaenge */
# define QC_MAXPROC 10 /* max.Anzahl an Prozeduren */
# define QC_MAXDO 5 /* max.Anzahl an Do-Dateien */
# define QC_MAXPARAMETER 5 /* max.Anzahl an DO-Parametern */
# endif
/****************************************************************************
*
* Stackdefinitionen: Programmstack und Schleifenstack.
* Jedes Programm (DO NAME) hat MAXLOOP moegliche Schleifen.
* Es gibt MAXPGR Programmstacks.
*
****************************************************************************/
struct doparm
{
int do_flag; /* Kenner: 0->keine Variable 1->Var.*/
char do_variable[40]; /* Variablen-Name */
};
struct loopstack /* Schleifenstack */
{
int lcount; /* Stacktiefe */
char *position[QC_MAXLOOP]; /* Satzposition */
int aktifcount[QC_MAXLOOP]; /* If-Tiefe */
int aktcasecount[QC_MAXLOOP]; /* Case-Tiefe */
};
struct pgrstack /* Programmstack */
{
char pgrname[QC_MAXFILSPEC]; /* Programm-Name */
struct loopstack *loop; /* Schleifenstack-Pointer */
char *last; /* letzte Satzposition im Programm */
struct doparm withparm[QC_MAXPARAMETER]; /* WITH */
struct doparm paraparm[QC_MAXPARAMETER]; /* PARAMETERS */
};
struct descr
{
int len; /* Laenge der Zeichenkette */
char *string; /* -> Zeichenkette */
};
/****************************************************************************
*
* Struktur des Parameterblocks, der an das RO-Interface uebergeben
* wird
*
****************************************************************************/
struct qi_parameter
{
long bereich; /* ALL | NEXT */
char select; /* 'P' | 'S' */
int q_opsave; /* FUER CONTINUE */
int fl_all; /* ALL-Flag */
int fl_record; /* RECORD-Flag */
int fl_next; /* NEXT-Flag */
int fl_parameter; /* Parameter-Flag 0->ohne Parameter */
char *forp; /* Bedingung */
char *to; /* Speicher-Name */
char *file; /* TOPAS-Datei */
char *input; /* Eigabedatei */
char *outfile; /* Ausgabedatei */
char *field; /* Spaltenliste */
char *on; /* Spaltenname */
char *mdm; /* Entity-Name */
char *from; /* Append-From */
char *delimit; /* Begrenzungszeichen */
char *skey; /* Schluesselbaumname */
char *pkey;
char *find; /* Zeichenkette */
char *aus1; /* Ausdruck 1 */
char *aus2; /* Ausdruck 2 */
char *add; /* Spaltenliste */
char *rep; /* -=- */
int sdf; /* SDF */
int blank; /* BLANK */
int extended; /* EXTENDED */
int mdmfl; /* MDM */
int structure; /* STRUCTURE */
int off; /* OFF*/
int rotop; /* TOP */
int memory; /* MEMORY */
int qindex; /* INDEX */
int record; /* RECORD */
int setfkt;
char *form; /* FORM */
int report; /* REPORT */
char *qheading; /* HEADING */
char *with; /* WITH bei JOIN */
int whileflag; /* WHILE spezif. */
int read; /* READFLAG F. USE */
char q_findsave[79]; /* FELD F.FIND UND LOCATE: CONTINUE */
char qi_frei[1]; /* Reserve */
};
/****************************************************************************
*
* Struktur des TQL-Steuerblocks q_tql
*
****************************************************************************/
struct q_tql
{
struct ro_zvt zvt; /* zentrale Verarb.-Tabelle */
int q_terminal; /* Terminalflag: 1 = TT: */
int q_error; /* Fehlerwort: 0 = okay */
int q_stopflag; /* Stopwort: 1 = Abbruch */
int q_topkdo; /* Kommando-Code */
FILE *q_kdofile; /* Kommando-Eingabefile */
char *q_actsatz; /* aktueller Eingabesatz */
char *q_kdoptr; /* Kdo-Pointer */
char *q_kdosave; /* =-= */
int q_rorc; /* RO-Rerurn-Code */
struct pgrstack q_pgrstack[QC_MAXPGR]; /* Programm-Stack */
struct loopstack q_loopstack[QC_MAXPGR];/* Schleifen-Stack */
int q_ifstack[QC_MAXIF]; /* IF-Stack */
int q_ifcount; /* IF-Zaehler */
int q_casestack[QC_MAXCASE]; /* CASE-Stack */
int q_casecount; /* CASE-Zaehler */
struct qi_parameter qi_roparm; /* Parameterblock Interface */
char q_parmbereich[QC_MAXBEREICH]; /* Parameterbereich */
char *q_proctab; /* Prozedur-Tabelle */
char *q_dotab; /* kdo-Datei-Tabelle */
char *q_procspace; /* Speicher f.Procedure-Datei */
char *q_aliastab; /* Aliasnamen-Tabelle */
int q_assist; /* 0:aus 1:ein */
char *q_lastparm; /* Letzter gelexter Parameter */
int q_fullscr; /* 0:aus 1:ein */
int q_stmflag; /* Debugger:TQL-Kdo -Flag */
int q_frei[7]; /* Reserve */
};
/*****************************************************************
*
* Struktur des Prozedurstacks
*
* Der Stack beinhaltet die Namen und die Adressen der sich im HS
* befindlichen Prozeduren.
*
*****************************************************************/
struct qc_proctab
{
char procname[QC_MAXFILSPEC]; /* Prozedurname */
char *procptr; /* Prozeduradresse */
};


View File

@ -0,0 +1,245 @@
/* IDENT: 100359 - RODEF.H */
# ifndef TQLSYS
# include "TQLSYS.H" /* Systemdefinitionen */
# endif
/*
** Definition der Symbole fuer ausgelassene Funktionsargumente
*/
# ifndef G_NILA
# define G_NILA (char *)(-1) /* ausgelassener Adress-Parameter */
# endif
# ifndef G_NILI
# define G_NILI (-1) /* ausgelassener INT-Parameter */
# endif
# ifndef G_NILL
# define G_NILL (-1l) /* ausgelassener LONG-Parameter */
# endif
# ifndef G_NILC
# define G_NILC (char)0xFF /* ausgelassener CHAR-Parameter */
# endif
# ifndef G_NILF
# define G_NILF (FILE *)(-1) /* ausgelassener FILE-Pointer */
# endif
/*
** Definition des Macros DEBUG zum Ausschalten des Funktionsrufes
*/
# ifndef gdebug
# define gdebug(x,y) /* DEBUG ausschalten */ \
{ \
char *parm1, *parm2; \
parm1 = (char *)x; /* Zuweisung wird durch Optimierung entfernt*/ \
parm2 = (char *)y; /* Zuweisung wird durch Optimierung entfernt*/ \
}
# endif
/****************************************************************************
*
* Definitionen zur Arbeit mit Relationalen Operatoren
*
****************************************************************************/
# define RA_MAXINT 07777777777 /* groesste positive Zahl */
/* Definition der Funktionswerte der SET - Funktion */
# define RF_ALTE 0503 /* QP_ALT */
# define RF_BELL 0504 /* QP_BEL */
# define RF_CARR 0511 /* QP_CAR */
# define RF_COLO 0613 /* QP_COR */
# define RF_CONF 0514 /* QP_CON */
# define RF_CONS 0515 /* QP_COS */
# define RF_DEBU 0516 /* QP_DEB */
# define RF_DECI 0616 /* QP_DEC */
# define RF_DEFA 0517 /* QP_DEF */
# define RF_DELE 0617 /* QP_DEL */
# define RF_DELI 0620 /* QP_DLR */
# define RF_DEVI 0621 /* QP_DEV */
# define RF_ECHO 0522 /* QP_ECH */
# define RF_ESCA 0524 /* QP_ESC */
# define RF_EXAC 0525 /* QP_EXA */
# define RF_FILT 0624 /* QP_FLT */
# define RF_FIXE 0625 /* QP_FIX */
# define RF_FORM 0527 /* QP_FOM */
# define RF_HEAD 0533 /* QP_HEA */
# define RF_HELP 0631 /* QP_HEL */
# define RF_INDE 0534 /* QP_IND */
# define RF_INTE 0535 /* QP_INE */
# define RF_KYUP 0605 /* QP_KYU */
# define RF_MARG 0540 /* QP_MAR */
# define RF_MDMP 0606 /* QP_MDP */
# define RF_MENU 0636 /* QP_MEN */
# define RF_NBUF 0542 /* QP_NBU */
# define RF_PATH 0640 /* QP_PAT */
# define RF_PRIN 0550 /* QP_PRN */
# define RF_PROC 0610 /* QP_PRO */
# define RF_RELA 0645 /* QP_REL */
# define RF_SAFE 0647 /* QP_SAF */
# define RF_SCOR 0777 /* -----------------> BEI WILLI NICHT ENTHALTEN !!!! */
# define RF_SEGR 0563 /* QP_SEG */
# define RF_STEP 0564 /* QP_STE */
# define RF_TALK 0567 /* QP_TAL */
# define RF_TOPU 0570 /* QP_TUT */
# define RF_UNIQ 0654 /* QP_UNI */
# define RF_VOLU 0573 /* QP_VOL */
# define ANY '\177'
# define NONAME '\176' /* keine Namenspruefung bei LEX */
# define NCON '\175' /* keine Namenspruefung bei dresp */
/* Zeichenkettenzeichen */
# define ZKCH1 '\''
# define ZKCH2 '"'
# define PECH '\0' /* Endezeichen fuer Parameterzeile */
/* Definitionen fuer Bearbeitung von Ausdruecken */
# define RA_MAXTERMINALSYMBOL 0777
# define RA_MASKE 07000
# define RA_EINZELZEICHEN 06100
# define RA_KLAA 06101
# define RA_KLAZ 06102
# define RA_INDIREKT 06103
# define RA_KENDE 06106
# define RA_KOMMA 06107
# define RA_NAME 01000
# define RA_DATEIDES 01001
# define RA_MEMNAME 01002
# define RA_SONSTNAME 01003
# define RA_KONSTANTE 02000
# define RA_ZKONST 02010
# define RA_NKONST 02020
# define RA_LKONST 02030
# define RA_TRUE 02031
# define RA_FALSE 02032
# define RA_FUNKTION 03000
# define RA_FKTEIN 03100
/* Oktalkodierung: 3 x y y [ 3 - Funktion ] */
/* ^ Anzahl der Argumente */
/* ^ zweistellige laufende Nummer */
# define RA_FBOF 03001 /* ==> Funktionen ohne Argumente ohne Datumsbezug */
# define RA_FEOF 03002
# define RA_FRECNO 03003
# define RA_FCOL 03006
# define RA_FROW 03007
# define RA_FPCOL 03010
# define RA_FPROW 03011
# define RA_FRC 03012 /* RECCOUNT */
# define RA_FRS 03013 /* RECSIZE */
# define RA_FDELE 03014 /* DELETED */
# define RA_FDBF 03015
# define RA_FPSPACE 03016 /* Plattenplatz */
# define RA_FFOUND 03017
# define RA_FISCOLOR 03020
# define RA_FFKMAX 03021
# define RA_FOS 03022
# define RA_FVERSION 03023
# define RA_FDATE 03070 /* Datumsbezogene Funktion (ab oktal 60) */
# define RA_FTIME 03071
# define RA_FASC 03101 /* ==> Funktionen mit 1 Argument */
# define RA_FCHR 03102
# define RA_FFILE 03103
# define RA_FLEN 03104
# define RA_FTRIM 03105
# define RA_FRTRIM 03105
# define RA_FVAL 03106
# define RA_FUPPER 03107
# define RA_FLOWER 03110
# define RA_FISAL 03111
# define RA_FISLOW 03112
# define RA_FISUPP 03113
# define RA_FSPA 03115
# define RA_FTYPE 03116
# define RA_FFIELD 03117
# define RA_FLTRIM 03120
# define RA_FNDX 03121
# define RA_FFKLABEL 03122
# define RA_FABS 03150 /* mathematische Funktionen mit 1 Argument */
# define RA_FINT 03151 /* laufende Nummer ab oktal 40 */
# define RA_FEXP 03152
# define RA_FLOG 03153
# define RA_FSQRT 03154
# define RA_FDOW 03160 /* Datumsfunktionen mit 1 Argument */
# define RA_FCDOW 03161 /* laufende Nummer ab oktal 60 */
# define RA_FMONTH 03162
# define RA_FCMONTH 03163
# define RA_FDAY 03164
# define RA_FYEAR 03165
# define RA_FCTOD 03166
# define RA_FDTOC 03167
/* ==> Funktionen mit 2 Argumenten */
# define RA_FZKENT 03201 /* AT */
# define RA_FLEFT 03202
# define RA_FRIGHT 03203
# define RA_FREPLI 03204 /* REPLICATE */
# define RA_FTRANS 03205 /* TRANSFORM */
# define RA_FMIN 03241 /* math. Funktion */
# define RA_FMAX 03242 /* math. Funktion */
# define RA_FMOD 03243 /* math. Funktion */
# define RA_FROUND 03244 /* math. Funktion (45 auch vergeben (FCELM) */
# define RA_FSTR 03301 /* ==> Funktionen mit 3 Argumenten */
# define RA_FTEILZK 03302 /* SUBSTR */
# define RA_FIIF 03303 /* IIF */
# define RA_FCELM 03445 /* ==> Funktionen mit 4 Argumenten */
# define RA_FSTUFF 03402
# define RA_OPERATOR 04000
# define RA_PRIORITAET 070
# define RA_NICHT 04061
# define RA_EINMINUS 04062 /*Einseitiges Minus */
# define RA_MUL 04051
# define RA_DIV 04052
# define RA_PLUS 04041
# define RA_MINUS 04042
# define RA_MAX 04053
# define RA_MIN 04054
# define RA_GLEICH 04031
# define RA_UNGLEICH 04032
# define RA_GROESSER 04033
# define RA_KLEINER 04034
# define RA_GRGLEICH 04035
# define RA_KLGLEICH 04036
# define RA_UND 04021
# define RA_ODER 04011
/* Definitionen fuer Pol. Notation */
# define RA_RS 07001
# define RA_SW 07002
# define RA_WS 07003
# define RA_RUNSTOP 07004
# define RA_CC 07005
# define RA_RM 07006
# define RA_WM 07007
# define RA_FS 07010
# define RA_TS 07011
# define RA_LC 07012
/* Definitionen fuer Spalte $$$$MARK */
# define RB_MARKDEL 01 /* Kennzeiche fuer Satz geloescht */

View File

@ -0,0 +1,189 @@
/* IDENT: 100359 - roerr */
/*
** Definition der Symbole fuer ausgelassene Funktionsargumente
*/
# ifndef G_NILA
# define G_NILA (char *)(-1) /* ausgelassener Adress-Parameter */
# endif
# ifndef G_NILI
# define G_NILI (-1) /* ausgelassener INT-Parameter */
# endif
# ifndef G_NILL
# define G_NILL (-1l) /* ausgelassener LONG-Parameter */
# endif
# ifndef G_NILC
# define G_NILC (char)0xFF /* ausgelassener CHAR-Parameter */
# endif
# ifndef G_NILF
# define G_NILF (FILE *)(-1) /* ausgelassener FILE-Pointer */
# endif
/*
** Definition des Macros DEBUG zum Ausschalten des Funktionsrufes
*/
# ifndef gdebug
# define gdebug(x,y) /* DEBUG ausschalten */ \
{ \
char *parm1, *parm2; \
parm1 = (char *)x; /* Zuweisung wird durch Optimierung entfernt*/ \
parm2 = (char *)y; /* Zuweisung wird durch Optimierung entfernt*/ \
}
# endif
/****************************************************************************
*
* Liste der verwendeten Fehlercodes fur Relationale Operatoren
*
*****************************************************************************/
/* Fehlercodes bei fehlerhafter Abarbeitung eines DML-Makro EDxxxx */
# define EDCELM 70
# define EDRETR 71
# define EDSTOR 72
# define EDSEQR 73
# define EDKYAD 74
# define EDKYDF 75
# define EDCLOS 76
# define EDRDMD 77
# define EDDEFN 78
# define EDRDCD 79
# define EDCDED 80
# define EDRDVL 81
# define EDFCTL 82
# define EDOPN 83
# define EDOPNR 84
# define EDOPNU 85
# define EDKYRT 86
# define EDDELS 87
# define EDNXTK 88
# define EDSGTW 89
# define EDDELI 90
# define EDSCAN 91
# define EDWTVL 92
# define EDWTUA 93
# define EDRDUA 94
# define EDCREA 95
# define EDRENA 96
# define EDREFM 97
# define EDCREC 98
/* Fehlercodes der Relationalen Operatoren im Parameter RC */
# define TVOPEN 1 /* TV ist bereits eroeffnet */
# define ARGERR 2 /* Argumentfehler in Standardfunktion */
# define EOPNN 3 /* Argument d. einstelligen Operators EINMINUS ist nicht numerisch */
# define EOPNL 4 /* Argument d. einstelligen Operators NICHT ist nicht logisch */
# define NOOVERWRITE 5 /* Datei nicht zum ueberschreiben freigegeben */
# define TERMBUF 6 /* Terminalpuffer ist zu klein */
# define OFDATA 7 /* Datenueberlauf bei Angleichung der Dezimalstellenzahl */
# define NOTV 8 /* TV kein Buchstabe */
# define UNTV 9 /* bei qualifizierten Namen wurde falsche TV angegeben */
# define SYNTAXLEX 10 /* Syntaxfehler durch LEX festgestellt */
# define KEYDUP 11 /* Schluesselspalte ist bereits definiert */
# define NOKOMMA 12 /* es wird eine Liste erwartet, Komma als Trennzeichen nicht gefunden */
# define NOKLAZ 13 /* schliessende Klammer wird erwartet - nicht gefunden */
# define NOMEMORY 14 /* malloc kann keinen weiteren Speicherplatz zuordnen */
# define OFPOLNOT 15 /* Bereich fuer Interndarstellung von Ausdruecken ist voll */
# define NOZLISTE 16 /* ungueltige Zuordnungsliste */
# define NOCOND 17 /* ungueltige Bedingung */
# define NOLOCATE 18 /* CONTINUE gegeben ohne vorausgehendes LOCATE */
# define NOAUSDR 19 /* ungueltiger Ausdruck */
# define NOCONV 20 /* Konvertierung nicht unterstuetzt */
# define TVNDEF 21 /* TV nicht eroeffnet */
# define NOINIT 22 /* kein INIT-Operator abgearbeitet oder falsche ZVT-Adresse angegeben */
# define FPAR 23 /* ungueltiger Parameter */
# define EFGETS 24 /* Fehler beim Lesen eines seriellen Files */
# define NOPOLNOT 25 /* Fehler bei Interndarstellung von Ausdruecken */
# define EFPUTS 26 /* Fehler beim Schreiben in ein serielles File */
# define DIVBYZERO 27 /* Gleitkomma-Division durch Null */
# define EFOPEN 28 /* Fehler beim Eroeffnen eines seriellen Files */
# define NOSORTNAME 29 /* ungueltiger Name eines Schluesselbaumes angegeben */
# define SRTDUP 30 /* Indexspalte mit gleichem Namen bereits definiert */
# define COLDUP 31 /* Spalte ist bereits definiert (CREA) */
# define NOSORTLI 32 /* falsche Sortliste bei PRNT angegeben */
# define GETINDEX 33 /* kein Ausgabe-Index gefunden */
# define NOZKAUSDR 34 /* kein Zeichenkettenausdruck */
# define NOAFKTLI 35 /* fehlerhafte Liste von Aggregationsfunktionen */
# define NOSPALI 36 /* fehlerhafte Liste von Spaltennamen */
# define NOOUTCOL 37 /* Spaltenname im Dateibereich fuer Ausgabe nicht enthalten */
# define NOMDMKOM 38 /* Eingabedatei fuer WTMD enthaelt falsches Kommando */
# define NOMDMENT 39 /* Entity im MDM nicht gefunden */
# define NONUMCOL 40 /* keine num. Spalte -> AGGR nicht moeglich */
# define INVSPNAME 41 /* 1. Zeichen des Spaltennamen ist kein Alphazeichen sein */
# define EKYUPDT 42 /* Fehler bei Aktualisierung Schluesselbaum */
# define NOSETFKT 43 /* keine Set-Funktion */
# define NOKEYCOL 44 /* Schluesselspalte nicht definiert */
# define NOMEMNAME 45 /* Speichername nicht gefunden */
# define NOAKTKEY 46 /* kein AKTKEY fuer FIND gesetzt */
# define KABBRUCH 47 /* definierter Kommandoabbruch */
/*-------------------------------------------------------------VAX----------*/
# define SYNTAX 48 /* Syntaxfehler im Kommando */
# define NOIMPL 49 /* Funktion noch nicht implementiert */
# define EWRITE 50 /* Fehler bei WRITE in SFILE */
# define EREAD 51 /* Fehler bei READ aus SFILE */
# define ELSEEK 52 /* Fehler bei LSEEK im SFILE */
# define EOPEN 53 /* Fehler bei OPEN eines SFILE */
# define ECREAT 54 /* Fehler bei CREAT eines SFILE */
/*-------------------------------------------------------------SORTIERUNG---*/
# define SORTCCT 55 /* Can't Create Temp-File (zum Schreiben) */
# define SORTCRT 56 /* Can't Reopen Temp-File (jetzt zum Lesen) */
# define SORTSOF 57 /* Stack-Over-Flow */
# define SORTUEOF 58 /* Undefines End Of File (Temp.sort) */
# define SORTWERR 59 /* Fehler beim Schreiben auf des temporaeren Files */
# define SORTFPOR 60 /* Field-Position Out of Range (bei Sort.-feldbeschr.)*/
# define SORTFLOR 61 /* Field-Length Out of Range */
# define SORTSYN 62 /* fehlerhafte Aufruffolge so_srta(), so_srto() */
/*---------------------------------------------------------FORMATIERTE E/A---*/
# define FMERRSC 63 /* Fehler bei Positionieren des Cursors */
# define FMERRIN 64 /* Fehler bei Einlesen einer Zeichenkette */
# define FMERROU 65 /* Fehler bei Ausgabe einer Zeichenkette */
# define FMERRCL 66 /* Fehler bei Loeschen des Bildschirms */
# define FMERRCR 67 /* Fehler bei Initialisierung des Terminals */
# define FMNOINI 68 /* Terminal nicht fuer Full-Screen initialisierbar */
/*---------------------------------------------------------NEUE UNIXFEHLER --*/
# define NOSFI 69 /* KEINE TQL-DATENBANKDATEI */
/*---------------------------------------------------------------------------*/
# define INTERN 777 /* interner Fehler */
/*--------------------------------------------------WEITERE TQL MELDUNGEN----*/
# define FRUNVIEW 101 /* Fehler bei Abarbeitung einer SET RELATION - Kette */
# define FDEFVIEW 102 /* Fehler bei Definition eines View (SET RELATION) */
# define NOGETS 103 /* Keine GET-Variablen im READ-Zugriff */
# define FALSE_PARM 104 /* Syntaxfehler - falsche Parameteranzahl */
# define MAXEXTKEY 105 /* Max. 10 externe Zugriffshilfen zugelassen */
# define TVEOF 106 /* Ende der Topas-Datei -> kein _retr mehr moeglich */
# define OTOPCOM 107 /* Kommando nur fuer TOPAS-Datei implementiert */
# define SCANWIK 108 /* SCAN mit aktiven Schluesselbaum aufgerufen */
# define FSPSTRU 109 /* Spaltenstruktur ist fehlerhaft */
# define NOMARKSPALTE 110 /* keine Markierungsspalte in der Datenbank */
/* ==> kein DELETE bzw. RECALL - Kommando moeglich */
# define NOSTRUDBF 111 /* Datenbankfile ist kein Struktur-Datenbankfile */
# define NOSAVEFILE 112 /* keine von TQL erstellte SAVE-Datei angegeben */
/* ==> kein RESTORE-Kommando moeglich */
# define TVREAD 113 /* TOPAS-Datei mit Modus READ eroeffnet */
/* -> Aenderungs-Kommandos nicht moeglich */
# define NOFLOAT 114 /* Funktion nicht fuer Parameter vom Typ Gleitkomma */
# define NODATE 115 /* das angegebene Datum ist kein gueltiges Datum */
# define OTHAKTKEY 777 /* hat Buche sich ausgedacht ???????? */

View File

@ -0,0 +1,419 @@
/* IDENT: 100359 - rostrd */
# include "TQLSYS.H" /* Systemdefinitionen */
# include <stdio.h>
/*
** Definition der Symbole fuer ausgelassene Funktionsargumente
*/
# ifndef G_NILA
# define G_NILA (char *)(-1) /* ausgelassener Adress-Parameter */
# endif
# ifndef G_NILI
# define G_NILI (-1) /* ausgelassener INT-Parameter */
# endif
# ifndef G_NILL
# define G_NILL (-1l) /* ausgelassener LONG-Parameter */
# endif
# ifndef G_NILC
# define G_NILC (char)0xFF /* ausgelassener CHAR-Parameter */
# endif
# ifndef G_NILF
# define G_NILF (FILE *)(-1) /* ausgelassener FILE-Pointer */
# endif
/****************************************************************************
*
* Definition der Makros zur Arbeit mit Relationalen Operatoren
*
****************************************************************************/
/*
** Definition des Macros DEBUG zum Ausschalten des Funktionsrufes
*/
# ifndef gdebug
# define gdebug(x,y) /* DEBUG ausschalten */ \
{ \
char *parm1, *parm2; \
parm1 = (char *)x; /* Zuweisung wird durch Optimierung entfernt*/ \
parm2 = (char *)y; /* Zuweisung wird durch Optimierung entfernt*/ \
}
# endif
/****************************************************************************
*
* Definition der Strukturen zur Arbeit mit Relationalen Operatoren
*
*****************************************************************************/
# ifndef NULL
# define NULL 0 /* Horn 24.1.89 wegen # undef NULL in stdio.h */
# endif
# define O_RDONLY 000 /* Definitionen aus <file.h> */
# define O_RDWR 002
# ifndef QC_MAXPGR
# ifdef SSVP
# define QC_MAXPGR 32
# else
# define QC_MAXPGR 5
# endif
# endif
# define RO_MAXFILSPEC 100
# define RO_MAXVALSTACK 2048
# define RO_MAXPOLNOT 3072
# define RO_MAXMEMORY 100
# define RO_MAXZEILE 256
# define RO_MAXRECORD 512
# define RO_MINSPLISTE 1 /* Anzahl der Spalten, wo Optimierung ansetzt */
/*
** Definition der Datentypen fuer TYP-Feld von RO_WERT und RO_DED
*/
#define MAXTYPE 5 /* Max. Typeanzahl */
#define C 0 /* CHAR */
#define D 1 /* DATE */
#define N 2 /* NUMERIC CHAR */
#define L 3 /* LOGIC */
#define F 4 /* FIXED BIN */
#define E 5 /* FLOAT */
/* Datenelementbeschreiber fuer RO */
struct ro_ded
{
int byte; /* Spaltenbreite in Bytes */
char type; /* Typkennzeichen */
char ro_ded_frei[sizeof (int) - 1]; /* Einhaltung Wortausrichtung */
int prec; /* Anzahl der Dezimalstellen bei num. Spaltentypen */
int pos; /* Position der Spalte im seriellen File */
};
# ifndef _cded
# define _cded(pded, ty, by, pre) \
{ \
struct ro_ded *ded; \
ded = pded; \
ded->type = (char)ty; \
ded->byte = (int)by; \
ded->prec = (int)pre; \
}
# endif
/* Struktur zur Arbeit mit Werten */
#define RO_HWERT (sizeof(int) * 3) /* Laenge des Kopfes der Wertstruktur */
struct ro_wert{
int len; /* Laenge des Puffers in Byte */
char typ; /* Bearbeitungstyp der Spalten im Puffer */
char wfrei[sizeof (int) - 1];
int wprec; /* Anzahl der Dezimalstellen */
union{
char c[4];
long n;
float g;
char l; /* fuer Typ L (logisch) = 'T' oder = 'F' */
short s;
}
puffer; /* Zugriff auf n-Wert: i=wert.puffer.n[3] */
};
/* Spaltenbeschreibung fuer RO */
struct ro_spalte{
char t; /* Tupelvariable */
char name[9]; /* Spaltenname mit Blanks gefuellt */
struct ro_ded ded; /* Beschreibung der Spalte */
struct ro_ded charded; /* Beschreibung der Spalte im Zeichenkettenformat */
struct ro_wert *lowerb,*upperb; /* Grenzen fuer Spaltenwerte */
/* wenn Schluesselbaum: */
char *lowkey; /* logisch kleinster Schluessel */
char *highkey; /* logisch groesster Schluessel */
short *sortdescr; /* Sortierfeldbeschreibungen fuer */
/* max. 19 Spalten + Index (auch Sortierfeld) */
};
/* Informationen fuer Realisierung VIEW */
struct ro_view{
char viewspalten[RO_MAXZEILE]; /* Spaltenliste fuer Verkettung ueber Schluessel */
short vofflenliste[100]; /* -"- bei SFILE mit Schluessel */
int viewpol[100]; /* Pol. Not. fuer num. Ausdruck bei Verkettung ueber Index */
char nexttv; /* Tupelvariable fuer naechsten Dateibereich */
char viewzeichen[RO_MAXZEILE]; /* View in Zeichendarstellung ( Kommando nach TO) */
};
struct ro_filter{
char fcond[RO_MAXZEILE]; /* Filter in Zeichendarstellung */
int filterpol[100]; /* Filter in Pol. Notation */
};
/* Fuer jede eroeffnete Datei wird ein Dateibereich angelegt.
Dieser kann auch vom Nutzer gelesen werden. */
struct ro_dateibereich{
int lendateibereich;
long anzzeilen; /* Anzahl der zugewiesenen Zeilen einer TD */
long index; /* zuletzt benutzter Zeilenindex */
long indexalt; /* vorher benutzter Index */
char modus; /* Modus der Eroeffnung R, U, L */
char reln[5]; /* log. Relationsname */
/* SFI - einfaches seq. File mit Metadaten */
char filespec[RO_MAXFILSPEC]; /* phys. Name der TD */
int anzspalten; /* Anzahl der Spalten der TD */
struct ro_spalte *spalten; /* -> Liste aller Spalten der TD */
struct rb_keytree *aktschluessel;/* -> Schluesselbaum, ueber den der
augenblickliche Zugriff erfolgt */
char *wertaktschluessel; /* zuletzt benutzter Schluesselwert der
aktiven Schluesselspalte */
int lenfilepuffer;
char *filepuffer;
FILE *fp; /* Filepointer fuer OPEX-Verarbeitung */
int fd; /* Filedescriptor fuer SFILE */
int anfdaten; /* Byteoffset zum ersten Datensatz */
struct ro_spalte *markspalte; /* Datensaetze zum Loeschen markiert */
struct ro_filter *filter; /* zugeordnter Filter */
struct ro_view *view; /* Informationen ueber Dateiverkettung */
int found_flag; /* =1: FIND/LOCATE ergolgreich, =0: sonst */
/* fuer Funktion FOUND() */
int *lastlocatepol; /* Interndarst. der Bedingung aus LOCATE */
/* merken. Wird bei CONTINUE gebraucht */
int eof_flag; /* =1: EOF erreicht, =0: sonst */
char *indexliste; /* Indexliste fuer 'kyupdate' */
char *cur_indliste; /* Arbeitspointer fuer Indexliste */
struct rb_keytree *pkeytree; /* 1. eroeffneter Schluesselbaum */
char dfrei[8]; /* reserviert fuer die Zukunft */
};
/* Struktur mit allen Informationen fuer Schluesselbaumpflege */
struct rb_kyupdt{
int maxukeylen; /* laengster Schluesselbegriff -> malloc */
FILE *fpdel; /* Hilfdatei fuer DEL-Schluessel */
struct ro_spalte *upkey[20]; /* -> Schluesselspalten, die akt. werden muessen */
int *changeind; /* -> Indezes der veraenderten Zeilen */
char kfrei[40]; /* Reserve */
/* Puffer Hilfsdatei */
char keyname[4]; /* Name Schluesselbaum */
long delindex; /* Index fuer DEL-Schluessel */
char keypuffer[2]; /* Schl. entsp. malloc(sizeof(struct rb_kyupdt)+maxukeylen) */
};
/* Struktur fuer Metadatenbereich eines SFILE */
struct ro_fcontrol{
int fsatzlaenge; /* Laenge eines Datensatzes in Byte */
int fanzspalten; /* Anzahl der Spalten */
int fanfdaten; /* Offset zum ersten Datensatz */
int fanfwertetabellen; /* Offset zur ersten Wertetabelle */
int flenwertetabellen; /* Laenge aller Wertetabellen */
int fanzzeilen; /* Anzahl der Zeilen im SFILE */
char keypfile[10][RO_MAXFILSPEC]; /* Filespezifik. fuer 10 Schluesselbaeume */
struct ro_spalte keyspalte[10]; /* Spaltenbeschreiber fuer 10 SS */
char ffrei[20]; /* Reserve */
};
/* SET Funktionen fuer Relationale Operatoren */
struct ro_set{
int skyupdt; /* Schluesselbaumpflege ein/aus */
/* SET-Funktionen entsprechend dBASE III */
int alternate;
FILE *fpalternate; /* Filepointer fuer Alternatedatei */
int bell;
int carry;
char color[30]; /* Farbtafel in Zeichenkettenform */
int confirm;
int console;
int debug;
int decimals;
char sdefault[RO_MAXFILSPEC];
int deleted; /* 0 = Zeile nicht geloescht */
int sdelimiter; /* 1.Byte = linkes Begrenzungszeichen
2.Byte = rechtes Begrenzungszeichen
0 = Standard */
int device;
int echo;
int escape;
int exact;
/* aktueller FILTER wird im zugeordneten Dateibereich abgelegt */
int fixed;
FILE *format; /* Formatdatei fuer privaten Bildaufbau */
/* function --> wird sofort abgearbeitet */
int heading;
int help;
/* index --> wird sofort abgearbeitet */
int intensity;
int margin; /* Anzahl der eingerueckten Zeichen */
int menus;
/* path --> wird sofort abgearbeitet */
int print;
FILE *fpprint; /* Drucker wird auf Datei PRINT.TXT abgebildet */
char *procedure; /* Pointer auf Speicherbereich mit Kommandos */
/* relation --> wird sofort abgearbeitet */
int safety;
int graphic;
int step;
int talk;
int unique;
int century;
int set_frei[20]; /* for future use */
};
/* Zentrale Verarbeitungstabelle */
struct ro_zvt{
int rostat; /* Statuscode intern */
int roconv; /* Statuscode fuer Konvertierungsfehler */
char zident[30]; /* IDENT-Information und Schutzidentifikator */
char user[30]; /* Nutzeridentifikation */
struct ro_dateibereich *tt['Z'-'A'+1]; /* Adressen eroeffnete
Dateibereiche -- portabel angegeben ESER -> Luecken bleiben frei */
int *pstack; /* Stack fuer Auswertung von Ausdruecken */
int *ptop; /* Stackpointer fuer STACK */
int *ppolnot; /* Bereich fuer Ausdruck in Polnischer Notation */
int *ppoltop; /* Pointer fuer POLNOT */
/* globale Paramerter fuer Arbeit mit LEX */
char lext; /* Vorgabe der Tupelvariable fuer Spaltenname */
/* oder Uebergabe selektierter Dateibereich bei r_set */
struct ro_spalte *lexspalte; /* -> Spalte, die zuletzt von Lex erkannt wurde */
int lexlen; /* Laenge des zuletzt erkannten Symbols */
struct ro_set set;
char *error; /* Bereich fuer Fehlerinformationen */
int lenerror; /* Laenge des Bereiches */
int eofflag; /* Dateiende fuer Funktion EOF() merken */
int stopflag; /* bei >0 Kommandoabbruch */
/* Realisierung der formatierten E/A */
int getanz; /* Anzahl der zu realisierenden 'GETs' */
struct rd_stfeaget *firstget; /* ->: ersten 'GET'-Befehl */
struct rd_stfeaget *lastget; /* ->: letzten 'GET'-Befehl */
int fearow; /* aktuelle Display-Zeilennummer */
int feacol; /* aktuelle Display-Spaltennummer */
int term_init_flag; /* =1: Display initialisiert (sonst 0) */
int tql_menue; /* =1: Standardmenue aktiv */
int printf_anz; /* Anzahl der abgesetzten printf-Aufrufe */
int flagwhile; /* Flag fuer While */
int fea_intern; /* =1: Aufruf der fm-Moduln intern, 0: extern */
int zrecconv; /* =1: '$RECCONV' mittels _defd definiert, 0: sonst */
char ztbyte; /* Voruebersetzungsbyte bei Kommandos aus Programm */
/* -1 => Kommando konnte nicht uebersetzt werden */
/* QT_XXX => Num.Code des Schluesselwortes */
char *zskipfalse; /* Adr. des Kommandos, welches bei .FALSE. abzu-
arbeiten ist , zeigt auf den Vorsatz des Kdo. */
char *zskiptrue; /* Adr. des Kommandos, welches bei .TRUE. abzu-
arbeiten ist , zeigt auf den Vorsatz des Kdo. */
char *zpolsave; /* Adr. des POLNOT fuer das aktuelle Kdo. */
int simarkupdt; /* Anfangslaenge der Bitleiste in MARKUPDT fuer SFI */
int readmessage;/* =1: Fehlermeldung auf Bildschirm, =0: sonst */
char *memlevel[QC_MAXPGR]; /* Adr. der Hash-Tabellen fuer die Speicher-
variablen pro Programmebene */
char zidende[16]; /* Endemarkierung ***Ende ZVT*** fuer Test */
char zfrei[84]; /* Reserve fuer weitere Eintragungen */
};
/* GET-Struktur zur Realisierung der 'GET'-Funktion */
struct rd_stfeaget {
char gettyp; /* = 'M': Speichervariable (Memory) */
/* = 'S': Spaltenname */
char *getvar; /* Pointer auf Wertstruktur der SP-Variablen */
/* bzw. Pointer auf Spaltenstruktur */
int getbuflen; /* Laenge des Eingabepuffers */
int getoriglen; /* Laenge einer Spalte als String */
int getrow; /* Zeilennummer */
int getcol; /* Spaltennummer */
struct rd_stfeaget *flastget; /* vorhergehendes 'GET' */
struct rd_stfeaget *fnextget; /* nachfolgendes 'GET' */
short getrange; /* =1: Range angegeben, =0: sonst */
struct ro_wert *getlower; /* untere Grenze (Range) */
struct ro_wert *getupper; /* obere Grenze (Range) */
char getpic[81]; /* Picture (max. 80 Zeichen und '\0') */
char get_char[2]; /* Charakter-Darstellung von Zahlen */
/* bzw. Puffer fuer Spaltenwerte */
/* bzw. Puffer f. Picture-Aufbereitung*/
/* nach hinten laenger */
};
/* Strukturen zur Arbeit mit Memory */
# define RM_MEMLEN sizeof(struct rm_memtab)
struct rm_memtab
{
char mname[10]; /* Speichername */
short mlen; /* Laenge des groessten zugewiesenen Speicherwertes */
int moff; /* Offset d. Speicherwertes relativ zum Speicheranfang*/
int mprot; /* = 0, falls Speichervariable nicht geschuetzt
= Programmstufe, in der Speichervariable geschuetzt*/
};
struct rm_tabhead
{
char *zmemory; /* -> Speicher zur Abspeicherung der Speicherwerte */
int maxmemory; /* maximale Laenge des vorhandenen Speichers (Bytes) */
int lenmemory; /* Laenge des belegten Speicherplatzes (Bytes) */
int manz; /* Anzahl der in der Hash-Tabelle abgelegten Namen */
short maxanz; /* maximale Anzahl der ablegbaren Speichernamen */
};
/* Struktur fuer Metadaten eines Schluesselbaumes */
struct rb_keymeta {
char km_spalten[88]; /* einzelne Spaltennamen (+ 'END.') */
int km_spanz; /* Anzahl der einfliessenden Spalten */
int km_lenkey; /* Laenge eines Schluesselseintrages (mit Index) */
int km_anzkey; /* Anzahl der Schluesseleintraege */
};
#define KEYMETA sizeof(struct rb_keymeta)
/* Struktur fuer einen Schluesselbaum */
struct rb_keytree {
int kfd; /* Filedescriptor */
char kf_name[256]; /* vollstaendiger Filename */
char kspliste[88]; /* Spaltenliste fuer Schluesselbaum */
int kspanz; /* Anzahl der Spalten im Schluesselbaum */
int klenkey; /* Laenge eines Schluessels (mit Index) */
int kanzkey; /* Anzahl der Schluesseleintraege */
char *klowkey; /* logisch kleinster Schluessel */
char *khighkey; /* logisch groesster Schluessel */
short *ksortdescr; /* Sortierfeldbeschreibung */
int khsflag; /* =0: Filearbeit, =1: HS-Arbeit */
char *khsbuffer; /* Puffer fuer HS-Arbeit */
int klastoffset; /* letzter Offset im Schluesselbaum */
struct rb_keytree *knexttree; /* Verkettung */
char kfrei[16]; /* reserviert fuer die Zukunft */
};


View File

@ -0,0 +1,49 @@
/* IDENT: 010968 - SORDEF.H */
/*
** Autor: Buchert
*/
extern int uksort(); /* Compare Key by Type */
int sort_l = 256; /* Define maximum record length */
int sort_v = 0; /* Define variable record format */
int (*sort_c)() = uksort; /* Define default compare routine */
int sort_r = 0; /* Non-zero for reverse comparison */
int sort_n = 1; /* Default */
int *f_p = 0; /* Default */
/* Festlegungen fuer die einzelnen Feld-Typen */
/* #define D_Z 0 unspecified */
/* #define D_B 6 byte integer; 8-bit signed 2's-complement integer */
/* #define D_BU 2 byte logical; 8-bit unsigned quantity */
#define D_W 7 /* word integer; 16-bit signed 2's-complement integer */
/* #define D_WU 3 word logical; 16-bit unsigned quantity */
#define D_L 8 /* longword integer */
/*32-bit signed 2's-complement integer */
/* #define D_LU 4 longword logical; 32-bit unsigned quantity */
/* #define D_Q 9 quadword integer */
/* 64-bit signed 2's-complement integer */
/* #define D_QU 5 quadword logical; 64-bit unsigned quantity */
/* #define D_O 26 octaword integer */
/* 128-bit signed 2's-complement integer */
/* #define D_OU 25 octaword logical; 128-bit unsigned quantity */
#define D_F 10 /* F_floating */
/* 32-bit single-precision floating point */
#define D_D 11 /* D_floating */
/* 64-bit double-precision floating point */
/* #define D_G 27 G_floating */
/* 64-bit double-precision floating point */
/* #define D_H 28 H_floating */
/* 128-bit quadruple-precision floating point */
#define D_T 14 /* a single character or a string */
/* #define D_NU 15 numeric string, unsigned */
/* #define D_NL 16 numeric string, left separate sign */
/* #define D_NLO 17 numeric string, left overpunched sign */
/* #define D_NR 18 numeric string, right separate sign */
/* #define D_NRO 19 numeric string, right overpunched sign */
/* #define D_NZ 20 numeric string, zoned sign */
#define D_P 21 /* packed decimal string */
#define RECORD 0 /* RECORD-Sortierprozess */
#define TAG 1 /* TAG-Sortierprozess */

View File

@ -0,0 +1,61 @@
/* IDENT: 010487 - SOREXD.H */
/*
** Autor: Buchert
*/
/* Die Sortierfeldbeschreibungen sind in einem zusammenhaengenden Bereich
** in der Reihenfolge ihrer Anwendung abzulegen.
**
** Globale Symbole, die vom Nutzer der Sortierroutinen sorta() und sorto()
** vor dem ersten Aufruf von sorta() veraendert werden koennen.
** Andernfalls werden die im Kommentar angegebenen Werte verwendet.
*/
extern int uksort(); /* Compare Key by Type */
extern int sort_l; /* max. Laenge der zu sortierenden Saetze,
** 256 Bytes */
extern int sort_v; /* Eingabesatzformat, 0 - Zeichenketten */
extern int (*sort_c)(); /* Adr. der Vergleichsfunktion, &strcmp() */
extern char *sort_f; /* Name der Sortierarbeitsdatei, "sort.tmp" */
extern int sort_r; /* Sortierrichtung, aufsteigend - 0 */
extern int sort_n; /* Anzahl der uebergebenen Sortierfeldbeschrei-
** bungen, 0 */
extern int *f_p; /* Adr. der 1. Sortierfeldbeschreibung, NULL */
/* Festlegungen fuer die einzelnen Feld-Typen */
/* #define D_Z 0 unspecified */
/* #define D_B 6 byte integer; 8-bit signed 2's-complement integer */
/* #define D_BU 2 byte logical; 8-bit unsigned quantity */
#define D_W 7 /* word integer; 16-bit signed 2's-complement integer */
/* #define D_WU 3 word logical; 16-bit unsigned quantity */
#define D_L 8 /* longword integer */
/*32-bit signed 2's-complement integer */
/* #define D_LU 4 longword logical; 32-bit unsigned quantity */
/* #define D_Q 9 quadword integer */
/* 64-bit signed 2's-complement integer */
/* #define D_QU 5 /* quadword logical; 64-bit unsigned quantity */
/* #define D_O 26 octaword integer */
/* 128-bit signed 2's-complement integer */
/* #define D_OU 25 octaword logical; 128-bit unsigned quantity */
#define D_F 10 /* F_floating */
/* 32-bit single-precision floating point */
#define D_D 11 /* D_floating */
/* 64-bit double-precision floating point */
/* #define D_G 27 G_floating */
/* 64-bit double-precision floating point */
/* #define D_H 28 H_floating */
/* 128-bit quadruple-precision floating point */
#define D_T 14 /* a single character or a string */
/* #define D_NU 15 numeric string, unsigned */
/* #define D_NL 16 numeric string, left separate sign */
/* #define D_NLO 17 numeric string, left overpunched sign */
/* #define D_NR 18 numeric string, right separate sign */
/* #define D_NRO 19 numeric string, right overpunched sign */
/* #define D_NZ 20 numeric string, zoned sign */
#define D_P 21 /* packed decimal string */
#define RECORD 0 /* RECORD-Sortierprozess */
#define TAG 1 /* TAG-Sortierprozess */

View File

@ -0,0 +1,56 @@
/***
*sys\stat.h - defines structure used by stat() and fstat()
*
* Copyright (c) 1985-1987, Microsoft Corporation. All rights reserved.
*
*Purpose:
* This file defines the structure used by the stat() and fstat()
* routines.
* [System V]
*
*******************************************************************************/
#ifndef NO_EXT_KEYS /* extensions enabled */
#define CDECL cdecl
#else /* extensions not enabled */
#define CDECL
#endif /* NO_EXT_KEYS */
#ifndef _TIME_T_DEFINED
typedef long time_t;
#define _TIME_T_DEFINED
#endif
/* define structure for returning status information */
#ifndef _STAT_DEFINED
struct stat {
dev_t st_dev;
ino_t st_ino;
unsigned short st_mode;
short st_nlink;
short st_uid;
short st_gid;
dev_t st_rdev;
off_t st_size;
time_t st_atime;
time_t st_mtime;
time_t st_ctime;
};
#define _STAT_DEFINED
#endif
#define S_IFMT 0170000 /* file type mask */
#define S_IFDIR 0040000 /* directory */
#define S_IFCHR 0020000 /* character special */
#define S_IFREG 0100000 /* regular */
#define S_IREAD 0000400 /* read permission, owner */
#define S_IWRITE 0000200 /* write permission, owner */
#define S_IEXEC 0000100 /* execute/search permission, owner */
/* function prototypes */
int CDECL fstat(int, struct stat *);
int CDECL stat(char *, struct stat *);

View File

@ -0,0 +1,71 @@
/*$$+ TERMDE.h +$$*/
/* IDENT: 010387 - TERMDE.h */
/* Design: Buchert */
/******************************************************************************
*
* TERMDE.h
*
* include-File zur Beschreibung des verwendeten Terminals
*
* #define <terminaltyp> 1 ==> dieser Terminaltyp wird verwendet,
* sonst wird '0' zugeordnet
*
*****************************************************************************/
/* Die #define-Anweisung fuer das entsprechende Terminal ist zu aktivieren */
#define VT_200_V 1 /* SMG-Routinen anwendbar */
/* #define VT_100 0 */ /* Terminals der VT-Familie */
/* #define T_7920 1 */ /* ESER-Terminal 7920 */
#define TERMCOLS 80 /* Anzahl der Spalten */
#define TERMROWS 24 /* Anzahl der Zeilen */
#define FIRSTROW 1 /* Nummer der 1. Zeile */
#define FIRSTCOL 1 /* Nummer der 1. Spalte */
/* Definitionen der moeglichen Eingabe-Terminatoren ***/
#define TRM_CR 1 /* zum naechsten Eingabe-Feld */
#define TRM_DOWN_CUR 2 /* zum naechsten Eingabe-Feld */
#define TRM_UP_CUR 3 /* zum vorhergehenden Eingabe-Feld */
#define TRM_ENTER 4 /* fuer EDIT: zum naechsten Satz */
#define TRM_CTRLE 7 /* Ende aller Eingaben */
#define TRM_PRESC 9 /* vorhergehender Bildschirminhalt */
#define TRM_NEXSC 10 /* Uebergang zum naechsten Bildschirm */
/* weitere Eingabe-Terminatoren */
#define TRM_ACTRL 5
#define TRM_DCTRL 6
#define TRM_ICTRL 8
#define TRM_UCTRL 11 /* Loeschen des aktuellen Eingabe-Feldes */
#define TRM_WCTRL 12 /* Refresh Display */
#define TRM_KCTRL 13 /* Eingabefeld verlassen ohne Pruefung */
/* Video-Attribute ************************************/
#define VIDEO_REVERSE 2
/* Fehlercodes ****************************************/
#define FMERRSC 63 /* Fehler bei Setzen des Cursors */
#define FMERRIN 64 /* Fehler bei Eingabe */
#define FMERROU 65 /* Fehler bei Ausgabe */
#define FMERRCL 66 /* Fehler bei CLEAR */
#define FMERRCR 67 /* Fehler bei Initialisierung (Create) */
#define FMNOINI 68 /* Terminal nicht fuer Full-SCR initialisiert */
#define NOGETS 103 /* Keine GET-Variablen im READ-Zugriff */
/* UEBERTRAG AUS ROERR.H (UM NICHT NOCH #include "ROERR.H" zu machen */
#define TERMBUF 6 /* Terminalpuffer ist zu klein */
#define NOMEMORY 14 /* malloc kann keinen weiteren Speicherplatz zuordnen */
#define OFPOLNOT 15 /* Bereich fuer Interndarstellung von Ausdruecken ist voll */
#define NOCOND 17 /* ungueltige Bedingung */
#define NOINIT 22 /* kein INIT-Operator abgearbeitet oder falsche ZVT-Adresse angegeben */
#define EFOPEN 28 /* Fehler beim Eroeffnen eines seriellen Files */
#define GETINDEX 33 /* kein Ausgabe-Index gefunden */
#define EKYUPDT 42 /* Fehler bei Aktualisierung Schluesselbaum */
#define NOMEMNAME 45 /* Speichername nicht gefunden */

View File

@ -0,0 +1,9 @@
/*
** TQLFUNC.H
** Deklaration der benutzen Funktionen
**
** 12.04.89 v.Treek
*/
int qa_acc (struct q_tql *tql, char **ptr);
char *gu_mal (int size);

View File

@ -0,0 +1,20 @@
/*
** Includefile zur Steuerung systemabhaengiger Teile in den TQL-Quellen
**
** Es koennen folgende Symbole definiert werden, die in den TQL-Quellen
** genutzt werden:
**
** # define SUNIX 1 = fuer UNIX-System
** # define SPSU 1 = fuer PSU-Besonderheiten
** # define SSVP 1 = fuer SVP 1800-Besonderheiten
** # define SDCP 1 = fuer DCP-Besonderheiten
**
** # define SFSTAT 1 = fstat() ist vorhanden
**
** v. Treek 19.04.89
*/
# define TQLSYS 1 /* Includefile-Kenner */
# define SDCP 1 /* DCP */
# define SFSTAT 1 /* fstat() ist vorhanden */


View File

@ -0,0 +1,36 @@
# include <descrip.h>
#define D_Z DSC$K_DTYPE_Z /* unspecified */
#define D_B DSC$K_DTYPE_B /* byte integer; 8-bit signed 2's-complement integer */
#define D_BU DSC$K_DTYPE_BU /* byte logical; 8-bit unsigned quantity */
#define D_W DSC$K_DTYPE_W /* word integer; 16-bit signed 2's-complement integer */
#define D_WU DSC$K_DTYPE_WU /* word logical; 16-bit unsigned quantity */
#define D_L DSC$K_DTYPE_L /* longword integer; 32-bit signed 2's-complement integer */
#define D_LU DSC$K_DTYPE_LU /* longword logical; 32-bit unsigned quantity */
#define D_Q DSC$K_DTYPE_Q /* quadword integer; 64-bit signed 2's-complement integer */
#define D_QU DSC$K_DTYPE_QU /* quadword logical; 64-bit unsigned quantity */
#define D_O DSC$K_DTYPE_O /* octaword integer; 128-bit signed 2's-complement integer */
#define D_OU DSC$K_DTYPE_OU /* octaword logical; 128-bit unsigned quantity */
#define D_F DSC$K_DTYPE_F /* F_floating; 32-bit single-precision floating point */
#define D_D DSC$K_DTYPE_D /* D_floating; 64-bit double-precision floating point */
#define D_G DSC$K_DTYPE_G /* G_floating; 64-bit double-precision floating point */
#define D_H DSC$K_DTYPE_H /* H_floating; 128-bit quadruple-precision floating point */
#define D_T DSC$K_DTYPE_T /* character-coded text; a single character or a string */
#define D_NU DSC$K_DTYPE_NU /* numeric string, unsigned */
#define D_NL DSC$K_DTYPE_NL /* numeric string, left separate sign */
#define D_NLO DSC$K_DTYPE_NLO /* numeric string, left overpunched sign */
#define D_NR DSC$K_DTYPE_NR /* numeric string, right separate sign */
#define D_NRO DSC$K_DTYPE_NRO /* numeric string, right overpunched sign */
#define D_NZ DSC$K_DTYPE_NZ /* numeric string, zoned sign */
#define D_P DSC$K_DTYPE_P /* packed decimal string */
#define RECORD 0 /* RECORD-Sortierprozess */
#define TAG 1 /* TAG-Sortierprozess */
struct sort_field /* Sortierfeldaufbau System-Sort */
{
short s_typ; /* Sortiertyp */
short s_order; /* Sortierrichtung */
short s_offset; /* Offset im Sort-Feld */
short s_len; /* Laenge Sort-Kompon. */
};