+ All Categories
Home > Documents > © 2004 IBM Corporation IBM | 2003, 2004 Phil Coulthard: [email protected] George Farr:...

© 2004 IBM Corporation IBM | 2003, 2004 Phil Coulthard: [email protected] George Farr:...

Date post: 26-Dec-2015
Category:
Upload: lionel-holmes
View: 215 times
Download: 2 times
Share this document with a friend
Popular Tags:
90
© 2004 IBM Corporation IBM | 2003, 2004 Phil Coulthard: [email protected] George Farr: [email protected] Java for RPG Java for RPG Programmers Programmers tm Java is a trademark of Sun Microsystems Inc
Transcript
Page 1: © 2004 IBM Corporation IBM | 2003, 2004 Phil Coulthard: coulthar@ca.ibm.com George Farr: farr@ca.ibm.com Java for RPG Programmers tm Java is a trademark.

© 2004 IBM CorporationIBM | 2003, 2004

Phil Coulthard: [email protected] Farr: [email protected]

Java for RPG Java for RPG ProgrammersProgrammers

tmJava is a trademark of Sun Microsystems Inc

Page 2: © 2004 IBM Corporation IBM | 2003, 2004 Phil Coulthard: coulthar@ca.ibm.com George Farr: farr@ca.ibm.com Java for RPG Programmers tm Java is a trademark.

RPG

© 2003 IBM Corporation

WEBCAST SCHEDULEToday’s event will run one-hour long. Here are the expected times for each segment of the webcast:

• :00 – :10: Moderator introduces the speaker and discusses the details

of the Webcast.

• :10- :60: Speaker delivers a PowerPoint presentation on the webcast topic.

You can submit questions to the speaker at any time during the event. Just click on the “Ask a Question” button in the lower left corner of your presentation screen.

Page 3: © 2004 IBM Corporation IBM | 2003, 2004 Phil Coulthard: coulthar@ca.ibm.com George Farr: farr@ca.ibm.com Java for RPG Programmers tm Java is a trademark.

RPG

© 2003 IBM Corporation

TECHNICAL FAQsHere are answers to the most common technical problems users encounter during a webcast: Q: Why can’t I hear the audio part of the webcast?A: Try increasing the volume on your computer.

Q: I just entered the webcast and do not see the slide that the speaker is referring to. What should I do?

A: The slides are constantly be pushed to your screen. You’ll should refresh (hit F5) to view the latest slide.

If your question is still not answered, please click the “Ask a Question” button in the lower left corner of your presentation screen and submit your problem. A technical support person will contact you.

 

Page 4: © 2004 IBM Corporation IBM | 2003, 2004 Phil Coulthard: coulthar@ca.ibm.com George Farr: farr@ca.ibm.com Java for RPG Programmers tm Java is a trademark.

© 2004 IBM CorporationIBM | 2003, 2004

Phil Coulthard: [email protected] Farr: [email protected]

Java for RPG Java for RPG ProgrammersProgrammers

tmJava is a trademark of Sun Microsystems Inc

Page 5: © 2004 IBM Corporation IBM | 2003, 2004 Phil Coulthard: coulthar@ca.ibm.com George Farr: farr@ca.ibm.com Java for RPG Programmers tm Java is a trademark.

RPG

© 2003 IBM Corporation

Acknowledgement:This presentation is a collaborative effort of the IBM Toronto AS/400 Applicaiton Development presentation

team, including work done by:

ƒ Phil Coulthard, George FarrThis presentation is based on the books (www.mcpressonline/ibmpress)

ƒ Java for RPG Programmers, ISBN 1-931182-06-Xƒ Java for S/390 and AS/400 COBOL Programmers,1-

58347-011-5It also contains information from the related Student Workbook (www.mcpressonline/ibmpress)

ƒ Java for RPG and COBOL Programmers on iSeries Student Workbook

Disclaimer:The information contained in this document has not been submitted to any formal IBM test and is distributed

on an as is basis without any warranty either express or implied. The use of this information or the implementation of any of these techniques is a customer responsibility and depends on the customers' ability to evaluate and integrate them into the customers' operational environment. While each item may have been reviewed by IBM for accuracy in a specific situation, there is no guarantee that the same or similar results will result elsewhere. Customers attempting to adapt these techniques to their own environment do so at their own risk.

Reproduction:The base presentation is the property of IBM Corporation. Permission must be obtained PRIOR to making

copies of this material for any reason.

DisclaimerDisclaimer

Page 6: © 2004 IBM Corporation IBM | 2003, 2004 Phil Coulthard: coulthar@ca.ibm.com George Farr: farr@ca.ibm.com Java for RPG Programmers tm Java is a trademark.

RPG

© 2003 IBM Corporation

What is Java?What is Java?An OO programming language

ƒ Created by Sun Microsystems Inc. in 1995

ƒ Adopted by Netscape in 1996ƒ Heavy investment by IBM ever since

Initially for:ƒ Applets that run in Web Browsersƒ Applications that are client-GUI or server

non-GUINow also for:

ƒ Servlets that run in a Web Serverƒ Enterprise JavaBeans that run on a serverƒ And much more...

Page 7: © 2004 IBM Corporation IBM | 2003, 2004 Phil Coulthard: coulthar@ca.ibm.com George Farr: farr@ca.ibm.com Java for RPG Programmers tm Java is a trademark.

RPG

© 2003 IBM Corporation

Java LandscapeJava LandscapeHow is Java packaged?

ƒ For developersIn a "Java Development Kit" (JDK)

ƒ Compiler, runtime, command line tools

ƒ For runtimeIn a "Java Virtual Machine" (JVM)

ƒ Interpreter

How do you get Java?ƒ For developers

JDK from Sun (www.java.sun.com) or IBM (www.ibm.com/java)JDK also built-in to Java tools like VisualAge for Java, WSSD

ƒ For runtimeJVM built-in to many Operating Systems, Web Browsers, App'n Servers, PDAs, Cell Phones, etc

Page 8: © 2004 IBM Corporation IBM | 2003, 2004 Phil Coulthard: coulthar@ca.ibm.com George Farr: farr@ca.ibm.com Java for RPG Programmers tm Java is a trademark.

RPG

© 2003 IBM Corporation

JDK ContentsJDK Contents

JVM / interpret

er("java")

Bytecode compiler ("javac")

Doc'n tool

("javadoc")

Compression tool("jar")

Command line toolsCommand line tools

. . .

DocumentationDocumentation PackagesPackages

language

graphics

networking utilities

file system

database access

math

. . .

Page 9: © 2004 IBM Corporation IBM | 2003, 2004 Phil Coulthard: coulthar@ca.ibm.com George Farr: farr@ca.ibm.com Java for RPG Programmers tm Java is a trademark.

RPG

© 2003 IBM Corporation

Java ClassesJava ClassesClasses

ƒ Compilation unitno matter what you are using Java for!

ƒ All fields and executable code are inside classes

ƒ Source files are compiled into class files

Bytecodeƒ What are inside class filesƒ Assembler language for Java

what the JVM "interprets"

Page 10: © 2004 IBM Corporation IBM | 2003, 2004 Phil Coulthard: coulthar@ca.ibm.com George Farr: farr@ca.ibm.com Java for RPG Programmers tm Java is a trademark.

RPG

© 2003 IBM Corporation

Java BeansJava BeansJavaBeanstm

ƒ Classes designed for fine-grained re-useJava's components, like Microsoft VB's VBXNot to be confused with Enterprise JavaBeans!!

ƒ Beans containproperties (fields), methods (paragraphs), events (eg, button-pressed)

ƒ Tools can discover contents dynamicallyƒ And present list to use to select from or change

JARtm Files (Java ARchive)ƒ Java way to group/compress class files

for easy distribution (uses ZIP technology)

Page 11: © 2004 IBM Corporation IBM | 2003, 2004 Phil Coulthard: coulthar@ca.ibm.com George Farr: farr@ca.ibm.com Java for RPG Programmers tm Java is a trademark.

RPG

