/*
$VER: MT-RechnungII 2.27 (01.11.95)
 ******************************************************************/
/*	Rechnungsprogramm fr meine Bild- und Videobearbeitungsfirma	*/
/*								MT Graphic & Design								*/
/******************************************************************/
/*	Autor:					Manfred Tremmel									*/
/*	Programmiersprache:	ARexx													*/
/******************************************************************/

IF(~show('l','rexxsupport.library')) THEN
	CALL addlib('rexxsupport.library',0,-30,0);
IF(~show('l','apig.library')) THEN
	CALL addlib('apig.library',0,-30,0);
IF(~show('l','rexxreqtools.library')) THEN
	CALL addlib('rexxreqtools.library',0,-30,0);
CALL SET_APIG_GLOBALS();

i = allocmem(346); 
x = getscreendata(i,346,WBENCHSCREEN,0);
SCREEN_X	= GETVALUE(i,68,2,'n');
SCREEN_Y	= GETVALUE(i,70,2,'n');
Font_X	= GETVALUE(i,145,1,'n');
Font_Y	= GETVALUE(i,143,1,'n');
call freemem(i,346);

i = allocmem(232);
x = getprefs(i,232);
B_laenge = GETVALUE(i,178,2,'n');
call freemem(i,232);

winidcmp	= GADGETUP+VANILLAKEY+CLOSEWINDOW;
winflags	= ACTIVATE+RMBTRAP+WINDOWCLOSE+WINDOWDRAG+GIMMEZEROZERO+WINDOWDEPTH;

wintitle	= "MT-Rechnung";
Win_X1	= 29 * Font_X;
Win_Y1	= 18 * Font_Y;

wintitle2	= "MT-Rechnung - Rechnung erstellen";
Win_X2	= 80 * Font_X;
Win_Y2	= 35 * Font_Y;
IF SCREEN_Y < Win_Y2 THEN
	do; 
		Win_Y2	= 32 * Font_Y;
		I_max		= 11;
	end;
ELSE
	I_max		= 13;

wintitle3	= "MT-Rechnung - Drucken";
Win_X3	= 45 * Font_X;
Win_Y3	= Win_Y1;

wintitle4	= "MT-Rechnung - Adressen verwalten";
Win_X4	= Win_X2;
Win_Y4	= 32 * Font_Y;

wintitle5	= "MT-Rechnung - Artikel verwalten";
Win_X5	= Win_X2;
Win_Y5	= 14 * Font_Y;

wintitle6	= "MT-Rechnung - Prefs";
Win_X6	= 23 * Font_X;
Win_Y6	= 19 * Font_Y;

LF = '0a'x;
FF = '0c'x;
CR = '0d'x;

ReqCent = "rt_reqpos=reqpos_centerscr";

IF SCREEN_X < Win_X2 | SCREEN_Y < Win_Y2 THEN
	rtezrequest("Workbench Screen mu mindestens" LF ||,
		Win_X2  "x" Win_Y2 "Bildpunkte gro sein!",,,ReqCent);
ELSE
	DO;
		datum = UP_Datum();							/* Ermittlung des Datums*/
		CALL UP_Kund_lesen;							/* Einlesen der Kunden	*/
		CALL UP_Artikel_lesen;						/* Einlesen der Artikel	*/
		CALL UP_Rechnung_lesen;						/* Einlesen der Rechn.	*/
		CALL UP_Prefs_lesen;							/* Einlesen der Prefs	*/

		call DefineGads1;
		DefGads2 = 0;
		DefGads3 = 0;
		DefGads4 = 0;
		DefGads5 = 0;
		DefGads6 = 0;

		portname = "MT_Rechnung";
		p = openport(portname);

		WaitForPort portname;
		w1		= OPENWINDOW(portname,(Screen_X-Win_X1)/2,(Screen_Y-Win_Y1)/2,Win_X1,Win_Y1,0,1,winidcmp,winflags,
					,wintitle,scr,0,null(),null(),conxgad);
		rpw1	= GETWINDOWRASTPORT(w1);
 
		call GT_REFRESHWINDOW(w1,null());
		extime	= 0;
		apen		= 1;
		DO WHILE extime = 0;
			x	= waitpkt(portname);
			DO FOREVER;
				msg		= getpkt(portname);
				IF msg	= '0000 0000'x THEN LEAVE;
				msgclass	= getarg(msg,0);
				msgcode	= getarg(msg,1);
				msgid		= getarg(msg,9);
				x			= reply(msg,0);
				SELECT
					WHEN msgid = 10 | msgcode = 65 | msgcode = 97 THEN
						CALL UP_Adressen;
					WHEN msgid = 12 | msgcode = 84 | msgcode = 116 THEN
						CALL UP_Artikel;
					WHEN msgid = 13 | msgcode = 82 | msgcode = 114 THEN
						CALL UP_Rechnung;
					WHEN msgid = 14 | msgcode = 68 | msgcode = 100 THEN
						CALL UP_Drucken;
					WHEN msgid = 15 | msgcode = 80 | msgcode = 112 THEN
						CALL UP_Prefs;
					WHEN msgid = 17 | msgclass = CLOSEWINDOW | msgcode = 69 | msgcode = 101 | msgcode = 27 THEN
						extime = rtezrequest("Programm wirklich beenden?","Ende|Weitermachen",,ReqCent);
					OTHERWISE
						NOP;
				END;
			END;
		END;
		CALL CLOSEWINDOW(w1);

		CALL FREEGADGETS(conxgad);
		CALL FREETHIS(newgadx);
		CALL FREEVEC(GPoint);
		IF DefGads2 > 0 THEN
			DO;
				IF DefGads2	> 1 THEN
					CALL UP_Rechnung_schreiben;
				CALL FREEGADGETS(conxgad2);
				CALL FREETHIS(newgadx2);
				CALL FREEVEC(GPoint2);
			END;
		IF DefGads3 > 0 THEN
			DO;
				CALL FREEGADGETS(conxgad3);
				CALL FREETHIS(newgadx3);
				CALL FREEVEC(GPoint3);
				Call FREETHIS(mylabels);
			END;
		IF DefGads4 > 0 THEN
			DO;
				IF DefGads4	> 1 THEN
					CALL UP_Kund_schreiben;
				CALL FREEGADGETS(conxgad4);
				CALL FREETHIS(newgadx4);
				CALL FREEVEC(GPoint4);
				CALL FREETHIS(Kundlabels);
			END;
		IF DefGads5 > 0 THEN
			DO;
				IF DefGads5	> 1 THEN
					CALL UP_Artikel_schreiben;
				CALL FREEGADGETS(conxgad5);
				CALL FREETHIS(newgadx5);
				CALL FREEVEC(GPoint5);
			END;
		IF DefGads6 > 0 THEN
			DO;
				IF DefGads6 > 1 THEN
					CALL UP_Prefs_schreiben;
				CALL FREEGADGETS(conxgad6);
				CALL FREETHIS(newgadx6);
				CALL FREEVEC(GPoint6);
			END;

		CALL FREEVISUALINFO(scrvinfo);
		CALL UNLOCKPUBSCREEN(null(),scr);
	END;
CALL remlib('rexxreqtools.library');
CALL remlib('apig.library');
CALL remlib('rexxsupport.library');
address COMMAND 'avail >NIL: flush'
EXIT;

/* Unterprogramm zum Einlesen der Einstellungen (Prefs.dat)			*/
UP_Prefs_lesen:
	Prefs_datei	= "Prefs.dat";
	IF OPEN(P_dat,Prefs_datei,'read') THEN
		DO;
			MWSt_Satz.1 = READLN(P_dat);
			MWSt_Satz.2 = READLN(P_dat);
			Druckdatei	= READLN(P_dat);
			Druckport	= READLN(P_dat);
			D_XAbst		= READLN(P_dat);
			D_YAbst		= READLN(P_dat);
			CLOSE(P_dat);
		END;
	ELSE
		DO;
			MWSt_Satz.1	= 15.0;
			MWSt_Satz.2 = 7.0;
			Druckdatei	= "Drucker/PrefPrinter";
			Druckport	= "PRT:";
			D_XAbst		= 1;
			D_YAbst		= 1;
		END;
	Call UP_Druckdaten_lesen;
	MWSt_Rech.1 = MWSt_Satz.1 / (100 + MWSt_Satz.1);
	MWSt_Rech.2 = MWSt_Satz.2 / (100 + MWSt_Satz.2);
	MWSt_Rech.3 = 0;
RETURN;

/* Unterprogramm zum Schreiben der Einstellungen (Prefs)				*/
UP_Prefs_schreiben:
	IF OPEN(P_dat,Prefs_datei,'write') THEN
		DO;
			Schr_Text = MWSt_Satz.1||LF||MWSt_Satz.2||LF||Druckdatei||LF||Druckport||LF||D_XAbst||LF||D_YAbst||LF;
			WRITECH(P_dat,Schr_Text);
			CLOSE(P_dat);
		END;
RETURN;

/* Unterprogramm zum Einlesen Druckerspezifischer Werte				*/
UP_Druckdaten_lesen:
	IF OPEN(D_dat,Druckdatei,'read') THEN
		DO;
			D_Z_kl	= READLN(D_dat);
			D_Z_gr	= READLN(D_dat);
			D_Schr	= READLN(D_dat);
			D_SStand	= READLN(D_dat);
			D_SGross	= READLN(D_dat);
			D_SKlein	= READLN(D_dat);
			D_Br10	= READLN(D_dat);
			D_Br12	= READLN(D_dat);
			D_Br15	= READLN(D_dat);
			D_PEin	= READLN(D_dat);
			D_PAus	= READLN(D_dat);
			D_UEin	= READLN(D_dat);
			D_UAus	= READLN(D_dat);
			D_KEin	= READLN(D_dat);
			D_KAus	= READLN(D_dat);
			D_FEin	= READLN(D_dat);
			D_FAus	= READLN(D_dat);
			D_ZNorm	= READLN(D_dat);
			D_ZZAbst	= READLN(D_dat);
			D_CSchw	= READLN(D_dat);
			D_CMag	= READLN(D_dat);
			D_CZyan	= READLN(D_dat);
			D_CViol	= READLN(D_dat);
			D_CGelb	= READLN(D_dat);
			D_CRot	= READLN(D_dat);
			D_CGruen	= READLN(D_dat);
			D_Rueck	= READLN(D_dat);
			D_Ende	= READLN(D_dat);
			CLOSE(D_dat);
		END;
RETURN;

/* Unterprogramm zum Einlesen der Kundenliste (Kunden.dat)			*/
UP_Kund_lesen:
	K_datei	= "Kunden.dat";
	K_max		= 0;
	IF OPEN(K_dat,K_datei,'read') THEN
		DO;
			FI_VorName	= READLN(K_dat);
			FI_Name		= READLN(K_dat);
			FI_Strasse	= READLN(K_dat);
			FI_PLZ		= READLN(K_dat);
			FI_ORT		= READLN(K_dat);
			FI_Land		= READLN(K_dat);
			FI_GebTag	= READLN(K_dat);
			FI_Rabatt	= READLN(K_dat);
			FI_Tel		= READLN(K_dat);
			FI_Fax		= READLN(K_dat);
			FI_Dfue		= READLN(K_dat);
			FI_EMail1	= READLN(K_dat);
			FI_EMail2	= READLN(K_dat);
			FI_EMail3	= READLN(K_dat);
			FI_Anrede	= READLN(K_dat);
			FI_BAnr		= READLN(K_dat);
			FI_Komm		= READLN(K_dat);
			FI_BLZ		= READLN(K_dat);
			FI_BankBez	= READLN(K_dat);
			FI_BankKurz	= READLN(K_dat);
			FI_Konto		= READLN(K_dat);
			DO forever;
				K_max  = K_max + 1;
				i = right(("000000" || K_max),6);
				KD_VorName.i  = READLN(K_dat);
				IF EOF(K_dat) THEN LEAVE;
				KD_Name.i		= READLN(K_dat);
				KD_Strasse.i	= READLN(K_dat);
				KD_PLZ.i			= READLN(K_dat);
				KD_ORT.i			= READLN(K_dat);
				KD_Land.i		= READLN(K_dat);
				KD_GebTag.i		= READLN(K_dat);
				KD_Rabatt.i		= READLN(K_dat);
				KD_Tel.i			= READLN(K_dat);
				KD_Fax.i			= READLN(K_dat);
				KD_Dfue.i		= READLN(K_dat);
				KD_EMail1.i		= READLN(K_dat);
				KD_EMail2.i		= READLN(K_dat);
				KD_EMail3.i		= READLN(K_dat);
				KD_Anrede.i		= READLN(K_dat);
				KD_BAnr.i		= READLN(K_dat);
				KD_Komm.i		= READLN(K_dat);
				KD_BLZ.i			= READLN(K_dat);
				KD_BankBez.i	= READLN(K_dat);
				KD_BankKurz.i	= READLN(K_dat);
				KD_Konto.i		= READLN(K_dat);
			END;
			CLOSE(K_dat);
		END;
	ELSE
		K_max  = 1;
	CALL UP_K_max_init;
RETURN;

UP_K_max_init:
	i = right(("000000" || K_max),6);
	K_max = i;
	KD_VorName.i	= "";
	KD_Name.i		= "";
	KD_Strasse.i	= "";
	KD_PLZ.i			= "";
	KD_ORT.i			= "";
	KD_Land.i		= "";
	KD_GebTag.i		= "";
	KD_Rabatt.i		= "";
	KD_Tel.i			= "";
	KD_Fax.i			= "";
	KD_Dfue.i		= "";
	KD_EMail1.i		= "";
	KD_EMail2.i		= "";
	KD_EMail3.i		= "";
	KD_Anrede.i		= "";
	KD_BAnr.i		= "";
	KD_Komm.i		= "";
	KD_BLZ.i			= "";
	KD_BankBez.i	= "";
	KD_BankKurz.i	= "";
	KD_Konto.i		= "";
RETURN;

/* Unterprogramm zum schreiben der Kundenliste (Kunden.dat)			*/
UP_Kund_schreiben:
	IF OPEN(K_dat,K_datei,'write') THEN
		DO;
			Schr_Text = FI_VorName||LF||FI_Name||LF||FI_Strasse||LF||FI_PLZ||LF||FI_Ort||LF||FI_Land||LF||FI_GebTag||LF||FI_Rabatt||LF||FI_Tel||LF;
			Schr_Text = Schr_Text||FI_Fax||LF||FI_Dfue||LF||FI_EMail1||LF||FI_EMail2||LF||FI_EMail3||LF||FI_Anrede||LF||FI_BAnr||LF||FI_Komm||LF;
			Schr_Text = Schr_Text||FI_BLZ||LF||FI_BankBez||LF||FI_BankKurz||LF||FI_Konto||LF;
			WRITECH(K_dat,Schr_Text);
			DO k = 1 to (K_max - 1);
				i = right(("000000" || k),6);
				Schr_Text = KD_VorName.i||LF||KD_Name.i||LF||KD_Strasse.i||LF||KD_PLZ.i||LF||KD_Ort.i||LF||KD_Land.i||LF||KD_GebTag.i||LF;
				Schr_Text = Schr_Text||KD_Rabatt.i||LF||KD_Tel.i||LF||KD_Fax.i||LF||KD_Dfue.i||LF||KD_EMail1.i||LF||KD_EMail2.i||LF||KD_EMail3.i||LF;
				Schr_Text = Schr_Text||KD_Anrede.i||LF||KD_BAnr.i||LF||KD_Komm.i||LF||KD_BLZ.i||LF||KD_BankBez.i||LF||KD_BankKurz.i||LF||KD_Konto.i||LF;
				WRITECH(K_dat,Schr_Text);
			END;
			CLOSE(K_dat);
		END;
RETURN;

/* Unterprogramm zum Einlesen der Artikelliste (Artikel.dat)		*/
UP_Artikel_lesen:
	A_datei	= "Artikel.dat"
	A_max		= 0;
	IF OPEN(A_dat,A_datei,'read') THEN
		DO forever;
			A_max				= A_max + 1;
			i					= right(("000000" || A_max),6);
			AR_ArtBez.i		= READLN(A_dat);
			IF EOF(A_dat) THEN LEAVE;
			AR_ArtPreis.i	= READLN(A_dat);
			AR_ArtBuch.i	= READLN(A_dat);
			AR_ArtMWST.i	= READLN(A_dat);
		END;
	ELSE
		A_max  = 1;
	CLOSE(A_dat);
	CALL UP_A_max_init;
RETURN;

UP_A_max_init:
	i = right(("000000" || A_max),6);
	A_max		= i;
	AR_ArtBez.i		= "";
	AR_ArtPreis.i	= "";
	AR_ArtBuch.i	= "";
	AR_ArtMWST.i	= "";
Return;

/* Unterprogramm zum schreiben der Artikelliste (Artikel.dat)       */
UP_Artikel_schreiben:
	IF OPEN(A_dat,A_datei,'write') THEN
		DO k = 1 to (A_max - 1);
			i = right(("000000" || k),6);
			Schr_Text = AR_ArtBez.i ||LF|| AR_ArtPreis.i ||LF|| AR_ArtBuch.i ||LF|| AR_ArtMWSt.i ||LF;
			WRITECH(A_dat,Schr_Text);
		END;
	CLOSE(A_dat);
RETURN;

/* Unterprogramm zum Einlesen der Rechnungsliste (Rechnung.dat)		*/
UP_Rechnung_lesen:
	R_datei	= "Rechnung.dat"
	R_max		= 0;
	IF OPEN(R_dat,R_datei,'read') THEN
		DO forever;
			R_max				= R_max + 1;
			i					= right(("000000" || R_max),6);
			RE_Kunde.i		= READLN(R_dat);
			IF EOF(R_dat) THEN LEAVE;
			RE_Datum.i		= READLN(R_dat);
			DO j = 1 to 13;
				RE_Art.j.i	= READLN(R_dat);
				RE_Anz.j.i	= READLN(R_dat);
			END;
			RE_Mahnung.i	= READLN(R_dat);
		END;
	ELSE
		R_max	= 1;
	CLOSE(R_dat);
	CALL UP_Rech_Max_init;
RETURN;

UP_Rech_Max_init:
	i = right(("000000" || R_max),6);
	R_max	= i;
	RE_Kunde.i		= "";
	RE_Datum.i		= datum;
	DO j = 1 to 13;
		RE_Art.j.i	= "";
		RE_Anz.j.i	= "";
	END;
	RE_Mahnung.i	= "";
RETURN

/* Unterprogramm zum schreiben der Rechnungsliste (Rechnung.dat)		*/
UP_Rechnung_schreiben:
	IF OPEN(R_dat,R_datei,'write') THEN
		DO k = 1 to (R_max - 1);
			i = right(("000000" || k),6);
			Schr_Text = RE_Kunde.i||LF||RE_Datum.i||LF;
			DO j = 1 to 13;
				Schr_Text = Schr_Text||RE_Art.j.i||LF||RE_Anz.j.i||LF;
			END;
			Schr_Text = Schr_Text||RE_Mahnung.i||LF;
			WRITECH(R_dat,Schr_Text);
		END;
	CLOSE(R_dat);
RETURN;

