×

Good News Everybody!

The new search engine is LIVE!

Please report any problems to david (at) midrange.com.




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

Replies:

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2026 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.