© 2003 IBM Corporation

Using JavaUsing JavaApplications

ƒ Java command line programs (you call)

Appletstm

ƒ Java Web Browser programs (Web Browser calls)

Enterprise JavaBeanstm ƒ Enterprise-scale re-usable components (Application

Server calls)ƒ Large scale (e.g., payroll) versus JavaBeans (e.g.,

tax)

Java Servletstm

ƒ Java Web Server programs (Web Server calls)

JavaServer Pagestm

ƒ HTML plus embedded Java (Servlets call)

Page 12: © 2004 IBM Corporation IBM | 2003, 2004 Phil Coulthard: coulthar@ca.ibm.com George Farr: farr@ca.ibm.com Java for RPG Programmers tm Java is a trademark.

RPG

© 2003 IBM Corporation

Java ToolsJava ToolsJava Tools are

Optionalminimal requirement: JDK + editor

Productivee.g., wizards and debuggers

NumerousFrom IBM, Symantec, Sun, Inprise, ...

IBM Java Tool story"Next generation" tools are

WebSphere Studio Site Developer (Java, Web, XML tooling)WebSphere Studio Application Developer (+ EJB tooling)

For iSeries, there is WebSphere Development Studio Client

Page 13: © 2004 IBM Corporation IBM | 2003, 2004 Phil Coulthard: coulthar@ca.ibm.com George Farr: farr@ca.ibm.com Java for RPG Programmers tm Java is a trademark.

RPG

© 2003 IBM Corporation

Java LifeCycleJava LifeCycle

java class

Your app!

compile

javac

run

java

ƒ For appletsUse HTML/JSP file with <APPLET><APPLET> tag pointing to the applet

ƒ For servletsUse HTML/JSP file with <FORM><FORM> tag pointing to the servlet

ƒ For EJBsInclude in Web Application that is deployed to a J2EE Container

Use javacjavac to compileƒ Use javajava to run from command line

If it is application or to unit-test this individual class

Page 14: © 2004 IBM Corporation IBM | 2003, 2004 Phil Coulthard: coulthar@ca.ibm.com George Farr: farr@ca.ibm.com Java for RPG Programmers tm Java is a trademark.

RPG

© 2003 IBM Corporation

Compiling JavaCompiling Java /* Prototypical Hello World application */ public classpublic class Hello { public static voidpublic static void main(String args[]) { System.lout.println("Hello World!"); } }

javaHello

E:\mycode>javac Hello.javajavac Hello.java Hello.java:6: No variable lout defined in class System System.lout.println("Hello World!"); ^ 1 error

System.out.println("Hello World!");

E:\mycode>javac Hello.javajavac Hello.java

"main" method called by JVM

Page 15: © 2004 IBM Corporation IBM | 2003, 2004 Phil Coulthard: coulthar@ca.ibm.com George Farr: farr@ca.ibm.com Java for RPG Programmers tm Java is a trademark.

RPG

© 2003 IBM Corporation

Running Java AppsRunning Java Apps

E:\mycode>java Hellojava Hello Hello World!

class

Hello

Page 16: © 2004 IBM Corporation IBM | 2003, 2004 Phil Coulthard: coulthar@ca.ibm.com George Farr: farr@ca.ibm.com Java for RPG Programmers tm Java is a trademark.

RPG

© 2003 IBM Corporation

Non-Java ResourcesNon-Java Resourcesƒ How to access non-Java resources??

network

DataBase

Transactions

Commands

Programs

File System

Other...

Web Server Web Server + App + App ServerServer

Servlet

Applet Java client Application

Java server Application

Web page

Java EJB Application??

?? ?? ????

Web Web BrowserBrowser

Page 17: © 2004 IBM Corporation IBM | 2003, 2004 Phil Coulthard: coulthar@ca.ibm.com George Farr: farr@ca.ibm.com Java for RPG Programmers tm Java is a trademark.

RPG

© 2003 IBM Corporation

iSeries Toolbox For iSeries Toolbox For JavaJava100% Java classes for:

ƒ JDBC access to DB2/400ƒ DDM record level access to DB2/400ƒ Data Queue accessƒ Print accessƒ Program Call, Command Callƒ File system accessƒ Client to server connections, remote login

ƒ Much more...Runs anywhere

ƒ OS/400, Windows, Linux, Unix, . . .

free!

Shipped with

OS/400, WDSc

Page 18: © 2004 IBM Corporation IBM | 2003, 2004 Phil Coulthard: coulthar@ca.ibm.com George Farr: farr@ca.ibm.com Java for RPG Programmers tm Java is a trademark.

RPG

© 2003 IBM Corporation

Java versus Java versus RPGRPG

AgendaAgenda

Page 19: © 2004 IBM Corporation IBM | 2003, 2004 Phil Coulthard: coulthar@ca.ibm.com George Farr: farr@ca.ibm.com Java for RPG Programmers tm Java is a trademark.

RPG

© 2003 IBM Corporation

MODULE vs CLASSMODULE vs CLASS

Procedures

RPG ModuleRPG Module

Java ClassJava Class

RPG RPG IVIV

JavaJavaVariables

Methods

Fields

CRTRPGMOD

javac

Page 20: © 2004 IBM Corporation IBM | 2003, 2004 Phil Coulthard: coulthar@ca.ibm.com George Farr: farr@ca.ibm.com Java for RPG Programmers tm Java is a trademark.

RPG

© 2003 IBM Corporation

public class Customer{ private int custId; private char custCode;

}

classkeyword:

what we're defining

Global variables

Java Class SyntaxJava Class Syntax JavaJava

public static void main(String args[]){

. . .}

public int setMyVariable(int newValue){

. . .}

Methods(described

next)

public modifier:anyone can use

private modifier:only code in this

class can access

"main" method(described later)

class name

field name

braces { } delimit braces { } delimit start and end of start and end of

classclass

Page 21: © 2004 IBM Corporation IBM | 2003, 2004 Phil Coulthard: coulthar@ca.ibm.com George Farr: farr@ca.ibm.com Java for RPG Programmers tm Java is a trademark.

RPG

© 2003 IBM Corporation

Java MethodsJava Methodspublic void setId(int idParm){

} // end of the method

private int read(){

} // end of the method

public modifier:anyone can call

method name

Code goes here

parameter type + name

Comments

Code goes here

private modifier:only code in this

class can call

void keyword:nothing returned

integer value returned

JavaJavabraces { } braces { } delimit start delimit start and end of and end of methodsmethods

Page 22: © 2004 IBM Corporation IBM | 2003, 2004 Phil Coulthard: coulthar@ca.ibm.com George Farr: farr@ca.ibm.com Java for RPG Programmers tm Java is a trademark.

RPG

© 2003 IBM Corporation

Java Method Java Method ExampleExample

int max(int parm1, int parm2) { int retval;

if (parm1 > parm2) retval = parm1; else retval = parm2;

return retval;

}

LocalVariables

ReturnValue

Parm type/name

pairsno public modifier

specified so only classes in this package can call this

method JavaJava

int is the integer data type in Java

Page 23: © 2004 IBM Corporation IBM | 2003, 2004 Phil Coulthard: coulthar@ca.ibm.com George Farr: farr@ca.ibm.com Java for RPG Programmers tm Java is a trademark.

RPG

© 2003 IBM Corporation

Class names shouldƒ be all lowercase except

first letter of each wordeg: OrderEntry

Method / field names shouldƒ be all lowercase except

first letter of each word other than firsteg: processOrder

Constants shouldƒ be all uppercase

eg SUNDAY

Naming Naming ConventionsConventions

Page 24: © 2004 IBM Corporation IBM | 2003, 2004 Phil Coulthard: coulthar@ca.ibm.com George Farr: farr@ca.ibm.com Java for RPG Programmers tm Java is a trademark.

RPG

© 2003 IBM Corporation

modulemodule

modulemodule

modulemodule

Order

BackOrder

Inventory

classclass

classclass

classclass

orderentry

packagepackage

*SRVPGM*SRVPGM

