PACKETlssimselDEFINESmodellnamenderbank,startoperationen,initbankmenu,initmodellmenu,deactivatemodellfkt,bankenauflisten,initialisierebank,ladebanken,sicherebanken,loeschebanken,modelleauflisten,bankzumarbeitenwaehlen,modellwaehlen,modellbearbeiten,modellerzeugen,modellveraendern,wirkungsdiagrammerzeugen,modellkopieren,modellloeschen,modellinformationen:LETstandardkanal=1;WINDOW VARfsingle:=grossesrahmenfenster;WINDOW VARfshow:=scrollfenster;LETsinglesp1=1,zl1=4,singlebr=78,hoe=19,scrollzeile=3;LETmodellbanktyp=1199,typnrwdausfuehrbar=1207,letztemenuwindowzeile=19,erstezeile=3,erstespalte=1,scrollbreite=0,ls=TRUE,negativemld=FALSE,modellbankdialog=2,ok=0,simulationneustarten=10,floppyname="simselmodelle",return="
",abbruch="m",showverlasszeichen="m",nichtdefiniert="",stleistefileverlassen=28,fktbankinitial=1,fktbankladen=2,fktbanksichern=3,fktbankloeschen=4,fktbankinhaltzeigen=7,fktbankwaehlen=1,fktmodellbearbeiten=3,fktmodellerfassen=4,fktwirkdgerfassen=5,fktmodellaendern=6,fktmodellkopieren=7,fktmodellloeschen=8,fktmodelleauflisten=10,fktmodellinfos=12;LETbtueberschriftloeschen=1,btbanknameneingeben=2,btbankengeloescht=4,btkeinebankzumarbeiten=6,btkeinebankenenthalten=7,btkeingueltigerbankname=8,btbankeingerichtet=9,btkeinebankgeloescht=10,btkeinebankgewaehlt=11,btkeinmodellinbank=12,btbankgewaehlt=13,btbittemodellbankdiskette=14,btwartenformatieren=16,btbittedisketteeinlegen=18,btaufdiskueberschreiben=19,btbankenschreiben=20,btdiskettevoll=21,btbankgesichert=22,btsicherungabgebrochen=23,btwartenbeisichern=24,btintaskueberschreiben=25,btnichtueberschriebenladen=26,btwartenbeipruefen=27,btarchivnichtfrei=28,btkannnichtgesichert=29,btbankenladen=30,btwartenbeiladen=31,btmodellveraendertabgelegt=32,btkannnichtgeladen=33,btladenfehlerhaft=34,btbankgeladen=35,btkeinmodellgewaehlt=36,btkeinmodellgeloescht=37,btmodellgeloescht=38,btmodellnichtabgelegt=39,btmodellabgelegt=40,btsimulationbeendet=41,btmodellunveraendertabgelegt=42,btfragemodellloeschen=43,btwartenallgemein=44,btmodellnichtablauffaehig1=45,btmodellnichtablauffaehig2=46,btmodellnichtablauffaehig3=47,btmodellnichtablauffaehig4=48,btmodellnichtablauffaehig5=49,btmodellablauffaehig=105,btmodell=106,btmodellverzeichnis=50,btfrageloeschen=51,btbankexistiert=52,btdateiexistiert=104,btbanknamezulang=53,btmodellbankenverzeichnis=54,btnichtueberschriebensichern=55,btbanknichtgeladen=56,btueberschriftsicherungsaltn=58,btsicherungsalternativen=59,btsimulationunmoeglich=63,bteinrichtenabgebrochen=66,btbitte1bankwaehlen=67,btbittemodellwaehlen=68,btdisketteeinlundweiter=71,btverzeichnisaufarchiv=72,btbittegewuenschtebanken=73,btladevorgangabgebrochen=74,btformatwahlueberschrift=75,btformatwahlbeschreibung=76,btformatwahlbuchstaben=77,btkeinformatgewaehlt=78,btbankevtgeloescht1=79,btbankevtgeloescht2=80,btbankenimsystemwaehlen=81,btbankenankreuzensichern=82,btbankenankreuzenloeschen=83,btbankloeschenabgebrochen=84,btmodellbankvolldgl=85,btmodellbankvollwd=86,maxmodelle=40,maxdglmodelle=20,maxwdmodelle=20,maxnamenlaengeselbsterfasstebank=40,maxmusslaengebankname=50;LETcleararchiv=1,allarchiv=2,schreiben=3,loeschen=4,ladenhauptds=5,laden=6,formatarchiv=7;LETmenuformatieren=2,menuclear=3,menusichern=1,menusichernabbrechen=5;LETmodellcodeds=" code info ds",originalkurve=" originalkurve ds",vergleichskurve=" vergleichskurve ds";INT CONSTexistiertnicht:=-1,nichtempfangsbereit:=-2;INT VARi,anzahldermodelle:=0,anzahlbankenintask:=0;THESAURUS VARbankenintask;WINDOW VARaktuelleswindow;BOOL VARsubmenuvorprozedurausfuehren:=FALSE,submenuaufgeklappt:=FALSE;TEXT VARletztebank:="";PROCstartoperationen:texteankoppeln;tagsankoppeln;letztebank:="";submenuaufgeklappt:=FALSE;submenuvorprozedurausfuehren:=TRUE;initmodellmenu;submenuaufgeklappt:=TRUE;submenuvorprozedurausfuehren:=FALSE;END PROCstartoperationen;PROCinitmodellmenu:IFsubmenuvorprozedurausfuehrenTHENloescheaktuellemeldung;taskstatusbzgbanken;letztebank:="";activatemodellfkt;FI;IF NOTbankintaskANDsubmenuaufgeklapptTHENzeigemeldung(
anwendungstext(btkeinebankzumarbeiten),negativemld,modellbankdialog)FI;submenuvorprozedurausfuehren:=TRUE END PROCinitmodellmenu;PROCinitbankmenu:loescheaktuellemeldung;activatebankfktEND PROCinitbankmenu;PROCactivatemodellfkt:INT VARveraenderbare,ablauffaehige;IFbankintaskTHENactivate(fktbankwaehlen);ELSEdeactivate(fktbankwaehlen);FI;IFletztebank=""THENdeactivatemodellfkt;ELSEactivaterestlichefkt;FI;.activaterestlichefkt:listedermodelle(veraenderbare,ablauffaehige);activate(fktmodelleauflisten);IFmodellbankvolldglTHENdeactivate(fktmodellerfassen)ELSEactivate(fktmodellerfassen);FI;IFmodellbankvollwdTHENdeactivate(fktwirkdgerfassen);ELSEactivate(fktwirkdgerfassen);FI;IFanzahldglmodelle+anzahlwdmodelle>=1THENactivate(fktmodellinfos);ELSEdeactivate(fktmodellinfos);FI;IFablauffaehige>=1THENactivate(fktmodellbearbeiten);ELSEdeactivate(fktmodellbearbeiten);FI;IFveraenderbare>=1THENactivate(fktmodellaendern);activate(fktmodellloeschen);ELSEdeactivate(fktmodellaendern);deactivate(fktmodellloeschen);FI;IFveraenderbare>=1CAND(NOTmodellbankvoll)THENactivate(fktmodellkopieren);ELSEdeactivate(fktmodellkopieren);FI;END PROCactivatemodellfkt;PROCdeactivatemodellfkt:deactivate(fktmodellbearbeiten);deactivate(fktmodellerfassen);deactivate(fktwirkdgerfassen);deactivate(fktmodellaendern);deactivate(fktmodellkopieren);deactivate(fktmodellloeschen);deactivate(fktmodelleauflisten);deactivate(fktmodellinfos);deactivate(fktmodellloeschen);END PROCdeactivatemodellfkt;PROCactivatebankfkt:IFbankintaskTHENactivate(fktbanksichern);activate(fktbankloeschen);activate(fktbankinhaltzeigen);ELSEdeactivate(fktbanksichern);deactivate(fktbankloeschen);deactivate(fktbankinhaltzeigen);FI;activate(fktbankinitial);activate(fktbankladen);END PROCactivatebankfkt;PROCinitialisierebank:TEXT VARbankname:="";BOOL VARnameok:=FALSE;loescheaktuellemeldung;liesneuennamenein;kontrolliereneuennamen;richteggfbankein;.liesneuennamenein:bankname:=menuanswer(anwendungstext(btbanknameneingeben)+((10+maxnamenlaengeselbsterfasstebank-length(anwendungstext(btbanknameneingeben)))*" "),"",5);.kontrolliereneuennamen:IFlsexitkey=abbruchTHENzeigemeldung(anwendungstext(bteinrichtenabgebrochen),negativemld,modellbankdialog);LEAVEinitialisierebankELIFcompress(bankname)=""THENzeigemeldung(anwendungstext(btkeingueltigerbankname),negativemld,modellbankdialog);LEAVEinitialisierebankELIFlength(bankname)>maxnamenlaengeselbsterfasstebankTHENzeigemeldung(anwendungstext(btbanknamezulang),negativemld,modellbankdialog)ELSE IFexists(bankname)THEN IFtype(old(bankname))=modellbanktypTHENzeigemeldung(anwendungstext(btbankexistiert),negativemld,modellbankdialog)ELSEzeigemeldung(anwendungstext(btdateiexistiert),negativemld,modellbankdialog)FI ELSEnameok:=TRUE;FI;FI;.richteggfbankein:IFnameokTHENletztebank:=bankname;neuebank(letztebank);zeigemeldung(anwendungstext(btbankeingerichtet),NOTnegativemld,modellbankdialog);taskstatusbzgbanken;activatebankfktFI.END PROCinitialisierebank;PROCladebanken:THESAURUS VARausgewaehlte,archivliste,inhaltderbank;TEXT VARfehlertext:="",bankname;BOOL VARerfolgreich:=FALSE,ladenok;INT VARbanknr,modellnr,currentx,currenty;loescheaktuellemeldung;erstellelistederbankenaufarchiv;modellbankenwaehlen(ausgewaehlte,anwendungstext(btverzeichnisaufarchiv),anwendungstext(btbittegewuenschtebanken),TRUE);IFnotempty(ausgewaehlte)THENladediegewaehltenELSEzeigemeldung(anwendungstext(btladevorgangabgebrochen),negativemld,modellbankdialog);oldfootnote;refreshsubmenu;FI;.erstellelistederbankenaufarchiv:menuinfo(anwendungstext(btdisketteeinlundweiter),5);archivanmelden(fehlertext);IFarchivnichtfreiTHENzeigemeldung(fehlertext,negativemld,modellbankdialog);refreshsubmenu;leaveladebanken;ELSEfootnote(anwendungstext(btwartenbeipruefen));archivoperation(allarchiv,"",archivliste,erfolgreich);IF NOTerfolgreichTHENzeigemeldung(anwendungstext(btbittemodellbankdiskette),negativemld,modellbankdialog);refreshsubmenu;leaveladebanken;ELSEsortierebankenausarchivlisteheraus;FI;FI;.sortierebankenausarchivlisteheraus:
banknr:=0;ausgewaehlte:=emptythesaurus;get(archivliste,bankname,banknr);WHILEbankname<>""REP IFlength(bankname)<=maxmusslaengebanknameCANDdskeinmodelldatenraum(bankname)THENinsert(ausgewaehlte,bankname);FI;get(archivliste,bankname,banknr)PER.bildschirmleeren:showmenuwindow.ladediegewaehlten:bildschirmleeren;bildeschnittmengetaskarchiv;IFbankendoppeltTHENfragewelcheueberschreibenFI;ladelistebearbeiten.bildeschnittmengetaskarchiv:THESAURUS VARschnittmenge:=bankenintask;schnittmenge:=schnittmenge/ausgewaehlte;.bankendoppelt:notempty(schnittmenge).fragewelcheueberschreiben:menuwindowcursor(2,2);menuwindowout(anwendungstext(btintaskueberschreiben));menuwindowline(2);banknr:=0;get(schnittmenge,bankname,banknr);WHILEbankname<>""REP IFmenuwindowno(" "+code(34)+bankname+code(34)+" ")THENausgewaehlte:=ausgewaehlte-bankname;FI;get(schnittmenge,bankname,banknr);PER;menuwindowline(2);IFkeinezuueberschreibendeTHENloescheaktuellesfenster;zeigemeldung(anwendungstext(btnichtueberschriebenladen),negativemld,modellbankdialog);LEAVEladebanken;ELSEmenuwindowpage;FI;.keinezuueberschreibende:NOTnotempty(ausgewaehlte).archivnichtfrei:fehlertext<>"".ladelistebearbeiten:ueberschriftfuergeladenebanken;archivanmelden(fehlertext);IFarchivnichtfreiTHENloescheaktuellesfenster;zeigemeldung(fehlertext,negativemld,modellbankdialog);LEAVEladebanken;ELSEladenok:=TRUE;banknr:=0;get(ausgewaehlte,bankname,banknr);WHILEbankenzuladenCANDladenokREPladenaechstebank;get(ausgewaehlte,bankname,banknr);PER;ladenauswerten;FI;.bankenzuladen:banknr>0.ladenaechstebank:menuwindowout("--> "+bankname);getmenuwindowcursor(currentx,currenty);archivoperation(ladenhauptds,bankname,erfolgreich);IFerfolgreichTHEN IFtype(old(bankname))=modellbanktypTHENstelledatenraeumederbankzusammen;archivoperation(laden,"",inhaltderbank,erfolgreich);IFerfolgreichTHENmeldungeinebankgeladenFI;ELSEforget(bankname,quiet);meldungbanknichtgeladen;FI;FI;ladenok:=erfolgreich;.stelledatenraeumederbankzusammen:kopplean(bankname);inhaltderbank:=emptythesaurus;FORmodellnrFROM1UPTOanzahldglmodelleREPkopplean(modellnr);IFarchivlisteCONTAINSmodelldatenraumTHENinsert(inhaltderbank,modelldatenraum);FI;IFarchivlisteCONTAINSvorgabekurveTHENinsert(inhaltderbank,vorgabekurve);FI;IFarchivlisteCONTAINSvorgabevergleichskurveTHENinsert(inhaltderbank,vorgabevergleichskurve);FI;PER;inhaltderbank:=inhaltderbank+wddsnamen.ladenauswerten:IFladenokTHENloeschewartehinweis;menuwindowcursor(1,currenty);clearbuffer;taskstatusbzgbanken;menuwindowstop;activatebankfkt;loescheaktuellesfenster;ELSEloeschewartehinweis;menuwindowcursor(1,currenty);menuwindowout(" ");currentx:=7;currentyINCR1;menuwindowcursor(currentx,currenty);menuwindowout(anwendungstext(btkannnichtgeladen));clearbuffer;menuwindowstop;loescheaktuellesfenster;zeigemeldung(anwendungstext(btladenfehlerhaft),negativemld,modellbankdialog);FI;LEAVEladebanken;.ueberschriftfuergeladenebanken:menuwindowcursor(1,1);menuwindowout(menuwindowcenter(anwendungstext(btbankenladen)));menuwindowcursor(1,letztemenuwindowzeile);menuwindowout(anwendungstext(btwartenbeiladen));menuwindowcursor(1,3);.meldungeinebankgeladen:menuwindowcursor(1,currenty);menuwindowout(" ");menuwindowcursor(currentx,currenty);menuwindowout(anwendungstext(btbankgeladen));menuwindowline;.meldungbanknichtgeladen:menuwindowcursor(1,currenty);menuwindowout(" ");currentx:=7;currentyINCR1;menuwindowcursor(currentx,currenty);menuwindowout(anwendungstext(btbanknichtgeladen));menuwindowline;.loeschewartehinweis:menuwindowcursor(1,letztemenuwindowzeile);menuwindowout(71*" ");.leaveladebanken:oldfootnote;LEAVEladebanken;.END PROCladebanken;PROCloeschebanken:BOOL VARmindestenseinegeloescht:=FALSE;INT VARz;THESAURUS VARauswahlbanken:=bankenintask;loescheaktuellemeldung;modellbankenwaehlen(auswahlbanken,anwendungstext(btbankenimsystemwaehlen),anwendungstext(btbankenankreuzenloeschen),TRUE);IFnotempty(auswahlbanken)THENloeschegewaehltebanken;ELSEzeigemeldung(anwendungstext(btbankloeschenabgebrochen),negativemld,
modellbankdialog);refreshsubmenu;FI;oldfootnote;.loeschegewaehltebanken:showmenuwindow;menuwindowout(menuwindowcenter(invers(anwendungstext(btueberschriftloeschen))));menuwindowline(2);loeschederreihenach;zeigeabschlusskommentar;.loeschederreihenach:FORzFROM1UPTOhighestentry(auswahlbanken)REP IFname(auswahlbanken,z)<>""ANDexists(name(auswahlbanken,z))ANDmenuwindowyes(" "+code(34)+name(auswahlbanken,z)+code(34)+" "+anwendungstext(btfrageloeschen))THENmindestenseinegeloescht:=TRUE;loesche(name(auswahlbanken,z));FI;PER.zeigeabschlusskommentar:loescheaktuellesfenster;IFmindestenseinegeloeschtTHENtaskstatusbzgbanken;activatebankfkt;zeigemeldung(anwendungstext(btbankengeloescht),NOTnegativemld,modellbankdialog);refreshsubmenu;ELSEzeigemeldung(anwendungstext(btkeinebankgeloescht),negativemld,modellbankdialog);FI.END PROCloeschebanken;PROCsicherebanken:TEXT VARfehlertext:="",bankname;BOOL VARerfolgreich:=FALSE,sichernok;INT VARbanknr,modellnr,format:=0,currentx,currenty;THESAURUS VARausgewaehlte:=bankenintask,archivliste,inhaltderbank;loescheaktuellemeldung;modellbankenwaehlen(ausgewaehlte,anwendungstext(btbankenimsystemwaehlen),anwendungstext(btbankenankreuzensichern),TRUE);IFnotempty(ausgewaehlte)THENsicherediegewaehltenELSErefreshsubmenu;zeigemeldung(anwendungstext(btsicherungabgebrochen),negativemld,modellbankdialog);leavesicherebanken;FI.sicherediegewaehlten:REPkernvonsichernPER.kernvonsichern:WINDOW VARfenster:=window(4,4,75,18);TEXT CONSTinfo:=anwendungstext(btueberschriftsicherungsaltn)+return,liste:=anwendungstext(btsicherungsalternativen),tasten:=" - ";INT VARauswahl;auswahl:=boxalternative(fenster,info,liste,tasten,1,FALSE)MOD100;loescheaktuellemeldung;IFauswahl=menusichernabbrechenTHENrefreshsubmenu;zeigemeldung(anwendungstext(btsicherungabgebrochen),negativemld,modellbankdialog);leavesicherebanken;ELSE IFauswahl=menuformatierenTHENformatierearchiv;ELIFauswahl=menuclearTHENloeschearchiv;FI;startesicherung;FI;.loeschearchiv:footnote(anwendungstext(btwartenallgemein));archivanmelden(fehlertext);IFarchivnichtfreiTHENzeigemeldung(fehlertext,negativemld,modellbankdialog);refreshsubmenu;leavesicherebanken;ELSEarchivoperation(cleararchiv,"",erfolgreich);oldfootnote;IF NOTerfolgreichTHENzeigemeldung(anwendungstext(btbittedisketteeinlegen),negativemld,modellbankdialog);reentersichern;FI;FI.formatierearchiv:footnote(anwendungstext(btwartenallgemein));archivanmelden(fehlertext);IFarchivnichtfreiTHENzeigemeldung(fehlertext,negativemld,modellbankdialog);refreshsubmenu;leavesicherebanken;ELSEwaehleformataus;IF NOTformatausgewaehltTHENzeigemeldung(anwendungstext(btkeinformatgewaehlt),negativemld,modellbankdialog);refreshsubmenu;leavesicherebanken;ELSEfootnote(anwendungstext(btwartenformatieren));archivoperation(formatarchiv,text(format),erfolgreich);IF NOTerfolgreichTHENoldfootnote;zeigemeldung(anwendungstext(btbittedisketteeinlegen),negativemld,modellbankdialog);reentersichern;FI FI FI.waehleformataus:cursor(1,4);out("�");format:=boxalternative(fenster,anwendungstext(btformatwahlueberschrift),anwendungstext(btformatwahlbeschreibung),anwendungstext(btformatwahlbuchstaben),5,FALSE)MOD100.formatausgewaehlt:format<>5.startesicherung:archivanmelden(fehlertext);IFarchivnichtfreiTHENrefreshsubmenu;zeigemeldung(fehlertext,negativemld,modellbankdialog);leavesicherebanken;ELSElistedesarchivserstellen;IF NOTerfolgreichTHENloescheaktuellesfenster;IFauswahl=menusichernTHENzeigemeldung(anwendungstext(btbittemodellbankdiskette),negativemld,modellbankdialog);ELSEzeigemeldung(anwendungstext(btbittedisketteeinlegen),negativemld,modellbankdialog);FI;reentersichern;ELSEerstellesicherungsliste;FI;FI;.listedesarchivserstellen:bildschirmleeren;menuwindowcursor(2,letztemenuwindowzeile);menuwindowout(anwendungstext(btwartenbeipruefen));archivoperation(allarchiv,"",archivliste,erfolgreich);.erstellesicherungsliste:bildeschnittmenge;IFbankendoppeltTHENfragewelcheueberschreiben;FI;sicherungslistebearbeiten;.bildschirmleeren:showmenuwindow;.bildeschnittmenge:
THESAURUS VARschnittmenge:=archivliste/ausgewaehlte;.bankendoppelt:notempty(schnittmenge).fragewelcheueberschreiben:loeschewartehinweis;menuwindowcursor(2,2);menuwindowout(anwendungstext(btaufdiskueberschreiben));menuwindowline(2);banknr:=0;WHILEbanknr<highestentry(schnittmenge)REPget(schnittmenge,bankname,banknr);IFmenuwindowno(" "+code(34)+bankname+code(34)+" ")THENausgewaehlte:=ausgewaehlte-bankname;FI PER;menuwindowline(2);IFkeinezuueberschreibendeTHENloescheaktuellesfenster;zeigemeldung(anwendungstext(btnichtueberschriebensichern),negativemld,modellbankdialog);LEAVEsicherebanken;ELSEmenuwindowpage;FI;.keinezuueberschreibende:NOTnotempty(ausgewaehlte).archivnichtfrei:fehlertext<>"".sicherungslistebearbeiten:ueberschriftfuergesichertebanken;archivanmelden(fehlertext);IFarchivnichtfreiTHENloescheaktuellesfenster;zeigemeldung(fehlertext,negativemld,modellbankdialog);LEAVEsicherebanken;ELSEsichernok:=TRUE;banknr:=0;WHILEbankenzusichernCANDsichernokREPget(ausgewaehlte,bankname,banknr);sicherenaechstebank;PER;sichernauswerten;FI;.bankenzusichern:banknr<highestentry(ausgewaehlte).sicherenaechstebank:stelledatenraeumederbankzusammen;menuwindowout("--> "+bankname);getmenuwindowcursor(currentx,currenty);archivoperation(schreiben,"",inhaltderbank,erfolgreich);IFerfolgreichTHENmeldungeinebankgesichertFI;sichernok:=erfolgreich;.stelledatenraeumederbankzusammen:kopplean(bankname);inhaltderbank:=emptythesaurus;insert(inhaltderbank,bankname);FORmodellnrFROM1UPTOanzahldglmodelleREPkopplean(modellnr);IFexists(modelldatenraum)THENinsert(inhaltderbank,modelldatenraum);FI;IFexists(vorgabekurve)THENinsert(inhaltderbank,vorgabekurve);FI;IFexists(vorgabevergleichskurve)THENinsert(inhaltderbank,vorgabevergleichskurve);FI;PER;inhaltderbank:=inhaltderbank+wddsnamen.sichernauswerten:IFsichernokTHENloeschewartehinweis;menuwindowcursor(1,currenty);clearbuffer;menuwindowstop;loescheaktuellesfenster;ELSEloescheggfdatenraeume;loeschewartehinweis;menuwindowcursor(1,currenty);menuwindowout(" ");currentx:=7;currentyINCR1;menuwindowcursor(currentx,currenty);menuwindowout(anwendungstext(btkannnichtgesichert));IFbankendoppeltTHENmenuwindowcursor(3,currenty+2);menuwindowout(anwendungstext(btbankevtgeloescht1));menuwindowcursor(3,currenty+3);menuwindowout(anwendungstext(btbankevtgeloescht2));FI;clearbuffer;menuwindowstop;loescheaktuellesfenster;zeigemeldung(anwendungstext(btdiskettevoll),negativemld,modellbankdialog);FI;LEAVEsicherebanken;.ueberschriftfuergesichertebanken:menuwindowcursor(1,1);menuwindowout(menuwindowcenter(anwendungstext(btbankenschreiben)));menuwindowcursor(1,letztemenuwindowzeile);menuwindowout(anwendungstext(btwartenbeisichern));menuwindowcursor(1,3);.meldungeinebankgesichert:menuwindowcursor(1,currenty);menuwindowout(" ");menuwindowcursor(currentx,currenty);menuwindowout(anwendungstext(btbankgesichert));menuwindowline;.loescheggfdatenraeume:inhaltderbank:=(inhaltderbank-remainder)+(remainder/archivliste);IFnotempty(inhaltderbank)THENarchivoperation(loeschen,"",inhaltderbank,erfolgreich);IF NOTerfolgreichTHENloescheaktuellesfenster;zeigemeldung(anwendungstext(btbittedisketteeinlegen),negativemld,modellbankdialog);LEAVEsicherebanken;FI;FI;.leavesicherebanken:oldfootnote;LEAVEsicherebanken;.reentersichern:LEAVEkernvonsichern.END PROCsicherebanken;PROCmodellbankenwaehlen(THESAURUS VARgewaehlt,TEXT CONSTt1,t2,BOOL CONSTbildrekonstruieren):waehlebankenaus;.waehlebankenaus:gewaehlt:=some(singlesp1,zl1,singlebr,hoe,gewaehlt,t1,t2);IFbildrekonstruierenTHENerase(fsingle);FI;.END PROCmodellbankenwaehlen;PROCmodellbankwaehlen(TEXT VARgewaehlt):gewaehlt:="";waehlebankaus;koppleggfbankan;.waehlebankaus:gewaehlt:=one(singlesp1,zl1,singlebr,hoe,bankenintask,anwendungstext(btmodellbankenverzeichnis),anwendungstext(btbitte1bankwaehlen));erase(fsingle).koppleggfbankan:IFcompress(gewaehlt)<>""THENkopplean(gewaehlt);letztebank:=gewaehlt;FI.END PROCmodellbankwaehlen;PROCbankenauflisten:FILE VARbankliste;TEXT VARausstieg:="";INT VARerstersatz1:=3,
erstespalte1:=1;loescheaktuellemeldung;forget(listends);listends:=nilspace;bankliste:=sequentialfile(output,listends);line(bankliste);putline(bankliste,anwendungstext(btmodellbankenverzeichnis));line(bankliste);IFbankintaskTHENbanklisteFILLBYbankenintask;ELSEputline(bankliste,anwendungstext(btkeinebankenenthalten));FI;footnote(steuerleiste(stleistefileverlassen));erase(fsingle);outframe(fsingle);scroll(fshow,bankliste,erstespalte,erstezeile,scrollbreite,erstersatz1,erstespalte1,showverlasszeichen,ausstieg);forget(listends);loescheaktuellesfenster;.END PROCbankenauflisten;DATASPACE VARlistends;PROCmodelleauflisten(BOOL CONSTmitauswahlderbank):ROWmaxmodelleINT VARmodellnummern;FILE VARmodelliste;TEXT VARbankinbearbeitung;TEXT VARausstieg:="";INT VARerstersatz1:=3,erstespalte1:=1;loescheaktuellemeldung;IFmitauswahlderbankTHENmodellbankwaehlen(bankinbearbeitung);ELSEbankinbearbeitung:=letztebank;FI;IFbankinbearbeitung<>""THENletztebank:=bankinbearbeitung;holemodellnamenderbank;zeigemodellnamen;loescheaktuellesfenster;ELSEloescheaktuellesfenster;zeigemeldung(anwendungstext(btkeinebankgewaehlt),NOTnegativemld,modellbankdialog);FI;.holemodellnamenderbank:forget(listends);listends:=nilspace;modelliste:=sequentialfile(output,listends);line(modelliste);putline(modelliste,anwendungstext(btmodellverzeichnis)+evtverkuerzterbankname(letztebank));line(modelliste);modellisteFILLBYmodellnamenderbank(allemodelle,modellnummern,anzahldermodelle);IFanzahldermodelle<=0THENputline(modelliste,anwendungstext(btkeinmodellinbank))FI.zeigemodellnamen:footnote(steuerleiste(stleistefileverlassen));outframe(fsingle);scroll(fshow,modelliste,erstespalte,erstezeile,scrollbreite,erstersatz1,erstespalte1,showverlasszeichen,ausstieg);forget(listends).END PROCmodelleauflisten;PROCbankzumarbeitenwaehlen:TEXT VARbankinbearbeitung:="";loescheaktuellemeldung;modellbankwaehlen(bankinbearbeitung);IFbankinbearbeitung<>""THENzeigemeldung(anwendungstext(btbankgewaehlt),NOTnegativemld,modellbankdialog);activatemodellfkt;refreshsubmenu;ELSErefreshsubmenu;zeigemeldung(anwendungstext(btkeinebankgewaehlt),negativemld,modellbankdialog);FI;oldfootnote;.END PROCbankzumarbeitenwaehlen;PROCmodellwaehlen(INT VARgewaehlt,KRITERIUM CONSTkriterium):ROWmaxmodelleINT VARmodellnummern;TEXT VARgewaehltesmodell;THESAURUS VARmengedermodelle:=emptythesaurus;holemodellnamenderbank;waehlenamenaus.holemodellnamenderbank:mengedermodelle:=modellnamenderbank(kriterium,modellnummern,anzahldermodelle).waehlenamenaus:gewaehltesmodell:=one(singlesp1,zl1,singlebr,hoe,mengedermodelle,anwendungstext(btmodellverzeichnis)+evtverkuerzterbankname(letztebank),anwendungstext(btbittemodellwaehlen));IFcompress(gewaehltesmodell)<>""THENgewaehlt:=modellnummern(link(mengedermodelle,gewaehltesmodell));ELSEloescheaktuellesfenster;gewaehlt:=0FI.END PROCmodellwaehlen;BOOL PROCbankgewaehlt:NOT(letztebank=nichtdefiniert).END PROCbankgewaehlt;PROCmodellbearbeiten:BOUND MODELLDGL VARaktmodell;DATASPACE VARtransportdsp;INT CONSTursprungstask:=standardkanal;INT VARnr,retcode:=0;loescheaktuellemeldung;modellwaehlen(nr,allelauffaehigen);IFnr=0THENzeigemeldung(anwendungstext(btkeinmodellgewaehlt),negativemld,modellbankdialog);LEAVEmodellbearbeitenELSE IFdglmodellTHENsimulieremitdglmodell;ELSEforget(transportdsp);transportdsp:=old(name(wddsnamen,nr-maxdglmodelle));diagrammankoppeln(transportdsp);transformierewirkungsdiagrammundstartesimulation(ls,retcode);forget(transportdsp)FI;FI;continue(ursprungstask);IFokTHENregeneratemenuscreen;zeigemeldung(anwendungstext(btsimulationbeendet),NOTnegativemld,modellbankdialog);ELSEloescheaktuellesfenster;zeigemeldung(anwendungstext(btsimulationunmoeglich),negativemld,modellbankdialog);FI;.dglmodell:nr<=maxdglmodelle.simulieremitdglmodell:REPversendeundbearbeite;UNTILordnungsgemaessbeendetodertasknichtempfangsbereitPER;.ordnungsgemaessbeendetodertasknichtempfangsbereit:retcode<>simulationneustarten.versendeundbearbeite:continue(ursprungstask);IFretcode=simulationneustartenTHEN
regeneratemenuscreen;FI;footnote(anwendungstext(btwartenallgemein));kopplean(nr);retcode:=0;schickemodelldaten;IFokTHENschickeoriginalkurve;FI;IFokTHENschickevergleichskurve;FI;IFokTHENschickegleichungen;IFokTHENstartesimulationFI;FI;.ok:retcode=0.schickemodelldaten:transportdsp:=nilspace;aktmodell:=transportdsp;aktmodell:=modellaktuell(nr);schickeanmanagertask(transportdsp,2,retcode);forget(transportdsp);.schickeoriginalkurve:IFexists(vorgabekurve)THENtransportdsp:=old(vorgabekurve);schickeanmanagertask(transportdsp,3,retcode);forget(transportdsp);FI;.schickevergleichskurve:IFexists(vorgabevergleichskurve)THENtransportdsp:=old(vorgabevergleichskurve);schickeanmanagertask(transportdsp,4,retcode);forget(transportdsp);FI;.schickegleichungen:IFexists(modelldatenraum)THENtransportdsp:=old(modelldatenraum);schickeanmanagertask(transportdsp,5,retcode);forget(transportdsp);ELSEretcode:=99;FI.startesimulation:break(quiet);transportdsp:=nilspace;schickeanmanagertask(transportdsp,6,retcode);END PROCmodellbearbeiten;PROCmodellerzeugen:INT VARreturncode;loescheaktuellemeldung;richteneuesmodellein;.richteneuesmodellein:cursoron;fuegeein(aufgeblaehtername(letztebank),returncode);cursoroff;IF NOT(returncode=ok)THENregeneratemenuscreen;zeigemeldung(anwendungstext(btmodellnichtabgelegt),negativemld,modellbankdialog);ELSEactivatemodellfkt;regeneratemenuscreen;zeigemeldung(anwendungstext(btmodellabgelegt),NOTnegativemld,modellbankdialog);FI;.END PROCmodellerzeugen;PROCwirkungsdiagrammerzeugen:INT VARreturncode;loescheaktuellemeldung;richteneuesmodellein;.richteneuesmodellein:initcellmatrix;cursoron;erfassenamenundwd(aufgeblaehtername(letztebank),0,returncode);cursoroff;IF NOT(returncode=ok)THENregeneratemenuscreen;zeigemeldung(anwendungstext(btmodellnichtabgelegt),negativemld,modellbankdialog);ELSEactivatemodellfkt;regeneratemenuscreen;zeigemeldung(anwendungstext(btmodellabgelegt),NOTnegativemld,modellbankdialog);FI.END PROCwirkungsdiagrammerzeugen;PROCmodellkopieren:INT VARnr,returncode;loescheaktuellemeldung;modellwaehlen(nr,alleaenderbaren);IFnr=0THENzeigemeldung(anwendungstext(btkeinmodellgewaehlt),negativemld,modellbankdialog);ELSEkopiervorgangFI;.kopiervorgang:IFdglmodellTHEN IFmodellbankvolldglTHENloescheaktuellesfenster;zeigemeldung(anwendungstext(btmodellbankvolldgl),negativemld,modellbankdialog);LEAVEmodellkopierenELSEkopplean(nr);cursoron;copy(nr,aufgeblaehtername(letztebank),returncode);cursoroffFI;ELIFwdmodellTHEN IFmodellbankvollwdTHENloescheaktuellesfenster;zeigemeldung(anwendungstext(btmodellbankvollwd),negativemld,modellbankdialog);LEAVEmodellkopierenELSEcursoron;copywd(nr-maxdglmodelle,aufgeblaehtername(letztebank),returncode);cursoroffFI;FI;IF NOT(returncode=ok)THENregeneratemenuscreen;zeigemeldung(anwendungstext(btmodellnichtabgelegt),negativemld,modellbankdialog);ELSEactivatemodellfkt;regeneratemenuscreen;zeigemeldung(anwendungstext(btmodellabgelegt),NOTnegativemld,modellbankdialog);FI.dglmodell:nr<=maxdglmodelle.wdmodell:nr>maxdglmodelle.END PROCmodellkopieren;PROCmodellloeschen:INT VARnr;loescheaktuellemeldung;modellwaehlen(nr,alleaenderbaren);IFnr=0THENzeigemeldung(anwendungstext(btkeinmodellgewaehlt),negativemld,modellbankdialog);ELSEkopplean(nr);loescheaktuellesfenster;IFmenuyes(modellname+anwendungstext(btfragemodellloeschen),5)THENloesche(nr,aufgeblaehtername(letztebank));zeigemeldung(anwendungstext(btmodellgeloescht),NOTnegativemld,modellbankdialog);activatemodellfkt;ELSEzeigemeldung(anwendungstext(btkeinmodellgeloescht),negativemld,modellbankdialog)FI;FI.modellname:IFdglmodellTHENkopplean(nr);modellbezeichnungELSEname(wdmodelle,nr-maxdglmodelle)FI.dglmodell:nr<=maxdglmodelle.END PROCmodellloeschen;PROCmodellveraendern:DATASPACE VARtransportdsp;BOOL VARerfassenok:=FALSE;INT VARnr,returncode:=0;loescheaktuellemeldung;modellwaehlen(nr,alleaenderbaren);IFnr=0THENzeigemeldung(anwendungstext(btkeinmodellgewaehlt),negativemld,modellbankdialog);ELSEcursoron;IFdglmodellTHENmodellerfassung(nr,aufgeblaehtername(letztebank),
erfassenok);IF NOTerfassenokTHENloesche(nr,aufgeblaehtername(letztebank))FI;
ELSEforget(transportdsp);transportdsp:=old(name(wddsnamen,modellindex));diagrammankoppeln(transportdsp);erfassenamenundwd(aufgeblaehtername(letztebank),modellindex,returncode);erfassenok:=(returncode=0);forget(transportdsp)FI;cursoroff;IFerfassenokTHENactivatemodellfkt;regeneratemenuscreen;zeigemeldung(anwendungstext(btmodellveraendertabgelegt),NOTnegativemld,modellbankdialog);ELSEregeneratemenuscreen;zeigemeldung(anwendungstext(btmodellnichtabgelegt),negativemld,modellbankdialog);FI FI.modellindex:nr-maxdglmodelle.dglmodell:nr<=maxdglmodelle.END PROCmodellveraendern;PROCmodellinformationen:DATASPACE VARmodellds;FILE VARmdlinfo;TEXT VARausstieg:="";INT VARerstersatz1:=3,erstespalte1:=1,nr;forget(listends);listends:=nilspace;mdlinfo:=sequentialfile(output,listends);loescheaktuellemeldung;modellwaehlen(nr,allemodelle);IFnr=0THENzeigemeldung(anwendungstext(btkeinmodellgewaehlt),negativemld,modellbankdialog);LEAVEmodellinformationenELIFdglmodellTHENkopplean(nr);putline(mdlinfo,anwendungstext(btmodell)+modellbezeichnung);IF NOTexists(modelldatenraum)THENputline(mdlinfo,modellbezeichnung+":");line(mdlinfo,2);putline(mdlinfo,anwendungstext(btmodellnichtablauffaehig5));ELSEforget(listends);informationstext(mdlinfo);IF NOTcompilierbaregleichungenTHENinfofuerfehlerhaftesmodell(mdlinfo)ELSEinfofuerfehlerfreiesmodell(mdlinfo)FI FI ELIFwdmodellTHENforget(modellds);modellds:=old(name(wddsnamen,modellindex));diagrammankoppeln(modellds);putline(mdlinfo,anwendungstext(btmodell)+wdmodellname);putline(mdlinfo,length(anwendungstext(btmodell)+wdmodellname)*"=");line(mdlinfo);IF NOTwdmodelllauffaehigTHENinfofuerfehlerhaftesmodell(mdlinfo)ELSEinfofuerfehlerfreiesmodell(mdlinfo)FI;line(mdlinfo);modellinfo(mdlinfo);forget(modellds)FI;footnote(steuerleiste(stleistefileverlassen));erase(fsingle);outframe(fsingle);scroll(fshow,mdlinfo,1,scrollzeile,1,erstersatz1,erstespalte1,showverlasszeichen,ausstieg);forget(listends);loescheaktuellesfenster.modellindex:nr-maxdglmodelle.dglmodell:nr<=maxdglmodelle.wdmodell:NOTdglmodell.wdmodelllauffaehig:type(old(name(wddsnamen,nr-maxdglmodelle)))=typnrwdausfuehrbar.wdmodellname:name(wdmodelle,nr-maxdglmodelle).END PROCmodellinformationen;PROCinfofuerfehlerhaftesmodell(FILE VARmdlinfo):putline(mdlinfo,anwendungstext(btmodellnichtablauffaehig1));putline(mdlinfo,anwendungstext(btmodellnichtablauffaehig2));putline(mdlinfo,anwendungstext(btmodellnichtablauffaehig3));putline(mdlinfo,anwendungstext(btmodellnichtablauffaehig4))END PROCinfofuerfehlerhaftesmodell;PROCinfofuerfehlerfreiesmodell(FILE VARmdlinfo):putline(mdlinfo,anwendungstext(btmodellablauffaehig))END PROCinfofuerfehlerfreiesmodell;BOOL PROCbankintask:anzahlbankenintask>0END PROCbankintask;PROCtaskstatusbzgbanken:bankenintask:=infixnamen(all,modellbanktyp);anzahlbankenintask:=highestentry(bankenintask)END PROCtaskstatusbzgbanken;THESAURUS PROCmodellnamenderbank(KRITERIUM CONSTkriterium,ROWmaxmodelleINT VARmodellnummern,INT VARanzahldermodelle):THESAURUS VARbankliste:=emptythesaurus;ROWmaxmodelleTEXT VARmodellnamen;listedermodelle(modellnamen,modellnummern,kriterium,anzahldermodelle);IFanzahldermodelle>0THENschreibenameninverzeichnisFI;bankliste.schreibenameninverzeichnis:FORiFROM1UPTOanzahldermodelleREPinsert(bankliste,modellnamen(i))PER.END PROCmodellnamenderbank;PROCarchivanmelden(TEXT VARarchivfehler):disablestop;archive(floppyname);IFiserrorTHENarchivfehler:=errormessage;clearerror;enablestop;IFlength(archivfehler)<=62THENarchivfehler:=archivfehler;ELSEarchivfehler:=anwendungstext(btarchivnichtfrei);FI;ELSEenablestop;archivfehler:="";FI.END PROCarchivanmelden;PROCarchivoperation(INT CONSToperation,TEXT CONSTdatenraum,BOOL VARmiterfolg):THESAURUS VARarchivinhalt;archivoperation(operation,datenraum,archivinhalt,miterfolg);END PROCarchivoperation;PROCarchivoperation(INT CONSToperation,TEXT CONSTtextparam,THESAURUS VARarchivliste,BOOL VARmiterfolg):disablestop;archive(floppyname);commanddialogue(FALSE);SELECToperationOF CASE1:clear(archive)CASE2:
archivliste:=ALLarchive;CASE3:menuwindowcursor(length(anwendungstext(btwartenbeisichern))+3,letztemenuwindowzeile);save(archivliste,archive);CASE4:menuwindowcursor(length(anwendungstext(btwartenbeisichern))+3,letztemenuwindowzeile);erase(archivliste,archive);CASE5:menuwindowcursor(length(anwendungstext(btwartenbeiladen))+3,letztemenuwindowzeile);fetch(textparam,archive);CASE6:menuwindowcursor(length(anwendungstext(btwartenbeiladen))+3,letztemenuwindowzeile);fetch(archivliste,archive);CASE7:format(int(textparam),archive)END SELECT;IFiserrorTHENclearerror;enablestop;miterfolg:=FALSE;ELSEenablestop;miterfolg:=TRUE;FI;commanddialogue(TRUE);release(archive);.END PROCarchivoperation;BOOL PROCdskeinmodelldatenraum(TEXT CONSTdataspacename):pos(dataspacename,originalkurve)=0CANDpos(dataspacename,vergleichskurve)=0CANDpos(dataspacename,modellcodeds)=0.END PROCdskeinmodelldatenraum;PROCloeschewartehinweis:menuwindowcursor(1,letztemenuwindowzeile);menuwindowout(71*" ");END PROCloeschewartehinweis;PROCloescheaktuellesfenster:aktuelleswindow:=currentmenuwindow;erase(aktuelleswindow);refreshsubmenu;oldfootnote;END PROCloescheaktuellesfenster;TEXT PROCevtverkuerzterbankname(TEXT CONSTbankname):TEXT CONSTbn:=compress(bankname);IFlength(bn)>maxnamenlaengeselbsterfasstebankTHENverkuerzternameELSEbnFI.verkuerztername:IFpos(bn,":")>0THENsubtext(bn,abdoppelpunkt)ELSEsubtext(bn,1,maxnamenlaengeselbsterfasstebank)FI.abdoppelpunkt:pos(bn,":")+2.END PROCevtverkuerzterbankname;TEXT PROCaufgeblaehtername(TEXT CONSTbankname):text(bankname,maxmusslaengebankname).END PROCaufgeblaehtername;END PACKETlssimsel;