If you are using a numeric field from RPG most likely it is AS400ZonedDecimal or AS400PackedDecimal. From your description of the characters, I'd bank on packed. Probably 3/0 (three positions, zero decimal positions). Something like this
BigDecimal result = (BigDecimal)new AS400PackedDecimal(3,0).toObject(parmList[0].getOutputData());
I'm working from memory here, but I believe the java object returned by the toObject of AS400PackedDecimal is BigDecimal.
-----Original Message-----
From: java400-l-bounces@xxxxxxxxxxxx [mailto:java400-l-bounces@xxxxxxxxxxxx] On Behalf Of Loyd Goodbar
Sent: Tuesday, October 27, 2009 3:22 PM
To: java400-l@xxxxxxxxxxxx
Subject: Retrieving integer parameter after JT400 ProgramCall?
I am not a Java programmer so please be kind. :)
I have a simple Java program which calls a RPGLE program using ProgramCall in JT400.jar. The call works (it increments a sequence number in a file), but I am unsure how to retrieve the integer parameter after the call. The program returns two DOS looking characters like a box corner and a diamond or question mark. Using parseInt does not work, with error
"java.lang.NumberFormatException: For input String: "└?" "
Is this an EBCDIC ASCII translation issue? The character parameter shows correctly in both the RPG and Java (testing in Windows). Am I even passing (and receiving) the integer correctly? The called RPG program does run because I see the sequence number increasing.
Java snippet:
            String VanguardLocation;
            Integer NextSequence;
            VanguardLocation = "WV   ";
            NextSequence = 0;
            // Create field types for parameters.
            AS400Text txt5 = new AS400Text(5);
            AS400Text txt4 = new AS400Text(4);
            // Create parameter array and populate.
            ProgramParameter[] parmList = new ProgramParameter[2];
            parmList[0] = new ProgramParameter( txt5.toBytes(VanguardLocation),5);
            parmList[1] = new ProgramParameter( txt4.toBytes(Integer.toString(NextSequence)),4);
            // Set up program call and run.
            ProgramCall pgm = new ProgramCall(sys, "/QSYS.LIB/LG.LIB/INCGLJSEQ.PGM", parmList);
            if (pgm.run() != true) {
                AS400Message[] messageList = pgm.getMessageList();
            } else {
                System.out.println("Output Data 0: " + (String)txt5.toObject( parmList[0].getOutputData() ) );
                System.out.println("Output Data 1: " + (String)txt4.toObject( parmList[1].getOutputData() ) );
                sys.disconnectService(AS400.COMMAND);
            }
The output:
Output Data 0: WV
Output Data 1:   └?
I am expecting a number around 25658 (that would be the next sequence number from the file).
The RPG prototype:
     d incgljseq       pr                  extpgm('INCGLJSEQ')
     d inlocation                     5a   const
     d outuseseq                     10i 0
Any info to help this Java newbie out is appreciated!
Thanks,
Loyd
--
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.