DefineGads1:
	scr		= LOCKPUBSCREEN("Workbench");
	scrvinfo	= GETVISUALINFO(scr);
	scrfont	= GETVALUE(scr,40,4,'p');
	GPoint	= ALLOCVEC(4,MEMF_CLEAR);
	conxgad	= CREATECONTEXT(GPoint);
	PreGad 	= conxgad;

	newgadx	= MAKENEWGADGET(scrvinfo,scrfont,Font_X,Font_Y,26*Font_X,1.5*Font_Y,"Adressverwaltung",PLACETEXT_IN,10,null());
	PreGad	= CREATEGADGET(BUTTON_KIND,PreGad,newgadx,TAG_DONE,0);

	call SETNEWGADGET(newgadx,scrvinfo,scrfont,Font_X,3*Font_Y,26*Font_X,1.5*Font_Y,"Artikelverwaltung",PLACETEXT_IN,12,null());
	PreGad	= CREATEGADGET(BUTTON_KIND,PreGad,newgadx,TAG_DONE,0);

	call SETNEWGADGET(newgadx,scrvinfo,scrfont,Font_X,5*Font_Y,26*Font_X,1.5*Font_Y,"Rechnungsverwaltung",PLACETEXT_IN,13,null());
	PreGad	= CREATEGADGET(BUTTON_KIND,PreGad,newgadx,TAG_DONE,0);

	call SETNEWGADGET(newgadx,scrvinfo,scrfont,Font_X,7*Font_Y,26*Font_X,1.5*Font_Y,"Drucken",PLACETEXT_IN,14,null());
	PreGad	= CREATEGADGET(BUTTON_KIND,PreGad,newgadx,TAG_DONE,0);

	call SETNEWGADGET(newgadx,scrvinfo,scrfont,Font_X,9*Font_Y,26*Font_X,1.5*Font_Y,"Prefs",PLACETEXT_IN,15,null());
	PreGad	= CREATEGADGET(BUTTON_KIND,PreGad,newgadx,TAG_DONE,0);

	call SETNEWGADGET(newgadx,scrvinfo,scrfont,7*Font_X,14*Font_Y,15*Font_X,1.5*Font_Y,"Ende",PLACETEXT_IN,17,null());
	PreGad	= CREATEGADGET(BUTTON_KIND,PreGad,newgadx,TAG_DONE,0);
RETURN;

DefineGads2:
	GPoint2	= ALLOCVEC(4,MEMF_CLEAR);
	conxgad2	= CREATECONTEXT(GPoint2);
	PreGad2	= conxgad2;

	newgadx2	= MAKENEWGADGET(scrvinfo,scrfont,Font_X,Font_Y,2*Font_X,1.5*Font_Y,"K",PLACETEXT_IN,10,null());
	PreGad2	= CREATEGADGET(BUTTON_KIND,PreGad2,newgadx2,TAG_DONE,0);

	call SETNEWGADGET(newgadx2,scrvinfo,scrfont,14*Font_X,Font_Y,10*Font_X,1.5*Font_Y,"Kundennr:",PLACETEXT_LEFT,11,null());
	PreGad2	= CREATEGADGET(STRING_KIND,PreGad2,newgadx2,GTST_MAXCHARS,6,TAG_DONE,0);

	call SETNEWGADGET(newgadx2,scrvinfo,scrfont,35*Font_X,Font_Y,18*Font_X,1.5*Font_Y,"Vorname:",PLACETEXT_LEFT,12,null());
	PreGad2	= CREATEGADGET(STRING_KIND,PreGad2,newgadx2,GTST_MAXCHARS,25,TAG_DONE,0);

	call SETNEWGADGET(newgadx2,scrvinfo,scrfont,60*Font_X,Font_Y,18*Font_X,1.5*Font_Y,"Name:",PLACETEXT_LEFT,13,null());
	PreGad2	= CREATEGADGET(STRING_KIND,PreGad2,newgadx2,GTST_MAXCHARS,25,TAG_DONE,0);

	call SETNEWGADGET(newgadx2,scrvinfo,scrfont,7*Font_X,3*Font_Y,7*Font_X,1.5*Font_Y,"PLZ:",PLACETEXT_LEFT,14,null());
	PreGad2	= CREATEGADGET(TEXT_KIND,PreGad2,newgadx2,GTTX_BORDER,1,TAG_DONE,0);

	call SETNEWGADGET(newgadx2,scrvinfo,scrfont,21*Font_X,3*Font_Y,24*Font_X,1.5*Font_Y,"Ort:",PLACETEXT_LEFT,15,null());
	PreGad2	= CREATEGADGET(TEXT_KIND,PreGad2,newgadx2,GTTX_BORDER,1,TAG_DONE,0);

	call SETNEWGADGET(newgadx2,scrvinfo,scrfont,54*Font_X,3*Font_Y,24*Font_X,1.5*Font_Y,"Strae:",PLACETEXT_LEFT,16,null());
	PreGad2	= CREATEGADGET(TEXT_KIND,PreGad2,newgadx2,GTTX_BORDER,1,TAG_DONE,0);

	DO I = 1 TO I_max;
		CALL SETNEWGADGET(newgadx2,scrvinfo,scrfont,1.5*Font_X,(1.7*i+4)*Font_Y,2*Font_X,1.5*Font_Y,"A",PLACETEXT_IN,10+(10*i),null());
		PreGad2	= CREATEGADGET(BUTTON_KIND,PreGad2,newgadx2,TAG_DONE,0);

		call SETNEWGADGET(newgadx2,scrvinfo,scrfont,5*Font_X,(1.7*i+4)*Font_Y,9*Font_X,1.5*Font_Y,"",PLACETEXT_LEFT,10+(10*i+1),null());
		PreGad2	= CREATEGADGET(STRING_KIND,PreGad2,newgadx2,GTST_MAXCHARS,6,TAG_DONE,0);

		call SETNEWGADGET(newgadx2,scrvinfo,scrfont,14.5*Font_X,(1.7*i+4)*Font_Y,7.4*Font_X,1.5*Font_Y,"",PLACETEXT_LEFT,10+(10*i+2),null());
		PreGad2	= CREATEGADGET(STRING_KIND,PreGad2,newgadx2,GTST_MAXCHARS,10,TAG_DONE,0);

		call SETNEWGADGET(newgadx2,scrvinfo,scrfont,22*Font_X,(1.7*i+4)*Font_Y,31.5*Font_X,1.5*Font_Y,"",PLACETEXT_LEFT,10+(10*i+3),null());
		PreGad2	= CREATEGADGET(TEXT_KIND,PreGad2,newgadx2,GTTX_BORDER,1,TAG_DONE,0);

		call SETNEWGADGET(newgadx2,scrvinfo,scrfont,54*Font_X,(1.7*i+4)*Font_Y,11*Font_X,1.5*Font_Y,"",PLACETEXT_LEFT,10+(10*i+4),null());
		PreGad2	= CREATEGADGET(TEXT_KIND,PreGad2,newgadx2,GTTX_BORDER,1,TAG_DONE,0);

		call SETNEWGADGET(newgadx2,scrvinfo,scrfont,66*Font_X,(1.7*i+4)*Font_Y,11*Font_X,1.5*Font_Y,"",PLACETEXT_LEFT,10+(10*i+5),null());
		PreGad2	= CREATEGADGET(TEXT_KIND,PreGad2,newgadx2,GTTX_BORDER,1,TAG_DONE,0);
	END;

	call SETNEWGADGET(newgadx2,scrvinfo,scrfont,8.5*Font_X,(1.7*I_max+6)*Font_Y,11*Font_X,1.5*Font_Y,"Datum:",PLACETEXT_LEFT,150,null());
	PreGad2	= CREATEGADGET(TEXT_KIND,PreGad2,newgadx2,GTTX_BORDER,1,TAG_DONE,0);

	call SETNEWGADGET(newgadx2,scrvinfo,scrfont,28.75*Font_X,(1.7*I_max+6)*Font_Y,10*Font_X,1.5*Font_Y,"Rabatt:",PLACETEXT_LEFT,151,null());
	PreGad2	= CREATEGADGET(TEXT_KIND,PreGad2,newgadx2,GTTX_BORDER,1,TAG_DONE,0);

	call SETNEWGADGET(newgadx2,scrvinfo,scrfont,45.75*Font_X,(1.7*I_max+6)*Font_Y,10*Font_X,1.5*Font_Y,"MWSt:",PLACETEXT_LEFT,152,null());
	PreGad2	= CREATEGADGET(TEXT_KIND,PreGad2,newgadx2,GTTX_BORDER,1,TAG_DONE,0);

	call SETNEWGADGET(newgadx2,scrvinfo,scrfont,66*Font_X,(1.7*I_max+6)*Font_Y,11*Font_X,1.5*Font_Y,"Endsumme:",PLACETEXT_LEFT,153,null());
	PreGad2	= CREATEGADGET(TEXT_KIND,PreGad2,newgadx2,GTTX_BORDER,1,TAG_DONE,0);

	call SETNEWGADGET(newgadx2,scrvinfo,scrfont,12*Font_X,(1.7*I_max+9)*Font_Y,10*Font_X,1.5*Font_Y,"Rechnung:",PLACETEXT_LEFT,160,null());
	PreGad2	= CREATEGADGET(STRING_KIND,PreGad2,newgadx2,GTST_MAXCHARS,6,TAG_DONE,0);

	call SETNEWGADGET(newgadx2,scrvinfo,scrfont,33*Font_X,(1.7*I_max+9)*Font_Y,8*Font_X,1.5*Font_Y,">",PLACETEXT_IN,161,null());
	PreGad2	= CREATEGADGET(BUTTON_KIND,PreGad2,newgadx2,TAG_DONE,0);

	call SETNEWGADGET(newgadx2,scrvinfo,scrfont,24*Font_X,(1.7*I_max+9)*Font_Y,8*Font_X,1.5*Font_Y,"<",PLACETEXT_IN,162,null());
	PreGad2	= CREATEGADGET(BUTTON_KIND,PreGad2,newgadx2,TAG_DONE,0);

	call SETNEWGADGET(newgadx2,scrvinfo,scrfont,42.5*Font_X,(1.7*I_max+9)*Font_Y,8*Font_X,1.5*Font_Y,"Ende",PLACETEXT_IN,163,null());
	PreGad2	= CREATEGADGET(BUTTON_KIND,PreGad2,newgadx2,TAG_DONE,0);

	call SETNEWGADGET(newgadx2,scrvinfo,scrfont,52*Font_X,(1.7*I_max+9)*Font_Y,8*Font_X,1.5*Font_Y,"Drucken",PLACETEXT_IN,164,null());
	PreGad2	= CREATEGADGET(BUTTON_KIND,PreGad2,newgadx2,TAG_DONE,0);

	call SETNEWGADGET(newgadx2,scrvinfo,scrfont,61*Font_X,(1.7*I_max+9)*Font_Y,16*Font_X,1.5*Font_Y,"Verwerfen",PLACETEXT_IN,165,null());
	PreGad2	= CREATEGADGET(BUTTON_KIND,PreGad2,newgadx2,TAG_DONE,0);
RETURN;

DefineGads3:
	GPoint3	= ALLOCVEC(4,MEMF_CLEAR);
	conxgad3	= CREATECONTEXT(GPoint3);
	PreGad3	= conxgad3;
	mylabels	= make_labels();

	newgadx3	= MAKENEWGADGET(scrvinfo,scrfont,1*Font_X,2*Font_Y,12*Font_X,1.5*Font_Y,"Rechnung:",PLACETEXT_ABOVE,10,null());
	PreGad3	= CREATEGADGET(STRING_KIND,PreGad3,newgadx3,GTST_MAXCHARS,6,TAG_DONE,0);

	call SETNEWGADGET(newgadx3,scrvinfo,scrfont,1*Font_X,6*Font_Y,12*Font_X,1.5*Font_Y,"Kunde:",PLACETEXT_ABOVE,11,null());
	PreGad3	= CREATEGADGET(STRING_KIND,PreGad3,newgadx3,GTST_MAXCHARS,6,TAG_DONE,0);

	call SETNEWGADGET(newgadx3,scrvinfo,scrfont,1*Font_X,9.5*Font_Y,12*Font_X,1.5*Font_Y,"Drucken ->",PLACETEXT_ABOVE,12,null());
	PreGad3	= CREATEGADGET(CYCLE_KIND,PreGad3,newgadx3,GTCY_LABELS,mylabels,GTCY_Active,0,TAG_DONE,0);

	call SETNEWGADGET(newgadx3,scrvinfo,scrfont,1*Font_X,12*Font_Y,12*Font_X,1.5*Font_Y,"Prefs",PLACETEXT_IN,13,null());
	PreGad3	= CREATEGADGET(BUTTON_KIND,PreGad3,newgadx3,TAG_DONE,0);

	call SETNEWGADGET(newgadx3,scrvinfo,scrfont,1*Font_X,14.5*Font_Y,12*Font_X,1.5*Font_Y,"Verz.",PLACETEXT_IN,14,null());
	PreGad3	= CREATEGADGET(BUTTON_KIND,PreGad3,newgadx3,TAG_DONE,0);

	call SETNEWGADGET(newgadx3,scrvinfo,scrfont,15.5*Font_X,Font_Y,12.5*Font_X,1.5*Font_Y,"Rechnung",PLACETEXT_IN,15,null());
	PreGad3	= CREATEGADGET(BUTTON_KIND,PreGad3,newgadx3,TAG_DONE,0);

	call SETNEWGADGET(newgadx3,scrvinfo,scrfont,15.5*Font_X,3*Font_Y,12.5*Font_X,1.5*Font_Y,"Paketkarte",PLACETEXT_IN,16,null());
	PreGad3	= CREATEGADGET(BUTTON_KIND,PreGad3,newgadx3,TAG_DONE,0);

	call SETNEWGADGET(newgadx3,scrvinfo,scrfont,15.5*Font_X,5*Font_Y,12.5*Font_X,1.5*Font_Y,"Zahlschein",PLACETEXT_IN,17,null());
	PreGad3	= CREATEGADGET(BUTTON_KIND,PreGad3,newgadx3,TAG_DONE,0);

	call SETNEWGADGET(newgadx3,scrvinfo,scrfont,15.5*Font_X,7*Font_Y,12.5*Font_X,1.5*Font_Y,"Mahnung",PLACETEXT_IN,18,null());
	PreGad3	= CREATEGADGET(BUTTON_KIND,PreGad3,newgadx3,TAG_DONE,0);

	call SETNEWGADGET(newgadx3,scrvinfo,scrfont,15.5*Font_X,9*Font_Y,12.5*Font_X,1.5*Font_Y,"Etikett",PLACETEXT_IN,19,null());
	PreGad3	= CREATEGADGET(BUTTON_KIND,PreGad3,newgadx3,TAG_DONE,0);

	call SETNEWGADGET(newgadx3,scrvinfo,scrfont,15.5*Font_X,11*Font_Y,12.5*Font_X,1.5*Font_Y,"Umschlag",PLACETEXT_IN,20,null());
	PreGad3	= CREATEGADGET(BUTTON_KIND,PreGad3,newgadx3,TAG_DONE,0);

	call SETNEWGADGET(newgadx3,scrvinfo,scrfont,15.5*Font_X,13*Font_Y,12.5*Font_X,1.5*Font_Y,"Art. Liste",PLACETEXT_IN,21,null());
	PreGad3	= CREATEGADGET(BUTTON_KIND,PreGad3,newgadx3,TAG_DONE,0);

	call SETNEWGADGET(newgadx3,scrvinfo,scrfont,30*Font_X,Font_Y,12.5*Font_X,1.5*Font_Y,"Adressliste",PLACETEXT_IN,22,null());
	PreGad3	= CREATEGADGET(BUTTON_KIND,PreGad3,newgadx3,TAG_DONE,0);

	call SETNEWGADGET(newgadx3,scrvinfo,scrfont,30*Font_X,3*Font_Y,12.5*Font_X,1.5*Font_Y,"Umsatzliste",PLACETEXT_IN,23,null());
	PreGad3	= CREATEGADGET(BUTTON_KIND,PreGad3,newgadx3,TAG_DONE,0);
RETURN;

make_labels:
	ltxt.1	= "Drucker";
	ltxt.2	= "Datei";
	mlabels	= MAKEPOINTER(0,0,12,MEMF_CLEAR);
	DO x = 1 to 2;
		lbuf = MAKEPOINTER(mlabels,0,length(ltxt.x)+2,MEMF_CLEAR);
		CALL export(lbuf,ltxt.x);
		CALL SETVALUE(mlabels,(x-1)*4,4,'p',lbuf);
	END;
RETURN mlabels;

