diff --git a/matlab/utilities/dseries/from.m b/matlab/utilities/dseries/from.m index 42ef92077db99792b1104d51fd6ccc95df0163c2..86c4a6821b9a5ea0a283c9f9783e93ba6d1de626 100644 --- a/matlab/utilities/dseries/from.m +++ b/matlab/utilities/dseries/from.m @@ -27,28 +27,53 @@ if isempty(to_id) || isempty(do_id) end if do_id<to_id - msg = sprinf('Wrong syntax! The TO keyword must preceed the DO keyword.\n'); + msg = sprinf('dseries::from: Wrong syntax! The TO keyword must preceed the DO keyword.\n'); error(get_error_message_0(msg)) end if ~isdate(varargin{1}) - msg = sprintf('Wrong syntax! The FROM statement must be followed by a dates object.\n'); - error(get_error_message_0(msg)) + % The first argument is not a string formatted date. Test if this argument refers to a dates object + % in the caller workspace. + try + d1 = evalin('caller', varargin{1}); + if ~isdates(d1) + error(['dseries::from: Variable ' varargin{1} ' is not a dates object!']) + end + catch + error(['dseries::from: Variable ' varargin{1} ' is unknown!']) + end + if ~exist('d1') + msg = sprintf('Wrong syntax! The FROM statement must be followed by a string formatted date.\n'); + error(get_error_message_0(msg)) + end +else + d1 = dates(varargin{1}); % First date end if ~isequal(to_id,2) - msg = sprintf('Wrong syntax! The first dates object must be immediately followed by the TO keyword.\n'); + msg = sprintf('dseries::from: Wrong syntax! The first dates object must be immediately followed by the TO keyword.\n'); error(get_error_message_0(msg)) end if ~isdate(varargin{3}) - msg = sprintf('Wrong syntax! The TO keyword must be followed by a second dates object.\n'); - error(get_error_message_0(msg)) + % The third argument is not a string formatted date. Test if this argument refers to a dates object + % in the caller workspace. + try + d2 = evalin('caller', varargin{3}); + if ~isdates(d2) + error(['dseries::from: Variable ' varargin{3} ' is not a dates object!']) + end + catch + error(['dseries::from: Variable ' varargin{3} ' is unknown!']) + end + if ~exist('d2') + msg = sprintf('dseries::from: Wrong syntax! The TO keyword must be followed by a second dates object.\n'); + error(get_error_message_0(msg)) + end +else + d2 = dates(varargin{3}); % Last date end -d1 = dates(varargin{1}); % First date -d2 = dates(varargin{3}); % Last date - if d1>d2 error('The first date must preceed the second one!') end