|
Nice solution but I don't find mine too onerous.
Also, I have to consider someone else who might maintain it. Lowest
common denominator. <frown>
What CALLP? Not in my programs! Agreed, why would you use a 20 year old
technique these days?
Roger Harman
COMMON Certified Application Developer - ILE RPG on IBM i on Power
From: MIDRANGE-L <midrange-l-bounces@xxxxxxxxxxxx> on behalf of Alan
Campin <alan0307d@xxxxxxxxx>
Sent: Friday, June 2, 2017 11:57 AM
To: Midrange Systems Technical Discussion
Subject: Re: Soft coding SQL based on parameter file
Wouldn't this be simpler? No building all the different pieces?
dcl-c QUOTE '''';
sqlStmt = Select <<Q>><<FIELD1>><<Q>>, +
<<Q>><<FIELD2>><<Q>>, +'
<<Q>><<FIELD3>><<Q>>, +
<<Q>><<FIELD4>><<Q>>, +
Sum(<<FIELD1>>) , +
Sum('<<FIELD2>>, +
Count(*) +
From <<FILENAM>>';
sqlStmt = %ScanRpl('<<Q>>': QUOTE: sqlStmt);
sqlStmt = %ScanRpl('<<FIELD1>>': %Trim(SUMFLD102): sqlStmt);
etc.
Also, I am just curious. Why do you use CALLP? It has been obsolete for at
least 20 years. One thing that IBM does not do that they do in the Java and
C# world is deprecate things when they are no longer recommended. Using
CALLP also mean not being able to use return values.
On Fri, Jun 2, 2017 at 11:34 AM, Roger Harman <roger.harman@xxxxxxxxxxx>
wrote:
Oh yeah, %scanrpl() is awesome. I have a mailmerge app for AR lettersbuild
where I used it extensively.
Once I gave it some fresh thought, this was a simple solution...
// chain to get the file name, column names, and descriptions
qtSUMFLD102 = cnQT + %trim(SUMFLD102) + cnQT;
qtSUMFLD202 = cnQT + %trim(SUMFLD202) + cnQT;
qtSUMTXT102 = cnQT + %trim(SUMTXT102) + cnQT;
qtSUMTXT202 = cnQT + %trim(SUMTXT202) + cnQT;
sqlStmt = 'select '
+ qtSUMFLD102 + ' , '
+ qtSUMFLD202 + ' , '
+ qtSUMTXT102 + ' , '
+ qtSUMTXT202 + ' , '
+ 'sum(' + SUMFLD102 + ') , '
+ 'sum(' + SUMFLD202 + ') , '
+ 'count(*) '
+ 'from '
+ FILNAM02;
Prepare, etc..... Fetch Into :dsSum;
EVAL DSSUM
FIELD1 OF DSSUM = 'ORIAMOUNT '
FIELD2 OF DSSUM = 'REMAMOUNT '
TEXT1 OF DSSUM = 'ORIGINAL AMOUNT '
TEXT2 OF DSSUM = 'REMAINING AMOUNT '
VALUE1 OF DSSUM = 0000000000200.00
VALUE2 OF DSSUM = 0000000000100.00
RCDCOUNT OF DSSUM = 1
Roger Harman
COMMON Certified Application Developer - ILE RPG on IBM i on Power
From: MIDRANGE-L <midrange-l-bounces@xxxxxxxxxxxx> on behalf of Alan
Campin <alan0307d@xxxxxxxxx>
Sent: Friday, June 2, 2017 10:52 AM
To: Midrange Systems Technical Discussion
Subject: Re: Soft coding SQL based on parameter file
If you are on V7R1 or forward use %SccanRpl. Will make your life so much
easier.
Statement = 'Select <<FIELD1>>,
<<FIELD2>>
From <<File>>
Where <<FIELD3>> = Cast(? As Char(10))'
Statement = %ScanRpl('<<FIELD1>>', FieldName, Statement);
etc.
Especially handy for quotes
dcl-c QUOTE '''';
Statement = 'Select <<FIELD1>>,
<<FIELD2>>
From <<File>>
Where <<FIELD3>> = Cast(? As Char(10))' And
<<FIELD4>> = <<Q>>Y<<Q>>)'
Statement = %ScanRpl('<<Q>>',QUOTE: Statement);
On Fri, Jun 2, 2017 at 10:19 AM, Roger Harman <roger.harman@xxxxxxxxxxx>
wrote:
Thanks. I did get it to work with dynamic SQL. Just straightening out
the right mix of literals and data values to string together.
Short & Sweet to do what I want.
Roger Harman
COMMON Certified Application Developer - ILE RPG on IBM i on Power
From: MIDRANGE-L <midrange-l-bounces@xxxxxxxxxxxx> on behalf of
dlclark@xxxxxxxxxxxxxxxx <dlclark@xxxxxxxxxxxxxxxx>
Sent: Friday, June 2, 2017 8:21 AM
To: Midrange Systems Technical Discussion
Subject: Re: Soft coding SQL based on parameter file
Just use VALUES ... INTO and dynamic SQL. You just have to
proprietarymost of the SQL statement in a variable-length character variable. YouYou
can't use a parameter marker for the select columns or the table/view
names FROM which to get the data or the GROUP BY or ORDER BY clauses.
can use parameter markers for the WHERE clause if you want to.
Sincerely,
Dave Clark
--
int.ext: 91078
direct: (937) 531-6378
home: (937) 751-3300
Winsupply Group Services
3110 Kettering Boulevard
Dayton, Ohio 45439 USA
(937) 294-5331
************************************************************
*********************************
This email message and any attachments is for use only by the named
addressee(s) and may contain confidential, privileged and/or
allinformation. If you have received this message in error, please
immediately notify the sender and delete and destroy the message and
privilegecopies. All unauthorized direct or indirect use or disclosure of this
message is strictly prohibited. No right to confidentiality or
is waived or lost by any error in transmission.list
************************************************************
*********************************
--
This is the Midrange Systems Technical Discussion (MIDRANGE-L) mailing
To post a message email: MIDRANGE-L@xxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/midrange-l
MIDRANGE-L Info Page
lists.midrange.com
The topic of the list is Midrange Systems. This includes the IBM I, System
i, iSeries, and AS/400 (S/34, S/36, & S/38 discussion is allowed, if anyone
still has one ...
System
MIDRANGE-L Info Page
lists.midrange.com
The topic of the list is Midrange Systems. This includes the IBM I,
i, iSeries, and AS/400 (S/34, S/36, & S/38 discussion is allowed, ifanyone
still has one ...
System
MIDRANGE-L Info Page
lists.midrange.com
The topic of the list is Midrange Systems. This includes the IBM I,
i, iSeries, and AS/400 (S/34, S/36, & S/38 discussion is allowed, ifanyone
still has one ...
or email: MIDRANGE-L-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives
at http://archive.midrange.com/midrange-l.
midrange.com -- MIDRANGE-L mailing list archive
archive.midrange.com
midrange.com MIDRANGE-L mailing list archive
midrange.com -- MIDRANGE-L mailing list archive
archive.midrange.com
midrange.com MIDRANGE-L mailing list archive
midrange.com -- MIDRANGE-L mailing list archive
archive.midrange.com
midrange.com MIDRANGE-L mailing list archive
Please contact support@xxxxxxxxxxxx for any subscription related
questions.
Help support midrange.com by shopping at amazon.com with our affiliate
link: http://amzn.to/2dEadiD
http://g-ec2.images-amazon.com/images/G/01/social/api-
share/amazon_logo_500500._V323939215_.png
Amazon.com: Online Shopping for Electronics, Apparel, Computers, Books,
DVDs & more
amzn.to
Online shopping from the earth's biggest selection of books, magazines,
music, DVDs, videos, electronics, computers, software, apparel &
accessories, shoes, jewelry, tools & hardware, housewares, furniture,
sporting goods, beauty & personal care, broadband & dsl, gourmet food &
just about anything else.
http://g-ec2.images-amazon.com/images/G/01/social/api-
share/amazon_logo_500500._V323939215_.png
Amazon.com: Online Shopping for Electronics, Apparel, Computers, Books,
DVDs & more
amzn.to
Online shopping from the earth's biggest selection of books, magazines,
music, DVDs, videos, electronics, computers, software, apparel &
accessories, shoes, jewelry, tools & hardware, housewares, furniture,
sporting goods, beauty & personal care, broadband & dsl, gourmet food &
just about anything else.
list
Amazon.com: Online Shopping for Electronics, Apparel, Computers, Books,
DVDs & more
amzn.to
Online shopping from the earth's biggest selection of books, magazines,
music, DVDs, videos, electronics, computers, software, apparel &
accessories, shoes, jewelry, tools & hardware, housewares, furniture,
sporting goods, beauty & personal care, broadband & dsl, gourmet food &
just about anything else.
--
This is the Midrange Systems Technical Discussion (MIDRANGE-L) mailing
To post a message email: MIDRANGE-L@xxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/midrange-l
MIDRANGE-L Info Page
lists.midrange.com
The topic of the list is Midrange Systems. This includes the IBM I, System
i, iSeries, and AS/400 (S/34, S/36, & S/38 discussion is allowed, if anyone
still has one ...
listor email: MIDRANGE-L-request@xxxxxxxxxxxx--
Before posting, please take a moment to review the archives
at http://archive.midrange.com/midrange-l.
Please contact support@xxxxxxxxxxxx for any subscription related
questions.
Help support midrange.com by shopping at amazon.com with our affiliate
link: http://amzn.to/2dEadiD
This is the Midrange Systems Technical Discussion (MIDRANGE-L) mailing
To post a message email: MIDRANGE-L@xxxxxxxxxxxxlist
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.
Please contact support@xxxxxxxxxxxx for any subscription related
questions.
Help support midrange.com by shopping at amazon.com with our affiliate
link: http://amzn.to/2dEadiD
--
This is the Midrange Systems Technical Discussion (MIDRANGE-L) mailing
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.
Please contact support@xxxxxxxxxxxx for any subscription related
questions.
Help support midrange.com by shopping at amazon.com with our affiliate
link: http://amzn.to/2dEadiD
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.
Please contact support@xxxxxxxxxxxx for any subscription related
questions.
Help support midrange.com by shopping at amazon.com with our affiliate
link: http://amzn.to/2dEadiD
--
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.
Please contact support@xxxxxxxxxxxx for any subscription related
questions.
Help support midrange.com by shopping at amazon.com with our affiliate
link: http://amzn.to/2dEadiD
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.