DefineGads4:
	GPoint4	= ALLOCVEC(4,MEMF_CLEAR);
	conxgad4	= CREATECONTEXT(GPoint4);
	PreGad4	= conxgad4;
	Kundlabels	= make_labels2();

	newgadx4	= MAKENEWGADGET(scrvinfo,scrfont,12*Font_X,1*Font_Y,26*Font_X,1.5*Font_Y,"Vorname  :",PLACETEXT_LEFT,10,null());
	PreGad4	= CREATEGADGET(STRING_KIND,PreGad4,newgadx4,GTST_MAXCHARS,25,TAG_DONE,0);

	call SETNEWGADGET(newgadx4,scrvinfo,scrfont,51*Font_X,1*Font_Y,26*Font_X,1.5*Font_Y,"Name     :",PLACETEXT_LEFT,11,null());
	PreGad4	= CREATEGADGET(STRING_KIND,PreGad4,newgadx4,GTST_MAXCHARS,25,TAG_DONE,0);

	call SETNEWGADGET(newgadx4,scrvinfo,scrfont,12*Font_X,3*Font_Y,26*Font_X,1.5*Font_Y,"Strae   :",PLACETEXT_LEFT,12,null());
	PreGad4	= CREATEGADGET(STRING_KIND,PreGad4,newgadx4,GTST_MAXCHARS,25,TAG_DONE,0);

	call SETNEWGADGET(newgadx4,scrvinfo,scrfont,51*Font_X,3*Font_Y,8*Font_X,1.5*Font_Y,"PLZ      :",PLACETEXT_LEFT,13,null());
	PreGad4	= CREATEGADGET(STRING_KIND,PreGad4,newgadx4,GTST_MAXCHARS,5,TAG_DONE,0);

	call SETNEWGADGET(newgadx4,scrvinfo,scrfont,12*Font_X,5*Font_Y,26*Font_X,1.5*Font_Y,"Ort      :",PLACETEXT_LEFT,14,null());
	PreGad4	= CREATEGADGET(STRING_KIND,PreGad4,newgadx4,GTST_MAXCHARS,25,TAG_DONE,0);

	call SETNEWGADGET(newgadx4,scrvinfo,scrfont,51*Font_X,5*Font_Y,26*Font_X,1.5*Font_Y,"Land     :",PLACETEXT_LEFT,15,null());
	PreGad4	= CREATEGADGET(STRING_KIND,PreGad4,newgadx4,GTST_MAXCHARS,20,TAG_DONE,0);

	call SETNEWGADGET(newgadx4,scrvinfo,scrfont,12*Font_X,7*Font_Y,12*Font_X,1.5*Font_Y,"Geburtst.:",PLACETEXT_LEFT,16,null());
	PreGad4	= CREATEGADGET(STRING_KIND,PreGad4,newgadx4,GTST_MAXCHARS,10,TAG_DONE,0);

	call SETNEWGADGET(newgadx4,scrvinfo,scrfont,51*Font_X,7*Font_Y,20*Font_X,1.5*Font_Y,"Telefon  :",PLACETEXT_LEFT,17,null());
	PreGad4	= CREATEGADGET(STRING_KIND,PreGad4,newgadx4,GTST_MAXCHARS,15,TAG_DONE,0);

	call SETNEWGADGET(newgadx4,scrvinfo,scrfont,12*Font_X,9*Font_Y,20*Font_X,1.5*Font_Y,"Fax      :",PLACETEXT_LEFT,18,null());
	PreGad4	= CREATEGADGET(STRING_KIND,PreGad4,newgadx4,GTST_MAXCHARS,15,TAG_DONE,0);

	call SETNEWGADGET(newgadx4,scrvinfo,scrfont,51*Font_X,9*Font_Y,20*Font_X,1.5*Font_Y,"DF      :",PLACETEXT_LEFT,19,null());
	PreGad4	= CREATEGADGET(STRING_KIND,PreGad4,newgadx4,GTST_MAXCHARS,15,TAG_DONE,0);

	call SETNEWGADGET(newgadx4,scrvinfo,scrfont,12*Font_X,11*Font_Y,20*Font_X,1.5*Font_Y,"EMail1   :",PLACETEXT_LEFT,20,null());
	PreGad4	= CREATEGADGET(STRING_KIND,PreGad4,newgadx4,GTST_MAXCHARS,30,TAG_DONE,0);

	call SETNEWGADGET(newgadx4,scrvinfo,scrfont,51*Font_X,11*Font_Y,20*Font_X,1.5*Font_Y,"EMail2   :",PLACETEXT_LEFT,21,null());
	PreGad4	= CREATEGADGET(STRING_KIND,PreGad4,newgadx4,GTST_MAXCHARS,30,TAG_DONE,0);

	call SETNEWGADGET(newgadx4,scrvinfo,scrfont,12*Font_X,13*Font_Y,20*Font_X,1.5*Font_Y,"EMail3   :",PLACETEXT_LEFT,22,null());
	PreGad4	= CREATEGADGET(STRING_KIND,PreGad4,newgadx4,GTST_MAXCHARS,30,TAG_DONE,0);

	call SETNEWGADGET(newgadx4,scrvinfo,scrfont,51*Font_X,13*Font_Y,26*Font_X,1.5*Font_Y,"Anrede   :",PLACETEXT_LEFT,23,null());
	PreGad4	= CREATEGADGET(STRING_KIND,PreGad4,newgadx4,GTST_MAXCHARS,25,TAG_DONE,0);

	call SETNEWGADGET(newgadx4,scrvinfo,scrfont,12*Font_X,15*Font_Y,65*Font_X,1.5*Font_Y,"BriefAn  :",PLACETEXT_LEFT,24,null());
	PreGad4	= CREATEGADGET(STRING_KIND,PreGad4,newgadx4,GTST_MAXCHARS,40,TAG_DONE,0);

	call SETNEWGADGET(newgadx4,scrvinfo,scrfont,12*Font_X,17*Font_Y,65*Font_X,1.5*Font_Y,"Kommentar:",PLACETEXT_LEFT,25,null());
	PreGad4	= CREATEGADGET(STRING_KIND,PreGad4,newgadx4,GTST_MAXCHARS,80,TAG_DONE,0);

	call SETNEWGADGET(newgadx4,scrvinfo,scrfont,12*Font_X,19*Font_Y,65*Font_X,1.5*Font_Y,"Bank     :",PLACETEXT_LEFT,26,null());
	PreGad4	= CREATEGADGET(STRING_KIND,PreGad4,newgadx4,GTST_MAXCHARS,40,TAG_DONE,0);

	call SETNEWGADGET(newgadx4,scrvinfo,scrfont,12*Font_X,21*Font_Y,20*Font_X,1.5*Font_Y,"BLZ      :",PLACETEXT_LEFT,27,null());
	PreGad4	= CREATEGADGET(STRING_KIND,PreGad4,newgadx4,GTST_MAXCHARS,15,TAG_DONE,0);

	call SETNEWGADGET(newgadx4,scrvinfo,scrfont,51*Font_X,21*Font_Y,20*Font_X,1.5*Font_Y,"Konto    :",PLACETEXT_LEFT,28,null());
	PreGad4	= CREATEGADGET(STRING_KIND,PreGad4,newgadx4,GTST_MAXCHARS,15,TAG_DONE,0);

	call SETNEWGADGET(newgadx4,scrvinfo,scrfont,12*Font_X,23*Font_Y,20*Font_X,1.5*Font_Y,"Bankkurz :",PLACETEXT_LEFT,29,null());
	PreGad4	= CREATEGADGET(STRING_KIND,PreGad4,newgadx4,GTST_MAXCHARS,15,TAG_DONE,0);

	call SETNEWGADGET(newgadx4,scrvinfo,scrfont,51*Font_X,23*Font_Y,5*Font_X,1.5*Font_Y,"Rabatt   :",PLACETEXT_LEFT,30,null());
	PreGad4	= CREATEGADGET(STRING_KIND,PreGad4,newgadx4,GTST_MAXCHARS,2,TAG_DONE,0);

	call SETNEWGADGET(newgadx4,scrvinfo,scrfont,13.5*Font_X,26*Font_Y,16*Font_X,1.5*Font_Y,"Bearbeiten:",PLACETEXT_LEFT,40,null());
	PreGad4	= CREATEGADGET(CYCLE_KIND,PreGad4,newgadx4,GTCY_LABELS,Kundlabels,TAG_DONE,0);

	call SETNEWGADGET(newgadx4,scrvinfo,scrfont,40*Font_X,26*Font_Y,32*Font_X,1.5*Font_Y,"Suche  :",PLACETEXT_LEFT,41,null());
	PreGad4	= CREATEGADGET(STRING_KIND,PreGad4,newgadx4,GTST_MAXCHARS,30,TAG_DONE,0);

	call SETNEWGADGET(newgadx4,scrvinfo,scrfont,73*Font_X,26*Font_Y,4*Font_X,1.5*Font_Y,"Cal",PLACETEXT_IN,42,null());
	PreGad4	= CREATEGADGET(BUTTON_KIND,PreGad4,newgadx4,TAG_DONE,0);

	call SETNEWGADGET(newgadx4,scrvinfo,scrfont,15*Font_X,28*Font_Y,9*Font_X,1.5*Font_Y,"Kund/Lief   :",PLACETEXT_LEFT,43,null());
	PreGad4	= CREATEGADGET(STRING_KIND,PreGad4,newgadx4,GTST_MAXCHARS,6,TAG_DONE,0);

	call SETNEWGADGET(newgadx4,scrvinfo,scrfont,35*Font_X,28*Font_Y,9*Font_X,1.5*Font_Y,">",PLACETEXT_IN,44,null());
	PreGad4	= CREATEGADGET(BUTTON_KIND,PreGad4,newgadx4,TAG_DONE,0);

	call SETNEWGADGET(newgadx4,scrvinfo,scrfont,25*Font_X,28*Font_Y,9*Font_X,1.5*Font_Y,"<",PLACETEXT_IN,45,null());
	PreGad4	= CREATEGADGET(BUTTON_KIND,PreGad4,newgadx4,TAG_DONE,0);

	call SETNEWGADGET(newgadx4,scrvinfo,scrfont,45*Font_X,28*Font_Y,9*Font_X,1.5*Font_Y,"Ende",PLACETEXT_IN,46,null());
	PreGad4	= CREATEGADGET(BUTTON_KIND,PreGad4,newgadx4,TAG_DONE,0);

	call SETNEWGADGET(newgadx4,scrvinfo,scrfont,55*Font_X,28*Font_Y,9*Font_X,1.5*Font_Y,"Drucken",PLACETEXT_IN,47,null());
	PreGad4	= CREATEGADGET(BUTTON_KIND,PreGad4,newgadx4,TAG_DONE,0);

	call SETNEWGADGET(newgadx4,scrvinfo,scrfont,65*Font_X,28*Font_Y,12*Font_X,1.5*Font_Y,"Verwerfen",PLACETEXT_IN,48,null());
	PreGad4	= CREATEGADGET(BUTTON_KIND,PreGad4,newgadx4,TAG_DONE,0);
RETURN;

make_labels2:
	ltxt2.1	= "Kunden";
	ltxt2.2	= "Firma";
	mlabels2	= MAKEPOINTER(0,0,12,MEMF_CLEAR);
	DO x = 1 to 2;
		lbuf2	= MAKEPOINTER(mlabels2,0,length(ltxt2.x)+2,MEMF_CLEAR);
		CALL export(lbuf2,ltxt2.x);
		CALL SETVALUE(mlabels2,(x-1)*4,4,'p',lbuf2);
	END;
RETURN mlabels2;

DefineGads5:
	GPoint5	= ALLOCVEC(4,MEMF_CLEAR);
	conxgad5	= CREATECONTEXT(GPoint5);
	PreGad5	= conxgad5;

	newgadx5	= MAKENEWGADGET(scrvinfo,scrfont,14*Font_X,Font_Y,62*Font_X,1.5*Font_Y,"Bezeichnung:",PLACETEXT_LEFT,10,null());
	PreGad5	= CREATEGADGET(STRING_KIND,PreGad5,newgadx5,GTST_MAXCHARS,30,TAG_DONE,0);

	call SETNEWGADGET(newgadx5,scrvinfo,scrfont,14*Font_X,3*Font_Y,22*Font_X,1.5*Font_Y,"Preis      :",PLACETEXT_LEFT,11,null());
	PreGad5	= CREATEGADGET(STRING_KIND,PreGad5,newgadx5,GTST_MAXCHARS,10,TAG_DONE,0);

	call SETNEWGADGET(newgadx5,scrvinfo,scrfont,59*Font_X,3*Font_Y,17*Font_X,1.5*Font_Y,"Buchkonto  :",PLACETEXT_LEFT,12,null());
	PreGad5	= CREATEGADGET(STRING_KIND,PreGad5,newgadx5,GTST_MAXCHARS,10,TAG_DONE,0);

	call SETNEWGADGET(newgadx5,scrvinfo,scrfont,14*Font_X,5*Font_Y,4*Font_X,1.5*Font_Y,"MWSt Kennz.:",PLACETEXT_LEFT,13,null());
	PreGad5	= CREATEGADGET(STRING_KIND,PreGad5,newgadx5,GTST_MAXCHARS,1,TAG_DONE,0);

	call SETNEWGADGET(newgadx5,scrvinfo,scrfont,14*Font_X,8*Font_Y,37*Font_X,1.5*Font_Y,"Suche     :",PLACETEXT_LEFT,41,null());
	PreGad5	= CREATEGADGET(STRING_KIND,PreGad5,newgadx5,GTST_MAXCHARS,30,TAG_DONE,0);

	call SETNEWGADGET(newgadx5,scrvinfo,scrfont,14*Font_X,10*Font_Y,9*Font_X,1.5*Font_Y,"Artikel   :",PLACETEXT_LEFT,43,null());
	PreGad5	= CREATEGADGET(STRING_KIND,PreGad5,newgadx5,GTST_MAXCHARS,6,u,TAG_DONE,0);

	call SETNEWGADGET(newgadx5,scrvinfo,scrfont,34*Font_X,10*Font_Y,9*Font_X,1.5*Font_Y,">",PLACETEXT_IN,44,null());
	PreGad5	= CREATEGADGET(BUTTON_KIND,PreGad5,newgadx5,TAG_DONE,0);

	call SETNEWGADGET(newgadx5,scrvinfo,scrfont,24*Font_X,10*Font_Y,9*Font_X,1.5*Font_Y,"<",PLACETEXT_IN,45,null());
	PreGad5	= CREATEGADGET(BUTTON_KIND,PreGad5,newgadx5,TAG_DONE,0);

	call SETNEWGADGET(newgadx5,scrvinfo,scrfont,44*Font_X,10*Font_Y,9*Font_X,1.5*Font_Y,"Ende",PLACETEXT_IN,46,null());
	PreGad5	= CREATEGADGET(BUTTON_KIND,PreGad5,newgadx5,TAG_DONE,0);

	call SETNEWGADGET(newgadx5,scrvinfo,scrfont,54*Font_X,10*Font_Y,9*Font_X,1.5*Font_Y,"Drucken",PLACETEXT_IN,47,null());
	PreGad5	= CREATEGADGET(BUTTON_KIND,PreGad5,newgadx5,TAG_DONE,0);

	call SETNEWGADGET(newgadx5,scrvinfo,scrfont,64*Font_X,10*Font_Y,14*Font_X,1.5*Font_Y,"Verwerfen",PLACETEXT_IN,48,null());
	PreGad5	= CREATEGADGET(BUTTON_KIND,PreGad5,newgadx5,TAG_DONE,0);
RETURN;

DefineGads6:
	GPoint6	= ALLOCVEC(4,MEMF_CLEAR);
	conxgad6	= CREATECONTEXT(GPoint6);
	PreGad6	= conxgad6;
	mylabels	= make_labels();

	newgadx6	= MAKENEWGADGET(scrvinfo,scrfont,9*Font_X,Font_Y,12*Font_X,1.5*Font_Y,"MWSt.1:",PLACETEXT_LEFT,10,null());
	PreGad6	= CREATEGADGET(STRING_KIND,PreGad6,newgadx6,GTST_MAXCHARS,8,GTST_STRING,MWSt_Satz.1,TAG_DONE,0);

	call SETNEWGADGET(newgadx6,scrvinfo,scrfont,9*Font_X,3*Font_Y,12*Font_X,1.5*Font_Y,"MWSt.2:",PLACETEXT_LEFT,11,null());
	PreGad6	= CREATEGADGET(STRING_KIND,PreGad6,newgadx6,GTST_MAXCHARS,8,GTST_STRING,MWSt_Satz.2,TAG_DONE,0);

	call SETNEWGADGET(newgadx6,scrvinfo,scrfont,1*Font_X,7*Font_Y,6*Font_X,1.5*Font_Y,"Whle",PLACETEXT_IN,12,null());
	PreGad6	= CREATEGADGET(BUTTON_KIND,PreGad6,newgadx6,TAG_DONE,0);

	call SETNEWGADGET(newgadx6,scrvinfo,scrfont,7.5*Font_X,7*Font_Y,13.5*Font_X,1.5*Font_Y,"",PLACETEXT_LEFT,13,null());
	PreGad6	= CREATEGADGET(TEXT_KIND,PreGad6,newgadx6,GTTX_BORDER,1,TAG_DONE,0);

	call SETNEWGADGET(newgadx6,scrvinfo,scrfont,9*Font_X,9*Font_Y,12*Font_X,1.5*Font_Y,"Port:  ",PLACETEXT_LEFT,14,null());
	PreGad6	= CREATEGADGET(STRING_KIND,PreGad6,newgadx6,GTST_MAXCHARS,8,GTST_STRING,Druckport,TAG_DONE,0);

	call SETNEWGADGET(newgadx6,scrvinfo,scrfont,9*Font_X,11*Font_Y,12*Font_X,1.5*Font_Y,"Rand_X:",PLACETEXT_LEFT,15,null());
	PreGad6	= CREATEGADGET(STRING_KIND,PreGad6,newgadx6,GTST_MAXCHARS,8,GTST_STRING,D_XAbst,TAG_DONE,0);

	call SETNEWGADGET(newgadx6,scrvinfo,scrfont,9*Font_X,13*Font_Y,12*Font_X,1.5*Font_Y,"Rand_Y:",PLACETEXT_LEFT,16,null());
	PreGad6	= CREATEGADGET(STRING_KIND,PreGad6,newgadx6,GTST_MAXCHARS,8,GTST_STRING,D_YAbst,TAG_DONE,0);

	call SETNEWGADGET(newgadx6,scrvinfo,scrfont,5*Font_X,15*Font_Y,12*Font_X,1.5*Font_Y,"Ende",PLACETEXT_IN,17,null());
	PreGad6	= CREATEGADGET(BUTTON_KIND,PreGad6,newgadx6,TAG_DONE,0);
RETURN;

UP_Adressen:
	IF DefGads4 = 0 THEN
		DO;
			call DefineGads4;
			DefGads4 = 1;
		END;
	w4		= OPENWINDOW(portname,(Screen_X-Win_X4)/2,(Screen_Y-Win_Y4)/2,Win_X4,Win_Y4,0,1,winidcmp,winflags,wintitle4,scr,0,null(),null(),conxgad4);
	rpw4	= GETWINDOWRASTPORT(w4);
	CALL DRAWBEVELBOX(rpw4,0.25*Font_X,0.5*Font_Y,78.5*Font_X,24.5*Font_Y,scrvinfo,TAG_DONE,0);
	CALL DRAWBEVELBOX(rpw4,0.25*Font_X,25.5*Font_Y,78.5*Font_X,4.5*Font_Y,scrvinfo,TAG_DONE,0);
	call GT_REFRESHWINDOW(w4,null());
	ZW_Suchen	= "";
	IF ZW_KundenNr > K_max | ZW_KundenNr < 1 THEN
		ZW_KundenNr = K_max;
	IF Druckart	= ltxt2.2 THEN
		CALL UP_Firma_alles;
	ELSE
		DO;
			Druckart		= ltxt2.1;
			CALL UP_Kunden_alles;
		END;
	CALL UP_ReErst_fuellen;
	extime4	= 0;
	apen		= 1;
	DO WHILE extime4 = 0;
		x	= waitpkt(portname);
		DO FOREVER;
			msg4		= getpkt(portname);
			IF msg4	= '0000 0000'x THEN LEAVE;
			msgclass4= getarg(msg4,0);
			msgcode4	= getarg(msg4,1);
			msgid4	= getarg(msg4,9);
			x			= reply(msg4,0);
			x			=Auswertung4();
		END;
	END;
	CALL CLOSEWINDOW(w4);
RETURN;

UP_Artikel:
	IF DefGads5 = 0 THEN
		DO;
			call DefineGads5;
			DefGads5 = 1;
		END;
	w5		= OPENWINDOW(portname,(Screen_X-Win_X5)/2,(Screen_Y-Win_Y5)/2,Win_X5,Win_Y5,0,1,winidcmp,winflags,wintitle5,scr,0,null(),null(),conxgad5);
	rpw5	= GETWINDOWRASTPORT(w5);
	CALL DRAWBEVELBOX(rpw5,0.25*Font_X,0.5*Font_Y,78.5*Font_X,6.5*Font_Y,scrvinfo,TAG_DONE,0);
	CALL DRAWBEVELBOX(rpw5,0.25*Font_X,7.5*Font_Y,78.5*Font_X,4.5*Font_Y,scrvinfo,TAG_DONE,0);
	CALL GT_REFRESHWINDOW(w5,null());
	ZW_Suchen = "";
	IF ZW_ArtikelNr > A_max | ZW_ArtikelNr < 1 THEN
		ZW_ArtikelNr = A_max;
	CALL UP_Artikel_alles;
	CALL UP_ArtErst_fuellen;
	extime5	= 0;
	apen		= 1;
	DO WHILE extime5 = 0;
		x	= waitpkt(portname);
		DO FOREVER;
			msg5		= getpkt(portname);
			IF msg5	= '0000 0000'x THEN LEAVE;
			msgclass5= getarg(msg5,0);
			msgcode5	= getarg(msg5,1);
			msgid5	= getarg(msg5,9);
			x			= reply(msg5,0);
			x			= Auswertung5();
		END;
	END;
	CALL CLOSEWINDOW(w5);
RETURN;

