Zum Hauptinhalt springen

Beispiel - Selektionszeitpunkt

Beispiel - Selektionszeitpunkt Überprüfung des Alters einer Selektion

Mit der folgenden Funktion kann überprüft werden, ob eine Selektion älter als ein angegebenes Zeitintervall ist. Als Übergabeparameter werden die Datei, in der die Selektion definiert ist, der Selektionsname und ein Zeitintervall in Sekunden angegeben.

sub RunSelectionAgain
(
aFileNo : int;
aSelName : alpha(20);
aTimeDiff : bigint;
)
: logic;

local
{
tErg : int;
tHdlSel : handle;
tNow : caltime;
tLastExec : caltime;
}

{
tHdlSel # SelOpen();
tErg # tHdlSel->SelRead(aFileNo, 0, aSelName);
tNow->vmSystemTime();
tLastExec->vpBiasMinutes # tNow->vpBiasMinutes;
tLastExec->vpDate # tHdlSel->SelInfoDate(_SelExecuted);
tLastExec->vpTime # tHdlSel->SelInfoTime(_SelExecuted);
tHdlSel->SelClose();
return(CnvBC(tNow) - CnvBC(tLastExec) > aTimeDiff * 10000000\b);
}

In der Funktion wird zunächst die Selektion geöffnet. Hier findet, um das Beispiel nicht zu verkomplizieren, keine Überprüfung statt, ob das gelungen ist.

Anschließend wird der derzeitige Zeitpunkt und der Zeitpunkt der letzten Durchführung der Selektion ermittelt. Beide Zeiten werden in bigint umgerechnet und voneinander abgezogen. Ist die Differenz größer als die in 100 Nanosekunden-Einheiten umgerechnete Zeitdifferenz, liefert die Funktion true, sonst das Ergebnis false zurück.

info

Bei der Umrechnung von caltime in bigint wird die Eigenschaft vpBiasMinutes berücksichtigt. Die Eigenschaft wird automatisch durch die Methode vmSystemTime () gesetzt. In der anderen Variablen werden nur das Datum und die Uhrzeit gesetzt. Damit die Umrechnung korrekt erfolgt, muss die Zeitzone hier ebenfalls gesetzt werden.