summaryrefslogtreecommitdiff
path: root/app/eudas/3.4
diff options
context:
space:
mode:
Diffstat (limited to 'app/eudas/3.4')
-rw-r--r--app/eudas/3.4/source-disk1
-rw-r--r--app/eudas/3.4/src/eudas.137
-rw-r--r--app/eudas/3.4/src/eudas.225
-rw-r--r--app/eudas/3.4/src/eudas.332
-rw-r--r--app/eudas/3.4/src/eudas.431
-rw-r--r--app/eudas/3.4/src/eudas.gen-m49
-rw-r--r--app/eudas/3.4/src/eudas.gen-s39
-rw-r--r--app/eudas/3.4/src/eudas.init1034
8 files changed, 1248 insertions, 0 deletions
diff --git a/app/eudas/3.4/source-disk b/app/eudas/3.4/source-disk
new file mode 100644
index 0000000..309d823
--- /dev/null
+++ b/app/eudas/3.4/source-disk
@@ -0,0 +1 @@
+eudas/eudas-3.4.img
diff --git a/app/eudas/3.4/src/eudas.1 b/app/eudas/3.4/src/eudas.1
new file mode 100644
index 0000000..5c8bb63
--- /dev/null
+++ b/app/eudas/3.4/src/eudas.1
@@ -0,0 +1,37 @@
+PACKETeudassatzzugriffeDEFINES SATZ,:=,satzinitialisieren,felderzahl,feldlesen,feldbearbeiten,feldaendern,feldindex:LETb0=256,c0=2;LETd0=" ",e0="";LETf0=" ist keine Feldnummer";TEXT VARg0:=c0*d0;TYPE SATZ=TEXT;OP:=(SATZ VARh0,SATZ CONSTi0):CONCR(h0):=CONCR(i0)END OP:=;PROCsatzinitialisieren(SATZ VARj0):satzinitialisieren(j0,0)END PROCsatzinitialisieren;PROCsatzinitialisieren(SATZ VARj0,INT CONSTk0):replace(g0,1,2*k0+3);INT VARl0;CONCR(j0):=e0;FORl0FROM1UPTOk0+1REP CONCR(j0)CATg0END REP END PROCsatzinitialisieren;INT PROCfelderzahl(SATZ CONSTj0):INT VARm0:=(CONCR(j0)ISUB1)DIV2;INT CONSTn0:=CONCR(j0)ISUBm0;REPm0DECR1UNTILm0<=0CORo0END REP;m0.o0:(CONCR(j0)ISUBm0)<>n0.END PROCfelderzahl;PROCfeldlesen(SATZ CONSTj0,INT CONSTp0,TEXT VARq0):r0(CONCR(j0),p0);IF NOTiserrorTHENq0:=subtext(CONCR(j0),s0,t0)END IF END PROCfeldlesen;PROCfeldbearbeiten(SATZ CONSTj0,INT CONSTp0,PROC(TEXT CONST,INT CONST,INT CONST)u0):r0(CONCR(j0),p0);IF NOTiserrorTHENu0(CONCR(j0),s0,t0)END IF END PROCfeldbearbeiten;INT
+ VARs0,t0;PROCr0(TEXT CONSTj0,INT CONSTp0):IFv0THENerrorstop(text(p0)+f0)ELIFw0THENs0:=j0ISUBp0;t0:=(j0ISUBp0+1)-1ELSEs0:=1;t0:=0END IF.v0:p0<=0ORp0>b0.w0:p0+p0<(j0ISUB1)-1.END PROCr0;TEXT VARx0;PROCfeldaendern(SATZ VARj0,INT CONSTp0,TEXT CONSTq0):INT VARy0;INT CONSTz0:=((CONCR(j0)ISUB1)-2)DIV2;IFa1THENb1ELSEerrorstop(text(p0)+f0)END IF.a1:p0>0ANDp0<=b0.b1:INT CONSTc1:=p0-z0;IFc1<=0THENd1ELIFq0<>e0THENe1END IF.e1:INT CONSTf1:=CONCR(j0)ISUB(z0+1);x0:=subtext(CONCR(j0),g1,f1-1);CONCR(j0):=subtext(CONCR(j0),1,z0+z0);h1(CONCR(j0),1,z0,i1);j1;k1;CONCR(j0)CATx0;CONCR(j0)CATq0.i1:c1+c1.j1:INT CONSTl1:=f1+i1;FORy0FROMz0+1UPTOp0REPm1(CONCR(j0),l1)END REP.k1:m1(CONCR(j0),l1+length(q0)).g1:CONCR(j0)ISUB1.d1:INT CONSTs0:=CONCR(j0)ISUBp0,n1:=CONCR(j0)ISUB(p0+1);IFs0>length(CONCR(j0))THENo1ELSEp1END IF.o1:h1(CONCR(j0),p0+1,z0+1,length(q0));CONCR(j0)CATq0.p1:x0:=subtext(CONCR(j0),n1);CONCR(j0):=subtext(CONCR(j0),1,s0-1);h1(CONCR(j0),p0+1,z0+1,q1);CONCR(j0)CATq0;CONCR(j0)CATx0.q1:length(q0)-r1.r1:n1-
+s0.END PROCfeldaendern;PROCm1(TEXT VARj0,INT CONSTs1):replace(g0,1,s1);j0CATg0END PROCm1;PROCh1(TEXT VARj0,INT CONSTt1,u1,v1):INT VARy0;FORy0FROMt1UPTOu1REPreplace(j0,y0,w1+v1)END REP.w1:j0ISUBy0.END PROCh1;INT PROCfeldindex(SATZ CONSTj0,TEXT CONSTx1):INT VARt1:=(CONCR(j0)ISUB1)-1,y0:=1;REPt1:=pos(CONCR(j0),x1,t1+1);IFt1=0THEN LEAVEfeldindexWITH0END IF;y1UNTILz1CANDa2END REP;y0.y1:WHILE(CONCR(j0)ISUBy0)<t1REPy0INCR1END REP.z1:(CONCR(j0)ISUBy0)=t1.a2:(CONCR(j0)ISUB(y0+1))=t1+length(x1).END PROCfeldindex;END PACKETeudassatzzugriffe;
+PACKETeudasdateienDEFINES EUDAT,oeffne,satznr,dateiende,saetze,aufsatz,weiter,zurueck,satzlesen,satzaendern,satzloeschen,satzeinfuegen,feldlesen,feldaendern,feldbearbeiten,felderzahl,feldnamenlesen,feldnamenaendern,notizenlesen,notizenaendern,feldinfo,dezimalkomma,wertberechnen,reorganisiere,sortiere,sortierreihenfolge,unsortiertesaetze:LETb2=531,c2=121,d2=5000,e2=3243,f2=64,g2=48;LET INTVEC=TEXT,INDEX=STRUCT(INTh2,i2,INTj2,k2,INTVECl2),EINTRAG=STRUCT(INTh2,i2,m2,n2,SATZj0),DATEI=STRUCT(INTfelderzahl,SATZo2,INTVECfeldinfo,TEXTp2,INTq2,r2,s2,INTt2,u2,INTv2,satznr,INTw2,x2,y2,INTz2,a3,ROW3TEXTb3,ROWb2INTc3,ROWc2INDEXindex,ROWd2EINTRAGd3);TYPE EUDAT=BOUND DATEI;LETe0="";LETe3="Datei ist keine EUDAS-Datei",f3="inkonsistente EUDAS-Datei",g3="EUDAS-Datei voll",h3="Nicht erlaubtes Dezimalkomma";TEXT VARi3;TEXT VARj3:=" ";INTVEC CONSTk3:=l3(f2,1);LETm3="";TEXT VARn3;INTVEC PROCl3(INT CONSTlength,o3):replace(j3,1,o3);length*j3END PROCl3;PROCinsert(INTVEC VARp3,INT CONSTpos,o3):INT CONSTbegin:=
+pos+pos-1;IFbegin<1THENq3ELIFbegin>length(p3)+1THENr3ELSEreplace(j3,1,o3);n3:=subtext(p3,begin);p3:=subtext(p3,1,begin-1);p3CATj3;p3CATn3END IF END PROCinsert;PROCdelete(INTVEC VARp3,INT CONSTpos):INT CONSTbegin:=pos+pos-1;IFbegin<1THENq3ELIFbegin>=length(p3)THENr3ELSEn3:=subtext(p3,begin+2);p3:=subtext(p3,1,begin-1);p3CATn3END IF END PROCdelete;INT PROCpos(INTVEC CONSTp3,INT CONSTo3):replace(j3,1,o3);INT VARbegin:=1;REPbegin:=pos(p3,j3,begin)+1UNTIL(beginAND1)=0ORbegin=1END REP;beginDIV2END PROCpos;PROCs3(INTVEC VARt3,u3,INT CONSTpos):INT CONSTbegin:=pos+pos-1;IFbegin<1THENq3ELIFbegin>length(t3)+1THENr3ELSEu3:=subtext(t3,begin);t3:=subtext(t3,1,begin-1)END IF END PROCs3;PROCv3(INTVEC VARt3,u3,INT CONSTpos):INT CONSTbegin:=pos+pos-1;IFbegin<1THENq3ELIFbegin>length(t3)+1THENr3ELSEu3:=subtext(t3,1,begin-1);t3:=subtext(t3,begin)END IF END PROCv3;.r3:errorstop(9,e0).q3:errorstop(10,e0).PROCw3(DATEI VARx3):x3.felderzahl:=0;x3.feldinfo:=m3;satzinitialisieren(x3.o2);x3.p2:=e0;x3.q2:=1;x3.r2:=
+1;x3.t2:=0;x3.s2:=0;x3.v2:=0;x3.u2:=1;x3.z2:=0;x3.b3(1):=e0;x3.b3(2):=e0;x3.b3(3):=e0;x3.satznr:=1;x3.w2:=1;x3.x2:=1;x3.y2:=1;x3.index(1).l2:=k3;x3.index(1):=INDEX:(0,0,1,1,l3(1,1));INT VARl0;FORl0FROM1UPTOb2REPx3.c3(l0):=0END REP;x3.d3(1):=EINTRAG:(0,0,1,0,y3).y3:x3.o2.END PROCw3;PROCoeffne(EUDAT VARx3,TEXT CONSTz3):enablestop;IF NOTexists(z3)THEN CONCR(x3):=new(z3);w3(CONCR(x3));type(old(z3),e2)ELIFtype(old(z3))=e2THEN CONCR(x3):=old(z3)ELSEerrorstop(e3)ENDIF END PROCoeffne;PROCoeffne(EUDAT VARx3,DATASPACE CONSTa4):IFtype(a4)<0THEN CONCR(x3):=a4;w3(CONCR(x3));type(a4,e2)ELIFtype(a4)=e2THEN CONCR(x3):=a4ELSEerrorstop(e3)END IF END PROCoeffne;PROCfeldlesen(EUDAT CONSTx3,INT CONSTp0,TEXT VARq0):feldlesen(b4,p0,q0).b4:x3.d3(x3.y2).j0.END PROCfeldlesen;PROCfeldaendern(EUDAT VARx3,INT CONSTp0,TEXT CONSTc4):IFd4THENe4(CONCR(x3));f4;feldaendern(b4,p0,c4)END IF.d4:x3.y2<>1.f4:IFp0=1THENdisablestop;g4(CONCR(x3),h4(c4))END IF.b4:x3.d3(x3.y2).j0.END PROCfeldaendern;INT PROCfelderzahl(EUDAT CONST
+x3):x3.felderzahlEND PROCfelderzahl;PROCfeldbearbeiten(EUDAT CONSTx3,INT CONSTp0,PROC(TEXT CONST,INT CONST,INT CONST)u0):feldbearbeiten(b4,p0,PROC(TEXT CONST,INT CONST,INT CONST)u0).b4:x3.d3(x3.y2).j0.END PROCfeldbearbeiten;PROCfeldnamenlesen(EUDAT CONSTx3,SATZ VARi4):i4:=x3.o2END PROCfeldnamenlesen;PROCfeldnamenaendern(EUDAT VARx3,SATZ CONSTj4):x3.o2:=j4;INT CONSTk4:=felderzahl(j4);IFk4>x3.felderzahlTHENl4;x3.felderzahl:=k4END IF.l4:x3.feldinfoCATl3(m4,-1).m4:k4-length(x3.feldinfo)DIV2.END PROCfeldnamenaendern;INT PROCfeldinfo(EUDAT CONSTx3,INT CONSTp0):x3.feldinfoISUBp0END PROCfeldinfo;PROCfeldinfo(EUDAT VARx3,INT CONSTp0,n4):replace(x3.feldinfo,p0,n4);IFpos(x3.p2,code(p0))>0THENx3.z2:=x3.v2END IF END PROCfeldinfo;INT PROCsatznr(EUDAT CONSTx3):x3.satznrEND PROCsatznr;BOOL PROCdateiende(EUDAT CONSTx3):x3.satznr>x3.v2END PROCdateiende;INT PROCsaetze(EUDAT CONSTx3):x3.v2END PROCsaetze;PROCo4(DATEI VARx3,INT CONSTw2,k2,satznr):IFw2<1ORw2>x3.r2CORk2<1ORk2>x3.index(w2).j2THENerrorstop(f3)
+END IF;disablestop;x3.w2:=w2;x3.x2:=k2;x3.satznr:=satznr;x3.y2:=x3.index(w2).l2ISUBk2END PROCo4;PROCaufsatz(EUDAT VARx3,INT CONSTp4):INT VARsatznr;IFp4<1THENsatznr:=1ELIFp4>x3.v2THENsatznr:=x3.v2+1ELSEsatznr:=p4END IF;q4(CONCR(x3),satznr)END PROCaufsatz;PROCaufsatz(EUDAT VARx3,TEXT CONSTx1):aufsatz(x3,1);IFr4THENweiter(x3,x1)END IF.r4:feldlesen(x3,1,i3);i3<>x1.END PROCaufsatz;PROCq4(DATEI VARx3,INT CONSTsatznr):IFs4THENo4(x3,1,1,1)END IF;INT VARw2:=x3.w2,t4:=x3.satznr-x3.x2;IFsatznr>x3.satznrTHENu4ELSEv4END IF;o4(x3,w2,k2,satznr).s4:satznr+satznr<x3.satznr.u4:WHILEw4REPt4INCRj2;w2:=x3.index(w2).i2END REP.w4:INT CONSTj2:=x3.index(w2).j2;t4+j2<satznr.v4:WHILEx4REPw2:=x3.index(w2).h2;t4DECRx3.index(w2).j2END REP.x4:t4>=satznr.k2:satznr-t4.END PROCq4;PROCweiter(EUDAT VARx3):y4(CONCR(x3))END PROCweiter;PROCy4(DATEI VARx3):IFz4THENa5END IF.z4:x3.y2<>1.a5:INT VARw2:=x3.w2,k2:=x3.x2;IFk2=index.j2THENw2:=index.i2;k2:=1ELSEk2INCR1END IF;o4(x3,w2,k2,x3.satznr+1).index:x3.index(w2).END PROCy4;PROC
+zurueck(EUDAT VARx3):b5(CONCR(x3))END PROCzurueck;PROCb5(DATEI VARx3):IFc5THENd5END IF.c5:x3.satznr<>1.d5:INT VARw2:=x3.w2,k2:=x3.x2;IFk2=1THENw2:=m2.h2;k2:=m2.j2ELSEk2DECR1END IF;o4(x3,w2,k2,x3.satznr-1).m2:x3.index(w2).END PROCb5;PROCweiter(EUDAT VARx3,TEXT CONSTx1):y4(CONCR(x3),x1)END PROCweiter;PROCy4(DATEI VARx3,TEXT CONSTx1):e5;WHILEf5CANDg5REPh5END REP;IFf5THENi5(x3,k2)ELSEq4(x3,x3.v2+1)END IF.e5:INT VARj5,k2:=x3.y2;IFg5THENk5(x3,h4(x1),k2,j5)ELSEh5END IF.f5:k2<>0.g5:feldlesen(b4,1,i3);i3<>x1.b4:x3.d3(k2).j0.h5:k2:=x3.d3(k2).i2.END PROCy4;PROCzurueck(EUDAT VARx3,TEXT CONSTx1):b5(CONCR(x3),x1)END PROCzurueck;PROCb5(DATEI VARx3,TEXT CONSTx1):e5;WHILEf5CANDg5REPl5END REP;IFf5THENi5(x3,k2)ELSEq4(x3,1)END IF.e5:INT VARk2:=x3.y2,j5;IFk2=1ORm5THENk5(x3,h4(x1),j5,k2)END IF.f5:k2<>0.g5:k2=x3.y2ORm5.m5:feldlesen(b4,1,i3);i3<>x1.b4:x3.d3(k2).j0.l5:k2:=x3.d3(k2).h2.END PROCb5;PROCi5(DATEI VARx3,INT CONSTk2):INT CONSTn5:=x3.d3(k2).m2;INT VARx2:=1,satznr:=0;WHILEx2<>n5REPsatznrINCRx3.index(x2
+).j2;x2:=x3.index(x2).i2END REP;x2:=pos(x3.index(n5).l2,k2);satznrINCRx2;o4(x3,n5,x2,satznr).END PROCi5;INT VARindex;PROCo5(TEXT CONSTp5,INT CONSTq5,r5):INT VARs5:=q5;index:=0;IFr5-q5<4THENt5ELSEu5END IF;index:=indexMODb2+1.t5:WHILEs5<=r5REPindex:=index*4;indexINCRcode(p5SUBs5);s5INCR1END REP.u5:WHILEs5<=r5REPindexINCRindex;indexINCRcode(p5SUBs5);IFindex>16000THENindex:=indexMODb2END IF;s5INCR1END REP.END PROCo5;INT PROCh4(TEXT CONSTp5):o5(p5,1,length(p5));indexEND PROCh4;INT PROCh4(SATZ CONSTj0):feldbearbeiten(j0,1,PROC(TEXT CONST,INT CONST,INT CONST)o5);indexEND PROCh4;PROCk5(DATEI CONSTx3,INT CONSTh4,INT VARk2,v5):INT VARw2:=x3.q2;v5:=x3.c3(h4);k2:=0;BOOL VARw5:=TRUE;WHILEw5ANDv5<>0REPx5;h5END REP.x5:IFy5THENz5ELSEa6END IF.y5:x3.d3(v5).m2=x3.w2.z5:w2:=x3.w2;INT CONSTb6:=pos(l2,v5);IFb6=0THENerrorstop(f3)ELIFb6<=c6THENw5:=FALSE END IF.l2:x3.index(w2).l2.c6:x3.x2.a6:WHILEw2<>x3.d3(v5).m2REP IFw2=x3.w2THENw5:=FALSE;LEAVEx5ELSEw2:=x3.index(w2).h2END IF END REP.h5:IFw5THENk2:=v5;v5:=x3.
+d3(k2).h2END IF.END PROCk5;PROCd6(DATEI VARx3,INT CONSTh4):disablestop;INT CONSTk2:=x3.y2,h2:=x3.d3(k2).h2,i2:=x3.d3(k2).i2;IFi2<>0THENx3.d3(i2).h2:=h2ELSEx3.c3(h4):=h2END IF;IFh2<>0THENx3.d3(h2).i2:=i2END IF.END PROCd6;PROCe6(DATEI VARx3,INT CONSTh4,i2,h2):disablestop;INT CONSTk2:=x3.y2;x3.d3(k2).h2:=h2;x3.d3(k2).i2:=i2;IFh2<>0THENx3.d3(h2).i2:=k2END IF;IFi2<>0THENx3.d3(i2).h2:=k2ELSEx3.c3(h4):=k2END IF END PROCe6;PROCsatzlesen(EUDAT CONSTx3,SATZ VARj0):j0:=x3.d3(x3.y2).j0END PROCsatzlesen;PROCsatzaendern(EUDAT VARx3,SATZ CONSTf6):IF NOTdateiende(x3)THENg6END IF.g6:e4(CONCR(x3));disablestop;g4(CONCR(x3),h4(f6));b4:=f6.b4:x3.d3(x3.y2).j0.END PROCsatzaendern;PROCg4(DATEI VARx3,INT CONSTh6):IFi6THENj6END IF.i6:INT CONSTk6:=h4(b4);k6<>h6.j6:l6;m6.l6:d6(x3,k6).m6:INT VARh2,i2;k5(x3,h6,h2,i2);e6(x3,h6,h2,i2).b4:x3.d3(x3.y2).j0.END PROCg4;PROCsatzloeschen(EUDAT VARx3):IF NOTdateiende(x3)THENn6END IF.n6:disablestop;o6(CONCR(x3));p6(CONCR(x3));x3.v2DECR1.END PROCsatzloeschen;PROCo6(DATEI VARx3
+):q6(x3);INT CONSTk2:=x3.y2;d6(x3,h4(b4));x3.d3(k2).i2:=x3.t2;x3.t2:=k2.b4:x3.d3(k2).j0.END PROCo6;PROCsatzeinfuegen(EUDAT VARx3,SATZ CONSTf6):r6(CONCR(x3),f6)END PROCsatzeinfuegen;PROCr6(DATEI VARx3,SATZ CONSTf6):INT VARk2,h2,i2;enablestop;s6;disablestop;x3.v2INCR1;t6(x3,k2);INT CONSTu6:=h4(f6);k5(x3,u6,i2,h2);e6(x3,u6,i2,h2);e4(x3).s6:IFx3.t2<>0THENk2:=x3.t2;x3.t2:=x3.d3(k2).i2ELIFx3.u2=d2THENerrorstop(g3)ELSEx3.u2INCR1;k2:=x3.u2END IF;x3.d3(k2).n2:=0;x3.d3(k2).j0:=f6.END PROCr6;INTVEC VARv6;PROCp6(DATEI VARx3):INT CONSTw2:=x3.w2,h2:=index.h2,i2:=index.i2;BOOL VARw6;delete(index.l2,x3.x2);index.j2DECR1;x6(x3,w2,i2,w6);IF NOTw6THENx6(x3,h2,w2,w6)END IF;y6(x3).index:x3.index(w2).END PROCp6;PROCx6(DATEI VARx3,INT CONSTs5,z6,BOOL VARw6):w6:=FALSE;IFs5<>0ANDz6<>0THENa7END IF.a7:INT CONSTb7:=index.j2,c7:=d7.j2;IFe7THENf7;w6:=TRUE END IF.e7:b7+c7<=g2ORb7=0ORc7=0.f7:index.j2INCRd7.j2;g7(x3,d7.l2,s5);index.l2CATd7.l2;h7.h7:index.i2:=d7.i2;IFindex.i2<>0THENx3.index(index.i2).h2:=s5ELSEx3.q2:=
+s5END IF;d7.i2:=x3.s2;x3.s2:=z6.index:x3.index(s5).d7:x3.index(z6).END PROCx6;PROCy6(DATEI VARx3):INT CONSTb4:=x3.satznr;o4(x3,1,1,1);q4(x3,b4)END PROCy6;PROCg7(DATEI VARx3,INTVEC CONSTl2,INT CONSTs5):INT VARl0;FORl0FROM1UPTOlength(l2)DIV2REPx3.d3(l2ISUBl0).m2:=s5END REP END PROCg7;PROCt6(DATEI VARx3,INT CONSTi7):INT VARw2:=x3.w2;IFindex.j2>=f2THENj7END IF;index.j2INCR1;insert(index.l2,x3.x2,i7);x3.y2:=i7;x3.d3(i7).m2:=w2.j7:INT VARu6:=0;k7;IFu6<>0THENl7ELSEm7(x3)END IF;y6(x3);w2:=x3.w2.k7:IFx3.s2<>0THENu6:=x3.s2;x3.s2:=d7.i2ELIFx3.r2<c2THENx3.r2INCR1;u6:=x3.r2;d7.l2:=k3END IF.l7:n7;o7;d7.j2:=index.j2-p7;s3(index.l2,d7.l2,p7+1);index.j2:=p7;g7(x3,d7.l2,u6).n7:INT CONSTq7:=index.i2;IFq7<>0THENx3.index(q7).h2:=u6ELSEx3.q2:=u6END IF;d7.i2:=q7;d7.h2:=w2;index.i2:=u6.o7:INT VARp7;IFr7THENp7:=g2ELSEp7:=index.j2DIV2+1END IF.r7:q7=0.index:x3.index(w2).d7:x3.index(u6).END PROCt6;PROCm7(DATEI VARx3):INT VARw2:=1;REPs7;t7END REP.s7:BOOL VARw6;REP INT CONSTi2:=index.i2;x6(x3,w2,i2,w6)UNTIL NOTw6
+END REP;IFi2=0THEN LEAVEm7ELIFu7THENv7END IF.u7:INT CONSTw7:=g2-index.j2;w7>0.v7:v3(d7.l2,v6,w7+1);d7.j2DECRw7;g7(x3,v6,w2);index.l2CATv6;index.j2:=g2.t7:w2:=i2.index:x3.index(w2).d7:x3.index(i2).END PROCm7;TEXT VARx7:=",";LETy7=1;TEXT PROCdezimalkomma:x7END PROCdezimalkomma;PROCdezimalkomma(TEXT CONSTz7):IFlength(z7)<>1THENerrorstop(h3)ELSEx7:=z7ENDIF END PROCdezimalkomma;INT PROCunsortiertesaetze(EUDAT CONSTx3):x3.z2END PROCunsortiertesaetze;TEXT PROCsortierreihenfolge(EUDAT CONSTx3):x3.p2END PROCsortierreihenfolge;PROCe4(DATEI VARx3):IFa8(x3)THENdisablestop;x3.d3(x3.y2).n2INCRy7;x3.z2INCR1END IF END PROCe4;PROCq6(DATEI VARx3):IF NOTa8(x3)THENdisablestop;x3.d3(x3.y2).n2DECRy7;x3.z2DECR1END IF END PROCq6;BOOL PROCa8(DATEI CONSTx3,INT CONSTk2):(x3.d3(k2).n2ANDy7)=0END PROCa8;BOOL PROCa8(DATEI CONSTx3):a8(x3,x3.y2)END PROCa8;INTVEC VARb8;TEXT VARp2;TEXT VARc8,d8;PROCsortiere(EUDAT VARx3):p2:=x3.p2;IFp2=e0THENe8END IF;f8(CONCR(x3)).e8:INT VARl0;FORl0FROM1UPTOx3.felderzahlREPp2CATcode(l0)
+END REP.END PROCsortiere;PROCsortiere(EUDAT VARx3,TEXT CONSTk0):p2:=k0;f8(CONCR(x3))END PROCsortiere;PROCf8(DATEI VARx3):IFx3.p2<>p2THENx3.p2:=p2;x3.z2:=x3.v2+1ELIFx3.z2=0THEN LEAVEf8END IF;b8:=x3.feldinfo;IFg8THENh8(x3)ELSEi8(x3)END IF;q4(x3,1).g8:x3.v2DIVx3.z2<3.END PROCf8;PROCh8(DATEI VARx3):INT VARy2,j0:=1,j8;q4(x3,1);q6(x3);y2:=x3.y2;WHILEk8REPl8;m8;cout(j0)END REP;disablestop;m7(x3);o4(x3,1,1,1).k8:j0<x3.v2.l8:j0INCR1;q4(x3,j0);j8:=y2;y2:=x3.y2.m8:IFn8THENo8(x3,j0,y2);y2:=j8ELSEq6(x3)END IF.n8:x3.d3(j8).j0GROESSERx3.d3(y2).j0.END PROCh8;PROCi8(DATEI VARx3):INT VARl0;FORl0FROM1UPTOx3.u2REP IF NOTa8(x3,l0)THENo8(x3,x3.v2+1,l0);cout(l0)END IF END REP END PROCi8;PROCo8(DATEI VARx3,INT CONSTsatznr,y2):p8;q8.p8:INT VARt1:=1,u1:=satznr-1,r8;WHILEs8REPt8;u8END REP.s8:t1<=u1.t8:r8:=(t1+u1)DIV2;INT VARv8;q4(x3,r8);IF NOTa8(x3)THENw8END IF;v8:=x3.y2.w8:WHILEx3.satznr<u1REPy4(x3);IFx8THEN LEAVEw8END IF END REP;WHILEx3.satznr>t1REPb5(x3);IFx8THEN LEAVEw8END IF END REP;LEAVEp8.x8:a8(x3).u8:IF
+y8GROESSERx3.d3(y2).j0THENu1:=r8-1ELSEt1:=r8+1END IF.y8:x3.d3(v8).j0.q8:i5(x3,y2);IFx3.satznr<t1THENt1DECR1END IF;disablestop;q6(x3);p6(x3);q4(x3,t1);t6(x3,y2).END PROCo8;BOOL OP GROESSER(SATZ CONSTh0,i0):z8;SELECTb8ISUBa9OF CASE0:b9CASE1:c9CASE2:d9OTHERWISEe9END SELECT.z8:INT VARp0;FORp0FROM1UPTOlength(p2)REP INT CONSTa9:=code(p2SUBp0);feldlesen(h0,a9,c8);feldlesen(i0,a9,d8);SELECTb8ISUBa9OF CASE0:f9CASE1:g9OTHERWISEh9END SELECT END REP;LEAVE GROESSER WITH FALSE.g9:REAL VARi9,j9;wertberechnen(c8,i9);wertberechnen(d8,j9);IFi9<>j9THEN LEAVEz8END IF.f9:IF NOT(c8LEXEQUALd8)THEN LEAVEz8END IF.h9:IFc8<>d8THEN LEAVEz8END IF.c9:i9>j9.b9:c8LEXGREATERd8.d9:k9(c8);k9(d8);c8>d8.e9:c8>d8.END OP GROESSER;PROCwertberechnen(TEXT CONSTl9,REAL VARwert):LETm9="0123456789";TEXT VARn9:=x7,text;INT VARk2;INT CONSTo9:=length(l9);p9;WHILEk2<=o9REPq9;k2INCR1END REP;wert:=real(text).p9:k2:=pos(l9,"0","9",1);IFk2=0THENwert:=0.0;LEAVEwertberechnenELIFpos(l9,"-",1,k2)>0THENtext:="-"ELSEtext:=e0END IF;.q9:TEXT
+CONSTr9:=l9SUBk2;IFpos(m9,r9)>0THENtextCATr9ELIFr9=n9THENtextCAT".";n9:=e0END IF.END PROCwertberechnen;PROCk9(TEXT VARs9):IFlength(s9)<>8THENs9:=e0ELSEs9:=subtext(s9,7)+subtext(s9,4,5)+subtext(s9,1,2)END IF END PROCk9;PROCreorganisiere(TEXT CONSTz3):EUDAT VARt9,u9;oeffne(t9,z3);disablestop;DATASPACE VARa4:=nilspace;oeffne(u9,a4);v9(CONCR(t9),u9);IF NOTiserrorTHENforget(z3,quiet);copy(a4,z3)END IF;forget(a4)END PROCreorganisiere;PROCv9(DATEI VARt9,EUDAT VARu9):enablestop;w9;x9(t9,CONCR(u9)).w9:q4(t9,1);aufsatz(u9,1);WHILE NOTdateiendeREPsatzeinfuegen(u9,y9);cout(t9.satznr);y4(t9);weiter(u9)END REP.dateiende:t9.satznr>t9.v2.y9:t9.d3(t9.y2).j0.END PROCv9;PROCx9(DATEI VARt9,u9):u9.felderzahl:=t9.felderzahl;u9.o2:=t9.o2;u9.feldinfo:=t9.feldinfo;u9.p2:=t9.p2;u9.b3(1):=t9.b3(1);u9.b3(2):=t9.b3(2);u9.b3(3):=t9.b3(3)END PROCx9;PROCnotizenlesen(EUDAT CONSTx3,INT CONSTp4,TEXT VARz9):z9:=x3.b3(p4)END PROCnotizenlesen;PROCnotizenaendern(EUDAT VARx3,INT CONSTp4,TEXT CONSTz9):x3.b3(p4):=z9END PROC
+notizenaendern;END PACKETeudasdateien;
+PACKETdatenverwaltungDEFINESoeffne,kopple,kette,zugriff,sichere,dateienloeschen,anzahlkoppeldateien,anzahldateien,aendernerlaubt,inhaltveraendert,eudasdateiname,dateiversion,anzahlfelder,feldnamenlesen,feldnamenbearbeiten,feldnummer,feldinfo,feldlesen,feldbearbeiten,feldaendern,satznummer,satzkombination,dateiende,weiter,zurueck,aufsatz,satzeinfuegen,satzloeschen,aenderungeneintragen,suchbedingung,suchbedingungloeschen,suchversion,satzausgewaehlt,markierungaendern,satzmarkiert,markierungenloeschen,markiertesaetze:LET INTVEC=TEXT,DATEI=STRUCT(TEXTname,SATZo2,INTVECa10,INTb10,INTc10,DATASPACEa4,EUDATd10,SATZe10,BOOLf10,BOOLg10,h10,i10,TEXTx1,INTVECj10,INTk10),VERWEIS=STRUCT(INTx3,p5);LETe0="",m3="";LETmaxint=32767,l10=10,m10=256,n10=32;ROWl10DATEI VARo10;INT VARp10:=0,q10:=0,r10,s10:=0,t10,u10:=0,v10,w10,x10,y10:=0;BOOL VARz10:=TRUE,a11,b11;TEXT VARc11;ROWm10VERWEIS VARd11;ROWn10VERWEIS VARe11;INT VARf11;LETg11="Zuviel Dateien geoeffnet",h11="Datei existiert nicht",i11="Zu viele Felder",
+j11="Zu viele Koppelfelder",k11="keine Koppelfelder vorhanden",l11="kein direkter Dateizugriff bei geketteten oder gekoppelten Dateien",m11="keine Datei geoeffnet",n11="Datei nicht gesichert",o11="Suchmuster zu umfangreich";TEXT VARi3;TEXT VARg0:=" ";INTVEC VARx0;OP CAT(INTVEC VARtext,INT CONSTwert):replace(g0,1,wert);textCATg0END OP CAT;PROCinsert(INTVEC VARp3,INT CONSTk2,wert):INT CONSTp11:=k2+k2-2;x0:=subtext(p3,p11+1);p3:=subtext(p3,1,p11);p3CATwert;p3CATx0END PROCinsert;PROCdelete(INTVEC VARp3,INT CONSTk2):INT CONSTp11:=k2+k2-2;x0:=subtext(p3,p11+3);p3:=subtext(p3,1,p11);p3CATx0END PROCdelete;PROCq11(INTVEC VARp3,INT CONSTr11,s11):INT VARl0;FORl0FROMr11UPTOlength(p3)DIV2-1REPreplace(p3,l0,(p3ISUBl0)+s11)END REP END PROCq11;EUDAT VARt11;SATZ VARi4;PROCu11(TEXT CONSTz3):IFp10=l10THENerrorstop(g11)END IF;IF NOTexists(z3)THENerrorstop(h11)END IF;oeffne(t11,z3)END PROCu11;PROCv11(DATEI VARx3,TEXT CONSTz3):IFa11THENx3.a4:=old(z3);oeffne(x3.d10,x3.a4)ELSEoeffne(x3.d10,z3)END IF;x3.c10:=
+0;x3.g10:=FALSE;x3.h10:=FALSE;x3.name:=z3;w11(x3)END PROCv11;PROCx11(INT CONSTt1):INT VARy11:=t1;WHILEo10(y11).c10<>0REPy11:=o10(y11).c10END REP;o10(y11).c10:=p10END PROCx11;PROCz11:IFdateiende(o10(1).d10)THENaufsatz(1)ELSEaufsatz(satznr(o10(1).d10))END IF END PROCz11;PROCa12:t10:=felderzahl(o10(1).d10);u10:=t10;feldnamenlesen(o10(1).d10,o10(1).o2);f11:=0;INT VARl0;FORl0FROM1UPTOu10REPd11(l0).x3:=0END REP END PROCa12;PROCb12:y10INCR1;IFy10>32000THENy10:=-32000END IF END PROCb12;PROCoeffne(TEXT CONSTz3,BOOL CONSTc12):enablestop;suchbedingungloeschen;dateienloeschen(FALSE);u11(z3);a11:=c12;d12;v11(o10(p10),z3);z11;a12.d12:p10:=1;b12;x10:=0.END PROCoeffne;PROCkopple(TEXT CONSTz3):enablestop;IFp10=0THENerrorstop(m11)END IF;u11(z3);e12;f12;g12;v11(o10(p10),z3);h12.e12:feldnamenlesen(t11,i4);INT VARa10:=0;INTVEC VARi12:=m3;WHILEa10<felderzahl(t11)REPfeldlesen(i4,a10+1,i3);INT CONSTindex:=feldindex(o10(1).o2,i3);IFindex>0THENa10INCR1;i12CATindexEND IF UNTILindex=0END REP.f12:IFu10+felderzahl(
+t11)-a10>m10THENerrorstop(i11)ELIFf11+a10>n10THENerrorstop(j11)ELIFa10=0THENerrorstop(k11)END IF;p10INCR1;o10(p10).o2:=i4;o10(p10).a10:=i12;o10(p10).b10:=a10;INT VARp0:=a10;WHILEp0<felderzahl(t11)REPu10INCR1;p0INCR1;d11(u10).x3:=p10;d11(u10).p5:=p0END REP;FORp0FROM1UPTOa10REPj12END REP.j12:INT CONSTk12:=i12ISUBp0;IFd11(k12).x3=0THENl12ELSEm12END IF.l12:f11INCR1;e11(f11).x3:=p10;e11(f11).p5:=p0;d11(k12).x3:=f11;d11(k12).p5:=1.m12:INT CONSTn12:=d11(k12).x3+d11(k12).p5;o12;d11(k12).p5INCR1;e11(n12).x3:=p10;e11(n12).p5:=p0.o12:INT VARi7;FORi7FROMf11DOWNTOn12REPe11(i7+1):=e11(i7)END REP;f11INCR1;FORi7FROM1UPTOt10REP IFd11(i7).x3>=n12THENd11(i7).x3INCR1END IF END REP.g12:q10INCR1;IFs10=0THENs10:=p10ELSEx11(s10)END IF.h12:b12;o10(p10).f10:=FALSE;o10(p10).i10:=FALSE;p12(o10(p10)).END PROCkopple;PROCkette(TEXT CONSTz3):enablestop;IFp10=0THENerrorstop(m11)END IF;u11(z3);p10INCR1;v11(o10(p10),z3);x11(1);IFz10THENaufsatz(satznummer)END IF END PROCkette;PROCzugriff(PROC(EUDAT VAR)q12):IFp10>1THEN
+errorstop(l11)ELSEaenderungeneintragen;q12(o10(1).d10);z11;a12;o10(1).h10:=TRUE ENDIF END PROCzugriff;PROCsichere(INT CONSTr12,TEXT CONSTz3):aenderungeneintragen;notizenaendern(o10(r12).d10,2,date);IFa11THENforget(z3,quiet);copy(o10(r12).a4,z3)END IF;o10(r12).h10:=FALSE END PROCsichere;PROCdateienloeschen(BOOL CONSTs12):aenderungeneintragen;t12;u12.t12:q10:=0;s10:=0;o10(1).c10:=0;u10:=0;z10:=TRUE.u12:WHILEp10>0REP IFv12AND NOTs12THENerrorstop(n11);LEAVEdateienloeschenEND IF;forget(o10(p10).a4);p10DECR1END REP.v12:a11ANDo10(p10).h10.END PROCdateienloeschen;INT PROCanzahlkoppeldateien:q10END PROCanzahlkoppeldateien;INT PROCanzahldateien:p10END PROCanzahldateien;BOOL PROCaendernerlaubt:a11END PROCaendernerlaubt;BOOL PROCinhaltveraendert(INT CONSTw12):aenderungeneintragen;o10(w12).h10END PROCinhaltveraendert;TEXT PROCeudasdateiname(INT CONSTw12):o10(w12).nameEND PROCeudasdateiname;INT PROCdateiversion:y10END PROCdateiversion;INT PROCanzahlfelder:u10END PROCanzahlfelder;PROCfeldnamenlesen(
+INT CONSTp0,TEXT VARname):IFp0<=t10THENfeldlesen(o10(1).o2,p0,name)ELSEfeldlesen(x12,y12,name)END IF.x12:o10(d11(p0).x3).o2.y12:d11(p0).p5.END PROCfeldnamenlesen;PROCfeldnamenbearbeiten(INT CONSTp0,PROC(TEXT CONST,INT CONST,INT CONST)u0):IFp0<=t10THENfeldbearbeiten(o10(1).o2,p0,PROC(TEXT CONST,INT CONST,INT CONST)u0)ELSEfeldbearbeiten(x12,y12,PROC(TEXT CONST,INT CONST,INT CONST)u0)END IF.x12:o10(d11(p0).x3).o2.y12:d11(p0).p5.END PROCfeldnamenbearbeiten;INT PROCfeldnummer(TEXT CONSTz12):INT VARa13:=t10,p4:=feldindex(o10(1).o2,z12),y11:=s10;WHILEp4=0ANDy11<>0REPp4:=feldindex(o10(y11).o2,z12);b13;y11:=o10(y11).c10END REP;p4.b13:INT CONSTc13:=o10(y11).b10;IFp4=0THENa13INCRfelderzahl(o10(y11).d10);a13DECRc13ELSEp4INCRa13;p4DECRc13END IF.END PROCfeldnummer;INT PROCfeldinfo(INT CONSTp0):IFp0<=t10THENfeldinfo(o10(1).d10,p0)ELSEfeldinfo(o10(x12).d10,y12)END IF.x12:d11(p0).x3.y12:d11(p0).p5.END PROCfeldinfo;PROCfeldlesen(INT CONSTp0,TEXT VARq0):IFp0<=t10THENfeldlesen(o10(r10).d10,p0,q0)ELSEd13
+END IF.d13:INT CONSTx12:=d11(p0).x3;IFo10(x12).f10THENfeldlesen(o10(x12).e10,y12,q0)ELSEfeldlesen(o10(x12).d10,y12,q0)END IF.y12:d11(p0).p5.END PROCfeldlesen;PROCfeldbearbeiten(INT CONSTp0,PROC(TEXT CONST,INT CONST,INT CONST)u0):IFp0<=t10THENfeldbearbeiten(o10(r10).d10,p0,PROC(TEXT CONST,INT CONST,INT CONST)u0)ELSEe13END IF.e13:INT CONSTx12:=d11(p0).x3;IFo10(x12).f10THENfeldbearbeiten(o10(x12).e10,y12,PROC(TEXT CONST,INT CONST,INT CONST)u0)ELSEfeldbearbeiten(o10(x12).d10,y12,PROC(TEXT CONST,INT CONST,INT CONST)u0)END IF.y12:d11(p0).p5.END PROCfeldbearbeiten;PROCfeldaendern(INT CONSTp0,TEXT CONSTq0):INT CONSTx12:=d11(p0).x3;IFp0<=t10THENf13ELSEg13END IF.f13:o10(r10).h10:=TRUE;IFh13CANDi13THENj13END IF;feldaendern(o10(r10).d10,p0,q0).h13:x12>0.i13:feldlesen(o10(r10).d10,p0,i3);i3<>q0.j13:INT VARk13:=y12,l13:=x12;REPm13(o10(n13));o10(n13).i10:=TRUE;feldaendern(o10(n13).e10,k12,q0);l13INCR1;k13DECR1UNTILk13=0END REP.g13:m13(o10(x12));IFo13THENo10(x12).g10:=TRUE;feldaendern(o10(x12).e10,y12
+,q0)END IF.o13:feldlesen(o10(x12).e10,y12,i3);i3<>q0.y12:d11(p0).p5.n13:e11(l13).x3.k12:e11(l13).p5.END PROCfeldaendern;PROCm13(DATEI VARx3):IF NOTx3.f10THENx3.f10:=TRUE;p13END IF.p13:IFdateiende(x3.d10)THENsatzinitialisieren(x3.e10,x3.b10);q13ELSEsatzlesen(x3.d10,x3.e10)END IF.q13:INT VARl0;FORl0FROM1UPTOx3.b10REPfeldlesen(x3.a10ISUBl0,i3);feldaendern(x3.e10,l0,i3)END REP.END PROCm13;PROCp12(DATEI VARx3):r13;s13.r13:feldlesen(o10(r10).d10,t13,x1).t13:x3.a10ISUB1.x1:x3.x1.s13:aufsatz(x3.d10,x1);WHILE NOTu13(x3)REPweiter(x3.d10,x1)END REP;IFdateiende(x3.d10)THENm13(x3)ELSEx3.f10:=FALSE END IF.END PROCp12;PROCv13:INT VARy11:=s10;WHILEy11<>0REPp12(o10(y11));y11:=o10(y11).c10END REP;w10:=1END PROCv13;BOOL PROCu13(DATEI CONSTx3):IF NOTdateiende(x3.d10)THENw13END IF;TRUE.w13:INT VARx13;FORx13FROM2UPTOx3.b10REPfeldlesen(o10(r10).d10,a10ISUBx13,i3);feldbearbeiten(x3.d10,x13,PROC(TEXT CONST,INT CONST,INT CONST)y13);IF NOTz13THEN LEAVEu13WITH FALSE END IF END REP.a10:x3.a10.END PROCu13;BOOL VAR
+z13;PROCy13(TEXT CONSTj0,INT CONSTt1,u1):z13:=length(i3)+t1=u1+1CANDpos(j0,i3,t1,u1+1)=t1END PROCy13;LETa14=22101,b14="h",c14=""27"";BOOL VARd14;PROCe14:TEXT VARf14;d14:=FALSE;REPf14:=incharety;type(f14)UNTILf14=e0END REP END PROCe14;PROCg14:IFd14THENtype(c14)END IF END PROCg14;BOOL PROCh14:TEXT VARf14;REPf14:=incharety;IFf14=e0THEN LEAVEh14WITH FALSE ELSEi14END IF END REP;FALSE.i14:IFd14THENd14:=FALSE;j14ELSEk14END IF.j14:IFf14=b14THENl14;errorstop(a14,e0);LEAVEh14WITH TRUE ELSEtype(c14);type(f14)END IF.k14:IFf14=c14THENd14:=TRUE ELSEtype(f14)END IF.l14:REP UNTILgetcharety=e0END REP.END PROCh14;PROCweiter(INT CONSTm14):IF NOTz10THENaenderungeneintragen;n14END IF.n14:SELECTm14OF CASE1:o14CASE2:p14CASE3:q14END SELECT.o14:r14(FALSE).p14:e14;REPr14(b11);cout(satznummer)UNTILsatzausgewaehltORz10ORh14END REP;g14.q14:INT VARs14:=satznr(o10(r10).d10);WHILEt14ANDc10<>0REPu14;s14:=1END REP;aufsatz(o10(r10).d10,v14);cout(satznummer);v13;z10:=dateiende(o10(r10).d10);w14.t14:x14(o10(r10),s14+1);
+INT CONSTv14:=o10(r10).j10ISUBo10(r10).k10;v14<>maxint.c10:o10(r10).c10.END PROCweiter;PROCzurueck(INT CONSTm14):IFsatznummer>1THENaenderungeneintragen;y14END IF.y14:SELECTm14OF CASE1:z14CASE2:a15CASE3:b15END SELECT.z14:c15(FALSE).a15:e14;REPc15(b11);cout(satznummer)UNTILsatzausgewaehltORsatznummer=1ORh14END REP;g14.b15:INT VARs14:=satznr(o10(r10).d10);WHILEt14ANDr10<>1REPd15;s14:=maxint-1END REP;aufsatz(o10(r10).d10,f6);cout(satznummer);v13;z10:=FALSE;w14.t14:INT VARf6;x14(o10(r10),s14);IFo10(r10).k10=1THENf6:=1;TRUE ELSEf6:=o10(r10).j10ISUB(o10(r10).k10-1);FALSE END IF.END PROCzurueck;PROCr14(BOOL CONSTe15):f15;IFg15THENo14;v13ELSEw10INCR1END IF;w14.f15:INT VARy11:=s10;WHILEy11>0REPh15;y11:=o10(y11).c10END REP.h15:BOOL VARi15;j15(o10(y11),i15);IFi15THEN LEAVEf15END IF.g15:y11=0.o14:IFe15THENweiter(o10(r10).d10,c11)ELSEweiter(o10(r10).d10)END IF;WHILEdateiende(o10(r10).d10)REPk15UNTILz10END REP.k15:IFo10(r10).c10<>0THENu14;l15ELSEz10:=TRUE END IF.l15:aufsatz(o10(r10).d10,1).END PROC
+r14;PROCj15(DATEI VARx3,BOOL VARi15):IFdateiende(x3.d10)THENi15:=FALSE ELSEm15END IF.m15:i15:=TRUE;REPweiter(x3.d10,x3.x1);IFdateiende(x3.d10)THENi15:=FALSE;aufsatz(x3.d10,x3.x1)END IF UNTILu13(x3)END REP.END PROCj15;PROCc15(BOOL CONSTe15):WHILEsatznr(o10(r10).d10)=1CANDsatznummer>1REPd15;n15(o10(r10).d10)END REP;IFe15THENzurueck(o10(r10).d10,c11)ELSEzurueck(o10(r10).d10)END IF;z10:=FALSE;v13;w14END PROCc15;PROCu14:v10INCRsaetze(o10(r10).d10);r10:=o10(r10).c10END PROCu14;PROCd15:INT VARu6:=1;WHILEo10(u6).c10<>r10REPu6:=o10(u6).c10END REP;v10DECRsaetze(o10(u6).d10);r10:=u6END PROCd15;PROCaenderungeneintragen:INT VARy11:=s10;WHILEy11<>0REPo15;y11:=o10(y11).c10END REP.o15:IFo10(y11).f10THENp15(o10(y11))END IF.END PROCaenderungeneintragen;PROCp15(DATEI VARx3):IFq15AND NOTr15THENs15ELIFt15ANDu15THENv15ELIFr15THENp12(x3)END IF;w15;g10:=FALSE;r15:=FALSE.q15:NOTdateiende(x3.d10)ANDg10.t15:felderzahl(e10)>x3.b10.u15:r15ORg10.v15:h10:=TRUE;feldlesen(e10,1,x3.x1);satzeinfuegen(x3.d10,e10).w15:x3.
+f10:=FALSE.s15:h10:=TRUE;satzaendern(x3.d10,e10).g10:x3.g10.r15:x3.i10.e10:x3.e10.h10:x3.h10.END PROCp15;PROCn15(EUDAT VARd10):aufsatz(d10,saetze(d10)+1)END PROCn15;PROCaufsatz(INT CONSTsatznr):aenderungeneintragen;r10:=1;v10:=0;WHILEx15ANDy15REPu14END REP;aufsatz(o10(r10).d10,satznr-v10);v13;z10:=dateiende(o10(r10).d10);w14.x15:satznr-v10>saetze(o10(r10).d10).y15:o10(r10).c10<>0.END PROCaufsatz;INT PROCsatznummer:v10+satznr(o10(r10).d10)END PROCsatznummer;INT PROCsatzkombination:w10END PROCsatzkombination;BOOL PROCdateiende:z10END PROCdateiende;SATZ VARy3;satzinitialisieren(y3);PROCsatzeinfuegen:aenderungeneintragen;z15;satzeinfuegen(o10(r10).d10,y3);o10(r10).h10:=TRUE;a16;z10:=FALSE;w14.z15:x14(o10(r10),satznr(o10(r10).d10));q11(o10(r10).j10,o10(r10).k10,1).a16:w10:=1;INT VARy11:=s10;WHILEy11<>0REPn15(o10(y11).d10);y11:=o10(y11).c10END REP.END PROCsatzeinfuegen;PROCsatzloeschen:IF NOTz10THENaenderungeneintragen;b16;satzloeschen(o10(r10).d10);o10(r10).h10:=TRUE;aufsatz(satznummer)END
+IF.b16:IFsatzmarkiertTHENdelete(o10(r10).j10,o10(r10).k10);x10DECR1END IF;q11(o10(r10).j10,o10(r10).k10,-1).END PROCsatzloeschen;LETc16=100;ROWc16STRUCT(INTp5,d16,e16,f16,TEXTx1)VARg16;INT VARh16,i16,j16:=1;BOOL VARk16,l16;suchbedingungloeschen;INT VARm16;LETn16=1,o16=2,p16=3,q16=4,r16=5,s16=6,t16=7,u16=8,v16=9;PROCw14:IFz10THENl16:=FALSE ELSEw16;l16:=x16END IF.w16:m16:=i16;WHILEm16>0REPfeldbearbeiten(y16,PROC(TEXT CONST,INT CONST,INT CONST)z16)END REP.y16:g16(m16).p5.x16:m16<0.END PROCw14;PROCz16(TEXT CONSTj0,INT CONSTq5,r5):IFa17THENm16:=g16(m16).e16ELSEm16:=g16(m16).f16END IF.a17:SELECTg16(m16).d16OF CASEn16:b17CASEo16:c17CASEp16:d17CASEq16:e17CASEr16:f17CASEs16:g17CASEt16:h17CASEu16:i17CASEv16:j17OTHERWISE FALSE END SELECT.b17:SELECTk17OF CASE0:l17;i3LEXEQUALx1CASE1:l17;m17=n17OTHERWISElength(x1)=r5-q5+1ANDc17END SELECT.c17:pos(j0,x1,q5,r5+1)=q5.d17:pos(j0,x1,r5+1-length(x1),r5+1)>0.e17:pos(j0,x1,q5,r5+1)>0.f17:l17;SELECTk17OF CASE0:x1LEXGREATERi3CASE1:m17<n17CASE2:o17;i3<x1
+OTHERWISEi3<x1END SELECT.g17:l17;SELECTk17OF CASE0:i3LEXGREATEREQUALx1CASE1:m17>=n17CASE2:o17;i3>=x1OTHERWISEi3>=x1END SELECT.h17:q5<=r5.i17:satzmarkiert.j17:TRUE.l17:i3:=subtext(j0,q5,r5).END PROCz16;TEXT PROCx1:g16(m16).x1END PROCx1;PROCo17:IFlength(i3)=8THEN TEXT CONSTp17:=subtext(i3,7,8);replace(i3,7,subtext(i3,1,2));replace(i3,1,p17)ELSEi3:=e0END IF END PROCo17;INT PROCk17:feldinfo(g16(m16).p5)END PROCk17;REAL PROCm17:REAL VARd8;wertberechnen(i3,d8);d8END PROCm17;REAL PROCn17:REAL VARd8;wertberechnen(x1,d8);d8END PROCn17;LETq17=";",r17=",",s17="..",t17="++",u17="--",v17="*";BOOL VARw17,x17,y17;INT VARz17,a18,b18,c18,d18;INTVEC VARe18;PROCsuchbedingung(INT CONSTp0,TEXT CONSTg16):INT VARt1:=1,f18:=0;INT CONSTg18:=length(g16)+1;a18:=0;d18:=p0;z17:=h16+1;WHILEt1<g18REPh18;i18;t1:=u1+2END REP.h18:INT VARj18:=pos(g16,r17,t1);IFj18=0THENj18:=g18END IF;IFf18<t1THENk18END IF;INT CONSTu1:=min(j18,f18)-1.k18:a18INCR1;w17:=TRUE;IFa18>1THENb11:=FALSE END IF;f18:=pos(g16,q17,t1);IFf18=0THENf18
+:=g18END IF.i18:l18;x17:=TRUE;INT CONSTm18:=pos(g16,s17,t1,u1+1);IFn18THENo18(e0,v16,-a18)ELIFm18=0THENe9ELSEp18END IF.l18:IFsubtext(g16,t1,t1+1)=u17THENt1INCR2;y17:=TRUE ELSEy17:=FALSE END IF.n18:t1>u1.e9:IFq18THENr18ELSEs18END IF.q18:t1+1=u1CANDsubtext(g16,t1,u1)=t17.r18:o18(e0,u16,-a18).s18:INT VARt18:=pos(g16,v17,t1,u1+1);IFt18=0THENu18ELIFt1=u1THENv18ELSEw18;REPx18END REP END IF.u18:IFy18AND NOTb11THENb11:=TRUE;c11:=g16END IF;o18(subtext(g16,t1,u1),n16,-a18).y18:p0=1ANDt1=1ANDu1=g18-1.v18:o18(e0,t16,-a18).w18:INT VARd16;IFt18=t1THENd16:=n16ELSEd16:=o16END IF.x18:IFd16<>n16THENz18END IF;t1:=t18+1;t18:=pos(g16,v17,t1,u1+1);IFt18=0THENt18:=u1+1;d16:=p16ELSEd16:=q16END IF.z18:TEXT CONSTx1:=subtext(g16,t1,t18-1);IFy17ORa19THEN IFy17THENx17:=TRUE END IF;o18(x1,d16,-a18);IFa19THEN LEAVEs18END IF ELSEo18(x1,d16,h16+2)END IF.a19:t18>=u1.p18:TEXT CONSTb19:=subtext(g16,t1,m18-1),c19:=subtext(g16,m18+2,u1);IFm18=t1THENo18(c19,r16,-a18)ELIFm18=u1-1THENo18(b19,s16,-a18)ELSEd19END IF.d19:IFy17
+THENo18(b19,s16,-a18);x17:=TRUE ELSEo18(b19,s16,h16+2)END IF;o18(c19,r16,-a18).END PROCsuchbedingung;PROCo18(TEXT CONSTe19,INT CONSTd16,e16):f19;g19;IFw17THENh19;i19;c18:=h16ELIFx17THENj19END IF;k19;l19.f19:k16:=FALSE;IFh16=0THENj16INCR1;IFj16>32000THENj16:=1END IF END IF.g19:IFh16=c16THENsuchbedingungloeschen;errorstop(o11)ELSEh16INCR1;i16:=1END IF.h19:IFa18>length(e18)DIV2THENe18CATh16;m19(1,0,h16)END IF;IFa18=length(e18)DIV2THENb18:=0ELSEb18:=e18ISUB(a18+1)END IF.i19:m19(1,-a18,h16);w17:=FALSE;x17:=FALSE.j19:m19(c18,b18,h16);c18:=h16;x17:=FALSE.k19:g16(h16).x1:=e19;INT CONSTn19:=feldinfo(d18);IFn19=2AND(d16=r16ORd16=s16)THENi3:=g16(h16).x1;o17;g16(h16).x1:=i3END IF.l19:g16(h16).d16:=d16;g16(h16).p5:=d18;IFy17THENg16(h16).e16:=b18;g16(h16).f16:=e16ELSEg16(h16).e16:=e16;g16(h16).f16:=b18END IF.END PROCo18;PROCm19(INT CONSTq5,wert,o19):INT VARl0;FORl0FROMq5UPTOh16-1REP IFg16(l0).e16=wertTHENg16(l0).e16:=o19ELIFg16(l0).f16=wertTHENg16(l0).f16:=o19END IF END REP END PROCm19;PROC
+suchbedingungloeschen:disablestop;h16:=0;i16:=-1;e18:=m3;b11:=FALSE;k16:=TRUE;l16:=NOTz10END PROCsuchbedingungloeschen;BOOL PROCsatzausgewaehlt:IF NOTk16THENw14;k16:=TRUE END IF;l16END PROCsatzausgewaehlt;INT PROCsuchversion:IFh16=0THEN0ELSEj16END IF END PROCsuchversion;PROCx14(DATEI VARx3,INT CONSTj0):IF(x3.j10ISUBx3.k10)<j0THENu4ELSEv4END IF.u4:REPx3.k10INCR1UNTIL(x3.j10ISUBx3.k10)>=j0END REP.v4:WHILEx3.k10>1CAND(x3.j10ISUB(x3.k10-1))>=j0REPx3.k10DECR1END REP.END PROCx14;PROCmarkierungaendern:disablestop;IFsatzmarkiertTHENdelete(o10(r10).j10,o10(r10).k10);x10DECR1ELSEinsert(o10(r10).j10,o10(r10).k10,satznr(o10(r10).d10));x10INCR1END IF END PROCmarkierungaendern;BOOL PROCsatzmarkiert:INT CONSTj0:=satznr(o10(r10).d10);x14(o10(r10),j0);j0=(o10(r10).j10ISUBo10(r10).k10)END PROCsatzmarkiert;INT PROCmarkiertesaetze:x10END PROCmarkiertesaetze;PROCmarkierungenloeschen:disablestop;INT VARy11:=1;REPw11(o10(y11));y11:=o10(y11).c10UNTILy11=0END REP;x10:=0END PROCmarkierungenloeschen;PROCw11(
+DATEI VARx3):x3.j10:=e0;x3.j10CATmaxint;x3.k10:=1END PROCw11;END PACKETdatenverwaltung;
+
diff --git a/app/eudas/3.4/src/eudas.2 b/app/eudas/3.4/src/eudas.2
new file mode 100644
index 0000000..427b4f8
--- /dev/null
+++ b/app/eudas/3.4/src/eudas.2
@@ -0,0 +1,25 @@
+PACKETeudasdruckenDEFINESdrucke,interpretiere,gruppentest,druckdatei,direktdrucken,maxdruckzeilen,gruppenwechsel,lfdnr:LETb0=25,SPEICHER=STRUCT(INTc0,d0,e0,f0,TEXTg0);ROWb0SPEICHER VARh0;INT VARi0;LETj0="",k0=" ",l0=" ";TEXT VARm0;PROCinterpretiere(INT CONSTn0,o0,PROC(INT CONST,TEXT VAR)p0):INT VARq0,r0:=0,s0:=0,t0:=o0;u0(n0);WHILE NOTv0REPw0;IFx0THENr0INCR1ELSEy0;z0END IF END REP.z0:IFa1(q0)THENb1ELSEc1;s0:=0END IF.b1:SELECTq0OF CASEd1:e1CASEf1:g1OTHERWISE LEAVEinterpretiereEND SELECT.y0:WHILEr0>0REPh1(k0);r0DECR1END REP.e1:i1(i0).g1:i1(s0).x0:j1=j0ORj1=k0.c1:INT VARk1:=0,l1:=0;BOOL VARm1:=FALSE;REPn1;k1INCR1;IFi0=3THENm1:=TRUE END IF UNTILo1END REP.o1:IFi0<=2THEN TRUE ELIFs0<>0THENk1=s0ELSEl1=0END IF.n1:INT VARp1:=1,q1:=0,r1:=0,s1:=1,t1:=1;m0:=j0;REP IFu1THENv1END IF;IFw1THENx1END IF;y1;s1INCR1END REP.u1:k1=0.v1:z1(a2.c0,a2.d0,a2.e0);IF NOTb2THENc2END IF.b2:a2.c0>length(j1).c2:INT CONSTd2:=e2(t0);IFd2>0THENfeldlesen(d2,a2.g0)ELSEp0(-d2,a2.g0)END IF;t0INCR1;a2.f0:=0;IFa2.g0<>j0THENl1
+INCR1END IF.w1:a2.e0>=4.a2:h0(s1).y1:INT CONSTf2:=g2(a2);IFf2>0THENh2ELSEr1DECRf2END IF.h2:q1INCRf2;IFi2ANDq1>r1THENq1:=r1END IF;IFj2ANDk2THENl2END IF.i2:i0=2ORi0=4.j2:f2=a2.d0.k2:(a2.e0AND1)=0.l2:IF(j1SUB(a2.c0-1))=k0THEN INT VARm2:=n2(s1);WHILE(j1SUBm2)=k0REPm2INCR1;a2.d0INCR1;q1INCR1END REP END IF.x1:IFs1=1THEN IFb2THENo2END IF ELSEp2END IF.o2:IFm1THENh1(k0)ELSEh1(j1)END IF;LEAVEn1.p2:INT VARq2:=0,r2:=a2.c0;INT CONSTs2:=r2-length(j1);t2;u2;v2;w2.t2:IFs2>0THENq1INCRs2;r2DECR(s2-1)END IF;x2.x2:INT CONSTy2:=n2(s1-1),z2:=pos(j1,l0,y2,r2);IFz2>0THENr2:=z2;a3ELIFs2<0AND(j1SUB(r2-1))<>k0THENr2:=y2END IF.a3:INT VARb3:=r2+1;REPq2INCR1;b3INCR1UNTIL(j1SUBb3)<>k0END REP;q1INCRq2.u2:INT VARc3:=0;WHILEt1<s1REPd3;e3;f3;t1INCR1END REP.d3:INT CONSTc0:=g3.c0,d0:=g3.d0,e0:=g3.e0.e3:h3(p1,c0,m1);p1:=c0+d0.g3:h0(t1).f3:INT CONSTi3:=-g2(g3);IFi3=-d0ANDj3THENk3ELIFi3<=0THENl3ELIFj3ANDm3THENn3ELSEo3END IF.k3:c3INCRi3;IFi2THENp3END IF.p3:IFc3<0THENq3(-c3);c3:=0END IF.l3:IFr3THENq3(-i3)END IF;s3(g3);l1DECR1;
+IFt3THENu3ELSEc3INCRi3;v3END IF.r3:(e0AND2)=2.t3:(e0AND1)=1.u3:IF NOTr3THENq3(-i3)END IF.v3:IFi2ANDc3<0THENq3(-c3);c3:=0END IF.j3:NOTt3.m3:i3<=q1.n3:s3(g3);l1DECR1;c3INCRi3;q1DECRi3.o3:INT VARw3:=0,x3:=g3.f0+1,y3:=x3+d0-1;IFj3THENy3INCRq1END IF;IFr3ANDz3THENa4ELIFb4THENc4END IF;d4;IFj3THENc3INCRq1;q1:=0END IF.a4:INT CONSTe4:=length(g3.g0)-y3;x3INCRe4;y3INCRe4.b4:i0>=3.z3:NOTb4.d4:IFr3THENq3(w3)END IF;f4(g3.g0,x3,y3);IFg4THENq3(w3)END IF.g4:NOTr3.c4:IFpos(g3.g0,k0,x3,y3+1)>0THENh4END IF;INT CONSTi4:=pos(g3.g0,"!","�",y3+1);IFi4=0THENg3.f0:=length(g3.g0);l1DECR1ELSEg3.f0:=i4-1END IF.h4:y3INCR1;w3DECR1;WHILE(g3.g0SUBy3)<>k0REPy3DECR1;w3INCR1END REP;WHILE(g3.g0SUBy3)=k0REPy3DECR1;w3INCR1UNTILm2<x3END REP.v2:h3(p1,r2,m1);IFc3<0THEN IFr2<=length(j1)THENq3(-c3)END IF;p1:=r2ELSEp1:=r2+min(c3,q2)END IF.w2:IFs2>0THENj4;k4;LEAVEn1ELSEl4END IF.j4:IF NOTm1THENf4(j1,p1,length(j1))END IF.k4:INT VARm4:=length(m0);IF(m0SUBm4)=k0THEN REPm4DECR1UNTIL(m0SUBm4)<>k0END REP;m0:=subtext(m0,1,m4)END IF;IFn4
+THENm0CATk0END IF;h1(m0).n4:(j1SUB LENGTHj1)=k0AND(i0<3ORl1=0).l4:q1:=0;r1:=0.END PROCinterpretiere;INT PROCn2(INT CONSTo4):h0(o4).c0+h0(o4).d0END PROCn2;INT PROCg2(SPEICHER CONSTp4):p4.d0-length(p4.g0)+p4.f0END PROCg2;LETq4=" ";PROCq3(INT CONSTr4):INT VARs4:=r4;WHILEs4>=10REPm0CATq4;s4DECR10END REP;WHILEs4>0REPm0CATk0;s4DECR1END REP END PROCq3;PROCs3(SPEICHER VARp4):IFp4.f0=0THENm0CATp4.g0ELSEf4(p4.g0,p4.f0+1,length(p4.g0))END IF;p4.f0:=length(p4.g0)END PROCs3;PROCh3(INT CONSTt4,u4,BOOL CONSTm1):IFm1THENq3(u4-t4)ELSEf4(j1,t4,u4-1)END IF END PROCh3;TEXT VARv4;PROCf4(TEXT CONSTw4,INT CONSTt4,u4):v4:=subtext(w4,t4,u4);m0CATv4END PROCf4;FILE VARx4;TEXT VARj1;INT VARy4;LETz4="keine schliessende Klammer in Feldmuster",a5="kein Kommando in Kommandozeile",b5="unbekanntes Kommando";LETc5="&",d5="%",e5="%",f5="<",g5=">";LETh5=" "1"VOR "1"VORSPANN "2"WDH "2"WIEDERHOLUNG "3"NACH "3"NACHSPANN "4"ABK "4"ABKUERZUNGEN "5"GRUPPE "6"MODUS "7"MEHR "LETi5=1,j5=2,k5=3,l5=4,m5=5,d1=6,f1=7,n5=100;
+INT VARo5,p5,q5;BOOL VARv0,r5;.s5:lineno(x4).t5:o5:=maxlinelength(x4).PROCu5(TEXT CONSTv5):REPy4INCR1UNTIL(j1SUBy4)<>v5END REP END PROCu5;PROCz1(INT VARx3,w5,e0):x5;IFb2THENx3:=max(o5,length(j1))+1;w5:=0;e0:=5ELSEx3:=y4;y5END IF.x5:z5(c5,d5).b2:y4>length(j1).y5:TEXT CONSTa6:=j1SUBy4;IFa6=d5THENe0:=0ELSEe0:=4END IF;b6;feldnamenlesen;c6.b6:u5(a6);IFy4-1>x3THENd6END IF.d6:e0INCR3.feldnamenlesen:IF(j1SUBy4)=f5THENe6ELSEf6END IF;IFg6THENz1(x3,w5,e0);LEAVEz1END IF.g6:p5>q5.e6:p5:=y4+1;q5:=pos(j1,g5,p5);IFq5=0THENh6(z4,subtext(j1,y4));q5:=length(j1)ELSEq5DECR1END IF;y4:=q5+2.f6:p5:=y4;z5(k0,d5);INT CONSTi6:=pos(j1,c5,p5,y4);IFi6>0THENy4:=i6END IF;q5:=y4-1.c6:IFj6THENk6;u5(a6)END IF;w5:=y4-x3.j6:(j1SUBy4)=a6.k6:e0:=e0OR1.END PROCz1;PROCz1(TEXT VARname):INT VARl6,w5,m6;z1(l6,w5,m6);IFw5>0THENname:=subtext(j1,p5,q5)ELSEname:=j0END IF END PROCz1;PROCz5(TEXT CONSTn6,o6):INT CONSTp6:=pos(j1,n6,y4),q6:=pos(j1,o6,y4);y4:=length(j1)+1;IFp6>0THENy4:=p6END IF;IFq6>0ANDq6<y4THENy4:=q6END IF END PROCz5;
+PROCu0(INT CONSTr6):toline(x4,r6);r5:=FALSE;v0:=eof(x4)END PROCu0;PROCw0:IFr5THENdown(x4)ELSEr5:=TRUE END IF;readrecord(x4,j1);y4:=1;v0:=lineno(x4)>=lines(x4)END PROCw0;BOOL PROCa1(INT VARq0):y4:=1;IF(j1SUB1)<>e5THEN FALSE ELIF(j1SUB2)<>e5THENs6;t6;TRUE ELSEq0:=n5;TRUE END IF.s6:TEXT VARu6;u5(k0);IFy4>length(j1)THENh6(a5,j1);q0:=0;LEAVEa1WITH TRUE END IF;INT CONSTv6:=pos(j1,k0,y4);IFv6=0THENu6:=subtext(j1,y4);u6CATk0;y4:=length(j1)+1ELSEu6:=subtext(j1,y4,v6);y4:=v6END IF.t6:INT CONSTw6:=pos(h5,u6);IFw6>0CAND(h5SUB(w6-2))=k0THENq0:=code(h5SUB(w6-1))ELSEq0:=0;h6(b5,u6);END IF.END PROCa1;PROCi1(INT VARx6):u5(k0);INT CONSTy6:=y4;WHILEz6REPy4INCR1END REP;IFy4>y6THENx6:=int(subtext(j1,y6,y4-1))ELSEx6:=-1END IF.z6:pos("0123456789",j1SUBy4)>0.END PROCi1;FILE VARa7;TEXT VARb7;BOOL VARc7;PROCd7(TEXT CONSTname):b7:=name;e7("PROC ",name," :")END PROCd7;PROCf7:e7("END PROC ",b7,";")END PROCf7;PROCg7(TEXT CONSTh7):c7:=TRUE;putline(a7,h7)END PROCg7;PROCg7(TEXT CONSTi7,j7,k7):c7:=TRUE;e7(i7,j7,k7)END
+PROCg7;PROCe7(TEXT CONSTi7,j7,k7):write(a7,i7);write(a7,j7);write(a7,k7);line(a7)END PROCe7;TEXT VARl7;PROCg7(TEXT CONSTi7,INT CONSTm7,TEXT CONSTk7):l7:=subtext(j1,m7);g7(i7,l7,k7)END PROCg7;PROCn7(INT CONSTr6,o7):e7("; interpretiere (",text(r6)+", "+text(o7),", PROC (INT CONST, TEXT VAR) abk);")END PROCn7;LETp7="kein % WIEDERHOLUNG gefunden",q7="Nur GRUPPE-Anweisung erlaubt",r7="keine ELAN-Anweisung im Initialisierungsteil nach Gruppendefinition",s7="illegale Gruppennummer",t7="diese Gruppe wurde schon definiert",u7="diese Abkuerzung ist nicht definiert",v7="dieser Abschnitt wurde schon einmal definiert",w7="falscher Modus",x7="diese Anweisung darf im Musterteil nicht vorkommen",y7="im Abkuerzungsteil darf keine Anweisung auftreten",z7="in dieser Zeile stehen zu viele Feldmuster",a8="das Druckmuster enthaelt zu viele Feldmuster",b8="nach dem ""&"" soll direkt der Name einer Abkuerzung folgen",c8="kein Doppelpunkt nach Abkuerzung",d8="Abkuerzung mehrfach definiert",e8=
+"das Druckmuster enthaelt zu viele Abkuerzungen";LETf8=200,g8=4,h8=250,GRUPPE=STRUCT(BOOLi8,j8,TEXTg0),ABSCHNITT=STRUCT(INTo0,n0,TEXTd7);ROWf8INT VARe2;INT VARk8;ROWg8GRUPPE VARl8;ROW3ABSCHNITT VARm8;SATZ VARp0;TEXT VARn8;INT VARo8;OP CAT(TEXT VARp8,INT CONSTwert):TEXT VARq8:=" ";replace(q8,1,wert);p8CATq8END OP CAT;PROCr8:enablestop;u0(1);s8;t8;WHILE NOTv0REPu8END REP;v8.s8:INT VARq0;INT VARw8;o8:=0;satzinitialisieren(p0);n8:=j0;k8:=0;c7:=FALSE;m8(1):=ABSCHNITT:(0,0,"vorspann");m8(2):=ABSCHNITT:(0,0,"wdh");m8(3):=ABSCHNITT:(0,0,"nachspann");FORw8FROM1UPTOg8REPl8(w8).j8:=FALSE END REP.t8:BOOL VARx8:=FALSE;REP IFv0THENh6(p7);LEAVEr8END IF;w0;IFa1(q0)THENy8END IF END REP.y8:SELECTq0OF CASEn5:z8CASEm5:a9CASEi5,j5,k5:IF NOTx8THENd7("gruppen")END IF;f7;LEAVEt8OTHERWISE IFq0>0THENh6(q7)END IF END SELECT.z8:IFx8THENh6(r7,j1)ELSEreplace(j1,1," ");g7(j1)END IF.a9:IF NOTx8THENd7("gruppen");x8:=TRUE END IF;INT VARb9;i1(b9);IFb9<1ORb9>g8THENh6(s7,"GRUPPE")ELIFl8(b9).j8THENh6(t7,"GRUPPE")ELSEl8(
+b9).j8:=TRUE;c9END IF.c9:g7("gruppentest (",text(b9),", ");g7(" ",y4,");").u8:SELECTq0OF CASEi5:d9CASEj5:e9CASEk5:f9END SELECT.d9:g9(m8(1),q0).e9:i1(h9);i1(i9);g9(m8(2),q0).f9:g9(m8(3),q0).v8:IFc7THENj9;k9END IF;l9;IFc7THENm9;n9END IF.l9:FORw8FROM1UPTOo8REP IF(n8ISUBw8)>0THENh6(u7,o9,n8ISUBw8)ELSEp9END IF END REP.o9:TEXT VARq9;feldlesen(p0,w8,q9);q9.j9:FORw8FROM1UPTO3REP IFm8(w8).n0=0THENr9END IF END REP.r9:d7(m8(w8).d7);f7.k9:g7("PROC abk (INT CONST nr, TEXT VAR inhalt) :");IFo8>0THENg7("SELECT nr OF")END IF.p9:TEXT CONSTs9:=text(w8);g7("CASE "+s9," : inhalt := abk",s9).m9:IFo8>0THENg7("END SELECT")END IF;g7("END PROC abk;").n9:g7("drucke (PROC gruppen, PROC vorspann, PROC wdh, PROC nachspann)").END PROCr8;PROCg9(ABSCHNITT VARt9,INT VARq0):BOOL VARu9:=TRUE;d7(t9.d7);v9;w9;x9.v9:IFt9.n0<>0THENh6(v7,j1)END IF;t9.n0:=s5+1;t9.o0:=k8+1.w9:WHILE NOTv0REPw0;IFa1(q0)THENy9ELSEz9;a10END IF END REP;b10;LEAVEg9.y9:SELECTq0OF CASEn5:replace(j1,1," ");g7(j1);u9:=TRUE CASEi5,j5,k5:b10;
+LEAVEg9CASEl5:b10;LEAVEw9CASEd1:z9;INT VARc10;i1(c10);IFc10<1ORc10>4THENh6(w7,j1)END IF CASEf1:z9OTHERWISE IFq0>0THENh6(x7)END IF END SELECT.z9:IFu9THENn7(s5,k8+1);u9:=FALSE END IF.b10:f7.a10:TEXT VARname;INT VARd10:=0;REPz1(name);IFname=j0THEN LEAVEa10END IF;d10INCR1;e10END REP.e10:IFd10>=b0THENh6(z7)END IF;IFk8=f8THENh6(a8)ELSEk8INCR1END IF;f10.f10:INT VARg10:=feldnummer(name);IFg10=0THENg10:=feldindex(p0,name);IFg10=0THENh10(name,s5);e2(k8):=-o8ELSEe2(k8):=-g10END IF ELSEe2(k8):=g10END IF.x9:BOOL VARi10:=TRUE;WHILE NOTv0REPw0;IFa1(q0)THENj10ELIFk10THENl10END IF END REP.j10:SELECTq0OF CASEi5,j5,k5:LEAVEx9OTHERWISE IFq0>0THENh6(y7)END IF END SELECT.l10:IFi10THENg7(".");i10:=FALSE END IF;IFm10THENn10ELSEg7(j1)END IF.m10:(j1SUB1)=c5.n10:TEXT VARo10;z1(o10);IFo10=j0THENh6(b8,j1);LEAVEn10END IF;p10;q10.p10:LETr10=":";y4DECR1;u5(k0);IF(j1SUBy4)=r10THENy4INCR1ELSEh6(c8,j1)END IF.q10:h10(o10,0);g7(s10,y4-1,"").s10:"abk"+text(feldindex(p0,o10)).k10:j1<>j0ANDj1<>k0.END PROCg9;PROCh10(TEXT
+CONSTname,INT CONSTr6):INT CONSTt10:=feldindex(p0,name);IFt10>0THENu10ELSEv10END IF.u10:IF(n8ISUBt10)>0THENreplace(n8,t10,r6)ELIFr6=0THENh6(d8,name)END IF.v10:IFo8=h8THENh6(e8)ELSEo8INCR1END IF;n8CATr6;feldaendern(p0,o8,name).END PROCh10;PROCh6(TEXT CONSTw10,x10,INT CONSTr6):LETy10=" ";TEXT VARz10:="FEHLER in Zeile ";z10CATtext(r6);IFx10<>j0THENz10CAT" bei >>";z10CATx10;z10CAT"<<"END IF;note(z10);noteline;note(y10);note(w10);noteline;IFonlineANDcommanddialogueTHENline;putline(z10);put(y10);putline(w10)END IF END PROCh6;PROCh6(TEXT CONSTw10):h6(w10,j0,s5)END PROCh6;PROCh6(TEXT CONSTw10,x10):h6(w10,x10,s5)END PROCh6;LETa11="keine Datei geoeffnet",b11="interner Fehler",c11="direkt Drucken nicht moeglich";TEXT VARd11,e11;BOOL VARf11,g11,h11,i11;FILE VARj11;INT VARh9,i9,k11,l11,m11,n11:=4000,o11;PROCdrucke:drucke(lastparam)END PROCdrucke;PROCdrucke(TEXT CONSTp11):enablestop;lastparam(p11);x4:=sequentialfile(input,p11);modify(x4);IFanzahldateien=0THENerrorstop(a11)END IF;disablestop;q11;r8
+;IFanythingnotedTHENnoteedit(x4)ELIFc7THENr11ELSEdrucke(PROCs11,PROCt11,PROCu11,PROCv11)END IF;forget(w11,quiet).q11:TEXT VARw11;INT VARw8:=0;REPw8INCR1;w11:=text(w8)UNTIL NOTexists(w11)END REP;a7:=sequentialfile(output,w11);headline(a7,"erzeugtes Programm").r11:run(w11);lastparam(p11).END PROCdrucke;PROCs11:END PROCs11;PROCt11:x11(1)END PROCt11;PROCu11:x11(2)END PROCu11;PROCv11:x11(3)END PROCv11;PROCx11(INT CONSTy11):IFm8(y11).n0>0THENinterpretiere(m8(y11).n0,m8(y11).o0,PROC(INT CONST,TEXT VAR)z11)END IF END PROCx11;PROCz11(INT CONSTy11,TEXT VARg0):errorstop(b11);g0:=code(y11)END PROCz11;PROCdrucke(PROCa12,PROCb12,PROCc12,PROCd12):INT VARe12,f12,g12;enablestop;h12;i12;j12;o11:=1;WHILE NOTdateiendeREPk12;cout(satznummer);l12;weiter(e12);m12END REP;n12;o12;aufsatz(1).i12:f12:=0;aufsatz(1);IFmarkiertesaetze>0THENe12:=3;IF NOTsatzmarkiertTHENweiter(e12)END IF ELSEe12:=2;IF NOTsatzausgewaehltTHENweiter(e12)END IF END IF.j12:INT VARw8;FORw8FROM1UPTOg8REPl8(w8).g0:=j0END REP.k12:IFf12=0THEN
+a12;p12;q12(PROCb12)ELSEg11:=FALSE;r12;s12END IF;f12:=satznummer;g12:=satzkombination.r12:f11:=FALSE;a12.s12:IFf11THENt12(f12,g12,PROCd12)END IF;o11INCR1;IFf11THENq12(PROCb12)END IF.l12:IFi9<1THENt5ELSEo5:=i9END IF;IFk11<h9THENtoline(j11,l11)ELSEtoeof(j11);l11:=lineno(j11);k11:=0END IF;i0:=1;c12;k11INCR1.m12:IFm11>n11THENo12;h12END IF.n12:p12;IFf12=0THENq12(PROCd12)ELSEt12(f12,g12,PROCd12)END IF;u0(1).END PROCdrucke;PROCp12:INT VARw8;FORw8FROM1UPTOg8REPl8(w8).i8:=TRUE END REP;g11:=TRUE;f11:=TRUE END PROCp12;PROCq12(PROCt9):k11:=h9;toeof(j11);t5;i0:=1;t9END PROCq12;PROCt12(INT CONSTf12,g12,PROCd12):INT CONSTu12:=satznummer,v12:=satzkombination;aufsatz(f12);WHILEsatzkombination<>g12REPweiter(1)END REP;q12(PROCd12);aufsatz(u12);WHILEsatzkombination<>v12REPweiter(1)END REP END PROCt12;PROCh12:IF NOTh11THENw12END IF;j11:=sequentialfile(modify,e11);maxlinelength(j11,maxlinelength(x4));m11:=lines(j11);x12.w12:INT VARs4:=0;REPs4INCR1;e11:="EUDAS-Ausgabe."+text(s4);UNTIL NOTexists(e11)END REP.
+x12:u0(1);WHILE NOTv0REPy12END REP.y12:w0;INT VARq0;IFa1(q0)THENz12ELSEh1(j1)END IF.z12:IFq0<>n5ANDq0<>m5THEN LEAVEx12END IF.END PROCh12;PROCo12:IFh11THENh11:=FALSE ELIFi11THENdisablestop;a13END IF.a13:TEXT CONSTx6:=std;lastparam(e11);do("print (std)");IFiserrorTHENclearerror;errorstop(c11)ELSEforget(e11,quiet)END IF;lastparam(x6).END PROCo12;PROCh1(TEXT CONSTr6):IFk11>=h9ORk11=0THENinsertrecord(j11);writerecord(j11,r6);m11INCR1ELSEb13END IF;down(j11).b13:IFeof(j11)THENd11:=j0;insertrecord(j11);m11INCR1ELSEreadrecord(j11,d11)END IF;c13;writerecord(j11,d11).c13:INT CONSTd13:=o5*k11;WHILElength(d11)<d13REPd11CATk0END REP;d11CATr6.END PROCh1;PROCdirektdrucken(BOOL CONSTe12):i11:=e12END PROCdirektdrucken;BOOL PROCdirektdrucken:i11END PROCdirektdrucken;PROCdruckdatei(TEXT CONSTp11):e11:=p11;h11:=TRUE END PROCdruckdatei;PROCmaxdruckzeilen(INT CONSTe13):n11:=e13END PROCmaxdruckzeilen;PROCgruppentest(INT CONSTb9,TEXT CONSTf13):IFf13<>l8(b9).g0THENl8(b9).g0:=f13;l8(b9).i8:=TRUE;f11:=TRUE ELSEl8
+(b9).i8:=FALSE END IF END PROCgruppentest;BOOL PROCgruppenwechsel(INT CONSTb9):IFb9>0THENl8(b9).i8ELSEg11END IF END PROCgruppenwechsel;TEXT PROClfdnr:text(o11)END PROClfdnr;END PACKETeudasdrucken;
+PACKETverarbeitungDEFINESkopiere,stdkopiermuster,verarbeite,trage,eindeutigefelder,pruefe,wertemenge,feldmaske,tragesatz,holesatz,K,V,f,wert,zahltext,textdarstellung:SATZ VARg13,h13,i13;INT VARj13;BOOL VARk13;LETj0="",INTVEC=TEXT;INTVEC VARl13;TEXT VARm13:=" ";OP CAT(INTVEC VARp8,INT CONSTn13):replace(m13,1,n13);p8CATm13END OP CAT;PROCstdkopiermuster(TEXT CONSTp11,FILE VARo13):p13;INT VARq13;r13;s13;INT VARg10;FORg10FROM1UPTOq13REPt13;IFu13THENv13ELSEw13END IF END REP.r13:output(o13);EUDAT VARx13;IFexists(p11)THENoeffne(x13,p11)END IF.s13:IFexists(p11)CANDfelderzahl(x13)>0THENfeldnamenlesen(x13,g13);q13:=felderzahl(x13)ELSEy13;q13:=anzahlfelderEND IF.y13:TEXT VARz13;satzinitialisieren(g13);FORg10FROM1UPTOanzahlfelderREPfeldnamenlesen(g10,z13);feldaendern(g13,g10,z13)END REP.u13:feldnummer(z13)>0.t13:feldlesen(g13,g10,z13);put(o13,textdarstellung(z13)).v13:write(o13,"K f(");write(o13,textdarstellung(z13));putline(o13,");").w13:putline(o13,"K """";").END PROCstdkopiermuster;PROCkopiere(
+TEXT CONSTp11,FILE VARo13):a14(b14,o13).b14:"kopiere ("+textdarstellung(p11)+", ".END PROCkopiere;PROCa14(TEXT CONSTc14,FILE VARo7):q11;write(a7,c14);putline(a7,"PROC programmfunktion);");putline(a7,"PROC programmfunktion:");d14;putline(a7,"END PROC programmfunktion");e14;forget(w11,quiet).q11:TEXT VARw11;INT VARw8:=0;REPw8INCR1;w11:=text(w8)UNTIL NOTexists(w11)END REP;disablestop;FILE VARa7:=sequentialfile(output,w11);headline(a7,f14).d14:TEXT VARr6;input(o7);WHILE NOTeof(o7)REPgetline(o7,r6);putline(a7,r6)END REP.e14:TEXT CONSTg14:=std;run(w11);lastparam(g14).END PROCa14;PROCkopiere(TEXT CONSTp11,PROCh14):p13;k13:=TRUE;EUDAT VARx13;oeffne(x13,p11);aufsatz(x13,saetze(x13)+1);feldnamenlesen(x13,h13);l13:=j0;INT VARe12;aufsatz(1);IFmarkiertesaetze>0THENe12:=3;IF NOTsatzmarkiertTHENweiter(e12)END IF ELSEe12:=2;IF NOTsatzausgewaehltTHENweiter(e12)END IF END IF;WHILE NOTdateiendeREPsatzinitialisieren(i13);j13:=1;h14;i14;satzeinfuegen(x13,i13);weiter(x13);weiter(e12)END REP;aufsatz(1).i14:
+IFk13THENfeldnamenaendern(x13,h13);k13:=FALSE END IF END PROCkopiere;OP K(TEXT CONSTz13,j14):IFk13THENk14;END IF;feldaendern(i13,l13ISUBj13,j14);j13INCR1.k14:INT VARl14:=feldindex(h13,z13);IFl14=0THENl14:=felderzahl(h13)+1;feldaendern(h13,l14,z13);END IF;l13CATl14.END OP K;PROCverarbeite(FILE VARm14):a14("verarbeite (",m14)END PROCverarbeite;PROCverarbeite(PROCn14):p13;INT VARe12;aufsatz(1);IFmarkiertesaetze>0THENe12:=3;IF NOTsatzmarkiertTHENweiter(e12)END IF ELSEe12:=2;IF NOTsatzausgewaehltTHENweiter(e12)END IF END IF;WHILE NOTdateiendeREPn14;weiter(e12)END REP;aufsatz(1)END PROCverarbeite;OP V(TEXT CONSTz13,j14):INT CONSTy11:=feldnummer(z13);IFy11=0THENo14(z13)ELSEfeldaendern(y11,j14)END IF END OP V;TEXT VARp14,q14;LETr14="""";TEXT PROCf(TEXT CONSTz13):INT CONSTy11:=feldnummer(z13);IFy11=0THENo14(z13);p14:=j0ELSEfeldlesen(y11,p14)END IF;p14END PROCf;REAL PROCwert(TEXT CONSTz13):INT CONSTy11:=feldnummer(z13);IFy11=0THENo14(z13);0.0ELSEfeldlesen(y11,p14);REAL VARs14;wertberechnen(p14,
+s14);s14END IF END PROCwert;REAL PROCwert(TEXT CONSTz13,INT CONSTt14):round(wert(z13),t14)END PROCwert;TEXT PROCzahltext(REAL CONSTu14,INT CONSTt14):REAL CONSTv14:=round(abs(u14),t14);INT CONSTw14:=decimalexponent(v14)+t14+2;IFu14<0.0THENq14:="-"ELSEq14:=j0END IF;IFv14<1.0THENq14CAT"0"ENDIF;q14CATtext(v14,w14,t14);IFt14>0THENchange(q14,".",dezimalkomma)ELSEchange(q14,".",j0)END IF;q14END PROCzahltext;TEXT PROCzahltext(TEXT CONSTz13,INT CONSTt14):zahltext(wert(z13),t14)END PROCzahltext;TEXT PROCtextdarstellung(TEXT CONSTx14):p14:=x14;y14;changeall(p14,r14,r14+r14);insertchar(p14,r14,1);p14CATr14;p14.y14:INT VARz14:=1;WHILEa15REPchange(p14,z14,z14,b15)END REP.a15:z14:=pos(p14,""0"",""31"",z14);z14>0.b15:r14+text(code(p14SUBz14))+r14.END PROCtextdarstellung;PROCo14(TEXT CONSTz13):errorstop(c15+textdarstellung(z13)+d15)END PROCo14;PROCp13:IFanzahldateien=0THENerrorstop(a11)END IF END PROCp13;SATZ VARe15;EUDAT VARf15;LETf14="erzeugtes Programm",a11="keine Datei geoeffnet",g15=
+"Kein Satz zum Tragen vorhanden",h15="Zieldatei hat falsche Felderzahl",i15=" existiert nicht",j15=" verletzt die Pruefbedingung.",k15=" ist in der Zieldatei bereits vorhanden.",d15=" ist nicht definiert.",l15=" ist nicht in der Wertemenge.",m15=" stimmt nicht mit der Maske ueberein.";LETn15="Satz",c15="Das Feld ";INT VARo15;FILE VARp15;BOOL VARq15:=FALSE,r15,s15;TEXT VARt15;PROCtrage(TEXT CONSTp11,FILE VARu15,BOOL CONSTv15):disablestop;q15:=v15;IFq15THENp15:=u15;output(p15)END IF;w15(p11);q15:=FALSE END PROCtrage;PROCw15(TEXT CONSTp11):enablestop;IFanzahldateien>0THENaufsatz(1)END IF;x15(p11);INT VARe12;IFmarkiertesaetze>0THENe12:=3ELSEe12:=2END IF;INT VARo11:=0;REP IF NOTy15THENweiter(e12)ELSEcout(satznummer+o11)END IF;IFdateiendeTHENaufsatz(1);LEAVEw15END IF;z15END REP.y15:IFe12=3THENsatzmarkiertELSEsatzausgewaehltEND IF.z15:r15:=TRUE;IFq15THENnotizenlesen(f15,1,t15);do(t15)END IF;IFr15THENa16;IFr15THENsatzloeschen;o11INCR1END IF END IF;IF NOTr15THENweiter(e12)END IF.END PROCw15;
+PROCx15(TEXT CONSTp11):IFdateiendeTHENerrorstop(g15)END IF;oeffne(f15,p11);o15:=0;IFfelderzahl(f15)=0THENb16ELIFfelderzahl(f15)<>anzahlfelderTHENerrorstop(h15)END IF;aufsatz(f15,saetze(f15)+1).b16:satzinitialisieren(e15,anzahlfelder);INT VARg10;FORg10FROM1UPTOanzahlfelderREPfeldnamenlesen(g10,p14);feldaendern(e15,g10,p14)END REP;feldnamenaendern(f15,e15).END PROCx15;PROCa16:IFo15>0CANDc16THENd16("",k15)ELSEe16;satzeinfuegen(f15,e15);weiter(f15)END IF.e16:satzinitialisieren(e15,anzahlfelder);INT VARg10;FORg10FROM1UPTOanzahlfelderREPfeldlesen(g10,p14);feldaendern(e15,g10,p14)END REP.c16:TEXT VARo7;INT CONSTf16:=satznr(f15);feldlesen(1,o7);s15:=FALSE;aufsatz(f15,o7);WHILE NOTdateiende(f15)REPg16;weiter(f15,o7)UNTILs15END REP;aufsatz(f15,f16);s15.g16:INT VARw8;s15:=TRUE;FORw8FROM2UPTOo15REPfeldlesen(f15,w8,p14);feldbearbeiten(w8,PROC(TEXT CONST,INT CONST,INT CONST)h16);IF NOTs15THEN LEAVEg16END IF END REP.END PROCa16;PROCh16(TEXT CONSTi16,INT CONSTt4,u4):IFj16COR(length(p14)>0CANDk16)THEN
+s15:=FALSE END IF.j16:(u4-t4+1)<>length(p14).k16:pos(i16,p14,t4,u4+1)<>t4.END PROCh16;PROCd16(TEXT CONSTl16,z10):IFq15THENm16ELSEerrorstop(z10)END IF.m16:put(p15,n15);put(p15,satznummer);IFl16<>""THENwrite(p15,c15);write(p15,textdarstellung(l16))END IF;putline(p15,z10);r15:=FALSE.END PROCd16;PROCeindeutigefelder(INT CONSTr4):o15:=r4END PROCeindeutigefelder;PROCpruefe(TEXT CONSTl16,BOOL CONSTn16):IF NOTn16THENd16(l16,j15)END IF END PROCpruefe;PROCwertemenge(TEXT CONSTl16,o16):INT CONSTy11:=feldnummer(l16);IFy11=0THENd16(l16,d15)ELSEp16END IF.p16:INT VARz14:=0;LETq16=",";feldlesen(y11,p14);IFr16THEN LEAVEp16END IF;p14CATq16;REPz14:=pos(o16,p14,z14+1);IFz14=1ORz14>1CAND(o16SUBz14-1)=q16THEN LEAVEp16END IF UNTILz14=0END REP;d16(l16,l15).r16:INT CONSTs16:=length(o16)-length(p14);(o16SUBs16)=q16ANDpos(o16,p14,s16+1)>0.END PROCwertemenge;PROCfeldmaske(TEXT CONSTl16,t16):INT CONSTy11:=feldnummer(l16);IFy11=0THENd16(l16,d15)ELSEfeldlesen(y11,p14);u16END IF.u16:INT VARz14;TEXT CONSTm2:=code(
+length(t16)+1);TEXT VARv16:=""1"";FORz14FROM1UPTOlength(p14)REP TEXT CONSTv5:=p14SUBz14;w16UNTILv16=""END REP;IFx16THENd16(l16,m15)END IF.w16:INT VARy16:=1;WHILEy16<=length(v16)REP INT CONSTz16:=code(v16SUBy16);IF(t16SUBz16)="*"THENa17ELIFb17THENreplace(v16,y16,code(z16+1));y16INCR1ELSEdeletechar(v16,y16)END IF END REP.a17:IFz16=length(t16)THEN LEAVEfeldmaskeEND IF;y16INCR1;IFpos(v16,code(z16+1))=0THENinsertchar(v16,code(z16+1),y16)END IF.b17:SELECTpos("9XAa",t16SUBz16)OF CASE1:pos("0123456789",v5)>0CASE2:TRUE CASE3:pos("ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÜ",v5)>0CASE4:pos("abcdefghijklmnopqrstuvwxyzäöüß",v5)>0OTHERWISE(t16SUBz16)=v5END SELECT.x16:(v16=""CORpos(v16,m2)=0)ANDc17.c17:(t16SUBlength(t16))<>"*"ORpos(v16,code(length(t16)))=0.END PROCfeldmaske;PROCtragesatz(TEXT CONSTp11):x15(p11);INT CONSTd17:=satznr(f15);a16;satzloeschen;aufsatz(f15,d17)END PROCtragesatz;PROCholesatz(TEXT CONSTp11):p13;IF NOTexists(p11)THENerrorstop(textdarstellung(p11)+i15)END IF;oeffne(f15,p11);IFfelderzahl(f15)
+<>anzahlfelderTHENerrorstop(h15)ELIFsaetze(f15)=0THENerrorstop(g15)END IF;aufsatz(f15,saetze(f15));satzlesen(f15,e15);e17;satzloeschen(f15).e17:satzeinfuegen;INT VARg10;FORg10FROM1UPTOfelderzahl(e15)REPfeldlesen(e15,g10,p14);feldaendern(g10,p14)END REP.END PROCholesatz;END PACKETverarbeitung;
+
diff --git a/app/eudas/3.4/src/eudas.3 b/app/eudas/3.4/src/eudas.3
new file mode 100644
index 0000000..f0218aa
--- /dev/null
+++ b/app/eudas/3.4/src/eudas.3
@@ -0,0 +1,32 @@
+PACKETfensterDEFINES FENSTER,fensterinitialisieren,fenstergroessesetzen,fenstergroesse,fensterveraendert,fensterzugriff,bildschirmneu:TYPE FENSTER=STRUCT(INTb0,c0);LETd0=16,BITVEKTOR=INT,GROESSE=STRUCT(INTe0,f0,g0,h0);ROWd0STRUCT(INTi0,j0,BITVEKTORk0,GROESSEl0)VARm0;INT VARn0:=1;BITVEKTOR VARo0;INT VARp0;FORp0FROM2UPTOd0REPm0(p0).i0:=0END REP;m0(1).i0:=1;m0(1).j0:=0;m0(1).k0:=0;m0(1).l0:=GROESSE:(1,1,79,24);PROCfensterinitialisieren(FENSTER VARf):f.b0:=1;m0(1).i0INCR1;f.c0:=n0;n0INCR1;IFn0>=32000THENn0:=-32000END IF END PROCfensterinitialisieren;PROCfenstergroessesetzen(FENSTER VARf,INT CONSTe0,f0,g0,h0):INT VARq0;r0;IFq0>d0THENs0;t0;u0END IF;v0.r0:q0:=1;WHILEq0<=d0REP IFw0THEN LEAVEr0END IF;q0INCR1END REP.w0:x0.e0=e0ANDx0.f0=f0ANDx0.g0=g0ANDx0.h0=h0.x0:m0(q0).l0.s0:q0:=1;WHILEq0<=d0REP IFm0(q0).i0=0THEN LEAVEs0END IF;q0INCR1END REP;errorstop("zu viele Fenstergroessen");LEAVEfenstergroessesetzen.t0:m0(q0).i0:=0;m0(q0).j0:=0;m0(q0).l0:=GROESSE:(e0,f0,g0,h0);m0(q0).k0:=0.u0:INT VARy0;FOR
+y0FROM1UPTOd0REP IFm0(y0).i0>0THENz0END IF END REP.z0:IFa1(b1,c1)THENsetbit(m0(q0).k0,y0);setbit(m0(y0).k0,q0)ELSEresetbit(m0(y0).k0,q0)END IF.b1:m0(q0).l0.c1:m0(y0).l0.v0:m0(f.b0).i0DECR1;f.b0:=q0;m0(q0).i0INCR1.END PROCfenstergroessesetzen;BOOL PROCa1(GROESSE CONSTa,d1):e1ANDf1.e1:IFa.e0<=d1.e0THENd1.e0<=a.e0+a.g0ELSEa.e0<=d1.e0+d1.g0END IF.f1:IFa.f0<=d1.f0THENd1.f0<=a.f0+a.h0ELSEa.f0<=d1.f0+d1.h0END IF.END PROCa1;PROCfenstergroesse(FENSTER CONSTf,INT VARe0,f0,g0,h0):e0:=x0.e0;f0:=x0.f0;g0:=x0.g0;h0:=x0.h0.x0:m0(f.b0).l0.END PROCfenstergroesse;PROCfensterveraendert(FENSTER CONSTf):m0(f.b0).j0:=0;o0:=o0ORg1.g1:m0(f.b0).k0.END PROCfensterveraendert;PROCfensterzugriff(FENSTER CONSTf,BOOL VARh1):h1:=bit(o0,f.b0);IFm0(f.b0).j0<>f.c0THENm0(f.b0).j0:=f.c0;h1:=TRUE END IF;o0:=o0ORg1;resetbit(o0,f.b0).g1:m0(f.b0).k0.END PROCfensterzugriff;PROCbildschirmneu:o0:=-1END PROCbildschirmneu;ROW16INT VARi1:=ROW16INT:(1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384,-32767-1);PROCsetbit(
+BITVEKTOR VARj1,INT CONSTq0):j1:=j1ORi1(q0)END PROCsetbit;PROCresetbit(BITVEKTOR VARj1,INT CONSTq0):j1:=j1AND(-1-i1(q0))END PROCresetbit;BOOL PROCbit(BITVEKTOR CONSTj1,INT CONSTq0):(j1ANDi1(q0))<>0END PROCbit;END PACKETfenster;
+PACKETeudasmenuesDEFINESersetzungstext,
+##globalmanager,menuemanager,
+##menuedateneinlesen,menuenamen,menueloeschen,menueanbieten,auswahlanbieten,wahl,eschopausfuehren,hilfeanbieten,statuszeile,statusanzeigen,dialogfenster,dialog,neuerdialog,ja,editget,fehlerausgeben:ROW9TEXT VARk1;PROCersetzungstext(INT CONSTl1,TEXT CONSTm1):k1(l1):=m1END PROCersetzungstext;PROCn1(INT CONSTl1,TEXT VARm1):SELECTl1OF CASE1:m1:=timeofdayCASE2:m1:=date
+##CASE3:m1:=name(myself)
+##OTHERWISEm1:=k1(l1)END SELECT END PROCn1;ROW10TEXT VARo1:=ROW10TEXT:("MENUE","BILD","FELD","ERSETZE","ENDE","AUSWAHL","VORSPANN","HILFE","SEITE","");LETp1=1,q1=2,r1=3,s1=4,t1=5,u1=6,v1=7,w1=8,x1=9;LETy1=2,integer=3,z1=4,a2=7;LETb2="FEHLER in Zeile ";FILE VARc2;TEXT VARd2,e2;PROCf2:IFeof(c2)THENd2:="%DUMMY"ELSEreadrecord(c2,d2);IFd2=g2THENd2:=h2END IF;cout(lineno(c2));down(c2)END IF END PROCf2;BOOL PROCi2:IF(d2SUB1)=j2THENk2ELSE FALSE END IF.k2:INT VARl2;replace(d2,1,h2);scan(d2);replace(d2,1,j2);nextsymbol(e2,l2);IFl2<>y1THENm2(n2);FALSE ELSE TRUE END IF.END PROCi2;BOOL PROCo2(INT CONSTp2):o1(p2)=e2END PROCo2;INT PROCq2:TEXT VARr2;INT VARl2;nextsymbol(r2,l2);IFl2=integerTHENint(r2)ELSE IFl2<>a2THENm2(s2)END IF;-1END IF END PROCq2;TEXT PROCt2:TEXT VARr2;INT VARl2;nextsymbol(r2,l2);IFl2=z1THENr2ELSE IFl2<>a2THENm2(u2)END IF;g2END IF END PROCt2;PROCm2(TEXT CONSTv2):note(b2);note(lineno(c2)-1);noteline;note(v2);noteline;line;putline(v2)END PROCm2;INT VARh0,g0,w2,x2;PROCy2(INT CONSTz2,a3)
+:cursor(w2+z2-1,x2+a3-1)END PROCy2;LETb3="Zeile ist ohne Zusammenhang",c3="K Menuedaten im Speicher";PROCmenuedateneinlesen(FILE VARf):d3;modify(f);toline(f,1);c2:=f;WHILE NOTeof(c2)REPf2;IFi2THENe3ELIF NOTanythingnotedTHENm2(b3)END IF END REP;f3.e3:IFo2(p1)THENg3ELIFo2(u1)THENh3ELIFo2(w1)THENi3ELIF NOTanythingnotedTHENm2(b3)END IF.f3:IFonlineTHENline;put(j3DIV2);putline(c3)END IF.j3:dspages(k3(1))+dspages(k3(2))+dspages(k3(3)).END PROCmenuedateneinlesen;TYPE MENUE=STRUCT(SATZl3,m3,n3,o3,TEXTp3,q3,r3);BOUND ROW200MENUE VARs3;INT VARt3;TEXT VARu3,v3;LETg2="",h2=" ",w3="­",j2="%",x3="&",y3=""7"",z3=""27"",a4=""5"",b4="-"8"",c4="+";LETd4="% BILD erwartet",e4="Feldnummer beim %FELD-Kommando fehlt",f4="% ENDE erwartet",g4="Zeile muss mit '&' beginnen",h4="ein Parameter fehlt",i4="Ersetzungstexte gehen nur von 1 bis 9",j4="Name fehlt",n2="Kommandozeile enthaelt kein Kommando",s2="Parameter soll eine Zahl sein",u2="Parameter soll ein TEXT sein",k4="Wiederholungszeile fehlt";PROCg3:TEXT VAR
+name:=t2;IFname=g2THENm2(j4)ELSE INT VARindex;l4;g3(s3(index))END IF.l4:index:=link(m4(2),name);IFindex=0THENinsert(m4(2),name,index)END IF.END PROCg3;PROCg3(MENUE VARn4):o4;p4;q4;r4.o4:satzinitialisieren(n4.l3);satzinitialisieren(n4.m3);satzinitialisieren(n4.n3);satzinitialisieren(n4.o3);n4.p3:=g2;n4.q3:=g2;n4.r3:=g2.p4:s4;INT VARt4:=1;REPf2;IFi2THEN LEAVEp4ELSEu4;t4INCR1END IF END REP.s4:f2;IF NOT(i2CANDo2(q1))THENm2(d4)END IF.u4:INT VARv4:=0;REPv4:=pos(d2,w3,v4+1);IFv4>0THENn4.q3CATcode(v4);n4.r3CATcode(t4)END IF UNTILv4=0END REP;feldaendern(n4.l3,t4,d2).q4:WHILEo2(r1)REPw4END REP.w4:INT VARx4:=q2;IFx4=-1THENm2(e4);x4:=100END IF;y4;z4;a5.y4:feldaendern(n4.m3,x4,t2).z4:TEXT CONSTb5:=t2;INT VARc5;FORc5FROM1UPTOlength(b5)REPn4.p3CATcode(x4);n4.p3CAT(b5SUBc5)END REP.a5:TEXT VARd5:=g2;f2;WHILE NOTi2REPd5CATd2;f2END REP;feldaendern(n4.n3,x4,d5).r4:IFo2(s1)THENe5END IF;IF NOTo2(t1)THENm2(f4)END IF.e5:f2;WHILE NOTi2REPf5;f2END REP.f5:g5(n4.o3);h5(n4.l3).END PROCg3;PROCg5(SATZ VARo3):IF(d2
+SUB1)<>x3THENm2(g4);u3:=g2ELSEi5;j5END IF.i5:INT CONSTk5:=pos(d2,h2);IFk5=0THENm2(h4);u3:=g2ELSEu3:=subtext(d2,2,k5-1);scan(subtext(d2,k5))END IF.j5:t3:=q2;IFt3<1ORt3>9THENm2(i4)ELSE TEXT CONSTl5:=t2;feldaendern(o3,t3,l5);feldaendern(o3,t3+10,u3)END IF.END PROCg5;PROCh5(SATZ VARl3):IFu3=g2THEN LEAVEh5END IF;INT VARt4;FORt4FROM1UPTOfelderzahl(l3)REPfeldlesen(l3,t4,v3);m5;n5END REP.m5:INT VARq0;BOOL VARo5:=FALSE;REPq0:=pos(v3,x3+u3);IFq0>0THENo5:=TRUE;replace(v3,q0+1,text(t3))END IF UNTILq0=0END REP.n5:IFo5THENfeldaendern(l3,t4,v3)END IF.END PROCh5;LETp5="Auswaehlen: PFEILE Ausfuehren: LEER Zurueck: ESC q Hilfe: ESC ?",q5="Eingabe beenden: RETURN Eingabe abbrechen: ESC h Hilfe: ESC ?",r5="Kommando wird ausgefuehrt ..",s5=""15"gib kommando: ",t5=""14"",u5=" existiert nicht.";TEXT VARv5,w5:=g2;PROCmenueanbieten(TEXT CONSTname,FENSTER VARf,BOOL CONSTx5,PROC(INT CONST)y5):d3;INT CONSTindex:=link(m4(2),name);IFindex=0THENz5(name)ELSEa6(s3(index),f,x5,PROC(INT CONST)y5)END IF
+END PROCmenueanbieten;PROCa6(MENUE CONSTn4,FENSTER VARf,BOOL CONSTx5,PROC(INT CONST)y5):disablestop;INT VARwahl,b6:=1,c6:=0;fensterveraendert(f);REPd6;IFwahl>0THENy5(wahl)END IF;b6:=abs(wahl)UNTILwahl=0END REP;fensterveraendert(f).d6:INT VARe6:=0;f6;g6(f,c6);neuerdialog;statusanzeigen(p5);h6;REPi6;j6END REP.f6:wahl:=1;IFiserrorTHENfehlerausgeben;k6END IF.h6:IFc6>=code(n4.r3SUBb6)THENy2(code(n4.q3SUBb6),code(n4.r3SUBb6));out(b4)END IF.i6:REPl6;IFiserrorTHENclearerror;c6:=0ELSE LEAVEi6END IF END REP.l6:TEXT VARm6;WHILEc6<h0REPm6:=getcharety;n6END REP;o6;p6(m6).n6:IFm6=g2THENc6INCR1;y2(1,c6);q6(n4.l3,n4.o3,c6)ELSE LEAVEl6END IF.o6:y2(code(n4.q3SUBwahl),code(n4.r3SUBwahl)).j6:INT VARr6;SELECTe6OF CASE0:s6CASE1:t6CASE2:u6END SELECT.s6:SELECTpos(""1""2""3""8""9""10""13""27" ",m6)OF CASE1:e6:=1CASE2:v6CASE3:w6CASE4:x6CASE5:y6CASE6:z6CASE7:a7CASE8:e6:=2CASE9:b7OTHERWISEc7END SELECT.t6:SELECTpos(""1""2""3""8""10"",m6)OF CASE1:d7CASE2:e7CASE3:f7CASE4:g7CASE5:h7OTHERWISEout(y3)END SELECT;e6:=0.u6
+:SELECTpos(""1""27"?kqh",m6)OF CASE1:eschopausfuehrenCASE2:i7CASE3:j7CASE4:k6CASE5,6:k7OTHERWISEl7END SELECT;e6:=0.v6:r6:=pos(n4.r3,n4.r3SUBwahl,wahl+1);IFr6>0THENwahl:=r6END IF.w6:r6:=m7(n4.q3,n4.q3SUBwahl,wahl-1);IFr6>0THENwahl:=r6END IF.x6:r6:=pos(n4.r3,n4.r3SUBwahl);IFr6<wahlTHENwahlDECR1END IF.y6:IFwahl<length(n4.r3)THENwahlINCR1END IF.z6:r6:=pos(n4.q3,n4.q3SUBwahl,wahl+1);IFr6>0THENwahl:=r6END IF.a7:r6:=m7(n4.r3,n4.r3SUBwahl);IFr6<length(n4.r3)THENwahl:=r6+1END IF.c7:IFn7THENo7ELIFm6<=" "THENpush(z3+m6)END IF.n7:r6:=0;REPr6:=pos(n4.p3,m6,r6+1)UNTIL(r6MOD2)=0END REP;r6>0.o7:wahl:=code(n4.p3SUBr6-1);o6;p7(n4,wahl,c6);LEAVEd6.d7:wahl:=1.e7:wahl:=m7(n4.r3,n4.r3SUBwahl).f7:wahl:=pos(n4.q3,n4.q3SUBwahl).g7:wahl:=pos(n4.r3,n4.r3SUBwahl).h7:wahl:=m7(n4.q3,n4.q3SUBwahl).l7:push(lernsequenzauftaste(m6)).i7:IFx5THENq7;REPy2(1,r7);s7;t7;u7UNTILv7END REP;statusanzeigen(p5)END IF.t7:IFc6>0THENy2(1,r7);q6(n4.l3,n4.o3,r7)END IF.q7:INT VARr7;IFc6<h0THENr7:=c6ELSEr7:=code(n4.r3SUBwahl)END IF.u7:IF
+pos(v5,"!","�",1)>0THENstatusanzeigen(r5);dialog;do(v5);w7;g6(f,c6);neuerdialogEND IF.w7:INT VARz2,a3;getcursor(z2,a3);IFa3=24THENbildschirmneuEND IF.v7:NOTiserror.j7:TEXT VARx7;feldlesen(n4.m3,wahl,x7);hilfeanbieten(x7,f);IFiserrorTHENfehlerausgebenEND IF;g6(f,c6);statusanzeigen(p5).k6:wahl:=b6.k7:wahl:=0;LEAVEd6.b7:p7(n4,wahl,c6);LEAVEd6.END PROCa6;PROCg6(FENSTER CONSTf,INT VARc6):BOOL VARh1;fensterzugriff(f,h1);fenstergroesse(f,w2,x2,g0,h0);IFh1THENc6:=0;y2(1,1)END IF END PROCg6;PROCp6(TEXT VARy7):enablestop;getchar(y7)END PROCp6;PROCp7(MENUE CONSTn4,INT VARwahl,INT CONSTc6):IFz7THENout(c4)END IF;TEXT VARd5;feldlesen(n4.n3,wahl,d5);IFd5<>g2ANDd5<>h2THENdo(d5);wahl:=-wahlEND IF.z7:c6>=code(n4.r3SUBwahl).END PROCp7;INT PROCm7(TEXT CONSTa8,b8,INT CONSTc8):INT VARc5:=c8;WHILEc5>0CAND(a8SUBc5)<>b8REPc5DECR1END REP;c5END PROCm7;INT PROCm7(TEXT CONSTa8,b8):m7(a8,b8,length(a8))END PROCm7;PROCeschopausfuehren:TEXT VARd8:=g2,e8;lernsequenzauftastelegen(""0"",g2);push(""27""1""0""0"");editget(
+d8,32000,0,""0"","",e8);d8:=lernsequenzauftaste(""0"");IFd8<>g2THENf8ELSEg8END IF.f8:REPgetchar(e8)UNTILpos(""1""2""8""11""12"",e8)=0END REP;lernsequenzauftastelegen(e8,d8).g8:getchar(e8).END PROCeschopausfuehren;INT VARh8,k5,i8;PROCq6(SATZ CONSTl3,o3,INT CONSTt4):h8:=1;IFt4<=felderzahl(l3)THENj8END IF;k8.j8:REPfeldbearbeiten(l3,t4,PROC(TEXT CONST,INT CONST,INT CONST)l8);IFi8>0THENm8END IF;h8:=k5+1UNTILi8=0END REP.m8:TEXT VARn8,o8;n1(i8,n8);feldlesen(o3,i8,o8);n8CATo8;p8;outsubtext(n8,1,q8);k5INCRq8.p8:INT VARq8:=length(o8);IFq8=0THEN IFn8=g2THENn8:=h2;q8:=1ELSEq8:=length(n8)END IF END IF;IFk5+q8>g0THENq8DECRg0-k5END IF.k8:IFw2+g0>=80THENout(a4)ELSEg0-h8TIMESOUTh2END IF.END PROCq6;PROCl8(TEXT CONSTm1,INT CONSTr8,s8):INT CONSTt8:=r8-1;h8INCRt8;k5:=pos(m1,x3,h8,s8+1);IFk5=0THENk5:=s8;i8:=0ELSEk5DECR1;i8:=int(m1SUBk5+2)END IF;IFk5>g0+t8THENk5:=g0+t8;i8:=0END IF;outsubtext(m1,h8,k5);k5DECRt8END PROCl8;PROCs7:LETu8=""27"k";TEXT VARv8;INT VARz2,a3;getcursor(z2,a3);IFiserrorTHENfehlerausgeben
+;v5:=w5ELSEv5:=g2END IF;statusanzeigen(q5);w8;REPx8UNTILv8<>u8END REP;IFpos(v5,"!","�",1)>0THENw5:=v5END IF;cursor(z2,a3).w8:cursor(w2,a3);out(s5);g0-15TIMESOUTh2;out(t5).x8:cursor(w2+15,a3);editget(v5,32000,g0-17,"","kh",v8);IFiserrorTHENclearerrorELIFv8=u8THENv5:=w5ELIFv8=y8THENv5:=g2END IF.END PROCs7;PROCz5(TEXT CONSTz8):errorstop(textdarstellung(z8)+u5)END PROCz5;TYPE AUSWAHL=STRUCT(SATZa9,b9,c9,o3,TEXTd9,q3,e9);BOUND ROW200AUSWAHL VARf9;PROCh3:TEXT VARname:=t2;IFname=g2THENm2(j4)ELSE INT VARindex:=link(m4(3),name);IFindex=0THENinsert(m4(3),name,index)END IF;h3(f9(index))END IF END PROCh3;PROCh3(AUSWAHL VARa):o4;IFg9THENh9END IF;p4;r4.o4:satzinitialisieren(a.a9);satzinitialisieren(a.b9);satzinitialisieren(a.c9);satzinitialisieren(a.o3);a.d9:=g2;a.q3:=g2;a.e9:=g2.g9:f2;i2CANDo2(v1).h9:INT VARt4:=1;REPf2;IFi2THEN LEAVEh9ELSEi9;t4INCR1END IF END REP.i9:feldaendern(a.a9,t4,d2).p4:s4;t4:=1;BOOL VARj9:=TRUE;REPf2;IFi2THENk9;LEAVEp4ELSEu4;t4INCR1END IF END REP.s4:IF NOT(i2CANDo2(q1))THEN
+m2(d4)END IF.k9:IFj9THENm2(k4)END IF.u4:IFj9THENl9ELSEm9END IF.l9:IFpos(d2,w3)>0THENn9;t4:=0;j9:=FALSE ELSEfeldaendern(a.b9,t4,d2)END IF.n9:o9;a.d9:=d2;p9.o9:INT VARv4:=0;REPv4:=pos(d2,w3,v4+1);IFv4>0THENa.q3CATcode(v4)END IF UNTILv4=0END REP.p9:FORv4FROM1UPTOlength(a.q3)-1REPa.e9CATcode(q9-4)END REP;a.e9CAT""0"".q9:code(a.q3SUBv4+1)-code(a.q3SUBv4).m9:feldaendern(a.c9,t4,d2).r4:IFo2(s1)THENe5END IF;IF NOTo2(t1)THENm2(f4)END IF.e5:f2;WHILE NOTi2REPf5;f2END REP.f5:g5(a.o3);h5(a.a9);h5(a.b9);h5(a.c9).END PROCh3;LETr9=""1""8""10"",s9="+"27"q",t9="Fenster zu klein",u9="Ankreuzen: 'x' Durchstreichen: 'o' Beenden: ESC q Hilfe: ESC ?";INT VARv9,w9,x9,y9,z9,a10,b10,c10;LET INTVEC=TEXT;INTVEC VARd10;TEXT VARe10;PROCauswahlanbieten(TEXT CONSTname,FENSTER CONSTf,TEXT CONSTf10,PROC(TEXT VAR,INT CONST)g10):d3;INT CONSTindex:=link(m4(3),name);IFindex=0THENz5(name)ELSEa6(f9(index),f,f10,PROC(TEXT VAR,INT CONST)g10)END IF END PROCauswahlanbieten;PROCa6(AUSWAHL CONSTa,FENSTER CONSTf,TEXT CONST
+f10,PROC(TEXT VAR,INT CONST)g10):INT VARc6:=0,e6:=0;enablestop;h10;statusanzeigen(u9);i10;j10;k10;REPi6;l10END REP.h10:BOOL VARm10;fensterzugriff(f,m10);fenstergroesse(f,w2,x2,g0,h0).i10:INT VARn10:=1024;v9:=n10;REPn10:=n10DIV2;g10(d2,v9);IFd2=g2THENv9DECRn10ELSEv9INCRn10END IF UNTILn10=1END REP;g10(d2,v9);IFd2=g2THENv9DECR1END IF.k10:INT VARo10:=y9+1,p10:=1,q10:=1;d10:=g2;e10:=a.q3.j10:x9:=felderzahl(a.a9);y9:=x9+felderzahl(a.b9);w9:=length(a.q3);z9:=(v9+w9-1)DIVw9;a10:=y9+z9;b10:=a10+felderzahl(a.c9);c10:=0;IFy9>=h0THENerrorstop(t9)END IF.i6:REPl6;IFiserrorTHENclearerror;c6:=0ELSE LEAVEi6END IF END REP.l6:TEXT VARm6;WHILEc6<h0REPm6:=getcharety;n6END REP;o6;p6(m6).n6:IFm6=g2THENc6INCR1;r10ELSE LEAVEl6END IF.r10:INT CONSTs10:=c6+c10;y2(1,c6);IFc6<=x9THENq6(a.a9,a.o3,c6)ELIFs10<=y9THENq6(a.b9,a.o3,s10-x9)ELIFs10<=a10THENt10ELSEq6(a.c9,a.o3,s10-a10)END IF.t10:u10(a,v10,PROC(TEXT VAR,INT CONST)g10).v10:(s10-y9-1)*w9+1.o6:y2(code(e10SUBp10),o10).l10:SELECTe6OF CASE0:s6CASE1:t6CASE2:u6END
+SELECT.s6:SELECTpos(""1""2""3""8""9""10""13""27" +x-o",m6)OF CASE1:e6:=1CASE2:v6CASE3:w6CASE4:x6CASE5:y6CASE6:z6CASE7:a7CASE8:e6:=2CASE9:w10CASE10,11:x10CASE12,13:y10OTHERWISEc7END SELECT.t6:SELECTpos(""1""2""3""8""10""13"+x-o",m6)OF CASE1:d7CASE2:e7CASE3:f7CASE4:g7CASE5:h7CASE6:z10CASE7,8:a11CASE9,10:b11OTHERWISEout(y3)END SELECT;e6:=0.u6:SELECTpos(""1"19?qh",m6)OF CASE1:eschopausfuehrenCASE2:c11CASE3:d11CASE4:j7CASE5:k7CASE6:errorstop(g2)OTHERWISEl7END SELECT;e6:=0.v6:IFp10<w9ANDq10<v9THENp10INCR1;q10INCR1END IF.w6:IFq10>w9THENo10DECR1;q10DECRw9;IFo10<=x9THENo10INCR1;c10DECR1;c6:=x9END IF END IF.x6:IFp10>1THENp10DECR1;q10DECR1END IF.y6:IFp10=w9THENpush(""13"")ELSEpush(""1""2"")END IF.z6:IFq10+w9<=v9THENo10INCR1;q10INCRw9;IFo10>h0THENo10DECR1;c10INCR1;c6:=x9END IF END IF.a7:IFo10+c10<a10THENpush(r9)END IF.w10:push(s9).x10:IFe11(q10)=0ANDq10<=v9THENd10CATq10;IFo10<=c6THENf11(o10,p10,length(d10)DIV2)END IF END IF.y10:INT CONSTg11:=e11(q10);IFg11>0THENh11;i11END IF.h11:change(d10,2*g11-1
+,2*g11,g2).c7:IFm6<h2THENpush(lernsequenzauftaste(m6))ELSEout(y3)END IF.d7:g7;j11.e7:WHILEq10<v9ANDp10<w9REPq10INCR1;p10INCR1END REP.f7:IFo10=x9+1THENk11ELSEj11END IF.k11:INT VARl11:=min(h0-x9,c10);c10DECRl11;INT CONSTm11:=n11;o10INCRm11;q10DECR(l11-m11)*w9;IFl11>0THENc6:=x9END IF.n11:max(0,y9-x9-c10).j11:WHILEq10>w9ANDo10>x9+1REPo10DECR1;q10DECRw9END REP.g7:q10DECR(p10-1);p10:=1.h7:IFo10=h0THENo11ELSEp11END IF.o11:l11:=min(h0-x9,b10-o10-c10);c10INCRl11;INT CONSTq11:=max(0,o10+c10-a10+r11);o10DECRq11;q10INCR(l11-q11)*w9;IFl11>0THENc6:=x9END IF.r11:IFp10>v9MODw9THEN1ELSE0END IF.p11:WHILEo10<h0ANDq10+w9<=v9REPo10INCR1;q10INCRw9END REP.z10:c10INCR(o10-x9-1);o10:=x9+1;c6:=x9.a11:INT VARs11;FORs11FROM1UPTOv9REP IFe11(s11)=0THENd10CATs11END IF END REP;i11.b11:d10:=g2;i11.j7:hilfeanbieten(f10,f);statusanzeigen(u9);c6:=0.k7:LEAVEa6.l7:push(lernsequenzauftaste(m6)).c11:o10:=y9+1;q10:=1;p10:=1;c10:=0;c6:=x9.d11:IFa10<=h0THENo10:=a10ELSEo10:=max(x9+1,h0+a10-b10)END IF;c10:=a10-o10;p10:=(v9-1)MOD
+w9+1;q10:=v9;c6:=x9.END PROCa6;PROCi11:INT VARy7,t11,s11;s11:=u11;FORy7FROMv11UPTOw11REP FORt11FROM1UPTOw9REPf11(y7,t11,e11(s11));s11INCR1END REP END REP.u11:max(0,c10-y9+x9)*w9+1.v11:max(x9,y9-c10)+1.w11:min(h0,a10-c10).END PROCi11;TEXT VARx11:="xx";INT PROCe11(INT CONSTy11):replace(x11,1,y11);INT VARc5:=0;REPc5:=pos(d10,x11,c5+1)UNTILc5=0ORc5MOD2=1END REP;(c5+1)DIV2END PROCe11;OP CAT(INTVEC VARz11,INT CONSTwert):replace(x11,1,wert);z11CATx11END OP CAT;PROCu10(AUSWAHL CONSTa,INT CONSTv10,PROC(TEXT VAR,INT CONST)g10):INT VARc5:=1,y11,t11:=1;FORy11FROMv10UPTOv10+w9-1REPoutsubtext(a.d9,c5,a12-5);b12;g10(d2,y11);INT CONSTc12:=min(d12,length(d2));outsubtext(d2,1,c12);c5:=a12+c12+2;t11INCR1END REP;k8.a12:code(e10SUBt11).b12:INT CONSTe12:=e11(y11);IFe12=0THENout(" o ")ELSEout(text(e12,3));out(" x ")END IF.d12:IFt11=w9THENg0-a12-1ELSEcode(a.e9SUBt11)END IF.k8:outsubtext(a.d9,c5,g0);IFw2+g0>=80THENout(a4)ELSEg0-max(c5,length(a.d9))TIMESOUTh2END IF.END PROCu10;PROCf11(INT CONSTd2,f12,wert):
+y2(code(e10SUBf12)-4,d2);IFwert=0THENout(" o ")ELSEout(text(wert,3));out(" x ")END IF END PROCf11;INT PROCwahl(INT CONSTq0):IFq0+q0<=length(d10)THENd10ISUBq0ELSE0END IF END PROCwahl;LETg12=200,h12=5000;LET HILFE=STRUCT(INTi12,ROWg12THESAURUSj12,ROWg12SATZk12,ROWh12SATZl12);BOUND HILFE VARm12;INT VARn12,o12,p12,q12;LETr12="Das Hilfsgebiet existiert bereits",s12="Diese Seite ist in der anderen Hilfe nicht vorhanden";PROCi3:TEXT VARname:=t2;IFname=g2THENm2(j4)ELSEt12;u12;v12END IF.t12:INT CONSTw12:=pos(name,"/");TEXT VARx12;IFw12=0THENx12:=nameELSEx12:=subtext(name,1,w12-1)END IF;y12;z12.y12:INT VARa13:=link(m4(1),x12);IFa13=0THENinsert(m4(1),x12,a13);m12.j12(a13):=emptythesaurus;satzinitialisieren(m12.k12(a13))ELIFw12=0THENm2(r12);LEAVEi3END IF.z12:INT VARb13;TEXT VARc13:=subtext(name,w12+1);IFw12=0THENb13:=1ELSEb13:=link(m12.j12(a13),c13);IFb13=0THENinsert(m12.j12(a13),c13,b13)END IF END IF.u12:INT VARd13:=m12.i12;IFd13<0THENd13:=0END IF;TEXT VARe13:=g2;f2;WHILEi2CANDo2(x1)REPf13END
+REP.f13:INT CONSTg13:=q2;TEXT CONSTh13:=t2;IFh13<>g2THENi13;f2ELSEj13END IF.i13:TEXT VARk13;l13(h13,k13);IFg13+g13<=length(k13)THENe13CAT(k13ISUBg13)ELSEm2(s12)END IF.j13:INT VARt4:=1;d13INCR1;e13CATd13;satzinitialisieren(m12.l12(d13));REPf2;IFi2THEN LEAVEj13ELSEfeldaendern(m12.l12(d13),t4,d2);t4INCR1END IF END REP.v12:IF NOTo2(t1)THENm2(f4)END IF;IF NOTanythingnotedTHENfeldaendern(m12.k12(a13),b13,e13);m12.i12:=d13END IF.END PROCi3;PROCl13(TEXT CONSTname,TEXT VARe13):INT CONSTw12:=pos(name,"/");INT VARx12,b13:=0;IFw12=0THENx12:=link(m4(1),name)ELSEx12:=link(m4(1),subtext(name,1,w12-1));m13END IF;IFb13=0THENb13:=1END IF;IFx12=0THENerrorstop(n13)ELSEfeldlesen(m12.k12(x12),b13,e13)END IF.m13:IFx12>0THENb13:=link(m12.j12(x12),subtext(name,w12+1))END IF.END PROCl13;LETn13="Hilfe existiert nicht",o13="Hilfe ist leer",p13="Zurueck: ESC q Seite weiter: ESC w Seite zurueck: ESC z";PROChilfeanbieten(TEXT CONSTname,FENSTER CONSTf):enablestop;d3;TEXT VARe13;q13;l13(name,e13);IFe13=g2
+THENerrorstop(o13)ELSEr13END IF.q13:fensterveraendert(f);fenstergroesse(f,n12,o12,p12,q12).r13:s13;statusanzeigen(p13);INT VARk12:=1;REPt13;u13END REP.t13:INT CONSTv13:=e13ISUBk12;w13(m12.l12(v13)).u13:TEXT VARm6;REPgetchar(m6);IFm6=z3THENgetchar(m6);u7;LEAVEu13ELSEout(y3)END IF END REP.u7:SELECTpos("qwz?"1"",m6)OF CASE1:LEAVEhilfeanbietenCASE2:x13CASE3:y13CASE4:z13CASE5:eschopausfuehrenOTHERWISEout(y3)END SELECT.x13:IF2*k12<length(e13)THENk12INCR1END IF.y13:IFk12>1THENk12DECR1END IF.z13:k12:=1.END PROChilfeanbieten;PROCw13(SATZ CONSTa14):INT VARt4;FORt4FROM1UPTOq12REPcursor(n12,o12+t4-1);feldbearbeiten(a14,t4,PROC(TEXT CONST,INT CONST,INT CONST)b14)END REP;cursor(n12,o12+q12-1)END PROCw13;PROCb14(TEXT CONSTl3,INT CONSTr8,s8):IFs8-r8+1>p12THENk5:=r8+p12-1ELSEk5:=s8END IF;outsubtext(l3,r8,k5);IFn12+p12>=80THENout(a4)ELSEp12+r8-k5-1TIMESOUTh2END IF END PROCb14;TEXT VARc14:=g2,d14;PROCstatuszeile(TEXT CONSTe14,f14):c14:=e14;d14:=f14END PROCstatuszeile;PROCstatusanzeigen(TEXT CONSTstatus):
+IFc14<>g2THENout(c14);out(status);out(d14)END IF END PROCstatusanzeigen;LETg14=""4"",h14=""27"?",i14=""27"q",y8=""27"h",j14="Bejahen: j,J Verneinen: n,N Abbrechen: ESC h Hilfe: ESC ?",k14="Eingabe beenden: RETURN Abbrechen: ESC h Hilfe: ESC ?",l14="Eingabe beenden: RETURN Zeigen: ESC z Abbrechen: ESC h Hilfe: ESC ?",m14=" Fehler quittieren ESC q Informationen zur Fehlermeldung: ESC ?",n14=""15" !!! FEHLER !!! "14"";FENSTER VARo14;fensterinitialisieren(o14);INT VARp14,q14,r14,s14,t14;TEXT VARu14;PROCdialogfenster(INT CONSTz2,a3,v14,w14):fenstergroessesetzen(o14,z2,a3,v14,w14);q14:=z2;r14:=a3;s14:=v14;t14:=w14;u14:=g2END PROCdialogfenster;PROCneuerdialog:p14:=t14END PROCneuerdialog;PROCneuerdialog(TEXT CONSTx14):p14:=t14;u14:=x14END PROCneuerdialog;PROCdialog:BOOL VARh1;fensterzugriff(o14,h1);p14INCR1;IFp14>t14ORh1THENy14;p14:=1END IF;cursor(q14,r14+p14-1).y14:BOOL CONSTz14:=q14+s14>=80;IFz14ANDr14+t14>24ANDq14=1THENcursor(q14,r14);out(g14)ELSEa15END IF;out(
+u14).a15:p14:=0;REPcursor(q14,r14+p14);IFz14THENout(a4)ELSEs14TIMESOUTh2END IF;p14INCR1UNTILp14>=t14END REP.END PROCdialog;BOOL PROCja(TEXT CONSTb15,f10):REPstatusanzeigen(j14);dialog;out(b15);out(" ? (j/n) ");s13;c15END REP;FALSE.c15:TEXT VARm6;REPgetchar(m6);IFm6="j"ORm6="J"THENout(m6);LEAVEjaWITH TRUE ELIFm6="n"ORm6="N"THENout(m6);LEAVEjaWITH FALSE ELIFm6=z3THENd15ELSEout(y3)END IF END REP.d15:getchar(m6);IFm6="?"THENhilfeanbieten(f10,o14);neuerdialog;LEAVEc15ELIFm6="h"THENerrorstop(g2);LEAVEjaWITH FALSE ELIFm6=""1""THENeschopausfuehrenELSEout(y3)END IF.END PROCja;PROCeditget(TEXT CONSTe15,TEXT VARm6,TEXT CONSTf15,f10):TEXT VARv8;g15;dialog;out(e15);out(h2);editget(m6,1000,h15,"","?hq"+f15,v8);IFv8=h14THENhilfeanbieten(f10,o14);neuerdialog;editget(e15,m6,"",f10)ELIFv8=y8ORv8=i14THENerrorstop(g2)ELIFlength(v8)=2THENm6:=v8END IF.g15:IFpos(f15,"z")>0THENstatusanzeigen(l14)ELSEstatusanzeigen(k14)END IF.h15:s14-length(e15)-1.END PROCeditget;PROCfehlerausgeben:TEXT CONSTv2:=errormessage;
+IFerrorcode=1THENpage;bildschirmneuEND IF;clearerror;s13;IFv2<>g2THENstatusanzeigen(m14);i15;j15;neuerdialogEND IF.i15:dialog;IFp14=t14THENneuerdialog;dialogEND IF;out(y3);out(n14);dialog;outsubtext(errormessage,1,s14).j15:TEXT VARm6;getchar(m6);IFm6=z3THENd15END IF.d15:getchar(m6);IFm6="?"THENhilfeanbieten("FEHLER/"+text(errorcode),o14)ELIFm6=""1""THENeschopausfuehrenEND IF.END PROCfehlerausgeben;PROCs13:WHILEgetcharety<>g2REP END REP END PROCs13;LETk15=3,l15=1070,m15=0,n15=2;ROWk15DATASPACE VARk3;ROWk15THESAURUS VARm4;BOOL VARo15:=FALSE;INITFLAG VARp15;PROCd3:IF NOTinitialized(p15)THENq15END IF.q15:BOOL VARv7:=o15;r15;IFv7THENs15ELSEmenueloeschenEND IF.r15:INT VARl1;FORl1FROM1UPTOk15WHILEv7REPt15END REP.t15:
+##INT VARu15,v15;FORv15FROM1UPTO10REPforget(k3(l1));k3(l1):=nilspace;pingpong(father,l15+l1,k3(l1),u15);IFu15=m15THEN LEAVEt15ELIFu15<>n15THENpause(15)END IF UNTILu15=n15END REP;forget(k3(l1));k3(l1):=nilspace;
+##v7:=FALSE.END PROCd3;THESAURUS PROCmenuenamen(INT CONSTl1):d3;IFl1<0THENm12.j12(-l1)ELSEm4(l1)END IF END PROCmenuenamen;PROCmenueloeschen(TEXT CONSTname,INT CONSTl1):d3;IFl1<0THENw15(name,m12.j12(-l1))ELSEw15(name,m4(l1))END IF END PROCmenueloeschen;PROCw15(TEXT CONSTname,THESAURUS VARm1):INT CONSTindex:=link(m1,name);IFindex>0THENdelete(m1,index)END IF END PROCw15;PROCmenueloeschen:INT VARl1;FORl1FROM1UPTOk15REPforget(k3(l1));k3(l1):=nilspace;m4(l1):=emptythesaurusEND REP;s15END PROCmenueloeschen;PROCs15:m12:=k3(1);s3:=k3(2);f9:=k3(3)END PROCs15;
+##PROCmenuemanager(DATASPACE VARx15,INT CONSTy15,z15,TASK CONSTa16):o15:=TRUE;IFy15>l15ANDy15<=l15+k15THENb16ELSEfreemanager(x15,y15,z15,a16)END IF.b16:IFa16<myselfTHENd3;forget(x15);x15:=k3(y15-l15);send(a16,m15,x15)ELSEerrorstop("Auftrag nur fuer Soehne erlaubt")END IF.END PROCmenuemanager;PROCglobalmanager:globalmanager(PROC(DATASPACE VAR,INT CONST,INT CONST,TASK CONST)menuemanager)END PROCglobalmanager;
+##END PACKETeudasmenues;
+
diff --git a/app/eudas/3.4/src/eudas.4 b/app/eudas/3.4/src/eudas.4
new file mode 100644
index 0000000..5aa9237
--- /dev/null
+++ b/app/eudas/3.4/src/eudas.4
@@ -0,0 +1,31 @@
+PACKETsatzanzeigeDEFINESanzeigefenster,uebersichtsanzeige,bildausgeben,aendern,einfuegen,suchen,feldauswahl,rollen,exitdurch,exitzeichen:LETb0=256;LETc0=" ",d0="",e0=""5"",f0=""4"",g0=""15"",h0=""14"",i0=" "14"",j0=" "14" ";ROWb0STRUCT(INTk0,l0)VARm0;ROW24INT VARn0;ROW24INT VARo0;INT VARp0,q0,r0:=24,s0:=79,t0:=1,u0:=1,v0,w0,x0,y0,z0,a1:=0,b1:=0,c1:=dateiversion-1,d1:=0;BOOL VARe1,f1:=TRUE,g1:=TRUE,h1;FENSTER VARfenster;fensterinitialisieren(fenster);DATASPACE VARi1;FILE VAReditfile;TEXT VARj1,k1,l1;LETm1="Anzeigefenster zu klein";PROCanzeigefenster(INT CONSTn1,o1,p1,q1):IFp1>=39THENfenstergroessesetzen(fenster,n1,o1,p1,q1);g1:=n1+p1>=80;s0:=p1;r0:=q1;u0:=n1;t0:=o1;f1:=TRUE ELSEerrorstop(m1)END IF END PROCanzeigefenster;PROCuebersichtsanzeige(BOOL CONSTja):e1:=ja;x0:=0;z0:=suchversion;h1:=TRUE END PROCuebersichtsanzeige;BOOL PROCuebersichtsanzeige:e1END PROCuebersichtsanzeige;PROCr1:BOOL VARfensterveraendert;fensterzugriff(fenster,fensterveraendert);IFfensterveraendertTHENh1:=TRUE END
+IF END PROCr1;PROCs1:IFt1ORf1THENu1;v1;w1;x1;y1;z1END IF.t1:c1<>dateiversionORd1<>anzahldateien.u1:p0:=0;j1:=d0;WHILEp0<anzahlfelderREPp0INCR1;m0(p0).k0:=p0;j1CATcode(p0)END REP;q0:=1.v1:INT VARk0;v0:=11;FORk0FROM1UPTOanzahlfelderREPfeldnamenbearbeiten(k0,PROC(TEXT CONST,INT CONST,INT CONST)a2)END REP;v0:=min(v0,s0DIV2);w0:=s0-v0-3.x1:x0:=0;h1:=TRUE.y1:forget(i1);i1:=nilspace.z1:c1:=dateiversion;d1:=anzahldateien;f1:=FALSE.END PROCs1;PROCa2(TEXT CONSTb2,INT CONSTc2,d2):INT CONSTe2:=length(b2);v0:=max(v0,d2-c2+1)END PROCa2;PROCrollen(INT CONSTf2):IFe1THENy0INCRf2ELSEg2END IF.g2:q0:=q0+f2;IFq0<1THENq0:=1ELIFq0>h2THENq0:=max(h2,1)END IF;h1:=TRUE.h2:p0-r0+3.END PROCrollen;PROCfeldauswahl(TEXT CONSTi2):s1;IFe1THENj1:=i2ELSEj2END IF;h1:=TRUE.j2:p0:=length(i2);INT VARk2;FORk2FROM1UPTOp0REPm0(k2).k0:=code(i2SUBk2)END REP;q0:=1.END PROCfeldauswahl;INT VARl2;PROCm2:type(i1,-1);editfile:=sequentialfile(modify,i1);editinfo(editfile,-1);toline(editfile,1);col(editfile,1);l2:=1END PROCm2;.n2:l2<=p0.
+PROCo2(PROC(TEXT CONST,INT CONST)p2):q2;IFeof(editfile)THENp2("",k0)ELIFr2THENs2;t2;p2(l1,k0)ELIFu2THENreadrecord(editfile,l1);t2;p2(l1,k0);down(editfile)ELSEexec(PROC(TEXT CONST,INT CONST)p2,editfile,k0);down(editfile)END IF.q2:INT CONSTc2:=l2,k0:=m0(c2).k0;REPl2INCR1UNTILl2>p0CORv2END REP.v2:m0(l2).k0<>k0.r2:l2-c2>1.s2:l1:="";REPexec(PROC(TEXT CONST,INT CONST)w2,editfile,length(l1));down(editfile)UNTILeof(editfile)ORlineno(editfile)=l2END REP.u2:INT CONSTx2:=len(editfile);subtext(editfile,x2,x2)=c0.END PROCo2;PROCw2(TEXT CONSTy2,INT CONSTz2):IFz2>0CAND(l1SUBz2)<>c0THENl1CATc0END IF;l1CATy2END PROCw2;PROCt2:INT VARx2:=length(l1);WHILE(l1SUBx2)=c0REPx2DECR1END REP;l1:=subtext(l1,1,x2)END PROCt2;LETa3="Satz einfuegen",b3="Satz aendern",c3="Suchmuster eingeben";PROCeinfuegen(PROCd3):enablestop;s1;IFp0>0THENm2;headline(editfile,a3);r1;e3(PROCd3);satzeinfuegen;f3END IF END PROCeinfuegen;PROCf3:WHILEn2REPo2(PROC(TEXT CONST,INT CONST)g3)END REP;aenderungeneintragenEND PROCf3;PROCg3(TEXT
+CONSTh3,INT CONSTk0):feldaendern(k0,h3)END PROCg3;PROCaendern(PROCd3):enablestop;IFdateiendeTHENeinfuegen(PROCd3)ELSEi3END IF.i3:s1;IFp0>0THENm2;headline(editfile,b3);r1;j3(h1);k3;e3(PROCd3);f3END IF.k3:l3:=1;WHILEl3<=p0REPfeldbearbeiten(m0(l3).k0,PROC(TEXT CONST,INT CONST,INT CONST)m3);insertrecord(editfile);writerecord(editfile,l1);down(editfile);l3INCR1END REP;toline(editfile,1).END PROCaendern;INT VARl3;PROCm3(TEXT CONSTb2,INT CONSTc2,d2):l1:=subtext(b2,n3,o3).n3:c2+m0(l3).l0.o3:IFp3THENd2ELSEc2+m0(l3+1).l0-1END IF.p3:l3=p0CORm0(l3+1).k0<>m0(l3).k0.END PROCm3;PROCsuchen(PROCd3):enablestop;s1;suchbedingungloeschen;IFp0>0THENm2;headline(editfile,c3);r1;e3(PROCd3);q3END IF.q3:WHILEn2REPo2(PROC(TEXT CONST,INT CONST)r3)END REP.END PROCsuchen;PROCr3(TEXT CONSTs3,INT CONSTk0):suchbedingung(k0,s3)END PROCr3;PROCbildausgeben(BOOL CONSTt3):enablestop;s1;r1;IFe1THENu3(t3)ELIFt3ORh1ORv3ORz0<>suchversionTHENj3(h1);a1:=satznummer;b1:=satzkombination;z0:=suchversion;w3(TRUE)ELSEx3(TRUE)END IF.v3:
+satznummer<>a1ORb1<>satzkombination.END PROCbildausgeben;INT VARl0;BOOL VARy3;PROCj3(BOOL CONSTz3):INT VARk2:=1,a4:=0;y3:=TRUE;WHILEk2<=p0OR NOTy3REPb4END REP.b4:IFy3CANDm0(k2).k0=a4THENc4ELSE IFd4THENe4END IF;m0(k2).l0:=l0;feldbearbeiten(m0(k2).k0,PROC(TEXT CONST,INT CONST,INT CONST)f4);k2INCR1END IF.c4:IFz3THENg4(k2)ELSEm0(k2).l0:=l0;k2INCR1END IF.d4:k2>p0CORm0(k2).k0<>a4.e4:IFy3THENh4ELSEi4(k2);m0(k2).k0:=a4END IF.h4:a4:=m0(k2).k0;l0:=0.END PROCj3;PROCf4(TEXT CONSTb2,INT CONSTc2,d2):INT CONSTj4:=d2-c2-l0+1;IFj4>w0-2THENl0INCRw0-2;k4;y3:=FALSE ELSEl0INCRj4;y3:=TRUE END IF.k4:INT VARl4:=c2+l0;IFm4ANDn4THENl4DECR1;WHILE(b2SUBl4)<>c0REPl4DECR1;l0DECR1END REP END IF.m4:(b2SUBl4)<>c0.n4:pos(b2,c0,l4-w0,l4)>0.END PROCf4;PROCi4(INT CONSTk2):INT VARo4;FORo4FROMp0DOWNTOk2REPm0(o4+1):=m0(o4)END REP;p0INCR1;h1:=TRUE END PROCi4;PROCg4(INT CONSTk2):INT VARo4;FORo4FROMk2+1UPTOp0REPm0(o4-1):=m0(o4)END REP;p0DECR1;h1:=TRUE END PROCg4;INT VARp4;TEXT VARq4,r4,s4,t4:="",u4;LETv4=
+""15" Bild verschoben ! ESC 1 druecken ! "14"",w4=""3""10"19"11""12"q?h";LETx4=1,y4=2,z4=3,a5=4,b5=5,c5=6,d5=7,e5=8,f5=9;PROCe3(PROCd3):INT VARg5:=q0;h5;REPw3(FALSE);i5;j5;k5;l5UNTILm5END REP;n5;toline(editfile,1);col(editfile,1).h5:BOOL CONSTo5:=e1;IFe1THENuebersichtsanzeige(FALSE)END IF.i5:IFlines(editfile)<p0+1THENoutput(editfile);line(editfile,p0-lines(editfile)+2);modify(editfile)END IF.j5:IFq0<>1THENp5(q0-1,r4)END IF;p5(q5,s4);toline(editfile,g5).q5:min(p0+1,q0+r0-1).k5:openeditor(groesstereditor+1,editfile,TRUE,u0+v0+3,t0,w0,r5);edit(groesstereditor,w4+t4,PROC(TEXT CONST)s5).r5:min(p0-q0+2,r0).l5:g5:=lineno(editfile);t5;SELECTp4OF CASEx4:u5CASEy4:v5CASEz4:w5CASEa5:x5CASEb5:y5CASEc5:z5CASEe5:d3;h1:=TRUE CASEf5:n5;errorstop(d0)END SELECT.t5:INT CONSTa6:=col(editfile);col(editfile,1);IFq0<>1THENb6(q0-1,r4)END IF;b6(q5,s4);col(editfile,a6).u5:INT VARc6;c6:=g5-q0;rollen(-r0+1);g5:=q0+c6.v5:c6:=g5-q0;rollen(r0-1);g5:=min(q0+c6,p0).w5:rollen(-999);g5:=1.x5:c6:=g5-q0;rollen(999);g5:=min
+(q0+c6,p0).y5:toline(editfile,g5);d6;i4(g5).d6:readrecord(editfile,l1);q4:=subtext(l1,a6);l1:=subtext(l1,1,a6-1);writerecord(editfile,l1);down(editfile);insertrecord(editfile);writerecord(editfile,q4).z5:toline(editfile,g5);IFa6=1AND(e6CANDf6ORg6CANDh6)THENi6ELSEj6END IF.e6:g5<>p0.f6:m0(g5+1).k0=m0(g5).k0.g6:g5<>1.h6:m0(g5-1).k0=m0(g5).k0.i6:deleterecord(editfile);g4(g5).j6:readrecord(editfile,l1);l1:=subtext(l1,1,a6-1);writerecord(editfile,l1).m5:p4=d5.n5:IFo5THENuebersichtsanzeige(TRUE)END IF.END PROCe3;PROCs5(TEXT CONSTk6):enablestop;setbusyindicator;p4:=pos(w4,k6);IFp4>0THENu4:=k6;quitELIFpos(t4,k6)>0THENp4:=d5;u4:=k6;quitELIFkommandoauftaste(k6)<>d0THENstdkommandointerpreter(k6)ELSEnichtsneuEND IF END PROCs5;PROCp5(INT CONSTk2,TEXT VARl6):toline(editfile,k2);readrecord(editfile,l6);writerecord(editfile,v4)END PROCp5;PROCb6(INT CONSTk2,TEXT CONSTl6):toline(editfile,k2);IFeof(editfile)CORpos(editfile,v4,1)=0THENtoline(editfile,1);down(editfile,v4);IFeof(editfile)THENtoline(editfile,
+k2);insertrecord(editfile)END IF END IF;writerecord(editfile,l6)END PROCb6;PROCexitzeichen(TEXT CONSTm6):t4:=m6END PROCexitzeichen;TEXT PROCexitdurch:u4END PROCexitdurch;INT VARn6;LETo6="ENDE",p6="SUCH+",q6="SUCH-",r6="MARK+",s6="MARK-",t6=".....",u6=" ",v6=" Feld "14" ",w6=" Satz ";PROCw3(BOOL CONSTx6):INT VARy6:=t0+1,z6:=0;INT CONSTa7:=q0+r0-2;x3(x6);n6:=q0;WHILEn6<=a7REPb7;c7;d7;y6INCR1;n6INCR1END REP;h1:=FALSE.b7:IFh1THENcursor(u0,y6);IFn6<=p0THENe7ELIFn6=p0+1THENf7ELSEg7END IF END IF.e7:out(g0);IFm0(n6).k0=z6THENv0TIMESOUTc0ELSEz6:=m0(n6).k0;feldnamenbearbeiten(z6,PROC(TEXT CONST,INT CONST,INT CONST)h7)END IF;out(i0).f7:out(g0);s0-4TIMESOUT".";out(j0).g7:IFg1THEN IFt0+r0=25THENout(f0);h1:=FALSE;LEAVEw3ELSEout(e0)END IF ELSEs0TIMESOUTc0END IF.c7:IFx6ANDn6<=p0THENcursor(u0+v0+3,y6);feldbearbeiten(m0(n6).k0,PROC(TEXT CONST,INT CONST,INT CONST)i7)END IF.d7:IF NOTh1THEN TEXT CONSTinput:=getcharety;IFinput<>d0THENpush(input);IFpos(t4,input)>0THENa1:=0;LEAVEw3END IF END IF END
+ IF.END PROCw3;PROCx3(BOOL CONSTx6):j7;k7;cursor(u0,t0);IF NOTx6THENoutsubtext(k1,1,v0+3);LEAVEx3END IF;replace(k1,v0+7,l7);replace(k1,v0+14,m7);out(k1);cursor(u0+s0-5,t0);out(text(q0)).j7:TEXT VARsatznr;IFdateiendeTHENsatznr:=o6ELSEsatznr:=text(satznummer);IFanzahlkoppeldateien>0THENsatznrCAT"-";satznrCATtext(satzkombination)END IF END IF.k7:replace(k1,7,u6);replace(k1,7,satznr).l7:IFsuchversion=0THENt6ELIFsatzausgewaehltTHENp6ELSEq6END IF.m7:IFmarkiertesaetze=0THENt6ELIFsatzmarkiertTHENr6ELSEs6END IF.END PROCx3;PROCh7(TEXT CONSTb2,INT CONSTc2,d2):IFd2-c2>=v0THENoutsubtext(b2,c2,c2+v0-1)ELSEoutsubtext(b2,c2,d2);v0-d2+c2-1TIMESOUTc0END IF END PROCh7;PROCi7(TEXT CONSTb2,INT CONSTc2,d2):INT VARx2;IFn6=p0CORn7THENx2:=d2ELSEx2:=c2+m0(n6+1).l0-1END IF;outsubtext(b2,c2+m0(n6).l0,x2);IFg1THENout(e0)ELSEo7TIMESOUTc0END IF.n7:m0(n6+1).k0<>m0(n6).k0.o7:w0-x2+c2+m0(n6).l0-1.END PROCi7;PROCw1:k1:=text(w6,v0+3);k1CATg0;INT VARo4;INT CONSTp7:=s0-length(k1)-11;FORo4FROM1UPTOp7REPk1CAT"."END REP;k1CAT
+v6;q7.q7:TEXT VARr7:=eudasdateiname(1);r7:=subtext(r7,1,p7-20);r7CATc0;replace(k1,v0+21,c0);replace(k1,v0+22,r7).END PROCw1;INT VARs7;BOOL VARt7;LETu7=""15"Satznr. ",v7=" << DATEIENDE >>";PROCu3(BOOL CONSTt3):BOOL VARw7:=TRUE;INT VARo4;INT CONSTx7:=x0;y7;t7:=FALSE;IFh1ORw7THENz7;h1:=FALSE ELSEa8END IF;y0:=0;b8.y7:IFsuchversion<>z0ORc8THENd8;z0:=suchversionELIFx0>0CANDy0<>0THENe8ELIFf8THENg8;x0:=1ELIF NOTt3THENw7:=FALSE END IF.c8:satznummer+y0<0.d8:aufsatz(1);IF NOTsatzausgewaehltTHENweiter(2)END IF;g8;x0:=1.f8:x0=0CORh8.h8:IFi8(x0)THEN FALSE ELSEj8END IF.j8:FORo4FROM1UPTOr0-1REP IFi8(o4)THENx0:=o4;LEAVEj8WITH FALSE END IF END REP;TRUE.e8:IFy0<0THENu5ELSEv5END IF.u5:IF-y0<x0THENx0INCRy0;w7:=FALSE ELSEk8(1);FORo4FROM1UPTO-y0WHILEsatznummer>1REPzurueck(2)END REP;g8END IF.v5:IFy0+x0<r0THENx0INCRy0;w7:=FALSE ELIFy0<r0-1THENl8ELIFn0(r0-1)<>0THENm8END IF.l8:INT CONSTn8:=y0+1;IFn0(n8)<>0THENn0(1):=n0(n8);o0(1):=o0(n8)END IF.m8:k8(r0-1);FORo4FROM1UPTOy0-r0+2WHILE NOTdateiendeREPweiter(2)END
+REP;g8.z7:o8;p8;INT VARq8;FORq8FROM2UPTOr0-1REPr8END REP.o8:cursor(u0,t0);out(u7);s7:=s0-10;INT VARfeldindex;FORfeldindexFROM1UPTOlength(j1)WHILEs7>0REPfeldnamenbearbeiten(code(j1SUBfeldindex),PROC(TEXT CONST,INT CONST,INT CONST)s8)END REP;t8;cursor(u0+s0-1,t0);out(h0).p8:k8(1);u8(1);v8.r8:cursor(u0,t0+q8);IFdateiendeTHENn0(q8):=0;s7:=s0;t8ELSEw8;u8(q8);v8END IF.w8:IFw7THENweiter(2);x8;n0(q8):=satznummer;o0(q8):=satzkombinationELSEk8(q8)END IF.x8:IF NOT(satzausgewaehltORdateiende)THENh1:=TRUE;LEAVEu3END IF.a8:u8(x7).b8:t7:=TRUE;WHILEn0(x0)=0REPx0DECR1END REP;u8(x0);k8(x0);y8.END PROCu3;PROCk8(INT CONSTs3):aufsatz(n0(s3));WHILEsatzkombination<>o0(s3)REPweiter(1)END REP END PROCk8;PROCg8:n0(1):=satznummer;o0(1):=satzkombinationEND PROCg8;BOOL PROCi8(INT CONSTs3):satznummer=n0(s3)CANDsatzkombination=o0(s3)END PROCi8;PROCs8(TEXT CONSTb2,INT CONSTc2,d2):INT CONSTr0:=min(s7,d2-c2+1);outsubtext(b2,c2,c2+r0-1);s7DECRr0;IFs7>=2THENout(", ");s7DECR2ELIFs7=1THENout(",");s7:=0END IF END PROCs8;
+PROCu8(INT CONSTs3):cursor(u0,t0+s3);IFt7THENout(g0)ELSEout(c0)END IF;outtext(text(n0(s3)),1,5);IFt7THENout(h0)ELSEout(c0)END IF;s7:=s0-7END PROCu8;PROCt8:IFg1THENout(e0)ELSEs7TIMESOUTc0END IF END PROCt8;PROCv8:IFsatzausgewaehltTHENy8;z8ELIFdateiendeTHENout(v7);s7DECR17ELSEy8;out("<< >>");s7DECR5END IF;t8.z8:INT VARfeldindex;FORfeldindexFROM1UPTOlength(j1)WHILEs7>0REPfeldbearbeiten(code(j1SUBfeldindex),PROC(TEXT CONST,INT CONST,INT CONST)s8)END REP.END PROCv8;PROCy8:IFsatzmarkiertTHENout("+ ")ELSEout("- ")END IF;s7DECR2END PROCy8;END PACKETsatzanzeige;
+PACKETeudassteuerungDEFINESeudas,dateiverwaltung,edit,dateinamenanfordern,ausfuehrung,einzelausfuehrung:LETa9=1003,b9=3243;LETd0="",c0=" ",c9=""7"",d9=""27"z",e0=""5"",e9=""27"qa",f9=""27"qb";FILE VARg9;DATASPACE VARh9;INT VARi9,j9:=dateiversion-1;FENSTER VARx4,y4;TEXT VARk9;fensterinitialisieren(x4);fensterinitialisieren(y4);fenstergroessesetzen(x4,1,1,79,6);fenstergroessesetzen(y4,1,8,79,17);dialogfenster(1,9,79,16);neuerdialog(""6""7""0":"+75*"-"+":"5"");anzeigefenster(1,8,79,17);statuszeile(""6""6""0" ",""5"");LETl9="Bitte erst eine Datei oeffnen !",m9="Bei geketteten oder gekoppelten Dateien nicht moeglich",n9="Keine Sicherung noetig.",o9="Interne Arbeitskopien loeschen",p9="Arbeitskopie ",q9=" unveraendert.",r9=" veraendert! Sichern",s9="Alte Version ueberschreiben",t9="Sondern unter dem Namen:",u9=" ueberschreiben",v9="Datei wieder sortieren",w9="Wollen Sie etwas veraendern (eine Arbeitskopie anlegen)",x9="Pruefbedingungen aendern",y9="Feldnamen anfuegen",z9="Neuer Feldname:",
+a10="Neuer Typ (TEXT,DIN,ZAHL,DATUM):",b10="Neue Feldnamen eingeben",c10="TEXT",d10="DIN",e10="ZAHL",f10="DATUM",g10="Alte Feldreihenfolge aendern",h10=""7"ACHTUNG: System voll, Dateien loeschen!";PROCeudas:page;bildschirmneu;dialog;i9:=heapsize;menueanbieten("EUDAS-Hauptmenue",x4,TRUE,PROC(INT CONST)i10);j10;page;bildschirmneuEND PROCeudas;PROCi10(INT CONSTk10):enablestop;SELECTk10OF CASE1:l10CASE2:m10CASE3:n10CASE4:o10CASE5:p10CASE6:q10CASE7:r10CASE8:dateiverwaltungEND SELECT;s10;t10.l10:u10;exitzeichen("wz");bildausgeben(TRUE);menueanbieten("EUDAS-Ansehen",x4,TRUE,PROC(INT CONST)v10);dialog.m10:neuerdialog;dialog;menueanbieten("EUDAS-Bearbeiten",x4,TRUE,PROC(INT CONST)w10).u10:IFanzahldateien=0OR NOTexists(eudasdateiname(1))THENerrorstop(l9)END IF.n10:j10;dateienloeschen(TRUE);forget(h9);x10:=TRUE;ausfuehrung(PROC(TEXT CONST)y10,b9).o10:u10;IFanzahldateien>1THENerrorstop(m9)ELSEzugriff(PROC(EUDAT VAR)z10)END IF.p10:ausfuehrung(PROC(TEXT CONST)kopple,b9).q10:u10;IFanzahldateien>1THEN
+errorstop(m9)ELSEzugriff(PROC(EUDAT VAR)a11)END IF.r10:IFaendernerlaubtTHENb11ELSEdialog;out(n9)END IF.b11:INT VARc11;FORc11FROM1UPTOanzahldateienREPd11(c11)END REP;IFja(o9,"JA/Dateien loeschen")THENdateienloeschen(TRUE)ELSEerrorstop(d0)END IF.t10:IFheapsize-i9>4THENcollectheapgarbage;i9:=heapsizeEND IF.END PROCi10;PROCj10:INT VARc11;FORc11FROM1UPTOanzahldateienREP IFinhaltveraendert(c11)THENd11(c11)END IF END REP END PROCj10;PROCd11(INT CONSTc11):e11;IFinhaltveraendert(c11)THEN IFja(e5,"JA/sichere")THENf11END IF ELSEdialog;out(e5)END IF.e11:TEXT VARe5:=p9;e5CATtextdarstellung(eudasdateiname(c11));IFinhaltveraendert(c11)THENe5CATr9ELSEe5CATq9END IF.f11:TEXT VARname:=eudasdateiname(c11);IFja(s9,"JA/alte version")THENforget(name,quiet)ELSEg11END IF;sichere(c11,name);h11.g11:editget(t9,name,"","GET/Sicherungsname");IFexists(name)THENi11END IF.i11:IFja(textdarstellung(name)+u9,"JA/ueber")THENforget(name,quiet)ELSEd11(c11);LEAVEd11END IF.h11:EUDAT VARj11;oeffne(j11,name);IFk11CANDl11THENm11
+;sortiere(j11)END IF.k11:sortierreihenfolge(j11)<>d0CANDunsortiertesaetze(j11)>0.l11:ja(v9,"JA/Sicherungssortierung").END PROCd11;BOOL VARx10;PROCy10(TEXT CONSTr7):BOOL VARn11;IFx10THENo11;oeffne(r7,n11);x10:=FALSE ELSEkette(r7)END IF.o11:IF NOTexists(r7)THENp11(r7);EUDAT VARj11;oeffne(j11,r7);z10(j11);n11:=TRUE ELSEn11:=ja(w9,"JA/oeffne")END IF.END PROCy10;PROCz10(EUDAT VARj11):SATZ VARb2;feldnamenlesen(j11,b2);IFq11THENr11END IF;s11;IFja(x9,"JA/Pruefbed")THENt11END IF.q11:IFfelderzahl(b2)>0THENja(y9,"JA/feldnamen")ELSE TRUE END IF.r11:DATASPACE VARu11:=nilspace;FILE VARf:=sequentialfile(output,u11);disablestop;v11(f,b2);forget(u11);enablestop;feldnamenaendern(j11,b2).s11:w11;auswahlanbieten("EUDAS-Felder",y4,"AUSWAHL/Felder",PROC(TEXT VAR,INT CONST)x11);INT VARk0:=1;WHILEwahl(k0)>0REPg3;k0INCR1END REP;feldnamenaendern(j11,b2).w11:satzinitialisieren(y11);FORk0FROM1UPTOfelderzahl(b2)REPfeldlesen(b2,k0,k9);feldaendern(y11,k0,z11+textdarstellung(k9))END REP.z11:"("+a12(feldinfo(j11,k0))+
+") ".g3:TEXT VARb12;feldlesen(b2,wahl(k0),b12);editget(z9,b12,"","GET/feldname");feldaendern(b2,wahl(k0),b12);TEXT VARc12:=a12(feldinfo(j11,wahl(k0)));REPeditget(a10,c12,"","GET/feldtyp")UNTILd12(c12)>=-1END REP;feldinfo(j11,wahl(k0),d12(c12)).t11:u11:=nilspace;f:=sequentialfile(output,u11);notizenlesen(j11,1,k9);disablestop;e12(f,k9);forget(u11);enablestop;notizenaendern(j11,1,k9).END PROCz10;PROCv11(FILE VARf,SATZ VARb2):enablestop;f12;g12.f12:modify(f);headline(f,b10);edit(f,y4,"EDIT/Feldnamen").g12:INT VARk0:=felderzahl(b2);input(f);WHILE NOTeof(f)REPgetline(f,k9);h12;k0INCR1;feldaendern(b2,k0,k9)END REP.h12:IF(k9SUBlength(k9))=c0THENk9:=subtext(k9,1,length(k9)-1)END IF.END PROCv11;TEXT PROCa12(INT CONSTc12):SELECTc12+1OF CASE0:c10CASE1:d10CASE2:e10CASE3:f10OTHERWISEd0END SELECT END PROCa12;INT PROCd12(TEXT CONSTi12):IFi12=c10THEN-1ELIFi12=d10THEN0ELIFi12=e10THEN1ELIFi12=f10THEN2ELSE-2END IF END PROCd12;PROCe12(FILE VARf,TEXT VARj12):LETk12="#-#";enablestop;l12;m12;n12.l12:INT VAR
+c2:=1,d2;REPd2:=pos(j12,k12,c2);IFd2=0THENputline(f,subtext(j12,c2))ELSEputline(f,subtext(j12,c2,d2-1))END IF;c2:=d2+3UNTILd2=0ORc2>length(j12)END REP.m12:modify(f);headline(f,x9);edit(f,y4,"EDIT/Pruefbed").n12:TEXT VARs3;j12:=d0;input(f);WHILE NOTeof(f)REPgetline(f,s3);h12;j12CATs3;j12CATk12END REP.h12:IF(s3SUBlength(s3))=c0THENs3:=subtext(s3,1,length(s3)-1)END IF.END PROCe12;PROCa11(EUDAT VARj11):TEXT VARo12:=sortierreihenfolge(j11);IFo12=d0CORp12THENq12;m11;sortiere(j11,o12)ELSEm11;sortiere(j11)END IF.p12:ja(g10,"JA/Sortierfelder").q12:feldnamenlesen(j11,y11);auswahlanbieten("EUDAS-Sortierfelder",y4,"AUSWAHL/Sortierfelder",PROC(TEXT VAR,INT CONST)x11);INT VARk0:=1;o12:=d0;WHILEwahl(k0)<>0REPo12CATcode(wahl(k0));k0INCR1END REP.END PROCa11;PROCs10:INT VARr12,s12;storage(r12,s12);IFs12>r12THENneuerdialog;dialog;out(h10)END IF END PROCs10;LETt12=" Rollen: ESC OBEN / ESC UNTEN Zurueck: ESC q Hilfe: ESC ?",u12=
+"Zeile loeschen: ESC RUBOUT Abbruch: ESC h Beenden: ESC q Hilfe: ESC ?",v12="Ungueltige Satznummer",w12="Neue Satznummer:",x12=" Bitte warten.. ";PROCv10(INT CONSTk10):y12(k10);IFiserrorTHENfehlerausgeben;bildausgeben(TRUE);errorstop(d0)END IF END PROCv10;PROCy12(INT CONSTk10):enablestop;SELECTk10OF CASE1:z12CASE2:a13CASE3:b13CASE4:c13CASE5:d13CASE6:e13CASE7:f13CASE8:m10END SELECT;s10.z12:m11;weiter(2);IFuebersichtsanzeigeTHENrollen(1)END IF;bildausgeben(FALSE).a13:m11;zurueck(2);bildausgeben(FALSE).b13:disablestop;exitzeichen("");statusanzeigen(u12);suchen(PROCg13);exitzeichen("wz");enablestop;bildausgeben(TRUE).c13:suchbedingungloeschen;bildausgeben(FALSE).d13:TEXT VARh13:=d0;editget(w12,h13,"","GET/auf satz");INT CONSTi13:=int(h13);IFlastconversionokTHENaufsatz(i13);bildausgeben(FALSE)ELSEerrorstop(v12)END IF.e13:statusanzeigen(t12);TEXT VARj13;REPcursor(1,7);getchar(j13);k13END REP.k13:SELECTpos(""3""10""27"",j13)OF CASE1:rollen(-1)CASE2:rollen(1)CASE3:l13OTHERWISEout(c9)END
+SELECT;bildausgeben(FALSE).l13:getchar(j13);SELECTpos(""3""10"19q?"1"",j13)OF CASE1:rollen(-16)CASE2:rollen(16)CASE3:rollen(-9999)CASE4:rollen(9999)CASE5:LEAVEe13CASE6:m13CASE7:eschopausfuehrenOTHERWISEout(c9)END SELECT.m13:hilfeanbieten("EUDAS/rollen",y4);statusanzeigen(t12).f13:menueanbieten("EUDAS-Einzelsatz",x4,TRUE,PROC(INT CONST)n13).m10:push(f9).END PROCy12;PROCg13:hilfeanbieten("EDIT/Suchen",y4)END PROCg13;PROCm11:cursor(1,7);out(x12);out(e0)END PROCm11;BOOL VARo13;LETp13="Aenderungen sind nicht erlaubt",w6="Satz ";PROCn13(INT CONSTk10):q13(k10);IFiserrorTHENfehlerausgeben;bildausgeben(TRUE);errorstop(d0)END IF END PROCn13;PROCq13(INT CONSTk10):enablestop;BOOL VARt3:=TRUE;SELECTk10OF CASE1:r13CASE2:s13CASE3:t13CASE4:u13CASE5:v13CASE6:w13CASE7:x13CASE8:y13END SELECT;s10;bildausgeben(t3).r13:z13;exitzeichen("wz");REPstatusanzeigen(u12);einfuegen(PROCa14);b14;IFo13THENsatzloeschenEND IF;c14END REP.c14:SELECTpos("wz",exitdurch)OF CASE0:LEAVEr13CASE1:IF NOTo13THENm11;weiter(2)END IF
+ CASE2:IF NOTo13THENm11;zurueck(2)END IF END SELECT.s13:z13;exitzeichen("wz");REPd14;statusanzeigen(u12);aendern(PROCe14);b14;IFo13THENsatzloeschenEND IF;f14END REP.f14:SELECTpos("wz",exitdurch)OF CASE0:LEAVEs13CASE1:IF NOTo13THENm11;weiter(2)END IF CASE2:IF NOTo13THENm11;zurueck(2)END IF END SELECT.d14:IFj9=dateiversionTHENmodify(g9);toline(g9,1);col(g9,1);g14END IF.g14:TEXT CONSTi13:=w6+text(satznummer);downety(g9,i13);IF NOTeof(g9)THENh14END IF.h14:INT VARk2:=1;fensterveraendert(x4);REPcursor(1,k2);IFeof(g9)THENout(e0)ELSEexec(PROC(TEXT CONST,INT CONST)i14,g9,0);down(g9,i13)END IF;k2INCR1UNTILk2>6END REP.t13:markierungaendern;t3:=FALSE.u13:markierungenloeschen.v13:z13;dateinamenanfordern(j14);einzelausfuehrung(PROC(TEXT CONST)k14,b9).w13:z13;dateinamenanfordern(l14);einzelausfuehrung(PROC(TEXT CONST)holesatz,b9).x13:uebersichtsanzeige(NOTuebersichtsanzeige).y13:auswahlanbieten("EUDAS-Anzeigefelder",y4,"AUSWAHL/Anzeigefelder",PROC(TEXT VAR,INT CONST)m14);TEXT VARi2:=d0;INT VARh13:=1;
+WHILEwahl(h13)>0REPi2CATcode(wahl(h13));h13INCR1END REP;feldauswahl(i2);t3:=FALSE.END PROCq13;PROCz13:IF NOTaendernerlaubtTHENerrorstop(p13)END IF END PROCz13;PROCa14:hilfeanbieten("EDIT/Einfuegen",y4)END PROCa14;PROCe14:hilfeanbieten("EDIT/Aendern",y4)END PROCe14;PROCi14(TEXT CONSTs3,INT CONSTe2):INT CONSTn14:=e2;outsubtext(s3,l0);out(e0).l0:pos(s3,c0,6)+1.END PROCi14;PROCb14:feldbearbeiten(1,PROC(TEXT CONST,INT CONST,INT CONST)o14)END PROCb14;PROCo14(TEXT CONSTb2,INT CONSTc2,d2):INT CONSTn14:=d2;o13:=c2<3ORc2>length(b2)END PROCo14;PROCm14(TEXT VARname,INT CONSTh13):IFh13<=anzahlfelderTHENfeldnamenlesen(h13,name)ELSEname:=d0END IF END PROCm14;PROCk14(TEXT CONSTr7):IFexists(r7)THENp14ELSEp11(r7)END IF;m11;tragesatz(r7).p14:IFq14(r7)<>0THENerrorstop(r14)END IF.END PROCk14;LETs14="Zieldatei anschliessend sortieren",t14="Pruefbedingungen testen",u14="Prueffehler festgestellt",r14="Zieldatei darf nicht geoeffnet sein",v14="Kopiermuster aendern";PROCw10(INT CONSTk10):enablestop;SELECTk10OF
+CASE1:w14CASE2:x14CASE3:y14CASE4:z14CASE5:a15CASE6:b15CASE7:l10CASE8:dateiverwaltungEND SELECT;c15;s10.w14:dateinamenanfordern(d15);ausfuehrung(PROC(TEXT CONST)e15,a9).x14:z13;dateinamenanfordern(j14);einzelausfuehrung(PROC(TEXT CONST)f15,b9).y14:ausfuehrung(PROC(TEXT CONST)g15,a9).z14:dateinamenanfordern(j14);einzelausfuehrung(PROC(TEXT CONST)h15,b9).a15:ausfuehrung(PROC(TEXT CONST)print,a9).b15:z13;dateinamenanfordern(i15);ausfuehrung(PROC(TEXT CONST)j15,a9).l10:push(e9).END PROCw10;PROCk15:IFl15THENclearerrorEND IF.l15:iserrorCANDerrormessage=d0.END PROCk15;PROCe15(TEXT CONSTr7):IF NOTexists(r7)THENg15(r7)END IF;m11;dialog;disablestop;drucke(r7);k15END PROCe15;PROCf15(TEXT CONSTr7):BOOL VARm15;IFexists(r7)THENp14;n15ELSEp11(r7);m15:=FALSE END IF;BOOL CONSTo15:=ja(s14,"JA/sortieren");m11;p15;trage(r7,g9,m15);q15;IFo15THEN EUDAT VARj11;oeffne(j11,r7);sortiere(j11)END IF.p14:IFq14(r7)<>0THENerrorstop(r14)END IF.n15:m15:=ja(t14,"JA/testen").p15:IFm15THENforget(h9);h9:=nilspace;g9:=
+sequentialfile(output,h9);j9:=dateiversionELSEforget(h9);j9:=dateiversion-1END IF.q15:IFm15CANDlines(g9)>0THENdialog;put(lines(g9));put(u14)END IF.END PROCf15;PROCg15(TEXT CONSTr7):r15(r7,"EDIT/Druckmuster")END PROCg15;PROCj15(TEXT CONSTr7):IF NOTexists(r7)THENr15(r7,"EDIT/Verarbeite")END IF;m11;dialog;FILE VARf:=sequentialfile(input,r7);disablestop;verarbeite(f);k15.END PROCj15;PROCh15(TEXT CONSTr7):IFexists(r7)THENp14ELSEp11(r7)END IF;BOOL CONSTo15:=ja(s14,"JA/sortieren");disablestop;DATASPACE VARu11:=nilspace;FILE VARf:=sequentialfile(output,u11);s15(f,r7);forget(u11);enablestop;IFo15THEN EUDAT VARj11;oeffne(j11,r7);sortiere(j11)END IF.p14:IFq14(r7)<>0THENerrorstop(r14)END IF.END PROCh15;PROCs15(FILE VARf,TEXT CONSTr7):enablestop;stdkopiermuster(r7,f);headline(f,v14);REPclearerror;enablestop;edit(f,y4,"EDIT/Kopiermuster");m11;dialog;disablestop;kopiere(r7,f);IFiserrorTHENbildschirmneuEND IF UNTIL NOTt15END REP.t15:iserrorCANDerrormessage=d0CANDerrorcode=0.END PROCs15;INT PROCq14(TEXT
+ CONSTr7):INT VARc11;FORc11FROM1UPTOanzahldateienREP IFeudasdateiname(c11)=r7THEN LEAVEq14WITHc11END IF END REP;0END PROCq14;PROCr15(TEXT CONSTr7,d3):IF NOTexists(r7)THENp11(r7)END IF;FILE VARf:=sequentialfile(modify,r7);edit(f,y4,d3)END PROCr15;PROCprint(TEXT CONSTr7):do("print ("+textdarstellung(r7)+")")END PROCprint;PROCc15:INT VARu15,v15;getcursor(u15,v15);IFv15=24THENbildschirmneu;dialogEND IF END PROCc15;TEXT VARw15:=d0;THESAURUS VARx15;BOOL VARy15,z15;LETa16="Name des Archivs:",b16=" auf Archiv ueberschreiben",c16="Neuer Name:",d16=" im System ueberschreiben",e16=" auf Archiv loeschen",f16=" im System loeschen",g16=" neu einrichten";PROCdateiverwaltung:neuerdialog;dialog;disablestop;y15:=FALSE;menueanbieten("EUDAS-Dateiverwaltung",x4,TRUE,PROC(INT CONST)h16);IFy15THENrelease(archive)END IF END PROCdateiverwaltung;PROCh16(INT CONSTk10):enablestop;SELECTk10OF CASE1:i16CASE2:j16CASE3:k16CASE4:l16CASE5:m16CASE6:n16CASE7:o16CASE8:p16END SELECT;s10.i16:q16;archive(w15);y15:=TRUE;m11;
+x15:=ALLarchive;ausfuehrung(PROC(TEXT CONST)r16,0).j16:ausfuehrung(PROC(TEXT CONST)s16,0).k16:disablestop;t16;m11;x15:=ALLarchive;IFu16THENx15:=ALLarchiveEND IF;enablestop;v16(PROC(TEXT CONST)w16).l16:ausfuehrung(PROC(TEXT CONST)x16,0).m16:q16;archive(w15);y15:=TRUE;m11;x15:=ALLarchive;v16(PROC(TEXT CONST)m16).n16:ausfuehrung(PROC(TEXT CONST)y16,0).o16:t16;disablestop;m11;list(archive);IFu16THENlist(archive)END IF;z16;enablestop;bildschirmneu;dialog.p16:list;z16;bildschirmneu;dialog.END PROCh16;PROCz16:WHILEgetcharety<>d0REP END REP END PROCz16;PROCq16:editget(a16,w15,"","GET/Archivname")END PROCq16;PROCt16:IF NOTy15THENarchive(w15);y15:=TRUE END IF END PROCt16;BOOL PROCu16:IFiserrorTHEN TEXT CONSTa17:=errormessage;IFsubtext(a17,1,14)="Archiv heisst "CANDsubtext(a17,16,20)<>"?????"THENclearerror;b17;LEAVEu16WITH TRUE END IF END IF;FALSE.b17:w15:=subtext(a17,16,length(a17)-1);archive(w15).END PROCu16;PROCr16(TEXT CONSTr7):disablestop;IF NOT(x15CONTAINSr7)CORc17THENd17;m11;e17;save(r7,
+archive);f17END IF.c17:ja(textdarstellung(r7)+b16,"JA/save").d17:INT CONSTh13:=q14(r7);IFh13>0CANDinhaltveraendert(h13)THENd11(h13)END IF.END PROCr16;PROCs16(TEXT CONSTr7):m11;IFtype(old(r7))=b9THENreorganisiere(r7)ELSEreorganize(r7)END IF END PROCs16;PROCx16(TEXT CONSTr7):TEXT VARg17:=r7;IFexists(r7)THENeditget(c16,g17,"","GET/rename")END IF;rename(r7,g17)END PROCx16;PROCw16(TEXT CONSTr7):disablestop;IF NOTexists(r7)CORh17THENm11;e17;fetch(r7,archive);f17END IF.h17:ja(textdarstellung(r7)+d16,"JA/fetch").END PROCw16;PROCm16(TEXT CONSTr7):disablestop;IF NOT(x15CONTAINSr7)CORm16THENm11;e17;erase(r7,archive);f17END IF.m16:ja(textdarstellung(r7)+e16,"JA/erase").END PROCm16;PROCy16(TEXT CONSTr7):IFexists(r7)CANDi17THENforget(r7,quiet)END IF.i17:ja(textdarstellung(r7)+f16,"JA/forget").END PROCy16;PROCe17:z15:=commanddialogue;commanddialogue(FALSE)END PROCe17;PROCf17:commanddialogue(z15)END PROCf17;PROCv16(PROC(TEXT CONST)j17):TEXT VARr7:=d0;editget(k17,r7,"z","GET/Dateiname");IFr7=d9THENl17
+ELSElastparam(r7);j17(r7)END IF.l17:m17(x15,0);auswahlanbieten("EUDAS-Archivauswahl",y4,"AUSWAHL/Archiv",PROC(TEXT VAR,INT CONST)x11);n17(PROC(TEXT CONST)j17).END PROCv16;SATZ VARy11;LETk17="Name der Datei:",j14="Name der Zieldatei:",i15="Name der Verarbeitungsvorschrift:",d15="Name des Druckmusters:",l14="Name der Quelldatei:";TEXT VARo17:=k17;PROCm17(THESAURUS CONSTi12,INT CONSTc12):INT VARl4:=1,c2:=0;satzinitialisieren(y11);REPget(i12,k9,c2);IFk9=d0THEN LEAVEm17ELIFc12=0CORtype(old(k9))=c12THENfeldaendern(y11,l4,k9);l4INCR1END IF END REP END PROCm17;PROCp17(TEXT VARh3,INT CONSTl4):IFl4<=256THENfeldlesen(y11,l4,h3);IFh3<>d0THENh3:=textdarstellung(h3)END IF ELSEh3:=d0END IF END PROCp17;PROCn17(PROC(TEXT CONST)j17):INT VARl4:=1;REP IFwahl(l4)=0THEN LEAVEn17ELSEfeldlesen(y11,wahl(l4),k9);dialog;out(text(l4,3));out(". ");out(textdarstellung(k9));lastparam(k9);j17(k9)END IF;l4INCR1END REP END PROCn17;PROCausfuehrung(PROC(TEXT CONST)j17,INT CONSTc12):TEXT VARr7;dateinamenanfordern(r7,c12);
+IFr7=d9THENn17(PROC(TEXT CONST)j17)ELSElastparam(r7);j17(r7)END IF END PROCausfuehrung;PROCeinzelausfuehrung(PROC(TEXT CONST)j17,INT CONSTc12):TEXT VARr7;dateinamenanfordern(r7,c12);IFr7=d9THEN IFwahl(1)=0THENerrorstop(d0)ELSEfeldlesen(y11,wahl(1),r7)END IF END IF;lastparam(r7);j17(r7)END PROCeinzelausfuehrung;PROCdateinamenanfordern(TEXT CONSTq17):o17:=q17END PROCdateinamenanfordern;PROCdateinamenanfordern(TEXT VARr7,INT CONSTc12):IFexists(std)AND(c12=0CORtype(old(std))=c12)THENr7:=stdELSEr7:=d0END IF;disablestop;editget(o17,r7,"z","GET/Dateiname");o17:=k17;enablestop;IFr7=d0THENerrorstop(d0)ELIFr7=d9THENm17(all,c12);auswahlanbieten("EUDAS-Dateiauswahl",y4,"AUSWAHL/Datei",PROC(TEXT VAR,INT CONST)p17)END IF END PROCdateinamenanfordern;PROCx11(TEXT VARh3,INT CONSTl4):IFl4<=256THENfeldlesen(y11,l4,h3)ELSEh3:=d0END IF END PROCx11;PROCp11(TEXT CONSTr7):IF NOTja(textdarstellung(r7)+g16,"JA/einrichten")THENerrorstop(d0)END IF END PROCp11;LETr17=
+"Editieren ESC h - Abbruch ESC q - Verlassen ESC ? - Hilfe";PROCedit(FILE VARf,FENSTER CONSTfenster,TEXT CONSTd3):INT VARu15,v15,s17,t17;fenstergroesse(fenster,u15,v15,s17,t17);fensterveraendert(fenster);enablestop;REPstatusanzeigen(r17);openeditor(groesstereditor+1,f,TRUE,u15,v15,s17,t17);edit(groesstereditor,"eqvw19dpgn"9"?h",PROC(TEXT CONST)u17);SELECTv17OF CASE0:LEAVEeditCASE1:hilfeanbieten(d3,fenster)CASE2:errorstop(d0)END SELECT END REP END PROCedit;INT VARv17;PROCu17(TEXT CONSTk6):v17:=pos("?h",k6);IFv17>0THENquitELSEstdkommandointerpreter(k6)END IF END PROCu17;END PACKETeudassteuerung;
+
diff --git a/app/eudas/3.4/src/eudas.gen-m b/app/eudas/3.4/src/eudas.gen-m
new file mode 100644
index 0000000..4a4dc5d
--- /dev/null
+++ b/app/eudas/3.4/src/eudas.gen-m
@@ -0,0 +1,49 @@
+INT VAR size, used;
+BOOL VAR einzeln;
+storage (size, used);
+einzeln := size - used < 500;
+forget ("eudas.gen/m", quiet);
+page;
+putline ("EUDAS - automatische Generierung");
+line;
+IF NOT einzeln THEN
+ holen ("eudas.1");
+ holen ("eudas.2");
+ holen ("eudas.3");
+ holen ("eudas.4");
+ holen ("eudas.init");
+ release (archive)
+END IF;
+check off;
+gen ("eudas.1");
+gen ("eudas.2");
+gen ("eudas.3");
+gen ("eudas.4");
+IF anything noted THEN
+ push (""27"q"); note edit; pause (100)
+END IF;
+holen ("eudas.init");
+IF einzeln THEN
+ release (archive)
+END IF;
+do("FILE VARf:=sequentialfile(modify,""eudas.init"");menuedateneinlesen(f)");
+forget ("eudas.init", quiet);
+check on;
+do ("global manager");
+
+PROC vom archiv (TEXT CONST datei):
+ out (""""); out (datei); putline (""" wird geholt.");
+ fetch (datei, archive)
+END PROC vom archiv;
+
+PROC holen (TEXT CONST datei) :
+ IF NOT exists (datei) THEN vom archiv (datei) END IF
+END PROC holen;
+
+PROC gen (TEXT CONST datei) :
+ holen (datei);
+ out (""""); out (datei); out (""" wird uebersetzt: ");
+ insert (datei);
+ forget (datei, quiet)
+END PROC gen;
+
diff --git a/app/eudas/3.4/src/eudas.gen-s b/app/eudas/3.4/src/eudas.gen-s
new file mode 100644
index 0000000..b9541ff
--- /dev/null
+++ b/app/eudas/3.4/src/eudas.gen-s
@@ -0,0 +1,39 @@
+forget ("eudas.gen/s", quiet);
+page;
+putline ("EUDAS - automatische Generierung");
+line;
+check off;
+gen ("eudas.1");
+gen ("eudas.2");
+holen ("eudas.3");
+FILE VAR f := sequential file (modify, "eudas.3");
+to line (f, 30); delete record (f);
+to line (f, 28); delete record (f);
+to line (f, 7); delete record (f);
+to line (f, 5); delete record (f);
+gen ("eudas.3");
+gen ("eudas.4");
+IF anything noted THEN
+ push (""27"q"); note edit; pause (100)
+END IF;
+holen ("eudas.init");
+do("FILE VARf:=sequentialfile(modify,""eudas.init"");menuedateneinlesen(f)");
+forget ("eudas.init", quiet);
+check on;
+
+PROC vom archiv (TEXT CONST datei):
+ out (""""); out (datei); putline (""" wird geholt.");
+ fetch (datei, archive)
+END PROC vom archiv;
+
+PROC holen (TEXT CONST datei) :
+ IF NOT exists (datei) THEN vom archiv (datei) END IF
+END PROC holen;
+
+PROC gen (TEXT CONST datei) :
+ holen (datei);
+ out (""""); out (datei); out (""" wird uebersetzt: ");
+ insert (datei);
+ forget (datei, quiet)
+END PROC gen;
+
diff --git a/app/eudas/3.4/src/eudas.init b/app/eudas/3.4/src/eudas.init
new file mode 100644
index 0000000..ab9bcbb
--- /dev/null
+++ b/app/eudas/3.4/src/eudas.init
@@ -0,0 +1,1034 @@
+% MENUE "EUDAS-Hauptmenue"
+% BILD
+:---------------------- < EUDAS - Hauptmenue > -----------------------------:
+: a ­ aktuelle Datei ansehen (M) b ­ aktuelle Datei bearbeiten (M) :
+: o ­ Datei zum Bearbeiten oeffnen f ­ Feldstruktur aendern :
+: k ­ Dateien koppeln r ­ EUDAS-Datei sortieren :
+: s ­ aktuelle Dateien sichern v ­ Dateiverwaltung (M) :
+:---------------------------------------------------------------------------:
+% FELD 1 "EUDAS/11" "aA"
+% FELD 2 "EUDAS/12" "bB"
+% FELD 3 "EUDAS/13" "oO"
+% FELD 4 "EUDAS/14" "fF"
+% FELD 5 "EUDAS/15" "kK"
+% FELD 6 "EUDAS/16" "rR"
+% FELD 7 "EUDAS/17" "sS"
+% FELD 8 "EUDAS/18" "vV"
+% ENDE
+% MENUE "EUDAS-Ansehen"
+% BILD
+:-------------------------- << Ansehen >> ----------------------------------:
+: w ­ Satz weiter z ­ Satz zurueck :
+: s ­ Selektion einstellen l ­ Selektion loeschen :
+: d ­ direkt auf Satz v ­ Bild vertikal verschieben :
+: e ­ Einzelsatz bearbeiten (M) b ­ aktuelle Datei bearbeiten (M) :
+:---------------------------------------------------------------------------:
+% FELD 1 "EUDAS/21" "wW"
+% FELD 2 "EUDAS/22" "zZ"
+% FELD 3 "EUDAS/23" "sS"
+% FELD 4 "EUDAS/24" "lL"
+% FELD 5 "EUDAS/25" "dD"
+% FELD 6 "EUDAS/26" "vV"
+% FELD 7 "EUDAS/27" "eE"
+% FELD 8 "EUDAS/28" "bB"
+% ENDE
+% MENUE "EUDAS-Einzelsatz"
+% BILD
+:------------------- <<< Einzelsatz bearbeiten >>> -------------------------:
+: e ­ neuen Satz einfuegen a ­ Satz aendern :
+: m ­ Markierung aendern l ­ alle Markierungen loeschen :
+: t ­ Satz tragen h ­ Satz holen :
+: d ­ Darstellung umschalten f ­ Feldauswahl :
+:---------------------------------------------------------------------------:
+% FELD 1 "EUDAS/31" "eE"
+% FELD 2 "EUDAS/32" "aA"
+% FELD 3 "EUDAS/33" "mM"
+% FELD 4 "EUDAS/34" "lL"
+% FELD 5 "EUDAS/35" "tT"
+% FELD 6 "EUDAS/36" "hH"
+% FELD 7 "EUDAS/37" "dD"
+% FELD 8 "EUDAS/38" "fF"
+% ENDE
+% MENUE "EUDAS-Bearbeiten"
+% BILD
+:-------------------- << aktuelle Datei bearbeiten >> ----------------------:
+: d ­ nach Muster drucken t ­ Saetze tragen :
+: e ­ Textdatei erstellen/aendern k ­ Saetze kopieren :
+: u ­ Textdatei drucken n ­ nach Vorschrift aendern :
+: a ­ aktuelle Datei ansehen (M) v ­ Dateiverwaltung (M) :
+:---------------------------------------------------------------------------:
+% FELD 1 "EUDAS/41" "dD"
+% FELD 2 "EUDAS/42" "tT"
+% FELD 3 "EUDAS/43" "eE"
+% FELD 4 "EUDAS/44" "kK"
+% FELD 5 "EUDAS/45" "uU"
+% FELD 6 "EUDAS/46" "nN"
+% FELD 7 "EUDAS/47" "aA"
+% FELD 8 "EUDAS/48" "vV"
+% ENDE
+% MENUE "EUDAS-Dateiverwaltung"
+% BILD
+:---------------------- << Dateiverwaltung >> ------------------------------:
+: s ­ Datei auf Archiv sichern r ­ Datei reorganisieren :
+: h ­ Datei von Archiv holen n ­ Datei umbenennen :
+: o ­ Datei auf Archiv loeschen l ­ Datei loeschen :
+: a ­ Archivuebersicht u ­ Dateiuebersicht :
+:---------------------------------------------------------------------------:
+% FELD 1 "EUDAS/51" "sS"
+% FELD 2 "EUDAS/52" "rR"
+% FELD 3 "EUDAS/53" "hH"
+% FELD 4 "EUDAS/54" "nN"
+% FELD 5 "EUDAS/55" "oO"
+% FELD 6 "EUDAS/56" "lL"
+% FELD 7 "EUDAS/57" "aA"
+% FELD 8 "EUDAS/58" "uU"
+% ENDE
+% AUSWAHL "EUDAS-Felder"
+% VORSPANN
+:---------------------------------------------------------------------------:
+ Bitte die Felder, die geaendert werden sollen, ankreuzen:
+% BILD
+:---------------------------------------------------------------------------:
+ ­
+:---------------------------------------------------------------------------:
+% ENDE
+% AUSWAHL "EUDAS-Sortierfelder"
+% VORSPANN
+:---------------------------------------------------------------------------:
+ Bitte die Felder, nach denen sortiert werden soll, in Reihenfolge ankreuzen:
+% BILD
+:---------------------------------------------------------------------------:
+ ­
+:---------------------------------------------------------------------------:
+% ENDE
+% AUSWAHL "EUDAS-Anzeigefelder"
+% VORSPANN
+:---------------------------------------------------------------------------:
+ Bitte die Felder, die angezeigt werden sollen, in Reihenfolge ankreuzen:
+% BILD
+:---------------------------------------------------------------------------:
+ ­
+:---------------------------------------------------------------------------:
+% ENDE
+% AUSWAHL "EUDAS-Archivauswahl"
+% VORSPANN
+:---------------------------------------------------------------------------:
+ Auswahl der Dateien auf dem Archiv. Gewuenschte Datei(en) bitte ankreuzen:
+% BILD
+:---------------------------------------------------------------------------:
+ ­
+:---------------------------------------------------------------------------:
+% ENDE
+% AUSWAHL "EUDAS-Dateiauswahl"
+% VORSPANN
+:---------------------------------------------------------------------------:
+ Auswahl der vorhandenen Dateien. Gewuenschte Datei(en) bitte ankreuzen:
+% BILD
+:---------------------------------------------------------------------------:
+ ­
+:---------------------------------------------------------------------------:
+% ENDE
+% HILFE "EUDAS/Allgemein"
+% SEITE 1
+:--- MENÜBEDIENUNG ---
+: Das Menü dient zur Auswahl von Funktionen. Die Funktionen sind durch ein
+: vorangestelltes Minuszeichen gekennzeichnet. Mit den Pfeiltasten können
+: Sie die Schreibmarke zu einer beliebigen Position bewegen. Diese Funktion
+: können Sie dann durch Drücken der Leertaste ausführen.
+:---
+% ENDE
+% HILFE "EUDAS/rollen"
+% SEITE 1
+:---
+: Sie können mit verschiedenen Tasten(kombinationen) den Bildausschnitt
+: vertikal verschieben. Möglichkeiten:
+: OBEN, UNTEN eine Zeile rauf oder runter
+: ESC OBEN, ESC UNTEN eine Seite rauf oder runter
+: ESC '1', ESC '9' auf erste oder letzte Zeile
+: ESC 'q' zurück ins Menü
+:---
+% ENDE
+% HILFE "EUDAS/11"
+% SEITE 1
+:--- aktuelle Datei ansehen ---
+: Mit dieser Funktion schalten Sie in ein Untermenü, in dem Sie sich die
+: Dateiinhalte der geöffneten Datei ansehen können. Ist keine Datei ge-
+: öffnet, können Sie diese Funktion nicht ausführen.
+: => Informationen zur Menübedienung auf der nächsten Seite (ESC 'w')
+:---
+% SEITE 1 "EUDAS/Allgemein"
+% ENDE
+% HILFE "EUDAS/12"
+% SEITE 1
+:--- aktuelle Datei bearbeiten ---
+: Diese Auswahl führt in ein Untermenü, in dem Sie die geöffnete Datei als
+: Ganzes bearbeiten können (Drucken, Kopieren usw.). Es muß dazu eine Datei
+: geöffnet sein.
+:
+:---
+% SEITE 1 "EUDAS/Allgemein"
+% ENDE
+% HILFE "EUDAS/13"
+% SEITE 1
+:--- Datei zum Bearbeiten öffnen ---
+: Diese Funktion öffnet eine neue Datei. Sie können angeben, ob Sie die Datei
+: nur ansehen oder auch ändern wollen. Die vorher geöffnete Datei wird ggf.
+: gesichert. Wenn Sie eine neue Datei angeben, wird diese eingerichtet. Dabei
+: müssen Sie die Feldnamen eingeben.
+:---
+% SEITE 1 "EUDAS/Allgemein"
+% ENDE
+% HILFE "EUDAS/14"
+% SEITE 1
+:--- Feldstruktur aendern ---
+: Mit dieser Funktion können Sie
+: 1. neue Feldnamen anfügen
+: 2. Feldnamen und Feldtypen ändern
+: 3. Prüfbedingungen eingeben
+:---
+% SEITE 2
+:--- 1. neue Feldnamen anfügen
+: Sie können neue Feldnamen der Datei am Ende anfügen. Sie müssen die Namen
+: untereinander im Editor in der gewünschten Reihenfolge angeben. Vorher
+: werden Sie jedoch gefragt, ob Sie diese Funktion überhaupt ausführen wol-
+: len.
+:---
+% SEITE 3
+:--- 2. Feldnamen und Feldtypen ändern
+: In diesem Teil wird Ihnen eine Auswahl aller vorhandenen Felder angeboten,
+: in der jeweils auch der Typ angegeben ist. Wenn Sie diese Funktion nicht
+: ausführen wollen, beenden Sie die Auswahl einfach mit ESC q. Sonst wählen
+: Sie die Felder aus, deren Namen oder Typ Sie ändern wollen.
+:---
+% SEITE 4
+:--- 3. Prüfbedingungen eingeben
+: Vor dieser Funktion werden Sie ebenfalls gefragt, ob Sie sie ausführen
+: wollen. Wenn ja, können Sie im Editor ein Prüfprogramm eingeben, das mit
+: der Datei gespeichert wird und beim Reintragen neuer Sätze ausgeführt wird.
+:
+:---
+% SEITE 1 "EUDAS/Allgemein"
+% ENDE
+% HILFE "EUDAS/15"
+% SEITE 1
+:--- Dateien koppeln ---
+: Mit dieser Funktion können Sie eine Datei angeben, die zu den bisher ge-
+: öffneten Dateien dazugekoppelt wird. Anschließend werden zu jedem Satz der
+: existierenden Datei die in den Koppelfeldern übereinstimmenden Sätze der
+: Koppeldatei gezeigt.
+:---
+% SEITE 2
+:--- Koppelfelder
+: Als Koppelfelder werden dabei die ersten Felder der Koppeldatei betrachtet,
+: die auch in der geöffneten Datei vorhanden sind.
+:
+:
+:---
+% SEITE 1 "EUDAS/Allgemein"
+% ENDE
+% HILFE "EUDAS/16"
+% SEITE 1
+:--- EUDAS-Datei sortieren ---
+: Mit dieser Funktion kann die aktuell geöffnete EUDAS-Datei sortiert werden.
+: Die Reihenfolge, in der die Felder berücksichtigt werden, kann vorher ange-
+: geben werden. Eventuell müssen zum richtigen Sortieren Feldtypen vergeben
+: werden (s. "Feldstruktur aendern").
+:---
+% SEITE 1 "EUDAS/Allgemein"
+% ENDE
+% HILFE "EUDAS/17"
+% SEITE 1
+:--- aktuelle Dateien sichern ---
+: EUDAS arbeitet bei Änderungen immer auf Sicherheitskopien der Dateien.
+: Wenn Ändern erlaubt ist, müssen geänderte Arbeitskopien mit dieser Funktion
+: gesichert werden. Für eine veränderte Datei kann dabei auch ein neuer Name
+: angegeben werden, damit die alte Version erhalten bleibt.
+:---
+% SEITE 1 "EUDAS/Allgemein"
+% ENDE
+% HILFE "EUDAS/18"
+% SEITE 1
+:--- Dateiverwaltung ---
+: Diese Auswahl führt in ein Untermenü, in dem Dateien auf dem Archiv und im
+: System verwaltet werden können. Dateien können umbenannt, gelöscht oder
+: reorganisiert, sowie zwischen Archivdiskette und System hin- und her-
+: transportiert werden.
+:---
+% SEITE 1 "EUDAS/Allgemein"
+% ENDE
+% HILFE "EUDAS/21"
+% SEITE 1
+:--- Satz weiter ---
+: Diese Funktion geht zum nächsten Satz und zeigt ihn an. Wenn eine Such-
+: bedingung eingestellt ist, werden nicht ausgewählte Sätze übersprungen.
+:
+: => Hinweise zur Menübedienung auf der zweiten Seite (ESC 'w')
+:---
+% SEITE 1 "EUDAS/Allgemein"
+% ENDE
+% HILFE "EUDAS/22"
+% SEITE 1
+:--- Satz zurueck ---
+: Diese Funktion geht zum vorigen Satz. Wenn eine Suchbedingung eingestellt
+: ist, werden nicht ausgewählte Sätze übersprungen.
+:
+:
+:---
+% SEITE 1 "EUDAS/Allgemein"
+% ENDE
+% HILFE "EUDAS/23"
+% SEITE 1
+:--- Selektion einstellen ---
+: Mit dieser Funktion kann eine Suchbedingung als Suchmuster eingegeben
+: werden, die angibt, welche Sätze bearbeitet werden sollen. Die vorher
+: eingestellte Suchbedingung wird automatisch gelöscht. Die Bedingungen für
+: die einzelnen Felder können im Editor eingegeben werden.
+:---
+% SEITE 2
+:--- mögliche Bedingungen
+: Text identisch mit Text.. größergleich
+: *Text endet mit ..Text kleiner
+: Text* beginnt mit Text..Text zwischen
+: *Text* enthält * nicht leer
+:---
+% SEITE 3
+:--- Kombination von Bedingungen
+: --Bed Verneinung
+: Bedingungen für verschiedene Felder: UND
+: Komma zwischen Bed.: lokales ODER (Prio höher als UND)
+: Semikolon zwischen Bed.: globales ODER (Prio niedriger als UND)
+:---
+% SEITE 1 "EUDAS/Allgemein"
+% ENDE
+% HILFE "EUDAS/24"
+% SEITE 1
+:--- Selektion löschen ---
+: Mit dieser Funktion kann eine eingestellte Suchbedingung wieder gelöscht
+: werden, so daß wieder alle Sätze sichtbar sind.
+:
+:
+:---
+% SEITE 1 "EUDAS/Allgemein"
+% ENDE
+% HILFE "EUDAS/25"
+% SEITE 1
+:--- direkt auf Satz ---
+: Mit dieser Funktion kann ein bestimmter Satz direkt angewählt werden. Dazu
+: müssen Sie lediglich dessen Satznummer angeben.
+:
+:
+:---
+% SEITE 1 "EUDAS/Allgemein"
+% ENDE
+% HILFE "EUDAS/26"
+% SEITE 1
+:--- Bild vertikal verschieben ---
+: In dieser Funktion kann mit verschiedenen Tasten(kombinationen) die Anzeige
+: vertikal verschoben werden, wenn nicht alle Daten auf den Bildschirm
+: passen.
+:
+:---
+% SEITE 1 "EUDAS/Allgemein"
+% ENDE
+% HILFE "EUDAS/27"
+% SEITE 1
+:--- Einzelsatz bearbeiten ---
+: Diese Auswahl führt in ein Untermenü, in dem der aktuelle Satz bearbeitet
+: werden kann. Außerdem können dort neue Sätze eingegeben und Einstellungen
+: der Anzeige verändert werden.
+:
+:---
+% SEITE 1 "EUDAS/Allgemein"
+% ENDE
+% HILFE "EUDAS/28"
+% SEITE 1
+:--- aktuelle Datei bearbeiten ---
+: Diese Auswahl führt in das Nebenmenü zum Bearbeiten der aktuellen Datei
+: als Ganzes. Hier werden Funktionen zum Drucken, Tragen, Kopieren und
+: Verarbeiten angeboten.
+:
+:---
+% SEITE 1 "EUDAS/Allgemein"
+% ENDE
+% HILFE "EUDAS/31"
+% SEITE 1
+:--- neuen Satz einfügen ---
+: Mit dieser Funktion wird vor dem aktuellen Satz ein neuer Satz eingefügt.
+: Die Inhalte dieses zunächst leeren Satzes können Sie mit Hilfe des
+: Editors neben die einzelnen Feldnamen schreiben.
+:
+:---
+% SEITE 1 "EUDAS/Allgemein"
+% ENDE
+% HILFE "EUDAS/32"
+% SEITE 1
+:--- Satz aendern ---
+: Mit dieser Funktion können Sie die Inhalte des aktuellen Satzes verändern.
+:---
+% SEITE 1 "EUDAS/Allgemein"
+% ENDE
+% HILFE "EUDAS/33"
+% SEITE 1
+:--- Markierung ändern ---
+: Mit dieser Funktion können Sie einen Satz markieren, damit später nur die
+: markierten Sätze bearbeitet werden. Ist der Satz schon markiert, wird die
+: Markierung wieder gelöscht. Wenn mindestens ein Satz markiert ist, er-
+: scheint die Markierungsinformation in der Überschrift.
+:---
+% SEITE 1 "EUDAS/Allgemein"
+% ENDE
+% HILFE "EUDAS/34"
+% SEITE 1
+:--- Markierungen loeschen ---
+: Mit dieser Funktion werden alle Markierungen in der Datei gelöscht.
+: Die Markierungsinformation wird nicht mehr angezeigt. Die Markierungen
+: werden auch beim neuen Öffnen gelöscht, da sie nicht permanent in der
+: Datei gespeichert sind.
+:---
+% SEITE 1 "EUDAS/Allgemein"
+% ENDE
+% HILFE "EUDAS/35"
+% SEITE 1
+:--- Satz tragen ---
+: Mit dieser Funktion kann der aktuelle Satz in eine andere Datei trans-
+: portiert werden. Anschließend wird er gelöscht. Der Satz wird am Ende der
+: Zieldatei angefügt, wobei diese gegebenenfalls eingerichtet wird. Den
+: Namen der Zieldatei können Sie eingeben.
+:---
+% SEITE 1 "EUDAS/Allgemein"
+% ENDE
+% HILFE "EUDAS/36"
+% SEITE 1
+:--- Satz holen ---
+: Diese Funktion holt den letzten Satz einer anderen Datei und fügt ihn vor
+: dem aktuellen Satz ein. Damit wird das letzte 'Tragen' wieder rückgängig
+: gemacht. Die Dateien müssen gleiche Felderzahl haben.
+:
+:---
+% SEITE 1 "EUDAS/Allgemein"
+% ENDE
+% HILFE "EUDAS/37"
+% SEITE 1
+:--- Darstellung umschalten ---
+: Diese Funktion schaltet zwischen Normaldarstellung und Übersichtsanzeige
+: um. In der Normaldarstellung wird immer nur ein Satz angezeigt, in der
+: Übersichtsanzeige werden mehrere Sätze dargestellt, wobei jeder Satz eine
+: Zeile in Anspruch nimmt.
+:---
+% SEITE 1 "EUDAS/Allgemein"
+% ENDE
+% HILFE "EUDAS/38"
+% SEITE 1
+:--- Feldauswahl ---
+: Mit dieser Funktion kann gewählt werden, welche Felder in welcher Reihen-
+: folge angezeigt werden sollen. Die Auswahl kann für Übersichts- und
+: Normalanzeige unterschiedlich gewählt werden. Alle Felder werden zum
+: Ankreuzen angeboten.
+:---
+% SEITE 1 "EUDAS/Allgemein"
+% ENDE
+% HILFE "EUDAS/41"
+% SEITE 1
+:--- nach Muster drucken ---
+: Mit dieser Funktion können die Inhalte der Datei nach einem Druckmuster
+: ausgedruckt werden. Das Druckmuster ist eine Textdatei und muß vorher er-
+: stellt werden. Es gibt die Form des Ausdrucks an. Über den Aufbau eines
+: Druckmusters lesen Sie am besten das Benutzerhandbuch.
+:---
+% SEITE 1 "EUDAS/Allgemein"
+% ENDE
+% HILFE "EUDAS/42"
+% SEITE 1
+:--- Saetze tragen ---
+: Diese Funktion trägt alle Sätze in eine andere Datei und löscht sie danach.
+: Die Zieldatei muß gleiche Felderzahl haben, damit keine Information ver-
+: lorengeht. Beim Tragen können auch die Prüfbedingungen der Zieldatei ge-
+: prüft werden, wenn Sie die entsprechende Frage bejahen.
+:---
+% SEITE 1 "EUDAS/Allgemein"
+% ENDE
+% HILFE "EUDAS/43"
+% SEITE 1
+:--- Textdatei erstellen/aendern ---
+: Mit dieser Funktion kann eine Textdatei erstellt, geändert oder angesehen
+: werden. Es wird der normale Editor verwendet.
+:
+:
+:---
+% SEITE 1 "EUDAS/Allgemein"
+% ENDE
+% HILFE "EUDAS/44"
+% SEITE 1
+:--- Saetze kopieren ---
+: Diese Funktion kopiert die ausgewählten Sätze in eine andere Datei. Welche
+: Felder in welcher Reihenfolge kopiert werden sollen, wird durch ein Kopier-
+: muster bestimmt, das nach der Struktur der Zieldatei bestimmt wird und
+: dann von Ihnen noch geändert werden kann.
+:---
+% SEITE 1 "EUDAS/Allgemein"
+% ENDE
+% HILFE "EUDAS/45"
+% SEITE 1
+:--- Textdatei drucken ---
+: Mit dieser Funktion wird eine Textdatei direkt ausgedruckt. Die Datei kann
+: Anweisungen zur Druckersteuerung enthalten, die Sie dem EUMEL-Benutzer-
+: handbuch entnehmen können.
+:
+:---
+% SEITE 1 "EUDAS/Allgemein"
+% ENDE
+% HILFE "EUDAS/46"
+% SEITE 1
+:--- nach Vorschrift aendern ---
+: Diese Funktion ermöglicht es, die geöffnete Datei nach einer Vorschrift
+: automatisch zu ändern. Die Art der Änderungen wird dabei durch ein
+: Verarbeitungsmuster festgelegt, das vorher als Textdatei erstellt werden
+: muß. Über die Form des Verarbeitungsmusters s. Benutzerhandbuch.
+:---
+% SEITE 1 "EUDAS/Allgemein"
+% ENDE
+% HILFE "EUDAS/47"
+% SEITE 1
+:--- aktuelle Datei ansehen ---
+: Diese Funktion führt in ein Nebenmenü, in dem Sie die Inhalte der geöff-
+: neten Datei ansehen können.
+:
+:
+:---
+% SEITE 1 "EUDAS/Allgemein"
+% ENDE
+% HILFE "EUDAS/48"
+% SEITE 1
+:--- Dateiverwaltung ---
+: Diese Auswahl führt in ein Nebenmenü, in dem Dateien auf dem Archiv und im
+: System verwaltet werden können. Dateien können umbenannt, gelöscht oder
+: reorganisiert, sowie zwischen Archivdiskette und System hin- und her-
+: transportiert werden.
+:---
+% SEITE 1 "EUDAS/Allgemein"
+% ENDE
+% HILFE "EUDAS/51"
+% SEITE 1
+:--- Datei auf Archiv sichern ---
+: Diese Funktion schreibt eine oder mehrere Dateien auf das Archiv. Der
+: Archivname muß vorher eingegeben werden. Dann kann entweder der Name der
+: gewünschten Datei eingegeben werden oder mit ESC 'z' eine Auswahl von
+: Dateien angekreuzt werden.
+:---
+% SEITE 1 "EUDAS/Allgemein"
+% ENDE
+% HILFE "EUDAS/52"
+% SEITE 1
+:--- Datei reorganisieren ---
+: Diese Funktion reorganisiert eine Datei, an der viel geändert wurde, zur
+: Platz- und Zeitersparnis. Es können sowohl Textdateien als auch EUDAS-
+: Dateien angegeben werden.
+:
+:---
+% SEITE 1 "EUDAS/Allgemein"
+% ENDE
+% HILFE "EUDAS/53"
+% SEITE 1
+:--- Datei von Archiv holen ---
+: Diese Funktion holt eine Datei vom Archiv ins System. Der Archivname wird
+: automatisch bestimmt. Sie können dann entweder den gewünschten Dateinamen
+: angeben oder mit ESC 'z' eine Auswahl aller Dateien auf dem Archiv abrufen.
+:
+:---
+% SEITE 1 "EUDAS/Allgemein"
+% ENDE
+% HILFE "EUDAS/54"
+% SEITE 1
+:--- Datei umbenennen ---
+: Mit dieser Funktion können Sie für eine Datei auf dem System einen neuen
+: Namen vergeben. Wenn Sie den neuen Namen eingeben, wird Ihnen der alte Name
+: angeboten. Sie können ihn ändern oder ganz überschreiben. Dadurch ersparen
+: Sie sich bei kleinen Änderungen das Neutippen.
+:---
+% SEITE 1 "EUDAS/Allgemein"
+% ENDE
+% HILFE "EUDAS/55"
+% SEITE 1
+:--- Datei auf Archiv loeschen ---
+: Diese Funktion ermöglicht es, eine Datei auf dem Archiv zu löschen. Der
+: Platz dieser Datei wird jedoch nur dann wiederverwendet, wenn keine Dateien
+: mehr dahinter stehen. Der Archivname muß eingegeben werden. Sie können bei
+: der Eingabe des Dateinamens mit ESC 'z' eine Dateiauswahl abrufen.
+:---
+% SEITE 1 "EUDAS/Allgemein"
+% ENDE
+% HILFE "EUDAS/56"
+% SEITE 1
+:--- Datei loeschen ---
+: Diese Funktion löscht eine Datei auf dem System nach Anfrage. Sie können
+: den Dateinamen eingeben oder mit ESC 'z' eine Auswahl aller vorhandenen
+: Dateien abrufen.
+:
+:---
+% SEITE 1 "EUDAS/Allgemein"
+% ENDE
+% HILFE "EUDAS/57"
+% SEITE 1
+:--- Archivuebersicht ---
+: Diese Funktion liefert eine Übersicht der Dateien auf dem Archiv. Ver-
+: lassen Sie diese Übersicht mit ESC 'q'.
+:
+:
+:---
+% SEITE 1 "EUDAS/Allgemein"
+% ENDE
+% HILFE "EUDAS/58"
+% SEITE 1
+:--- Dateiuebersicht ---
+: Diese Funktion liefert eine Übersicht über alle im System vorhandenen
+: Dateien. Verlassen Sie diese Übersicht mit ESC 'q'.
+:
+:
+:---
+% SEITE 1 "EUDAS/Allgemein"
+% ENDE
+% HILFE "AUSWAHL/Allgemein"
+% SEITE 1
+:--- AUSWAHL ---
+: Mit Hilfe der Auswahl ist es möglich, aus einem Angebot einen Teil auszu-
+: wählen. Die gewünschten Namen werden einfach in beliebiger Reihenfolge
+: angekreuzt und anschließend in dieser Reihenfolge verwendet.
+: Die Schreibmarke (Cursor) gibt an, welcher Name gerade angekreuzt werden
+: kann. Mit den Pfeiltasten kann der Cursor auf den Kreisen bewegt werden.
+: 'x' kreuzt einen Namen an, 'o' loescht die Ankreuzung wieder.
+: Mit ESC 'q' wird die Auswahl verlassen. ESC 'a' bricht die Auswahl und
+: die folgende Funktion ab. Falls das Angebot nicht auf den Bildschirm paßt,
+: wird es gerollt. ESC '1' positioniert immer auf den Anfang und ESC '9'
+: auf das Ende der Auswahl. Mit HOP 'x' werden alle noch nicht angekreuzten
+: Namen angekreuzt, mit HOP 'o' werden alle Ankreuzungen geloescht.
+:---
+% ENDE
+% HILFE "AUSWAHL/Felder"
+% SEITE 1
+:---
+: Sie können hier alle Felder ankreuzen, die Sie ändern wollen. Ändern können
+: Sie den Feldnamen und den Feldtyp. Wollen Sie keine Felder ändern, drücken
+: Sie einfach ESC 'q'.
+:---
+% SEITE 1 "AUSWAHL/Allgemein"
+% ENDE
+% HILFE "AUSWAHL/Sortierfelder"
+% SEITE 1
+:---
+: Kreuzen Sie hier die Felder an, die bei der Sortierung berücksichtigt
+: werden sollen. Die Reihenfolge des Ankreuzens ist wichtig. Beim Vergleich
+: zweier Sätze wird erst das als erstes angekreuzte Feld verglichen und
+: danach die Einordnung der Sätze bestimmt. Ist dieses Feld bei beiden
+: gleich, wird das nächste angekreuzte Feld untersucht usw.
+:---
+% SEITE 1 "AUSWAHL/Allgemein"
+% ENDE
+% HILFE "AUSWAHL/Anzeigefelder"
+% SEITE 1
+:---
+: Kreuzen Sie hier alle Felder an, die Sie angezeigt haben möchten. Die
+: Felder erscheinen in der angekreuzten Reihenfolge. Für beide Arten der
+: Anzeige können Sie eine separate Feldauswahl einstellen.
+:---
+% SEITE 1 "AUSWAHL/Allgemein"
+% ENDE
+% HILFE "AUSWAHL/Archiv"
+% SEITE 1
+:---
+: Diese Auswahl zeigt alle auf dem Archiv vorhandenen Dateien an. Kreuzen
+: Sie die Dateien an, die Sie bearbeiten möchten. Die Dateien werden in
+: der angekreuzten Reihenfolge verwendet.
+:---
+% SEITE 1 "AUSWAHL/Allgemein"
+% ENDE
+% HILFE "AUSWAHL/Datei"
+% SEITE 1
+:---
+: Diese Auswahl zeigt alle Dateien auf dem System, die Sie verwenden können.
+: Kreuzen Sie die gewünschte(n) Datei(en) an.
+:---
+% SEITE 1 "AUSWAHL/Allgemein"
+% ENDE
+% HILFE "FEHLER/Allgemein"
+% SEITE 1
+:--- FEHLERMELDUNGEN ---
+: Fehlermeldungen werden von einem Programm abgesetzt, wenn es seine Funktion
+: nicht durchführen kann. Der Text der Meldung identifiziert die Ursache des
+: Problems. Zur Zeit liegen noch keine meldungsspezifischen Informationen
+: vor, schauen Sie ggf. in das Benutzerhandbuch.
+:---
+% ENDE
+% HILFE "FEHLER/9"
+% SEITE 1
+:---
+: Diese Fehlermeldung deutet auf einen internen Programmfehler (wenn Sie
+: nicht selber ein Programm geschrieben haben). Melden Sie diesen Fehler
+: bitte, damit eine Korrektur vorgenommen werden kann. Schreiben Sie sich
+: dazu die Begleitumstände auf (welche Datei haben Sie benutzt, welche
+: Funktion). Versuchen Sie gegebenenfalls, den Fehler zu wiederholen. Es
+: ist nämlich z.B. wichtig, ob der Fehler nur bei einer bestimmten Datei
+: auftritt oder ganz "zufällig". Wenn Sie vermuten, daß der Fehler an einer
+: bestimmten Datei liegt, sichern Sie diese Datei bitte auf einer Diskette,
+: um sie eventuell einschicken zu können.
+:---
+% ENDE
+% HILFE "FEHLER/10"
+% SEITE 1 "FEHLER/9"
+% ENDE
+% HILFE "FEHLER/11"
+% SEITE 1 "FEHLER/9"
+% ENDE
+% HILFE "FEHLER/14"
+% SEITE 1 "FEHLER/9"
+% ENDE
+% HILFE "GET/Allgemein"
+% SEITE 1
+:--- EINGABE ---
+: Die Eingabe erwartet von Ihnen eine bestimmte Information, die Sie eingeben
+: sollen. Die Art der Information wird durch den Anforderungstext angegeben.
+: Wenn Sie sich beim Eintippen verschrieben haben, können Sie mit den Pfeil-
+: tasten zurückgehen und den Text korrigieren. Eine bereits dastehende
+: Information können Sie überschreiben. RUBOUT löscht ein Zeichen, RUBIN
+: schaltet in den Einfügemodus (Zeichen werden nicht mehr überschrieben).
+: Beenden Sie die Eingabe mit RETURN. ESC 'h' bricht die Eingabe und die
+: folgende Funktion ab. Wenn in der Statuszeile angegeben, können Sie mit
+: ESC 'z' eine Auswahl verfügbarer Namen abrufen, die Sie dann Ankreuzen
+: können.
+:---
+% ENDE
+% HILFE "GET/Sicherungsname"
+% SEITE 1
+:---
+: Sie können jetzt den Namen angeben, unter dem die Arbeitskopie gespeichert
+: werden soll. Ihnen wird der alte Name zum Überschreiben angeboten. Drücken
+: Sie nur RETURN, wird der alte Name genommen und die alte Version über-
+: schrieben.
+:---
+% SEITE 1 "GET/Allgemein"
+% ENDE
+% HILFE "GET/Dateiname"
+% SEITE 1
+:---
+: Bitte geben Sie den Namen der Datei ein, mit dem die Operation ausgeführt
+: werden soll. Mit ESC 'z' können Sie sich die zur Verfügung stehenden Namen
+: auch als Auswahl zeigen lassen.
+:---
+% SEITE 1 "GET/Allgemein"
+% ENDE
+% HILFE "GET/feldname"
+% SEITE 1
+:---
+: Sie können den Namen des angegebenen Feldes ändern, indem Sie den alten
+: Namen überschreiben bzw. korrigieren.
+:---
+% SEITE 1 "GET/Allgemein"
+% ENDE
+% HILFE "GET/feldtyp"
+% SEITE 1
+:---
+: Sie können hier einen von vier möglichen Typen eingeben:
+: TEXT normaler Text mit Vergleich nach EUMEL-Code.
+: DIN Text, der nach DIN 5007 verglichen wird (Umlaute richtig,
+: Groß-/Kleinschreibung und Sonderzeichen ignoriert).
+: ZAHL Alle nichtnumerischen Zeichen außer Minus und Dezimalkomma werden
+: beim Vergleichen ignoriert.
+: DATUM Datum der Form "tt.mm.jj"
+: Die Feldtypen werden beim Sortieren und Suchen beachtet.
+:---
+% SEITE 1 "GET/Allgemein"
+% ENDE
+% HILFE "GET/auf Satz"
+% SEITE 1
+:---
+: Sie können hier die Satznummer des Satzes eingeben, den Sie sehen wollen.
+:---
+% SEITE 1 "GET/Allgemein"
+% ENDE
+% HILFE "GET/Archivname"
+% SEITE 1
+:---
+: Geben Sie den Namen des eingelegten Archivs ein (zur Sicherheit). Der
+: zuletzt verwendete Name wird zum Ändern angeboten.
+:---
+% SEITE 1 "GET/Allgemein"
+% ENDE
+% HILFE "GET/rename"
+% SEITE 1
+:---
+: Sie können den alten Namen der Datei durch Überschreiben und Korrigieren
+: ändern.
+:---
+% SEITE 1 "GET/Allgemein"
+% ENDE
+% HILFE "JA/Allgemein"
+% SEITE 1
+:--- FRAGEN ---
+: Das Programm stellt Ihnen eine Frage, die Sie bejahen oder verneinen kön-
+: nen. Sie bejahen die Frage, indem Sie 'j' drücken und verneinen Sie mit 'n'
+: (beides groß oder klein). Mit ESC 'h' können Sie die Funktion abbrechen.
+:---
+% ENDE
+% HILFE "JA/oeffne"
+% SEITE 1
+:---
+: Beantworten Sie die Frage mit 'n', wenn Sie die Datei nur ansehen wollen.
+: In diesem Fall wird keine Sicherheitskopie erstellt. Verneinen Sie die
+: Frage, wird eine interen Kopie angelegt, die Sie dann verändern können.
+: Die Kopie muß nach dem Ändern gesichert werden.
+:---
+% SEITE 1 "JA/Allgemein"
+% ENDE
+% HILFE "JA/alte version"
+% SEITE 1
+:---
+: Wenn Sie diese Frage bejahen, wird die Arbeitskopie unter dem angegebenen
+: Namen gesichert. Die alte Version geht dadurch verloren. Wenn Sie die Frage
+: verneinen, haben Sie Gelegenheit, einen neuen Namen anzugeben, damit die
+: alte Version erhalten bleiben kann.
+:---
+% SEITE 1 "JA/Allgemein"
+% ENDE
+% HILFE "JA/Datei loeschen"
+% SEITE 1
+:---
+: Beim Sichern hatten Sie Gelegenheit, alle veränderten Dateien zu sichern.
+: Die Sicherheitskopien können damit gelöscht werden. Dazu bejahen Sie die
+: Frage. Wenn die Dateien jedoch noch geöffnet bleiben sollen, oder Sie eine
+: Datei aus Versehen nicht gesichert haben, müssen Sie diese Frage verneinen.
+:---
+% SEITE 1 "JA/Allgemein"
+% ENDE
+% HILFE "JA/sichere"
+% SEITE 1
+:---
+: Die interne Arbeitskopie der angegebenen Datei wurde gegenüber dem Original
+: verändert. Wenn Sie diese Änderungen behalten wollen, müssen Sie die Frage
+: bejahen. Sie haben dann noch die Möglichkeit, die geänderte Version unter
+: neuem Namen zu sichern, um die alte Version zu behalten. Wenn Sie die Frage
+: verneinen, gehen die Änderungen verloren und das Original bleibt erhalten.
+:---
+% SEITE 1 "JA/Allgemein"
+% ENDE
+% HILFE "JA/ueber"
+% SEITE 1
+:---
+: Sie haben für die Arbeitskopie einen Namen angegeben, der noch existiert.
+: Bejahen Sie die Frage, wird die alte Datei dieses Namens überschrieben.
+: Anderenfalls erhalten Sie eine neue Gelegenheit, einen Namen einzugeben.
+:---
+% SEITE 1 "JA/Allgemein"
+% ENDE
+% HILFE "JA/Sicherungssortierung"
+% SEITE 1
+:---
+: Die angegebene Datei war früher schon einmal sortiert worden. Die Sor-
+: tierung wurde jedoch durch nachfolgende Änderungen zerstört. Wenn Sie die
+: Datei wieder sortiert haben wollen, beantworten Sie die Frage mit 'j'.
+: Die Sortierung dauert nicht lange, wenn nur wenige Sätze verändert wurden.
+:---
+% SEITE 1 "JA/Allgemein"
+% ENDE
+% HILFE "JA/Pruefbed"
+% SEITE 1
+:---
+: Die Prüfbedingungen einer Datei sind nur für die Funktion "Saetze tragen"
+: relevant. In der Regel können Sie diese Frage verneinen.
+:---
+% SEITE 1 "JA/Allgemein"
+% ENDE
+% HILFE "JA/feldnamen"
+% SEITE 1
+:---
+: Falls Sie neue Felder zu den existierenden anfügen wollen, müssen Sie diese
+: Frage bejahen. Sie erhalten dann Gelegenheit, die neuen Namen im Editor
+: einzugeben.
+:---
+% SEITE 1 "JA/Allgemein"
+% ENDE
+% HILFE "JA/Sortierfelder"
+% SEITE 1
+:---
+: Die Reihenfolge, in der die Felder bei der Sortierung berücksichtigt wer-
+: den, ist in der EUDAS-Datei intern gespeichert. Wenn Sie diese Reihenfolge,
+: die beim letzten Sortieren angegeben wurde, ändern möchten, müssen Sie die
+: Frage bejahen. Sie können dann die neue Feldreihenfolge auswählen.
+:---
+% SEITE 1 "JA/Allgemein"
+% ENDE
+% HILFE "JA/sortieren"
+% SEITE 1
+:---
+: Wenn Sie diese Frage bejahen, wird die Zieldatei nach Ausführung der
+: Funktion in ihrer eingestellten Feldreihenfolge sortiert.
+:---
+% SEITE 1 "JA/Allgemein"
+% ENDE
+% HILFE "JA/forget"
+% SEITE 1
+:---
+: Wenn Sie diese Frage bejahen, wird die Datei wirklich gelöscht. Wenn Sie
+: die Datei irrtümlich gewählt haben, müssen Sie die Frage verneinen.
+:---
+% SEITE 1 "JA/Allgemein"
+% ENDE
+% HILFE "JA/einrichten"
+% SEITE 1
+:---
+: Sie haben eine Datei angegeben, die noch nicht existiert. Wenn Sie die
+: Frage bejahen, wird die Datei neu eingerichtet. Anderenfalls wird die
+: Funktion abgebrochen, so daß Sie Gelegenheit haben, die Funktion mit einem
+: neuen Namen zu wiederholen.
+:---
+% SEITE 1 "JA/Allgemein"
+% ENDE
+% HILFE "JA/testen"
+% SEITE 1
+:---
+: Wenn Sie diese Frage bejahen, werden beim Tragen die Prüfbedingungen der
+: Zieldatei abgefragt. Sätze, die diese Bedingungen nicht erfüllen, werden
+: nicht getragen und können danach geändert werden. Beim Ändern wird dann
+: jeweils die den Satz betreffende Meldung ausgegeben. Die Prüfbedingungen
+: der Zieldatei können Sie mit der Funktion "Feldstruktur aendern" angeben
+: oder ändern.
+:---
+% SEITE 1 "JA/Allgemein"
+% ENDE
+% HILFE "JA/save"
+% SEITE 1
+:---
+: Die angegebene Datei befindet sich bereits auf dem Archiv. Wenn Sie die
+: Datei überschreiben wollen, müssen Sie die Frage bejahen. Ansonsten wird
+: die Datei nicht auf das Archiv geschrieben (keine Wirkung).
+:---
+% SEITE 1 "JA/Allgemein"
+% ENDE
+% HILFE "JA/fetch"
+% SEITE 1
+:---
+: Die angegebene Datei ist bereits im System vorhanden. Wenn Sie diese Datei
+: überschreiben wollen, müssen Sie die Frage bejahen. Anderenfalls wird keine
+: Aktion vorgenommen.
+:---
+% SEITE 1 "JA/Allgemein"
+% ENDE
+% HILFE "JA/erase"
+% SEITE 1
+:---
+: Zur Sicherheit wird gefragt, ob Sie die angegebene Datei wirklich auf dem
+: Archiv löschen wollen. Wenn Sie die Frage verneinen, wird keine Aktion
+: durchgeführt.
+:---
+% SEITE 1 "JA/Allgemein"
+% ENDE
+% HILFE "EDIT/Allgemein"
+% SEITE 1
+:--- EDITOR ---
+: Mit dem Editor können Sie einen Text zeilenweise eingeben. Dabei können
+: Sie den Cursor mit den Pfeiltasten bewegen. RUBOUT löscht ein Zeichen,
+: RUBIN schaltet in den Einfügemodus um. Für weitere Informationen zum Editor
+: s. EUMEL-Benutzerhandbuch. ESC 'q' verläßt den Editor normal. Mit ESC 'h'
+: wird die Funktion abgebrochen.
+:---
+% ENDE
+% HILFE "EDIT/Feldnamen"
+% SEITE 1
+:---
+: Sie können hier die neuen Feldnamen in der gewünschten Reihenfolge unter-
+: einander eingeben. Jeder Feldname muß in einer Zeile stehen und ohne
+: Anführungsstriche geschrieben sein.
+:---
+% SEITE 1 "EDIT/Allgemein"
+% ENDE
+% HILFE "EDIT/Pruefbed"
+% SEITE 1
+:---
+: Sie können hier die Prüfbedingungen der Datei eingeben bzw. ändern. Die
+: Prüfbedingungen sind ein ELAN-Programm. Da ELAN-Programme formatfrei sind,
+: kann es sein, daß Ihr Programm beim nächsten Mal anders erscheint, als Sie
+: es eingegeben haben.
+:---
+% SEITE 1 "EDIT/Allgemein"
+% ENDE
+% HILFE "EDIT/Suchen"
+% SEITE 1
+:---
+: Sie können jetzt eine Selektionsbedingung einstellen. Dazu müssen Sie
+: jeweils neben den Feldnamen eine Bedingung schreiben. Mögliche Bedingungen
+: sind:
+: Text muß gleich sein
+: Text* muß mit Text anfangen
+: *Text muß mit Text enden
+: *Text* enthält Text
+: Text.. muß größer oder gleich Text sein
+: ..Text muß kleiner als Text sein oder mit Text anfangen
+: Text1..Text2 liegt zwischen den beiden Texten
+: "--" verneint eine Bedingung. Weitere Bedingungen und Kombination von
+: Bedingungen s. EUDAS-Benutzerhandbuch.
+:---
+% SEITE 1 "EDIT/Allgemein"
+% ENDE
+% HILFE "EDIT/Einfuegen"
+% SEITE 1
+:---
+: Sie können hier die Inhalte eines neuen Satzes eingeben, der vor dem
+: aktuellen Satz eingefügt wird.
+: Spezielle Tastenkombinationen:
+: ESC RUBOUT Rest der Zeile löschen
+: ESC RUBIN Zeile aufbrechen
+: ESC OBEN nach oben blättern
+: ESC UNTEN nach unten blättern
+: ESC '1' auf erste Zeile
+: ESC '9' auf letzte Zeile
+: ESC 'h' Abbruch, der Satz wird nicht eingefügt
+: ESC 'w' Beenden und gleich den nächsten Satz einfügen
+:---
+% SEITE 1 "EDIT/Allgemein"
+% ENDE
+% HILFE "EDIT/Aendern"
+% SEITE 1
+:---
+: Sie können die Inhalte des aktuellen Satzes hier abändern.
+: Spezielle Tastenkombinationen:
+: ESC RUBOUT Rest der Zeile löschen
+: ESC RUBIN Zeile aufbrechen
+: ESC OBEN nach oben blättern
+: ESC UNTEN nach unten blättern
+: ESC '1' auf erste Zeile
+: ESC '9' auf letzte Zeile
+: ESC 'h' Abbruch, der Satz bleibt unverändert
+: ESC 'w' Beenden und gleich den nächsten Satz ändern
+:---
+% SEITE 1 "EDIT/Allgemein"
+% ENDE
+% HILFE "EDIT/Druckmuster"
+% SEITE 1 "EDIT/Allgemein"
+% ENDE
+% HILFE "EDIT/Verarbeite"
+% SEITE 1
+:---
+: Sie können hier eine Verarbeitungsvorschrift eingeben. Die Verarbeitungs-
+: vorschrift ist ein ELAN-Programm. Ein Feld wird geändert durch den
+: Operator "V":
+: "Feldname" V "neuer Feldinhalt";
+: Statt des neuen Feldinhalts kann auch ein beliebiger ELAN-Ausdruck ange-
+: geben werden. Mit
+: f ("Feldname")
+: wird der Inhalt eines Feldes als Text geliefert.
+:---
+% SEITE 1 "EDIT/Allgemein"
+% ENDE
+% HILFE "EDIT/Kopiermuster"
+% SEITE 1
+:---
+: Sie können das hier angegebene Kopiermuster verändern. Sollen Felder nicht
+: kopiert werden, brauchen Sie nur die entsprechenden Zeilen zu löschen.
+: Soll eine Feld andere Inhalte bekommen, geben Sie in dem Ausdruck
+: "Feldname" K f ("Feldname");
+: hinter dem K einen anderen ELAN-Ausdruck ein. Die Reihenfolge der K-Aus-
+: drücke bestimmt die Reihenfolge der Feldnamen in der Zieldatei, wenn die
+: Zieldatei noch nicht existierte.
+:---
+% SEITE 1 "EDIT/Allgemein"
+% ENDE
+
+