summaryrefslogtreecommitdiff
path: root/app/baisy/2.2.1-schulis/src/manager-S.dos
diff options
context:
space:
mode:
Diffstat (limited to 'app/baisy/2.2.1-schulis/src/manager-S.dos')
-rw-r--r--app/baisy/2.2.1-schulis/src/manager-S.dos67
1 files changed, 67 insertions, 0 deletions
diff --git a/app/baisy/2.2.1-schulis/src/manager-S.dos b/app/baisy/2.2.1-schulis/src/manager-S.dos
new file mode 100644
index 0000000..2bbfc16
--- /dev/null
+++ b/app/baisy/2.2.1-schulis/src/manager-S.dos
@@ -0,0 +1,67 @@
+PACKET dossingleDEFINES /,dos,providedoschannel,archive,reserve,release,save,
+fetch,erase,check,exists,ALL ,SOME ,clear,list,format:LET stdarchivechannel=
+31,mainchannel=1;INT VAR doschannel:=stdarchivechannel;INT VAR fetchsavemodus
+;TYPE DOSTASK =TEXT ;DOSTASK CONST dos:="DOS";OP :=(DOSTASK VAR d,TEXT CONST
+t):CONCR (d):=tEND OP :=;DOSTASK OP /(TEXT CONST text):DOSTASK VAR d;CONCR (d
+):=text;dEND OP /;BOOL PROC isdostask(DOSTASK CONST d):CONCR (d)="DOS"END
+PROC isdostask;PROC providedoschannel(INT CONST channelno):doschannel:=
+channelnoEND PROC providedoschannel;DATASPACE VAR space:=nilspace;forget(
+space);PROC reserve(TEXT CONST string,DOSTASK CONST task):IF isdostask(task)
+THEN fetchsavemodus:=savefetchmode(string);opendosdisk(path(string))ELSE
+errorstop("die angesprochene Task existiert nicht")FI .END PROC reserve;PROC
+archive(TEXT CONST string,DOSTASK CONST task):reserve(string,task)END PROC
+archive;PROC release(DOSTASK CONST task):IF isdostask(task)THEN closedosdisk
+ELSE errorstop("die angesprochene Task existiert nicht")FI .END PROC release;
+PROC fetch(TEXT CONST name,DOSTASK CONST from):IF isdostask(from)THEN
+fetchfromdosdiskELSE errorstop("die angesprochene Task existiert nicht")FI .
+fetchfromdosdisk:IF NOT exists(name)COR overwritepermittedTHEN dofetchFI .
+overwritepermitted:say("eigene Datei """);say(name);yes(
+""" auf der Diskette ueberschreiben").dofetch:lastparam(name);disablestop;
+continue(doschannel);fetch(dosname(name,readmodus),space,fetchsavemodus);
+continue(mainchannel);IF NOT iserrorTHEN forget(name,quiet);copy(space,name)
+FI ;forget(space).END PROC fetch;PROC erase(TEXT CONST name,DOSTASK CONST
+task):IF isdostask(task)THEN doerasedosfileELSE errorstop(
+"die angesprochene Task existiert nicht")FI .doerasedosfile:IF NOT exists(
+name,/"DOS")THEN errorstop("die Datei """+name+""" gibt es nicht")ELIF yes(
+""""+dosname(name,readmodus)+""" auf Der Diskette loeschen")THEN disablestop;
+continue(doschannel);erasedosfile(dosname(name,readmodus));continue(
+mainchannel)FI .END PROC erase;PROC save(TEXT CONST name,DOSTASK CONST task):
+IF isdostask(task)THEN savetodosdiskELSE errorstop(
+"die angesprochene Task existiert nicht")FI .savetodosdisk:TEXT CONST
+savefilename:=dosname(name,writemodus);disablestop;continue(doschannel);IF
+NOT dosfileexists(savefilename)COR overwritepermittedTHEN IF dosfileexists(
+savefilename)THEN erasedosfile(savefilename)FI ;save(savefilename,old(name),
+fetchsavemodus);FI ;continue(mainchannel).overwritepermitted:continue(
+mainchannel);BOOL CONST result:=yes(""""+savefilename+
+""" auf der Diskette ueberschreiben");continue(doschannel);result.END PROC
+save;PROC check(TEXT CONST name,DOSTASK CONST from):IF isdostask(from)THEN
+disablestop;continue(doschannel);checkfile(dosname(name,readmodus));continue(
+mainchannel)ELSE errorstop("die angesprochene Task existiert nicht")FI .END
+PROC check;BOOL PROC exists(TEXT CONST name,DOSTASK CONST task):IF isdostask(
+task)THEN disablestop;continue(doschannel);BOOL VAR dummy:=dosfileexists(
+dosname(name,readmodus));continue(mainchannel);enablestop;dummyELSE errorstop
+("die angesprochene Task existiert nicht");FALSE FI .END PROC exists;PROC
+list(DOSTASK CONST from):forget(space);space:=nilspace;FILE VAR listfile:=
+sequentialfile(output,space);list(listfile,from);modify(listfile);show(
+listfile);forget(space).ENDPROC list;PROC list(FILE VAR listfile,DOSTASK
+CONST from):IF isdostask(from)THEN listdosdiskELSE errorstop(
+"die angesprochene Task existiert nicht")FI .listdosdisk:disablestop;continue
+(doschannel);doslist(space);continue(mainchannel);enablestop;output(listfile)
+;FILE VAR listsource:=sequentialfile(output,space);TEXT VAR line;WHILE NOT
+eof(listsource)REP getline(listsource,line);putline(listfile,line)PER .END
+PROC list;THESAURUS OP ALL (DOSTASK CONST task):IF isdostask(task)THEN
+disablestop;continue(doschannel);THESAURUS VAR dummy:=alldosfiles;continue(
+mainchannel);enablestop;dummyELSE errorstop(
+"die angesprochene Task existiert nicht");emptythesaurusFI .END OP ALL ;
+THESAURUS OP SOME (DOSTASK CONST task):IF isdostask(task)THEN disablestop;
+continue(doschannel);THESAURUS VAR dummy:=alldosfiles;continue(mainchannel);
+enablestop;SOME dummyELSE errorstop("die angesprochene Task existiert nicht")
+;emptythesaurusFI .END OP SOME ;PROC clear(DOSTASK CONST task):IF isdostask(
+task)THEN cleardiskELSE errorstop("die angesprochene Task existiert nicht")
+FI .cleardisk:disablestop;IF yes("Diskette loeschen")THEN continue(doschannel
+);cleardosdisk;continue(mainchannel)FI .END PROC clear;PROC format(INT CONST
+formatcode,DOSTASK CONST task):IF isdostask(task)THEN formatdiskELSE
+errorstop("die angesprochene Task existiert nicht")FI .formatdisk:disablestop
+;IF yes("Diskette formatieren")THEN continue(doschannel);formatdosdisk(
+formatcode);continue(mainchannel)FI .END PROC format;END PACKET dossingle;
+