× 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.



Thanks for the Info on the API

Here is what I have changed the d specs to 
D*------------------------

D* Message Subfile Parms *

D*------------------------

D   msgId         s              7A   INZ('CPF9898')

D   msgLoc        s             20A   inz('QCPFMSG   *LIBL     ')

D   msgRplDta     s           3000A

D   msgRplDtaLen  s             10i 0 inz(0)

D   msgType       s             10A   inz('*DIAG')

D   msgQueue      s            276A   inz('*')

D   msgCallStack  s             10i 0 inz(0)

D   msgKey        s              4A   inz(' ')

D   msgErr        ds

D    msge1        s             10i 0 inz(0)

D    msge2        s             10i 0 inz

D   msgrmv        s             10A   inz('*ALL')

D*---------------------------------------------


Here are my calcs - Eval Statements are her to force those values when I
debuged the Program
I saw that some values were being reset from what I initialized them as
in the D Specs
Probably data back from QMHRMVPM

0615.00 C                   If        ErrFlg= 'Y'

0616.00 C                   Eval      msgRplDta = 'Business Unit not on
File'                             
0617.00 C                   Eval      msgRplDtaLen =
%len(%TRIM(msgRplDta))                               
0618.00 C                   Eval      msgID = 'CPF9898'

0619.00 C                   Eval      msge1 = 0

0620.00 C                   eval      msgKey = *blanks

0621.00 C                   Exsr      sndmsg

0622.00 C                   Iter

0623.00 C                   ENDIF
Error Condition        
0624.00 C*                  -----


Here is the call
0631.00 C* Send message subroutine

0632.00 C*

0633.00 C     sndmsg        begsr

0634.00 C*

0635.00 C                   call      'QMHSNDPM'

0636.00 C                   parm                    msgId

0637.00 C                   parm                    msgLoc

0638.00 C                   parm                    msgRplDta

0639.00 C                   parm                    msgRplDtaLen

0640.00 C                   parm                    msgType

0641.00 C                   parm                    msgQueue

0642.00 C                   parm                    msgCallStack

0643.00 C                   parm                    msgKey

0644.00 C                   parm                    msgErr

0645.00 C*

0646.00 C                   endsr

0647.00 C*                  -----

0648.00 C*----------------------------


I still do not get the message to display when the error condition
exists - What am I missing

Thanks for your assistance


-----Original Message-----
From: rpg400-l-bounces@xxxxxxxxxxxx
[mailto:rpg400-l-bounces@xxxxxxxxxxxx] On Behalf Of
rpg400-l-request@xxxxxxxxxxxx
Sent: Friday, February 11, 2005 10:27 AM
To: rpg400-l@xxxxxxxxxxxx
Subject: RPG400-L Digest, Vol 4, Issue 184


Send RPG400-L mailing list submissions to
        rpg400-l@xxxxxxxxxxxx

To subscribe or unsubscribe via the World Wide Web, visit
        http://lists.midrange.com/mailman/listinfo/rpg400-l
or, via email, send a message with subject or body 'help' to
        rpg400-l-request@xxxxxxxxxxxx

You can reach the person managing the list at
        rpg400-l-owner@xxxxxxxxxxxx

When replying, please edit your Subject line so it is more specific than
"Re: Contents of RPG400-L digest..."


Today's Topics:

   1. sqlrpgle & copy book (SRamanujan@xxxxxxxxxxxxxxxxxx)
   2. Re: Message Subfile  (Scott Klement)
   3. AW: sqlrpgle & copy book (HauserSSS)
   4. RE: sqlrpgle & copy book (Rick.Chevalier@xxxxxxxxxxxxxxx)
   5. RE: sqlrpgle & copy book (SRamanujan@xxxxxxxxxxxxxxxxxx)
   6. RE: sqlrpgle & copy book (SRamanujan@xxxxxxxxxxxxxxxxxx)
   7. RE: sqlrpgle & copy book (rob@xxxxxxxxx)
   8. RE: sqlrpgle & copy book (SRamanujan@xxxxxxxxxxxxxxxxxx)