orderentry

Order

BackOrder

Inventory

RPGIV

contains methods

contains procedure

s

Java

PackagesPackages

Page 25: © 2004 IBM Corporation IBM | 2003, 2004 Phil Coulthard: coulthar@ca.ibm.com George Farr: farr@ca.ibm.com Java for RPG Programmers tm Java is a trademark.

RPG

© 2003 IBM Corporation

Java

"package" must be first

statement in source file

BackOrder. java

package package orderentry ;orderentry ; public class BackOrder { ... }

"package" is like compiler directive

Order

BackOrder

Inventory

classclass

classclass

classclass

orderentry

package package orderentry ;orderentry ; public class Order { ... }

Order. java

Defining PackagesDefining Packages

Page 26: © 2004 IBM Corporation IBM | 2003, 2004 Phil Coulthard: coulthar@ca.ibm.com George Farr: farr@ca.ibm.com Java for RPG Programmers tm Java is a trademark.

RPG

© 2003 IBM Corporation

can import one class or all

(*)

"import" enables

access to classes in package

Java

Order

BackOrder

Inventory

classclass

classclass

classclass

orderentry

Order. Order. javajava

import orderentry.* ;import orderentry.* ; public class Order { ... }

"import" is like

ADDLIBLE. It is NOT

like /COPY!

Using PackagesUsing Packages

Page 27: © 2004 IBM Corporation IBM | 2003, 2004 Phil Coulthard: coulthar@ca.ibm.com George Farr: farr@ca.ibm.com Java for RPG Programmers tm Java is a trademark.

RPG

© 2003 IBM Corporation

Package names areƒ usually all lowercaseƒ usually multi-part, dot separated

Java-supplied packagesƒ all named java.xxxƒ for example: java.awt or

java.awt.eventYour packages

ƒ will start with com.xxx, where xxx.com is your company's domain name

ƒ e.g., IBM's start with com.ibm.xxx

Naming PackagesNaming Packages

java.lang always

imported for you

Page 28: © 2004 IBM Corporation IBM | 2003, 2004 Phil Coulthard: coulthar@ca.ibm.com George Farr: farr@ca.ibm.com Java for RPG Programmers tm Java is a trademark.

RPG

© 2003 IBM Corporation

Comparing Comparing AnatomiesAnatomies

RPGRPG JAVAJAVA COMMENTSCOMMENTS*PGM Application Program object ==

Application

*SRVPGM Package

Module Class Compilation unit

Fields Variables Global variables

Procedures

Methods

Functions

Variables

Variables

Local Variable

Code Code Executable code

Page 29: © 2004 IBM Corporation IBM | 2003, 2004 Phil Coulthard: coulthar@ca.ibm.com George Farr: farr@ca.ibm.com Java for RPG Programmers tm Java is a trademark.

RPG

© 2003 IBM Corporation

Statements are free-formatƒ extra blanks and lines are ignoredƒ statements end with semi-colon

Blocks use braces ƒ start and end of classesƒ start and end of methodsƒ start and end of conditional / loop

blocksAll names are case-sensitive

ƒ abc NOT= ABC ƒ even source file names are case-

sensitive

Java

;{}

C-like syntax

Java SyntaxJava Syntax

Page 30: © 2004 IBM Corporation IBM | 2003, 2004 Phil Coulthard: coulthar@ca.ibm.com George Farr: farr@ca.ibm.com Java for RPG Programmers tm Java is a trademark.

RPG

© 2003 IBM Corporation

// This whole line is a comment int myVariable = 10; // Only this part is a comment

Multi-line comment:

JavaDoc comment:

/*-----------------------------* * Please read these comments * * as they are very important! * *-----------------------------*/

/* this is a multi line comment */

Single line comment:

/** This is the <U>scan package</U> * this is the second line.

* @author George & Phil * @version Feb 26,2000 */

note double asterisk

Java CommentsJava Comments

Page 31: © 2004 IBM Corporation IBM | 2003, 2004 Phil Coulthard: coulthar@ca.ibm.com George Farr: farr@ca.ibm.com Java for RPG Programmers tm Java is a trademark.

RPG

© 2003 IBM Corporation

Data Types Data Types OverviewOverview

oror

Numeric Numeric TypesTypes

Other Other TypesTypes

RPG IV

Java

binary integer

unsigned

zoned

packedfloat

indicator

character

d / t / z

graphic

Primitive Primitive TypesTypes

NumericNumeric

IntegerInteger FloatFloat

byte short int longchar

float

double

booleanReferencReference Typese Types

covered later

unicode

Page 32: © 2004 IBM Corporation IBM | 2003, 2004 Phil Coulthard: coulthar@ca.ibm.com George Farr: farr@ca.ibm.com Java for RPG Programmers tm Java is a trademark.

RPG

© 2003 IBM Corporation

TypeType In UseIn Use DescriptionDescription

Integer int i;4 byte signed:

about +- 2 billion

Long long l;8 byte signed: about +- huge #

Byte byte b;1 byte signed:-128 to + 127

Short short s;2 byte signed:

-32768 to 32767

Character char c; 2 byte unicode. 1 char only!

Boolean boolean flag; true or false

Float Single float f; 32 bit

Float Double double d; 64 bit

Java Primitive Java Primitive TypesTypes

Java

Page 33: © 2004 IBM Corporation IBM | 2003, 2004 Phil Coulthard: coulthar@ca.ibm.com George Farr: farr@ca.ibm.com Java for RPG Programmers tm Java is a trademark.

RPG

© 2003 IBM Corporation

RPGRPG JavaJava CommentsCommentsnumeric (no decimals)

short or int depends on length

numeric (with decimals)

float or double, or BigDecimal class

depends on length. BigDecimal is a Java supplied class

float (length 4) float Both are IEEE standard

float (length 8) double Both are IEEE standard

character (length one) char single character only

character (length n) String class A class, not a primitive type

graphic String class A class, not a primitive typeunicode String class A class, not a primitive type

indicator boolean '1' = true, '0' = false

date, time, timestamp GregorianCalendar class

A class, not a primitive type

Data Types...Data Types...

Page 34: © 2004 IBM Corporation IBM | 2003, 2004 Phil Coulthard: coulthar@ca.ibm.com George Farr: farr@ca.ibm.com Java for RPG Programmers tm Java is a trademark.

RPG

© 2003 IBM Corporation

What about What about Packed?Packed?No packed decimal data type in Java

ƒ Could use float / double, but precision is a problem for "fixed decimal" numbers

Answer: BigDecimalBigDecimal classƒ Part of java.math packageƒ A class, not a built-in "primitive" data typeƒ Software simulation of fixed decimal numbersƒ Unlimited precision (total number of digits)ƒ Program control over scale (number of decimal digits)ƒ Methods include: add, subtract, divide, multiply, setScale

See also: BigIntegerBigInteger class

Java

Page 35: © 2004 IBM Corporation IBM | 2003, 2004 Phil Coulthard: coulthar@ca.ibm.com George Farr: farr@ca.ibm.com Java for RPG Programmers tm Java is a trademark.

RPG

© 2003 IBM Corporation

+*.. 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... ************ Beginning of data ********************************** FQSYSPRT O F 80 PRINTER OFLIND(*INOV) D FIRST S 7A INZ('George ') D AGE S 2B 0 INZ(25) D*------------------------------------------------------------ C *LIKE DEFINE FIRST LAST -3 C EVAL LAST='FARR' C MOVE ' AGE WAS--->'AGETEXT 12 C EXCEPT RESULT C MOVE *ON *INLR C*------------------------------------------------------------ OQSYSPRT E RESULT O FIRST 5 O LAST 10 O AGETEXT 22 O AGE 26 On the C specification

Using the Define operation code

On the new Definition specification

Declaring Fields in Declaring Fields in RPGRPG

RPG IV

D FIRST S 7A INZ('George ')

C *LIKE DEFINE FIRST LAST -3

C MOVE ' AGE WAS--->'AGETEXT 12