UP_Rechnung:
	IF DefGads2 = 0 THEN
		DO;
			call DefineGads2;
			DefGads2 = 1;
		END;
	w2		= OPENWINDOW(portname,(Screen_X-Win_X2)/2,(Screen_Y-Win_Y2)/2,Win_X2,Win_Y2,0,1,winidcmp,winflags,wintitle2,scr,0,null(),null(),conxgad2);
	rpw2	= GETWINDOWRASTPORT(w2);
	CALL DRAWBEVELBOX(rpw2,0.25*Font_X,0.5*Font_Y,78.5*Font_X,4.5*Font_Y,scrvinfo,TAG_DONE,0);
	CALL DRAWBEVELBOX(rpw2,0.25*Font_X,5.25*Font_Y,78.5*Font_X,((1.7*I_Max)+2.75)*Font_Y,scrvinfo,TAG_DONE,0);
	CALL DRAWBEVELBOX(rpw2,0.25*Font_X,((1.7*I_Max)+8.5)*Font_Y,78.5*Font_X,2.5*Font_Y,scrvinfo,TAG_DONE,0);
	call GT_REFRESHWINDOW(w2,null());
	IF UEB_RechNr > R_max | UEB_RechNr < 1 THEN
		UEB_RechNr = R_max;
	CALL UP_Rechnung_fuellen;
	extime2	= 0;
	apen		= 1;
	DO WHILE extime2 = 0;
		x		= waitpkt(portname);
		DO FOREVER;
			msg2		= getpkt(portname);
			IF msg2	= '0000 0000'x THEN LEAVE;
			msgclass2= getarg(msg2,0);
			msgcode2	= getarg(msg2,1);
			msgid2	= getarg(msg2,9);
			x			= reply(msg2,0);
			x			= Auswertung2();
		END;
	END;
	CALL CLOSEWINDOW(w2);
RETURN;

UP_Drucken:
	IF DefGads3 = 0 THEN
		DO;
			call DefineGads3;
			DefGads3 = 1;
		END;
	w3		= OPENWINDOW(portname,(Screen_X-Win_X3)/2,(Screen_Y-Win_Y3)/2,Win_X3,Win_Y3,0,1,winidcmp,winflags,wintitle3,scr,0,null(),null(),conxgad3);
	rpw3	= GETWINDOWRASTPORT(w3);
	CALL DRAWBEVELBOX(rpw3,14.5*Font_X,0.5*Font_Y,29*Font_X,15.5*Font_Y,scrvinfo,TAG_DONE,0);
	call GT_REFRESHWINDOW(w3,null());
	extime3	= 0;
	apen	= 1;
	IF UEB_RechNr > R_max | UEB_RechNr < 1 THEN
		UEB_RechNr = "000001";
	UEB_RechNr = right("000000" || UEB_RechNr,6);
	ZW_KundenNr = RE_Kunde.UEB_RechNr;
	DO j = 1 to I_max;
		ZW_Art_Nr.j = RE_Art.j.UEB_RechNr
		IF ZW_Art_Nr.j > "" THEN
			DO;
				x = ZW_Art_Nr.j;
				ZW_Bez.j			= AR_ArtBez.x;
				ZW_EPreis.j		= AR_ArtPreis.x;
				ZW_Art_Anz.j	= RE_Anz.j.UEB_RechNr;
			END;
		ELSE
			DO;
				ZW_Bez.j			= "";
				ZW_EPreis.j		= "";
				ZW_Art_Anz.j	= "";
			END;
	END;
	ZW_Datum = RE_Datum.UEB_RechNr;
	CALL SETSTRGADID(w3,10,UEB_RechNr,null());
	CALL SETSTRGADID(w3,11,ZW_KundenNr,null());
	REFRESHGLIST(conxgad3,w3,null(),-1);
	Druckverz = "ram:";
	IF Druckart ~= ltxt.2 THEN
		Druckart	= ltxt.1
	DO WHILE extime3 = 0;
		x	= waitpkt(portname);
		DO FOREVER;
			msg3		= getpkt(portname);
			IF msg3	= '0000 0000'x THEN LEAVE;
			msgclass3= getarg(msg3,0);
			msgcode3	= getarg(msg3,1);
			msgid3	= getarg(msg3,9);
			x			= reply(msg3,0);
			x			= Auswertung3();
		END;
	END;
	CALL CLOSEWINDOW(w3);
RETURN;

UP_Prefs:
	IF DefGads6 = 0 THEN
		DO;
			call DefineGads6;
			DefGads6 = 2;
		END;
	w6		= OPENWINDOW(portname,(Screen_X-Win_X6)/2,(Screen_Y-Win_Y6)/2,Win_X6,Win_Y6,0,1,winidcmp,winflags,wintitle6,scr,0,null(),null(),conxgad6);
	rpw6	= GETWINDOWRASTPORT(w6);

	CALL pitext(rpw6,Font_X,5.5*Font_Y,"Drucker auswhlen:",apen,0,jam2,scrfont);
	CALL pitext(rpw6,7.8*Font_X,7.2*Font_Y,right(Druckdatei,12),apen,0,jam2,scrfont);
	call GT_REFRESHWINDOW(w6,null());
	extime6	= 0;
	apen		= 1;
	DO WHILE extime6 = 0;
		x	= waitpkt(portname);
		DO FOREVER;
			msg6		= getpkt(portname);
			IF msg6	= '0000 0000'x THEN LEAVE;
			msgclass6= getarg(msg6,0);
			msgcode6	= getarg(msg6,1);
			msgid6	= getarg(msg6,9);
			x			= reply(msg6,0);
			x			= Auswertung6();
		END;
	END;
	CALL CLOSEWINDOW(w6);
RETURN;

UP_Rechnung_fuellen:
	UEB_RechNr = right("000000" || UEB_RechNr,6);
	ZW_KundenNr = RE_Kunde.UEB_RechNr;
	CALL UP_Kunden_Fuellen;
	DO j = 1 to I_max;
		ZW_Art_Nr.j = RE_Art.j.UEB_RechNr
		IF ZW_Art_Nr.j > "" THEN
			DO;
				x = ZW_Art_Nr.j;
				ZW_Bez.j			= AR_ArtBez.x;
				ZW_EPreis.j		= AR_ArtPreis.x;
				ZW_Art_Anz.j	= RE_Anz.j.UEB_RechNr;
			END;
		ELSE
			DO;
				ZW_Bez.j			= "";
				ZW_EPreis.j		= "";
				ZW_Art_Anz.j	= "";
			END;
		CALL SETSTRGADID(w2,(j*10+11),ZW_Art_Nr.j,null());
		CALL SETSTRGADID(w2,(j*10+12),ZW_Art_Anz.j,null());
		CALL pitext(rpw2,22.5*Font_X,(1.7*j+4.2)*Font_Y,left(ZW_Bez.j,30),apen,0,jam2,scrfont);
		CALL pitext(rpw2,54.5*Font_X,(1.7*j+4.2)*Font_Y,right(ZW_EPreis.j,10),apen,0,jam2,scrfont);
	END;
	ZW_Datum = RE_Datum.UEB_RechNr;
	CALL pitext(rpw2,9*Font_X,(1.7*I_max+6.2)*Font_Y,left(ZW_Datum,10),apen,0,jam2,scrfont);

	CALL SETSTRGADID(w2,160,UEB_RechNr,null());
	CALL UP_B_Berechnung;
	REFRESHGLIST(conxgad2,w2,null(),-1);
RETURN;

UP_Kunden_Fuellen:
	IF ZW_KundenNr > 0 THEN
		DO;
			ZW_Kunden_VorName	= KD_VorName.ZW_KundenNr;
			ZW_Kunden_Name		= KD_Name.ZW_KundenNr;
			ZW_PLZ				= KD_PLZ.ZW_KundenNr;
			ZW_Ort				= KD_Ort.ZW_KundenNr;
			ZW_Strasse			= KD_Strasse.ZW_KundenNr;
		END;
	ELSE
		DO;
			ZW_KundenNr			= "";
			ZW_Kunden_VorName	= "";
			ZW_Kunden_Name		= "";
			ZW_PLZ				= "";
			ZW_Ort				= "";
			ZW_Strasse			= "";
		END;
	CALL SETSTRGADID(w2,11,ZW_KundenNr,null());
	CALL SETSTRGADID(w2,12,ZW_Kunden_VorName,null());
	CALL SETSTRGADID(w2,13,ZW_Kunden_Name,null());
	CALL pitext(rpw2,7.5*Font_X,3.2*Font_Y,LEFT(ZW_PLZ,5),apen,0,jam2,scrfont);
	CALL pitext(rpw2,21.5*Font_X,3.2*Font_Y,LEFT(ZW_Ort,22),apen,0,jam2,scrfont);
	CALL pitext(rpw2,54.5*Font_X,3.2*Font_Y,LEFT(ZW_Strasse,22),apen,0,jam2,scrfont);
RETURN;

UP_B_Berechnung:
	ZW_MWSt = 0;
	ZW_Endsumme = 0;
	ZW_Rab = 0;
	ZW_KundenNr = GETSTRGAD(w2,(11),null());
	ZW_Rabatt = KD_Rabatt.ZW_KundenNr;
	IF DATATYPE(ZW_Rabatt,'w') THEN
		ZW_Rabatt = ZW_Rabatt / 100;
	ELSE
		ZW_Rabatt = 0;
	DO j = 1 to I_Max;
		ZW_Art_Nr = GETSTRGAD(w2,(11+(10*j)),null());
		ZW_Menge  = GETSTRGAD(w2,(12+(10*j)),null());
		IF ZW_Art_Nr > 0 & ZW_Menge > 0 THEN
			DO;
				ZW_Summe.j  = (ZW_EPreis.j * ZW_Menge) + 0.005;
				IF ZW_Summe.j < 0 THEN
					ZW_Summe.j  = ZW_Summe.j - 0.01;
				ZW_Summe.j	= trunc(ZW_Summe.j,2);
				ZW_Rab		= ZW_Rab + (ZW_Summe.j * ZW_Rabatt);
				ZW_Summe.j	= right(ZW_Summe.j,10);
				ZW_Endsumme	= ZW_Endsumme + ZW_Summe.j;
				i = AR_ArtMWSt.ZW_Art_Nr;
				ZW_MWSt = ZW_MWSt + ((ZW_Summe.j - (ZW_Summe.j * ZW_Rabatt)) * MWSt_Rech.i);
			END;
		ELSE
			ZW_Summe.j = "";
		CALL pitext(rpw2,66.5*Font_X,(1.7*j+4.2)*Font_Y,right(ZW_Summe.j,10),apen,0,jam2,scrfont);
	END;
	ZW_Endsumme	= trunc(ZW_Endsumme - ZW_Rab + 0.005,2);
	ZW_Rab		= trunc(ZW_Rab + 0.005,2);
	ZW_MWSt		= trunc(ZW_MWSt + 0.005,2);
	CALL pitext(rpw2,66.5*Font_X,(1.7*I_max+6.2)*Font_Y,right(ZW_Endsumme,10),apen,0,jam2,scrfont);
	CALL pitext(rpw2,29.25*Font_X,(1.7*I_max+6.2)*Font_Y,right(ZW_Rab,9),apen,0,jam2,scrfont);
	CALL pitext(rpw2,46.25*Font_X,(1.7*I_max+6.2)*Font_Y,right(ZW_MWSt,9),apen,0,jam2,scrfont);
RETURN;

Auswertung2:
	SELECT
		WHEN msgcode2 = 75 | msgcode2 = 107 THEN
			ACTIVATEGADID(11,w2,null());
		WHEN msgcode2 = 86 | msgcode2 = 118 THEN
			ACTIVATEGADID(12,w2,null());
		WHEN msgcode2 = 78 | msgcode2 = 110 THEN
			ACTIVATEGADID(13,w2,null());
		WHEN msgcode2 = 82 | msgcode2 = 114 THEN
			ACTIVATEGADID(160,w2,null());
		WHEN msgid2 = 10 | msgcode2 = 76 | msgcode2 = 108 THEN
			DO;
				CALL UP_Adressen;
				IF ZW_KundenNr = K_max THEN
					ZW_KundenNr = K_max - 1;
				CALL UP_Kunden_Fuellen;
				CALL UP_B_Berechnung;
				REFRESHGLIST(conxgad2,w2,null(),-1);
			END;
		WHEN msgid2 = 11 THEN
			DO;
				Test = GETSTRGAD(w2,msgid2,null());
				IF Test ~= ZW_KundenNr THEN
					DO;
						ZW_KundenNr = TEST;
						IF DATATYPE(ZW_KundenNr,'w') THEN
							DO;
								IF ZW_KundenNr = K_max THEN
									ZW_KundenNr = K_max - 1;
								ZW_KundenNr = RIGHT("000000" || ZW_KundenNr,6);
								ACTIVATEGADID(21,w2,null());
							END;
						ELSE
							DO;
								rtezrequest("Kundennummer nicht numerisch!",,,ReqCent);
								ZW_KundenNr = "000001";
								ACTIVATEGADID(11,w2,null());
							END;
						CALL UP_Kunden_Fuellen;
						CALL UP_B_Berechnung;
						REFRESHGLIST(conxgad2,w2,null(),-1);
					END;
			END;
		WHEN msgid2 = 12 THEN
			DO;
				Test = GETSTRGAD(w2,msgid2,null());
				IF Test ~= ZW_Kunden_VorName THEN
					DO;
						ZW_Kunden_VorName = Test;
						DO I = 1 to K_max;
							I = RIGHT("000000" || I,6);
							IF POS(UPPER(ZW_Kunden_VorName),UPPER(KD_VorName.I)) THEN
								DO;
									ZW_KundenNr = I;
									I = K_max + 5;
									ACTIVATEGADID(21,w2,null());
								END;
						END;
						IF I < (K_max + 5) THEN
							DO;
								rtezrequest("Kein Kunde mit diesem Vornamen vorhanden!",,,ReqCent);
								ZW_KundenNr = GETSTRGAD(w2,11,null());
								IF ZW_KundenNr = "" THEN
									ZW_KundenNr = "000001";
								ACTIVATEGADID(12,w2,null());
							END;
						CALL UP_Kunden_Fuellen;
						CALL UP_B_Berechnung;
						REFRESHGLIST(conxgad2,w2,null(),-1);
					END;
			END;
		WHEN msgid2 = 13 THEN
			DO;
				Test = GETSTRGAD(w2,13,null());
				IF Test ~= ZW_Kunden_Name THEN
					DO;
						ZW_Kunden_Name = Test;
						DO I = 1 to K_max;
							I = RIGHT("000000" || I,6);
							IF POS(UPPER(ZW_Kunden_Name),UPPER(KD_Name.I)) THEN
								DO;
									ZW_KundenNr = I;
									ACTIVATEGADID(21,w2,null());
									I = K_max + 5;
								END;
						END;
						IF I < (K_max + 5) THEN
							DO;
								rtezrequest("Kein Kunde mit diesem Familiennamen vorhanden!",,,ReqCent);
								ZW_KundenNr = GETSTRGAD(w2,11,null());
								IF ZW_KundenNr = "" THEN
									ZW_KundenNr = "000001";
								ACTIVATEGADID(13,w2,null());
							END;
						CALL UP_Kunden_Fuellen;
						CALL UP_B_Berechnung;
						REFRESHGLIST(conxgad2,w2,null(),-1);
					END;
			END;
		WHEN msgid2 = 20 | msgid2 = 30 | msgid2 = 40 | msgid2 = 50 | msgid2 = 60 |,
			msgid2 = 70 | msgid2 = 80 | msgid2 = 90 | msgid2 =100 | msgid2 =110 |,
			msgid2 =120 | msgid2 =130 | msgid2 =140 THEN
			DO;
				CALL UP_Artikel;
				i = (msgid2 - 10) / 10;
				ZW_Art_Nr.i	= ZW_ArtikelNr;
				IF ZW_Art_Nr.i = A_max THEN
					ZW_Art_Nr.i = "000000" ||(A_max - 1);
				ZW_Art_Nr.i	= right(ZW_Art_Nr.i,6);
				Test			= ZW_Art_Nr.i;
				ZW_EPreis.i	= RIGHT(AR_ArtPreis.Test,9);
				ZW_Bez.i		= AR_ArtBez.Test;
				CALL SETSTRGADID(w2,msgid2+1,ZW_Art_Nr.i,null());
				CALL pitext(rpw2,54.5*Font_X,(1.7*i+4.2)*Font_Y,RIGHT(ZW_EPreis.i,10),apen,0,JAM2,scrfont);
				CALL pitext(rpw2,22.5*Font_X,(1.7*i+4.2)*Font_Y,LEFT(ZW_Bez.i,30),apen,0,JAM2,scrfont);
				CALL UP_B_Berechnung;
				ACTIVATEGADID(msgid2+2,w2,null());
				REFRESHGLIST(conxgad2,w2,null(),-1);
			END;
		WHEN msgid2 = 21 | msgid2 = 31 | msgid2 = 41 | msgid2 = 51 | msgid2 = 61 |,
			msgid2 = 71 | msgid2 = 81 | msgid2 = 91 | msgid2 =101 | msgid2 =111 |,
			msgid2 =121 | msgid2 =131 | msgid2 =141 THEN
			DO;
				i = (msgid2 - 11) / 10;
				Test = GETSTRGAD(w2,msgid2,null());
				IF Test ~= ZW_Art_Nr.i THEN
					DO;
						ZW_Art_Nr.i = Test
						IF ZW_Art_Nr.i = "" THEN
							DO;
								ZW_Art_Anz.i = "";
								CALL SETSTRGADID(w2,msgid2+1,ZW_Art_Anz.i,null());
								ZW_EPreis.i	= "";
								ZW_Bez.i		= "";
							END;
						ELSE
							DO;
								IF DATATYPE(ZW_Art_Nr.i,'w') THEN
									DO;
										IF ZW_Art_Nr.i > (A_max - 1) THEN
											ZW_Art_Nr.i = A_max - 1;
										ZW_Art_Nr.i = RIGHT("000000" || ZW_Art_Nr.i,6);
									END;
								ELSE
									DO;
										rtezrequest("Artikelnummer nicht numerisch, bitte prfen!",,,ReqCent);
										ZW_Art_Nr.i = "000001";
										ACTIVATEGADID(msgid2,w2,null());
									END;
								TEST = ZW_Art_Nr.i;
								ZW_EPreis.i	= AR_ArtPreis.Test;
								ZW_Bez.i		= AR_ArtBez.Test;
							END;
						CALL SETSTRGADID(w2,msgid2,ZW_Art_Nr.i,null());
						CALL pitext(rpw2,54.5*Font_X,(1.7*i+4.2)*Font_Y,RIGHT(ZW_EPreis.i,10),apen,0,JAM2,scrfont);
						CALL pitext(rpw2,22.5*Font_X,(1.7*i+4.2)*Font_Y,LEFT(ZW_Bez.i,30),apen,0,JAM2,scrfont);
						CALL UP_B_Berechnung;
						REFRESHGLIST(conxgad2,w2,null(),-1);
					END;
				END;
			WHEN msgid2 = 22 | msgid2 = 32 | msgid2 = 42 | msgid2 = 52 | msgid2 = 62 |,
				msgid2 = 72 | msgid2 = 82 | msgid2 = 92 | msgid2 =102 | msgid2 =112 |,
				msgid2 =122 | msgid2 =132 | msgid2 =142 THEN
				DO;
					i = (msgid2 - 12) / 10;
					Test = GETSTRGAD(w2,msgid2,null());
					IF Test ~= ZW_Art_Anz.i THEN
						DO;
							ZW_Art_Anz.i = Test
							IF ~DATATYPE(ZW_Art_Anz.i,'n') THEN
								DO;
									rtezrequest("Artikelanzahl nicht numerisch, bitte prfen!",,,ReqCent);
									ZW_Art_Anz.i = 1;
									ACTIVATEGADID(msgid2,w2,null());
								END;
							CALL SETSTRGADID(w2,msgid2,ZW_Art_Anz.i,null());
							IF ZW_EPreis.i > "" THEN
								CALL UP_B_Berechnung;
							REFRESHGLIST(conxgad2,w2,null(),-1);
						END;
				END;
			WHEN msgid2 = 160 THEN
				DO;
					Test = GETSTRGAD(w2,msgid2,null());
					IF Test ~= UEB_RechNr THEN
						DO;
							CALL UP_Rechnung_OK;
							UEB_RechNr = right("000000" || Test,6);
							IF UEB_RechNr > R_max THEN
								UEB_RechNr = R_max;
							ELSE IF UEB_RechNr < 1 THEN
								UEB_RechNr = "000001";
							CALL UP_Rechnung_fuellen;
						END;
				END;
			WHEN msgid2 = 161 | msgcode2 = 62 THEN
				DO;
					Test = UEB_RechNr + 1;
					CALL UP_Rechnung_OK;
					IF UEB_RechNr <= R_max THEN
						DO;
							UEB_RechNr = right("000000" || Test,6);
							CALL UP_Rechnung_fuellen;
						END;
				END;
			WHEN msgid2 = 162 | msgcode2 = 60 THEN
				DO;
					Test = UEB_RechNr - 1;
					CALL UP_Rechnung_OK;
					IF UEB_RechNr > 0 THEN
						DO;
							UEB_RechNr = right("000000" || Test,6);
							CALL UP_Rechnung_fuellen;
						END;
				END;
			WHEN msgid2 = 163 | msgclass2 = CLOSEWINDOW | msgcode2 = 69 | msgcode2 = 101 | msgcode2 = 27  THEN
				DO;
					CALL UP_Rechnung_OK;
					extime2 = 1;
				END;
			WHEN msgid2 = 164 | msgcode2 = 68 | msgcode2 = 100 THEN
				DO;
					CALL UP_Rechnung_OK;
					CALL UP_Drucken;
					ZW_KundenNr	= right("000000" || GETSTRGAD(w2,11,null()),6);
					UEB_RechNr	= right("000000" || GETSTRGAD(w2,160,null()),6);
				END;
			WHEN msgid2 = 165 THEN
				CALL UP_Rechnung_Fuellen;
			OTHERWISE
				NOP;
		END;