----------------------------------------------------------------------

message: 1
date: Thu, 10 Feb 2005 16:32:13 -0600
from: <SRamanujan@xxxxxxxxxxxxxxxxxx>
subject: sqlrpgle & copy book

Hi all,
When I have a copy book that has the data structure, and fetch into the
ds, I get a sql pre-compiler error SQL0312 'The DSNAME is not define or
not usable' Is there anyway to avoid this? Thanks, Sudha

Sudha Ramanujan
SunGard Futures Systems
sramanujan@xxxxxxxxxxxxxxxxxx
(312) 577 6179
(312) 577 6101 - Fax



------------------------------

message: 2
date: Thu, 10 Feb 2005 17:48:06 -0600 (CST)
from: Scott Klement <rpg400-l@xxxxxxxxxxxxxxxx>
subject: Re: Message Subfile 


There are 3 mistakes in your code that jump out at me:

a) Everywhere you have a field defined as "4B 0" it's wrong.  Change
them 
all to "10I 0".  Whenever API documentation says BINARY(4) it's
referring 
to RPG's "10I 0" data type. (Any time you find yourself coding "4B 0" 
stop yourself, because it's probably a mistake. This is the #1 
most common question posted to this mailing list!)

b) Remove the word "VARYING" from your definition of msgRplDta, since
the 
API does not allow the varying data type. That also means that you have 
to trim your field when you calculate the length.  i.e. change 
%len(msgRplDta) to %len(%trimr(msgRplDta))

c) the error code field "msgErr" needs to be at least 8 bytes long.
Yours 
is currently defined as 2 bytes long.  Make it a data structure
containing 
two "10I 0" fields, and set the first one to zero.

Those are the only bugs that stand out, but I've got another suggestion
as 
well:

Please consider writing a prototype for the API, and using that instead
of 
CALL/PARM. That way you can re-use the prototype later and it will 
protect you and other people who use this API from making the same 
mistakes. It also will make it possible to use the API in free format
RPG 
if you ever want to do that.

That advice applies to all other program calls as well, not just this
API.

Hope that helps


On Thu, 10 Feb 2005, Ala, Michael A wrote:
>
> I am trying to Write a Program Message to CPF9898 to display in a 
> message subfile
>
> It Is not Displaying
>
> Here are my D specs
> D   msgId         s              7A   INZ('CPF9898')
> D   msgLoc        s             20A   inz('QCPFMSG   *LIBL     ')
> D   msgRplDta     s           3000A   Varying
> D   msgRplDtaLen  s              4B 0 inz(0)
> D   msgType       s             10A   inz('*INFO')
> D   msgQueue      s            276A   inz('*')
> D   msgCallStack  s              4B 0 inz(0)
> D   msgKey        s              4A   inz(' ')
> D   msgErr        s              4B 0 inz(0)
> D   msgrmv        s             10A   inz('*ALL')
>
> call      'QMHSNDPM'
> parm                    msgId
> parm                    msgLoc
> parm                    msgRplDta
> parm                    msgRplDtaLen
> parm                    msgType
> parm                    msgQueue
> parm                    msgCallStack
> parm                    msgKey
> parm                    msgErr


------------------------------

message: 3
date: Fri, 11 Feb 2005 07:11:22 +0100
from: "HauserSSS" <Hauser@xxxxxxxxxxxxxxx>
subject: AW: sqlrpgle & copy book


Hi Sudha,

do you use a qualified data structure or is the data structure defined
in a nested data structure. If so, you must be on release VR3M0 to get
it to work.

Before Release V5R2M0 you have to define a non qualified data structure.
If you don't use nested copy books, the data structure can be defined in
a copy book.

Birgitta
-----Ursprungliche Nachricht-----
Von: rpg400-l-bounces@xxxxxxxxxxxx
[mailto:rpg400-l-bounces@xxxxxxxxxxxx]Im Auftrag von
SRamanujan@xxxxxxxxxxxxxxxxxx
Gesendet: Donnerstag, 10. Februar 2005 23:32
An: rpg400-l@xxxxxxxxxxxx
Betreff: sqlrpgle & copy book


