// fulldate.vdm // written by Scott Lambert May 2010 // generates various info from system date // t-reg 1 = full date as per above example // t-reg 2 = month name (January to December) // n-reg 1 = number of days in month (28 to 31) // n-reg 2 = month number (1 to 12) // n-reg 3 = current day (1 to 31) // n-reg 4 = year // n-reg 5 = leap year flag 0=no 1=yes (also saved in return_value) // n-reg 6 = number of days since start of year // get system date #11=buf_num buf_switch(buf_free) out_ins() date(nomsg+nocr) out_ins(clear) goto_pos(0) // get month block_begin(0) block_end(2) reg_copy_block(11,block_begin,block_end) // month #2=num_eval_reg(11) // get day goto_pos(3) if(cur_char()==48) { block_begin(4) } else { block_begin(3) } block_end(5) reg_copy_block(12,block_begin,block_end) // day #3=num_eval_reg(12) // get year block_begin(6) block_end(10) reg_copy_block(13,block_begin,block_end) // year #4=num_eval_reg(13) #5=0 #9=#4/4 if(remainder==0) {#5=1} #9=#4/100 if(remainder==0) { #9=#4/400 if(remainder<>0) {#5=0} } if(#2==1) { reg_set(2,"January") #1=31 #6=#3 } if(#2==2) { reg_set(2,"February") if(#5==0) {#1=28} if(#5==1) {#1=29} #6=31+#3 } if(#2==3) { reg_set(2,"March") #1=31 #6=59+#3+#5 } if(#2==4) { reg_set(2,"April") #1=30 #6=90+#3+#5 } if(#2==5) { reg_set(2,"May") #1=31 #6=120+#3+#5 } if(#2==6) { reg_set(2,"June") #1=30 #6=151+#3+#5 } if(#2==7) { reg_set(2,"July") #1=31 #6=181+#3+#5 } if(#2==8) { reg_set(2,"August") #1=31 #6=212+#3+#5 } if(#2==9) { reg_set(2,"September") #1=30 #6=243+#3+#5 } if(#2==10) { reg_set(2,"October") #1=31 #6=273+#3+#5 } if(#2==11) { reg_set(2,"November") #1=30 #6=304+#3+#5 } if(#2==12) { reg_set(2,"December") #1=31 #6=334+#3+#5 } reg_set(1,@2) reg_set(1," ",append) reg_set(1,@12,append) reg_set(1,", ",append) reg_set(1,@13,append) buf_quit(ok) buf_switch(#11) return(#5)