IF (zeiger^.Monat = Monat) AND (zeiger^.Tag = Tag) THEN
IF (Occurs(zeiger^.Text,first,"%k",FALSE) # last) AND (zeiger^.Jahr > 0) THEN
IF (zeiger^.Jahr < Jahr) OR ((zeiger^.Jahr = Jahr) AND (zeiger^.Monat < Monat)) OR ((zeiger^.Jahr = Jahr) AND (zeiger^.Monat =Monat) AND (zeiger^.Tag < Tag)) THEN
delete(wurzel,zeiger);
saveflag := TRUE;
ELSE
INC(anz);
Copy(txt,line);
len := specialtext(txt,Tag,Monat,Jahr,Jahr,zeiger^.Text);
END;
ELSE
INC(anz);
Copy(txt,line);
len := specialtext(txt,Tag,Monat,Jahr,Jahr,zeiger^.Text);
END;
IF len > maxx THEN
maxx := len;
END;
zeiger := zeiger^.next;
ELSIF (zeiger^.Monat = Monat) AND (zeiger^.Tag < Tag) THEN
zeiger := zeiger^.next;
ELSIF (zeiger^.Monat > Monat) OR
((zeiger^.Monat = Monat) AND (zeiger^.Tag > Tag)) THEN
zeiger := NIL;
END;
END;
RETURN(anz);
END GetNumberOf;
PROCEDURE GetOutDays(zeiger : point; Tag,Monat : SHORTCARD; Jahr : CARDINAL;
ZeitRaum : CARDINAL; VAR x : SHORTCARD) : SHORTCARD;
VAR
days : CARDINAL;
anz : SHORTCARD;
BEGIN
anz := 0;
days := 0;
zeiger := search(zeiger,Tag,Monat);
WHILE days < ZeitRaum DO
anz := anz + GetNumberOf(zeiger,Tag,Monat,x);
INC(Tag);
IF Tag > maxDays(Monat,Jahr) THEN
Tag := 1;
INC(Monat);
IF Monat > 12 THEN
Monat := 1;
INC(Jahr);
zeiger := wurzel;
END;
END;
INC(days);
END;
RETURN(anz);
END GetOutDays;
PROCEDURE formattext(VAR zeiger : point; VAR text : tstring; Tag,Monat : SHORTCARD;
Jahr : CARDINAL; VAR saveflag : BOOLEAN) : BOOLEAN;
VAR
i,j : INTEGER;
str : ARRAY [1..2] OF CHAR;
err,ofl : BOOLEAN;
len : SHORTCARD;
tx : tstring;
BEGIN
ofl := TRUE;
Copy(text,line);
IF zeiger^.Jahr > 0 THEN
len := specialtext(text,zeiger^.Tag,zeiger^.Monat,zeiger^.Jahr,Jahr,zeiger^.Text);
ELSE
len := specialtext(text,zeiger^.Tag,zeiger^.Monat,Jahr,Jahr,zeiger^.Text);
END;
i := Occurs(text,first,"%",TRUE);
IF i # last THEN
CASE text[i+2] OF
"j" : str := "";
IF zeiger^.Jahr > 0 THEN
j := Jahr-zeiger^.Jahr;
ValToStr(j,FALSE,str,10,2," ",err);
END;
Insert(text,i+2,str); |
"k" : IF tagdiff(zeiger^.Tag,zeiger^.Monat,0,Tag,Monat,0) = 0 THEN
saveflag := TRUE;
END; |
"h" : IF tagdiff(zeiger^.Tag,zeiger^.Monat,0,Tag,Monat,0) # 0 THEN
ofl := FALSE;
END; |
"'" : j := Occurs(text,i+3,"'",TRUE);
IF j # last THEN
CopyPart(tx,text,i+2,j-(i+2));
Delete(text,i+2,j-(i+1));
IF tagdiff(zeiger^.Tag,zeiger^.Monat,0,Tag,Monat,0) = 0 THEN
IF ~SendRexxMsg(port,"REXX",tx) THEN
Concat(text," (ERROR!)");
END;
END;
END;
ELSE
END;
Delete(text,i,2);
END;
RETURN(ofl);
END formattext;
PROCEDURE OutDays(zeiger : point; Tag,Monat : SHORTCARD; Jahr : CARDINAL;