Hi all,
When I have a copy book that has the data structure, and fetch into the
ds, I get a sql pre-compiler error SQL0312 'The DSNAME is not define or
not usable' Is there anyway to avoid this? Thanks, Sudha

Sudha Ramanujan
SunGard Futures Systems
sramanujan@xxxxxxxxxxxxxxxxxx
(312) 577 6179
(312) 577 6101 - Fax

--
This is the RPG programming on the AS400 / iSeries (RPG400-L) mailing
list To post a message email: RPG400-L@xxxxxxxxxxxx To subscribe,
unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/rpg400-l
or email: RPG400-L-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives
at http://archive.midrange.com/rpg400-l.






------------------------------

message: 4
date: Fri, 11 Feb 2005 08:08:01 -0600
from: <Rick.Chevalier@xxxxxxxxxxxxxxx>
subject: RE: sqlrpgle & copy book


Also make sure the sub fields are defined in your copybook.  I have not
been able to use externally defined data structures as result sets for
embedded SQL.  The compiler always complains they aren't defined or
usable.

I vaguely remember someone posting to this list that they got embedded
SQL to work using an externally described DS as the result set but I may
be mistaken.  Check the archives, this has been discussed several times
before.

Rick

-----Original Message-----
From: rpg400-l-bounces@xxxxxxxxxxxx
[mailto:rpg400-l-bounces@xxxxxxxxxxxx]On Behalf Of
SRamanujan@xxxxxxxxxxxxxxxxxx
Sent: Thursday, February 10, 2005 4:32 PM
To: rpg400-l@xxxxxxxxxxxx
Subject: sqlrpgle & copy book


Hi all,
When I have a copy book that has the data structure, and fetch into the
ds, I get a sql pre-compiler error SQL0312 'The DSNAME is not define or
not usable' Is there anyway to avoid this? Thanks, Sudha

Sudha Ramanujan
SunGard Futures Systems
sramanujan@xxxxxxxxxxxxxxxxxx
(312) 577 6179
(312) 577 6101 - Fax


Privileged and Confidential.  This e-mail, and any attachments there to,
is intended only for use by the addressee(s) named herein and may
contain legally privileged or confidential information.  If you have
received this e-mail in error, please notify me immediately by a return
e-mail and delete this e-mail.  You are hereby notified that any
dissemination, distribution or copying of this e-mail and/or any
attachments thereto, is strictly prohibited.



------------------------------

message: 5
date: Fri, 11 Feb 2005 09:06:01 -0600
from: <SRamanujan@xxxxxxxxxxxxxxxxxx>
subject: RE: sqlrpgle & copy book

Thanks Birgitta,

We are on v5r3, I have a simple non qualified ds and I don't have nested
ds either.  Something like below and it does not compile.  Once I put
the DS within the sqlrpgle, it works. Thanks, Sudha

Rpgle.myds
dfieldDs        ds
d field1                5a
d field2             15p 2
d field3             30a

sqlrpgle  : 
 /copy rpgle,myds
*                                                        
d myDsNullI     ds                                      
d                                   based(myDsNullAd) 
d  myNullAry                   5i 0 dim(21)             

c/exec sql declare c cursor for select * from filea for read only
c/end-exec c/exec sql open c c/end-exec c/exec sql fetch next from c
into :fields :myNullAry c/end-exec c/exec sql close c c/end-exec



Sudha Ramanujan
SunGard Futures Systems
sramanujan@xxxxxxxxxxxxxxxxxx
(312) 577 6179
(312) 577 6101 - Fax

-----Original Message-----
From: HauserSSS [mailto:Hauser@xxxxxxxxxxxxxxx] 
Sent: Friday, February 11, 2005 12:11 AM
To: RPG programming on the AS400 / iSeries
Subject: AW: sqlrpgle & copy book


