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; } }