× The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.



On 12-May-2016 12:46 -0500, Roger Harman wrote:
I always keep a shortcut for these....
[http://www.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzakz/rzakzsysvaltable.htm]


FWiW:

QDAY is documented there as a CHAR(3), but with DCL (&DAY) *CHAR LEN(3) as declarative and then requesting RTVSYSVAL QDAY &DAY, that would be expected to fail for most installations with msg CPF1095 "CL variable length not valid for system value QDAY." F/QWCSRTLR, because CHAR(2) is required. Not very handy docs, if\when they are incorrect or incomplete :-( The same issue for QDATE, showing CHAR(6) in the docs, but most installations will require declaring CHAR(5) for the retrieve to function without that error stating "CL variable length not valid for system value QDATE." Neither of those caveats, nor another for QMONTH are listed in the docs, not even in the Notes; they are are at least alluded-to in the help text.

In the _help text_ for RTVSYSVAL, the type specifications listed near the bottom have always been [somewhat] accurate; though somewhat deceptive as well. I am unsure why the Retrieve System Value (RTVSYSVAL) has always been so lame as to have different definitional requirements based on the Date Format (QDATFMT) system-value instead of dependent on the Date Format (DATFMT) of the job :-( Easy enough to issue a Change Job (CHGJOB) to set the desired format, but not so easy or perhaps more appropriately stated as being /especially unwise/, for a CLP to reset the system Date Format using the Change System Value (CHGSYSVAL) to enable the request to obtain the desired value. Again, similarly for QDATE. And then for QMONTH, there is the silly restriction diagnosed by msg CPF1074 "SYSVAL(QMONTH) not valid for Julian date format."; these restrictions\mandates never made any sense to me, because the answers to the inquiries are known and thus could be returned, as well the likely intent of the setter\changer should be understood, irrespective the QDATFMT -- the date is a\the _date_, no matter the formatting chosen for the date.

The following CLP should /fail/ on every system, exhibiting how the choice of the 2-byte vs 3-byte can not be accomplished as a reflection of the Date Format job setting\attribute; instead, must rely on the QDATFMT:

<code>

dcl (&xk ) *char 4
dcl (&day3) *char 3
dcl (&day2) *char 2
dcl (&dtfS) *char 3
dcl (&dtfJ) *char 4
monmsg cpf1095 exec(goto reset)
rtvjoba datfmt(&dtfJ)
rtvsysval qdatfmt &dtfs
if (&dtfS *ne 'JUL') then(do)
rtvsysval qday &day2
chgjob datfmt(*jul) /* expect 3-digits! but*/
rtvsysval qday &day3 /* why does this fail? */
enddo
else /* the system date format is JUL */ do
rtvsysval qday &day3
chgjob datfmt(*mdy) /* anything but *JUL */
rtvsysval qday &day2 /* why does this fail? */
enddo
reset:
rcvmsg pgmq(*same) msgq(*pgmq) msgtype(*excp) rmv(*no) +
keyvar(&xk)
chgjob datfmt(&dtfJ)
dmpclpgm
dspsplf qppgmdmp
monmsg cpf0000
if (&xk *ne ' ') then(call qmhrsnem (&xk x'0000000000000000'))

</code>

As alluded, similarly with QDATE, and QMONTH another related difficulty.


As an Amazon Associate we earn from qualifying purchases.

This thread ...

Replies:

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].

Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.