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



Jon,

So what happens here?

https://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzase/passing.htm
If you want to pass a literal value to a called program, specify:

CALL…BY CONTENT literal


Charles


On Wed, May 13, 2015 at 1:03 AM, Jon Paris <jon.paris@xxxxxxxxxxxxxx> wrote:

> In RPG IV if the Proto says 10a Const (or Value for that matter) and you
> pass ‘A’ then the compiler creates a 10a area, copies the data to it (i.e.
> ‘A         ‘) and then passes the temp.
>
> In COBOL I would have to define an X(10) field, move ‘A’ into it and then
> pass that.
>
>
> Jon Paris
>
> www.partner400.com
> www.SystemiDeveloper.com
>
> On May 12, 2015, at 7:36 PM, Charles Wilt <charles.wilt@xxxxxxxxx> wrote:
>
> > Brad said something (that I interpreted) to that effect.
> >
> > How can you have a field the same length if you can pass a literal?
> >
> > If the parm is 10A, and you want to pass 'HI' to you have to pass 'HI
> > '?
> >
> > I've never used COBOL on the i, but my first paid language was
> COBOL...so I
> > was curious enough to glance through than ILE COBOL manuals :)
> >
> > Charles
> >
> >
> >
> >
> > On Tue, May 12, 2015 at 9:55 PM, Jon Paris <jon.paris@xxxxxxxxxxxxxx>
> wrote:
> >
> >> Nobody said it did Charles.
> >>
> >> I just said it was harder in COBOL because the compiler doesn’t do any
> >> work for you.  Even BY CONTENT is not the same because the field passed
> >> still has to have the correct length and data type.
> >>
> >>
> >> Jon Paris
> >>
> >> www.partner400.com
> >> www.SystemiDeveloper.com
> >>
> >> On May 12, 2015, at 5:07 PM, Charles Wilt <charles.wilt@xxxxxxxxx>
> wrote:
> >>
> >>> Just for the archive...the link Brad provided to a post by Bruce has:
> >>>
> >>> "If your RPG procedure prototypes a parameter as VALUE you’ll use BY
> >> VALUE
> >>> in COBOL. If the prototype has CONST you’ll use BY CONTENT. And if
> >> neither
> >>> VALUE or CONST, use BY REFERENCE. GIVING identifies the procedures
> RETURN
> >>> value."
> >>>
> >>> The programmers guide shows:
> >>> CALL…BY CONTENT identifier
> >>> CALL…BY CONTENT literal
> >>>
> >>> I'm a little confused by this statement in the language reference
> >> regarding
> >>> BY CONTENT Phrase - "The number of characters in each parameter must be
> >>> equal; however, the data descriptions need not be the same."
> >>>
> >>> Also seems that COBOL supports omittable parms also.
> >>>
> >>> So I don't see any indication that CONST on an RPG param prevents
> calling
> >>> by COBOL.
> >>>
> >>> Charles
> >>>
> >>>
> >>> On Mon, May 11, 2015 at 11:58 PM, Bradley Stone <bvstone@xxxxxxxxx>
> >> wrote:
> >>>
> >>>> I wondered the same thing, Henrick.
> >>>>
> >>>> I haven't done COBOL since the 90s but a search shows this answer from
> >>>> Bruce Vinning:
> >>>>
> >>>>
> >>>>
> >>
> http://itknowledgeexchange.techtarget.com/itanswers/calling-rpg-proc-from-cobol-ile/
> >>>>
> >>>> I guess I just assumed that with ILE things worked as ILE... If CONST
> >> ruins
> >>>> that relationship maybe it should be more "publicized".  :)  I plan
> too
> >>>> look further into this issue that's for sure as it's the first I've
> >> heard
> >>>> of it.
> >>>>
> >>>> Brad
> >>>> www.bvstools.com
> >>>>
> >>>> On Mon, May 11, 2015 at 2:03 AM, Henrik Rützou <hr@xxxxxxxxxxxx>
> wrote:
> >>>>
> >>>>> I know nothing about COBOL interface to RPG service programs, what is
> >>>>> the difference (besides the /copybook) ?
> >>>>>
> >>>>> On Mon, May 11, 2015 at 5:04 AM, Kelly Cookson <
> KCookson@xxxxxxxxxxxx>
> >>>>> wrote:
> >>>>>
> >>>>>> Thanks Jon. There are a number of tools for mobile development on
> the
> >>>> IBM
> >>>>>> i.
> >>>>>>
> >>>>>> However, our shop has decided to develop mobile client interfaces
> >> using
> >>>>>> responsive web sites and hybrid apps (Cordorva/PhoneGap). This is
> >>>> because
> >>>>>> all of our current mobile developers are coming from a background of
> >>>>>> Microsoft .NET web development. Our shop has spent years developing
> >>>>>> websites that connect to the IBM i using web services written in
> .NET
> >>>> and
> >>>>>> using the .NET Data Provider.
> >>>>>>
> >>>>>> For our IBM i COBOL developers (including myself) to become web and
> >>>>> mobile
> >>>>>> developers, we will have to use HTML5, CSS3, JavaScript, AJAX, JSON
> >> and
> >>>>>> Cordova/PhoneGap to develop client interfaces. I was hoping to use
> >>>>> Node.JS
> >>>>>> on the IBM i to give our COBOL developers a path to web services
> >>>> without
> >>>>>> having to learn .NET. Node.JS isn't going to work for us at this
> time.
> >>>>> But
> >>>>>> we can: (a) use our shop's standard technologies to develop web and
> >>>>> mobile
> >>>>>> client interfaces, and (b) hook up the client interfaces to web
> >>>> services
> >>>>>> developed with COBOL CGI programs. This gets our IBM i COBOL
> >> developers
> >>>>>> into web and mobile development without having to learn .NET, and it
> >>>>>> leverages our existing expertise in COBOL.
> >>>>>>
> >>>>>> I have designed an architecture for CGI programming on the IBM i
> that
> >>>>>> conforms to REST architectural constraints as described in
> Fielding's
> >>>>>> dissertation. I am now gathering information on tools available to
> >> help
> >>>>> us
> >>>>>> with the COBOL CGI programming. Next step, proof of concepts...
> >>>>>>
> >>>>>> Thanks,
> >>>>>> Kelly
> >>>>>>
> >>>>>>
> >>>>>> -----Original Message-----
> >>>>>> From: WEB400 [mailto:web400-bounces@xxxxxxxxxxxx] On Behalf Of Jon
> >>>> Paris
> >>>>>> Sent: Sunday, May 10, 2015 9:36 PM
> >>>>>> To: Web400@Midrange. Web400
> >>>>>> Subject: Re: [WEB400] Does the eRPG SDK template system support
> JSON?
> >>>>>>
> >>>>>> For Mobile development with COBOL you should really take a look at
> >>>>> Lansa's
> >>>>>> LongRange http://www.longrangemobile.com
> >>>>>>
> >>>>>> I know that works pretty well with COBOL because I helped translate
> a
> >>>> few
> >>>>>> of the RPG examples into COBOL.
> >>>>>>
> >>>>>>
> >>>>>> Jon Paris
> >>>>>>
> >>>>>> www.partner400.com
> >>>>>> www.SystemiDeveloper.com
> >>>>>>
> >>>>>> On May 10, 2015, at 8:00 PM, Kelly Cookson <KCookson@xxxxxxxxxxxx>
> >>>>> wrote:
> >>>>>>
> >>>>>>> I will look for the template system in CGICBLDEV2 when I get it
> >>>>>> installed and start playing around with it.
> >>>>>>>
> >>>>>>> I literally just started looking at CGI tools. I recently learned
> >>>> that
> >>>>>>> our shop will not be adopting Node.JS on the IBM i at any time in
> the
> >>>>>>> foreseeable future. Kind of a bummer. But the same reasons for not
> >>>>>>> adopting Node.JS make CGI using COBOL programs an attractive
> >>>>>>> alternative. (Every shop is different, and I'm sure Node.JS will
> work
> >>>>>>> wonderfully for a lot of shops. It's just not a good fit for us at
> >>>>>>> this time.)
> >>>>>>>
> >>>>>>> I'm still committed to helping our IBM i COBOL developers become
> web
> >>>>>>> and mobile developers as well. ;-)
> >>>>>>>
> >>>>>>> Thanks,
> >>>>>>> Kelly
> >>>>>>>
> >>>>>>> -----Original Message-----
> >>>>>>> From: WEB400 [mailto:web400-bounces@xxxxxxxxxxxx] On Behalf Of Jon
> >>>>>>> Paris
> >>>>>>> Sent: Sunday, May 10, 2015 7:30 PM
> >>>>>>> To: Web400@Midrange. Web400
> >>>>>>> Subject: Re: [WEB400] Does the eRPG SDK template system support
> JSON?
> >>>>>>>
> >>>>>>> CGICBLDEV2 uses a template system too Kelly.
> >>>>>>>
> >>>>>>>
> >>>>>>> Jon Paris
> >>>>>>>
> >>>>>>> www.partner400.com
> >>>>>>> www.SystemiDeveloper.com
> >>>>>>>
> >>>>>>> On May 10, 2015, at 12:55 PM, Kelly Cookson <KCookson@xxxxxxxxxxxx
> >
> >>>>>> wrote:
> >>>>>>>
> >>>>>>>> Thanks Jon. I am looking at CGICBLDEV2 as well. And I'm looking at
> >>>>>> other solutions such as the CGI interface to XMLSERVICE and iWebSrv.
> >>>>>>>>
> >>>>>>>> The thing I like about eRPG SDK is the use of a template system to
> >>>>>> format data for return to the client. This seems to me a potentially
> >>>>>> intuitive way for developers who only do COBOL and DDS to deal with
> >>>>>> returning JSON data. Still, I am also looking at other options for
> >> JSON
> >>>>>> with COBOL (YAJL, PowerEXT, Redvers COBOL JSPN Interface).
> >>>>>>>>
> >>>>>>>> The client interfaces we develop will using jQuery AJAX to make
> GET
> >>>>> and
> >>>>>> POST requests, and they will be expecting data formatted in JSON as
> >> the
> >>>>>> response. By keep the contract between the client and the web
> service
> >>>>>> uniform (AJAX GET and POST requests, JSON responses) we can develop
> >>>>> client
> >>>>>> interfaces that can easily switch between IBM i back ends and
> Windows
> >>>>> back
> >>>>>> ends. We just need to point the client to a new URL to switch back
> >>>> ends.
> >>>>>> This is one of the benefits of the uniform interface constraint of
> >>>>> RESTful
> >>>>>> architecture.
> >>>>>>>>
> >>>>>>>> Thanks,
> >>>>>>>> Kelly
> >>>>>>>>
> >>>>>>>> -----Original Message-----
> >>>>>>>> From: WEB400 [mailto:web400-bounces@xxxxxxxxxxxx] On Behalf Of
> Jon
> >>>>>>>> Paris
> >>>>>>>> Sent: Sunday, May 10, 2015 10:23 AM
> >>>>>>>> To: Web400@Midrange. Web400
> >>>>>>>> Subject: Re: [WEB400] Does the eRPG SDK template system support
> >>>> JSON?
> >>>>>>>>
> >>>>>>>> Kelly,
> >>>>>>>>
> >>>>>>>> You might want to also look at the COBOL interfaces for CGIDEV2 (
> >>>>>> http://www.easy400.net/cgicbldev2p/start.pgm).
> >>>>>>>>
> >>>>>>>> No disrespect to Brad's eRPG but some RPG-oriented interfaces can
> be
> >>>>>> very difficult to use in COBOL. Reason, in part, is that such
> routines
> >>>>> tend
> >>>>>> to take advantage of the facilities offered by prototypes - for
> >> example
> >>>>> the
> >>>>>> keyword CONST allows you to specify a literal instead of a variable.
> >>>>> COBOL
> >>>>>> has no such option and therefore the fields usually need to be
> passed
> >>>>>> exactly as specified in the called routine. That usually requires
> >>>> quite a
> >>>>>> bit more work and makes the examples hard to follow.
> >>>>>>>>
> >>>>>>>> Giovanni has already done the grunt work and provided documented
> >>>>> native
> >>>>>> COBOL interfaces to CGIDEV2 routines that make it much easier.
> >>>>>>>>
> >>>>>>>> Just a thought.  Unless Brad has added a lot of new stuff to eRPG
> >>>> that
> >>>>>> I am unaware of, I think that the capabilities of CGIDEV2 are a
> close
> >>>>> match.
> >>>>>>>>
> >>>>>>>>
> >>>>>>>> Jon Paris
> >>>>>>>>
> >>>>>>>> www.partner400.com
> >>>>>>>> www.SystemiDeveloper.com
> >>>>>>>>
> >>>>>>>> On May 10, 2015, at 10:46 AM, Kelly Cookson <KCookson@xxxxxxxxxxxx
> >
> >>>>>> wrote:
> >>>>>>>>
> >>>>>>>>> Thanks Brad.
> >>>>>>>>>
> >>>>>>>>> I assume I wouldn't have any problems implementing this in ILE
> >>>> COBOL.
> >>>>>> I've seen several tutorial examples of creating JSON in RPG, which
> is
> >>>>> made
> >>>>>> easier by built-in functions (like trim) and by  the new +=
> assignment
> >>>>>> operator. Unfortunately, RPG is not a standard language in our shop.
> >> So
> >>>>> I'd
> >>>>>> need to use eRPG SDK in ILE COBOL.
> >>>>>>>>>
> >>>>>>>>> Thanks,
> >>>>>>>>> Kelly
> >>>>>>>>>
> >>>>>>>>> -----Original Message-----
> >>>>>>>>> From: WEB400 [mailto:web400-bounces@xxxxxxxxxxxx] On Behalf Of
> >>>>>>>>> Bradley Stone
> >>>>>>>>> Sent: Sunday, May 10, 2015 8:10 AM
> >>>>>>>>> To: Web Enabling the IBM i (AS/400 and iSeries)
> >>>>>>>>> Subject: Re: [WEB400] Does the eRPG SDK template system support
> >>>> JSON?
> >>>>>>>>>
> >>>>>>>>> Hi, Kelly.
> >>>>>>>>>
> >>>>>>>>> The eRPG SDK is a template designed system, so if you create JSON
> >>>>>> templates the eRPG SDK would work the same as if it was using XML,
> >>>> HTML,
> >>>>> or
> >>>>>> pretty much anything else.
> >>>>>>>>>
> >>>>>>>>> It doesn't know what type of data you're creating using the
> >>>>>>>>> templates and replacement variables.  :)
> >>>>>>>>>
> >>>>>>>>> Brad
> >>>>>>>>> www.bvstools.com
> >>>>>>>>>
> >>>>>>>>> On Sun, May 10, 2015 at 2:15 AM, Kelly Cookson
> >>>>>>>>> <KCookson@xxxxxxxxxxxx>
> >>>>>>>>> wrote:
> >>>>>>>>>
> >>>>>>>>>> Suppose I want to develop a CGI program in ILE COBOL using eRPG
> >>>> SDK.
> >>>>>>>>>>
> >>>>>>>>>> Can the ILE COBOL program read a DB2 table and use the eRPG SDK
> >>>>>>>>>> template system to return a JSON string?
> >>>>>>>>>>
> >>>>>>>>>> Thanks,
> >>>>>>>>>>
> >>>>>>>>>> Kelly Cookson
> >>>>>>>>>> IT Project Leader
> >>>>>>>>>> Dot Foods, Inc.
> >>>>>>>>>> 1.217.773.4486 ext. 12676
> >>>>>>>>>> kcookson@xxxxxxxxxxxx<mailto:kcookson@xxxxxxxxxxxx>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>> --
> >>>>>>>>>> This is the Web Enabling the IBM i (AS/400 and iSeries) (WEB400)
> >>>>>>>>>> mailing list To post a message email: WEB400@xxxxxxxxxxxx To
> >>>>>>>>>> subscribe, unsubscribe, or change list options,
> >>>>>>>>>> visit: http://lists.midrange.com/mailman/listinfo/web400
> >>>>>>>>>> or email: WEB400-request@xxxxxxxxxxxx Before posting, please
> >>>> take a
> >>>>>>>>>> moment to review the archives at
> >>>> http://archive.midrange.com/web400
> >>>>> .
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>> --
> >>>>>>>>> This is the Web Enabling the IBM i (AS/400 and iSeries) (WEB400)
> >>>>>>>>> mailing list To post a message email: WEB400@xxxxxxxxxxxx To
> >>>>>>>>> subscribe, unsubscribe, or change list options,
> >>>>>>>>> visit: http://lists.midrange.com/mailman/listinfo/web400
> >>>>>>>>> or email: WEB400-request@xxxxxxxxxxxx Before posting, please
> take
> >>>> a
> >>>>>>>>> moment to review the archives at
> >>>> http://archive.midrange.com/web400.
> >>>>>>>>>
> >>>>>>>>> --
> >>>>>>>>> This is the Web Enabling the IBM i (AS/400 and iSeries) (WEB400)
> >>>>>>>>> mailing list To post a message email: WEB400@xxxxxxxxxxxx To
> >>>>>>>>> subscribe, unsubscribe, or change list options,
> >>>>>>>>> visit: http://lists.midrange.com/mailman/listinfo/web400
> >>>>>>>>> or email: WEB400-request@xxxxxxxxxxxx Before posting, please
> take
> >>>> a
> >>>>>>>>> moment to review the archives at
> >>>> http://archive.midrange.com/web400.
> >>>>>>>>>
> >>>>>>>>
> >>>>>>>> --
> >>>>>>>> This is the Web Enabling the IBM i (AS/400 and iSeries) (WEB400)
> >>>>>>>> mailing list To post a message email: WEB400@xxxxxxxxxxxx To
> >>>>>>>> subscribe, unsubscribe, or change list options,
> >>>>>>>> visit: http://lists.midrange.com/mailman/listinfo/web400
> >>>>>>>> or email: WEB400-request@xxxxxxxxxxxx Before posting, please
> take a
> >>>>>>>> moment to review the archives at
> http://archive.midrange.com/web400
> >>>> .
> >>>>>>>>
> >>>>>>>> --
> >>>>>>>> This is the Web Enabling the IBM i (AS/400 and iSeries) (WEB400)
> >>>>>>>> mailing list To post a message email: WEB400@xxxxxxxxxxxx To
> >>>>>>>> subscribe, unsubscribe, or change list options,
> >>>>>>>> visit: http://lists.midrange.com/mailman/listinfo/web400
> >>>>>>>> or email: WEB400-request@xxxxxxxxxxxx Before posting, please
> take a
> >>>>>>>> moment to review the archives at
> http://archive.midrange.com/web400
> >>>> .
> >>>>>>>>
> >>>>>>>
> >>>>>>> --
> >>>>>>> This is the Web Enabling the IBM i (AS/400 and iSeries) (WEB400)
> >>>>>>> mailing list To post a message email: WEB400@xxxxxxxxxxxx To
> >>>>>>> subscribe, unsubscribe, or change list options,
> >>>>>>> visit: http://lists.midrange.com/mailman/listinfo/web400
> >>>>>>> or email: WEB400-request@xxxxxxxxxxxx
> >>>>>>> Before posting, please take a moment to review the archives at
> >>>>>>> http://archive.midrange.com/web400.
> >>>>>>>
> >>>>>>> --
> >>>>>>> This is the Web Enabling the IBM i (AS/400 and iSeries) (WEB400)
> >>>>>>> mailing list To post a message email: WEB400@xxxxxxxxxxxx To
> >>>>>>> subscribe, unsubscribe, or change list options,
> >>>>>>> visit: http://lists.midrange.com/mailman/listinfo/web400
> >>>>>>> or email: WEB400-request@xxxxxxxxxxxx
> >>>>>>> Before posting, please take a moment to review the archives at
> >>>>>>> http://archive.midrange.com/web400.
> >>>>>>>
> >>>>>>
> >>>>>> --
> >>>>>> This is the Web Enabling the IBM i (AS/400 and iSeries) (WEB400)
> >>>> mailing
> >>>>>> list To post a message email: WEB400@xxxxxxxxxxxx To subscribe,
> >>>>>> unsubscribe, or change list options,
> >>>>>> visit: http://lists.midrange.com/mailman/listinfo/web400
> >>>>>> or email: WEB400-request@xxxxxxxxxxxx
> >>>>>> Before posting, please take a moment to review the archives at
> >>>>>> http://archive.midrange.com/web400.
> >>>>>>
> >>>>>> --
> >>>>>> This is the Web Enabling the IBM i (AS/400 and iSeries) (WEB400)
> >>>> mailing
> >>>>>> list
> >>>>>> To post a message email: WEB400@xxxxxxxxxxxx
> >>>>>> To subscribe, unsubscribe, or change list options,
> >>>>>> visit: http://lists.midrange.com/mailman/listinfo/web400
> >>>>>> or email: WEB400-request@xxxxxxxxxxxx
> >>>>>> Before posting, please take a moment to review the archives
> >>>>>> at http://archive.midrange.com/web400.
> >>>>>>
> >>>>>>
> >>>>>
> >>>>>
> >>>>> --
> >>>>> Regards,
> >>>>> Henrik Rützou
> >>>>>
> >>>>> http://powerEXT.com <http://powerext.com/>
> >>>>> --
> >>>>> This is the Web Enabling the IBM i (AS/400 and iSeries) (WEB400)
> >> mailing
> >>>>> list
> >>>>> To post a message email: WEB400@xxxxxxxxxxxx
> >>>>> To subscribe, unsubscribe, or change list options,
> >>>>> visit: http://lists.midrange.com/mailman/listinfo/web400
> >>>>> or email: WEB400-request@xxxxxxxxxxxx
> >>>>> Before posting, please take a moment to review the archives
> >>>>> at http://archive.midrange.com/web400.
> >>>>>
> >>>>>
> >>>> --
> >>>> This is the Web Enabling the IBM i (AS/400 and iSeries) (WEB400)
> mailing
> >>>> list
> >>>> To post a message email: WEB400@xxxxxxxxxxxx
> >>>> To subscribe, unsubscribe, or change list options,
> >>>> visit: http://lists.midrange.com/mailman/listinfo/web400
> >>>> or email: WEB400-request@xxxxxxxxxxxx
> >>>> Before posting, please take a moment to review the archives
> >>>> at http://archive.midrange.com/web400.
> >>>>
> >>>>
> >>> --
> >>> This is the Web Enabling the IBM i (AS/400 and iSeries) (WEB400)
> mailing
> >> list
> >>> To post a message email: WEB400@xxxxxxxxxxxx
> >>> To subscribe, unsubscribe, or change list options,
> >>> visit: http://lists.midrange.com/mailman/listinfo/web400
> >>> or email: WEB400-request@xxxxxxxxxxxx
> >>> Before posting, please take a moment to review the archives
> >>> at http://archive.midrange.com/web400.
> >>>
> >>
> >> --
> >> This is the Web Enabling the IBM i (AS/400 and iSeries) (WEB400) mailing
> >> list
> >> To post a message email: WEB400@xxxxxxxxxxxx
> >> To subscribe, unsubscribe, or change list options,
> >> visit: http://lists.midrange.com/mailman/listinfo/web400
> >> or email: WEB400-request@xxxxxxxxxxxx
> >> Before posting, please take a moment to review the archives
> >> at http://archive.midrange.com/web400.
> >>
> >>
> > --
> > This is the Web Enabling the IBM i (AS/400 and iSeries) (WEB400) mailing
> list
> > To post a message email: WEB400@xxxxxxxxxxxx
> > To subscribe, unsubscribe, or change list options,
> > visit: http://lists.midrange.com/mailman/listinfo/web400
> > or email: WEB400-request@xxxxxxxxxxxx
> > Before posting, please take a moment to review the archives
> > at http://archive.midrange.com/web400.
> >
>
> --
> This is the Web Enabling the IBM i (AS/400 and iSeries) (WEB400) mailing
> list
> To post a message email: WEB400@xxxxxxxxxxxx
> To subscribe, unsubscribe, or change list options,
> visit: http://lists.midrange.com/mailman/listinfo/web400
> or email: WEB400-request@xxxxxxxxxxxx
> Before posting, please take a moment to review the archives
> at http://archive.midrange.com/web400.
>
>

As an Amazon Associate we earn from qualifying purchases.

This thread ...

Follow-Ups:
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.