Back

Java for Progress4GL programmers

This document contains a quick reference of Java functions and methods along with their equivalence in Progress4GL.

Description Java Progress4GL
Flow control
If
if( true ) {

    .......
} else if ( true ) {

    .......
} else {
    .......
}
IF true THEN DO:
    .......
END.
ELSE IF true THEN DO:
    .......
END.
ELSE DO:
    .......
END.
Loop


for( int i = 0; i < 10; i++ ) {
    ........

    continue;

    ........

    break;

    ........

}
DEF VAR i AS INT NO-UNDO.

DO i = 1 TO 10 :
    ........

    NEXT.

    ........

    LEAVE.

    ........

END.
While
int i = 0;

while( i < 10 ) {
  i++;
}
DEF VAR i AS INT INIT 0 NO-UNDO.

DO WHILE i < 10 :
  i = i + 1.
END.
Switch/Case
int i;

switch (customType) {
    case 1 :
        .......

        break;
    case 2 :
        .......

        break;
    default:
        .......

        break;
}
DEF VAR i AS INT NO-UNDO.

CASE i :
  WHEN 1 THEN
  DO:
    .......
  END.
  WHEN 2 THEN
  DO:
    .......
  END.
  OTHERWISE
  DO:
    .......
  END.
END CASE.
File I/O
Write to file
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.IOException;

String fileEncoding = "windows-1250";
String fileName = "testfile.txt";
String line = null;

try {
    FileOutputStream fos = new FileOutputStream(new File( fileName ));
    OutputStreamWriter osw = new OutputStreamWriter(fos, fileEncoding);
    PrintWriter out_file = new PrintWriter(osw);

    out_file.println( "Hello, world!" );

    if (out_file != null) out_file.close();
} catch (IOException e) {
    System.err.println("IOException: " + e.getMessage());
}





DEF VAR fileEncoding AS CHAR INITIAL "1250" NO-UNDO.
DEF VAR v_fileName AS CHAR INITIAL "testfile.txt" NO-UNDO.
DEF VAR v_line AS CHAR NO-UNDO.
DEF STREAM s_out.

OUTPUT STREAM s_out TO VALUE( v_fileName )
  CONVERT TARGET fileEncoding.


PUT STREAM s_out UNFORMATTED "Hello, world!" SKIP.

OUTPUT STREAM s_out CLOSE.
Read file
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;

String fileEncoding = "windows-1250";
String fileName = "testfile.txt";
String line = null;

try {
    FileInputStream fis = new FileInputStream(new File( fileName ));
    InputStreamReader isr = new InputStreamReader(fis, fileEncoding);
    BufferedReader in = new BufferedReader(isr);

    while( (line = in.readLine()) != null) {

        ....
    }
    if( in != null ) in.close();
} catch (IOException e) {
    System.err.println("IOException: " + e.getMessage());
}





DEF VAR fileEncoding AS CHAR INITIAL "1250" NO-UNDO.
DEF VAR v_fileName AS CHAR INITIAL "testfile.txt" NO-UNDO.
DEF VAR v_line AS CHAR NO-UNDO.
DEF STREAM s_in.

INPUT STREAM s_in FROM VALUE( v_fileName )
  CONVERT SOURCE fileEncoding.


REPEAT:
  IMPORT STREAM s_in UNFORMATTED v_line.
  ....
END.
INPUT STREAM s_in CLOSE.
String manipulation
Equals

String str1 = "Jane";
String str2 = "Mary";

if( str1.equals(str2) )
DEF VAR str1 AS CHAR INITIAL "Jane" NO-UNDO.
DEF VAR str2 AS CHAR INITIAL "Mary" NO-UNDO.

IF str1 = str2 THEN
Substring
String str;
String sub1;
String sub2;

str = "Hello, world!";
sub1 = str.substring(3,5); // lo
sub2 = str.substring(7);   // world!
DEF VAR str AS CHAR NO-UNDO.
DEF VAR sub1 AS CHAR NO-UNDO.
DEF VAR sub2 AS CHAR NO-UNDO.

str = "Hello, world!".
sub1 = SUBSTRING( str, 4, 2 ). /* lo */
sub2 = SUBSTRING( str, 8 ). /* world1 */
Replace
String str;
String str1;

str = "Hello, world!";
str1 = str.replaceAll( "world", "Jane");
DEF VAR str AS CHAR  NO-UNDO.
DEF VAR str1 AS CHAR NO-UNDO.

str = "Hello, world!".
str1 = REPLACE( str, "world", "Jane" ).
Break into pieces

String listOfValue = "Jane;Mary;Virginia;Julia";

String[] listOfValueSplitted = listOfValue.split(";");
for( int i = 0; i < listOfValueSplitted.length; i++ ) {
    System.out.println( listOfValueSplitted[i] );
}
DEF VAR i AS INT NO-UNDO.
DEF VAR listOfValue AS CHAR
    INITIAL "Jane;Mary;Virginia;Julia" NO-UNDO.