RETURN 1;

Auswertung3:
	SELECT
		WHEN msgcode3 = 82 | msgcode3 = 114 THEN
			ACTIVATEGADID(10,w3,null());
		WHEN msgcode3 = 75 | msgcode3 = 107 THEN
			ACTIVATEGADID(11,w3,null());
		WHEN msgid3 = 10 THEN /* Rechnungsnummer wurde eingegeben/gendert */
			DO;
				Test = GETSTRGAD(w3,10,null());
				IF Test ~= UEB_RechNr THEN
					DO;
						UEB_RechNr = TEST;
						IF DATATYPE(UEB_RechNr,'w') THEN
							DO;
								IF UEB_RechNr > (R_max - 1) THEN
									UEB_RechNr = R_max - 1;
								UEB_RechNr = RIGHT("000000" || UEB_RechNr,6);
							END;
						ELSE
							DO;
								rtezrequest("Rechnungsnummer nicht numerisch!",,,ReqCent);
								ACTIVATEGADID(10,w3,null());
								UEB_RechNr = "000001";
							END;
						CALL SETSTRGADID(w3,10,UEB_RechNr,null());
						REFRESHGLIST(conxgad3,w3,null(),-1);
					END;
			END;
		WHEN msgid3 = 11 THEN /* Kundennummer wurde eingegeben/gendert */
			DO;
				Test = GETSTRGAD(w3,11,null());
				IF Test ~= ZW_KundenNr THEN
					DO;
						ZW_KundenNr = TEST;
						IF DATATYPE(ZW_KundenNr,'w') THEN
							DO;
								IF ZW_KundenNr > (K_max - 1) THEN
									ZW_KundenNr = K_max - 1;
								ZW_KundenNr = RIGHT(("000000" || ZW_KundenNr),6);
							END;
						ELSE
							DO;
								rtezrequest("Kundennummer nicht numerisch!",,,ReqCent);
								ACTIVATEGADID(11,w3,null());
								ZW_KundenNr = "000001";
							END;
						CALL SETSTRGADID(w3,11,ZW_KundenNr,null());
						REFRESHGLIST(conxgad3,w3,null(),-1);
					END;
			END;
		WHEN msgid3 = 12 THEN
			Druckart = GETVALUE(mlabels,msgcode3*4,4,'s');
		WHEN msgid3 = 13 | msgcode3 = 80 | msgcode3 = 112 THEN
			DO;
				address COMMAND 'Printer >NIL:';
				prefs = allocmem(232);
				x = getprefs(prefs,232);
				B_laenge = GETVALUE(prefs,178,2,'n');
				call freemem(prefs,232);
			END;
		WHEN msgid3 = 14 | msgcode3 = 86 | msgcode3 = 118 THEN
			DO;
				x = rtfilerequest("ram:",,"Whlen Sie das Druckverzeichnis",,"rtfi_flags=freqf_nofiles" ReqCent);
				IF rtresult THEN;
					Druckverz = x;
			END;
		WHEN msgid3 = 15 | msgcode3 = 67 | msgcode3 = 99 THEN
			DO;
				IF Druckart = "Drucker" THEN
					DO;
						Druckfile = "t:Druck"
						Ergebnis = rtezrequest("Bitte leeres Blatt einlegen","Drucken|Abbruch",,ReqCent);
					END;
				ELSE
					DO;
						Druckfile = Druckverz || "Rechnung." || UEB_RechNr;
						Ergebnis = rtezrequest("Speichere Druck in" Druckfile,"OK|Abbruch",,ReqCent);
					END;
				IF Ergebnis = 1 then
					DO;
						CALL UP_R_Berechnung;
						Z.1	= D_Rueck
						IF D_YAbst < 2 THEN
							DO I = D_YAbst TO 2;
								Z.1 = Z.1 || LF;
							END;
						X = 7-D_XAbst;
						IF X < 0 THEN
							X = 0;
						Z.1	= Z.1 || Copies(" ",X) left(FI_Anrede,55) || right(datum,10);
						Z.2	= Copies(" ",X) FI_VorName FI_Name;
						Z.3	= Copies(" ",X) FI_Strasse LF;
						Z.4	= Copies(" ",X) FI_PLZ FI_Ort LF LF LF LF;
						Z.5	= Copies(" ",X) D_SKlein || D_UEin || FI_Vorname FI_Name "*" FI_Strasse "*" FI_PLZ FI_Ort || D_UAus || D_SStand || LF;
						Z.6	= Copies(" ",X) KD_Anrede.ZW_KundenNr;
						Z.7	= Copies(" ",X) KD_VorName.ZW_KundenNr KD_Name.ZW_KundenNr;
						Z.8	= Copies(" ",X) KD_Strasse.ZW_KundenNr LF;
						Z.9	= Copies(" ",X) KD_PLZ.ZW_KundenNr KD_Ort.ZW_KundenNr
						IF FI_Land ~= KD_Land.ZW_KundenNr THEN
							Z.9 = Z.9 || "   (" || KD_Land.ZW_KundenNr || ")";
						Z.9  = Z.9 || LF || LF || LF;
						Z.10 = Copies(" ",X) "Kundennr:" ZW_KundenNr;
						Z.11 = Copies(" ",X) "Rechnung:" UEB_RechNr;
						Z.12 = Copies(" ",X) "Datum   :" RE_Datum.UEB_RechNr LF;
						Z.13 = Copies(" ",X) "Art.Nr Anzahl" left(" Artikelbezeichnung",33) "Preis:     Summe:";
						Z.14 = Copies(" ",X) Copies("-",65);
						DO i = 1 to I_max;
							j = i + 14;
							IF ZW_Art_Nr.i > "" THEN
								Z.j = Copies(" ",X) ZW_Art_Nr.i right(ZW_Menge.i,6) || "  " || left(ZW_ArtBez.i,28) right(ZW_EPreis.i,10) right(ZW_Summe.i,10);
							ELSE
								Z.j = "";
						END;
						IF I_max = 11 THEN
							DO;
								Z.26 = "";
								Z.27 = "";
							END;
						IF ZW_Rab > 0 THEN
							DO;
								TEXT = "Abzglich"  ZW_Rabatt  "% Rabatt =";
								Z.28 = Copies(" ",X) left(TEXT,55) right(ZW_Rab,9);
							END;
						ELSE
							Z.28 = "";
						Z.29 = Copies(" ",X) Copies("-",65);
						Z.30 = Copies(" ",X) left("Gesamt Netto DM:",54) right(ZW_Endsumme-ZW_MWSt,10);
						Z.31 = Copies(" ",X) left("zzgl. Mehrwertsteuer" MWSt_Satz.1 "% bzw." MWSt_Satz.2 "%",55) ZW_MWSt;
						Z.32 = Copies(" ",X) left("Gesamt Brutto DM:",54) ZW_Endsumme;
						Z.33 = Copies(" ",X) Copies("=",65) LF LF;
						Z.34 = Copies(" ",X) D_KEin || "Bitte bei allen Bestellungen die Kundennummer angeben" D_KAus LF;
						Z.35 = Copies(" ",X) "Bankverbindung:"
						Z.36 = Copies(" ",X) FI_BankBez "  BLZ:" FI_BLZ "  Konto:" FI_Konto LF LF;
						Z.37 = Copies(" ",X) "Vielen Dank fr Ihren Auftrag" D_Ende;
						Druckdat = "Rechnung";
						OPEN(Druckdat,Druckfile,'write');
						DO i = 1 to 37;
							WRITELN(Druckdat,Z.i);
						END;
						CLOSE(Druckdat);
						IF Druckart = "Drucker" THEN
							address COMMAND "run >NIL: copy t:Druck to" Druckport;
					END;
			END;
		WHEN msgid3 = 16 | msgcode3 = 84 | msgcode3 = 116 THEN
			DO;
				IF Druckart = "Drucker" THEN
					DO;
						Druckfile = "t:Druck"
						Ergebnis = rtezrequest("Bitte leere Paketkarte einlegen","Einfach|Nachnahme|Abbruch",,ReqCent);
					END;
				ELSE
					DO;
						Druckfile = Druckverz || "Paketkarte." || UEB_RechNr;
						Ergebnis = rtezrequest("Speichere Druck in" Druckfile,"Einfach|Nachnahme|Abbruch",,ReqCent);
					END;
				IF Ergebnis ~= 0 then
					DO;
						CALL UP_R_Berechnung;
						Z.1	= D_Rueck
						IF D_YAbst < 2 THEN
							DO I = D_YAbst TO 2;
								Z.1 = Z.1 || LF;
							END;
						X = 2-D_XAbst;
						IF X < 0 THEN
							X = 0;
						Z.1 = Z.1 || Copies(" ",X) FI_VorName FI_Name LF;
 						Z.2 = Copies(" ",X) FI_Strasse LF;
						Z.3 = Copies(" ",X) FI_PLZ FI_Ort LF LF;
						IF Ergebnis = 1 THEN
							Z.4 = "";
						ELSE
							Z.4 = Copies(" ",30+X) D_CRot  "Nachnahme=" ZW_Endsumme D_CSchw;
						Z.5 = Copies(" ",X) left(FI_BankKurz,29);
						Z.6 = Copies(" ",X) "BLZ:" FI_BLZ;
						Z.7 = Copies(" ",X) "Konto:" FI_Konto LF LF;
						Z.8 = Copies(" ",30+X) KD_VorName.ZW_KundenNr KD_Name.ZW_KundenNr LF;
						Z.9 = Copies(" ",30+X) KD_Strasse.ZW_KundenNr LF LF LF;
						Z.10 = D_SGross  KD_PLZ.ZW_KundenNr D_SStand || CR || Copies(" ",30+X) KD_Ort.ZW_KundenNr
						IF FI_Land ~= KD_Land.ZW_KundenNr THEN
							Z.10 = Z.10 || "   (" || KD_Land.ZW_KundenNr || ")";
						Z.10 = Z.10 || D_Ende;
						Druckdat = "Paketkarte";
						OPEN(Druckdat,Druckfile,'write');
						DO i = 1 to 10;
							WRITELN(Druckdat,Z.i);
						END;
						CLOSE(Druckdat);
						IF Druckart = "Drucker" THEN
							address COMMAND "run >NIL: copy t:Druck to" Druckport;
					END;
			END;
		WHEN msgid3 = 17 | msgcode3 = 90 | msgcode3 = 122 THEN
			DO;
				IF Druckart = "Drucker" THEN
					DO;
						Druckfile = "t:Druck"
						Ergebnis = rtezrequest("Bitte leeren Zahlschein einlegen","Klein|Gro|Abbruch",,ReqCent);
					END;
				ELSE
					DO;
						Druckfile = Druckverz || "Zahlschein." || UEB_RechNr;
						Ergebnis = rtezrequest("Speichere Druck in" Druckfile,"Klein|Gro|Abbruch",,ReqCent);
					END;
				IF Ergebnis ~= 0 then
					DO;
						CALL UP_R_Berechnung;
						Z.1	= D_Rueck
						IF D_YAbst < 5 THEN
							DO I = D_YAbst TO 4;
								Z.1 = Z.1 || LF;
							END;
						X = 3-D_XAbst;
						IF X < 0 THEN
							X = 0;
						Z.8  = UP_Sperr(left(FI_Name Fi_VorName,26));
						Z.1  = Z.1 || Copies(" ",X) || Z.8 || LF;
						Z.8  = UP_Sperr(COMPRESS(FI_Konto));
						Z.9  = UP_Sperr(COMPRESS(FI_BLZ));
						Z.2  = Copies(" ",X) || left(Z.8,10) || CR || Copies(" ",38+X) || Z.9 || LF;
						Z.8  = UP_Sperr(left(FI_BankBez,26))
						Z.3  = Copies(" ",X) || Z.8 || LF;
						i = UP_Sperr(ZW_Endsumme - 3.00);
						Z.4  = Copies(" ",X+30) || i || LF;
						Z.8  = UP_Sperr("ReNr:" UEB_RechNr);
						Z.5  = Copies(" ",X) || Z.8 || LF || LF || LF;
						Z.8  = UP_Sperr(left(KD_Name.ZW_KundenNr KD_VorName.ZW_KundenNr || "," KD_Ort.ZW_KundenNr,27));
						Z.6  = Copies(" ",X) || Z.8 || LF;
						Z.7  = Copies(" ",22+X) || i;
						Druckdat = "Zahlschein"
						OPEN(Druckdat,Druckfile,'write');
						IF Ergebnis = 1 THEN
							max = 7;
						ELSE
							DO;
								max = 15;
								Z.8  = LF || LF || LF || LF || LF || LF || LF || LF || LF || Copies(" ",16+X) || FI_Name FI_VorName;
								Z.9  = Copies(" ",16+X) || FI_Strasse;
								Z.10 = Copies(" ",16+X) || FI_PLZ FI_Ort || LF || LF || LF || LF || LF || LF;
								ZW_Endsumme = right(ZW_Endsumme,9);
								Z.11 = Copies(" ",X-1) || right(left(ZW_Endsumme,6),5) || right(ZW_Endsumme,27) LF;
								Z.12 = Copies(" ",X-1) || left(KD_Name.ZW_KundenNr KD_VorName.ZW_KundenNr,15) Copies(" ",9) KD_VorName.ZW_KundenNr KD_Name.ZW_KundenNr LF;
								Z.13 = Copies(" ",X-1) || left(KD_Strasse.ZW_KundenNr,15) Copies(" ",9) KD_Strasse.ZW_KundenNr LF;
								Z.14 = Copies(" ",X-1) || left(KD_PLZ.ZW_KundenNr KD_Ort.ZW_KundenNr,15);
								Z.15 = Copies(" ",24+X) || KD_PLZ.ZW_KundenNr KD_Ort.ZW_KundenNr;
							END;
						Z.max = Z.max || D_Ende;
						DO i = 1 to max;
							WRITELN(Druckdat,Z.i);
						END;
						CLOSE(Druckdat);
						IF Druckart = "Drucker" THEN
							address COMMAND "run >NIL: copy t:Druck to" Druckport;
					END;
			END;
		WHEN msgid3 = 18 | msgcode3 = 77 | msgcode3 = 109 THEN
			DO;
				MAdd.01 = 0;
				MAdd.02 = 31;
				i = right(datum,4);
				i = i / 4;
				i = lastpos('.',i);
				IF i = 0 THEN
					MAdd.03 = MAdd.02 + 29;
				ELSE
					MAdd.03 = MAdd.02 + 28;
				MAdd.04 = MAdd.03 + 31;
				MAdd.05 = MAdd.04 + 30;
				MAdd.06 = MAdd.05 + 31;
				MAdd.07 = MAdd.06 + 30;
				MAdd.08 = MAdd.07 + 31;
				MAdd.09 = MAdd.08 + 31;
				MAdd.10 = MAdd.09 + 30;
				MAdd.11 = MAdd.10 + 31;
				MAdd.12 = MAdd.11 + 30;
				Monat	= SUBSTR(RE_Datum.UEB_RechNr,4,2);
				Tag	= LEFT(RE_Datum.UEB_RechNr,2);
				Jahr	= RIGHT(RE_Datum.UEB_RechNr,4);
				Rec	= Tag + MAdd.Monat + (365.2423482188 * Jahr);
				Rec	= trunc(Rec)
				Nun	= Date(b);
				Dif	= Nun - Rec;
				CALL UP_R_Berechnung;
				Select;
					WHEN RE_Mahnung.UEB_RechNr = 1 THEN
						DO;
							MahnNr = rtezrequest("Es wurde bereits eine Mahnung gedruckt!" LF ||,
														"Seit Rechnungserstellung sind" Dif "Tage vergangen.",
														,"2.Mahnung|1.Mahnung|Abbruch",,ReqCent);
							SELECT;
								WHEN MahnNr = 1 THEN
									MahnNr = 2;
								WHEN MahnNr = 2 THEN
									MahnNr = 1;
								OTHERWISE
									NOP;
							END;
						END;
					WHEN RE_Mahnung.UEB_RechNr = 2 THEN
						DO;
							MahnNr = rtezrequest("Es wurden bereits zwei Mahnungen gedruckt!" LF ||,
														"Seit Rechnungserstellung sind" Dif "Tage vergangen.",
														,"3.Mahnung|2.Mahnung|1.Mahnung|Abbruch",,ReqCent);
							SELECT;
								WHEN MahnNr = 1 THEN
									MahnNr = 3;
								WHEN MahnNr = 3 THEN
									MahnNr = 1;
								OTHERWISE
									NOP;
							END;
						END;
					WHEN RE_Mahnung.UEB_RechNr = 3 THEN
						DO;
							MahnNr = rtezrequest("Es wurden bereits drei Mahnungen gedruckt!" LF ||,
														"Seit Rechnungserstellung sind" Dif "Tage vergangen" LF ||,
														"Es ist KEINE weiter Mahnung mglich",
														,"Abbruch|3.Mahnung|2.Mahnung|1.Mahnung",,ReqCent);
							SELECT;
								WHEN MahnNr = 0 THEN
									MahnNr = 1;
								WHEN MahnNr = 1 THEN
									MahnNr = 0;
								WHEN MahnNr = 2 THEN
									MahnNr = 3;
								WHEN MahnNr = 3 THEN
									MahnNr = 2;
								OTHERWISE
									NOP;
							END;
						END;
					OTHERWISE
						MahnNr = rtezrequest("Es wurde noch keine Mahnung gedruckt!" LF ||,
													"Seit Rechnungserstellung sind" Dif "Tage vergangen",
													,"1.Mahnung|Abbruch",,ReqCent);
				END;
				IF MahnNr = 0 THEN
					Ergebnis = 0;
				ELSE
					DO;
						IF Druckart = "Drucker" THEN
							DO;
								Druckfile = "t:Druck"
								Ergebnis = rtezrequest("Bitte leeres Blatt einlegen","Drucken|Abbruch",,ReqCent);
							END;
						ELSE
							DO;
								Druckfile = Druckverz || "Mahnung-" || MahnNr || "."  || UEB_RechNr;
								Ergebnis = rtezrequest("Speichere Druck in" Druckfile,"OK|Abbruch",,ReqCent);
							END;
					END;
				IF Ergebnis = 1 then
					DO;
						IF RE_Mahnung.UEB_RechNr < MahnNr THEN
							RE_Mahnung.UEB_RechNr = MahnNr;
						CALL UP_R_Berechnung;
						Z.1	= D_Rueck
						IF D_YAbst < 2 THEN
							DO I = D_YAbst TO 2;
								Z.1 = Z.1 || LF;
							END;
						X = 7-D_XAbst;
						IF X < 0 THEN
							X = 0;
						Z.1  = Z.1 || Copies(" ",X) || left(FI_Anrede,55) || right(datum,10);
						Z.2  = Copies(" ",X) || FI_VorName FI_Name;
						Z.3  = Copies(" ",X) || FI_Strasse LF;
						Z.4  = Copies(" ",X) || FI_PLZ FI_Ort LF LF LF LF;
						Z.5  = Copies(" ",X) || D_SKlein || D_UEin || FI_Vorname FI_Name "*" FI_Strasse "*" FI_PLZ FI_Ort || D_UAus || D_SStand || LF;
						Z.6  = Copies(" ",X) || KD_Anrede.ZW_KundenNr;
						Z.7  = Copies(" ",X) || KD_VorName.ZW_KundenNr KD_Name.ZW_KundenNr;
						Z.8  = Copies(" ",X) || KD_Strasse.ZW_KundenNr LF;
						Z.9  = Copies(" ",X) || KD_PLZ.ZW_KundenNr KD_Ort.ZW_KundenNr
						IF FI_Land ~= KD_Land.ZW_KundenNr THEN
							Z.9 = Z.9 || "   (" || KD_Land.ZW_KundenNr || ")";
						Z.9  = Z.9 || LF || LF || LF || LF || LF;
						Z.10 = Copies(" ",X) || "Kundennr:" ZW_KundenNr;
						Z.11 = Copies(" ",X) || "Betreff Rechnung" UEB_RechNr "vom" RE_Datum.UEB_RechNr || LF || LF || LF;
						Z.12 = Copies(" ",X) || KD_BAnr.ZW_KundenNr || LF;
						SELECT
							WHEN MahnNr = 1 THEN
								DO;
									ZW_SumPMahn = ZW_Endsumme + 1.50;
									Z.13 = Copies(" ",X) || "leider  mu ich  Ihnen mitteilen,  da Sie meine  Rechnung" UEB_RechNr "vom";
									Z.14 = Copies(" ",X) || RE_Datum.UEB_RechNr "bisher  noch nicht bezahlt  haben.  Ich mchte Sie deshalb";
									Z.15 = Copies(" ",X) || "bitten, dieses Versumnis nachzuholen und den ausstehenden Betrag von";
									Z.16 = Copies(" ",X) || right(ZW_Endsumme,9) "DM  +  1.50 DM  Mahngebhr  (Gesamt:" right(ZW_SumPMahn,9) || "DM)  auf mein";
									Z.17 = Copies(" ",X) || "Konto zu berweisen.";
									Z.18 = LF;
								END;
							WHEN MahnNr = 2 THEN
								DO;
									ZW_SumPMahn = ZW_Endsumme + 3.00;
									Z.13 = Copies(" ",X) || "leider  mu ich  Ihnen mitteilen,  da Sie meine  Rechnung" UEB_RechNr "vom";
									Z.14 = Copies(" ",X) || RE_Datum.UEB_RechNr "trotz nochmaliger Aufforderung  bisher  noch nicht bezahlt";
									Z.15 = Copies(" ",X) || "haben. Ich mchte Sie deshalb nachdrcklich dazu auffordern, Ihr Ver-";
									Z.16 = Copies(" ",X) || "sumnis nachzuholen  und den  ausstehenden Betrag von " right(ZW_Endsumme,9) "DM +";
									Z.17 = Copies(" ",X) || "3.00 DM Mahngebhr  (Gesamt:" right(ZW_SumPMahn,9) || ") auf mein Konto zu berweisen!";
									Z.18 = LF;
								END;
							WHEN MahnNr = 3 THEN
								DO;
									ZW_SumPMahn = ZW_Endsumme + 4.50;
									Z.13 = Copies(" ",X) || "trotz zweier Mahnungen haben Sie meine Rechnung" UEB_RechNr "vom" RE_Datum.UEB_RechNr;
									Z.14 = Copies(" ",X) || "nicht berwiesen!  Dies ist meine letzte Aufforderung, Ihr Versumnis";
									Z.15 = Copies(" ",X) || "nachzuholen  und den ausstehenden Betrag von " right(ZW_Endsumme,9) "DM +  4.50 DM";
									Z.16 = Copies(" ",X) || "Mahngebhr (Gesamt:" right(ZW_SumPMahn,9) || ") auf mein Konto zu berweisen!";
									Z.17 = Copies(" ",X) || "Wenn Sie meiner  Aufforderung nicht  nachkommen,  behalte ich mir ge-";
									Z.18 = Copies(" ",X) || "richtliche Schritte vor." || LF || LF;
								END;
							OTHERWISE
								NOP;
						END;
						Z.19 = Copies(" ",X) || "Bankverbindung:";
						Z.20 = Copies(" ",X) || FI_BankBez "  BLZ:" FI_BLZ "  Konto:" FI_Konto LF;
						Z.21 = Copies(" ",X) || "Mit freundlichen Gren" || LF || LF || LF;
						Z.22 = Copies(" ",X) || FI_VorName FI_Name D_Ende;
						Druckdat = "Mahnung";
						OPEN(Druckdat,Druckfile,'write');
						DO i = 1 to 22;
							WRITELN(Druckdat,Z.i);
						END;
						CLOSE(Druckdat);
						IF Druckart = "Drucker" THEN
							address COMMAND "run >NIL: copy t:Druck to" Druckport;
					END;
			END;
		WHEN msgid3 = 19 | msgcode3 = 69 | msgcode3 = 101 THEN
			DO;
				IF Druckart = "Drucker" THEN
					DO;
						Druckfile = "t:Druck"
						Ergebnis = rtezrequest("Bitte Etiketten einlegen" LF ||,
														"Firmen oder Kundenetiketten?",
														,"Firma|Kunde|Abbruch",,ReqCent);
					END;
				ELSE
					DO;
						Druckfile = Druckverz || "Etiketten." || ZW_KundenNr;
						Ergebnis = rtezrequest("Speichere Druck in" Druckfile LF ||,
														"Firmen oder Kundenetiketten?",
														,"Firma|Kunde|Abbruch",,ReqCent);
					END;
				IF Ergebnis = 1 then
					DO;
						Z.1 = LF Fi_Anrede;
						Z.2 = "" FI_VorName FI_Name;
						Z.3 = "" FI_Strasse;
						Z.4 = LF FI_PLZ FI_Ort;
						Z.5 = LF LF;
					END;
				IF Ergebnis = 2 then
					DO;
						Z.1 = LF KD_Anrede.ZW_KundenNr;
						Z.2 = "" KD_VorName.ZW_KundenNr KD_Name.ZW_KundenNr;
						Z.3 = "" KD_Strasse.ZW_KundenNr;
						Z.4 = LF KD_PLZ.ZW_KundenNr KD_Ort.ZW_KundenNr;
						IF FI_Land = KD_Land.ZW_KundenNr THEN
							Z.5 = LF LF;
						ELSE
							Z.5 = " (" || KD_Land.ZW_KundenNr || ")" LF LF;
					END;
				IF Ergebnis > 0 then
					DO;
						Anzahl = rtgetlong(, , "Wieviel Etiketten wollen Sie drucken:", , ,"rtgl_min = 1 rtgl_max = 999");
						Druckdat = "Etikett";
						OPEN(Druckdat,Druckfile,'write');
						WRITELN(Druckdat,D_Rueck);
						DO j = 1 to Anzahl;
							DO i = 1 to 5;
								WRITELN(Druckdat,Z.i);
							END;
						END;
						WRITELN(Druckdat,D_Ende);
						CLOSE(Druckdat);
						IF Druckart = "Drucker" THEN
							address COMMAND "run >NIL: copy t:Druck to" Druckport;
					END;
			END;
		WHEN msgid3 = 20 | msgcode3 = 85 | msgcode3 = 117 THEN
			DO;
				IF Druckart = "Drucker" THEN
					DO;
						Druckfile = "t:Druck"
						Ergebnis = rtezrequest("Bitte Umschlag einlegen." LF ||,
														"Welches Format wnschen Sie?",
														,"C6/B6|DL|Abbruch",,ReqCent);
					END;
				ELSE
					DO;
						Druckfile = Druckverz || "Umschlge." || ZW_KundenNr;
						Ergebnis = rtezrequest("Speichere Druck in" Druckfile LF ||,
														"Welches Format wnschen Sie?",
														,"C6/B6|DL|Abbruch",,ReqCent);
					END;
				IF Ergebnis > 0 then
					DO;
						Z.1	= D_Rueck
						IF D_YAbst < 2 THEN
							DO I = D_YAbst TO 2;
								Z.1 = Z.1 || LF;
							END;
						X = 3-D_XAbst;
						IF X < 0 THEN
							X = 0;
						SELECT
							WHEN Ergebnis = 1 then
								Breite = 22+X;
							WHEN Ergebnis = 2 then
								Breite = 31+X;
							OTHERWISE
								NOP;
						END;
						Z.1 = Z.1 || Copies(" ",X) || Fi_Anrede;
						Z.2 = Copies(" ",X) || FI_VorName FI_Name;
						Z.3 = Copies(" ",X) || FI_Strasse LF;
						Z.4 = Copies(" ",X) || FI_PLZ FI_Ort LF LF LF LF LF LF;
						Z.5 = Copies(" ",Breite) KD_Anrede.ZW_KundenNr ;
						Z.6 = Copies(" ",Breite) KD_VorName.ZW_KundenNr KD_Name.ZW_KundenNr;
						Z.7 = Copies(" ",Breite) KD_Strasse.ZW_KundenNr LF;
						Z.8 = Copies(" ",Breite) KD_PLZ.ZW_KundenNr KD_Ort.ZW_KundenNr;
						IF FI_Land ~= KD_Land.ZW_KundenNr THEN
							Z.8 = Z.8 "(" || KD_Land.ZW_KundenNr || ")";
						Z.8 = Z.8 || D_Ende;
						Druckdat = "Umschlag";
						OPEN(Druckdat,Druckfile,'write');
						DO i = 1 to 8;
							WRITELN(Druckdat,Z.i);
						END;
						CLOSE(Druckdat);
						IF Druckart = "Drucker" THEN
							address COMMAND "run >NIL: copy t:Druck to" Druckport;
					END;
			END;
		WHEN msgid3 = 21 | msgcode3 = 76 | msgcode3 = 108 THEN
			DO;
				IF Druckart = "Drucker" THEN
					DO;
						Druckfile = "t:Druck"
						Ergebnis = rtezrequest("Bitte leeres Blatt einlegen","OK|Abbruch",,ReqCent);
					END;
				ELSE
					DO;
						Druckfile = Druckverz || "Artikelliste";
						Ergebnis = rtezrequest("Speichere Druck in" Druckfile,"OK|Abbruch",,ReqCent);
					END;
				IF Ergebnis > 0 then
					DO;
						Druckdat = "Artikel"
						OPEN(Druckdat,Druckfile,'write');
						Z.6 = "ArtNr  Artikelbezeichnung                 Preis MWSt Buchk."
						Z.7 = Copies("-",59);
						WRITELN(Druckdat,D_Rueck || Z.6);
						WRITELN(Druckdat,Z.7);
						Zeile = 3;
						Z.6 = FF || Z.6;
						DO j = 1 to (A_max - 1)
							j = right("000000" || j,6);
							Z.1 = j left(AR_ArtBez.j,30) right(AR_ArtPreis.j,9) right(Ar_ArtMWSt.j,4) right(AR_ArtBuch.j,6);
							Zeile = Zeile + 1;
							IF Zeile > B_laenge THEN
								DO;
									WRITELN(Druckdat,Z.6);
									WRITELN(Druckdat,Z.7);
									Zeile = 3;
								END;
							WRITELN(Druckdat,Z.1);
						END;
						Z.1 = LF || "Ende der Auflistung" D_Ende;
						WRITELN(Druckdat,Z.1);
						CLOSE(Druckdat);
						IF Druckart = "Drucker" THEN
							address COMMAND "run copy >NIL: t:Druck to" Druckport;
					END;
			END;
		WHEN msgid3 = 22 | msgcode3 = 83 | msgcode3 = 115 THEN
			DO;
				IF Druckart = "Drucker" THEN
					DO;
						Druckfile = "t:Druck"
						Ergebnis = rtezrequest("Bitte leeres Blatt einlegen","OK|Abbruch",,ReqCent);
					END;
				ELSE
					DO;
						Druckfile = Druckverz || "Kundenliste";
						Ergebnis = rtezrequest("Speichere Druck in" Druckfile,"OK|Abbruch",,ReqCent);
					END;
				IF Ergebnis > 0 then
					DO;
						Druckdat = "Kunden"
						OPEN(Druckdat,Druckfile,'write');
						Z.6 = "Kunde  Vorname    Name       Strae               PLZ   Ort"
						Z.7 = Copies("-",71);
						WRITELN(Druckdat,D_Rueck || Z.6);
						WRITELN(Druckdat,Z.7);
						Zeile = 3;
						Z.6 = FF || Z.6;
						DO j = 1 to (K_max - 1);
							j = "000000" || j;
							j = right(j,6);
							Z.1 = j left(KD_Vorname.j,10) left(KD_Name.j,10) left(KD_Strasse.j,20) left(KD_PLZ.j,5) left(KD_Ort.j,15);
							Zeile = Zeile + 1;
							IF Zeile > B_laenge THEN
								DO;
									WRITELN(Druckdat,Z.6);
									WRITELN(Druckdat,Z.7);
									Zeile = 3;
								END;
							WRITELN(Druckdat,Z.1);
						END;
						Z.1 = LF || "Ende der Auflistung" D_Ende;
						WRITELN(Druckdat,Z.1);
						CLOSE(Druckdat);
						IF Druckart = "Drucker" THEN
							address COMMAND "run >NIL: copy t:Druck to" Druckport
					END;
			END;
		WHEN msgid3 = 23 | msgcode3 = 65 | msgcode3 = 97 THEN
			DO;
				jahr = rtgetlong(, , "Fr welches Jahr soll gedruckt werden :", , ,"rtgl_min = 1 rtgl_may = 9999");
				IF Druckart = "Drucker" THEN
					DO;
						Druckfile = "t:Druck"
						Ergebnis = rtezrequest("Bitte leeres Blatt einlegen","OK|Abbruch",,ReqCent);
					END;
				ELSE
					DO;
						Druckfile = Druckverz || "Einnahmen." || jahr;
						Ergebnis = rtezrequest("Speichere Druck in" Druckfile,"OK|Abbruch",,ReqCent);
					END;
				IF Ergebnis > 0 then
					DO;
						Z.6	= "Re.Nr  Datum      Ku.Nr  Art.Nr Anzahl     E.Preis       Summe    Endsumme"
						Z.7	= Copies("-",74);
						jahr_l	= LENGTH(jahr);
						Endsumme	= 0;
						MWSt		= 0;
						Druckdat	= "Einnahmen";
						OPEN(Druckdat,Druckfile,'write');
						WRITELN(Druckdat,D_Rueck || Z.6);
						WRITELN(Druckdat,Z.7);
						Zeile = 3;
						Z.6 = FF || Z.6;
						DO k = 1 to (R_max - 1);
							l = right("000000" || k,6);
							IF jahr = right(RE_Datum.l,jahr_l) THEN
								DO;
									UEB_RechNr = l;
									CALL UP_R_Berechnung;
									Z.1 = l RE_Datum.l RE_Kunde.l RE_Art.1.l right(RE_Anz.1.l,6) right(ZW_Epreis.1,11) right(ZW_Summe.1,11);
									ZEILE = ZEILE + 1;
									IF Zeile > B_laenge THEN
										DO;
											WRITELN(Druckdat,Z.6);
											WRITELN(Druckdat,Z.7);
											Zeile = 3;
										END;
									WRITELN(Druckdat,Z.1);
									DO i = 2 TO 12;
										IF RE_Anz.i.l > 0 THEN
											DO;
												Z.1 = Copies(" ",24) RE_Art.i.l right(RE_Anz.i.l,6) right(ZW_Epreis.i,11) right(ZW_Summe.i,11);
												ZEILE = ZEILE + 1;
												IF Zeile > B_laenge THEN
													DO;
														WRITELN(Druckdat,Z.6);
														WRITELN(Druckdat,Z.7);
														Zeile = 3;
													END;
												WRITELN(Druckdat,Z.1);
											END;
									END;
									Z.1 = Copies(" ",24) right(RE_Art.13.l,6) right(RE_Anz.13.l,6) right(ZW_Epreis.13,11) right(ZW_Summe.13,11) right(ZW_Endsumme,11) LF;
									ZEILE = ZEILE + 2;
									IF Zeile > B_laenge THEN
										DO;
											WRITELN(Druckdat,Z.6);
											WRITELN(Druckdat,Z.7);
											Zeile = 3;
										END;
									WRITELN(Druckdat,Z.1);
									Endsumme	= Endsumme	+ ZW_Endsumme;
									MWSt		= MWSt		+ ZW_MWSt;
									ENetto	= Endsumme	- MWSt;
								END;
						END;
						Z.1 = Copies("-",74);
						Z.2 = "Endsumme (Netto)  =" Copies(" ",38) right(ENetto,15);
						Z.3 = "Mehrwertsteuer    =" Copies(" ",38) right(MWSt,15);
						Z.4 = "Endsumme (Brutto) =" Copies(" ",38) right(Endsumme,15);
						Z.5 = Copies("=",74) D_Ende;
						IF Zeile > (B_laenge - 5) THEN
							DO;
								WRITELN(Druckdat,Z.6);
								WRITELN(Druckdat,Z.7);
								Zeile = 3;
							END;
						DO i = 1 TO 5;
							WRITELN(Druckdat,Z.i);
						END;
						CLOSE(Druckdat);
						IF Druckart = "Drucker" THEN
							address COMMAND "run >NIL: copy t:Druck to" Druckport;
					END;
			END;
		WHEN msgclass3 = CLOSEWINDOW | msgcode3 = 27 THEN
			extime3 = 1;
		OTHERWISE
			NOP;
	END;
