Re: Budget Builder

new topic     » goto parent     » topic index » view thread      » older message » newer message
--   
-- get_datetime.e v3 
--  Kenneth Rhodes 
-- 
include std/console.e 
include std/datetime.e 
-- 
-- ymd(Y) returns current year 
-- ymd(M) returns current month 
-- ymd(D) returns current day 
-- 
enum Y,M,D 
function ymd(integer ymd) 
sequence tmp = now() 
if ymd<Y or ymd>D then return 0 end if  
return tmp[ymd] 
end function 
 
-- overides std/datetime.e new() function 
-- defaults to current year,month, day:  
-- {Y,M,D,0,0,0} instead of {0,0,0,0,0,0} 
-- as defined in std/datetime.e 
function new(integer year=ymd(Y), integer month=ymd(M),  
integer day=ymd(D), integer hour=0, integer minute=0, atom second=0) 
return {year,month,day,hour,minute,second} 
end function 
 
constant MENU = {                         -- accessor  
	"\t\t    Enter Year:  #: ",  --1 YEAR 
	"\t\t   Enter Month:  #: ",  --2 MONTH 
	"\t\t     Enter Day:  #: ",  --3 DAY 
	"\t\t    Enter Hour:  #: ",  --4 HOUR 
	"\t\t  Enter Minute:  #: ",  --5 MINUTE 
	"\t\t Enter Seconds:  #: "   --6 SECOND 
	} 
	 
public constant USE_MENU = 1, NO_MENU = 0  
 
public function get_datetime(integer Max_Accessor=SECOND,integer menu=NO_MENU,sequence yr={}) 
sequence r -- range for prompt_number 
datetime dtnow = now(),   -- {Y,M,D,H,M,S} 
	 dt    = new()    -- {Y,M,D,0,0,0} 
if not(menu) then -- auto entry datetime data returned from now() function 
    if    Max_Accessor=SECOND then dt=now()           -- {Y,M,D,H,M,S} 
    elsif Max_Accessor=HOUR then dt[HOUR]=dtnow[HOUR] -- {Y,M,D,H,0,0} 
    elsif Max_Accessor=MINUTE then  
            dt[HOUR]=dtnow[HOUR] 
            dt[MINUTE]=dtnow[MINUTE]-- {Y,M,D,H,M,0} 
    end if 
    return dt 
elsif USE_MENU then -- enter datetime data: y/m/d/hr using MENU 
    for i = 1 to Max_Accessor do 
	switch i do 
	case YEAR then   r = yr 
	case MONTH then  r = {1,12} 
	case DAY then    r = {1,31} 
	case HOUR then   r = {0,23} 
	case MINUTE then r = {0,59} 
	case SECOND then r = {0,60} 
	case else return 0 
	end switch 
	dt[i] = prompt_number(MENU[i],r)  -- overwrites default dt values 
   end for 
end if 
return dt 
end function 
 
constant DT_MENU = sprintf("%s", { 
""" 

                Set Date/Time 
                 
				0  =  Auto entry of current date/time data from system 
				1  =  Manual Entry of date/time data 
				 
				#: """ 

 }) 
 
include std/types.e 
-- choose auto or manual entry of datetime data from menu 
public function dt_menu(integer MAX_ACCESSOR=SECOND) 
datetime dt 
integer m = prompt_number(DT_MENU,{NO_MENU, USE_MENU})  
 
	if m then dt=get_datetime(MAX_ACCESSOR, USE_MENU) 
	else      dt=get_datetime(MAX_ACCESSOR, NO_MENU)  
	end if 
 
return dt 
end function 
 
 
 

Regards, Ken

new topic     » goto parent     » topic index » view thread      » older message » newer message

Search



Quick Links

User menu

Not signed in.

Misc Menu