Hi Sudha,

do you use a qualified data structure or is the data structure defined
in a nested data structure. If so, you must be on release VR3M0 to get
it to work.

Before Release V5R2M0 you have to define a non qualified data structure.
If you don't use nested copy books, the data structure can be defined in
a copy book.

Birgitta
-----Ursprungliche Nachricht-----
Von: rpg400-l-bounces@xxxxxxxxxxxx
[mailto:rpg400-l-bounces@xxxxxxxxxxxx]Im Auftrag von
SRamanujan@xxxxxxxxxxxxxxxxxx
Gesendet: Donnerstag, 10. Februar 2005 23:32
An: rpg400-l@xxxxxxxxxxxx
Betreff: sqlrpgle & copy book


Hi all,
When I have a copy book that has the data structure, and fetch into the
ds, I get a sql pre-compiler error SQL0312 'The DSNAME is not define or
not usable' Is there anyway to avoid this? Thanks, Sudha

Sudha Ramanujan
SunGard Futures Systems
sramanujan@xxxxxxxxxxxxxxxxxx
(312) 577 6179
(312) 577 6101 - Fax

--
This is the RPG programming on the AS400 / iSeries (RPG400-L) mailing
list To post a message email: RPG400-L@xxxxxxxxxxxx To subscribe,
unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/rpg400-l
or email: RPG400-L-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives
at http://archive.midrange.com/rpg400-l.




-- 
This is the RPG programming on the AS400 / iSeries (RPG400-L) mailing
list To post a message email: RPG400-L@xxxxxxxxxxxx To subscribe,
unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/rpg400-l
or email: RPG400-L-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives
at http://archive.midrange.com/rpg400-l.




------------------------------

message: 6
date: Fri, 11 Feb 2005 09:07:19 -0600
from: <SRamanujan@xxxxxxxxxxxxxxxxxx>
subject: RE: sqlrpgle & copy book

Thanks Rick, -s

Sudha Ramanujan
SunGard Futures Systems
sramanujan@xxxxxxxxxxxxxxxxxx
(312) 577 6179
(312) 577 6101 - Fax


-----Original Message-----
From: Rick.Chevalier@xxxxxxxxxxxxxxx
[mailto:Rick.Chevalier@xxxxxxxxxxxxxxx] 
Sent: Friday, February 11, 2005 8:08 AM
To: rpg400-l@xxxxxxxxxxxx
Subject: RE: sqlrpgle & copy book


Also make sure the sub fields are defined in your copybook.  I have not
been able to use externally defined data structures as result sets for
embedded SQL.  The compiler always complains they aren't defined or
usable.

I vaguely remember someone posting to this list that they got embedded
SQL to work using an externally described DS as the result set but I may
be mistaken.  Check the archives, this has been discussed several times
before.

Rick

-----Original Message-----
From: rpg400-l-bounces@xxxxxxxxxxxx
[mailto:rpg400-l-bounces@xxxxxxxxxxxx]On Behalf Of
SRamanujan@xxxxxxxxxxxxxxxxxx
Sent: Thursday, February 10, 2005 4:32 PM
To: rpg400-l@xxxxxxxxxxxx
Subject: sqlrpgle & copy book


Hi all,
When I have a copy book that has the data structure, and fetch into the
ds, I get a sql pre-compiler error SQL0312 'The DSNAME is not define or
not usable' Is there anyway to avoid this? Thanks, Sudha

Sudha Ramanujan
SunGard Futures Systems
sramanujan@xxxxxxxxxxxxxxxxxx
(312) 577 6179
(312) 577 6101 - Fax


Privileged and Confidential.  This e-mail, and any attachments there to,
is intended only for use by the addressee(s) named herein and may
contain legally privileged or confidential information.  If you have
received this e-mail in error, please notify me immediately by a return
e-mail and delete this e-mail.  You are hereby notified that any
dissemination, distribution or copying of this e-mail and/or any
attachments thereto, is strictly prohibited.

