diff options
Diffstat (limited to 'app/schulis/2.2.1/src/5.manager')
-rw-r--r-- | app/schulis/2.2.1/src/5.manager | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/app/schulis/2.2.1/src/5.manager b/app/schulis/2.2.1/src/5.manager new file mode 100644 index 0000000..c7fb1e4 --- /dev/null +++ b/app/schulis/2.2.1/src/5.manager @@ -0,0 +1,47 @@ +PACKET statistikmanagerDEFINES statistikmanager:LET statistikdatei= +"STATISTIK.",statistikbasis="STATISTIK.basis",statistikverzeichnis= +"statistik verzeichnis",maxstatistiken=200,maxtheslaenge=80,niltext="", +trenner=" ",stichtag="Stichtag ",keinstichtag=" ";LET ack=0, +fetchcode=11,savecode=12,erasecode=14,continuecode=100;THESAURUS VAR +statliste,statbezeichnungen;TEXT VAR filename;BOUND STRUCT (TEXT name, +writepass,readpass)VAR msg;PROC statmanager(DATASPACE VAR ds,INT CONST order, +phase,TASK CONST ordertask):disablestop;IF order>continuecodeTHEN +yterminaldialogELIF order=fetchcodeTHEN ylisteschickenELIF order=savecode +THEN yeintraghinzufuegenELIF order=erasecodeTHEN yeintragloeschenELSE +freemanager(ds,order,phase,ordertask)FI .yeintraghinzufuegen:IF phase=1THEN +getfilename;freemanager(ds,order,phase,ordertask);ELSE freemanager(ds,order, +phase,ordertask);IF NOT iserrorAND exists(filename)THEN eintragloeschen( +filename);eintraghinzufuegen(filename);FI FI .yeintragloeschen:getfilename; +freemanager(ds,order,phase,ordertask);IF NOT iserrorAND phase<>1AND NOT +exists(filename)THEN eintragloeschen(filename);FI .ylisteschicken:getfilename +;IF filename=statistikverzeichnisTHEN schickedenthesaurusELSE freemanager(ds, +order,phase,ordertask)FI .schickedenthesaurus:forget(ds);ds:=nilspace;BOUND +THESAURUS VAR allestatistiken:=ds;allestatistiken:=statbezeichnungen;send( +ordertask,ack,ds);forget(ds).yterminaldialog:freemanager(ds,order,phase, +ordertask);clearerror;statlisteerstellen.getfilename:msg:=ds;filename:=msg. +name.END PROC statmanager;PROC eintragloeschen(TEXT CONST filename): +enablestop;INT VAR index:=link(statliste,filename);IF index>0AND iststatistik +(filename)THEN delete(statliste,index);delete(statbezeichnungen,index);FI +END PROC eintragloeschen;PROC eintraghinzufuegen(TEXT CONST filename): +disablestop;IF iststatistik(filename)THEN eintragbearbeiten(filename);IF +iserrorTHEN clearerror;forget(filename,quiet);FI ;ELIF NOT (filename= +statistikbasis)THEN forget(filename,quiet);FI .END PROC eintraghinzufuegen; +PROC eintragbearbeiten(TEXT CONST filename):enablestop;FILE VAR f:= +sequentialfile(modify,filename);TEXT VAR eintrag,dateizeile;eintrag:=text(int +(statistiknummer),3);eintragCAT trenner;eintragCAT stichtagtext;eintragCAT +trenner;eintragCAT bezeichnung;insert(statliste,filename);insert( +statbezeichnungen,subtext(eintrag,1,maxtheslaenge)).statistiknummer:subtext( +filename,length(statistikdatei)+1).stichtagtext:toline(f,3);readrecord(f, +dateizeile);IF dateizeile>niltextTHEN stichtag+dateizeileELSE keinstichtagFI +.bezeichnung:toline(f,1);readrecord(f,dateizeile);dateizeile.END PROC +eintragbearbeiten;PROC statlisteerstellen:enablestop;INT VAR index:=0;TEXT +VAR eintrag;statliste:=emptythesaurus;statbezeichnungen:=emptythesaurus;get( +all,eintrag,index);WHILE index>0REP eintraghinzufuegen(eintrag);get(all, +eintrag,index);PER ;END PROC statlisteerstellen;BOOL PROC iststatistik(TEXT +CONST filename):enablestop;TEXT CONST zahltext:=subtext(filename,length( +statistikdatei)+1);INT CONST zahl:=int(zahltext);subtext(filename,1,length( +statistikdatei))=statistikdateiAND zahl>=1AND zahl<=maxstatistikenAND text( +zahl)=zahltext.END PROC iststatistik;PROC statistikmanager:statlisteerstellen +;globalmanager(PROC (DATASPACE VAR ,INT CONST ,INT CONST ,TASK CONST ) +statmanager)END PROC statistikmanager;END PACKET statistikmanager; + |