PACKET allgemeinegrundfunktionenDEFINES statleseschleife,rechtstext, aenderungsvermerksetzen,geplanteshjundsjberechnen,textnichtnull,jgstaufber, eingabenummerisch:LET sgaenderung="c02 aenderungsvermerk",schlakt="aktuell", schlgepl="geplant",blank=" ";PROC statleseschleife(INT CONST indexnummer, TEXT CONST startschluessel1,startschluessel2,INT CONST feldnr1,feldnr2,PROC ( BOOL VAR )stataktion):vorbereitungen;leseschleife.vorbereitungen:LET maxleseanzahl=10;BOOL VAR vorzeitigesende:=FALSE ;INT VAR anzahltupel;. leseschleife:putwert(feldnr1,startschluessel1);putwert(feldnr2, startschluessel2);search(indexnummer);IF dbstatus=0THEN einleseschleifeFI . einleseschleife:zaehlen;WHILE NOT schlussREP anzahltupel:=maxleseanzahl; multisucc(indexnummer,anzahltupel);stackdurchlaufPER ;.stackdurchlauf:IF anzahltupel=0THEN dbstatus(1)ELSE WHILE anzahltupel<>0REP lesen;zaehlen;IF vorzeitigesendeTHEN dbstatus(1);anzahltupel:=0FI ;PER FI .schluss:dbstatus<>0 .zaehlen:stataktion(vorzeitigesende).lesen:multisucc;anzahltupelDECR 1;.END PROC statleseschleife;TEXT PROC rechtstext(TEXT CONST t,INT CONST laenge):(( laenge-length(t))*" ")+tEND PROC rechtstext;PROC aenderungsvermerksetzen( TEXT CONST schlwert):IF schlwert<>schlaktCAND schlwert<>schlgeplTHEN LEAVE aenderungsvermerksetzenFI ;inittupel(dnrschluessel);putwert(fnrschlsachgebiet ,sgaenderung);putwert(fnrschlschluessel,schlwert);search(dnrschluessel,TRUE ) ;IF dbstatus=okTHEN putwert(fnrschllangtext,date+blank+timeofday);update( dnrschluessel)ELSE putwert(fnrschlsachgebiet,sgaenderung);putwert( fnrschlschluessel,schlwert);putwert(fnrschllangtext,date+blank+timeofday); insert(dnrschluessel)FI END PROC aenderungsvermerksetzen;PROC geplanteshjundsjberechnen(TEXT VAR halbjahr,schuljahr):TEXT VAR hilfe;IF halbjahr="1"THEN halbjahr:="2";ELSE halbjahr:="1";schuljahr:=subtext( schuljahr,3);hilfe:=text(int(schuljahr)+1);schuljahrCAT subtext("0"+hilfe, LENGTH (hilfe))FI END PROC geplanteshjundsjberechnen;TEXT PROC textnichtnull( TEXT CONST txt):TEXT VAR t:=txt;IF t=length(t)*"0"THEN t:=""FI ;tEND PROC textnichtnull;TEXT PROC jgstaufber(TEXT CONST jgst):LET erstestellejgst="0", maxsek1=10;INT VAR ijgst:=int(jgst);IF ijgst>=maxsek1THEN jgstELIF ijgst=0 THEN ""ELSE erstestellejgst+text(ijgst)FI END PROC jgstaufber;BOOL PROC eingabenummerisch(TEXT CONST t):INT VAR lv;FOR lvFROM 1UPTO length(t)REP IF pos("0123456789",tSUB lv)=0THEN LEAVE eingabenummerischWITH FALSE FI PER ; TRUE END PROC eingabenummerisch;END PACKET allgemeinegrundfunktionen