Page 36: © 2004 IBM Corporation IBM | 2003, 2004 Phil Coulthard: coulthar@ca.ibm.com George Farr: farr@ca.ibm.com Java for RPG Programmers tm Java is a trademark.

RPG

© 2003 IBM Corporation

Declaring VariablesDeclaring Variables

modifiers

type

expression

name ;

=

,

staticstatic

finalfinal

publicpublicprivateprivate

protectedprotected

bytebyteshortshort

intintlonglongcharcharfloatfloat

doubledoublebooleanboolean

class-nameclass-name

literal,variable,

computation

Java

Page 37: © 2004 IBM Corporation IBM | 2003, 2004 Phil Coulthard: coulthar@ca.ibm.com George Farr: farr@ca.ibm.com Java for RPG Programmers tm Java is a trademark.

RPG

© 2003 IBM Corporation

D*..1....+....2....+....3....+....4.. DEmpRcd DS D number 5I 0 D type 1A D name 20A D address 50A D hired D D salary 9P 2

public class EmployeeRecord { private int number; private char type; private String name; private String address; private Date hired; private BigDecimal salary; }

access modifiers

data types

actual variabl

e names

DS = "Data Structure"S = "Standalone"

Java

DeclaringDeclaringRPG IV

Page 38: © 2004 IBM Corporation IBM | 2003, 2004 Phil Coulthard: coulthar@ca.ibm.com George Farr: farr@ca.ibm.com Java for RPG Programmers tm Java is a trademark.

RPG

© 2003 IBM Corporation

You do not specify #digits!

ƒ Data Type determines # of bytes which determines how much var can holdeg: short holds -32768 to 32767

Usually you will use:

ƒ integer ("intint") when no decimals (unless numbers > 2 billion)

ƒ BigDecimalBigDecimal class when decimals needed

ƒ StringString class when dealing with characters

Where's the Where's the Length?Length?

Java

Page 39: © 2004 IBM Corporation IBM | 2003, 2004 Phil Coulthard: coulthar@ca.ibm.com George Farr: farr@ca.ibm.com Java for RPG Programmers tm Java is a trademark.

RPG

© 2003 IBM Corporation

D*..1....+....2....+....3....+....4....+....5 DEmpRcd DS D number 5I 0 INZ(0) D type 1A INZ('R') D name 20A INZ('Joe Public') D address 50A INZ('1 Young St') D hired D INZ(D'1999-12-31') D salary 9P 2 INZ(30000)

public class EmployeeRecord{ private int number = 0; private char type = 'R'; private String name = "Joe Public"; private String address = "1 Young St"; private Date hired = new Date(); private BigDecimal salary = new BigDecimal("30000.00");}

Declaring and Init'gDeclaring and Init'g

Note: new operator described later RPG IV

Java

Page 40: © 2004 IBM Corporation IBM | 2003, 2004 Phil Coulthard: coulthar@ca.ibm.com George Farr: farr@ca.ibm.com Java for RPG Programmers tm Java is a trademark.

RPG

© 2003 IBM Corporation

public class EmployeeRecordDefaults{ static final int NUMBER = 0; static final char TYPE = 'R'; static final String NAME = "Joe Public"; static final String ADDRESS = "1 Young St"; static final Date HIRED = new Date(); static final BigDecimal SALARY = new BigDecimal("30000.00");}

D*..1....+....2....+....3....+....4....+....5 D*EmpRcdDFT DS D numberDFT C CONST(0) D typeDFT C CONST('R') D nameDFT C CONST('Joe Public') D addressDFT C CONST('1 Young St') D hiredDFT C CONST(D'1999-12-31') D salaryDFT C CONST(30000)

"static" and "final" keywords define a constant

Declaring Declaring ConstantsConstants

RPG IV

Java

Page 41: © 2004 IBM Corporation IBM | 2003, 2004 Phil Coulthard: coulthar@ca.ibm.com George Farr: farr@ca.ibm.com Java for RPG Programmers tm Java is a trademark.

RPG

© 2003 IBM Corporation

...+... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+...*************** Beginning of data *********************** FQSYSPRT O F 80 PRINTER OFLIND(*INOV) D DS1 DS D int5 5I 0 INZ(25) D BIN9 9B 0 INZ(22) D ZONE9 9S 0 INZ(30) D PACK9 9P 0 INZ(40) D*--------------------------------------------------- C MOVE BIN9 INT5 C EXCEPT RESULT C MOVE PACK9 INT5 C EXCEPT RESULT C MOVE ZONE9 INT5 C EXCEPT RESULT C MOVE *ON *INLR OQSYSPRT E RESULT O INT5 15 ****************** End of data **************************

Casting in RPGCasting in RPG

casting is

always implici

t in RPG

RPG IV

Page 42: © 2004 IBM Corporation IBM | 2003, 2004 Phil Coulthard: coulthar@ca.ibm.com George Farr: farr@ca.ibm.com Java for RPG Programmers tm Java is a trademark.

RPG

© 2003 IBM Corporation