-- 
This is the RPG programming on the AS400 / iSeries (RPG400-L) mailing
list To post a message email: RPG400-L@xxxxxxxxxxxx To subscribe,
unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/rpg400-l
or email: RPG400-L-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives
at http://archive.midrange.com/rpg400-l.




------------------------------

message: 7
date: Fri, 11 Feb 2005 10:16:17 -0500
from: rob@xxxxxxxxx
subject: RE: sqlrpgle & copy book

You are doing a /copy and not a /include, right?

Rob Berendt
-- 
Group Dekko Services, LLC
Dept 01.073
PO Box 2000
Dock 108
6928N 400E
Kendallville, IN 46755
http://www.dekko.com





<SRamanujan@xxxxxxxxxxxxxxxxxx> 
Sent by: rpg400-l-bounces@xxxxxxxxxxxx
02/11/2005 10:06 AM
Please respond to
RPG programming on the AS400 / iSeries <rpg400-l@xxxxxxxxxxxx>


To
<rpg400-l@xxxxxxxxxxxx>
cc

Subject
RE: sqlrpgle & copy book






Thanks Birgitta,

We are on v5r3, I have a simple non qualified ds and I don't have nested
ds either.  Something like below and it does not compile.  Once I put
the DS within the sqlrpgle, it works. Thanks, Sudha

Rpgle.myds
dfieldDs                 ds
d field1                                 5a
d field2                      15p 2
d field3                      30a

sqlrpgle  : 
 /copy rpgle,myds
* 
d myDsNullI     ds 
d                                   based(myDsNullAd) 
d  myNullAry                   5i 0 dim(21) 

c/exec sql declare c cursor for select * from filea for read only
c/end-exec c/exec sql open c c/end-exec c/exec sql fetch next from c
into :fields :myNullAry c/end-exec c/exec sql close c c/end-exec



Sudha Ramanujan
SunGard Futures Systems
sramanujan@xxxxxxxxxxxxxxxxxx
(312) 577 6179
(312) 577 6101 - Fax

-----Original Message-----
From: HauserSSS [mailto:Hauser@xxxxxxxxxxxxxxx] 
Sent: Friday, February 11, 2005 12:11 AM
To: RPG programming on the AS400 / iSeries
Subject: AW: sqlrpgle & copy book


Hi Sudha,

do you use a qualified data structure or is the data structure defined
in a nested data structure. If so, you must be on release VR3M0 to get
it to work.

Before Release V5R2M0 you have to define a non qualified data structure.
If you don't use nested copy books, the data structure can be defined in
a copy book.

Birgitta
-----Ursprungliche Nachricht-----
Von: rpg400-l-bounces@xxxxxxxxxxxx
[mailto:rpg400-l-bounces@xxxxxxxxxxxx]Im Auftrag von
SRamanujan@xxxxxxxxxxxxxxxxxx
Gesendet: Donnerstag, 10. Februar 2005 23:32
An: rpg400-l@xxxxxxxxxxxx
Betreff: sqlrpgle & copy book


Hi all,
When I have a copy book that has the data structure, and fetch into the
ds, I get a sql pre-compiler error SQL0312 'The DSNAME is not define or
not usable' Is there anyway to avoid this? Thanks, Sudha

Sudha Ramanujan
SunGard Futures Systems
sramanujan@xxxxxxxxxxxxxxxxxx
(312) 577 6179
(312) 577 6101 - Fax

--
This is the RPG programming on the AS400 / iSeries (RPG400-L) mailing
list To post a message email: RPG400-L@xxxxxxxxxxxx To subscribe,
unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/rpg400-l
or email: RPG400-L-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives
at http://archive.midrange.com/rpg400-l.




-- 
This is the RPG programming on the AS400 / iSeries (RPG400-L) mailing
list To post a message email: RPG400-L@xxxxxxxxxxxx To subscribe,
unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/rpg400-l
or email: RPG400-L-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives
at http://archive.midrange.com/rpg400-l.


