|
Hello Rob, You wrote: >Having IBM do the trivial sometimes comes up with some better idea's. Not always :) >For example, everyone had a set of date routines for dealing with >numeric numbers. However I like the functionality of true date fields >much better. This is not a good example. Dates, times and timestamps were implemented in the database therefore they become accessible to any data processor (Query, SQL, HLL, etc.) therefore it makes sense to provide built-in support for those data types. (But look at how many systems **still** use numeric 'dates' thus requiring the language to support conversions when we should be using the native types.) What I object to is the seemingly endless requests for Toronto to provide trivial RPG IV specific functions whose sole purpose seems to be to provide a BIF to replace an op-code so free-form RPG looks better by avoiding the switches out of /free and in again. Hence my comment that the proposed %TESTD, %TESTT, %TESTZ functions are a waste of Toronto's time and money because: D testDate PR 1N D aDate 10 D aFormat 10 P testDate B EXPORT D testDate PI 1N D theDate 10 D theFormat 10 D validDate S 1 INZ(*ON) C SELECT C WHEN ( theFormat = '*YMD' ) C *YMD TEST(DE) theDate C EVAL validDate = NOT(%ERROR) C WHEN ( theFormat = '*MDY' ) C *MDY TEST(DE) theDate C EVAL validDate = NOT(%ERROR) C WHEN ( theFormat = '*DMY' ) C *DMY TEST(DE) theDate C EVAL validDate = NOT(%ERROR) C WHEN ( theFormat = '*CYMD' ) C *CYMD TEST(DE) theDate C EVAL validDate = NOT(%ERROR) C WHEN ( theFormat = '*CMDY' ) C *CMDY TEST(DE) theDate C EVAL validDate = NOT(%ERROR) C WHEN ( theFormat = '*CDMY' ) C *CDMY TEST(DE) theDate C EVAL validDate = NOT(%ERROR) C WHEN ( theFormat = '*JUL' ) C *JUL TEST(DE) theDate C EVAL validDate = NOT(%ERROR) C WHEN ( theFormat = '*ISO' ) C *ISO TEST(DE) theDate C EVAL validDate = NOT(%ERROR) C WHEN ( theFormat = '*USA' ) C *USA TEST(DE) theDate C EVAL validDate = NOT(%ERROR) C WHEN ( theFormat = '*EUR' ) C *EUR TEST(DE) theDate C EVAL validDate = NOT(%ERROR) C WHEN ( theFormat = '*JIS' ) C *JIS TEST(DE) theDate C EVAL validDate = NOT(%ERROR) C WHEN ( theFormat = $LONGJUL ) C *LONGJUL TEST(DE) theDate C EVAL validDate = NOT(%ERROR) C WHEN ( theFormat = $JOBRUN ) C *JOBRUN TEST(DE) theDate C EVAL validDate = NOT(%ERROR) C OTHER C EVAL validDate = *OFF C ENDSL C RETURN validDate P testDate E took 15 minutes to code and verify with the reference manual and allows me to code: C IF testDate( birthDate ) or C IF NOT(testDate( birthDate )) or C EVAL validDate = testDate( birthDate ) Of course, if variables were allowed in Factor-1 for the TEST(x) functions it would be simpler still. Wack that function in a service program, shove that in a binding directory, name the binding directory on a common H-spec that is /COPYed into the program template, and we have an instant new language extension. This example needs testing and possible additional support for *YYMD, *MDYY, *DMYY, etc. Consider it open source; if someone creates the corresponding time and timestamp (really easy) functions we'll be done and Toronto can concentrate on complex things. The same thing could have been done with the date duration BIFs and there are other examples such as ALLOC. Having said that, perhaps Toronto do have something grander in mind but that doesn't change the essence of my proposal which is to improve the LANGUAGE rather than the code. If the language improves the code will too. Toronto have given us the ability to extend the language via procedures so let us stop asking them to do the stuff we can do for ourselves. 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 mailto: shc@flybynight.com.au \ / X ASCII Ribbon campaign against HTML E-Mail / \ --------------------------------------------------------------------
As an Amazon Associate we earn from qualifying purchases.
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.