summaryrefslogtreecommitdiff
path: root/app/schulis-mathematiksystem/1.0/src/mat.umformung
blob: 001c0ca2979ec2b232dcffb5eaf47d4803e00b8f (plain)
1
2
3
PACKETumformungDEFINESinitialisiereausgabedatei,formeum,loescheausgabedatei:LETniltext="",bell="�",beginmark="",endmark="",left="�",right="�",del="�",esc="�",blank=" ",arbeitsfunktionstitel="Arbeitsfunktion",titel1="Ableitung",titel2="Auflösung",titel3="aufgelöste Ableitung";FILE VARufdat;TEXT VARufdatname;INT VARausgabezeilennummer;INT VARfktwahl;PROCinitialisiereausgabedatei:ufdatname:=scratchdateiname;ufdat:=sequentialfile(output,ufdatname);ausgabezeilennummer:=1;fktwahl:=1END PROCinitialisiereausgabedatei;PROCformeum(ABBILDUNG CONSTf):WINDOW VARwt:=window(2,4,77,19);INT VARzeilenoffset:=0,ersteauszugebendespalte,ersteauszugebendezeile,alterwert;BOOL VARtemporaerefktexistiert:=FALSE;ABBILDUNG VARtempfkt;TEXT VARzulaessigeeingaben,ausstieg;bereiteprotokolldateivor;bearbeitedasobjekt;bereiteprotokolldateinach.bereiteprotokolldateivor:ersteauszugebendespalte:=1;ersteauszugebendezeile:=ausgabezeilennummer;output(ufdat);putline(ufdat,arbeitsfunktionstitel);IF NOTformeleditoraktivTHENputline(ufdat,funktionsstring(f));zeilenoffsetINCR3ELSEalterwert:=lines(ufdat);liefereformeleditorformat(ufdat,f);line(ufdat);zeilenoffsetINCR(2+lines(ufdat)-alterwert)END IF;outframe(wt).bearbeitedasobjekt:REPzeigeprotokolldatei;bestimmeaktivitaet;fuehreaktivitaetausEND REP.zeigeprotokolldatei:scroll(wt,ufdatname,1,1,1,ausgabezeilennummer,ersteauszugebendespalte,niltext,ausstieg);footnote(anwendungstext(132)).bestimmeaktivitaet:TEXT VARchar;ROW3TEXT CONSTkommandozeile:=ROW3TEXT:(anwendungstext(230),anwendungstext(231),anwendungstext(232));REPclearbuffer;cursor(3,2);out(kommandozeile(fktwahl));cursor(78,24);inchar(char);IFchar=leftTHENfktwahl:=(fktwahl-2)MOD3+1ELIFchar=rightTHENfktwahl:=fktwahlMOD3+1ELIFchar=escTHENwerteescapesequenzausEND IF END REP.werteescapesequenzaus:zulaessigeeingaben:="?fnwqmd";inchar(ausstieg);SELECTpos(zulaessigeeingaben,ausstieg)OF CASE1:show(formular(10));warte;scroll(wt,ufdatname,1,1,1,ausgabezeilennummer,ersteauszugebendespalte,niltext,ausstieg);footnote(anwendungstext(132))CASE2:betrachtedieausgabedateiCASE3:IFtemporaerefktexistiertTHENbenennedieletztetemporaerefunktion;outframe(wt);scroll(wt,ufdatname,1,1,1,ausgabezeilennummer,ersteauszugebendespalte,niltext,ausstieg);footnote(anwendungstext(132))END IF CASE4:LEAVEbestimmeaktivitaetCASE5,6:loeschetemporaereabbildung(tempfkt);verfahrensende(ausstieg);LEAVEbearbeitedasobjektCASE7:druckversuch(ufdatname);outframe(wt);footnote(anwendungstext(132))END SELECT.betrachtedieausgabedatei:zulaessigeeingaben:="?dwqm";INT VARersterauszugebendersatz:=ausgabezeilennummer;cursor(1,2);out(del);REPfootnote(anwendungstext(133));scroll(wt,ufdatname,1,1,1,ersterauszugebendersatz,ersteauszugebendespalte,zulaessigeeingaben,ausstieg);SELECTpos(zulaessigeeingaben,ausstieg)OF CASE1:show(formular(12));warteCASE2:druckversuch(ufdatname);outframe(wt)CASE3:LEAVEbetrachtedieausgabedateiCASE4,5:IFtemporaerefktexistiertTHENloeschetemporaereabbildung(tempfkt)END IF;verfahrensende(ausstieg);LEAVEbearbeitedasobjektEND SELECT END REP.benennedieletztetemporaerefunktion:TEXT VARvorgesehenername:=niltext;cursor(3,2);out(del);cursor(3,2);out(anwendungstext(172));REPfootnote(anwendungstext(174));cursor(23,2);out(beginmark);out(left);enablestop;editget(vorgesehenername,40,20);disablestop;cursor(43,2);out(endmark);IFvorgesehenername=niltextTHEN LEAVEbenennedieletztetemporaerefunktionEND IF;gibnamen(tempfkt,vorgesehenername);IFiserrorTHENgibmeldung(errormessage+vorgesehenername);clearerrorELSEgibmeldung(anwendungstext(227)+vorgesehenername+anwendungstext(228));temporaerefktexistiert:=FALSE;LEAVEbenennedieletztetemporaerefunktionEND IF END REP.fuehreaktivitaetaus:TEXT VARueberschrift;IFfktwahl<>2THENbestimmeableitungsparameterEND IF;footnote(anwendungstext(166));IFtemporaerefktexistiertTHENloeschetemporaereabbildung(tempfkt)END IF;SELECTfktwahlOF CASE1:ueberschrift:=titel1+ueberschriftrest;tempfkt:=ableitung(f,kompindex,varindex)CASE2:ueberschrift:=titel2;tempfkt:=aufloesung(f)CASE3:ueberschrift:=titel3+
ueberschriftrest;ABBILDUNG VARtemp:=aufloesung(f);tempfkt:=ableitung(temp,kompindex,varindex);loeschetemporaereabbildung(temp)END SELECT;output(ufdat);putline(ufdat,ueberschrift);IFiserrorTHENclearerror;putline(ufdat,errormessage);zeilenoffsetINCR2ELIFformeleditoraktivTHENalterwert:=lines(ufdat);liefereformeleditorformat(ufdat,tempfkt);line(ufdat);temporaerefktexistiert:=TRUE;zeilenoffsetINCR(1+lines(ufdat)-alterwert)ELSEputline(ufdat,funktionsstring(tempfkt));temporaerefktexistiert:=TRUE;zeilenoffsetINCR2END IF.bestimmeableitungsparameter:INT VARkompindex:=1,varindex:=1;BOOL CONSTtermeingabeerforderlich:=laenge(abbildungsterme(f))>1,variableneingabeerforderlich:=(ebene=2)CANDlaenge(abbildungsvariablen(f))>1;TEXT VARueberschriftrest:=niltext,variablenname:=NAMElistenanfang(abbildungsvariablen(f));IFtermeingabeerforderlichCORvariableneingabeerforderlichTHEN IFtermeingabeerforderlichTHENcursor(51,2);out("des Terms")END IF;IFvariableneingabeerforderlichTHENcursor(64,2);out("nach "+text(variablenname,8))END IF;lieswerteein;IFtermeingabeerforderlichTHENueberschriftrestCAT(" des "+text(kompindex)+". Terms")END IF;IFvariableneingabeerforderlichTHENueberschriftrestCAT(" nach "+variablenname)END IF;cursor(51,2);out(del)END IF.lieswerteein:zulaessigeeingaben:="?wqm";footnote(anwendungstext(209));REP IFtermeingabeerforderlichTHENbestimmeterm;werteausstiegausEND IF;IFvariableneingabeerforderlichTHENbestimmevariable;werteausstiegausEND IF END REP.bestimmeterm:TEXT VARtermziffer:=text(kompindex);BOOL VARgueltigerterm;REPcursor(61,2);out("�");enablestop;editget(termziffer,12,2,niltext,zulaessigeeingaben,ausstieg);disablestop;out(endmark);kompindex:=int(termziffer);gueltigerterm:=NOTiserrorCANDkorrektetermbezeichnung;IFgueltigertermTHENcursor(61,2);out(termziffer);LEAVEbestimmetermEND IF;IFiserrorTHENclearerrorEND IF;out(bell)UNTILpos(zulaessigeeingaben,(ausstiegSUB2))<>0END REP.korrektetermbezeichnung:lastconversionokCANDkompindex>0CANDkompindex<=laenge(abbildungsterme(f)).bestimmevariable:BOOL VARgueltigevariable;REPcursor(69,2);out("�");enablestop;editget(variablenname,20,8,niltext,zulaessigeeingaben,ausstieg);disablestop;out(endmark);cursor(69,2);out(text(variablenname,8,1));gueltigevariable:=korrektevariablenbezeichnung;IFgueltigevariableTHENvarindex:=PLATZt;LEAVEbestimmevariableEND IF;out(bell)UNTILpos(zulaessigeeingaben,(ausstiegSUB2))<>0END REP.korrektevariablenbezeichnung:changeall(variablenname,blank,niltext);TERM VARt:=listenposition(abbildungsvariablen(f),variablenname);t<>nil.werteausstiegaus:ausstieg:=ausstiegSUB2;SELECTpos(zulaessigeeingaben,ausstieg)OF CASE1:gibinformationzurparametereingabeCASE2:IFtermeingabeerforderlichCAND NOTgueltigertermTHEN LEAVEwerteausstiegausEND IF;IFvariableneingabeerforderlichCAND NOTgueltigevariableTHEN LEAVEwerteausstiegausEND IF;LEAVElieswerteeinCASE3,4:loeschetemporaereabbildung(tempfkt);verfahrensende(ausstieg);LEAVEbearbeitedasobjektEND SELECT.gibinformationzurparametereingabe:show(formular(11));warte;scroll(wt,ufdatname,1,1,1,ausgabezeilennummer,ersteauszugebendespalte,niltext,ausstieg);footnote(anwendungstext(132)).bereiteprotokolldateinach:output(ufdat);line(ufdat);ausgabezeilennummerINCRzeilenoffsetEND PROCformeum;PROCloescheausgabedatei:forget(ufdatname,quiet)END PROCloescheausgabedatei;END PACKETumformung;