|
Hello Paul, You wrote: >Maybe this is a FAQ, but what do I need to do to inform Java programs on >my AS/400s that the current time is in Pacific Standard/Daylight Time and >not in GMT? When I get a Date object, the value I get from it is >something like 18:42 GMT instead of 11:42 PDT. Setting up a system >property via -Duser.timezone=PST works, but only as long as all my >AS/400s are actually in the same time zone. Is there a setting somewhere >I can make on each machine? System value QUTCOFFSET = -0700 doesn't seem >to make any difference. I've been through this for a customer in Australia. You need to create a locale object describing the timezone information. The following is an excerpt describing the necessary steps. Change the values as appropriate for your system. You will have less work to perform because IBM supply locale templates for the US. You should only need to change the timezone information which is at the bottom of the locale template. I have attached an Australian example at the end of this note. 1/ QUTCOFFSET should be -10:00 because Australia is West of GMT. The QUTCOFFSET is subtracted from the current system time to derive GMT (which is not how it works on some other platforms). 2/ The JVM sets a property called user.timezone when it starts. It sets this by calling the QlgRetrieveLocaleInformation API. If no timezone information exists, or no locale is found, then GMT is assumed -- hence your problem. 3/ The locale information comes from the user profile or the system value QLOCALE. The default for the user profile is *SYSVAL and the default for the system value is *NONE. 4/ Locales are created from source definitions. Template definitions are found in the QSYSLOCALE library if option 21 "Extended NLS Support" of OS/400 is installed. You can install this from the OS/400 CD-ROM if you want the templates but I have provided one modified for Australia. What you must do to correct the problem: o CRTLIB MY_SYS TEXT('MY system changes.') o CRTSRCPF MY_SYS/LOCALESRC TEXT('Locale definitions.') o Use FTP (or equivalent) to transfer the attached EN_AU locale source to the file o Make any changes to the source as required. You will probably have to change the start and end times of daylight saving time found at the bottom of the source. The source is described in the AS/400 International Application Development manual. o CRTLOCALE LOCALE('/qsys.lib/my_sys.lib/en_au37.locale') SRCFILE('/qsys.lib/my_sys.lib/localesrc.file/en_au.mbr') CCSID(37) TEXT('Australian/English Locale Definition.') NOTE:- I suggest putting the locale in the MY_SYS library but you could put it anywhere, even in the IFS. IBM supplies some locales in /QIBM/locale. o Make the locale available: Global change: CHGSYSVAL QLOCALE('/qsys.lib/my_sys.lib/en_au37.locale') User-specific change CHGUSRPRF user LOCALE('/qsys.lib/my_sys.lib/en_au37.locale') o Test your timestamps <====== Here is a locale definition for Australia ====> comment_char <percent-sign> escape_char <slash> % % SHC @ 00/05/25 % LC_MONETARY : International currency symbol modified for Australian Dollars % LC_TIME : Date format modified for Australia % LC_TOD : TimeZone modified for Australian Eastern Standard Time % % % 5716SS1 (C) COPYRIGHT IBM CORP. 1991,1996 % ALL RIGHTS RESERVED. % US GOVERNMENT USERS RESTRICTED RIGHTS - % USE, DUPLICATION OR DISCLOSURE RESTRICTED % BY GSA ADP SCHEDULE CONTRACT WITH IBM CORP. % % LICENSED MATERIALS-PROPERTY OF IBM % % FILE NAME : EN_AU % % COUNTRY/REGION: AUSTRALIA % % LANGUAGES(S): ENGLISH % % DESCRIPTION: LOCALE SOURCE DEFINITION FILE. % LC_CTYPE upper <A>;<B>;<C>;<D>;<E>;<F>;<G>;<H>;<I>;<J>;<K>;<L>;<M>;/ <N>;<O>;<P>;<Q>;<R>;<S>;<T>;<U>;<V>;<W>;<X>;<Y>;<Z>;/ <A-acute>;<A-grave>;<A-circumflex>;<A-diaresis>;/ <A-tilde>;<A-ring>;<AE>;<C-cedilla>;<Eth>;<E-acute>;/ <E-grave>;<E-circumlex>;<E-diaresis>;<I-acute>;/ <I-grave>;<I-circumflex>;<I-diaresis>;<N-tilde>;/ <O-acute>;<O-grave>;<O-circumflex>;<O-diaresis>;/ <O-tilde>;<O-slash>;<Thorn>;<U-acute>;<U-grave>;/ <U-circumflex>;<U-diaresis>;<Y-acute> lower <a>;<b>;<c>;<d>;<e>;<f>;<g>;<h>;<i>;<j>;<k>;<l>;<m>;/ <n>;<o>;<p>;<q>;<r>;<s>;<t>;<u>;<v>;<w>;<x>;<y>;<z>;/ <a-acute>;<a-grave>;<a-circumflex>;<a-diaresis>;/ <a-tilde>;<a-ring>;<ae>;<c-cedilla>;<eth>;<e-acute>;/ <e-grave>;<e-circumflex>;<e-diaresis>;<i-acute>;/ <i-grave>;<i-circumflex>;<i-diaresis>;<n-tilde>;/ <o-acute>;<o-grave>;<o-circumflex>;<o-diaresis>;/ <o-tilde>;<o-slash>;<s-sharp>;<thorn>;<u-acute>;/ <u-grave>;<u-circumflex>;<u-diaresis>;<y-acute>;/ <y-diaresis> space <tab>;<newline>;<NL>;<vertical-tab>;<form-feed>;<carriage-return>;/ <space> cntrl <NUL>;<SOH>;<STX>;<ETX>;<EOT>;<ENQ>;<ACK>;<alert>;<backspace>;/ <tab>;<newline>;<vertical-tab>;<form-feed>;<carriage-return>;/ <SO>;<SI>;<DLE>;<DC1>;<DC2>;<DC3>;<DC4>;<NAK>;<SYN>;<ETB>;/ <CAN>;<EM>;<SUB>;<ESC>;<IS4>;<IS3>;<IS2>;<IS1>;<DEL>;/ <DS>;<SOS>;<FS>;<WUS>;<BYP>;<NL>;<RNL>;<POC>;<SA>;<SFE>;<SM>;/ <CSP>;<MFA>;<SPS>;<RPT>;<CU1>;<DCS>;<PU1>;<UBS>;<IR>;<PP>;/ <TRN>;<NBS>;<GE>;<SBS>;<IT>;<RFF>;<CU3>;<SEL>;<RES>;<PM>;<EO> graph <exclamation-mark>;<quotation-mark>;<number-sign>; / <dollar-sign>;<percent-sign>;<ampersand>;<apostrophe>; / <left-parenthesis>;<right-parenthesis>;<asterisk>;<plus-sign>;/ <comma>;<hyphen-minus>;<period>;<slash>;/ <zero>;<one>;<two>;<three>;<four>;<five>;<six>;<seven>;/ <eight>;<nine>;<colon>;<semicolon>;<less-than-sign>; / <equals-sign>;<greater-than-sign>;<question-mark>;/ <commercial-at>;<A>;<B>;<C>;<D>;<E>;<F>;<G>;<H>;<I>;<J>;<K>;/ <L>;<M>;<N>;<O>;<P>;<Q>;<R>;<S>;<T>;<U>;<V>;<W>;<X>;<Y>;<Z>;/ <left-square-bracket>;<backslash>;/ <right-square-bracket>;<circumflex>;/ <underscore>;<grave-accent>;/ <a>;<b>;<c>;<d>;<e>;<f>;<g>;<h>;<i>;<j>;<k>;<l>;<m>;/ <n>;<o>;<p>;<q>;<r>;<s>;<t>;<u>;<v>;<w>;<x>;<y>;<z>;/ <left-brace>;<vertical-line>;<right-brace>;/ <tilde>;<C-cedilla>;<u-diaresis>;<e-acute>;<a-circumflex>;/ <a-diaresis>;<a-grave>;<a-ring>;<c-cedilla>;<e-circumflex>;/ <e-diaresis>;<e-grave>;<i-diaresis>;<i-circumflex>;/ <i-grave>;<A-diaresis>;<A-ring>;<E-acute>;<ae>;<AE>;/ <o-circumflex>;<o-diaresis>;<o-grave>;<u-circumflex>;/ <u-grave>;<y-diaresis>;<O-diaresis>;<U-diaresis>;<o-slash>;/ <sterling>;<O-slash>;<multiply>;<a-acute>;<i-acute>;/ <o-acute>;<u-acute>;<n-tilde>;<N-tilde>;<feminine>;/ <masculine>;<question-down>;<registered>;<not>;<one-half>;/ <one-quarter>;<exclamation-down>;<guillemot-left>;/ <guillemot-right>;<A-acute>;<A-circumflex>;<A-grave>;/ <copyright>;<cent>;<yen>;<a-tilde>;<A-tilde>;<currency>;/ <eth>;<Eth>;<E-circumflex>;<E-diaresis>;<E-grave>;/ <I-acute>;<I-circumflex>;<I-diaresis>;<broken-bar>;/ <I-grave>;<O-acute>;<s-sharp>;<O-circumflex>;/ <O-grave>;<o-tilde>;<O-tilde>;<mu>;<thorn>;<Thorn>;<U-acute>;/ <U-circumflex>;<U-grave>;<y-acute>;<Y-acute>;<macron>;/ <acute>;<hyphen>;<plus-minus>;<three-quarters>;<paragraph>;/ <section>;<divide>;<cedilla>;<degree>;<diaresis>;<dot>;/ <one-superior>;<three-superior>;<two-superior> print <space>;<exclamation-mark>;<quotation-mark>;<number-sign>; / <dollar-sign>;<percent-sign>;<ampersand>;<apostrophe>; / <left-parenthesis>;<right-parenthesis>;<asterisk>;<plus-sign>;/ <comma>;<hyphen-minus>;<period>;<slash>;/ <zero>;<one>;<two>;<three>;<four>;<five>;<six>;<seven>;/ <eight>;<nine>;<colon>;<semicolon>;<less-than-sign>; / <equals-sign>;<geater-than-sign>;<question-mark>;/ <commercial-at>;<A>;<B>;<C>;<D>;<E>;<F>;<G>;<H>;<I>;<J>;<K>;/ <L>;<M>;<N>;<O>;<P>;<Q>;<R>;<S>;<T>;<U>;<V>;<W>;<X>;<Y>;<Z>;/ <left-square-bracket>;<backslash>;/ <right-square-bracket>;<circumflex>;/ <underscore>;<grave-accent>;/ <a>;<b>;<c>;<d>;<e>;<f>;<g>;<h>;<i>;<j>;<k>;<l>;<m>;/ <n>;<o>;<p>;<q>;<r>;<s>;<t>;<u>;<v>;<w>;<x>;<y>;<z>;/ <left-brace>;<vertical-line>;<right-brace>;/ <tilde>;<C-cedilla>;<u-diaresis>;<e-acute>;<a-circumflex>;/ <a-diaresis>;<a-grave>;<a-ring>;<c-cedilla>;<e-circumflex>;/ <e-diaresis>;<e-grave>;<i-diaresis>;<i-circumflex>;/ <i-grave>;<A-diaresis>;<A-ring>;<E-acute>;<ae>;<AE>;/ <o-circumflex>;<o-diaresis>;<o-grave>;<u-circumflex>;/ <u-grave>;<y-diaresis>;<O-diaresis>;<U-diaresis>;<o-slash>;/ <sterling>;<O-slash>;<multiply>;<a-acute>;<i-acute>;/ <o-acute>;<u-acute>;<n-tilde>;<N-tilde>;<feminine>;/ <masculine>;<question-down>;<registered>;<not>;<one-half>;/ <one-quarter>;<exclamation-down>;<guillemot-left>;/ <guillemot-right>;<A-acute>;<A-circumflex>;<A-grave>;/ <copyright>;<cent>;<yen>;<a-tilde>;<A-tilde>;<currency>;/ <eth>;<Eth>;<E-circumflex>;<E-diaresis>;<E-grave>;/ <I-acute>;<I-circumflex>;<I-diaresis>;<broken-bar>;/ <I-grave>;<O-acute>;<s-sharp>;<O-circumflex>;/ <O-grave>;<o-tilde>;<O-tilde>;<mu>;<thorn>;<Thorn>;<U-acute>;/ <U-circumflex>;<U-grave>;<y-acute>;<Y-acute>;<macron>;/ <acute>;<hyphen>;<plus-minus>;<three-quarters>;<paragraph>;/ <section>;<divide>;<cedilla>;<degree>;<diaresis>;<dot>;/ <one-superior>;<three-superior>;<two-superior> punct <exclamation-mark>;<quotation-mark>;<number-sign>; / <dollar-sign>;<percent-sign>;<ampersand>;<apostrophe>; / <left-parenthesis>;<right-parenthesis>;<asterisk>;<plus-sign>;/ <comma>;<hyphen-minus>;<period>;<slash>;/ <colon>;<semicolon>;<less-than-sign>; / <equals-sign>;<greater-than-sign>;<question-mark>;/ <commercial-at>;/ <left-square-bracket>;<backslash>;/ <right-square-bracket>;<circumflex>;/ <underscore>;<grave-accent>;/ <left-brace>;<vertical-line>;<right-brace>;/ <tilde> digit <zero>;<one>;<two>;<three>;<four>;/ <five>;<six>;<seven>;<eight>;<nine> xdigit <zero>;<one>;<two>;<three>;<four>;/ <five>;<six>;<seven>;<eight>;<nine>;/ <A>;<B>;<C>;<D>;<E>;<F>;/ <a>;<b>;<c>;<d>;<e>;<f> blank <space>;/ <tab> toupper (<a>,<A>);(<b>,<B>);(<c>,<C>);(<d>,<D>);(<e>,<E>);/ (<f>,<F>);(<g>,<G>);(<h>,<H>);(<i>,<I>);(<j>,<J>);/ (<k>,<K>);(<l>,<L>);(<m>,<M>);(<n>,<N>);(<o>,<O>);/ (<p>,<P>);(<q>,<Q>);(<r>,<R>);(<s>,<S>);(<t>,<T>);/ (<u>,<U>);(<v>,<V>);(<w>,<W>);(<x>,<X>);(<y>,<Y>);/ (<z>,<Z>);(<a-acute>,<A-acute>);(<a-grave>,<A-grave>);/ (<a-circumflex>,<A-circumflex>);(<a-diaresis>,<A-diaresis>);/ (<a-tilde>,<A-tilde>);(<a-ring>,<A-ring>);(<ae>,<AE>);/ (<c-cedilla>,<C-cedilla>);(<eth>,<Eth>);(<e-acute>,<E-acute>);/ (<e-grave>,<E-grave>);(<e-circumflex>,<E-circumflex>);/ (<e-diaresis>,<E-diaresis>);(<i-acute>,<I-acute>);/ (<i-grave>,<I-grave>);(<i-circumflex>,<I-circumflex>);/ (<i-diaresis>,<I-diaresis>);(<n-tilde>,<N-tilde>);/ (<o-acute>,<O-acute>);(<o-grave>,<O-grave>);/ (<o-circumflex>,<O-circumflex>);(<o-diaresis>,<O-diaresis>);/ (<o-tilde>,<O-tilde>);(<o-slash>,<O-slash>);(<thorn>,<Thorn>);/ (<u-acute>,<U-acute>);(<u-grave>,<U-grave>);/ (<u-circumflex>,<U-circumflex>);(<u-diaresis>,<U-diaresis>);/ (<y-acute>,<Y-acute>);(<y-diaresis>,<Y>) tolower (<A>,<a>);(<B>,<b>);(<C>,<c>);(<D>,<d>);(<E>,<e>);/ (<F>,<f>);(<G>,<g>);(<H>,<h>);(<I>,<i>);(<J>,<j>);/ (<K>,<k>);(<L>,<l>);(<M>,<m>);(<N>,<n);(<O>,<o>);/ (<P>,<p>);(<Q>,<q>);(<R>,<r>);(<S>,<s>);(<T>,<t>);/ (<U>,<u>);(<V>,<v>);(<W>,<w>);(<X>,<x>);(<Y>,<y>);/ (<Z>,<z>);(<A-acute>,<a-acute>);(<A-grave>,<a-grave>);/ (<A-circumflex>,<a-circumflex>);(<A-diaresis>,<a-diaresis>);/ (<A-tilde>,<a-tilde>);(<A-ring>,<a-ring>);(<AE>,<ae>);/ (<C-cedilla>,<c-cedilla>);(<Eth>,<eth>);(<E-acute>,<e-acute>);/ (<E-grave>,<e-grave>);(<E-circumflex>,<e-circumflex>);/ (<E-diaresis>,<e-diaresis>);(<I-acute>,<i-acute>);/ (<I-grave>,<i-grave>);(<I-circumflex>,<i-circumflex>);/ (<I-diaresis>,<i-diaresis>);(<N-tilde>,<n-tilde>);/ (<O-acute>,<o-acute>);(<O-grave>,<o-grave>);/ (<O-circumflex>,<o-circumflex>);(<O-diaresis>,<o-diaresis>);/ (<O-tilde>,<o-tilde>);(<O-slash>,<o-slash>);(<Thorn>,<thorn>);/ (<U-acute>,<u-acute>);(<U-grave>,<u-grave>);/ (<U-circumflex>,<u-circumflex>);(<U-diaresis>,<u-diaresis>);/ (<Y-acute>,<y-acute>) END LC_CTYPE LC_COLLATE order_start <NUL> <SOH> <STX> <ETX> <SEL> <tab> <RNL> <DEL> <GE> <SPS> <RPT> <vertical-tab> <form-feed> <carriage-return> <SO> <SI> <DLE> <DC1> <DC2> <DC3> <RES> <NL> <backspace> <POC> <CAN> <EM> <UBS> <CU1> <IS4> <IS3> <IS2> <IS1> <DS> <SOS> <FS> <WUS> <BYP> <newline> <ETB> <ESC> <SA> <SFE> <SM> <CSP> <MFA> <ENQ> <ACK> <alert> <SYN> <IR> <PP> <TRN> <NBS> <EOT> <SBS> <IT> <RFF> <CU3> <DC4> <NAK> <SUB> <EO> <space> <underscore> <macron> <hyphen> <hyphen-minus> <comma> <semicolon> <colon> <exclamation-mark> <exclamation-down> <question-mark> <question-down> <slash> <period> <acute> <grave-accent> <circumflex> <diaresis> <tilde> <dot> <cedilla> <apostrophe> <quotation-mark> <guillemot-left> <guillemot-right> <left-parenthesis> <right-parenthesis> <left-square-bracket> <right-square-bracket> <left-brace> <right-brace> <section> <paragraph> <copyright> <registered> <commercial-at> <currency> <cent> <dollar-sign> <sterling> <yen> <asterisk> <backslash> <ampersand> <number-sign> <percent-sign> <plus-sign> <plus-minus> <divide> <multiply> <less-than-sign> <equals-sign> <greater-than-sign> <not> <vertical-line> <broken-bar> <degree> <mu> <nobreakspace> <zero> <one-quarter> <one-half> <three-quarters> <one> <one-superior> <two> <two-superior> <three> <three-superior> <four> <five> <six> <seven> <eight> <nine> <a> <A> <a-acute> <A-acute> <feminine> <a-grave> <A-grave> <a-circumflex> <A-circumflex> <a-ring> <A-ring> <a-diaresis> <A-diaresis> <a-tilde> <A-tilde> <ae> <AE> <b> <B> <c> <C> <c-cedilla> <C-cedilla> <d> <D> <eth> <Eth> <e> <E> <e-acute> <E-acute> <e-grave> <E-grave> <e-circumflex> <E-circumflex> <e-diaresis> <E-diaresis> <f> <F> <g> <G> <h> <H> <i-dotless> <i> <I> <i-acute> <I-acute> <i-grave> <I-grave> <i-circumflex> <I-circumflex> <i-diaresis> <I-diaresis> <j> <J> <k> <K> <l> <L> <m> <M> <n> <N> <n-tilde> <N-tilde> <o> <O> <masculine> <o-acute> <O-acute> <o-grave> <O-grave> <o-circumflex> <O-circumflex> <o-diaresis> <O-diaresis> <o-tilde> <O-tilde> <o-slash> <O-slash> <p> <P> <q> <Q> <r> <R> <s> <S> <s-sharp> <t> <T> <thorn> <Thorn> <u> <U> <u-acute> <U-acute> <u-grave> <U-grave> <u-circumflex> <U-circumflex> <u-diaresis> <U-diaresis> <v> <V> <w> <W> <x> <X> <y> <Y> <y-acute> <Y-acute> <y-diaresis> <z> <Z> UNDEFINED order_end END LC_COLLATE LC_MONETARY int_curr_symbol "<A><U><D><space>" currency_symbol "<dollar-sign>" mon_decimal_point "<period>" mon_thousands_sep "<comma>" mon_grouping 3 positive_sign "" negative_sign "<hyphen-minus>" int_frac_digits 2 frac_digits 2 p_cs_precedes 1 p_sep_by_space 0 n_cs_precedes 1 n_sep_by_space 0 p_sign_posn 2 n_sign_posn 2 END LC_MONETARY LC_NUMERIC decimal_point "<period>" thousands_sep "<comma>" gruping 3 END LC_NUMERIC LC_TIME abday "<S><u><n>";/ "<M><o><n>";/ "<T><u><e>";/ "<W><e><d>";/ "<T><h><u>";/ "<F><r><i>";/ "<S><a><t>" day "<S><u><n><d><a><y>";/ "<M><o><n><d><a><y>";/ "<T><u><e><s><d><a><y>";/ "<W><e><d><n><e><s><d><a><y>";/ "<T><h><u><r><s><d><a><y>";/ "<F><r><i><d><a><y>";/ "<S><a><t><u><r><d><a><y>" abmon "<J><a><n>";/ "<F><e><b>";/ "<M><a><r>";/ "<A><p><r>";/ "<M><a><y>";/ "<J><u><n>";/ "<J><u><l>";/ "<A><u><g>";/ "<S><e><p>";/ "<O><c><t>";/ "<N><o><v>";/ "<D><e><c>" mon "<J><a><n><u><a><r><y>";/ "<F><e><b><r><u><a><r><y>";/ "<M><a><r><c><h>";/ "<A><p><r><i><l>";/ "<M><a><y>";/ "<J><u><n><e>";/ "<J><u><l><y>";/ "<A><u><g><u><s><t>";/ "<S><e><p><t><e><m><b><e><r>";/ "<O><c><t><o><b><e><r>";/ "<N><o><v><e><m><b><e><r>";/ "<D><e><c><e><m><b><e><r>" d_t_fmt "%a %b %e %H:%M:%S %Z %Y" d_fmt "%d//%m//%y" t_fmt "%H:%M:%S" am_pm "<A><M>";"<P><M>" END LC_TIME LC_MESSAGES yesexpr "([yY][eE][sS]|[yY])" noexpr "([nN][oO]|[nN])" yesstr "yes:y:Y" nostr "no:n:N" END LC_MESSAGES LC_TOD % % Set Timezone difference from GMT % subtracted from system time to get GMT tzdiff -600 % % Set Timezone name (AEST - Australian Eastern Standard Time) tname "<A><E><S><T>" % % Set Daylight Saving Time name (AEDT - Australian Eastern Daylight Time) dstname "<A><E><D><T>" % % Set Daylight Saving Time to start on last Sunday in October at 2:00am % month, week, day, time dststart 10,-1,7,7200 % % Set Daylight Saving Time to end on last Sunday in March at 2:00am % month, week, day, time dstend 4,-1,7,7200 % % Set Daylight Saving Time shift to 1 hour dstshift 3600 END LC_TOD Regards, Simon Coulter. «»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«» «» FlyByNight Software AS/400 Technical Specialists «» «» Eclipse the competition - run your business on an IBM AS/400. «» «» «» «» 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 / \ «» «»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«» +--- | This is the JAVA/400 Mailing List! | To submit a new message, send your mail to JAVA400-L@midrange.com. | To subscribe to this list send email to JAVA400-L-SUB@midrange.com. | To unsubscribe from this list send email to JAVA400-L-UNSUB@midrange.com. | Questions should be directed to the list owner: joe@zappie.net +---
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.