RETURN 1;

Auswertung4:
	SELECT
		WHEN msgcode4	= 86 | msgcode4 = 118 THEN
			ACTIVATEGADID(10,w4,null());
		WHEN msgid4		= 10 THEN
			ZW_VorName	= GETSTRGAD(w4,10,null());
		WHEN msgcode4	= 78 | msgcode4 = 110 THEN
			ACTIVATEGADID(11,w4,null());
		WHEN msgid4		= 11 THEN
			ZW_Name     = GETSTRGAD(w4,11,null());
		WHEN msgcode4	= 83 | msgcode4 = 115 THEN
			ACTIVATEGADID(12,w4,null());
		WHEN msgid4		= 12 THEN
			ZW_Strasse	= GETSTRGAD(w4,12,null());
		WHEN msgcode4	= 80 | msgcode4 = 112 THEN
			ACTIVATEGADID(13,w4,null());
		WHEN msgid4		= 13 THEN
			ZW_PLZ		= GETSTRGAD(w4,13,null());
		WHEN msgcode4	= 79 | msgcode4 = 111 THEN
			ACTIVATEGADID(14,w4,null());
		WHEN msgid4		= 14 THEN
			ZW_Ort		= GETSTRGAD(w4,14,null());
		WHEN msgcode4	= 76 | msgcode4 = 108 THEN
			ACTIVATEGADID(15,w4,null());
		WHEN msgid4		= 15 THEN
			ZW_Land		= GETSTRGAD(w4,15,null());
		WHEN msgcode4	= 71 | msgcode4 = 103 THEN
			ACTIVATEGADID(16,w4,null());
		WHEN msgid4		= 16 THEN
			ZW_GebTag	= GETSTRGAD(w4,16,null());
		WHEN msgcode4	= 84 | msgcode4 = 116 THEN
			ACTIVATEGADID(17,w4,null());
		WHEN msgid4		= 17 THEN
			ZW_Tel		= GETSTRGAD(w4,17,null());
		WHEN msgcode4	= 70 | msgcode4 = 102 THEN
			ACTIVATEGADID(18,w4,null());
		WHEN msgid4		= 18 THEN
			ZW_Fax		= GETSTRGAD(w4,18,null());
		WHEN msgcode4	= 220 | msgcode4 = 252 THEN
			ACTIVATEGADID(19,w4,null());
		WHEN msgid4		= 19 THEN
			ZW_Dfue		= GETSTRGAD(w4,19,null());
		WHEN msgcode4	= 49 THEN
			ACTIVATEGADID(20,w4,null());
		WHEN msgid4		= 20 THEN
			ZW_EMail1	= GETSTRGAD(w4,20,null());
		WHEN msgcode4	= 50 THEN
			ACTIVATEGADID(21,w4,null());
		WHEN msgid4		= 21 THEN
			ZW_EMail2	= GETSTRGAD(w4,21,null());
		WHEN msgcode4	= 51 THEN
			ACTIVATEGADID(22,w4,null());
		WHEN msgid4		= 22 THEN
			ZW_EMail3	= GETSTRGAD(w4,22,null());
		WHEN msgcode4	= 65 | msgcode4 = 97 THEN
			ACTIVATEGADID(23,w4,null());
		WHEN msgid4		= 23 THEN
			ZW_Anrede	= GETSTRGAD(w4,23,null());
		WHEN msgcode4	= 66 | msgcode4 = 98 THEN
			ACTIVATEGADID(24,w4,null());
		WHEN msgid4		= 24 THEN
			ZW_BAnr		= GETSTRGAD(w4,24,null());
		WHEN msgcode4	= 75 | msgcode4 = 107 THEN
			ACTIVATEGADID(25,w4,null());
		WHEN msgid4		= 25 THEN
			ZW_Komm		= GETSTRGAD(w4,25,null());
		WHEN msgcode4	= 46 | msgcode4 = 58 THEN
			ACTIVATEGADID(26,w4,null());
		WHEN msgid4		= 26 THEN
			ZW_BankBez	= GETSTRGAD(w4,26,null());
		WHEN msgcode4	= 90 | msgcode4 = 122 THEN
			ACTIVATEGADID(27,w4,null());
		WHEN msgid4		= 27 THEN
			ZW_BLZ		= GETSTRGAD(w4,27,null());
		WHEN msgcode4	= 42 | msgcode4 = 43 THEN
			ACTIVATEGADID(28,w4,null());
		WHEN msgid4 = 28 THEN
			ZW_Konto		= GETSTRGAD(w4,28,null());
		WHEN msgcode4	= 85 | msgcode4 = 117 THEN
			ACTIVATEGADID(29,w4,null());
		WHEN msgid4		= 29 THEN
			ZW_BankKurz = GETSTRGAD(w4,29,null());
		WHEN msgcode4	= 82 | msgcode4 = 114 THEN
			ACTIVATEGADID(30,w4,null());
		WHEN msgid4 = 30 THEN
			ZW_Rabatt   = GETSTRGAD(w4,30,null());
		WHEN msgid4 = 40 | msgcode4 = 73 | msgcode4 = 105 THEN
			DO;
				CALL UP_Kunde_OK;
				Druckart = GETVALUE(mlabels2,msgcode4*4,4,'s');
				SELECT;
					WHEN Druckart = "Firma" THEN
						DO;
							CALL OffGadget(41,w4,null());
							CALL OffGadget(42,w4,null());
							CALL OffGadget(43,w4,null());
							CALL OffGadget(44,w4,null());
							CALL OffGadget(45,w4,null());
							CALL UP_Firma_alles;
							CALL UP_ReErst_fuellen;
						END;
					OTHERWISE
						DO;
							CALL OnGadget(41,w4,null());
							CALL OnGadget(42,w4,null());
							CALL OnGadget(43,w4,null());
							CALL OnGadget(44,w4,null());
							CALL OnGadget(45,w4,null());
							CALL UP_Kunden_alles;
							CALL UP_ReErst_fuellen;
						END;
				END;
			END;
		WHEN msgcode4 = 72 | msgcode4 = 104 THEN
			ACTIVATEGADID(41,w4,null());
		WHEN msgid4 = 41 THEN
			DO;
				Test = GETSTRGAD(w4,41,null());
				IF Test = ZW_Suchen | Druckart = "Firma" THEN
					NOP;
				ELSE IF Test = "" THEN
					ZW_Suchen = "";
				ELSE
					DO;
						CALL UP_Kunde_OK;
						j = LENGTH(Test);
						x = "Nein";
						Test = UPPER(Test);
						DO I = 1 TO K_max;
							I = right("000000" || I,6);
							IF POS(Test,UPPER(KD_VorName.I)),
								+ POS(Test,UPPER(KD_Name.I)),
								+ POS(Test,UPPER(KD_Strasse.I)),
								+ POS(Test,UPPER(KD_PLZ.I)),
								+ POS(Test,UPPER(KD_Ort.I)),
								+ POS(Test,UPPER(KD_Land.I)),
								+ POS(Test,UPPER(KD_GebTag.I)),
								+ POS(Test,UPPER(KD_Tel.I)),
								+ POS(Test,UPPER(KD_Fax.I)),
								+ POS(Test,UPPER(KD_Dfue.I)),
								+ POS(Test,UPPER(KD_EMail1.I)),
								+ POS(Test,UPPER(KD_EMail2.I)),
								+ POS(Test,UPPER(KD_EMail3.I)),
								+ POS(Test,UPPER(KD_Anrede.I)),
								+ POS(Test,UPPER(KD_BAnr.I)),
								+ POS(Test,UPPER(KD_Komm.I)),
								+ POS(Test,UPPER(KD_BankBez.I)),
								+ POS(Test,UPPER(KD_BLZ.I)),
								+ POS(Test,UPPER(KD_Konto.I)),
								+ POS(Test,UPPER(KD_BankKurz.I)) > 0 THEN
								DO;
									x = I;
									I = K_max;
								END;
						END;
						ZW_Suchen = Test;
						IF x = "Nein" THEN
							rtezrequest("Der Begriff konnte nicht gefunden werden",,,ReqCent);
						ELSE
							DO;
								ZW_KundenNr = x;
								CALL UP_Kunden_alles;
								CALL UP_ReErst_fuellen;
							END;
					END;
			END;
		WHEN msgcode4 = 47 | msgcode4 = 55 THEN
			ACTIVATEGADID(43,w4,null());
		WHEN msgid4 = 42 | msgcode4 = 67 | msgcode4 = 99 THEN
			IF ZW_Tel > "" THEN
				DO;
					rtezrequest("ARexx Port von WilhelmTEL fehlt leider noch!",,,ReqCent);
				END;
			ELSE
				rtezrequest("N, ohne Telefonnummer geht hier nix!",,,ReqCent);
		WHEN msgid4 = 43 THEN
			DO;
				Test = GETSTRGAD(w4,43,null());
				IF Test = ZW_KundenNr | Druckart = "Firma" THEN
					NOP;
				ELSE
					DO;
						CALL UP_Kunde_OK;
						ZW_KundenNr = right("000000" || TEST,6)
						IF DATATYPE(ZW_KundenNr,'n') THEN
							DO;
								IF ZW_KundenNr > K_max  THEN
									ZW_KundenNr = K_max;
								ZW_KundenNr = RIGHT("000000" || ZW_KundenNr,6);
							END;
						ELSE
							DO;
								rtezrequest("Kundennummer nicht numerisch, bitte prfen!",,,ReqCent);
								ZW_KundenNr = "000001";
							END;
						CALL UP_Kunden_alles;
						CALL UP_ReErst_fuellen;
					END;
			END;
		WHEN msgid4 = 44 | msgcode4 = 62 THEN
			DO;
				IF Druckart = "Firma" THEN
					NOP;
				ELSE
					DO;
						IF ZW_Suchen = "" THEN
							DO;
								Test = ZW_KundenNr + 1;
								CALL UP_Kunde_OK;
								ZW_KundenNr = right("000000" || Test,6);
								IF ZW_KundenNr > K_max THEN
									ZW_KundenNr = K_max;
								ELSE
									DO;
										CALL UP_Kunden_alles;
										CALL UP_ReErst_fuellen;
									END;
							END;
						ELSE
							DO;
								x = "Nein";
								DO I = (ZW_KundenNr + 1) TO (K_max-1);
								I = right("000000" || I,6);
								ZW_Suchen = UPPER(ZW_Suchen);
								IF POS(ZW_Suchen,UPPER(KD_VorName.I)),
									+ POS(ZW_Suchen,UPPER(KD_Name.I)),
									+ POS(ZW_Suchen,UPPER(KD_Strasse.I)),
									+ POS(ZW_Suchen,UPPER(KD_PLZ.I)),
									+ POS(ZW_Suchen,UPPER(KD_Ort.I)),
									+ POS(ZW_Suchen,UPPER(KD_Land.I)),
									+ POS(ZW_Suchen,UPPER(KD_GebTag.I)),
									+ POS(ZW_Suchen,UPPER(KD_Tel.I)),
									+ POS(ZW_Suchen,UPPER(KD_Fax.I)),
									+ POS(ZW_Suchen,UPPER(KD_Dfue.I)),
									+ POS(ZW_Suchen,UPPER(KD_EMail1.I)),
									+ POS(ZW_Suchen,UPPER(KD_EMail2.I)),
									+ POS(ZW_Suchen,UPPER(KD_EMail3.I)),
									+ POS(ZW_Suchen,UPPER(KD_Anrede.I)),
									+ POS(ZW_Suchen,UPPER(KD_BAnr.I)),
									+ POS(ZW_Suchen,UPPER(KD_Komm.I)),
									+ POS(ZW_Suchen,UPPER(KD_BankBez.I)),
									+ POS(ZW_Suchen,UPPER(KD_BLZ.I)),
									+ POS(ZW_Suchen,UPPER(KD_Konto.I)),
									+ POS(ZW_Suchen,UPPER(KD_BankKurz.I)) > 0 THEN
									DO;
										x = I;
										I = K_max;
									END;
							END;
							IF x = "Nein" THEN
								rtezrequest("Der Begriff konnte nicht nochmal gefunden werden",,,ReqCent);
							ELSE
								DO;
									ZW_KundenNr = x;
									CALL UP_Kunden_alles;
									CALL UP_ReErst_fuellen;
								END;
						END;
               END;
			END;
		WHEN msgid4 = 45 | msgcode4 = 60 THEN
			DO;
				IF Druckart = "Firma" THEN
					NOP;
				ELSE
					DO;
						IF ZW_Suchen = "" THEN
							DO;
								Test = ZW_KundenNr - 1;
								CALL UP_Kunde_OK;
								ZW_KundenNr = right("000000" || Test,6);
								IF ZW_KundenNr < 000001 THEN
									ZW_KundenNr = "000001";
								ELSE
									DO;
										CALL UP_Kunden_alles;
										CALL UP_ReErst_fuellen;
									END;
							END;
						ELSE
							DO;
								x = "Nein";
								DO I = (ZW_KundenNr - 1) TO 1 BY -1;
									I = right("000000" || I,6);
									ZW_Suchen = UPPER(ZW_Suchen);
									IF POS(ZW_Suchen,UPPER(KD_VorName.I)),
										+ POS(ZW_Suchen,UPPER(KD_Name.I)),
										+ POS(ZW_Suchen,UPPER(KD_Strasse.I)),
										+ POS(ZW_Suchen,UPPER(KD_PLZ.I)),
										+ POS(ZW_Suchen,UPPER(KD_Ort.I)),
										+ POS(ZW_Suchen,UPPER(KD_Land.I)),
										+ POS(ZW_Suchen,UPPER(KD_GebTag.I)),
										+ POS(ZW_Suchen,UPPER(KD_Tel.I)),
										+ POS(ZW_Suchen,UPPER(KD_Fax.I)),
										+ POS(ZW_Suchen,UPPER(KD_Dfue.I)),
										+ POS(ZW_Suchen,UPPER(KD_EMail1.I)),
										+ POS(ZW_Suchen,UPPER(KD_EMail2.I)),
										+ POS(ZW_Suchen,UPPER(KD_EMail3.I)),
										+ POS(ZW_Suchen,UPPER(KD_Anrede.I)),
										+ POS(ZW_Suchen,UPPER(KD_BAnr.I)),
										+ POS(ZW_Suchen,UPPER(KD_Komm.I)),
										+ POS(ZW_Suchen,UPPER(KD_BankBez.I)),
										+ POS(ZW_Suchen,UPPER(KD_BLZ.I)),
										+ POS(ZW_Suchen,UPPER(KD_Konto.I)),
										+ POS(ZW_Suchen,UPPER(KD_BankKurz.I)) > 0 THEN
										DO;
											x = I;
											I = 0;
										END;
								END;
								IF x = "Nein" THEN
									rtezrequest("Der Begriff konnte nicht nochmal gefunden werden",,,ReqCent);
								ELSE
									DO;
										ZW_KundenNr = x;
										CALL UP_Kunden_alles;
										CALL UP_ReErst_fuellen;
									END;
							END;
					END;
			END;
		WHEN msgid4 = 46 | msgclass4 = CLOSEWINDOW | msgcode4 = 69 | msgcode4 = 101 | msgcode4 = 27 THEN
			DO;
				CALL UP_Kunde_OK;
				extime4 = 1;
			END;
		WHEN msgid4 = 47 | msgcode4 = 68 | msgcode4 = 100 THEN
			DO;
				CALL UP_Kunde_OK;
				CALL UP_Drucken;
			END;
		WHEN msgid4 = 48 THEN
			DO;
				Druckart = GETVALUE(mlabels4,msgcode4*4,4,'s');
				SELECT;
					WHEN Druckart = "Firma" THEN
						CALL UP_Firma_alles;
					WHEN Druckart = "Kunden" THEN
						CALL UP_Kunden_alles;
					OTHERWISE
						NOP;
				END;
				CALL UP_ReErst_fuellen;
			END;
		OTHERWISE
			NOP;
	END;
