function script time_stamp { // local variables // if there is reasonable demand, these might be exported // (that is what the builtin is likely to do) @ts_year = gettime(7); @ts_month = gettime(6); @ts_mday = gettime(5); //set @ts_wday, gettime(4); @ts_hour = gettime(3); @ts_minute = gettime(2); @ts_second = gettime(1); // locals used to generate leading zeroes @ts_month_pad$ = ""; @ts_mday_pad$ = ""; @ts_hour_pad$ = ""; @ts_minute_pad$ = ""; @ts_second_pad$ = ""; if (@ts_month < 10) @ts_month_pad$ = "0"; if (@ts_mday < 10) @ts_mday_pad$ = "0"; if (@ts_hour < 10) @ts_hour_pad$ = "0"; if (@ts_minute < 10) @ts_minute_pad$ = "0"; if (@ts_second < 10) @ts_second_pad$ = "0"; @ts_date$ = @ts_year + "-" + @ts_month_pad$ + @ts_month + "-" + @ts_mday_pad$ + @ts_mday; @ts_time$ = @ts_hour_pad$ + @ts_hour + ":" + @ts_minute_pad$ + @ts_minute + ":" +@ts_second_pad$ + @ts_second; // cleanup @ts_year = 0; @ts_month = 0; @ts_mday = 0; @ts_hour = 0; @ts_minute = 0; @ts_second = 0; @ts_month_pad$ = ""; @ts_mday_pad$ = ""; @ts_hour_pad$ = ""; @ts_minute_pad$ = ""; @ts_second_pad$ = ""; return; } function script HumanTime { @time$ = "now"; if(@seconds) set @ms, @ms + (@seconds * 1000); if(@minutes) set @ms, @ms + (@minutes * 60000); if(@days) set @ms, @ms + (@days * 1440000); if(@ms < 1000) goto L_Millis; // under 1 second we have nothing to count @seconds = @ms / 1000; @ms = @ms % 1000; if(@seconds < 60) goto L_Seconds; @minutes = @seconds / 60; @seconds = @seconds % 60; if(@minutes < 60) goto L_Minutes; @hours = @minutes / 60; @minutes = @minutes % 60; if(@hours < 24) goto L_Hours; @days = @hours / 24; @hours = @hours % 24; if(@days) goto L_Days; goto L_Clean; L_Millis: @time$ = @ms + "ms"; return; L_Seconds: @unit$ = "second"; if(@seconds > 1) set @unit$, "seconds"; @unit2$ = "millisecond"; if(@ms > 1) set @unit2$, "milliseconds"; @time$ = @seconds + " " + @unit$; if(@ms) set @time$, @time$ + " and " + @ms + " " + @unit2$; goto L_Clean; L_Minutes: @unit$ = "minute"; if(@minutes > 1) set @unit$, "minutes"; @unit2$ = "second"; if(@seconds > 1) set @unit2$, "seconds"; @unit3$ = "millisecond"; if(@ms > 1) set @unit3$, "milliseconds"; @time$ = @minutes + " " + @unit$; @separator$ = " and "; if(@ms) set @separator$, ", "; if(@seconds) set @time$, @time$ + @separator$ + @seconds + " " + @unit2$; if(@ms) set @time$, @time$ + " and " + @ms + " " + @unit3$; goto L_Clean; L_Hours: @unit$ = "hour"; if(@hours > 1) set @unit$, "hours"; @unit2$ = "minute"; if(@minutes > 1) set @unit2$, "minutes"; @unit3$ = "second"; if(@seconds > 1) set @unit3$, "seconds"; @unit4$ = "millisecond"; if(@ms > 1) set @unit4$, "milliseconds"; @time$ = @hours + " " + @unit$; @separator$ = " and "; if(@seconds || @ms) set @separator$, ", "; if(@minutes) set @time$, @time$ + @separator$ + @minutes + " " + @unit2$; @separator$ = " and "; if(@ms) set @separator$, ", "; if(@seconds) set @time$, @time$ + @separator$ + @seconds + " " + @unit3$; if(@ms) set @time$, @time$ + " and " + @ms + " " + @unit4$; goto L_Clean; L_Days: @unit$ = "day"; if(@hours > 1) set @unit$, "days"; @unit2$ = "hour"; if(@hours > 1) set @unit2$, "hours"; @unit3$ = "minute"; if(@minutes > 1) set @unit3$, "minutes"; @unit4$ = "second"; if(@seconds > 1) set @unit4$, "seconds"; @unit5$ = "millisecond"; if(@ms > 1) set @unit5$, "milliseconds"; @time$ = @days + " " + @unit$; @separator$ = " and "; if(@minutes || @seconds || @ms) set @separator$, ", "; if(@hours) set @time$, @time$ + @separator$ + @hours + " " + @unit2$; @separator$ = " and "; if(@seconds || @ms) set @separator$, ", "; if(@minutes) set @time$, @time$ + @separator$ + @minutes + " " + @unit3$; @separator$ = " and "; if(@ms) set @separator$, ", "; if(@seconds) set @time$, @time$ + @separator$ + @seconds + " " + @unit3$; if(@ms) set @time$, @time$ + " and " + @ms + " " + @unit4$; goto L_Clean; L_Clean: @unit$ = ""; @unit2$ = ""; @unit3$ = ""; @unit4$ = ""; @unit5$ = ""; @seconds = 0; @minutes = 0; @hours = 0; @days = 0; @separator$ = ""; return; }