From 04e68443040c7abad84d66477e98f93bed701760 Mon Sep 17 00:00:00 2001 From: Lars-Dominik Braun Date: Mon, 4 Feb 2019 13:09:03 +0100 Subject: Initial import --- app/schulis/2.2.1/src/0.ida.data | 170 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 170 insertions(+) create mode 100644 app/schulis/2.2.1/src/0.ida.data (limited to 'app/schulis/2.2.1/src/0.ida.data') diff --git a/app/schulis/2.2.1/src/0.ida.data b/app/schulis/2.2.1/src/0.ida.data new file mode 100644 index 0000000..a9cff8e --- /dev/null +++ b/app/schulis/2.2.1/src/0.ida.data @@ -0,0 +1,170 @@ +PACKET idadataDEFINES putformular,openformular,initformular,getactivformular, +getformtextname,getformularinfo,putformularinfo,getformularname, +getformularindex,getsteuercode,putsteuercode,getdruckaufbereitung, +putdruckaufbereitung,getzeile,putzeile,geteinfuegstellen,puteinfuegstellen, +getzeilenanzahl,putzeilenanzahl,getunterbloecke,putunterbloecke, +getvorzeilennr,putvorzeilennr,getanzahlselfelder,putanzahlselfelder, +getselektion,putselektion,getobjektklasse,putobjektklasse,getleitindex, +putleitindex,getscan,putscan,getanzahlregeln,putanzahlregeln,getregelnummer, +deleteregel,getblockregelnummer,putblockregelnummer,getzugriffsregel, +putzugriffsregel,getanzahlregelfelder,putanzahlregelfelder,getvergleichswert, +putvergleichswert,getblockanzahl,FORMULAR ,openmitloeschen, +setzeidazeichensatz:TEXT VAR idazeichensatz:="";LET maxanw=100,maxblock=11, +maxregel=50,maxobjekt=10,maxfeld=10,maxtext=100,maxsel=200;TYPE FORMULAR = +STRUCT (INFO formularbeschreibung,ROW maxregelREGEL zugriffsregel,INT +anzregeln,ROW maxobjektTEXT objektklassen,ROW maxselSELEKT selektion,INT +anzselfelder,DRUCKFORM druckform);TYPE INFO =STRUCT (TEXT formname, +scanbedingung,INT formindex,leitindex,BOOL formtyp);TYPE REGEL =STRUCT (INT +objektklassennr,regelnummer,indexnr,anzkeyfelder,ROW maxfeldTEXT +vergleichswert);TYPE SELEKT =STRUCT (TEXT selektionsfeld,wert);TYPE BLOCK = +STRUCT (ROW maxtextTEXT zeile,ROW maxtextTEXT einfuegstellen,INT anzzeilen, +zuregelnummer,TEXT unterblock,vorzeilennr);TYPE DRUCKFORM =STRUCT (ROW +maxblockBLOCK block,ROW maxanwSTCODE stcodes,INT anzblock,DRUCK +druckaufbereitung);TYPE STCODE =STRUCT (TEXT steuercode,INT laenge,BOOL +rechtsbuendig,druckvariable);TYPE DRUCK =STRUCT (TEXT schrifttyp,REAL +startlinks,startoben,INT zeilenproseite,REAL zeilenbreite);DATASPACE VAR fds +:=nilspace;BOUND FORMULAR VAR form;INT VAR aktformindex:=0;PROC +setzeidazeichensatz(TEXT CONST schriftart):idazeichensatz:=schriftartEND +PROC setzeidazeichensatz;BOOL VAR loeschenerlaubt:=TRUE ;BOOL PROC +openmitloeschen:loeschenerlaubtENDPROC openmitloeschen;PROC openmitloeschen( +BOOL CONST b):loeschenerlaubt:=bENDPROC openmitloeschen;PROC putformular( +DATASPACE CONST ds):forget(fds);fds:=ds;form:=fds;aktformindex:= +getformularindexENDPROC putformular;PROC openformular(INT CONST index):IF +aktformindex<>indexCAND loeschenerlaubtTHEN letzteformularloeschenFI ; +aktformindex:=index;IF exists(getformdataname)THEN form:=old(getformdataname) +ELSE initformular(index);FI .letzteformularloeschen:forget(getformdataname, +quiet);forget(getformtextname,quiet).ENDPROC openformular;PROC initformular( +INT CONST index):INT VAR i,j;FILE VAR formtext;aktformindex:=index;forget( +getformdataname,quiet);form:=new(getformdataname);putanzahlregeln(0); +putanzahlselfelder(0);putleitindex(0);putscan("");formtext:=sequentialfile( +output,getformtextname);FOR iFROM 1UPTO maxobjektREP putobjektklasse(i,"") +PER ;FOR iFROM 1UPTO maxanwREP putsteuercode(i,"",0,FALSE ,TRUE )PER ;FOR i +FROM 1UPTO maxregelREP FOR jFROM 1UPTO maxfeldREP form.zugriffsregel[i]. +vergleichswert[j]:=""PER PER ;putdruckaufbereitung(idazeichensatz,2.0,2.0,60, +77.0);putformularinfo("",index,TRUE )ENDPROC initformular;INT PROC +getactivformular:aktformindexENDPROC getactivformular;TEXT PROC +getformdataname:"FORMDATA."+text(aktformindex)ENDPROC getformdataname;TEXT +PROC getformtextname:"FORMTEXT."+text(aktformindex)ENDPROC getformtextname; +PROC getsteuercode(INT CONST index,TEXT VAR ausdruck,INT VAR ausglaenge,BOOL +VAR rbuendig,druckvar):IF index<1COR index>maxanwTHEN ausdruck:=""ELSE +ausdruck:=form.druckform.stcodes[index].steuercode;ausglaenge:=form.druckform +.stcodes[index].laenge;rbuendig:=form.druckform.stcodes[index].rechtsbuendig; +druckvar:=form.druckform.stcodes[index].druckvariable;FI ENDPROC +getsteuercode;PROC putsteuercode(INT CONST index,TEXT CONST ausdruck,INT +CONST ausglaenge,BOOL CONST rbuendig,druckvar):form.druckform.stcodes[index]. +steuercode:=ausdruck;form.druckform.stcodes[index].laenge:=ausglaenge;form. +druckform.stcodes[index].rechtsbuendig:=rbuendig;form.druckform.stcodes[index +].druckvariable:=druckvar;ENDPROC putsteuercode;PROC putdruckaufbereitung( +TEXT CONST schriftart,REAL CONST linkerrandlinks,linkerrandoben,INT CONST +zeilenperseite,REAL CONST zeichenperzeile):form.druckform.druckaufbereitung. +schrifttyp:=schriftart;form.druckform.druckaufbereitung.startlinks:= +linkerrandlinks;form.druckform.druckaufbereitung.startoben:=linkerrandoben; +form.druckform.druckaufbereitung.zeilenproseite:=zeilenperseite;form. +druckform.druckaufbereitung.zeilenbreite:=zeichenperzeile;ENDPROC +putdruckaufbereitung;PROC getdruckaufbereitung(TEXT VAR schriftart,REAL VAR +linkerrandlinks,linkerrandoben,INT VAR zeilenperseite,REAL VAR +zeichenperzeile):schriftart:=form.druckform.druckaufbereitung.schrifttyp; +linkerrandlinks:=form.druckform.druckaufbereitung.startlinks;linkerrandoben:= +form.druckform.druckaufbereitung.startoben;zeilenperseite:=form.druckform. +druckaufbereitung.zeilenproseite;zeichenperzeile:=form.druckform. +druckaufbereitung.zeilenbreite;ENDPROC getdruckaufbereitung;TEXT PROC +getzeile(INT CONST blocknr,zeilennr):form.druckform.block[blocknr+1].zeile[ +zeilennr]ENDPROC getzeile;PROC putzeile(INT CONST blocknr,zeilennr,TEXT +CONST textzeile):form.druckform.block[blocknr+1].zeile[zeilennr]:=textzeile; +form.druckform.anzblock:=max(form.druckform.anzblock,blocknr)ENDPROC putzeile +;TEXT PROC geteinfuegstellen(INT CONST blocknr,zeilennr):form.druckform.block +[blocknr+1].einfuegstellen[zeilennr]ENDPROC geteinfuegstellen;PROC +puteinfuegstellen(INT CONST blocknr,zeilennr,TEXT CONST einfueg):form. +druckform.block[blocknr+1].einfuegstellen[zeilennr]:=einfuegENDPROC +puteinfuegstellen;INT PROC getzeilenanzahl(INT CONST blocknr):form.druckform. +block[blocknr+1].anzzeilenENDPROC getzeilenanzahl;PROC putzeilenanzahl(INT +CONST blocknr,zeilennr):form.druckform.block[blocknr+1].anzzeilen:=zeilennr +ENDPROC putzeilenanzahl;INT PROC getblockregelnummer(INT CONST blocknr):form. +druckform.block[blocknr+1].zuregelnummerENDPROC getblockregelnummer;PROC +putblockregelnummer(INT CONST blocknr,regel):form.druckform.block[blocknr+1]. +zuregelnummer:=regelENDPROC putblockregelnummer;INT PROC getblockanzahl:form. +druckform.anzblockENDPROC getblockanzahl;TEXT PROC getunterbloecke(INT CONST +blocknr):form.druckform.block[blocknr+1].unterblockENDPROC getunterbloecke; +PROC putunterbloecke(INT CONST blocknr,TEXT CONST ub):form.druckform.block[ +blocknr+1].unterblock:=ubENDPROC putunterbloecke;TEXT PROC getvorzeilennr( +INT CONST blocknr):form.druckform.block[blocknr+1].vorzeilennrENDPROC +getvorzeilennr;PROC putvorzeilennr(INT CONST blocknr,TEXT CONST zeilenno): +form.druckform.block[blocknr+1].vorzeilennr:=zeilennoENDPROC putvorzeilennr; +TEXT PROC getscan:form.formularbeschreibung.scanbedingungENDPROC getscan; +PROC putscan(TEXT CONST bedingung):form.formularbeschreibung.scanbedingung:= +bedingungENDPROC putscan;TEXT PROC getobjektklasse(INT CONST ix):form. +objektklassen[ix]ENDPROC getobjektklasse;PROC putobjektklasse(INT CONST ix, +TEXT CONST okname):form.objektklassen[ix]:=oknameENDPROC putobjektklasse; +TEXT PROC getformularname:form.formularbeschreibung.formnameENDPROC +getformularname;INT PROC getformularindex:form.formularbeschreibung.formindex +ENDPROC getformularindex;PROC getformularinfo(TEXT VAR name,INT VAR index, +BOOL VAR typ):name:=form.formularbeschreibung.formname;index:=form. +formularbeschreibung.formindex;typ:=form.formularbeschreibung.formtyp; +ENDPROC getformularinfo;PROC putformularinfo(TEXT CONST name,INT CONST index, +BOOL CONST typ):form.formularbeschreibung.formname:=name;form. +formularbeschreibung.formindex:=index;form.formularbeschreibung.formtyp:=typ; +ENDPROC putformularinfo;INT PROC getleitindex:form.formularbeschreibung. +leitindexENDPROC getleitindex;PROC putleitindex(INT CONST neuerindex):form. +formularbeschreibung.leitindex:=neuerindexENDPROC putleitindex;INT PROC +getanzahlregeln:form.anzregelnENDPROC getanzahlregeln;PROC putanzahlregeln( +INT CONST anzahl):form.anzregeln:=anzahlENDPROC putanzahlregeln;PROC +putanzahlselfelder(INT CONST anzahl):form.anzselfelder:=anzahlENDPROC +putanzahlselfelder;INT PROC getanzahlselfelder:form.anzselfelderENDPROC +getanzahlselfelder;OP :=(REGEL VAR left,REGEL CONST right):CONCR (left):= +CONCR (right)ENDOP :=;INT PROC getregelnummer(INT CONST objektklasse,regelnr) +:INT VAR i;FOR iFROM 1UPTO getanzahlregelnREP IF form.zugriffsregel[i]. +objektklassennr=objektklasseCAND form.zugriffsregel[i].regelnummer=regelnr +THEN LEAVE getregelnummerWITH iFI PER ;0ENDPROC getregelnummer;PROC +deleteregel(INT CONST regel):INT VAR i;IF regel<=getanzahlregelnCAND regel>0 +THEN FOR iFROM regelUPTO getanzahlregeln-1REP form.zugriffsregel[i]:=form. +zugriffsregel[i+1]PER ;putanzahlregeln(getanzahlregeln-1)FI ENDPROC +deleteregel;PROC getzugriffsregel(INT CONST nr,INT VAR objekt,regel,index, +anzfelder):objekt:=form.zugriffsregel[nr].objektklassennr;regel:=form. +zugriffsregel[nr].regelnummer;index:=form.zugriffsregel[nr].indexnr;anzfelder +:=form.zugriffsregel[nr].anzkeyfelder;ENDPROC getzugriffsregel;PROC +putzugriffsregel(INT CONST nr,INT CONST objekt,regel,index,anzfelder):form. +anzregeln:=max(nr,form.anzregeln);form.zugriffsregel[nr].objektklassennr:= +objekt;form.zugriffsregel[nr].regelnummer:=regel;form.zugriffsregel[nr]. +indexnr:=index;form.zugriffsregel[nr].anzkeyfelder:=anzfelder;ENDPROC +putzugriffsregel;INT PROC getanzahlregelfelder(INT CONST regelnr):form. +zugriffsregel[regelnr].anzkeyfelderENDPROC getanzahlregelfelder;PROC +putanzahlregelfelder(INT CONST regelnr,anzahl):form.zugriffsregel[regelnr]. +anzkeyfelder:=anzahlENDPROC putanzahlregelfelder;TEXT PROC getvergleichswert( +INT CONST regel,nr):form.zugriffsregel[regel].vergleichswert[nr]ENDPROC +getvergleichswert;PROC putvergleichswert(INT CONST regelnr,TEXT CONST vglwert +):form.zugriffsregel[regelnr].anzkeyfelderINCR 1;form.zugriffsregel[regelnr]. +vergleichswert[form.zugriffsregel[regelnr].anzkeyfelder]:=vglwertENDPROC +putvergleichswert;PROC putselektion(TEXT CONST feldname,vglwert):form. +anzselfelderINCR 1;form.selektion[form.anzselfelder].selektionsfeld:=feldname +;form.selektion[form.anzselfelder].wert:=vglwert;ENDPROC putselektion;PROC +getselektion(INT CONST ix,TEXT VAR feldname,vglwert):feldname:=form.selektion +[ix].selektionsfeld;vglwert:=form.selektion[ix].wert;ENDPROC getselektion; +TEXT PROC getselektion:buildselektionENDPROC getselektion;LET textbegrenzer= +"""",klammerauf="<",klammerzu=">",gleich="=",undoperator=" UND ",operatoren= +"=<>";INT PROC postextende(TEXT CONST ausgabe,INT CONST aktuelleposition): +INT VAR neupos:=aktuelleposition+1;WHILE (ausgabeSUB neupos)<>textbegrenzer +REP neuposINCR 1;IF (ausgabeSUB neupos)=textbegrenzerCAND (ausgabeSUB neupos+ +1)=textbegrenzerTHEN neuposINCR 2;FI ;UNTIL neupos>length(ausgabe)PER ;neupos ++1ENDPROC postextende;INT PROC operatorposition(TEXT VAR ausdruck,INT CONST +abpos):INT VAR p:=abpos;WHILE p<=length(ausdruck)AND pos(operatoren,ausdruck +SUB p)=0REP IF (ausdruckSUB p)=textbegrenzerTHEN insertchar(ausdruck, +klammerauf,p);pINCR 1;p:=postextende(ausdruck,p);insertchar(ausdruck, +klammerzu,p);pINCR 1;ELSE pINCR 1FI ;PER ;IF p>length(ausdruck)THEN 0ELSE p +FI ENDPROC operatorposition;TEXT PROC buildselektion:INT VAR i:=1,oppos, +lastpos;TEXT VAR selausdruck:="",feldname:="",einfacherausdruck:="", +feldausdruck:="";WHILE i<=getanzahlselfelderREP getselektion(i,feldname, +einfacherausdruck);IF einfacherausdruck>""THEN evtlumoperatorergaenzen; +feldausdruck:="";lastpos:=1;oppos:=operatorposition(einfacherausdruck,1); +WHILE oppos>0REP teilausdruckuebernehmen;feldnameneinfuegen;lastpos:=oppos; +opposINCR 1;IF pos(operatoren,einfacherausdruckSUB oppos)>0THEN opposINCR 1 +FI ;oppos:=operatorposition(einfacherausdruck,oppos);PER ;restuebernehmen; +feldausdruckklammern;IF length(selausdruck)>0THEN selausdruckCAT undoperator +FI ;selausdruckCAT feldausdruck;FI ;iINCR 1;PER ;selausdruck. +evtlumoperatorergaenzen:IF pos(operatoren,einfacherausdruckSUB 1)=0THEN +einfacherausdruck:=gleich+einfacherausdruckFI .teilausdruckuebernehmen: +feldausdruckCAT subtext(einfacherausdruck,lastpos,oppos-1).feldnameneinfuegen +:feldausdruck:=feldausdruck+textbegrenzer+feldname+textbegrenzer+" ". +restuebernehmen:feldausdruckCAT subtext(einfacherausdruck,lastpos). +feldausdruckklammern:feldausdruck:="("+feldausdruck+")".ENDPROC +buildselektion;ENDPACKET idadata + -- cgit v1.2.3