RETURN 1;

Auswertung5:
	SELECT
		WHEN msgcode5	= 66 | msgcode5 = 98 THEN
			ACTIVATEGADID(10,w5,null());
		WHEN msgid5		= 10 THEN
			ZW_ArtBez	= GETSTRGAD(w5,10,null());
		WHEN msgcode5	= 80 | msgcode5 = 112 THEN
			ACTIVATEGADID(11,w5,null());
		WHEN msgid5		= 11 THEN
			ZW_ArtPreis	= GETSTRGAD(w5,11,null());
		WHEN msgcode5	= 85 | msgcode5 = 117 THEN
			ACTIVATEGADID(12,w5,null());
		WHEN msgid5		= 12 THEN
			ZW_ArtBuch	= GETSTRGAD(w5,12,null());
		WHEN msgcode5	= 77 | msgcode5 = 109 THEN
			ACTIVATEGADID(13,w5,null());
		WHEN msgid5		= 13 THEN
			DO;
				Test		= GETSTRGAD(w5,msgid5,null());
				IF Test ~= ZW_ArtMWSt THEN
					DO;
						IF Test = "1" | Test = "2" | Test = "3" THEN
							ZW_ArtMWSt = Test;
						ELSE
							DO;
								CALL SETSTRGADID(w5,msgid5,ZW_ArtMWSt,null());
								REFRESHGLIST(conxgad5,w5,null(),-1);
								ACTIVATEGADID(msgid5,w5,null());
							END;
					END;
			END;
		WHEN msgcode5	= 72 | msgcode5 = 104 THEN
			ACTIVATEGADID(41,w5,null());
		WHEN msgid5		= 41 THEN /* Suchbegriff wurde eingegeben/gendert */
			DO;
				Test = GETSTRGAD(w5,41,null());
				IF Test = "" THEN
					ZW_Suchen = "";
				ELSE
					DO;
						CALL UP_Artikel_OK;
						j = LENGTH(Test);
						x = "Nein";
						Test = UPPER(Test);
						DO I = 1 TO A_max;
							I = right("000000" || I,6);
							IF POS(Test,UPPER(AR_ArtBez.I)),
								+ POS(Test,UPPER(AR_ArtPreis.I)),
								+ POS(Test,UPPER(AR_ArtBuch.I)) > 0 THEN
								DO;
									x = I;
									I = A_max;
								END;
						END;
						ZW_Suchen = Test;
						IF x = "Nein" THEN
							rtezrequest("Der Begriff konnte nicht gefunden werden",,,ReqCent);
						ELSE
							DO;
								ZW_ArtikelNr = x;
								CALL UP_Artikel_alles;
								CALL UP_ArtErst_fuellen;
							END;
					END;
			END;
		WHEN msgcode5 = 65 | msgcode5 = 97 THEN
			ACTIVATEGADID(43,w5,null());
		WHEN msgid5 = 43 THEN /* Artikelnummer wurde eingegeben/gendert */
			DO;
				Test = GETSTRGAD(w5,43,null());
				IF Test = ZW_ArtikelNr THEN
					NOP;
				ELSE
					DO;
						CALL UP_Artikel_OK;
						ZW_ArtikelNr = Test;
						IF DATATYPE(ZW_ArtikelNr,'n') THEN
							DO;
								IF ZW_ArtikelNr > A_max  THEN
									ZW_ArtikelNr = A_max;
								ZW_ArtikelNr = RIGHT("000000" || ZW_ArtikelNr,6);
							END;
						ELSE
							DO;
								rtezrequest("Artikelnummer nicht numerisch, bitte prfen!",,,ReqCent);
								ZW_ArtikelNr = "000001";
							END;
						CALL UP_Artikel_alles;
						CALL UP_ArtErst_fuellen;
					END;
			END;
		WHEN msgid5 = 44 | msgcode5 = 62 THEN
			DO;
				IF ZW_Suchen = "" THEN
					DO;
						Test = ZW_ArtikelNr + 1;
						CALL UP_Artikel_OK;
						ZW_ArtikelNr = right("000000" || Test,6);
						IF ZW_ArtikelNr > A_max THEN
							ZW_ArtikelNr = A_max;
						ELSE
							DO;
								CALL UP_Artikel_alles;
								CALL UP_ArtErst_fuellen;
							END;
					END;
				ELSE
					DO;
						x = "Nein";
						DO I = (ZW_ArtikelNr + 1) TO (A_max-1);
							I = right("000000" || I,6);
							IF POS(ZW_Suchen,UPPER(AR_ArtBez.I)),
								+ POS(ZW_Suchen,UPPER(AR_ArtPreis.I)),
								+ POS(ZW_Suchen,UPPER(AR_ArtBuch.I)) > 0 THEN
								DO;
									x = I;
									I = A_max;
								END;
						END;
						IF x = "Nein" THEN
							rtezrequest("Der Begriff konnte nicht nochmal gefunden werden",,,ReqCent);
						ELSE
							DO;
								ZW_ArtikelNr = x;
								CALL UP_Artikel_alles;
								CALL UP_ArtErst_fuellen;
							END;
					END;
			END;
		WHEN msgid5 = 45 | msgcode5 = 60 THEN
			DO;
				IF ZW_Suchen = "" THEN
					DO;
						Test = ZW_ArtikelNr - 1;
						CALL UP_Artikel_OK;
						ZW_ArtikelNr = right("000000" || Test,6);
						IF ZW_ArtikelNr < 000001 THEN
							ZW_ArtikelNr = "000001";
						ELSE
							DO;
								CALL UP_Artikel_alles;
								CALL UP_ArtErst_fuellen;
							END;
					END;
				ELSE
					DO;
						x = "Nein";
						DO I = (ZW_ArtikelNr - 1) TO 1 BY -1;
							I = right("000000" || I,6);
							IF POS(ZW_Suchen,UPPER(AR_ArtBez.I)),
								+ POS(ZW_Suchen,UPPER(AR_ArtPreis.I)),
								+ POS(ZW_Suchen,UPPER(AR_ArtBuch.I)) > 0 THEN
								DO;
									x = I;
									I = 0;
								END;
						END;
						IF x = "Nein" THEN
							rtezrequest("Der Begriff konnte nicht nochmal gefunden werden",,,ReqCent);
						ELSE
							DO;
								ZW_ArtikelNr = x;
								CALL UP_Artikel_alles;
								CALL UP_ArtErst_fuellen;
							END;
					END;
			END;
		WHEN msgid5 = 46 | msgclass5 = CLOSEWINDOW | msgcode5 = 69 | msgcode5 = 101 | msgcode5 = 27 THEN
			DO;
				CALL UP_Artikel_OK;
				extime5 = 1;
			END;
		WHEN msgid5 = 47 | msgcode5 = 68 | msgcode5 = 100 THEN
			DO;
				CALL UP_Artikel_OK;
				CALL UP_Drucken;
			END;
		WHEN msgid5 = 48 THEN
			DO;
				CALL UP_Artikel_alles;
				CALL UP_ArtErst_fuellen;
			END;
		OTHERWISE
			NOP;
	END;