public class TestCast { public static void main(String args[]) { short sValue = 10; // 2 bytes long lValue = 30; // 8 bytes lValue = sValue; // implicit sValue = (short)lValue;// explicit } }

Casting in JavaCasting in Java

Casting in Javaƒ only implicit if target type larger

than sourceƒ else must explicitly cast: (target-

type)source

Java

Page 43: © 2004 IBM Corporation IBM | 2003, 2004 Phil Coulthard: coulthar@ca.ibm.com George Farr: farr@ca.ibm.com Java for RPG Programmers tm Java is a trademark.

RPG

© 2003 IBM Corporation

RPG IIIRPG III RPG IVRPG IV JavaJava

C MOVE 0 X C EVAL X = 0 X = 0;

A = B = C = 25;

AssignmentAssignment

Java

Java also allows stringing:

RPG IV: ƒ free-format EVALEVAL op-code & equal

operator '='Java:

ƒ no op-code, just equal operator "="

Page 44: © 2004 IBM Corporation IBM | 2003, 2004 Phil Coulthard: coulthar@ca.ibm.com George Farr: farr@ca.ibm.com Java for RPG Programmers tm Java is a trademark.

RPG

© 2003 IBM Corporation

Similar in both languagesBut in Java

ƒ Body can be compound or single statementSingle statement bodies don't need braces

If-ElseIf-Else C* op-code factor2 C IF expression C* Body C ELSE C* Body C ENDIF C* :

if (condition) { //Body; } else { //Body; }

JavaRPG IV

Page 45: © 2004 IBM Corporation IBM | 2003, 2004 Phil Coulthard: coulthar@ca.ibm.com George Farr: farr@ca.ibm.com Java for RPG Programmers tm Java is a trademark.

RPG

© 2003 IBM Corporation

C AGE IFLE 2C MOVE 0 PRICEC ELSEC AGE IFLE 10C MOVE 5 PRICEC ELSEC MOVE 10 PRICEC ENDIFC ENDIF

C IF AGE <= 2C EVAL PRICE = 0C ELSEC IF AGE <= 10C EVAL PRICE = 5C ELSE C EVAL PRICE = 10C ENDIFC ENDIF

if (age <= 2) price = 0; else if (age <= 10) price = 5; else price = 10;

note single statement in body so braces not required

Java

RPG III

IF ExampleIF Example

RPG IV

Page 46: © 2004 IBM Corporation IBM | 2003, 2004 Phil Coulthard: coulthar@ca.ibm.com George Farr: farr@ca.ibm.com Java for RPG Programmers tm Java is a trademark.

RPG

© 2003 IBM Corporation

RPGRPG JavaJava C SELECT C WHEN day = MON C* do something C WHEN day = TUE C* do something C WHEN day = WED C* do something C WHEN day = THU C* do something C OTHER C* do something C ENDSL

switch (day) { case MON: // do something break; case TUE: // do something break; .... default: // default code } // end switch statement

Improved readability over nested IFsStructures are similar in both

languages!

SELECT vs switchSELECT vs switch

Page 47: © 2004 IBM Corporation IBM | 2003, 2004 Phil Coulthard: coulthar@ca.ibm.com George Farr: farr@ca.ibm.com Java for RPG Programmers tm Java is a trademark.

RPG

© 2003 IBM Corporation

Breakless SwitchBreakless Switch switch (day) { case 1: case 2: case 3: // Mon-Wed code break; case 4: case 5: // Thur-Fri code break; default: } // end switch statement

Control goes to first "case" that matches the expression, then

executes until "break" is encountered, or the end brace

Java

Page 48: © 2004 IBM Corporation IBM | 2003, 2004 Phil Coulthard: coulthar@ca.ibm.com George Farr: farr@ca.ibm.com Java for RPG Programmers tm Java is a trademark.

RPG

© 2003 IBM Corporation

RPG and Java, like all other languages, have three main loops. They are...

RPGRPG JAVAJAVAC start DO limit indexC* :C ENDDO

for (initialization; condition; increments){ // body}

C DOW expressionC* :C ENDDO

while (expression){ // body}

C DOU expressionC* :C ENDDO

do{ // body} while (expression);

DO

DO-WHILE

DO-UNTIL

FOR

WHILE

DO-WHILE

Looping AroundLooping Around

Page 49: © 2004 IBM Corporation IBM | 2003, 2004 Phil Coulthard: coulthar@ca.ibm.com George Farr: farr@ca.ibm.com Java for RPG Programmers tm Java is a trademark.

RPG

© 2003 IBM Corporation

out:out: for (int i=0; i < 10; i++) { for (int j=0; j < 10; j++) { if (intArray[i][j] == -1) { // some code continue continue out; } if (intArray[i][j] == -2) break;break; } // end inner for-loop // outside inner loop } // end outer for-loop

Label:

Note: continue and break can specify a labeled loop to explicitly iterate or leave

C DOW RECORDN = 2938174 C IF CODE='A1' C ITERITER C ENDIF C LEAVELEAVE C ENDDO

AA

AA

continue, breakcontinue, break

RPG IV

Java

Page 50: © 2004 IBM Corporation IBM | 2003, 2004 Phil Coulthard: coulthar@ca.ibm.com George Farr: farr@ca.ibm.com Java for RPG Programmers tm Java is a trademark.

RPG

© 2003 IBM Corporation

OperationOperation Java Java OperatorOperator

RPG Op-RPG Op-CodesCodes

RPG IV RPG IV OperatorOperator

Equal == EQ =

Not Equal != NE <>

Greater Than > GT >

Less Than < LT <

GT or Equal >= GE >=

Lt or Equal <= LE <=

Or || ORxx OR

And && ANDxx AND

Negation ! NOT NOT

Operators: Operators: RelationalRelational

Page 51: © 2004 IBM Corporation IBM | 2003, 2004 Phil Coulthard: coulthar@ca.ibm.com George Farr: farr@ca.ibm.com Java for RPG Programmers tm Java is a trademark.

RPG

© 2003 IBM Corporation

C AGE IFLE 2C AGE ORGE 65C CURDAY ANDEQSENDAYC MOVE 0 PRICEC ENDIF

Relational ExampleRelational Exampleif ( (age <= 2) || ( (age >= 65) && (currDay == SENIORS_DAY) ) ) price = 0; note double

equals: ==

C IF (age <= 2) OR C ((age >= 65) ANDC (currday = SENIORS-DAY) )C EVAL price = 0C ENDIF

RPG IV

RPG III

Java

Page 52: © 2004 IBM Corporation IBM | 2003, 2004 Phil Coulthard: coulthar@ca.ibm.com George Farr: farr@ca.ibm.com Java for RPG Programmers tm Java is a trademark.

RPG

© 2003 IBM Corporation

OperationOperation Java Java OperatorOperator

RPG RPG Op-CodesOp-Codes

RPG RPG OperatorOperator

Add + ADD, Z-ADD +Subtract - SUB, Z-SUB -Multiply * MULT *Divide / DIV /

Modulus % DIV and MVR n / a

PowerUse exp or

pow in Math class

n / a **

Operators: MathOperators: Math

Page 53: © 2004 IBM Corporation IBM | 2003, 2004 Phil Coulthard: coulthar@ca.ibm.com George Farr: farr@ca.ibm.com Java for RPG Programmers tm Java is a trademark.

RPG

© 2003 IBM Corporation

C EVAL a = b + cC EVAL a = (b+c)/12

a = b + c; a = (b+c)/12;

C* A = B+CC B ADD C A 50C* A = (B+C)/12C B ADD C A 50C A DIV 12 A

Math ExamplesMath Examples

RPG IV

RPG III

Java

Page 54: © 2004 IBM Corporation IBM | 2003, 2004 Phil Coulthard: coulthar@ca.ibm.com George Farr: farr@ca.ibm.com Java for RPG Programmers tm Java is a trademark.

RPG

© 2003 IBM Corporation

Contracted Contracted AssignmentAssignmentWhat does this mean?

X += 10;Answer: short form for...

X = X + 10;All binary operators supported:

X *= 10; X /= 2; Y -= 1;

Same as using ADD op-code in RPG and not

specifying factor 1 value

Java

Page 55: © 2004 IBM Corporation IBM | 2003, 2004 Phil Coulthard: coulthar@ca.ibm.com George Farr: farr@ca.ibm.com Java for RPG Programmers tm Java is a trademark.

RPG

© 2003 IBM Corporation

What does this mean?X++;

Answer: short form for X = X + 1;

Also supports decrementing: X--;

Can be before or after variable:++X; --X;

Increment, Increment, DecrementDecrement

same as C

and C++

Page 56: © 2004 IBM Corporation IBM | 2003, 2004 Phil Coulthard: coulthar@ca.ibm.com George Farr: farr@ca.ibm.com Java for RPG Programmers tm Java is a trademark.

RPG

© 2003 IBM Corporation

ReferenceReference Data Data TypesTypes

JavaPrimitive Primitive

TypesTypes

NumericNumeric

IntegerInteger FloatFloat

byte short int long

charfloat

double

boolean

Reference Reference TypesTypes

Java-SuppliedJava-Supplied User-User-DefinedDefined

StringsStringsArraysArraysClassesClasses

Page 57: © 2004 IBM Corporation IBM | 2003, 2004 Phil Coulthard: coulthar@ca.ibm.com George Farr: farr@ca.ibm.com Java for RPG Programmers tm Java is a trademark.

RPG

© 2003 IBM Corporation

To use a class, you must do two things:

•Declare an object reference variable:Declare a variable using class as the type:

MyClassMyClass myVariable;

•Instantiate an object using "new"

myVariable = new MyClassMyClass();

"how"

Using ClassesUsing Classes

Page 58: © 2004 IBM Corporation IBM | 2003, 2004 Phil Coulthard: coulthar@ca.ibm.com George Farr: farr@ca.ibm.com Java for RPG Programmers tm Java is a trademark.

RPG

© 2003 IBM Corporation

Object reference variables are ƒ merely pointers, or references , to

objectsƒ initially point to "null"

a keyword in Java The new operator:

ƒ allocates memory for the class ("instantiates")Total memory needed by all global variables in class

Allocated memory known asƒ object or ƒ instance of class

ObjectsObjects

Page 59: © 2004 IBM Corporation IBM | 2003, 2004 Phil Coulthard: coulthar@ca.ibm.com George Farr: farr@ca.ibm.com Java for RPG Programmers tm Java is a trademark.

RPG

© 2003 IBM Corporation

public class Customer{ private int id; private String name; private String address; private int phone; private BigDecimal accountBalance;

public void setId(int custId) { id = custId; }

public boolean readInfo() { boolean readok = false; // read customer info from database return readok; } // more methods. . .}

Customer aCust = new Customer();

how to call

the methods?

you can declare & instantiate in

one step!

Object Object ExampleExample

Page 60: © 2004 IBM Corporation IBM | 2003, 2004 Phil Coulthard: coulthar@ca.ibm.com George Farr: farr@ca.ibm.com Java for RPG Programmers tm Java is a trademark.

RPG

© 2003 IBM Corporation

public class ProcessCustomer{ public static void main(string args[]) {

Customer aCust = new Customer(); aCust.setId(100012); aCust.readInfo(); }}

To call a method ƒ use dot operator on object reference

variable

Must use object reference variable, not Class name

Can also access non-

private variables with dot operator

Dot OperatorDot Operator

Page 61: © 2004 IBM Corporation IBM | 2003, 2004 Phil Coulthard: coulthar@ca.ibm.com George Farr: farr@ca.ibm.com Java for RPG Programmers tm Java is a trademark.

RPG

© 2003 IBM Corporation

Why must we instantiate?ƒ Because you can instantiate more

than one!Customer cust1 = new Customer();cust1.setId(100011);

Customer cust2 = new Customer();cust2.setId(100012);. . .

Each gets their own memoryƒ Each hold unique values for their

variablesHence we call global variables "instance variables"

Why Objects?Why Objects?"why"

Page 62: © 2004 IBM Corporation IBM | 2003, 2004 Phil Coulthard: coulthar@ca.ibm.com George Farr: farr@ca.ibm.com Java for RPG Programmers tm Java is a trademark.

RPG

© 2003 IBM Corporation

Classes are like templates ƒ or "cookie cutters"

Classes have no memory allocated

ƒ Objects have the actual memoryobject == "instance of class"object == actual "cookies"

Notes on ObjectsNotes on Objects

Page 63: © 2004 IBM Corporation IBM | 2003, 2004 Phil Coulthard: coulthar@ca.ibm.com George Farr: farr@ca.ibm.com Java for RPG Programmers tm Java is a trademark.

RPG

© 2003 IBM Corporation

Possible classesƒ Customerƒ Employeeƒ StateTaxƒ CustomerIdƒ EmployeeIdƒ Payrollƒ Orderƒ PushButton

e.g., in a GUI applicationEach instance might want different label text

Class/Object Class/Object ExamplesExamples

Page 64: © 2004 IBM Corporation IBM | 2003, 2004 Phil Coulthard: coulthar@ca.ibm.com George Farr: farr@ca.ibm.com Java for RPG Programmers tm Java is a trademark.

RPG

© 2003 IBM Corporation

Object1

Object2

MasterMaster object1 = new MasterMaster();

MasterMaster object2 = new MasterMaster();

object1 = object2;

Nobody points to object1 now so it is swept up by Garbage Collector

step 1

step 2

copies addresses!

Equating Equating ReferencesReferences

Page 65: © 2004 IBM Corporation IBM | 2003, 2004 Phil Coulthard: coulthar@ca.ibm.com George Farr: farr@ca.ibm.com Java for RPG Programmers tm Java is a trademark.

RPG

© 2003 IBM Corporation

ƒ Three ways to call methods:Assignment statement

returned result is saved in a variableExpression

returned result used in expression but not savedExpression

Runs the method and disregards return value

RPGRPG JavaJavaEVAL myVar = myProc(p1 : p2) myVar = myObject.myProc(p1,p2);

IF myProc(p1 : p2) = 10 if (myObject.myProc(p1,p2) == 10)

CALLP myProc(p1 : p2) myObject.myProc(p1, p2);

EVAL myVar = noParms myVar = myObject.noParms();

IF noParms = 10 if (myObject.noParms() == 10)

CALLP noParms myObject.noParms();

Calling Java Calling Java MethodsMethods

Page 66: © 2004 IBM Corporation IBM | 2003, 2004 Phil Coulthard: coulthar@ca.ibm.com George Farr: farr@ca.ibm.com Java for RPG Programmers tm Java is a trademark.

RPG

© 2003 IBM Corporation

public int max(int parm1, int parm2) { // code to return max of two integers } public float max(float parm1, float parm2) { // code to return max of two floats }

OverloadingOverloadingMethod Overloading

ƒ Methods in same class with same name ! But:Number or type of parameters are different

method name + nbr and type of parms == "signature"

ƒ Official name 'method overloading'

Page 67: © 2004 IBM Corporation IBM | 2003, 2004 Phil Coulthard: coulthar@ca.ibm.com George Farr: farr@ca.ibm.com Java for RPG Programmers tm Java is a trademark.

RPG

© 2003 IBM Corporation

Java variables can be static :ƒ Use static modifer (like RPG's STATIC

keyword)Cannot specify it on local variables in methods!

ƒ Static variables are called class variables Versus instance variables

ƒ All objects share same value for static varsQualify with the class name to access them

class RentalCar { static int totalRented = 0; public void rentCar() { // . . . ++totalRented; } }

Static VariablesStatic Variables

if (RentalCar.totalRented > MAX_CARS)

Page 68: © 2004 IBM Corporation IBM | 2003, 2004 Phil Coulthard: coulthar@ca.ibm.com George Farr: farr@ca.ibm.com Java for RPG Programmers tm Java is a trademark.

RPG

© 2003 IBM Corporation

class MyHelperRoutines { // static method... static int max(int p1, int p2) { if (p1 > p2) return p1; else return p2; } }

If your method does not reference or use any instance variables, it should be static!

int maxvalue = MyHelpers max(1000,2000);

Static MethodsStatic MethodsMethods can be static too

ƒ called class methodsƒ Equivalent to

standalone procedureCall by qualifying with class name, not obj ref variable

ƒ Cannot reference instance variables in the method

Page 69: © 2004 IBM Corporation IBM | 2003, 2004 Phil Coulthard: coulthar@ca.ibm.com George Farr: farr@ca.ibm.com Java for RPG Programmers tm Java is a trademark.

RPG

© 2003 IBM Corporation

Classes can have constructorsƒ Special methods identified by:

Same name as classNo return value specified (not even void)

ƒ Called by JVM when object created with newRight after allocating memory for the object

ƒ Your opportunity to do initialization like *INZSR in RPG

ConstructorsConstructors

public class MyClass{ public MyClass() { // . . . }}

constructor

Page 70: © 2004 IBM Corporation IBM | 2003, 2004 Phil Coulthard: coulthar@ca.ibm.com George Farr: farr@ca.ibm.com Java for RPG Programmers tm Java is a trademark.

RPG

© 2003 IBM Corporation

Constructors can be overloadedƒ Same as with all methods

Number or type of parameters must be unique

ƒ Compiler, Runtime determine which to call By matching number, type of new parameters

Ctor OverloadingCtor Overloading

private int myVariable; private int myOtherVariable = 0;

public MyClass(int parm1) { myVariable = parm1; } public MyClass(int parm1,int parm2) { myVariable = parm1; myOtherVariable = parm2; }

MyClass obj1 = new MyClass(10);

MyClass obj1 = new MyClass(10,20);

Constructor with no parms called default constructor

Page 71: © 2004 IBM Corporation IBM | 2003, 2004 Phil Coulthard: coulthar@ca.ibm.com George Farr: farr@ca.ibm.com Java for RPG Programmers tm Java is a trademark.

RPG

© 2003 IBM Corporation

AS400 host1 = new AS400(); // Call default constructor AS400 host2 = new AS400("GEORGE","OKGUY"); // Two parm ctor

class AS400AS400 { private String userId; private String password;

AS400AS400() // default constructor { this("PHIL", "GREATGUY"); } AS400AS400(String userId, String password) { this.userId = userId; this.password = password; } } // end AS400 class

Constructor Constructor ExampleExample

use "this()" to call another constructor

Java

Page 72: © 2004 IBM Corporation IBM | 2003, 2004 Phil Coulthard: coulthar@ca.ibm.com George Farr: farr@ca.ibm.com Java for RPG Programmers tm Java is a trademark.

RPG

© 2003 IBM Corporation

Java's main method must look like:

public static void main(String args[]) { ... }

WhatWhat RPG IVRPG IV JavaJavaHow called CALL command java command

What compile unit gets control

first *MODULE without NOMAIN keyword

class identified on java command

What code gets control

first C-specs main method

Main: RPG and JavaMain: RPG and Java

so JVM can call

so JVM doesn't have to instantiate class

nothing returned

JVM looks for this name

Array of Strings: parameters from

command line

Page 73: © 2004 IBM Corporation IBM | 2003, 2004 Phil Coulthard: coulthar@ca.ibm.com George Farr: farr@ca.ibm.com Java for RPG Programmers tm Java is a trademark.

RPG

© 2003 IBM Corporation

Writing To ConsoleWriting To Console * Prototype of this program main entry DMAIN PR EXTPGM('HWORLD') D STRING 1000A OPTIONS(*VARSIZE) * Definition of this program main entry DMAIN PI D STRING 1000A OPTIONS(*VARSIZE) * Global variables DOutString S 52A * Main logic C EVAL OutString = 'Input: ' + C %TRIMR(%SUBST(STRING:1:45)) C OutString DSPLY * End of program C MOVE *ON *INLR

// main class public class HelloWorld { // main method public static void main(String[] args) { // print first parameter passed System.out.println("Input: " + args[0]); } }

RPG IV

Java

Page 74: © 2004 IBM Corporation IBM | 2003, 2004 Phil Coulthard: coulthar@ca.ibm.com George Farr: farr@ca.ibm.com Java for RPG Programmers tm Java is a trademark.

RPG

© 2003 IBM Corporation

public class TimeTime { private int hour, minute, second;

public TimeTime(int hour, int minute, int second) { this.hour = hour; this.minute = minute; this.second = second; } public String toString() { return "Time: " + hour + ", " + minute + ", " + second; } public static void main(String args[]) { TimeTime torontoTime = new TimeTime(08,30,0); TimeTime sanFranTime = new TimeTime(05,30,0); System.out.println(torontoTime); System.out.println(sanFranTime); } }

Instance variables

Object reference variables

ReviewReview

Often, main is used for testing non-initial classes

Java

Page 75: © 2004 IBM Corporation IBM | 2003, 2004 Phil Coulthard: coulthar@ca.ibm.com George Farr: farr@ca.ibm.com Java for RPG Programmers tm Java is a trademark.

RPG

© 2003 IBM Corporation

...+... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... D NAMES 20A DIM(5) CTDATA D PERRCD(1) D SALARYS 5P0 DIM(5) FROMFILE(X) D PERRCD(10) D SSNumber 9B0 DIM(30) D* D*--------------------------------------------------- C* : C* : C* RPG CODE C* : C* : O* O* END OF SOURCE CODE **CTDATA NAMES George Phil Sandra Jennifer Angelica

COMPILE TIME

PRERUN TIME

COMPILE TIME

ARRAY DATA

RUN TIME

Arrays in RPGArrays in RPG

RPG IV

Page 76: © 2004 IBM Corporation IBM | 2003, 2004 Phil Coulthard: coulthar@ca.ibm.com George Farr: farr@ca.ibm.com Java for RPG Programmers tm Java is a trademark.

RPG

© 2003 IBM Corporation

int thisArray[ ]; long anotherArray[ ] [ ]; char[ ] orThisOne[ ];

int thisArray [ ] = new int[1000]; long anotherArray [ ][ ] = new long[10] [10]; char[ ] orThisOne[ ] = new char [20] [20];

Declaration

Declaration and Definition

Arrays in JavaArrays in Java

ƒ Spacing not importantƒ # bracket pairs = # dimensionsƒ Type is same for all elementsƒ Arrays are objects! Require new

#elements

[ ] versus ( )

Java

Page 77: © 2004 IBM Corporation IBM | 2003, 2004 Phil Coulthard: coulthar@ca.ibm.com George Farr: farr@ca.ibm.com Java for RPG Programmers tm Java is a trademark.

RPG

© 2003 IBM Corporation

class TestMultiArrayRT { public static void main(String args[]) { int rtArray[][] = new int[3][3]; // Two dim array int value = 1; // Loop through all rows... for (int xIdx=0; xIdx < rtArray.length; xIdx++) { // Loop through all columns... for (int yIdx=0; yIdx < rtArray[xIdx].length; yIdx++) { rtArray[xIdx][yIdx] = value++; // assign and incr't System.out.print(rtArray[xIdx][yIdx] + " "); } // end inner for loop System.out.println(); } // end outer for loop } // end main method } // end TestMultiArrayRT class

Use [var] to access

elements

Run Time Init'nRun Time Init'nlength is array

instance variable

arrays are zero-based

in Java!

Page 78: © 2004 IBM Corporation IBM | 2003, 2004 Phil Coulthard: coulthar@ca.ibm.com George Farr: farr@ca.ibm.com Java for RPG Programmers tm Java is a trademark.

RPG

© 2003 IBM Corporation

Java allows initializing at declaration time (compile time):

String employee[] = {"ABC", "DEF", "GHI", "JKL"};

employee[0] = "ABC" employee[1] = "DEF" employee[2] = "GHI" employee[3] = "JKL"

Special Java syntax:ƒ Values specified between curly braces ƒ Semi-colon needed after last braceƒ Values for each element separated by

commas ƒ No need to use new operator (implied)

Note: String objects are covered shortly

Compile Time Init'nCompile Time Init'n

Java

Page 79: © 2004 IBM Corporation IBM | 2003, 2004 Phil Coulthard: coulthar@ca.ibm.com George Farr: farr@ca.ibm.com Java for RPG Programmers tm Java is a trademark.

RPG

© 2003 IBM Corporation

Strings are objects in Java ƒ of the class StringString (in java.lang package)

Language has special support:ƒ You can concatenate with the "+"

operatorƒ You don't have to use the new operator

String text1 = "George"; String text2 = "Phil"; String finalText = text1 + " and " + text2;

String text1 = new String("George"); String text2 = new String("Phil"); String finalText = new String(text1); finalText = finalText.concat(" and "); finalText = finalText.concat(text2);

String BasicsString Basics

OR

Page 80: © 2004 IBM Corporation IBM | 2003, 2004 Phil Coulthard: coulthar@ca.ibm.com George Farr: farr@ca.ibm.com Java for RPG Programmers tm Java is a trademark.

RPG

© 2003 IBM Corporation

RPG RPG o/co/c

RPG RPG built-inbuilt-in

DescriptionDescription Java Method(s)Java Method(s)

CAT (or '+')

Concatenate two strings concat(string) or '+' operator

SUBST

%SUBST Extract a substring from a string

substring(int start, int end) or substring(int start)

SCAN %SCAN Scan for a substring indexOf()

%TRIM Trim begin, end blanks trim()

%LEN Return length of string length()

XLATE Translate a string Not Available

CHECK Check for characters Not Available

CHECKR Check in reverse Not Available

%TRIML Trim leading blanks Not Available

%TRIMR Trim trailing blanks Not Available

%CHAR V4R2. Converts to string valueOf(datatype value) in String class

%REPLACE (V4R2) Allows replacement of substring

Not Available

Strings: Java vs Strings: Java vs RPGRPG

Page 81: © 2004 IBM Corporation IBM | 2003, 2004 Phil Coulthard: coulthar@ca.ibm.com George Farr: farr@ca.ibm.com Java for RPG Programmers tm Java is a trademark.

RPG

© 2003 IBM Corporation

METHODMETHOD DESCRIPTIONDESCRIPTIONcompareTo Compares two Strings lexicographically

endsWith, startsWith Test if String ends or starts with the specified string

equals, equalsIgnoreCase Compares this String to another, ignoring case

getBytes Convert this String into a byte array

getChars Copies characters from this substring into the destination character array

regionMatches Tests if two String regions are equal

toCharArray Converts this String to a new character array

toLowerCase Converts all characters in String to lower case

toUpperCase Converts all characters in String to upper case

valueOf Converts primitive data type value to a String (this is a static method)

Some String Some String MethodsMethods

Page 82: © 2004 IBM Corporation IBM | 2003, 2004 Phil Coulthard: coulthar@ca.ibm.com George Farr: farr@ca.ibm.com Java for RPG Programmers tm Java is a trademark.

RPG

© 2003 IBM Corporation

Java Date / TimeJava Date / Time

JavaJava

ClassClass Pack-Pack-ageage

DescriptionDescription

Date java.util Simple date/time capture. No manipulation methods

Gregorian-Calendar

java.util Rich date/time functionality, including comparing, adding, subtracting, extracting

SimpleDate-Format

java.text For creating "formatting objects" that will format any given Date object to the specified format patternTimeZone java.util For creating timezone objects representing any timezone. Apply to GregorianCalendar or SimpleDateFormat objects to get equivalent date/time in that timezone

Page 83: © 2004 IBM Corporation IBM | 2003, 2004 Phil Coulthard: coulthar@ca.ibm.com George Farr: farr@ca.ibm.com Java for RPG Programmers tm Java is a trademark.

RPG

© 2003 IBM Corporation

OO: InheritanceOO: Inheritance // class Employee public class Employee { string name; int salary; public Employee(string id, int sal) { name = id; salary = sal; } public void printEmployee() { System.out.print("My name is"+name); } }

ƒ Child class extends parent classƒ inherits methods, variables

ƒ Child can also:ƒAdd new methods, variablesƒOverride methods

// class SubEmployee public class SubEmployee extends Employee {

}

Java

Page 84: © 2004 IBM Corporation IBM | 2003, 2004 Phil Coulthard: coulthar@ca.ibm.com George Farr: farr@ca.ibm.com Java for RPG Programmers tm Java is a trademark.

RPG

© 2003 IBM Corporation

OO: InheritanceOO: Inheritance

extends

No limit to inheritance tree

ƒ All child classes inherit methods of all parents

Just rememberƒ You can only extend one

classƒ Only one immediate

parentBut grandparents allowed

TomCat gruff = new TomCat();gruff.eat();gruff.talk();gruff.purr();

extendsJava

Class Animal

eat()sleep()talk()

Class Cattalk() { println("meow"); }purr()

Class TomCat

talk() { println(“grr"); }hiss()

Page 85: © 2004 IBM Corporation IBM | 2003, 2004 Phil Coulthard: coulthar@ca.ibm.com George Farr: farr@ca.ibm.com Java for RPG Programmers tm Java is a trademark.

RPG

© 2003 IBM Corporation

Thanks Thanks for for listeninglistening!!!!

ThanksThanks

Page 86: © 2004 IBM Corporation IBM | 2003, 2004 Phil Coulthard: coulthar@ca.ibm.com George Farr: farr@ca.ibm.com Java for RPG Programmers tm Java is a trademark.

RPG

© 2003 IBM Corporation

More More InformationInformation

AgendaAgenda

Page 87: © 2004 IBM Corporation IBM | 2003, 2004 Phil Coulthard: coulthar@ca.ibm.com George Farr: farr@ca.ibm.com Java for RPG Programmers tm Java is a trademark.

RPG

© 2003 IBM Corporation

Website URLWebsite URL DescriptionDescriptionwww.ibm.com/software/awdtools/wds400 IBM WebSphere Development Studio for iSeries

www.ibm.com/websphere/developer WebSphere Developer Domain

www.ibm.com/javawww.ibm.com/iseries/java

IBM Java

www.ibm.com/webspherewww.ibm.com/iseries/websphere

IBM WebSphereIBM iSeries WebSphere

www.java.sun.com/products Sun Java

www.ibm.com/iseries/infocenter.htmlwww.ibm.com/rochester/as400bks

IBM iSeries online books and help

www.ibm.com/redbooks IBM Redbooks

WebsitesWebsites

Page 88: © 2004 IBM Corporation IBM | 2003, 2004 Phil Coulthard: coulthar@ca.ibm.com George Farr: farr@ca.ibm.com Java for RPG Programmers tm Java is a trademark.

RPG

© 2003 IBM Corporation

BooksBooks

Book, URLBook, URL By, ISBNBy, ISBN-Java for RPG Programmers-Java for COBOL Programmers-Student WorkBook for Java for RPG and COBOL Programmerswww.mcpressonline.com/ibmpress

Phil Coulthard, George Farr. IBM Press.

JAVA and the AS/400www.29thStreetPress.com

Daniel Darnell. ISBN 1-58304-033-1

Java Application Strategies for iSeries and AS/400 2nd Editionwww.mc-store.com/mc-store/

Don Denoncourt. ISBN 1-58347-025-5

Core Java serieswww.amazon.com

Now a series of 3 books. Horstmann, Cornell

Teach Yourself Java in 21 Dayswww.amazon.com

Rogers Cadenhead, Laura Lamay. ISBN 1575213907

Page 89: © 2004 IBM Corporation IBM | 2003, 2004 Phil Coulthard: coulthar@ca.ibm.com George Farr: farr@ca.ibm.com Java for RPG Programmers tm Java is a trademark.

RPG

© 2003 IBM Corporation

Trademarks & Trademarks & DisclaimersDisclaimers

8 IBM Corporation 1994-2003. All rights reserved.References in this document to IBM products or services do not imply that IBM intends to make them available in every country.The following terms are trademarks or registered trademarks of International Business Machines Corporation in the United States, other countries, or both:

Lotus, Freelance Graphics, and Word Pro are registered trademarks of Lotus Development Corporation and/or IBM Corporation.Domino is a trademark of Lotus Development Corporation and/or IBM Corporation.

C-bus is a trademark of Corollary, Inc. in the United States, other countries, or both. Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both. Microsoft, Windows, Windows NT, and the Windows logo are trademarks of Microsoft Corporation in the United States, other countries, or both. ActionMedia, LANDesk, MMX, Pentium and ProShare are trademarks of Intel Corporation in the United States, other countries, or both. UNIX is a registered trademark of The Open Group in the United States and other countries.SET and the SET Logo are trademarks owned by SET Secure Electronic Transaction LLC. Other company, product and service names may be trademarks or service marks of others.

Information is provided "AS IS" without warranty of any kind.

All customer examples described are presented as illustrations of how those customers have used IBM products and the results they may have achieved. Actual environmental costs and performance characteristics may vary by customer.

Information in this presentation concerning non-IBM products was obtained from a supplier of these products, published announcement material, or other publicly available sources and does not constitute an endorsement of such products by IBM. Sources for non-IBM list prices and performance numbers are taken from publicly available information, including vendor announcements and vendor worldwide homepages. IBM has not tested these products and cannot confirm the accuracy of performance, capability, or any other claims related to non-IBM products. Questions on the capability of non-IBM products should be addressed to the supplier of those products.

All statements regarding IBM future direction and intent are subject to change or withdrawal without notice, and represent goals and objectives only. Contact your local IBM office or IBM authorized reseller for the full text of the specific Statement of Direction.

Some information in this presentation addresses anticipated future capabilities. Such information is not intended as a definitive statement of a commitment to specific levels of performance, function or delivery schedules with respect to any future products. Such commitments are only made in IBM product announcements. The information is presented here to communicate IBM's current investment and development activities as a good faith effort to help with our customers' future planning.

Performance is based on measurements and projections using standard IBM benchmarks in a controlled environment. The actual throughput or performance that any user will experience will vary depending upon considerations such as the amount of multiprogramming in the user's job stream, the I/O configuration, the storage configuration, and the workload processed. Therefore, no assurance can be given that an individual user will achieve throughput or performance improvements equivalent to the ratios stated here.

Photographs shown are of engineering prototypes. Changes may be incorporated in production models.

AS/400 IBM(logo)AS/400e iSeriese (logo) business OS/400IBM

Page 90: © 2004 IBM Corporation IBM | 2003, 2004 Phil Coulthard: coulthar@ca.ibm.com George Farr: farr@ca.ibm.com Java for RPG Programmers tm Java is a trademark.

RPG

© 2003 IBM Corporation

Questions?

Submit your questions now by clicking on the “Ask A Question” button

in the lower left corner of your presentation screen.

Phil will answer your questions shortly after the broadcast.


Recommended