|
Thanks again for sharing the example. It definitely helps me to see what you're
doing.
Kelly
________________________________
From: java400-l-bounces@xxxxxxxxxxxx on behalf of Himes, Jay
Sent: Wed 10/26/2005 12:58 PM
To: Java Programming on and around the iSeries / AS400
Subject: RE: Passing parameters between Java and CL/COBOL/RPG programs
This is a simple example; a key is written to a dataque and the 1 row
from the table whose primary key matches is retrieved, padded and
written to a dataque so that an RPG program can retrieve it into a data
structure. This is an example of how to do this; it is not very reusable
or flexible nor is it an example of great coding technique.
Hopefully it will end up formatted Ok.
RPG snippit:
dout1 s 10 inz('FULFILLOUT')
dout2 s 10 inz('PRODLIB')
dout3 s 5P 0 inz(13)
dout4 s 13
din1 s 10 inz('FULFILLIN')
din2 s 10 inz('PRODLIB')
din3 s 5P 0
din4 s 1000
din5 s 5P 0 inz(-1)
din6 s 2 inz('EQ')
din7 s 3P 0 inz(26)
din8 s 26
din9 s 3P 0 inz(0)
din10 s 8
C* write the key value to the data que
c eval out4='YOURKEYVAL'
c call 'QSNDDTAQ'
c parm out1
c parm out2
c parm out3
c parm out4
C* read the results from the data que
c eval in8='YOURKEYVAL'
c call 'QRCVDTAQ'
c parm in1
c parm in2
c parm in3
c parm in4
c parm in5
c parm in6
c parm in7
c parm in8
c parm in9
c parm in10
In4 will have the data passed from the sql server it
Java:
import java.sql.*;
import java.util.*;
import com.ibm.as400.access.*;
public class demo
{ //open class
private static AS400 a4 = null;
private static KeyedDataQueue dqin = null;
private static DataQueue dqout = null;
private static int retrycount=0;
private static String dqKey= "";
private static Connection sqlcon = null;
private static String sqlurl = "jdbc:microsoft:sqlserver://";
public static void main (String[] params)
{ //open main
String versionID = System.getProperty("java.version");
System.out.println("JDK is: " + versionID );
try
{
boolean cont=true;
while (cont)
{
String iseriesname = "localhost";
String iuser="ISERIESUSER";
String ipw="ISERIESPASSWORD";
//get Iseries connection for dataqueues
a4 = new AS400(iseriesname, iuser, ipw);
dqin= new KeyedDataQueue(a4,
"/qsys.lib/prodlib.lib/FULFILLIN.dtaq");
dqout= new DataQueue(a4,
"/qsys.lib/prodlib.lib/FULFILLOUT.dtaq");
sqlurl="jdbc:microsoft:sqlserver://YOURSERVERIP:1433;DatabaseName=SCHEMA
NAME;";
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
//in
mssqlserver.jar;msbase.jar;msutil.jar
System.out.println(" SQL Server URL is:\n\t" +
sqlurl);
String sqluser="YOURSQLUSER";
String sqlpassword="YOURSQLPASSWORD";
//get sqlserver connection
sqlcon =
DriverManager.getConnection(sqlurl,sqluser,sqlpassword);
cont=copytesttbl();
try
{
sqlcon.close();
}
catch(Exception e) {}
}
}
catch(SQLException se)
{
System.out.println("Fatal SQL Error in main: " +
se.getErrorCode() +
"\n\t" + se.getLocalizedMessage() );
}
catch(Exception e)
{
System.out.println("Fatal Error in main: " +
"\n\t" + e.getLocalizedMessage() );
}
}//close main
//**********************************************************************
******************
public static String fieldpad (String in, int numchar, String chartopad,
boolean leftalign)
{//open copytesttbl
String out=in;
if(out==null)
out="";
int length=out.length();
while(length < numchar)
{
if (leftalign)
out=out+chartopad;
else
out=chartopad+out;
length=out.length();
}
return out;
}
//**********************************************************************
********************
public static boolean copytesttbl ()
{//open copytesttbl
String sql="";
try
{
boolean jobIsActive = true;
Statement si = sqlcon.createStatement();
System.out.println("Waiting for entry");
while (jobIsActive)
{
DataQueueEntry dqEntry = null;
if (dqKey.equals(""))
{
dqEntry = dqout.read(-1);
dqKey = dqEntry.getString().trim();
}
if (dqKey.equals("*EXIT"))
{
jobIsActive=false;
System.out.println("Program Exiting
Normally");
return false;
}
else
{
sql="select * from TABLENAME where
KEYFLD=" + qKey;
ResultSet rs=si.executeQuery(sql);
String data="";
System.out.println("key is" + dqKey);
while( rs.next())
{
data=
fieldpad(rs.getString("FLD1NUMERIC"),20,"0",false)+
fieldpad(rs.getString("FLD2CHAR"),20," ",true);
}
dqin.write(fieldpad(dqKey.trim(),26,"
",true),data);
retrycount=0;
dqKey="";
}
}
si.close();
}
catch(Exception e)
{
System.out.println("Fatal Error
"+e.getLocalizedMessage());
System.out.println("\t data: " +dqKey);
retrycount++;
if (retrycount<3)
return true;
else
return false;
}
return false;
}//close copytesttbl
}//close class
-----Original Message-----
From: java400-l-bounces+jehimes=liberty.edu@xxxxxxxxxxxx
[mailto:java400-l-bounces+jehimes=liberty.edu@xxxxxxxxxxxx] On Behalf Of
Winchester Terry
Sent: Wednesday, October 26, 2005 1:03 PM
To: Java Programming on and around the iSeries / AS400
Subject: RE: Passing parameters between Java and CL/COBOL/RPG programs
Jay,
I would love to see this too :)
Terry
> -----Original Message-----
> From: java400-l-bounces@xxxxxxxxxxxx
> [mailto:java400-l-bounces@xxxxxxxxxxxx] On Behalf Of Kelly Cookson
> Sent: Wednesday, October 26, 2005 12:37 PM
> To: Java Programming on and around the iSeries / AS400
> Subject: RE: Passing parameters between Java and CL/COBOL/RPG programs
>
>
> An example would be great! Thanks!
> Kelly
>
> -----Original Message-----
> From: java400-l-bounces@xxxxxxxxxxxx
> [mailto:java400-l-bounces@xxxxxxxxxxxx]On Behalf Of Himes, Jay
> Sent: Wednesday, October 26, 2005 11:03 AM
> To: Java Programming on and around the iSeries / AS400
> Subject: RE: Passing parameters between Java and CL/COBOL/RPG programs
>
>
> What I have done for cases like this is to create a java program which
> runs in a separate job. I write the SQL statement to be run to a data
> que from the program that needs the information; the java program runs
> the sql statement and writes the row (or rows) to a keyed data que the
> original program is reading from (the key is the original program's
> job indicator so that multiple jobs can use the same que).
>
> You can avoid the overhead of invoking the program an making a
> connection for every row you whish to retrieve; which can be
> significant.
>
> If you are interested I can dig up an example.
>
<snipped for bandwidth>
--
This is the Java Programming on and around the iSeries / AS400
(JAVA400-L) mailing list To post a message email: JAVA400-L@xxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/java400-l
or email: JAVA400-L-request@xxxxxxxxxxxx Before posting, please take a
moment to review the archives at http://archive.midrange.com/java400-l.
--
This is the Java Programming on and around the iSeries / AS400 (JAVA400-L)
mailing list
To post a message email: JAVA400-L@xxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/java400-l
or email: JAVA400-L-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives
at http://archive.midrange.com/java400-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.