RETURN 1;

Auswertung6:
	SELECT
		WHEN msgcode6	= 33 | msgcode6 = 49 THEN
			ACTIVATEGADID(10,w6,null());
		WHEN msgid6		= 10 THEN
			DO;
				Test		= GETSTRGAD(w6,msgid6,null());
				IF Test ~= MWSt_Satz.1 THEN
					DO;
						IF datatype(Test,'n') THEN
							MWSt_Satz.1 = Test;
						ELSE
							MWSt_Satz.1 = 15.0;
						CALL SETSTRGADID(w6,msgid6,MWSt_Satz.1,null());
						REFRESHGLIST(conxgad6,w6,null(),-1);
						MWSt_Rech.1 = MWSt_Satz.1 / (100 + MWSt_Satz.1);
					END;
			END;
		WHEN msgcode6	= 34 | msgcode6	= 50 THEN
			ACTIVATEGADID(11,w6,null());
		WHEN msgid6		= 11 THEN
			DO;
				Test		= GETSTRGAD(w6,msgid6,null());
				IF Test ~= MWSt_Satz.2 THEN
					DO;
						IF datatype(Test,'n') THEN
							MWSt_Satz.2 = Test;
						ELSE
							MWSt_Satz.2 = 7.0;
						CALL SETSTRGADID(w6,msgid6,MWSt_Satz.2,null());
						REFRESHGLIST(conxgad6,w6,null(),-1);
						MWSt_Rech.2 = MWSt_Satz.2 / (100 + MWSt_Satz.2);
					END;
			END;
		WHEN msgcode6	= 87 | msgcode6 =	119 | msgid6	= 12  THEN
			DO;
				Test = rtfilerequest("Drucker",,"Druckerauswahl");
				IF Test > 0 THEN
					DO;
						Druckdatei = Test
						CALL pitext(rpw6,7.8*Font_X,7.2*Font_Y,right(Druckdatei,12),apen,0,jam2,scrfont);
						CALL UP_Druckdaten_lesen;
					END;
			END;
		WHEN msgcode6	= 80 | msgcode4 = 112 THEN
			ACTIVATEGADID(14,w4,null());
		WHEN msgid6		= 14 THEN
			Druckport	= GETSTRGAD(w6,msgid6,null());
		WHEN msgcode6	= 88 | msgcode4 = 120 THEN
			ACTIVATEGADID(15,w6,null());
		WHEN msgid6		= 15 THEN
			DO;
				Test		= GETSTRGAD(w6,msgid6,null());
				IF Test ~= D_XAbst THEN
					DO;
						IF datatype(Test,'w') THEN
							D_XAbst = Test;
						ELSE
							DO;
								D_XAbst = 1;
								CALL SETSTRGADID(w6,msgid6,D_XAbst,null());
								REFRESHGLIST(conxgad6,w6,null(),-1);
							END;
					END;
			END;
		WHEN msgcode6	= 89 | msgcode6 = 121 THEN
			ACTIVATEGADID(16,w4,null());
		WHEN msgid6		= 16 THEN
			DO;
				Test		= GETSTRGAD(w6,msgid6,null());
				IF Test ~= D_YAbst THEN
					DO;
						IF datatype(Test,'w')  THEN
							D_YAbst = Test;
						ELSE
							DO;
								D_YAbst = 1;
								CALL SETSTRGADID(w6,msgid6,D_YAbst,null());
								REFRESHGLIST(conxgad6,w6,null(),-1);
							END;
					END;
			END;
		WHEN msgid6 = 17 | msgclass6 = CLOSEWINDOW | msgcode6 = 69 | msgcode6 = 101 | msgcode6 = 27 THEN
			extime6 = 1;
		OTHERWISE
			NOP;
	END;
RETURN 1;

UP_Kunden_alles:
	ZW_VorName	= KD_VorName.ZW_KundenNr;
	ZW_Name		= KD_Name.ZW_KundenNr;
	ZW_Strasse	= KD_Strasse.ZW_KundenNr;
	ZW_PLZ		= KD_PLZ.ZW_KundenNr;
	ZW_Ort		= KD_Ort.ZW_KundenNr;
	ZW_Land		= KD_Land.ZW_KundenNr;
	ZW_GebTag	= KD_GebTag.ZW_KundenNr;
	ZW_Tel		= KD_Tel.ZW_KundenNr;
	ZW_Fax		= KD_Fax.ZW_KundenNr;
	ZW_Dfue		= KD_Dfue.ZW_KundenNr;
	ZW_EMail1	= KD_EMail1.ZW_KundenNr;
	ZW_EMail2	= KD_EMail2.ZW_KundenNr;
	ZW_EMail3	= KD_EMail3.ZW_KundenNr;
	ZW_Anrede	= KD_Anrede.ZW_KundenNr;
	ZW_BAnr		= KD_BAnr.ZW_KundenNr;
	ZW_Komm		= KD_Komm.ZW_KundenNr;
	ZW_BankBez	= KD_BankBez.ZW_KundenNr;
	ZW_BLZ		= KD_BLZ.ZW_KundenNr;
	ZW_Konto		= KD_Konto.ZW_KundenNr;
	ZW_BankKurz	= KD_BankKurz.ZW_KundenNr;
	ZW_Rabatt	= KD_Rabatt.ZW_KundenNr;
RETURN;

UP_Firma_alles:
	ZW_VorName	= FI_VorName;
	ZW_Name		= FI_Name;
	ZW_Strasse	= FI_Strasse;
	ZW_PLZ		= FI_PLZ;
	ZW_Ort		= FI_Ort;
	ZW_Land		= FI_Land;
	ZW_GebTag	= FI_GebTag;
	ZW_Tel		= FI_Tel;
	ZW_Fax		= FI_Fax;
	ZW_Dfue		= FI_Dfue;
	ZW_EMail1	= FI_EMail1;
	ZW_EMail2	= FI_EMail2;
	ZW_EMail3	= FI_EMail3;
	ZW_Anrede	= FI_Anrede;
	ZW_BAnr		= FI_BAnr;
	ZW_Komm		= FI_Komm;
	ZW_BankBez	= FI_BankBez;
	ZW_BLZ		= FI_BLZ;
	ZW_Konto		= FI_Konto;
	ZW_BankKurz	= FI_BankKurz;
	ZW_Rabatt	= FI_Rabatt;
RETURN;

UP_ReErst_fuellen:
	CALL SETSTRGADID(w4,10,ZW_VorName,null());
	CALL SETSTRGADID(w4,11,ZW_Name,null());
	CALL SETSTRGADID(w4,12,ZW_Strasse,null());
	CALL SETSTRGADID(w4,13,ZW_PLZ,null());
	CALL SETSTRGADID(w4,14,ZW_Ort,null());
	CALL SETSTRGADID(w4,15,ZW_Land,null());
	CALL SETSTRGADID(w4,16,ZW_GebTag,null());
	CALL SETSTRGADID(w4,17,ZW_Tel,null());
	CALL SETSTRGADID(w4,18,ZW_Fax,null());
	CALL SETSTRGADID(w4,19,ZW_Dfue,null());
	CALL SETSTRGADID(w4,20,ZW_EMail1,null());
	CALL SETSTRGADID(w4,21,ZW_EMail2,null());
	CALL SETSTRGADID(w4,22,ZW_EMail3,null());
	CALL SETSTRGADID(w4,23,ZW_Anrede,null());
	CALL SETSTRGADID(w4,24,ZW_BAnr,null());
	CALL SETSTRGADID(w4,25,ZW_Komm,null());
	CALL SETSTRGADID(w4,26,ZW_BankBez,null());
	CALL SETSTRGADID(w4,27,ZW_BLZ,null());
	CALL SETSTRGADID(w4,28,ZW_Konto,null());
	CALL SETSTRGADID(w4,29,ZW_BankKurz,null());
	CALL SETSTRGADID(w4,30,ZW_Rabatt,null());
	CALL SETSTRGADID(w4,43,ZW_KundenNr,null());
	CALL SETSTRGADID(w4,41,ZW_Suchen,null());
	REFRESHGLIST(conxgad4,w4,null(),-1);
RETURN;

UP_Kunde_OK:
	SELECT;
		WHEN Druckart = "Firma" THEN
			DO;
				FI_VorName	= ZW_VorName;
				FI_Name		= ZW_Name;
				FI_Strasse	= ZW_Strasse;
				FI_PLZ		= ZW_PLZ;
				FI_Ort		= ZW_Ort;
				FI_Land		= ZW_Land;
				FI_GebTag	= ZW_GebTag;
				FI_Tel		= ZW_Tel;
				FI_Fax		= ZW_Fax;
				FI_Dfue		= ZW_Dfue;
				FI_EMail1	= ZW_EMail1;
				FI_EMail2	= ZW_EMail2;
				FI_EMail3	= ZW_EMail3;
				FI_Anrede	= ZW_Anrede;
				FI_BAnr		= ZW_BAnr;
				FI_Komm		= ZW_Komm;
				FI_BankBez	= ZW_BankBez;
				FI_BLZ		= ZW_BLZ;
				FI_Konto		= ZW_Konto;
				FI_BankKurz	= ZW_BankKurz;
				FI_Rabatt	= ZW_Rabatt;
			END;
		WHEN Druckart = "Kunden" THEN
			DO;
				KD_VorName.ZW_KundenNr	= ZW_VorName;
				KD_Name.ZW_KundenNr		= ZW_Name;
				KD_Strasse.ZW_KundenNr	= ZW_Strasse;
				KD_PLZ.ZW_KundenNr		= ZW_PLZ;
				KD_Ort.ZW_KundenNr		= ZW_Ort;
				KD_Land.ZW_KundenNr		= ZW_Land;
				KD_GebTag.ZW_KundenNr	= ZW_GebTag;
				KD_Tel.ZW_KundenNr		= ZW_Tel;
				KD_Fax.ZW_KundenNr		= ZW_Fax;
				KD_Dfue.ZW_KundenNr		= ZW_Dfue;
				KD_EMail1.ZW_KundenNr	= ZW_EMail1;
				KD_EMail2.ZW_KundenNr	= ZW_EMail2;
				KD_EMail3.ZW_KundenNr	= ZW_EMail3;
				KD_Anrede.ZW_KundenNr	= ZW_Anrede;
				KD_BAnr.ZW_KundenNr		= ZW_BAnr;
				KD_Komm.ZW_KundenNr		= ZW_Komm;
				KD_BankBez.ZW_KundenNr	= ZW_BankBez;
				KD_BLZ.ZW_KundenNr		= ZW_BLZ;
				KD_Konto.ZW_KundenNr		= ZW_Konto;
				KD_BankKurz.ZW_KundenNr	= ZW_BankKurz;
				KD_Rabatt.ZW_KundenNr	= ZW_Rabatt;
			END;
		OTHERWISE
			NOP;
	END;
	IF ZW_Name > "" & ZW_KundenNr = K_max then
		DO;
			K_max = K_max + 1;
			CALL UP_K_max_init;
		END;
	ELSE IF ZW_Name = "" & ZW_KundenNr = (K_max -1) then
		DO;
			K_max = ZW_KundenNr;
			CALL UP_K_max_init;
		END;
	DefGads4 = 2;
RETURN;

UP_Artikel_alles:
	ZW_ArtBez	= AR_ArtBez.ZW_ArtikelNr;
	ZW_ArtPreis	= AR_ArtPreis.ZW_ArtikelNr;
	ZW_ArtBuch	= AR_ArtBuch.ZW_ArtikelNr;
	ZW_ArtMWSt	= AR_ArtMWSt.ZW_ArtikelNr;
RETURN;

UP_ArtErst_fuellen:
	CALL SETSTRGADID(w5,10,ZW_ArtBez,null());
	CALL SETSTRGADID(w5,11,ZW_ArtPreis,null());
	CALL SETSTRGADID(w5,12,ZW_ArtBuch,null());
	CALL SETSTRGADID(w5,13,ZW_ArtMWSt,null());
	CALL SETSTRGADID(w5,43,ZW_ArtikelNr,null());
	REFRESHGLIST(conxgad5,w5,null(),-1);
RETURN;

UP_Artikel_OK:
	IF AR_ArtBez.ZW_ArtikelNr	= ZW_ArtBez &,
		AR_ArtPreis.ZW_ArtikelNr= ZW_ArtPreis &,
		AR_ArtBuch.ZW_ArtikelNr	= ZW_ArtBuch &,
		AR_ArtMWSt.ZW_ArtikelNr	= ZW_ArtMWSt THEN
		NOP;
	ELSE;
		DO;
			AR_ArtBez.ZW_ArtikelNr	= ZW_ArtBez;
			AR_ArtPreis.ZW_ArtikelNr= ZW_ArtPreis;
			AR_ArtBuch.ZW_ArtikelNr	= ZW_ArtBuch;
			AR_ArtMWSt.ZW_ArtikelNr	= ZW_ArtMWSt;
			IF ZW_ArtBez > "" & ZW_ArtikelNr = A_max then
				DO;
					A_max = A_max + 1;
					CALL UP_A_max_init;
				END;
			ELSE IF ZW_ArtBez = "" & ZW_ArtikelNr = A_max - 1 then
				DO;
					A_max = A_max - 1;
					CALL UP_A_max_init;
				END;
			DefGads5 = 2;
		END;
RETURN;

UP_Rechnung_OK:
	Art_gr_null = 0;
	IF RE_Kunde.UEB_RechNr ~= ZW_KundenNr THEN
		DO;  
			RE_Kunde.UEB_RechNr = ZW_KundenNr;
			DefGads2 = 2;
		END;
	DO z = 1 to I_Max;
		IF RE_Art.z.UEB_RechNr ~= ZW_Art_Nr.z |,
			RE_Anz.z.UEB_RechNr ~= ZW_Art_Anz.z THEN
			DO;
				RE_Art.z.UEB_RechNr = ZW_Art_Nr.z;
				RE_Anz.z.UEB_RechNr = ZW_Art_Anz.z;
				DefGads2 = 2;
			END;
		IF ZW_Art_Nr.z > "" THEN
			Art_gr_null = 1;
	END;
	IF Art_gr_null = 1 & UEB_RechNr = R_max THEN
		DO; 
			R_max = R_max + 1;
			CALL UP_Rech_max_init;
		END;
	ELSE IF Art_gr_null = 0 & UEB_RechNr = (R_max - 1) THEN
		DO;
			R_max = R_max - 1;
			CALL UP_Rech_max_init;
		END;
RETURN;

UP_R_Berechnung:
	ZW_MWSt = 0;
	ZW_Endsumme = 0;
	ZW_Rab = 0;
	ZW_KundenNr = RE_Kunde.UEB_RechNr;
	ZW_Rabatt = KD_Rabatt.ZW_KundenNr
	IF ~DATATYPE(ZW_Rabatt,'n') THEN
		ZW_Rabatt = 0;
	ZW_Rabatt = ZW_Rabatt / 100;
	DO j = 1 to I_Max;
		ZW_Art_Nr.j = RE_Art.j.UEB_RechNr;
		IF ZW_Art_Nr.j > "" THEN
			DO;
				x				= ZW_Art_Nr.j;
				ZW_EPreis.j	= AR_ArtPreis.x;
				ZW_ArtBez.j	= AR_ArtBez.x;
				ZW_Menge.j	= RE_Anz.j.UEB_RechNr;
				ZW_Summe.j  = (ZW_EPreis.j * ZW_Menge.j) + 0.005;
				IF ZW_Summe.j < 0 THEN
					ZW_Summe.j  = ZW_Summe.j - 0.01;
				ZW_Summe.j	= trunc(ZW_Summe.j,2);
				ZW_Rab		= ZW_Rab + (ZW_Summe.j * ZW_Rabatt);
				ZW_Summe.j	= right(ZW_Summe.j,10);
				ZW_Endsumme	= ZW_Endsumme + ZW_Summe.j;
				z	= AR_ArtMWSt.x;
				ZW_MWSt = ZW_MWSt + ((ZW_Summe.j - (ZW_Summe.j * ZW_Rabatt)) * MWSt_Rech.z);
			END;
		ELSE
			DO;
				ZW_Summe.j	= "";
				ZW_Art_Nr.j	= "";
				ZW_Art_Bez.j= "";
				ZW_EPreis.j	= "";
				ZW_ArtBez.j	= "";
         END;
	END;
	ZW_Endsumme	= right(trunc(ZW_Endsumme - ZW_Rab + 0.005,2),10);
	ZW_Rab		= right(trunc(ZW_Rab + 0.005,2),9);
	ZW_MWSt		= right(trunc(ZW_MWSt + 0.005,2),9);
RETURN;

/* Unterprogramm zum   S P E R R E N   von Texten							*/
UP_Sperr: procedure expose units;
	parse arg ZW_Text;
	Text_Sperr = "";
	DO i = 1 to length(ZW_Text);
		Text_Sperr = Text_Sperr || substr(ZW_Text,i,1) || " ";
	END;
RETURN Text_Sperr;

/* Unterprogramm zur Ermittlung des aktuellen Datums						*/
UP_Datum:procedure;
	tt = SUBSTR(DATE(s),7,2);						/* Tag im Monat			*/
	mm = SUBSTR(DATE(s),5,2);						/* Monat						*/
	jjjj = right(DATE(n),4);						/* Jahr und Jahrhundert	*/
	datum = tt || "." || mm || "." || jjjj;	/* zusammenfgen			*/
RETURN datum;
