Array eval_time->100; Array temp_time->100; Array temp_time1->100; Array time_val_1-->3; Array time_val_2-->3; [num_char x; return (num_val(x)>=0); ]; [num_val x y; y=x-'0'; if(y>=0&&y<=9) return y; return -11; ]; [eval_date in_str arr day mon year; decStrCpy(in_str,fnc_FNC(in_str)); if(StrLen(in_str)==10&&num_char(in_str->2)&&~~num_char(in_str->3)) { ! Lägg till inledande nolla i datum om det saknas en siffra decStrCpy(in_str,decStrCat(decWriteString(main_str-->0,"0"),in_str)); } if(StrLen(in_str)~=11 || (~~num_char(in_str->2)) || (~~num_char(in_str->3)) || (~~num_char(in_str->9)) || (~~num_char(in_str->10)) || (~~num_char(in_str->11)) || (~~num_char(in_str->12))) { print "^Datumet måste skrivas exakt på formatet DD-MÅN-ÅÅÅÅ, med elva tecken.^^"; jump restateDate; } in_str->4='-'; in_str->8='-'; ! Calculate day day=10*num_val(in_str->2)+num_val(in_str->3); ! Calculate month .retryMonth; decMidString(eval_time,in_str,4,3); if(decStrCmp(eval_time,decWriteString(main_str-->0,"MAY"))==0) { in_str->7='J'; jump retryMonth; } if(decStrCmp(eval_time,decWriteString(main_str-->0,"OCT"))==0) { in_str->6='K'; jump retryMonth; } if(decStrCmp(eval_time,decWriteString(main_str-->0,"JAN"))==0) mon=1; else if(decStrCmp(eval_time,decWriteString(main_str-->0,"FEB"))==0) mon=2; else if(decStrCmp(eval_time,decWriteString(main_str-->0,"MAR"))==0) mon=3; else if(decStrCmp(eval_time,decWriteString(main_str-->0,"APR"))==0) mon=4; else if(decStrCmp(eval_time,decWriteString(main_str-->0,"MAJ"))==0) mon=5; else if(decStrCmp(eval_time,decWriteString(main_str-->0,"JUN"))==0) mon=6; else if(decStrCmp(eval_time,decWriteString(main_str-->0,"JUL"))==0) mon=7; else if(decStrCmp(eval_time,decWriteString(main_str-->0,"AUG"))==0) mon=8; else if(decStrCmp(eval_time,decWriteString(main_str-->0,"SEP"))==0) mon=9; else if(decStrCmp(eval_time,decWriteString(main_str-->0,"OKT"))==0) mon=10; else if(decStrCmp(eval_time,decWriteString(main_str-->0,"NOV"))==0) mon=11; else if(decStrCmp(eval_time,decWriteString(main_str-->0,"DEC"))==0) mon=12; ! Calculate year year=1000*num_val(in_str->9)+100*num_val(in_str->10)+ 10*num_val(in_str->11)+num_val(in_str->12); if(mon<1) { print "^Den månaden existerar inte.^^"; jump restateDate; } if(day<1||day>31||(day>30&&mon==4 or 6 or 9 or 11)|| (mon==2&&(day>29||(day>28&&((year%4)~=0||(year%100==0&&year%400~=0)))))) { print "^Den dagen existerar inte.^^"; jump restateDate; } if(year<2009) { print "^Den här versionen av spelet släpptes inte förrän 2009, så ditt årtal är felaktigt.^^"; jump restateDate; } arr-->0=year; arr-->1=mon; arr-->2=day; rtrue; .restateDate; rfalse; ]; [proc_input_date date_str early; if(StrLen(date_str)<1) WriteString(date_str,"01-JAN-2009"); eval_date(date_str,time_val_1); print "Skriv dagens datum, eller tryck på Enter för att acceptera defaultvärdet.^"; .restateDate; print "["; PrintString(date_str); print "]"; decStrCpy(temp_time1,fnc_FNI(decWriteString(main_str-->0,":"))); if(StrLen(temp_time1)==0) jump done; if(eval_date(temp_time1,time_val_2)==false) jump restateDate; early=0; if(time_val_2-->00) early=1; else if(time_val_2-->0==time_val_1-->0) { if(time_val_2-->11) early=1; else if(time_val_2-->1==time_val_1-->1) { if(time_val_2-->22) early=1; } } if(early) { print "^Datumet kan inte vara tidigare än "; PrintString(date_str); print ".^^"; jump restateDate; } decStrCpy(date_str, temp_time1); .done; return date_str; ]; [proc_input_time time_str hours minutes; if(StrLen(time_str)~=5) WriteString(time_str,"19:00"); print "Skriv hur mycket klockan är, eller tryck på Enter för att acceptera defaultvärdet.^"; .restateTime; print "["; PrintString(time_str); print "]"; decStrCpy(temp_time,fnc_FNI(decWriteString(main_str-->0,":"))); if(StrLen(temp_time)==0) jump done; decStrCpy(temp_time,fnc_FNC(temp_time)); if(StrLen(temp_time)==4&&num_char(temp_time->2)&&~~num_char(temp_time->3)) { ! Lägg till inledande nolla i timmarna om det saknas en siffra decStrCpy(temp_time,decStrCat(decWriteString(main_str-->0,"0"),temp_time)); } if(StrLen(temp_time)~=5 || (~~num_char(temp_time->2)) || (~~num_char(temp_time->3)) || (~~num_char(temp_time->5)) || (~~num_char(temp_time->6))) { print "Tiden måste skrivas exakt på formatet TT:MM, med fem tecken.^"; jump restateTime; } temp_time->4=':'; ! Räkna ut timmar hours=10*num_val(temp_time->2)+num_val(temp_time->3); ! Räkna ut minuter minutes=10*num_val(temp_time->5)+num_val(temp_time->6); if(hours<0||hours>23) { print "Timmarna måste vara mellan 0 och 23.^"; jump restateTime; } if(minutes<0||minutes>59) { print "Minuterna måste vara mellan 0 och 59.^"; jump restateTime; } decStrCpy(time_str, temp_time); .done; return time_str; ];