-- 
This is the RPG programming on the AS400 / iSeries (RPG400-L) mailing
list To post a message email: RPG400-L@xxxxxxxxxxxx To subscribe,
unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/rpg400-l
or email: RPG400-L-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives
at http://archive.midrange.com/rpg400-l.




------------------------------

message: 8
date: Fri, 11 Feb 2005 09:26:06 -0600
from: <SRamanujan@xxxxxxxxxxxxxxxxxx>
subject: RE: sqlrpgle & copy book

Ok I checked the Archives and found to use /include instead of /copy but
I still get the error SQL0312 'Fields is not defined or not usable'.
What am I doing wrong. My code looks now as:

Rpgle.myds
dfieldDs        ds
d field1                5a
d field2             15p 2
d field3             30a

sqlrpgle  : 
 /include rpgle,myds
*                                                        
d myDsNullI     ds                                      
d                                   based(myDsNullAd) 
d  myNullAry                   5i 0 dim(21)             

c/exec sql declare c cursor for select * from filea for read only 
c/end-exec 
c/exec sql open c 
c/end-exec 
c/exec sql fetch next from c into :fields :myNullAry 
c/end-exec 
c/exec sql close c 
c/end-exec


Sudha Ramanujan
SunGard Futures Systems
sramanujan@xxxxxxxxxxxxxxxxxx
(312) 577 6179
(312) 577 6101 - Fax


-----Original Message-----
From: Rick.Chevalier@xxxxxxxxxxxxxxx
[mailto:Rick.Chevalier@xxxxxxxxxxxxxxx] 
Sent: Friday, February 11, 2005 8:08 AM
To: rpg400-l@xxxxxxxxxxxx
Subject: RE: sqlrpgle & copy book


Also make sure the sub fields are defined in your copybook.  I have not
been able to use externally defined data structures as result sets for
embedded SQL.  The compiler always complains they aren't defined or
usable.

I vaguely remember someone posting to this list that they got embedded
SQL to work using an externally described DS as the result set but I may
be mistaken.  Check the archives, this has been discussed several times
before.

Rick

-----Original Message-----
From: rpg400-l-bounces@xxxxxxxxxxxx
[mailto:rpg400-l-bounces@xxxxxxxxxxxx]On Behalf Of
SRamanujan@xxxxxxxxxxxxxxxxxx
Sent: Thursday, February 10, 2005 4:32 PM
To: rpg400-l@xxxxxxxxxxxx
Subject: sqlrpgle & copy book


Hi all,
When I have a copy book that has the data structure, and fetch into the
ds, I get a sql pre-compiler error SQL0312 'The DSNAME is not define or
not usable' Is there anyway to avoid this? Thanks, Sudha

Sudha Ramanujan
SunGard Futures Systems
sramanujan@xxxxxxxxxxxxxxxxxx
(312) 577 6179
(312) 577 6101 - Fax


Privileged and Confidential.  This e-mail, and any attachments there to,
is intended only for use by the addressee(s) named herein and may
contain legally privileged or confidential information.  If you have
received this e-mail in error, please notify me immediately by a return
e-mail and delete this e-mail.  You are hereby notified that any
dissemination, distribution or copying of this e-mail and/or any
attachments thereto, is strictly prohibited.

-- 
This is the RPG programming on the AS400 / iSeries (RPG400-L) mailing
list To post a message email: RPG400-L@xxxxxxxxxxxx To subscribe,
unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/rpg400-l
or email: RPG400-L-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives
at http://archive.midrange.com/rpg400-l.




------------------------------

-- 
This is the RPG programming on the AS400 / iSeries (RPG400-L) digest
list To post a message email: RPG400-L@xxxxxxxxxxxx To subscribe,
unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/rpg400-l
or email: RPG400-L-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives
at http://archive.midrange.com/rpg400-l.



End of RPG400-L Digest, Vol 4, Issue 184
****************************************


As an Amazon Associate we earn from qualifying purchases.

This thread ...

Follow-Ups:

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.