Re: [U2] universe 11.1 triggers via indexing and @IDX.IOTYPE sample
Thanks, Troy. I was going to write that after I got to 11.1. (The upgrade was scheduled for Q3, but I hear rumours it got bumped because salesmen just sold something we can't do - yet. It pays the bills.) Troy, I want to borrow your code, but I want to include proper attribution in the program header. Chuck On 8/27/2013 7:02 PM, Buss, Troy (Contractor, Logitek Systems) wrote: Regarding the recent discussion of using indexes as triggers, I use the following to update timestamps of record changes to a master item stats file that we use for controlling updates to a business warehouse (BW). Without modifying hundreds of legacy programs to support proper timestamps in the primary records, I added the following indexed Idescriptors to files I need to track. We are on universe 11.1.1 and this has been working well for over a year. DICT AR-INVOICE INDEX..MODIFIEDZ 0001 I 0002 SUBR(ZIDESC.ITEMSTATS.UPDATE, AR-INVOICE!:F0,) 0004 \ 0005 1L 0006 S 0049 used to create item created, modified, delete in zitemstats file - create index with this and no.nulls keyword EOI 216 bytes In this example, we have a AR-INVOICE header record and a related ARLI line item file. For our purposes to keep in sync with the BW, we want to timestamp the corresponding header record whenever a line item is updated so the ARLI dict item also updates AR-INVOICE header ZITEMSTATS with an I indirect update flag. DICT ARLI INDEX..MODIFIEDZ 0001 I 0002 SUBR(ZIDESC.ITEMSTATS.UPDATE, ARLI!:F0,):SUBR(ZIDESC.ITEMSTATS.UPDATE, AR-INVOICE!:F1,I) 0004 \ 0005 1L 0006 S 0049 used to create item created, modified, delete in zitemstats file - create index with this and no.nulls keyword EOI 264 bytes Alternate Key Index Summary for file ARLI File... ARLI Indices 3 (0 A-type, 0 C-type, 0 D-type, 3 I-type, 0 SQL, 0 S-type) Index Updates.. Enabled, No updates pending Index name Type BuildNulls In DICT S/M Just Unique Field num/I-type INDEX..MODIFIEDZ INot Reqd No Yes SL NSUBR(ZIDESC.ITE MSTATS.UPDATE, ARLI!:F0,):S UBR(ZIDESC.ITEM STATS.UPDATE, AR-INVOICE!:F1, I) Subroutine ZIDESC.ITEMSTATS.UPDATE: 0001 SUB (RETURN.VALUE, ZITEMSTATS.ID, OPTIONS) 0002 * updates zitemstats with timestamps; create, modified, deleted 0003 * 0004 * Revision history: 0005 * 0006 * tdb.1190 2012-04-22_1602 new 0007 * 0008 * 0009 * input: ZITEMSTATS.ID item id to use for ZITEMSTATS file 0010 * OPTIONS 0011 *I update attb 5 with I for indirect reference 0012 * 0013 * output: RETURN.VALUE NULL 0014 * 0015 * common vars: /ZITEMSTATS/ 0016 * 0017 * called by: INDEX..MODIFIEDZ dictionary items 0018 * calls: 0019 * 0020 * notes: 0021 * 0022 * 0023 $OPTIONS TIME.MILLISECOND 0024 * 0025 * @idx.iotype = 0 - Not being used from an index; 0026 * 1 - INSERT (new) record; 0027 * 2 - DELETE record; 0028 * 3 - Derive old index value; 0029 * 4 - Derive new index value; 0030 * 0031 COMMON /ZITEMSTATS/ F.ZITEMSTATS, ZITEMSTATS.FLAG.OPEN, ZITEMSTATS.WHO 0032 * 0033 EQU NUL TO 0034 * 0035 RETURN.VALUE = NUL 0036 * 0037 * the following handles initial call and logto commands 0038 * 0039 IF NOT(ZITEMSTATS.FLAG.OPEN) OR (@WHO # ZITEMSTATS.WHO) THEN 0040 OPEN ZITEMSTATS TO F.ZITEMSTATS ELSE 0041 RETURN ;* to caller. 0042 END 0043 * 0044 ZITEMSTATS.FLAG.OPEN = 1 0045 ZITEMSTATS.WHO = @WHO 0046 END 0047 * 0048 LOG.TYPE = NUL 0049 * 0050 BEGIN CASE 0051 CASE @IDX.IOTYPE = 0 0052 * 0053 CASE @IDX.IOTYPE = 1 0054 LOG.TYPE = C ;* new - created - easier to see than 'N' new 0055 * 0056 CASE @IDX.IOTYPE = 2 0057 LOG.TYPE = D ;* delete 0058 * 0059 CASE @IDX.IOTYPE = 3 0060 * 0061 CASE @IDX.IOTYPE = 4 0062 LOG.TYPE = M ;* modified 0063 * 0064 END CASE 0065 * 0066 IF LOG.TYPE # NUL THEN 0067 * 0068 DATE.NOW = DATE() 0069 TIME.NOW = TIME() 0070 * 0071 * handle instance of midnight between date/time functions 0072 * 0073 IF DATE.NOW # DATE() AND TIME() TIME.NOW THEN DATE.NOW = DATE() 0074 * 0075 TIMESTAMP = DATE.NOW * 86400 + TIME.NOW 0076 * 0077 READU ZITEMSTATS$ FROM F.ZITEMSTATS, ZITEMSTATS.ID ELSE ZITEMSTATS$ = NUL 0078 * 0079 INDIRECT.FLAG = COUNT(OPTIONS, I) 0080 * 0081 IF INDIRECT.FLAG THEN 0082 ZITEMSTATS$1 = M ;* modified 0083 END ELSE 0084 ZITEMSTATS$1 = LOG.TYPE 0085 END 0086 * 0087 * created 0088 * 0089 IF INDIRECT.FLAG ELSE 0090 IF LOG.TYPE = C THEN 0091 ZITEMSTATS$2 = TIMESTAMP 0092 END 0093 END 0094 * 0095 * modified 0096 * 0097 ZITEMSTATS$3 = TIMESTAMP 0098 * 0099 * deleted 0100 * 0101
[U2] universe 11.1 triggers via indexing and @IDX.IOTYPE sample
Regarding the recent discussion of using indexes as triggers, I use the following to update timestamps of record changes to a master item stats file that we use for controlling updates to a business warehouse (BW). Without modifying hundreds of legacy programs to support proper timestamps in the primary records, I added the following indexed Idescriptors to files I need to track. We are on universe 11.1.1 and this has been working well for over a year. DICT AR-INVOICE INDEX..MODIFIEDZ 0001 I 0002 SUBR(ZIDESC.ITEMSTATS.UPDATE, AR-INVOICE!:F0,) 0004 \ 0005 1L 0006 S 0049 used to create item created, modified, delete in zitemstats file - create index with this and no.nulls keyword EOI 216 bytes In this example, we have a AR-INVOICE header record and a related ARLI line item file. For our purposes to keep in sync with the BW, we want to timestamp the corresponding header record whenever a line item is updated so the ARLI dict item also updates AR-INVOICE header ZITEMSTATS with an I indirect update flag. DICT ARLI INDEX..MODIFIEDZ 0001 I 0002 SUBR(ZIDESC.ITEMSTATS.UPDATE, ARLI!:F0,):SUBR(ZIDESC.ITEMSTATS.UPDATE, AR-INVOICE!:F1,I) 0004 \ 0005 1L 0006 S 0049 used to create item created, modified, delete in zitemstats file - create index with this and no.nulls keyword EOI 264 bytes Alternate Key Index Summary for file ARLI File... ARLI Indices 3 (0 A-type, 0 C-type, 0 D-type, 3 I-type, 0 SQL, 0 S-type) Index Updates.. Enabled, No updates pending Index name Type BuildNulls In DICT S/M Just Unique Field num/I-type INDEX..MODIFIEDZ INot Reqd No Yes SL NSUBR(ZIDESC.ITE MSTATS.UPDATE, ARLI!:F0,):S UBR(ZIDESC.ITEM STATS.UPDATE, AR-INVOICE!:F1, I) Subroutine ZIDESC.ITEMSTATS.UPDATE: 0001 SUB (RETURN.VALUE, ZITEMSTATS.ID, OPTIONS) 0002 * updates zitemstats with timestamps; create, modified, deleted 0003 * 0004 * Revision history: 0005 * 0006 * tdb.1190 2012-04-22_1602 new 0007 * 0008 * 0009 * input: ZITEMSTATS.ID item id to use for ZITEMSTATS file 0010 * OPTIONS 0011 *I update attb 5 with I for indirect reference 0012 * 0013 * output: RETURN.VALUE NULL 0014 * 0015 * common vars: /ZITEMSTATS/ 0016 * 0017 * called by: INDEX..MODIFIEDZ dictionary items 0018 * calls: 0019 * 0020 * notes: 0021 * 0022 * 0023 $OPTIONS TIME.MILLISECOND 0024 * 0025 * @idx.iotype = 0 - Not being used from an index; 0026 * 1 - INSERT (new) record; 0027 * 2 - DELETE record; 0028 * 3 - Derive old index value; 0029 * 4 - Derive new index value; 0030 * 0031 COMMON /ZITEMSTATS/ F.ZITEMSTATS, ZITEMSTATS.FLAG.OPEN, ZITEMSTATS.WHO 0032 * 0033 EQU NUL TO 0034 * 0035 RETURN.VALUE = NUL 0036 * 0037 * the following handles initial call and logto commands 0038 * 0039 IF NOT(ZITEMSTATS.FLAG.OPEN) OR (@WHO # ZITEMSTATS.WHO) THEN 0040 OPEN ZITEMSTATS TO F.ZITEMSTATS ELSE 0041 RETURN ;* to caller. 0042 END 0043 * 0044 ZITEMSTATS.FLAG.OPEN = 1 0045 ZITEMSTATS.WHO = @WHO 0046 END 0047 * 0048 LOG.TYPE = NUL 0049 * 0050 BEGIN CASE 0051 CASE @IDX.IOTYPE = 0 0052 * 0053 CASE @IDX.IOTYPE = 1 0054 LOG.TYPE = C ;* new - created - easier to see than 'N' new 0055 * 0056 CASE @IDX.IOTYPE = 2 0057 LOG.TYPE = D ;* delete 0058 * 0059 CASE @IDX.IOTYPE = 3 0060 * 0061 CASE @IDX.IOTYPE = 4 0062 LOG.TYPE = M ;* modified 0063 * 0064 END CASE 0065 * 0066 IF LOG.TYPE # NUL THEN 0067 * 0068 DATE.NOW = DATE() 0069 TIME.NOW = TIME() 0070 * 0071 * handle instance of midnight between date/time functions 0072 * 0073 IF DATE.NOW # DATE() AND TIME() TIME.NOW THEN DATE.NOW = DATE() 0074 * 0075 TIMESTAMP = DATE.NOW * 86400 + TIME.NOW 0076 * 0077 READU ZITEMSTATS$ FROM F.ZITEMSTATS, ZITEMSTATS.ID ELSE ZITEMSTATS$ = NUL 0078 * 0079 INDIRECT.FLAG = COUNT(OPTIONS, I) 0080 * 0081 IF INDIRECT.FLAG THEN 0082 ZITEMSTATS$1 = M ;* modified 0083 END ELSE 0084 ZITEMSTATS$1 = LOG.TYPE 0085 END 0086 * 0087 * created 0088 * 0089 IF INDIRECT.FLAG ELSE 0090 IF LOG.TYPE = C THEN 0091 ZITEMSTATS$2 = TIMESTAMP 0092 END 0093 END 0094 * 0095 * modified 0096 * 0097 ZITEMSTATS$3 = TIMESTAMP 0098 * 0099 * deleted 0100 * 0101 IF INDIRECT.FLAG ELSE 0102 IF LOG.TYPE = D THEN 0103 ZITEMSTATS$4 = TIMESTAMP 0104 END ELSE 0105 ZITEMSTATS$4 = NUL 0106 END 0107 END 0108 * 0109 IF INDIRECT.FLAG THEN 0110 ZITEMSTATS$5 = I ;* indirect update flag 0111 END ELSE 0112 ZITEMSTATS$5 = EREPLACE(ZITEMSTATS$5, I, ) ;* remove indirect update flag 0113 END 0114 * 0115 WRITE ZITEMSTATS$ ON
Re: [U2] universe 11.1 triggers via indexing and @IDX.IOTYPE sample
That is awesome information Troy! Thanks for that! (Now if I could just get my production environment upgrade to 11.1x :D ) -Original Message- From: u2-users-boun...@listserver.u2ug.org [mailto:u2-users-boun...@listserver.u2ug.org] On Behalf Of Buss, Troy (Contractor, Logitek Systems) Sent: Tuesday, August 27, 2013 10:03 AM To: U2 Users List Subject: [U2] universe 11.1 triggers via indexing and @IDX.IOTYPE sample Regarding the recent discussion of using indexes as triggers, I use the following to update timestamps of record changes to a master item stats file that we use for controlling updates to a business warehouse (BW). Without modifying hundreds of legacy programs to support proper timestamps in the primary records, I added the following indexed Idescriptors to files I need to track. We are on universe 11.1.1 and this has been working well for over a year. DICT AR-INVOICE INDEX..MODIFIEDZ 0001 I 0002 SUBR(ZIDESC.ITEMSTATS.UPDATE, AR-INVOICE!:F0,) 0004 \ 0005 1L 0006 S 0049 used to create item created, modified, delete in zitemstats file - create index with this and no.nulls keyword EOI 216 bytes In this example, we have a AR-INVOICE header record and a related ARLI line item file. For our purposes to keep in sync with the BW, we want to timestamp the corresponding header record whenever a line item is updated so the ARLI dict item also updates AR-INVOICE header ZITEMSTATS with an I indirect update flag. DICT ARLI INDEX..MODIFIEDZ 0001 I 0002 SUBR(ZIDESC.ITEMSTATS.UPDATE, ARLI!:F0,):SUBR(ZIDESC.ITEMSTATS.UPDATE, AR-INVOICE!:F1,I) 0004 \ 0005 1L 0006 S 0049 used to create item created, modified, delete in zitemstats file - create index with this and no.nulls keyword EOI 264 bytes Alternate Key Index Summary for file ARLI File... ARLI Indices 3 (0 A-type, 0 C-type, 0 D-type, 3 I-type, 0 SQL, 0 S-type) Index Updates.. Enabled, No updates pending Index name Type BuildNulls In DICT S/M Just Unique Field num/I-type INDEX..MODIFIEDZ INot Reqd No Yes SL NSUBR(ZIDESC.ITE MSTATS.UPDATE, ARLI!:F0,):S UBR(ZIDESC.ITEM STATS.UPDATE, AR-INVOICE!:F1, I) Subroutine ZIDESC.ITEMSTATS.UPDATE: 0001 SUB (RETURN.VALUE, ZITEMSTATS.ID, OPTIONS) 0002 * updates zitemstats with timestamps; create, modified, deleted 0003 * 0004 * Revision history: 0005 * 0006 * tdb.1190 2012-04-22_1602 new 0007 * 0008 * 0009 * input: ZITEMSTATS.ID item id to use for ZITEMSTATS file 0010 * OPTIONS 0011 *I update attb 5 with I for indirect reference 0012 * 0013 * output: RETURN.VALUE NULL 0014 * 0015 * common vars: /ZITEMSTATS/ 0016 * 0017 * called by: INDEX..MODIFIEDZ dictionary items 0018 * calls: 0019 * 0020 * notes: 0021 * 0022 * 0023 $OPTIONS TIME.MILLISECOND 0024 * 0025 * @idx.iotype = 0 - Not being used from an index; 0026 * 1 - INSERT (new) record; 0027 * 2 - DELETE record; 0028 * 3 - Derive old index value; 0029 * 4 - Derive new index value; 0030 * 0031 COMMON /ZITEMSTATS/ F.ZITEMSTATS, ZITEMSTATS.FLAG.OPEN, ZITEMSTATS.WHO 0032 * 0033 EQU NUL TO 0034 * 0035 RETURN.VALUE = NUL 0036 * 0037 * the following handles initial call and logto commands 0038 * 0039 IF NOT(ZITEMSTATS.FLAG.OPEN) OR (@WHO # ZITEMSTATS.WHO) THEN 0040 OPEN ZITEMSTATS TO F.ZITEMSTATS ELSE 0041 RETURN ;* to caller. 0042 END 0043 * 0044 ZITEMSTATS.FLAG.OPEN = 1 0045 ZITEMSTATS.WHO = @WHO 0046 END 0047 * 0048 LOG.TYPE = NUL 0049 * 0050 BEGIN CASE 0051 CASE @IDX.IOTYPE = 0 0052 * 0053 CASE @IDX.IOTYPE = 1 0054 LOG.TYPE = C ;* new - created - easier to see than 'N' new 0055 * 0056 CASE @IDX.IOTYPE = 2 0057 LOG.TYPE = D ;* delete 0058 * 0059 CASE @IDX.IOTYPE = 3 0060 * 0061 CASE @IDX.IOTYPE = 4 0062 LOG.TYPE = M ;* modified 0063 * 0064 END CASE 0065 * 0066 IF LOG.TYPE # NUL THEN 0067 * 0068 DATE.NOW = DATE() 0069 TIME.NOW = TIME() 0070 * 0071 * handle instance of midnight between date/time functions 0072 * 0073 IF DATE.NOW # DATE() AND TIME() TIME.NOW THEN DATE.NOW = DATE() 0074 * 0075 TIMESTAMP = DATE.NOW * 86400 + TIME.NOW 0076 * 0077 READU ZITEMSTATS$ FROM F.ZITEMSTATS, ZITEMSTATS.ID ELSE ZITEMSTATS$ = NUL 0078 * 0079 INDIRECT.FLAG = COUNT(OPTIONS, I) 0080 * 0081 IF INDIRECT.FLAG THEN 0082 ZITEMSTATS$1 = M ;* modified 0083 END ELSE 0084 ZITEMSTATS$1 = LOG.TYPE 0085 END 0086 * 0087 * created 0088 * 0089 IF INDIRECT.FLAG ELSE 0090 IF LOG.TYPE = C THEN 0091 ZITEMSTATS$2 = TIMESTAMP 0092 END 0093 END 0094 * 0095 * modified 0096 * 0097 ZITEMSTATS$3 = TIMESTAMP
Re: [U2] universe 11.1 triggers via indexing and @IDX.IOTYPE sample
Should line 73 of your program be rather than for the time as when the date has changed, the time will be less than the time of the date - 1 which you have just set. 0068 DATE.NOW = DATE() 0069 TIME.NOW = TIME() 0073 IF DATE.NOW # DATE() AND TIME() TIME.NOW THEN DATE.NOW = DATE() Example: DATE.NOW = 16789 TIME.NOW = 83999 DATE() = 16790 TIME() = 1 Might be wrong -Original Message- From: u2-users-boun...@listserver.u2ug.org [mailto:u2-users-boun...@listserver.u2ug.org] On Behalf Of Perry Taylor Sent: Wednesday, 28 August 2013 4:26 a.m. To: U2 Users List Subject: Re: [U2] universe 11.1 triggers via indexing and @IDX.IOTYPE sample That is awesome information Troy! Thanks for that! (Now if I could just get my production environment upgrade to 11.1x :D ) -Original Message- From: u2-users-boun...@listserver.u2ug.org [mailto:u2-users-boun...@listserver.u2ug.org] On Behalf Of Buss, Troy (Contractor, Logitek Systems) Sent: Tuesday, August 27, 2013 10:03 AM To: U2 Users List Subject: [U2] universe 11.1 triggers via indexing and @IDX.IOTYPE sample Regarding the recent discussion of using indexes as triggers, I use the following to update timestamps of record changes to a master item stats file that we use for controlling updates to a business warehouse (BW). Without modifying hundreds of legacy programs to support proper timestamps in the primary records, I added the following indexed Idescriptors to files I need to track. We are on universe 11.1.1 and this has been working well for over a year. DICT AR-INVOICE INDEX..MODIFIEDZ 0001 I 0002 SUBR(ZIDESC.ITEMSTATS.UPDATE, AR-INVOICE!:F0,) 0004 \ 0005 1L 0006 S 0049 used to create item created, modified, delete in zitemstats file - create index with this and no.nulls keyword EOI 216 bytes In this example, we have a AR-INVOICE header record and a related ARLI line item file. For our purposes to keep in sync with the BW, we want to timestamp the corresponding header record whenever a line item is updated so the ARLI dict item also updates AR-INVOICE header ZITEMSTATS with an I indirect update flag. DICT ARLI INDEX..MODIFIEDZ 0001 I 0002 SUBR(ZIDESC.ITEMSTATS.UPDATE, ARLI!:F0,):SUBR(ZIDESC.ITEMSTATS.UPDATE, AR-INVOICE!:F1,I) 0004 \ 0005 1L 0006 S 0049 used to create item created, modified, delete in zitemstats file - create index with this and no.nulls keyword EOI 264 bytes Alternate Key Index Summary for file ARLI File... ARLI Indices 3 (0 A-type, 0 C-type, 0 D-type, 3 I-type, 0 SQL, 0 S-type) Index Updates.. Enabled, No updates pending Index name Type BuildNulls In DICT S/M Just Unique Field num/I-type INDEX..MODIFIEDZ INot Reqd No Yes SL NSUBR(ZIDESC.ITE MSTATS.UPDATE, ARLI!:F0,):S UBR(ZIDESC.ITEM STATS.UPDATE, AR-INVOICE!:F1, I) Subroutine ZIDESC.ITEMSTATS.UPDATE: 0001 SUB (RETURN.VALUE, ZITEMSTATS.ID, OPTIONS) 0002 * updates zitemstats with timestamps; create, modified, deleted 0003 * 0004 * Revision history: 0005 * 0006 * tdb.1190 2012-04-22_1602 new 0007 * 0008 * 0009 * input: ZITEMSTATS.ID item id to use for ZITEMSTATS file 0010 * OPTIONS 0011 *I update attb 5 with I for indirect reference 0012 * 0013 * output: RETURN.VALUE NULL 0014 * 0015 * common vars: /ZITEMSTATS/ 0016 * 0017 * called by: INDEX..MODIFIEDZ dictionary items 0018 * calls: 0019 * 0020 * notes: 0021 * 0022 * 0023 $OPTIONS TIME.MILLISECOND 0024 * 0025 * @idx.iotype = 0 - Not being used from an index; 0026 * 1 - INSERT (new) record; 0027 * 2 - DELETE record; 0028 * 3 - Derive old index value; 0029 * 4 - Derive new index value; 0030 * 0031 COMMON /ZITEMSTATS/ F.ZITEMSTATS, ZITEMSTATS.FLAG.OPEN, ZITEMSTATS.WHO 0032 * 0033 EQU NUL TO 0034 * 0035 RETURN.VALUE = NUL 0036 * 0037 * the following handles initial call and logto commands 0038 * 0039 IF NOT(ZITEMSTATS.FLAG.OPEN) OR (@WHO # ZITEMSTATS.WHO) THEN 0040 OPEN ZITEMSTATS TO F.ZITEMSTATS ELSE 0041 RETURN ;* to caller. 0042 END 0043 * 0044 ZITEMSTATS.FLAG.OPEN = 1 0045 ZITEMSTATS.WHO = @WHO 0046 END 0047 * 0048 LOG.TYPE = NUL 0049 * 0050 BEGIN CASE 0051 CASE @IDX.IOTYPE = 0 0052 * 0053 CASE @IDX.IOTYPE = 1 0054 LOG.TYPE = C ;* new - created - easier to see than 'N' new 0055 * 0056 CASE @IDX.IOTYPE = 2 0057 LOG.TYPE = D ;* delete 0058 * 0059 CASE @IDX.IOTYPE = 3 0060 * 0061 CASE @IDX.IOTYPE = 4 0062 LOG.TYPE = M ;* modified 0063 * 0064 END CASE 0065 * 0066 IF LOG.TYPE # NUL THEN 0067 * 0068 DATE.NOW = DATE() 0069 TIME.NOW = TIME() 0070 * 0071
Re: [U2] universe 11.1 triggers via indexing and @IDX.IOTYPE sample
Phil, Ahh, good catch, I believe you are correct. Thankfully, this should be a very very rare occurrence. Thanks! Should be: 0073 IF DATE.NOW # DATE() AND TIME() TIME.NOW THEN DATE.NOW = DATE() -Original Message- From: u2-users-boun...@listserver.u2ug.org [mailto:u2-users-boun...@listserver.u2ug.org] On Behalf Of Phil Walker Sent: Tuesday, August 27, 2013 11:51 AM To: U2 Users List Subject: Re: [U2] universe 11.1 triggers via indexing and @IDX.IOTYPE sample Should line 73 of your program be rather than for the time as when the date has changed, the time will be less than the time of the date - 1 which you have just set. 0068 DATE.NOW = DATE() 0069 TIME.NOW = TIME() 0073 IF DATE.NOW # DATE() AND TIME() TIME.NOW THEN DATE.NOW = DATE() Example: DATE.NOW = 16789 TIME.NOW = 83999 DATE() = 16790 TIME() = 1 Might be wrong _ Scanned by IBM Email Security Management Services powered by MessageLabs. For more information please visit http://www.ers.ibm.com This email is intended only for the use of the party to which it is addressed and may contain information that is privileged, confidential, or protected by law. If you are not the intended recipient you are hereby notified that any dissemination, copying or distribution of the email or its contents is strictly prohibited. If you have received this message in error, please notify us immediately, by replying to the message and deleting it from your computer. WARNING: Internet communications are not assured to be secure or clear of inaccuracies as information could be intercepted, corrupted, lost, destroyed, arrive late or incomplete, or contain viruses. Therefore, we do not accept responsibility for any errors or omissions that are present in this email, or any attachment, that have arisen as a result of e-mail transmission. _ ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users