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



Thanks Jay - this is very interesting :)

> -----Original Message-----
> From: java400-l-bounces@xxxxxxxxxxxx 
> [mailto:java400-l-bounces@xxxxxxxxxxxx] On Behalf Of Himes, Jay
> Sent: Wednesday, October 26, 2005 1:59 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;DatabaseN
> ame=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 
> 


As an Amazon Associate we earn from qualifying purchases.

This thread ...


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.