Re: Compute Date Duration
Dave McKenzie <[email protected]>
| Newsgroups | gmane.comp.lang.as400.mi |
|---|---|
| Message-ID | <[email protected]> |
Beppe,
In the CDD documentation it says "The DDAT for operand 1 must be valid
for a date duration."
In the list of format codes it lists "Date duration" (x14) as separate
from the "Labeled durations" (x0D - x13).
Maybe that means that the only valid format code for operand 1 is x14.
In any case, I don't know exactly what a "labeled duration" is.
--Dave
Beppe Costa wrote:
> I've tried to call CDD from RPG as ExtProc('_CDD') and from MI.
>
> When the DDAT 1 is of type x'0014' I pass a pointer to a packed 8,0 and CDD
> returns correct data (number of years+number of month+number of days).
>
> When the DDAT 1 is of type x'000F' I pass a pointer to a packed 15,0 and it
> fails. The message says "exactly" that the error is at offset x'0004' where
> DDAT 1 starts.
>
> A similar error occurs when I use a format other than ISO or a char(6) date
> for DDAT 2 and DDAT 3.
>
> For example If I use a YYMMDD date it works fine. If I try to use a CYYMMDD
> or another format it crashes and the MCH5601 signals the offset od DDAT 2.
>
> Btw in the meanwhile I solved the problem and I compute the duration in
> another way but it would be interesting to see if there is someone that
> tried to use this instruction.
>
> Giuseppe.
>
> ----- Original Message -----
> From: "Postmaster" <fbns-Q/[email protected]>
> To: "MI Programming on the AS400 / iSeries" <mi400-Zwy7GipZuJhWk0Htik3J/[email protected]>
> Sent: Tuesday, October 11, 2005 1:24 PM
> Subject: Re: [MI400] Compute Date Duration
>
>
>>On 11/10/2005, at 6:48 PM, Beppe Costa wrote:
>>
>>>Simon,
>>>I don't think that there is a validation on the output parameter
>>>because
>>>it's only a pointer.
>>Are you trying to run CDD from C or MI? If from C then you pass a
>>pointer to a packed decimal variable. If from MI then you pass the
>>scalar itself.
>>
>>The error you reported is caused by validating the 4th input parameter.
>>All MI instructions that accept a template validate the content of the
>>template. When the template contains an invalid value the MCH5601
>>message is sent. This message tells you exactly what part of the
>>template is invalid.
>>
>>>Btw I'm missing something because the DDAT1 duration in x0014 is
>>>returned
>>>correctly with ISO and YMD date but I can't get it with other date
>>>format.
>>>And in any case I can never get a Labeled Duration. Unfortunately the
>>>only
>>>documentation is from a single page in the MI functional reference and
>>>an
>>>example in C that uses ISO dates. I've found nothing else.
>>http://publib/boulder.ibm.com/infocenter/iseries/v5r3/topic/rzatk/
>>topics.htm
>>
>>Click Date/Time/Timestamp
>>
>>Click Date/Time Concepts
>>
>>Read carefully.
>>
>>>Thanks in any
>>>case for your response.
>>>Giuseppe.
>>>
>>>
>>>----- Original Message -----
>>>From: "Simon Coulter" <shc-Q/[email protected]>
>>>To: "MI Programming on the AS400 / iSeries" <mi400-Zwy7GipZuJhWk0Htik3J/[email protected]>
>>>Sent: Monday, October 10, 2005 11:41 PM
>>>Subject: Re: [MI400] Compute Date Duration
>>>
>>>
>>>>On 10/10/2005, at 10:53 PM, Beppe Costa wrote:
>>>>
>>>>>I'm trying to use the the MI CDD.
>>>>>
>>>>>When Operand1 is a DDAT x'0014' (Date Duration) I get the right value
>>>>>expressed in Years, Month and Days but when Operand1 is x'000F'
>>>>>(Labeled Duration DAY) I always get a "template value invalid".
>>>>Show the complete message text of the MCH5601 message. The
>>>>substitution
>>>>text will usually tell you what part of the template is wrong.
>>>>
>>>>My guess is that the variable containing the duration value is of the
>>>>wrong type. For x'0014' it must be PKD(8,0) but for x'000F' it must be
>>>>PKD(15,0)
>>>>
>>>>Regards,
>>>>Simon Coulter.
>>>>--------------------------------------------------------------------
>>>> FlyByNight Software AS/400 Technical Specialists
>>>>
>>>> http://www.flybynight.com.au/
>>>> Phone: +61 3 9419 0175 Mobile: +61 0411 091 400 /"\
>>>> Fax: +61 3 9419 0175 \ /
>>>> X
>>>> ASCII Ribbon campaign against HTML E-Mail / \
>>>>--------------------------------------------------------------------
_______________________________________________
This is the MI Programming on the AS400 / iSeries (MI400) mailing list
To post a message email: MI400-Zwy7GipZuJhWk0Htik3J/[email protected]
To subscribe, unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/mi400
or email: MI400-request-Zwy7GipZuJhWk0Htik3J/[email protected]
Before posting, please take a moment to review the archives
at http://archive.midrange.com/mi400.