|
This should work...you can reformat the chgvar however you want
it....I've already spent too much time on this...
PGM
DCL VAR(&DIV) TYPE(*CHAR) LEN(1) value('x')
DCL VAR(&BOOK) TYPE(*CHAR) LEN(6) value('bk')
Dcl &qryslt *char 2000
CHGVAR VAR(&QRYSLT) VALUE('GTBDTE *EQ "' *CAT &BOOK
*TCAT +
'" *AND GTACCT *EQ 3120 *AND GTSOUR *EQ "BI" +
*AND GTDIV *EQ "' *CAT &DIV *TCAT '" *OR GTBDTE
*EQ +
"' *CAT &BOOK *CAT '" *AND GTACCT *EQ 3140 *AND
+
GTSOUR *EQ "BI" *AND GTDIV *EQ "' *CAT &DIV +
*TCAT '" *OR GTBDTE *EQ "' *CAT &BOOK *CAT '"
*AND +
GTACCT *EQ 3150 *AND GTSOUR *EQ "BI" *AND GTDIV
+
*EQ "' *CAT &DIV *TCAT '" *OR GTBDTE *EQ "' *CAT
+
&BOOK *CAT '" *AND GTACCT *EQ 3170 *AND GTSOUR
+
*EQ "BI" *AND GTDIV *EQ "' *CAT &DIV *TCAT '"
*OR +
GTBDTE *EQ "' *CAT &BOOK *CAT '" *AND GTACCT
*EQ +
3190 *AND GTSOUR *EQ "BI" *AND GTDIV *EQ "'
*CAT +
&DIV *TCAT '" *OR GTBDTE *EQ "' *CAT &BOOK *CAT
'" +
*AND GTACCT *EQ 3300 *AND GTSOUR *EQ "BI" *AND
+
GTDIV *EQ "' *CAT &DIV *TCAT '" *OR GTBDTE *EQ
"' +
*CAT &BOOK *CAT '" *AND GTACCT *EQ 3120 *AND +
GTSOUR *EQ "AR" *AND GTDIV *EQ "' *CAT &DIV +
*TCAT '" *OR GTBDTE *EQ "' *CAT &BOOK *CAT '"
*AND +
GTACCT *EQ 3140 *AND GTSOUR *EQ "AR" *AND GTDIV
+
*EQ "' *CAT &DIV *TCAT '" *OR GTBDTE *EQ "' *CAT
+
&BOOK *CAT '" *AND GTACCT *EQ 3150 *AND GTSOUR
+
*EQ "AR" *AND GTDIV *EQ "' *CAT &DIV *TCAT '"
*OR +
GTBDTE *EQ "' *CAT &BOOK *CAT '" *AND GTACCT
*EQ +
3170 *AND GTSOUR *EQ "AR" *AND GTDIV *EQ "'
*CAT +
&DIV *TCAT '" *OR GTBDTE *EQ "' *CAT &BOOK *CAT
'" +
*AND GTACCT *EQ 3190 *AND GTSOUR *EQ "AR" *AND
+
GTDIV *EQ "' *CAT &DIV *TCAT '" *OR GTBDTE *EQ
"' +
*CAT &BOOK *CAT '" *AND GTACCT *EQ 3300 *AND +
GTSOUR *EQ "AR" *AND GTDIV *EQ "' *CAT &DIV
*tcat +
'"')
OPNQRYF FILE((DOR400/GLTRAN)) QRYSLT(&qryslt)
KEYFLD((GTREF))
return
endpgm
Thanks,
Tommy Holden
-----Original Message-----
From: midrange-l-bounces@xxxxxxxxxxxx
[mailto:midrange-l-bounces@xxxxxxxxxxxx] On Behalf Of rick baird
Sent: Tuesday, August 22, 2006 9:37 AM
To: Midrange Systems Technical Discussion
Subject: Re: PROBLEM WITH OPNQRYF
or, based on the code you posted, this should work too.
CHGVAR &QSLT
VALUE('GTBDTE *EQ ' *CAT &BOOK *CAT +
' *AND GTDIV *EQ "' *CAT &DIV *TCAT +
'" *AND GTSOUR *EQ %VALUES("BI","AR") +
*AND GTACCT *EQ %VALUES(3120, 3140, 3150, 3170, 3170)')
this assumes of course these fields in your file, GTACCT and GTBDTE
are numeric, and GTDIV and GTSOUR are alpha.
compile with *srcdbg, then STRDBG OPMSRC(*yes), and step through the
CHGVAR and see what you get.
On 8/22/06, Bob O. <otis_the_cat@xxxxxxxxxxx> wrote:
Ok Ken, I I added the quotes like you said. When I run the program I am
still
getting the CPF9899 error message saying that I'm missing an
operand. I
can't see where I'm missing anything.
PGM
QSYS/DCL VAR(&DIV) TYPE(*CHAR) LEN(1)
QSYS/DCL VAR(&BOOK) TYPE(*CHAR) LEN(6)
/*
*/
QSYS/CALL PGM(DOR400/GL270A)
QSYS/RTVDTAARA DTAARA(*LDA (9 6)) RTNVAR(&BOOK)
QSYS/RTVDTAARA DTAARA(*LDA (15 1)) RTNVAR(&DIV)
/*
*/
QSYS/OVRDBF FILE(GLTRAN) SHARE(*YES)
QSYS/OPNQRYF FILE((DOR400/GLTRAN)) QRYSLT(' +
GTBDTE *EQ ' *CAT &BOOK *CAT ' +
*AND GTACCT *EQ 3120 +
*AND GTSOUR *EQ "BI" +
*AND GTDIV *EQ "' *CAT &DIV *TCAT '" +
*OR GTBDTE *EQ ' *CAT &BOOK *CAT ' +
*AND GTACCT *EQ 3140 +
*AND GTSOUR *EQ "BI" +
*AND GTDIV *EQ "' *CAT &DIV *TCAT '" +
*OR GTBDTE *EQ ' *CAT &BOOK *CAT ' +
*AND GTACCT *EQ 3150 +
*AND GTSOUR *EQ "BI" +
*AND GTDIV *EQ "' *CAT &DIV *TCAT '" +
*OR GTBDTE *EQ ' *CAT &BOOK *CAT ' +
*AND GTACCT *EQ 3170 +
*AND GTSOUR *EQ "BI" +
*AND GTDIV *EQ "' *CAT &DIV *TCAT '" +
*OR GTBDTE *EQ ' *CAT &BOOK *CAT ' +
*AND GTACCT *EQ 3190 +
*AND GTSOUR *EQ "BI" +
*AND GTDIV *EQ "' *CAT &DIV *TCAT '" +
*OR GTBDTE *EQ ' *CAT &BOOK *CAT ' +
*AND GTACCT *EQ 3300 +
*AND GTSOUR *EQ "BI" +
*AND GTDIV *EQ "' *CAT &DIV *TCAT '" +
*OR GTBDTE *EQ ' *CAT &BOOK *CAT ' +
*AND GTACCT *EQ 3120 +
*AND GTSOUR *EQ "AR" +
*AND GTDIV *EQ "' *CAT &DIV *TCAT '" +
*OR GTBDTE *EQ ' *CAT &BOOK *CAT ' +
*AND GTACCT *EQ 3140 +
*AND GTSOUR *EQ "AR" +
*AND GTDIV *EQ "' *CAT &DIV *TCAT '" +
*OR GTBDTE *EQ ' *CAT &BOOK *CAT ' +
*AND GTACCT *EQ 3150 +
*AND GTSOUR *EQ "AR" +
*AND GTDIV *EQ "' *CAT &DIV *TCAT '" +
*OR GTBDTE *EQ ' *CAT &BOOK *CAT ' +
*AND GTACCT *EQ 3170 +
*AND GTSOUR *EQ "AR" +
*AND GTDIV *EQ "' *CAT &DIV *TCAT '" +
*OR GTBDTE *EQ ' *CAT &BOOK *CAT ' +
*AND GTACCT *EQ 3190 +
*AND GTSOUR *EQ "AR" +
*AND GTDIV *EQ "' *CAT &DIV *TCAT '" +
*OR GTBDTE *EQ ' *CAT &BOOK *CAT ' +
*AND GTACCT *EQ 3300 +
*AND GTSOUR *EQ "AR" +
*AND GTDIV *EQ "' *CAT &DIV *TCAT '"') +
KEYFLD((GTREF))
----------------------------------------------------------------------
From: "rick baird" <rick.baird@xxxxxxxxx>
Reply-To: Midrange Systems Technical Discussion
<midrange-l@xxxxxxxxxxxx>
To: "Midrange Systems Technical Discussion"
<midrange-l@xxxxxxxxxxxx>
Subject: Re: PROBLEM WITH OPNQRYF
Date: Fri, 18 Aug 2006 16:47:08 -0400
>Ken, exactly.
>
>and just to clarify, the CL variable (&DIV) must be an alpha
variable
>to concatenate, regardless if the file variable is alpha or
numeric.
>
>On 8/18/06, Ken Sims <mdrg5003@xxxxxxxxxxx> wrote:
> > Hi Bob -
> >
> > > First off, I thought *CAT is used only for numeric
variable. &DIV is a
> > > one character field as is the GTDIV field in the file.
> > >
> > > Second, If I take out the lines with:
> > >
> > > *AND GTDIV *EQ &DIV
> >
> > You have to use *CAT (or *BCAT or *TCAT) for any kind of
variable so
that
> > the contents of the variable are substituted into the select.
> >
> > Numeric:
> >
> > ... *AND FIELD *EQ ' *CAT &NUMBER *CAT ' ...
> >
> > Character:
> >
> > ... *AND FIELD *EQ "' *CAT &ALPHA *CAT '" ...
> >
> > Note the double quotes on either side of the concatenated
value for
> > character fields. You could also use a pair of single quotes
but
the
> > double quotes are much nicer to work with.
> >
> > Ken
> > http://www.kensims.net/
> > Opinions expressed are my own and do not necessarily represent
the
views
> > of my employer or anyone in their right mind.
> >
> > --
> > This is the Midrange Systems Technical Discussion (MIDRANGE-L)
mailing list
> > To post a message email: MIDRANGE-L@xxxxxxxxxxxx
> > To subscribe, unsubscribe, or change list options,
> > visit: http://lists.midrange.com/mailman/listinfo/midrange-l
> > or email: MIDRANGE-L-request@xxxxxxxxxxxx
> > Before posting, please take a moment to review the archives
> > at http://archive.midrange.com/midrange-l.
> >
> >
>--
>This is the Midrange Systems Technical Discussion (MIDRANGE-L)
mailing
list
>To post a message email: MIDRANGE-L@xxxxxxxxxxxx
>To subscribe, unsubscribe, or change list options,
>visit: http://lists.midrange.com/mailman/listinfo/midrange-l
>or email: MIDRANGE-L-request@xxxxxxxxxxxx
>Before posting, please take a moment to review the archives
>at http://archive.midrange.com/midrange-l.
>
--
This is the Midrange Systems Technical Discussion (MIDRANGE-L) mailing
list
To post a message email: MIDRANGE-L@xxxxxxxxxxxx To subscribe, unsubscribe, or change list options, visit: http://lists.midrange.com/mailman/listinfo/midrange-l or email: MIDRANGE-L-request@xxxxxxxxxxxx Before posting, please take a moment to review the archives at http://archive.midrange.com/midrange-l.
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2025 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.