DO i = 1 TO NUM-ENTRIES( listOfValue, ";" ):
  DISPLAY ENTRY( i, listOfValue, ";" ).
END.
Other methods
indexOf
lastIndexOf
length
matches
startsWith
toLowerCase
toUpperCase
trim
INDEX
R-INDEX
LENGTH
MATCHES
BEGIN
LC
CAPS
TRIM
Conversions
Numbers to strings
int i;
Integer j;

j.toString()
String.valueOf( i )

STRING( i )
Strings to numbers
String s = "7";
try {
    int i = Integer.parseInt( s );
} catch (NumberFormatException e) {
    System.err.println("NumberFormatException: " + e.getMessage());
}
INTEGER( s )
ASCII to string

char b = 9;

String.valueOf(b)		
Character.toString(b)	

CHR( 9 )
Date to string
import java.text.SimpleDateFormat;
import java.util.GregorianCalendar;

SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");

GregorianCalendar date =  new GregorianCalendar();

String dateStr = formatter.format(date.getTime());
STRING( TODAY, "9999-99-99" )
Time to string
import java.text.SimpleDateFormat;
import java.util.GregorianCalendar;

SimpleDateFormat formatter = new SimpleDateFormat("HH:mm:ss");

GregorianCalendar greCal = new GregorianCalendar();

String timeStr = formatter.format(greCal.getTime());
STRING( TIME, "HH:MM:SS" )
String to date
import java.text.*;
import java.util.GregorianCalendar;

SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
GregorianCalendar greCal = new GregorianCalendar();

try {
    greCal.setTime( formatter.parse( "2005-12-31" ) );
} catch(ParseException ex) {
    System.err.println("ParseException: " + ex.getMessage());
}
DATE(INT("12"),INT("31"),INT("2005"))
String to time
import java.text.*;
import java.util.GregorianCalendar;

SimpleDateFormat formatter = new SimpleDateFormat("HH:mm:ss");
GregorianCalendar greCal = new GregorianCalendar();

try {
    greCal.setTime( formatter.parse( "23:59:12" ) );
} catch(ParseException ex) {
    System.err.println("ParseException: " + ex.getMessage());
}

Timestamp and Gregorian Calendar
import java.text.*;
import java.util.GregorianCalendar;

java.sql.Timestamp timestampValue = rs.getTimestamp( "timestampValue" );
System.out.println( timestampValue );

// Convert Timestamp to GregorianCalendar
GregorianCalendar greCal = new GregorianCalendar();
greCal.setTime( timestampValue );

// Convert GregorianCalendar to String
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String greCalString = formatter.format( greCal.getTime() );
System.out.println( greCalString );

// Convert String to GregorianCalendar
try {
    greCal.setTime( formatter.parse( greCalString ) );
} catch(ParseException ex) {
    System.err.println("ParseException: " + ex.getMessage());
}

// Convert GregorianCalendar to Timestamp
timestampValue.setTime( greCal.getTimeInMillis() );
System.out.println( timestampValue );

Date to Gregorian Calendar
import java.text.*;
import java.util.GregorianCalendar;

java.util.Date date = new java.util.Date();
GregorianCalendar greCal = new GregorianCalendar();
greCal.setTime( date );


Date and time to int
import java.text.*;
import java.util.Calendar;
import java.util.GregorianCalendar;

GregorianCalendar calendar = new GregorianCalendar();
DEF VAR v_date AS DATE NO-UNDO.
DEF VAR v_time AS INT NO-UNDO.

v_date = TODAY.
v_time = TIME.
YEAR
 calendar.get(Calendar.YEAR)
 YEAR(v_date) 
MONTH
 calendar.get(Calendar.MONTH) + 1 
 MONTH(v_date) 
WEEK OF YEAR
 calendar.get(Calendar.WEEK_OF_YEAR) 
 
WEEK OF MONTH
 calendar.get(Calendar.WEEK_OF_MONTH) 
 
DAY OF MONTH
 calendar.get(Calendar.DAY_OF_MONTH) 
 DAY(v_date) 
DAY OF YEAR
 calendar.get(Calendar.DAY_OF_YEAR) 
 
DAY OF WEEK
 calendar.get(Calendar.DAY_OF_WEEK) 
 WEEKDAY(v_date) 
DAY OF WEEK IN MONTH
 calendar.get(Calendar.DAY_OF_WEEK_IN_MONTH) 
 
AM PM
 calendar.get(Calendar.AM_PM) 
 
HOUR
 calendar.get(Calendar.HOUR) 
 
HOUR OF DAY
 calendar.get(Calendar.HOUR_OF_DAY) 
 
MINUTE
 calendar.get(Calendar.MINUTE) 
 
SECOND
 calendar.get(Calendar.SECOND) 
 

Enjoy!

Tomasz Judycki