summaryrefslogtreecommitdiff
path: root/app/baisy/2.2.1-schulis/src/plausipruefung
blob: 4b08653677c3f8249e8eb478e7785d2711fa2014 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
PACKET plausipruefungDEFINES pruefe,imschlbestand,imbestand:LET 
trennerfuerfeldwerte="�",dateinameschluessel="Schlüssel";PROC pruefe(INT 
CONST pruefart,TAG CONST maske,TEXT PROC (INT CONST )prueftext,INT CONST 
feldnummer,ug,og,TEXT CONST bestand,INT VAR fstatus):fstatus:=0;SELECT 
pruefartOF CASE 1:pruefefeldgefuellt(maske,PROC prueftext,feldnummer,fstatus)
CASE 2:pruefenumerisch(maske,PROC prueftext,feldnummer,fstatus)CASE 3:
pruefenumgrenzen(maske,PROC prueftext,feldnummer,ug,og,fstatus)CASE 4:
pruefeimbestand(maske,PROC prueftext,feldnummer,bestand,fstatus)CASE 5:
pruefealternativen(maske,PROC prueftext,feldnummer,ug,fstatus)CASE 6:
pruefedatum(maske,PROC prueftext,feldnummer,fstatus)END SELECT .END PROC 
pruefe;PROC pruefefeldgefuellt(TAG CONST maske,TEXT PROC (INT CONST )eingabe,
INT CONST fnr,INT VAR fstatus):LET fehlermeldungsnr=52;IF eingabe(fnr)=""
THEN meldeauffaellig(maske,fehlermeldungsnr);fstatus:=fnrFI ;END PROC 
pruefefeldgefuellt;PROC pruefenumerisch(TAG CONST maske,TEXT PROC (INT CONST 
)eingabe,INT CONST fnr,INT VAR fstatus):LET fehlermeldungsnr=53;INT VAR type;
TEXT VAR teiltext;scan(eingabe(fnr));nextsymbol(teiltext,type);IF type<>3
THEN meldeauffaellig(maske,fehlermeldungsnr);fstatus:=fnrELSE nextsymbol(
teiltext,type);IF type<>7THEN meldeauffaellig(maske,fehlermeldungsnr);fstatus
:=fnrFI ;FI ;END PROC pruefenumerisch;PROC pruefenumgrenzen(TAG CONST maske,
TEXT PROC (INT CONST )eingabe,INT CONST fnr,ug,og,INT VAR fstatus):LET 
fehlermeldungsnr=54;INT VAR inteingabe:=int(eingabe(fnr));IF inteingabe<ugOR 
inteingabe>ogTHEN meldeauffaellig(maske,fehlermeldungsnr);fstatus:=fnrFI ;
END PROC pruefenumgrenzen;PROC pruefeimbestand(TAG CONST maske,TEXT PROC (
INT CONST )eingabe,INT CONST fnr,TEXT CONST bestand,INT VAR fstatus):LET 
fehlermeldungsnr=55;BOOL VAR nichtimbestandgefunden;IF (bestandSUB 1)="c"
THEN nichtimbestandgefunden:=NOT (imbestand(bestand+trennerfuerfeldwerte+
eingabe(fnr),dateinameschluessel))ELSE nichtimbestandgefunden:=NOT (imbestand
(eingabe(fnr),bestand))FI ;IF nichtimbestandgefundenTHEN meldeauffaellig(
maske,fehlermeldungsnr);fstatus:=fnrFI .END PROC pruefeimbestand;PROC 
pruefealternativen(TAG CONST maske,TEXT PROC (INT CONST )eingabe,INT CONST 
fnr1,fnr2,INT VAR fstatus):LET fehlermeldungsnr=56;IF fnr2<=fnr1THEN LEAVE 
pruefealternativenFI ;INT VAR nr:=fnr1,treffer:=0;REP IF eingabe(nr)<>""THEN 
trefferINCR 1FI ;nrINCR 1UNTIL (nr>fnr2)OR (treffer>1)PER ;IF treffer<>1THEN 
meldeauffaellig(maske,fehlermeldungsnr);fstatus:=fnr1FI .END PROC 
pruefealternativen;PROC pruefedatum(TAG CONST maske,TEXT PROC (INT CONST )
eingabe,INT CONST fnr,INT VAR fstatus):LET fehlermeldungsnr=157,falschertag=
"00";TEXT VAR pruefdatum:=eingabe(fnr);IF datum(pruefdatum)=nildatumCOR 
subtext(pruefdatum,1,2)=falschertagTHEN meldeauffaellig(maske,
fehlermeldungsnr);fstatus:=fnrFI ;END PROC pruefedatum;PROC pruefe(INT CONST 
pruefart,TAG CONST maske,ROW 100TEXT CONST prueftext,INT CONST feldnummer,ug,
og,TEXT CONST bestand,INT VAR fstatus):fstatus:=0;SELECT pruefartOF CASE 1:
pruefefeldgefuellt(maske,prueftext,feldnummer,fstatus)CASE 2:pruefenumerisch(
maske,prueftext,feldnummer,fstatus)CASE 3:pruefenumgrenzen(maske,prueftext,
feldnummer,ug,og,fstatus)CASE 4:pruefeimbestand(maske,prueftext,feldnummer,
bestand,fstatus)CASE 5:pruefealternativen(maske,prueftext,feldnummer,ug,
fstatus)CASE 6:pruefedatum(maske,prueftext,feldnummer,fstatus)END SELECT .
END PROC pruefe;PROC pruefefeldgefuellt(TAG CONST maske,ROW 100TEXT CONST 
eingabe,INT CONST fnr,INT VAR fstatus):LET fehlermeldungsnr=52;IF eingabe(fnr
)=""THEN meldeauffaellig(maske,fehlermeldungsnr);fstatus:=fnrFI ;END PROC 
pruefefeldgefuellt;PROC pruefenumerisch(TAG CONST maske,ROW 100TEXT CONST 
eingabe,INT CONST fnr,INT VAR fstatus):LET fehlermeldungsnr=53;INT VAR type;
TEXT VAR teiltext;scan(eingabe(fnr));nextsymbol(teiltext,type);IF type<>3
THEN meldeauffaellig(maske,fehlermeldungsnr);fstatus:=fnrELSE nextsymbol(
teiltext,type);IF type<>7THEN meldeauffaellig(maske,fehlermeldungsnr);fstatus
:=fnrFI ;FI ;END PROC pruefenumerisch;PROC pruefenumgrenzen(TAG CONST maske,
ROW 100TEXT CONST eingabe,INT CONST fnr,ug,og,INT VAR fstatus):LET 
fehlermeldungsnr=54;INT VAR inteingabe:=int(eingabe(fnr));IF inteingabe<ugOR 
inteingabe>ogTHEN meldeauffaellig(maske,fehlermeldungsnr);fstatus:=fnrFI ;
END PROC pruefenumgrenzen;PROC pruefeimbestand(TAG CONST maske,ROW 100TEXT 
CONST eingabe,INT CONST fnr,TEXT CONST bestand,INT VAR fstatus):LET 
fehlermeldungsnr=55;BOOL VAR nichtimbestandgefunden;IF (bestandSUB 1)="c"
THEN nichtimbestandgefunden:=NOT (imbestand(bestand+trennerfuerfeldwerte+
eingabe(fnr),dateinameschluessel))ELSE nichtimbestandgefunden:=NOT (imbestand
(eingabe(fnr),bestand))FI ;IF nichtimbestandgefundenTHEN meldeauffaellig(
maske,fehlermeldungsnr);fstatus:=fnrFI .END PROC pruefeimbestand;PROC 
pruefealternativen(TAG CONST maske,ROW 100TEXT CONST eingabe,INT CONST fnr1,
fnr2,INT VAR fstatus):LET fehlermeldungsnr=56;IF fnr2<=fnr1THEN LEAVE 
pruefealternativenFI ;INT VAR nr:=fnr1,treffer:=0;REP IF eingabe(nr)<>""THEN 
trefferINCR 1FI ;nrINCR 1UNTIL (nr>fnr2)OR (treffer>1)PER ;IF treffer<>1THEN 
meldeauffaellig(maske,fehlermeldungsnr);fstatus:=fnr1FI .END PROC 
pruefealternativen;PROC pruefedatum(TAG CONST maske,ROW 100TEXT CONST eingabe
,INT CONST fnr,INT VAR fstatus):LET fehlermeldungsnr=157,falschertag="00";
TEXT VAR pruefdatum:=eingabe(fnr);IF datum(pruefdatum)=nildatumCOR subtext(
pruefdatum,1,2)=falschertagTHEN meldeauffaellig(maske,fehlermeldungsnr);
fstatus:=fnrFI ;END PROC pruefedatum;BOOL PROC imschlbestand(TEXT CONST 
schlwert,bestand):imbestand(bestand+trennerfuerfeldwerte+schlwert,
dateinameschluessel)END PROC imschlbestand;BOOL PROC imbestand(TEXT CONST 
schlwerte,bestandname):INT VAR dateinummer,status,position,i;TEXT VAR suchkey
:=schlwerte;systemdboff;stopbeifalschemnamen(FALSE );dateinummer:=dateinr(
bestandname);IF dateinummer>0THEN parsenooffields(0);suchwertesetzen;search(
dateinummer,TRUE );status:=dbstatus;reinitparsingELSE status:=1FI ;
stopbeifalschemnamen(TRUE );status=0.suchwertesetzen:FOR iFROM 1UPTO anzkey(
dateinummer)REP ermittleposition;putwert(dateinummer+i,suchwert);suchkey:=
subtext(suchkey,position+2)UNTIL suchkey=""PER .ermittleposition:position:=
pos(suchkey,trennerfuerfeldwerte);IF position=0THEN position:=length(suchkey)
ELSE positionDECR 1FI .suchwert:subtext(suchkey,1,position).END PROC 
imbestand;END PACKET plausipruefung;