| The Java interface / Advanced programming | |
When passing a RECORD to a Java™ method, the runtime system converts the RECORD to an instance of the com.fourjs.fgl.lang.FglRecord class implemented in FGLDIR/lib/fgl.jar.
The FglRecord object is a copy of the RECORD variable: Structure and members of the FglRecord object can be read within the Java code, but cannot be modified.
You must add FGLDIR/lib/fgl.jar to the class path in order to compile Java code with com.fourjs.fgl.lang.FglRecord class.
The com.fourjs.fgl.lang.FglRecord class implements the following methods:
| Method | Description | 
|---|---|
int getFieldCount()  | 
Returns the number of record members. | 
String getFieldName(int p)  | 
Returns the name of the record member at position p. | 
FglTypes getType(int p)  | 
Returns the FglTypes constant of the record member at position p. | 
String getTypeName(int p)  | 
Returns the string representation of the data type of the record member at position p. | 
int getTypeQualifier(int p)  | 
Returns the encoded type qualifier of the record member at position p. | 
int getInt(int p)  | 
Returns the int value of the record member at position p. | 
int getFloat(int p)  | 
Returns the float value of the record member at position p. | 
double getDouble(int p)  | 
Returns the double value of the record member at position p. | 
String getString(int p)  | 
Returns the String representation of the value of the record member at position p. | 
FglDecimal getDecimal(int p)  | 
Returns the FglDecimal value of the record member at position p. | 
FglDate getDate(int p)  | 
Returns the FglDate value of the record member at position p. | 
FglDateTime getDateTime(int p)  | 
Returns the FglDateTime value of the record member at position p. | 
FglInterval getInterval(int p)  | 
Returns the FglInterval value of the record member at position p. | 
FglByteBlob getByteBlob(int p)  | 
Returns the FglByteBlob value of the record member at position p. | 
FglTextBlob getTextBlob(int p)  | 
Returns the FglTextBlob value of the record member at position p. | 
public static void showMemberTypes(FglRecord rec){
    int i;
    int n = rec.getFieldCount();
    for (i = 1; i <= n; i++)
        System.out.println( String.valueOf(i) + ":" +
        rec.getFieldName(i) + " / " + rec.getTypeName(i) );
}
-- PassRecord.4gl
IMPORT JAVA com.fourjs.fgl.lang.FglRecord
IMPORT JAVA UseRecord
MAIN
    TYPE type1 RECORD
               id INTEGER,
               name VARCHAR(50)
           END RECORD
    DEFINE rec1, rec2 type1
    LET rec1.id = 123
    LET rec1.name = "McFly"
    LET rec2 = CAST(UseRecord.getRecord(rec1) AS type1)
END MAIN
-- UseRecord.java
import com.fourjs.fgl.lang.FglRecord;
public class UseRecord{
    public static FglRecord getRecord(FglRecord rec){
        ...
        return rec;
    }
}